/* Shared syntax highlighting for rustmax
 * Used by: www, rmxbook, rustmax-rustdoc
 * Generated by syntect with ClassStyle::Spaced
 *
 * To switch themes:
 *   1. In browser inspector, add data-syntax-theme="THEME" to <html>
 *   2. Or change the default theme below
 *
 * Available themes:
 *   - github (default) - Clean, professional
 *   - nord - Arctic blue palette
 *   - one - Atom One Dark/Light
 *   - tokyo - Tokyo Night
 *   - rustdoc - Official rustdoc colors
 *   - catppuccin - Pastel aesthetic
 *   - dracula - Purple-based, vibrant
 */

/* ==========================================================================
   DEFAULT THEME: GitHub
   ========================================================================== */

:root {
    /* GitHub Light */
    --syntax-keyword: #cf222e;
    --syntax-keyword2: #8250df;
    --syntax-string: #0a3069;
    --syntax-number: #0550ae;
    --syntax-comment: #6e7781;
    --syntax-type: #953800;
    --syntax-function: #8250df;
    --syntax-macro: #0550ae;
    --syntax-lifetime: #cf222e;
    --syntax-attribute: #953800;
    --syntax-operator: #24292f;
    --syntax-punctuation: #24292f;
}

@media (prefers-color-scheme: dark) {
    :root {
        /* GitHub Dark */
        --syntax-keyword: #ff7b72;
        --syntax-keyword2: #d2a8ff;
        --syntax-string: #a5d6ff;
        --syntax-number: #79c0ff;
        --syntax-comment: #8b949e;
        --syntax-type: #ffa657;
        --syntax-function: #d2a8ff;
        --syntax-macro: #79c0ff;
        --syntax-lifetime: #ff7b72;
        --syntax-attribute: #ffa657;
        --syntax-operator: #c9d1d9;
        --syntax-punctuation: #c9d1d9;
    }
}

/* ==========================================================================
   THEME: Nord - Arctic, blue-based palette
   https://www.nordtheme.com/
   ========================================================================== */

[data-syntax-theme="nord"] {
    /* Nord Light (Snow Storm + Frost) */
    --syntax-keyword: #5e81ac;
    --syntax-keyword2: #81a1c1;
    --syntax-string: #a3be8c;
    --syntax-number: #b48ead;
    --syntax-comment: #7b88a1;
    --syntax-type: #8fbcbb;
    --syntax-function: #88c0d0;
    --syntax-macro: #d08770;
    --syntax-lifetime: #bf616a;
    --syntax-attribute: #d08770;
    --syntax-operator: #4c566a;
    --syntax-punctuation: #4c566a;
}

@media (prefers-color-scheme: dark) {
    [data-syntax-theme="nord"] {
        /* Nord Dark (Polar Night + Frost) */
        --syntax-keyword: #81a1c1;
        --syntax-keyword2: #88c0d0;
        --syntax-string: #a3be8c;
        --syntax-number: #b48ead;
        --syntax-comment: #616e88;
        --syntax-type: #8fbcbb;
        --syntax-function: #88c0d0;
        --syntax-macro: #d08770;
        --syntax-lifetime: #bf616a;
        --syntax-attribute: #ebcb8b;
        --syntax-operator: #d8dee9;
        --syntax-punctuation: #d8dee9;
    }
}

/* ==========================================================================
   THEME: One - Atom One Dark/Light
   https://github.com/atom/atom/tree/master/packages/one-dark-syntax
   ========================================================================== */

[data-syntax-theme="one"] {
    /* One Light */
    --syntax-keyword: #a626a4;
    --syntax-keyword2: #4078f2;
    --syntax-string: #50a14f;
    --syntax-number: #986801;
    --syntax-comment: #a0a1a7;
    --syntax-type: #c18401;
    --syntax-function: #4078f2;
    --syntax-macro: #0184bc;
    --syntax-lifetime: #e45649;
    --syntax-attribute: #e45649;
    --syntax-operator: #383a42;
    --syntax-punctuation: #383a42;
}

@media (prefers-color-scheme: dark) {
    [data-syntax-theme="one"] {
        /* One Dark */
        --syntax-keyword: #c678dd;
        --syntax-keyword2: #61afef;
        --syntax-string: #98c379;
        --syntax-number: #d19a66;
        --syntax-comment: #5c6370;
        --syntax-type: #e5c07b;
        --syntax-function: #61afef;
        --syntax-macro: #56b6c2;
        --syntax-lifetime: #e06c75;
        --syntax-attribute: #e06c75;
        --syntax-operator: #abb2bf;
        --syntax-punctuation: #abb2bf;
    }
}

/* ==========================================================================
   THEME: Tokyo Night - Modern blue-purple aesthetic
   https://github.com/enkia/tokyo-night-vscode-theme
   ========================================================================== */

[data-syntax-theme="tokyo"] {
    /* Tokyo Night Light */
    --syntax-keyword: #8c4351;
    --syntax-keyword2: #34548a;
    --syntax-string: #485e30;
    --syntax-number: #965027;
    --syntax-comment: #9699a3;
    --syntax-type: #166775;
    --syntax-function: #34548a;
    --syntax-macro: #0f4b6e;
    --syntax-lifetime: #8c4351;
    --syntax-attribute: #965027;
    --syntax-operator: #343b58;
    --syntax-punctuation: #343b58;
}

@media (prefers-color-scheme: dark) {
    [data-syntax-theme="tokyo"] {
        /* Tokyo Night (Storm) */
        --syntax-keyword: #bb9af7;
        --syntax-keyword2: #7aa2f7;
        --syntax-string: #9ece6a;
        --syntax-number: #ff9e64;
        --syntax-comment: #565f89;
        --syntax-type: #2ac3de;
        --syntax-function: #7aa2f7;
        --syntax-macro: #7dcfff;
        --syntax-lifetime: #f7768e;
        --syntax-attribute: #ff9e64;
        --syntax-operator: #c0caf5;
        --syntax-punctuation: #c0caf5;
    }
}

/* ==========================================================================
   THEME: Rustdoc - Official rustdoc colors
   ========================================================================== */

[data-syntax-theme="rustdoc"] {
    /* Rustdoc Light */
    --syntax-keyword: #8959a8;
    --syntax-keyword2: #4271ae;
    --syntax-string: #718c00;
    --syntax-number: #c82829;
    --syntax-comment: #8e908c;
    --syntax-type: #4271ae;
    --syntax-function: #4271ae;
    --syntax-macro: #3e999f;
    --syntax-lifetime: #b76514;
    --syntax-attribute: #c82829;
    --syntax-operator: #3d3d3d;
    --syntax-punctuation: #3d3d3d;
}

@media (prefers-color-scheme: dark) {
    [data-syntax-theme="rustdoc"] {
        /* Rustdoc Dark */
        --syntax-keyword: #ab8ac1;
        --syntax-keyword2: #6e9bcf;
        --syntax-string: #83a300;
        --syntax-number: #d19a66;
        --syntax-comment: #8d8d8b;
        --syntax-type: #6e9bcf;
        --syntax-function: #6e9bcf;
        --syntax-macro: #56b6c2;
        --syntax-lifetime: #d19a66;
        --syntax-attribute: #d19a66;
        --syntax-operator: #c5c5c5;
        --syntax-punctuation: #c5c5c5;
    }
}

/* ==========================================================================
   THEME: Catppuccin - Soothing pastel aesthetic
   https://github.com/catppuccin/catppuccin
   ========================================================================== */

[data-syntax-theme="catppuccin"] {
    /* Catppuccin Latte (Light) */
    --syntax-keyword: #8839ef;
    --syntax-keyword2: #1e66f5;
    --syntax-string: #40a02b;
    --syntax-number: #fe640b;
    --syntax-comment: #9ca0b0;
    --syntax-type: #df8e1d;
    --syntax-function: #1e66f5;
    --syntax-macro: #179299;
    --syntax-lifetime: #d20f39;
    --syntax-attribute: #fe640b;
    --syntax-operator: #4c4f69;
    --syntax-punctuation: #4c4f69;
}

@media (prefers-color-scheme: dark) {
    [data-syntax-theme="catppuccin"] {
        /* Catppuccin Mocha (Dark) */
        --syntax-keyword: #cba6f7;
        --syntax-keyword2: #89b4fa;
        --syntax-string: #a6e3a1;
        --syntax-number: #fab387;
        --syntax-comment: #6c7086;
        --syntax-type: #f9e2af;
        --syntax-function: #89b4fa;
        --syntax-macro: #94e2d5;
        --syntax-lifetime: #f38ba8;
        --syntax-attribute: #fab387;
        --syntax-operator: #cdd6f4;
        --syntax-punctuation: #cdd6f4;
    }
}

/* ==========================================================================
   THEME: Dracula - Popular purple-based dark theme
   https://draculatheme.com/
   ========================================================================== */

[data-syntax-theme="dracula"] {
    /* Dracula "Day" inspired light variant */
    --syntax-keyword: #d6509f;
    --syntax-keyword2: #7c3aed;
    --syntax-string: #2e8b57;
    --syntax-number: #a855f7;
    --syntax-comment: #9ca0b0;
    --syntax-type: #d97706;
    --syntax-function: #7c3aed;
    --syntax-macro: #0891b2;
    --syntax-lifetime: #dc2626;
    --syntax-attribute: #d97706;
    --syntax-operator: #3d3d3d;
    --syntax-punctuation: #3d3d3d;
}

@media (prefers-color-scheme: dark) {
    [data-syntax-theme="dracula"] {
        /* Dracula */
        --syntax-keyword: #ff79c6;
        --syntax-keyword2: #bd93f9;
        --syntax-string: #f1fa8c;
        --syntax-number: #bd93f9;
        --syntax-comment: #6272a4;
        --syntax-type: #8be9fd;
        --syntax-function: #50fa7b;
        --syntax-macro: #8be9fd;
        --syntax-lifetime: #ff5555;
        --syntax-attribute: #ffb86c;
        --syntax-operator: #f8f8f2;
        --syntax-punctuation: #f8f8f2;
    }
}

/* ==========================================================================
   SELECTORS - Map syntect classes to variables
   ========================================================================== */

pre code .keyword { color: var(--syntax-keyword); }
pre code .storage { color: var(--syntax-keyword); }
pre code .storage.type { color: var(--syntax-type); }
pre code .constant { color: var(--syntax-number); }
pre code .constant.numeric { color: var(--syntax-number); }
pre code .constant.character { color: var(--syntax-string); }
pre code .string { color: var(--syntax-string); }
pre code .comment { color: var(--syntax-comment); font-style: italic; }
pre code .entity.name { color: var(--syntax-function); }
pre code .entity.name.function { color: var(--syntax-function); }
pre code .entity.name.type { color: var(--syntax-type); }
pre code .support { color: var(--syntax-type); }
pre code .support.function { color: var(--syntax-function); }
pre code .support.type { color: var(--syntax-type); }
pre code .variable { color: var(--syntax-function); }
pre code .variable.annotation { color: var(--syntax-attribute); }
pre code .meta.annotation { color: var(--syntax-attribute); }
pre code .punctuation { color: var(--syntax-punctuation); }
pre code .keyword.operator { color: var(--syntax-operator); }

/* Rust-specific: lifetime annotations */
pre code .storage.modifier.lifetime { color: var(--syntax-lifetime); }

/* Rust-specific: macros */
pre code .support.macro { color: var(--syntax-macro); }
pre code .entity.name.function.macro { color: var(--syntax-macro); }
