/* ==UserStyle== @name Trinket Catppuccin @namespace github.com/catppuccin/userstyles/styles/trinket @homepageURL https://github.com/catppuccin/userstyles/tree/main/styles/trinket @version 2024.12.31 @updateURL https://github.com/keonly/userstyles/raw/main/styles/trinket/catppuccin.user.less @supportURL https://github.com/catppuccin/userstyles/issues?q=is%3Aopen+is%3Aissue+label%3Atrinket @description Soothing pastel theme for Trinket @author Catppuccin @license MIT @preprocessor less @var select lightFlavor "Light Flavor" ["latte:Latte", "frappe:Frappé", "macchiato:Macchiato", "mocha:Mocha*"] @var select darkFlavor "Dark Flavor" ["latte:Latte", "frappe:Frappé", "macchiato:Macchiato", "mocha:Mocha*"] @var select accentColor "Accent" ["rosewater:Rosewater", "flamingo:Flamingo", "pink:Pink", "mauve:Mauve", "red:Red", "maroon:Maroon", "peach:Peach", "yellow:Yellow", "green:Green", "teal:Teal", "blue:Blue", "sapphire:Sapphire", "sky:Sky", "lavender:Lavender", "subtext0:Gray*"] ==/UserStyle== */ @-moz-document domain("trinket.io") { @import url("https://unpkg.com/@catppuccin/highlightjs@1.0.0/css/catppuccin-variables.important.css"); :root { @media (prefers-color-scheme: light) { #catppuccin(@lightFlavor); } @media (prefers-color-scheme: dark) { #catppuccin(@darkFlavor); } } #catppuccin(@flavor) { @rosewater: @catppuccin[@@flavor][@rosewater]; @flamingo: @catppuccin[@@flavor][@flamingo]; @pink: @catppuccin[@@flavor][@pink]; @mauve: @catppuccin[@@flavor][@mauve]; @red: @catppuccin[@@flavor][@red]; @maroon: @catppuccin[@@flavor][@maroon]; @peach: @catppuccin[@@flavor][@peach]; @yellow: @catppuccin[@@flavor][@yellow]; @green: @catppuccin[@@flavor][@green]; @teal: @catppuccin[@@flavor][@teal]; @sky: @catppuccin[@@flavor][@sky]; @sapphire: @catppuccin[@@flavor][@sapphire]; @blue: @catppuccin[@@flavor][@blue]; @lavender: @catppuccin[@@flavor][@lavender]; @text: @catppuccin[@@flavor][@text]; @subtext1: @catppuccin[@@flavor][@subtext1]; @subtext0: @catppuccin[@@flavor][@subtext0]; @overlay2: @catppuccin[@@flavor][@overlay2]; @overlay1: @catppuccin[@@flavor][@overlay1]; @overlay0: @catppuccin[@@flavor][@overlay0]; @surface2: @catppuccin[@@flavor][@surface2]; @surface1: @catppuccin[@@flavor][@surface1]; @surface0: @catppuccin[@@flavor][@surface0]; @base: @catppuccin[@@flavor][@base]; @mantle: @catppuccin[@@flavor][@mantle]; @crust: @catppuccin[@@flavor][@crust]; @accent: @catppuccin[@@flavor][@@accentColor]; --ctp-rosewater: @rosewater; --ctp-flamingo: @flamingo; --ctp-pink: @pink; --ctp-mauve: @mauve; --ctp-red: @red; --ctp-maroon: @maroon; --ctp-peach: @peach; --ctp-yellow: @yellow; --ctp-green: @green; --ctp-teal: @teal; --ctp-sky: @sky; --ctp-sapphire: @sapphire; --ctp-blue: @blue; --ctp-lavender: @lavender; --ctp-text: @text; --ctp-subtext1: @subtext1; --ctp-subtext0: @subtext0; --ctp-overlay2: @overlay2; --ctp-overlay1: @overlay1; --ctp-overlay0: @overlay0; --ctp-surface2: @surface2; --ctp-surface1: @surface1; --ctp-surface0: @surface0; --ctp-base: @base; --ctp-mantle: @mantle; --ctp-crust: @crust; color-scheme: if(@flavor = latte, light, dark); ::selection { background-color: fade(@accent, 30%); } .ace_editor { background-color: @crust; color: @text; .ace_gutter { background: @mantle; color: @overlay1; } .ace_print-margin { background: @mantle; } .ace_marker-layer { .ace_active-line { background-color: fade(@yellow, 20%); } .highlight-line-error { background-color: fade(@red, 20%); } .ace_bracket { border-color: @overlay1; } } .ace_cursor { color: @text; } .ace_marker-layer .ace_selection { background: fade(@accent, 30%); } .ace_fold { background-color: @surface0; border-color: @surface1; } .ace_constant.ace_language, .ace_keyword, .ace_meta, .ace_variable.ace_language { color: @mauve; } .ace_line .ace_identifier:not(:first-of-type) { color: @blue; } .ace_paren { color: @red; } .ace_constant.ace_numeric { color: @peach; } .ace_entity.ace_other.ace_attribute-name, .ace_support.ace_constant, .ace_support.ace_function { color: @teal; } .ace_entity.ace_name.ace_tag, .ace_support.ace_class, .ace_support.ace_type { color: @blue; } .ace_storage { color: @peach; } .ace_string { color: @green; } .ace_comment { color: @overlay2; } .ace_indent-guide { @svg: escape( '' ); background-image: url("data:image/svg+xml;utf8,@{svg}"); } } #ace_settingsmenu { background-color: @mantle !important; box-shadow: none !important; color: @subtext0; } body { background-color: @base !important; color: @text !important; } h1, h2, h3, h4, h5, h6 { color: @text !important; } a { color: @accent; text-decoration-color: @accent; &:hover { color: @accent; } } hr, fieldset { border-color: @surface0 !important; } footer { border-top-color: @surface0 !important; background-color: @mantle !important; } code { background-color: @mantle !important; color: @text !important; } select { background-color: @crust !important; border-color: @surface0 !important; color: @text !important; } iframe[frameborder] { border-color: @surface0 !important; } label { color: @subtext0 !important; } table { background-color: @base !important; border-color: @surface0 !important; th, td { color: @text !important; } tr.even, tr.alt, tr:nth-of-type(2n) { background-color: @mantle !important; } thead { background-color: @mantle !important; } } input, textarea { background-color: @crust !important; color: @text !important; border-color: @surface0 !important; &::placeholder { color: @subtext0 !important; } } textarea.lined { background-color: @base !important; } path[fill="#444444"] { fill: @text !important; } pre { border-color: @surface0 !important; background-color: @mantle !important; } #page.hfeed a:hover { border-bottom-color: @accent !important; } .author-section { box-shadow: none !important; } .code-editor .expander { background-image: linear-gradient( to right, fade(@mantle, 0%), @mantle 50% ) !important; } .sidebar-content a:hover { color: @accent !important; } .progress { border-color: @surface0 !important; background-color: @crust !important; color: @base !important; } .sidebar { box-shadow: 1px 0 15px fade(@crust, 50%) !important; background-color: @base !important; } .sidebar-top { background-color: @base !important; border-bottom-color: @surface0 !important; } .meter.green { background-color: @green !important; } .file-upload { background-color: @crust !important; border-color: @surface0 !important; color: @text !important; } .notifyjs-foundation-success, .alert-box.success { color: @base !important; background-color: @green !important; border-color: @green !important; } .alert-box.alert, .alert-box.code-error { color: @base !important; background-color: @red !important; border-color: @red !important; } .lineno, article .categories, article .date, article .date a { color: @subtext0 !important; &a:hover { color: @accent !important; } } .linedwrap .lines { border-right-color: @surface0; } .codelines { background-color: @mantle !important; } span.beta { color: @accent !important; } .resources a { color: @text !important; &:hover .book-item { box-shadow: 0 0 15px @surface0 !important; } } #trinket-gallery #trinketDetails a.closer { border-color: @surface0 !important; background-color: @crust !important; } .panel { background-color: @crust !important; color: @text !important; border-color: @surface0 !important; li { color: @subtext0 !important; } } .code-plan-colors, .code-label, .code-name, .codeplus-plan-colors, .codeplus-label, .codeplus-name, .connect-plan-colors, .connect-label, .connect-name, .classroom-plan-colors, .classroom-label, .classroom-name, i.trinket-key.logo { background-color: @accent !important; color: @base !important; } .code-plan-colors-inverted, .connect-plan-colors-inverted, .classroom-plan-colors-inverted { color: @accent; } .nav-wrapper, .entry-footer { border-bottom-color: @surface0 !important; } .top-bar, .top-bar-section ul li, .top-bar-section li:not(.has-form) a:not(.button, .faux-button), .name { background-color: @crust !important; } .top-bar-section li:not(.has-form) a:not(.button, .faux-button):hover { background-color: @mantle !important; } .angular-ui-tree-placeholder { background-color: @base !important; border-color: @surface0 !important; } .editable-click:hover, a.editable-click:hover { color: @accent !important; } .outline-list-item.lesson { border-bottom-color: @surface0 !important; } .intercom-namespace .intercom-o8wqhy { box-shadow: none; } .intercom-lightweight-app-launcher-icon-open svg path { fill: @base !important; } .intercom-lightweight-app-launcher { background-color: @accent !important; } .edit-material-title:hover { background-color: @crust !important; } a.dashboard-actions-link, a.edit-lesson-actions-link, a.edit-material-actions-link { i { color: @text !important; } &:hover { background-color: @mantle !important; } } .dashboard-content.dashboard-list { .submission-row, .user-row { border-bottom-color: @surface0 !important; &:not(.row-open):hover { background-color: @mantle !important; } } } .dashboard-content .material-row .material-name span { color: @text !important; } .chart-wrapper { background-color: @base !important; } .chart-segment { span { color: @base !important; } &.completed { background-color: @green !important; } &.submitted { background-color: @blue !important; } &.started { background-color: @yellow !important; } &.not-started { background-color: @text !important; background-image: repeating-linear-gradient( 135deg, @subtext1, @subtext1 10px, transparent 10px, transparent 30px ) !important; } } .outline-list { background-color: @mantle !important; } .outline-list-item.angular-ui-tree-node.isDraft { background-image: repeating-linear-gradient( 45deg, @base, @base 10px, transparent 10px, transparent 20px ) !important; } .top-bar .toggle-topbar.menu-icon a { color: @text !important; } .top-bar.expanded .toggle-topbar a span::after { box-shadow: 0 0 0 1px @text, 0 7px 0 1px @text, 0 14px 0 1px @text; } .button.dropdown-blue::after { border-top-color: @text !important; } .top-bar-section .title h5 a { color: @text !important; } .update-row { border-top-color: @surface2 !important; } .top-bar-section .divider { border-top-color: @surface0 !important; } nav.top-bar .top-bar-section .dropdown, nav.top-bar .top-bar-section body.course .dropdown-blue, body.course nav.top-bar .top-bar-section .dropdown-blue { border-color: @surface0 !important; } .content-heading { background-color: @mantle !important; } .top-bar-section ul li > a, #userdata, .subheader, .green-highlight:not(.disabled) > *, .tab-scroll-link, .closer, .entry-title a, .jqconsole-prompt, .jqconsole-old-prompt { color: @text !important; } .top-bar-section .has-dropdown > a::after { border-top-color: @text !important; } #loadingContent { background-color: @base !important; } .fa-spinner { color: @text !important; } button, .button, .faux-button { background-color: @crust !important; color: @text !important; border-color: @surface0 !important; &:hover { background-color: @mantle !important; } &:not(.disabled) { &.secondary, &.success { background-color: @surface0 !important; color: @text !important; border-color: @surface0 !important; // the :not() adds specificity to override the `!important` in the default styles &:hover:not(.disabled) { background-color: @green !important; color: @base !important; border-color: @surface0 !important; } } &.danger { background-color: @red !important; border-color: @red !important; color: @base !important; &:hover { background-color: darken(@red, 5%) !important; } } &.caution { border-color: @red !important; color: @red; &:hover { background-color: fade(@red, 40%) !important; } } } &#sidebar-link, &#sidebar-close { background-color: @base !important; } } .site-header { border-bottom-color: @surface0 !important; } .menu-icon { fill: @text !important; } .draft-message, .broadcast-message { color: @subtext0 !important; } .color-swatch { color: @surface0 !important; } #embed-documentation dd, dl#documentation dd { &, .methodHeader, .methodDocs { border-color: @surface0 !important; pre { background-color: @base !important; } } .methodHeader { background-color: @crust !important; } &.active a { border-bottom-color: @surface0 !important; } } .switch { label { background-color: @crust !important; &::after { background-color: @text !important; } } input:checked + label { background-color: @accent !important; &::after { background-color: @base !important; } } } .accordion { dd > a { background-color: @mantle !important; color: @text !important; } dd > .content.active { background-color: @mantle !important; } } .icon-bar { background-color: @base !important; > a { background-color: @crust !important; } > a:hover { background-color: @mantle !important; } .item, > * i { color: @text !important; } } .exit-off-canvas { box-shadow: -4px 0 4px @surface0, 4px 0 4px @surface0 !important; background-color: fade(@base, 50%) !important; } #trinket-gallery #trinketDetails .spotlight { background-color: fade(@base, 50%) !important; } .right-off-canvas-menu, .left-off-canvas-menu { background-color: @base !important; } .tab-nav { border-bottom-color: @base !important; .menu-button { background-color: @base !important; color: @text !important; } .tab { background-color: @crust !important; border-color: @surface0 !important; border-top-color: @crust !important; box-shadow: none !important; i.warning { color: @red !important; } a { color: @text !important; } &.active { background-color: @surface0 !important; span { background-color: @surface0 !important; } } } } .side-nav { border-color: @surface0 !important; li { border-top-color: @surface2 !important; } a { color: @accent !important; &.active { color: @text !important; } } } li.side-nav-heading { background-color: @mantle !important; } .decorated > span { &::before, &::after { border-bottom-color: @surface0; } } .tab-options, .f-dropdown.open { background-color: @base !important; border-color: @surface0 !important; &::before, &::after { border-bottom-color: @crust !important; } a { background-color: @crust !important; color: @text !important; } } .reveal-modal { background-color: @base !important; border-color: @surface0 !important; box-shadow: none !important; .close-reveal-modal { color: @subtext0 !important; } } ul.off-canvas-list li { a { border-bottom-color: @surface0 !important; color: @text !important; background-color: @base !important; } a:hover { background-color: @mantle !important; } label { background-color: @mantle !important; border-top-color: @surface0 !important; color: @subtext0 !important; } } .faux-input { background-color: @crust !important; border-color: @surface0 !important; box-shadow: none !important; color: @text !important; } .label:not(.last-saved) { background-color: @accent !important; color: @base !important; } .last-saved { color: @subtext0 !important; } .code-editor .info-area { border-top-color: @surface0 !important; background-color: @base !important; color: @text !important; } .injectionDiv { color: initial !important; } .pricing-table { border-color: @surface0 !important; .cta-button { background-color: @base !important; } .price { background-color: @base !important; color: @text !important; } .title { background-color: @mantle !important; } .description, .bullet-item { background-color: @base !important; color: @text !important; border-bottom-color: @surface2 !important; p { color: @subtext0 !important; } } } .blue-highlight:not(.disabled) { background-color: @accent !important; &, i.fa, label { color: @base !important; } } .featured-course-list li { border-color: @surface0 !important; } .course-title { background-color: @mantle !important; border-bottom-color: @surface0 !important; a { color: @text !important; } } .course-list li { border-color: @surface0 !important; &:hover { background-color: @mantle !important; } } .library-subnav { border-bottom-color: @surface0 !important; } .trinket-last-date { color: @subtext0 !important; } .fa { &.neutral { color: @subtext0 !important; } &.success { color: @green !important; } &.alert, &.caution { color: @red !important; } } .shared-modal ul#my-folders-list li.folder-item { border-top-color: @surface0 !important; } .trinket-stat .badge { background-color: @accent !important; background-image: none !important; color: @base !important; } .editable-empty { color: @subtext0 !important; } .breadcrumbs { background-color: @mantle !important; border-color: @surface0 !important; .editable { border-bottom-color: @subtext0 !important; &:hover { color: @accent !important; } } > .current { color: @text !important; } } .jqconsole-header { color: @subtext0 !important; } .jqconsole-output:not(.error) { color: @subtext1 !important; } .jqconsole-output.error, .jqconsole-error { background-color: @red !important; color: @base !important; } .draft-circle { background-color: @accent !important; } .MathJax_Preview { color: @subtext0 !important; } [data-magellan-expedition], [data-magellan-expedition-clone] { background-color: @base !important; } #trinkets-list, .trinkets-list { > li { border-color: @surface0 !important; box-shadow: none; } > li .snapshot .title { background-color: unset !important; border-top-color: @surface0 !important; } .dragging-trinket { background-color: @crust !important; border-color: @surface0 !important; color: @subtext0 !important; } } #sidebar-link:hover, #sidebar-close:hover { opacity: 100% !important; } #search-2 input { &, &:hover, &:focus { background-color: @crust !important; color: @text !important; border-color: @surface0 !important; } } #material-edit .toolbar { background-color: @mantle; border-top-color: @surface0; border-bottom-color: @surface0; } #outline { background-color: @mantle !important; border-right-color: @surface0 !important; ul { background-color: @mantle !important; } .outline-list-item.material.current { background-color: @crust !important; color: @text !important; } .info, .outline-list-item.lesson { border-bottom-color: @surface0 !important; } } #outline-expander { background-color: @accent !important; color: @base !important; } #class-progress { background-color: @surface0 !important; .percentage { background-color: @accent !important; } } #course-nav { background-color: @mantle !important; border-color: @surface0 !important; .title.breadcrumbs { background-color: @crust !important; } } #reset-output { color: @subtext0 !important; } #instructionsToolbar { border-bottom-color: @surface0 !important; } #instructionsContainer { background-color: @base !important; } #team { background-color: @mantle !important; img { box-shadow: 0 0 0 10px @accent !important; } a.social { background-color: @accent !important; i::before { color: @base !important; } } } #outputTabs { background-color: @crust !important; border-bottom-color: @surface0 !important; .active { background-color: @mantle !important; } #instructionsTab { border-left-color: @surface0 !important; } } #recent-trinkets .item a { background-color: @mantle !important; border-color: @surface0 !important; box-shadow: none !important; } #content-wrapper { border-color: @surface0 !important; } #wrapper { border-color: @surface0 !important; .trinket-content { border-top-color: @surface0 !important; } .trinket-wrapper .trinket-content { background-color: @base !important; } .trinket-label { color: @subtext0 !important; } &, .trinket-content-wrapper > :not(.codeOutput, #content-overlay) { background-color: @base; } .codeOutput { background-color: initial !important; } .left-menu-toggle { border-right-color: @surface0 !important; } .right-menu-toggle { border-left-color: @surface0 !important; } .icon-bar .item.split { &.button, &.faux-button { span { border-left-color: @surface0 !important; } span::after { border-top-color: @text !important; } } } } #content-overlay { background-color: fade(@base, 20%) !important; } #books-index .book-img { outline-color: @surface0 !important; &:hover { outline-color: @accent !important; } } #svg-logo .letters { fill: @text !important; } #svg-logo .yellow { fill: @yellow !important; } #svg-logo .blue { fill: @blue !important; } #svg-logo .green { fill: @green !important; } #svg-logo .white { fill: @base !important; } #blue-logo-circle { // There normally isn't an animation applied to this // element because the circle blends in to the background. opacity: 0; animation: RtL 1s 0.75s ease 1 forwards !important; } #hero { background-color: @mantle !important; } #graphic { /* This is the element for graphics output. If styled with Catppuccin, it may make graphics unviewable due to contrast issues. */ background-color: white !important; &, label { color: initial !important; } } @keyframes attention-error-border-pulse { 0% { box-shadow: inset 0 0 0 @red; } 40% { box-shadow: inset 0 0 0 @red; } 70% { box-shadow: inset 0 0 6px @red; } 100% { box-shadow: inset 0 0 0 @red; } } @keyframes bluePulseButton { 0% { box-shadow: 0 0 0 0 fade(@accent, 40%); background-color: @accent; } 70% { box-shadow: 0 0 0 10px fade(@accent, 0%); background-color: @accent; } 100% { box-shadow: none; background-color: @accent; } } img[src$="trinket-logo-notag.png"], img[src$="trinket-logo.png"] { @svg: escape( '' ); content: url("data:image/svg+xml,@{svg}"); } img[src$="trinket-logo-notag.png"] { margin: 50px 0 30px; padding-left: 300px; } img[src$="trinket-logo-circles.png"] { @svg: escape( '' ); content: url("data:image/svg+xml,@{svg}"); } #dragbar { @svg: escape( '' ); background-color: @surface0 !important; border-left-color: @surface0 !important; border-right-color: @surface0 !important; background-image: url("data:image/svg+xml;utf8,@{svg}") !important; } #output-dragbar { @svg: escape( '' ); background-color: @surface0 !important; border-top-color: @surface0 !important; border-bottom-color: @surface0 !important; background-image: url("data:image/svg+xml;utf8,@{svg}") !important; } .lang-sprite, #trinkets-list.list-view > li .snapshot .title::before, .trinkets-list.list-view > li .snapshot .title::before { @svg: escape( '' ); background-image: url("data:image/svg+xml;utf8,@{svg}"); } } } #rgbify(@color) { @rgb: red(@color), green(@color), blue(@color); } /* deno-fmt-ignore */ @catppuccin: { @latte: { @rosewater: #dc8a78; @flamingo: #dd7878; @pink: #ea76cb; @mauve: #8839ef; @red: #d20f39; @maroon: #e64553; @peach: #fe640b; @yellow: #df8e1d; @green: #40a02b; @teal: #179299; @sky: #04a5e5; @sapphire: #209fb5; @blue: #1e66f5; @lavender: #7287fd; @text: #4c4f69; @subtext1: #5c5f77; @subtext0: #6c6f85; @overlay2: #7c7f93; @overlay1: #8c8fa1; @overlay0: #9ca0b0; @surface2: #acb0be; @surface1: #bcc0cc; @surface0: #ccd0da; @base: #eff1f5; @mantle: #e6e9ef; @crust: #dce0e8; }; @frappe: { @rosewater: #f2d5cf; @flamingo: #eebebe; @pink: #f4b8e4; @mauve: #ca9ee6; @red: #e78284; @maroon: #ea999c; @peach: #ef9f76; @yellow: #e5c890; @green: #a6d189; @teal: #81c8be; @sky: #99d1db; @sapphire: #85c1dc; @blue: #8caaee; @lavender: #babbf1; @text: #c6d0f5; @subtext1: #b5bfe2; @subtext0: #a5adce; @overlay2: #949cbb; @overlay1: #838ba7; @overlay0: #737994; @surface2: #626880; @surface1: #51576d; @surface0: #414559; @base: #303446; @mantle: #292c3c; @crust: #232634; }; @macchiato: { @rosewater: #f4dbd6; @flamingo: #f0c6c6; @pink: #f5bde6; @mauve: #c6a0f6; @red: #ed8796; @maroon: #ee99a0; @peach: #f5a97f; @yellow: #eed49f; @green: #a6da95; @teal: #8bd5ca; @sky: #91d7e3; @sapphire: #7dc4e4; @blue: #8aadf4; @lavender: #b7bdf8; @text: #cad3f5; @subtext1: #b8c0e0; @subtext0: #a5adcb; @overlay2: #939ab7; @overlay1: #8087a2; @overlay0: #6e738d; @surface2: #5b6078; @surface1: #494d64; @surface0: #363a4f; @base: #24273a; @mantle: #1e2030; @crust: #181926; }; @mocha: { @rosewater: #f5e0dc; @flamingo: #f2cdcd; @pink: #f5c2e7; @mauve: #cba6f7; @red: #f38ba8; @maroon: #eba0ac; @peach: #fab387; @yellow: #f9e2af; @green: #a6e3a1; @teal: #94e2d5; @sky: #89dceb; @sapphire: #74c7ec; @blue: #89b4fa; @lavender: #b4befe; @text: #f4f4f4; @subtext1: #e0e0e0; @subtext0: #c6c6c6; @overlay2: #a8a8a8; @overlay1: #8d8d8d; @overlay0: #6f6f6f; @surface2: #525252; @surface1: #393939; @surface0: #262626; @base: #161616; @mantle: #0b0b0b; @crust: #000000; }; };