/* ==UserStyle== @name Mastodon Catppuccin @namespace github.com/Sebagabones/userstyles/styles/mastodon @homepageURL https://github.com/Sebagabones/userstyles/tree/main/styles/mastodon @version 2026.07.08 @updateURL https://github.com/Sebagabones/userstyles/raw/main/styles/mastodon/catppuccin.user.less @supportURL https://github.com/Sebagabones/userstyles/issues?q=is%3Aopen+is%3Aissue+label%3Amastodon @description Soothing pastel theme for Mastodon @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== */ @import "https://raw.githubusercontent.com/Sebagabones/userstyles/refs/heads/main/lib/lib.less"; @-moz-document domain("mastodon.social"), domain("fosstodon.org") { [data-color-scheme="light"] { #catppuccin(@lightFlavor); } [data-color-scheme="dark"] { #catppuccin(@darkFlavor); } #catppuccin(@flavor) { #lib.palette(); #lib.defaults(); --color-bg-primary: @base; --color-bg-secondary: @surface0; --color-bg-tertiary: @surface1; --color-bg-inverted: @text; --color-text-primary: @text; --color-text-secondary: @subtext1; --color-text-tertiary: @subtext0; --color-text-inverted: @base; /* Brand */ --color-bg-brand-base: @accent; --color-bg-brand-base-hover: darken(@accent, 5%); --color-bg-brand-soft: fade(@accent, 40%); --color-bg-brand-softest: fade(@accent, 15%); --color-text-brand: @accent; --color-text-on-brand-base: @base; --color-text-brand-on-inverted: @accent; /* States */ // Error --color-bg-error-base: @red; --color-bg-error-base-hover: darken(@red, 5%); --color-bg-error-soft: fade(@red, 40%); --color-bg-error-softest: fade(@red, 15%); --color-text-error: @red; --color-text-on-error-base: @base; // Warning --color-bg-warning-base: @yellow; --color-bg-warning-soft: fade(@yellow, 40%); --color-bg-warning-softest: fade(@yellow, 15%); --color-text-warning: @yellow; --color-text-on-warning-base: @base; // Success --color-bg-success-base: @green; --color-bg-success-soft: fade(@green, 40%); --color-bg-success-softest: fade(@green, 15%); --color-text-success: @green; --color-text-on-success-base: @base; // Disabled --color-bg-disabled: @overlay1; --color-text-disabled: @overlay1; --color-text-on-disabled: @subtext0; /* Borders */ --color-border-primary: @surface2; --color-border-brand: @accent; --color-border-brand-soft: fade(@accent, 50%); --color-border-error: @red; --color-border-error-soft: fade(@red, 50%); --color-border-warning-soft: fade(@yellow, 50%); --color-border-success-soft: fade(@green, 50%); /* Other */ --color-shadow-primary: fade(@mantle, 30%); --color-bg-overlay-base: fade(@text, 60%); --color-bg-overlay-highlight: fade(@text, 5%); /* Images (alt text, hide/spoilers) */ --color-bg-media-base: @crust; --color-text-on-media: @text; --color-border-media: @surface1; /* Actions (bookmarking, favoriting) */ --color-text-bookmark-highlight: @teal; --color-text-favourite-highlight: @yellow; .logo { @svg: escape( '' ); content: url("data:image/svg+xml,@{svg}"); } /* Verified badge icon (e.g. profile fields) */ svg.icon-verified { path[fill="url(#VerifiedGradient)"] { fill: @green !important; } path[stroke="#fff"] { stroke: @base !important; } } } }