/*
 * Catppuccin palette overlay for the Furo theme.
 * Light mode  -> Latte
 * Dark mode   -> Mocha
 * Palette reference: https://github.com/catppuccin/catppuccin
 */

/* ---- Light mode: Latte ------------------------------------------------- */
body {
    /* Latte palette */
    --ctp-rosewater: #dc8a78;
    --ctp-flamingo:  #dd7878;
    --ctp-pink:      #ea76cb;
    --ctp-mauve:     #8839ef;
    --ctp-red:       #d20f39;
    --ctp-maroon:    #e64553;
    --ctp-peach:     #fe640b;
    --ctp-yellow:    #df8e1d;
    --ctp-green:     #40a02b;
    --ctp-teal:      #179299;
    --ctp-sky:       #04a5e5;
    --ctp-sapphire:  #209fb5;
    --ctp-blue:      #1e66f5;
    --ctp-lavender:  #7287fd;
    --ctp-text:      #4c4f69;
    --ctp-subtext1:  #5c5f77;
    --ctp-subtext0:  #6c6f85;
    --ctp-overlay2:  #7c7f93;
    --ctp-overlay1:  #8c8fa1;
    --ctp-overlay0:  #9ca0b0;
    --ctp-surface2:  #acb0be;
    --ctp-surface1:  #bcc0cc;
    --ctp-surface0:  #ccd0da;
    --ctp-base:      #eff1f5;
    --ctp-mantle:    #e6e9ef;
    --ctp-crust:     #dce0e8;

    /* Map onto Furo's variables */
    --color-brand-primary: var(--ctp-mauve);
    --color-brand-content: var(--ctp-blue);
    --color-brand-visited: var(--ctp-lavender);

    --color-background-primary:   var(--ctp-base);
    --color-background-secondary: var(--ctp-mantle);
    --color-background-hover:     var(--ctp-surface0);
    --color-background-border:    var(--ctp-surface1);

    --color-foreground-primary:   var(--ctp-text);
    --color-foreground-secondary: var(--ctp-subtext0);
    --color-foreground-muted:     var(--ctp-overlay1);
    --color-foreground-border:    var(--ctp-surface2);

    --color-sidebar-background:        var(--ctp-mantle);
    --color-sidebar-background-border: var(--ctp-crust);
    --color-sidebar-brand-text:        var(--ctp-mauve);
    --color-sidebar-link-text:         var(--ctp-text);
    --color-sidebar-link-text--top-level: var(--ctp-text);
    --color-sidebar-item-background--current: var(--ctp-surface0);
    --color-sidebar-item-background--hover:   var(--ctp-surface0);

    --color-admonition-background: var(--ctp-mantle);

    --color-highlight-on-target: var(--ctp-yellow);

    --color-inline-code-background: var(--ctp-mantle);
    --color-code-background:        var(--ctp-mantle);
    --color-code-foreground:        var(--ctp-text);

    --color-api-background:       var(--ctp-mantle);
    --color-api-background-hover: var(--ctp-surface0);
}

/* ---- Dark mode: Mocha -------------------------------------------------- */
@media (prefers-color-scheme: dark) {
    body:not([data-theme="light"]) {
        --ctp-rosewater: #f5e0dc;
        --ctp-flamingo:  #f2cdcd;
        --ctp-pink:      #f5c2e7;
        --ctp-mauve:     #cba6f7;
        --ctp-red:       #f38ba8;
        --ctp-maroon:    #eba0ac;
        --ctp-peach:     #fab387;
        --ctp-yellow:    #f9e2af;
        --ctp-green:     #a6e3a1;
        --ctp-teal:      #94e2d5;
        --ctp-sky:       #89dceb;
        --ctp-sapphire:  #74c7ec;
        --ctp-blue:      #89b4fa;
        --ctp-lavender:  #b4befe;
        --ctp-text:      #cdd6f4;
        --ctp-subtext1:  #bac2de;
        --ctp-subtext0:  #a6adc8;
        --ctp-overlay2:  #9399b2;
        --ctp-overlay1:  #7f849c;
        --ctp-overlay0:  #6c7086;
        --ctp-surface2:  #585b70;
        --ctp-surface1:  #45475a;
        --ctp-surface0:  #313244;
        --ctp-base:      #1e1e2e;
        --ctp-mantle:    #181825;
        --ctp-crust:     #11111b;
    }
}

/* Explicit dark theme toggle (Furo sets data-theme="dark") */
body[data-theme="dark"] {
    --ctp-rosewater: #f5e0dc;
    --ctp-flamingo:  #f2cdcd;
    --ctp-pink:      #f5c2e7;
    --ctp-mauve:     #cba6f7;
    --ctp-red:       #f38ba8;
    --ctp-maroon:    #eba0ac;
    --ctp-peach:     #fab387;
    --ctp-yellow:    #f9e2af;
    --ctp-green:     #a6e3a1;
    --ctp-teal:      #94e2d5;
    --ctp-sky:       #89dceb;
    --ctp-sapphire:  #74c7ec;
    --ctp-blue:      #89b4fa;
    --ctp-lavender:  #b4befe;
    --ctp-text:      #cdd6f4;
    --ctp-subtext1:  #bac2de;
    --ctp-subtext0:  #a6adc8;
    --ctp-overlay2:  #9399b2;
    --ctp-overlay1:  #7f849c;
    --ctp-overlay0:  #6c7086;
    --ctp-surface2:  #585b70;
    --ctp-surface1:  #45475a;
    --ctp-surface0:  #313244;
    --ctp-base:      #1e1e2e;
    --ctp-mantle:    #181825;
    --ctp-crust:     #11111b;
}

/* The logo already contains the "Phenocoder" wordmark, so hide the redundant
 * sidebar brand text (the browser tab title still uses html_title). */
.sidebar-brand-text {
    display: none;
}

/* Shrink the sidebar logo a little. */
.sidebar-logo {
    max-width: 60%;
}

/* ---- Catppuccin syntax highlighting ------------------------------------
 * Overrides Pygments token colours with the Catppuccin palette so code blocks
 * match the flavour of the rest of the page (light = Latte, dark = Mocha).
 * The --ctp-* variables above already resolve to the right flavour per mode,
 * so a single set of rules covers both.
 */
.highlight {
    background: var(--ctp-mantle) !important;
}
.highlight pre { color: var(--ctp-text); }

.highlight .c,  .highlight .ch, .highlight .cm, .highlight .c1,
.highlight .cs, .highlight .cp, .highlight .cpf { color: var(--ctp-overlay1); font-style: italic; } /* comments */

.highlight .k,  .highlight .kc, .highlight .kd, .highlight .kn,
.highlight .kp, .highlight .kr, .highlight .kt { color: var(--ctp-mauve); }   /* keywords */

.highlight .o,  .highlight .ow { color: var(--ctp-sky); }                     /* operators */

.highlight .s,  .highlight .sa, .highlight .sb, .highlight .sc, .highlight .dl,
.highlight .sd, .highlight .s2, .highlight .se, .highlight .sh, .highlight .si,
.highlight .sx, .highlight .sr, .highlight .s1, .highlight .ss { color: var(--ctp-green); } /* strings */

.highlight .m,  .highlight .mb, .highlight .mf, .highlight .mh,
.highlight .mi, .highlight .il, .highlight .mo { color: var(--ctp-peach); }   /* numbers */

.highlight .nb { color: var(--ctp-red); }                                     /* builtins */
.highlight .nf, .highlight .fm { color: var(--ctp-blue); }                    /* function names */
.highlight .nc { color: var(--ctp-yellow); }                                  /* class names */
.highlight .nn { color: var(--ctp-yellow); }                                  /* namespaces */
.highlight .nd { color: var(--ctp-peach); }                                   /* decorators */
.highlight .bp { color: var(--ctp-red); }                                     /* self/cls */
.highlight .nv, .highlight .vc, .highlight .vg, .highlight .vi { color: var(--ctp-text); } /* variables */
.highlight .kc { color: var(--ctp-peach); }                                   /* True/False/None */
.highlight .gp { color: var(--ctp-mauve); }                                   /* prompt (>>>) */
.highlight .go { color: var(--ctp-subtext0); }                                /* output */
