/* ============================================================================
   prism-tokens.css — Luminance-Anchored Syntax Highlighting
   ============================================================================

   Architecture:

   All Prism token colors are defined here for all 6 themes. Each theme sets
   three CSS custom properties that anchor the entire palette:

     --code-token-l    Fixed lightness for ALL syntax tokens
     --code-token-c    Base chroma (saturation intensity)
     --code-comment-l  Comment-specific lightness (usually muted)

   A universal hue map in :root assigns semantic hues to token categories.
   Each token rule declares color twice: hex fallback first, oklch override
   second. Browsers that support oklch use the second declaration; older
   browsers use the hex fallback.

   Token groups (9 groups, 21 Prism token types):
     1. Comments    — comment, prolog, doctype, cdata
     2. Keywords    — keyword, tag, boolean, constant, deleted, important
     3. Strings     — string, char, attr-value, inserted, selector, regex
     4. Functions   — function, class-name, builtin
     5. Numbers     — number, symbol
     6. Operators   — operator, entity, url
     7. Punctuation — punctuation (reduced chroma)
     8. Properties  — property, attr-name, variable
     9. Namespace   — namespace (opacity only)

   ========================================================================= */


/* ---------------------------------------------------------------------------
   Universal Hue Map
   --------------------------------------------------------------------------- */

:root {
  --hue-comment:     110;   /* muted green-gray   */
  --hue-keyword:     350;   /* pink/red            */
  --hue-string:      190;   /* cyan                */
  --hue-function:    45;    /* amber               */
  --hue-number:      280;   /* violet              */
  --hue-operator:    150;   /* green               */
  --hue-punctuation: 120;   /* green-yellow        */
  --hue-property:    30;    /* orange              */
}


/* ============================= clarity-theme ============================== */

/*
   clarity-theme anchors:
     --code-token-l:   55%
     --code-token-c:   0.18
     --code-comment-l: 55%
*/

.clarity-theme {
  --code-token-l:   55%;
  --code-token-c:   0.18;
  --code-comment-l: 55%;
}

/* clarity-theme — Comments */
.clarity-theme .token.comment,
.clarity-theme .token.prolog,
.clarity-theme .token.doctype,
.clarity-theme .token.cdata {
  color: #7d8b99;
  color: oklch(var(--code-comment-l) calc(var(--code-token-c) * 0.3) var(--hue-comment));
}

/* clarity-theme — Keywords */
.clarity-theme .token.keyword,
.clarity-theme .token.tag,
.clarity-theme .token.boolean,
.clarity-theme .token.constant,
.clarity-theme .token.deleted,
.clarity-theme .token.important {
  color: #c92c2c;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-keyword));
}

/* clarity-theme — Strings */
.clarity-theme .token.string,
.clarity-theme .token.char,
.clarity-theme .token.attr-value,
.clarity-theme .token.inserted,
.clarity-theme .token.selector,
.clarity-theme .token.regex {
  color: #2f9c0a;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-string));
}

/* clarity-theme — Functions */
.clarity-theme .token.function,
.clarity-theme .token.class-name,
.clarity-theme .token.builtin {
  color: #1990b8;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-function));
}

/* clarity-theme — Numbers */
.clarity-theme .token.number,
.clarity-theme .token.symbol {
  color: #c92c2c;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-number));
}

/* clarity-theme — Operators */
.clarity-theme .token.operator,
.clarity-theme .token.entity,
.clarity-theme .token.url {
  color: #a67f59;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-operator));
}

/* clarity-theme — Punctuation */
.clarity-theme .token.punctuation {
  color: #5f6364;
  color: oklch(var(--code-token-l) calc(var(--code-token-c) * 0.5) var(--hue-punctuation));
}

/* clarity-theme — Properties */
.clarity-theme .token.property,
.clarity-theme .token.attr-name,
.clarity-theme .token.variable {
  color: #a67f59;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-property));
}

/* clarity-theme — Namespace */
.clarity-theme .token.namespace {
  opacity: 0.7;
}


/* ============================== stack-theme =============================== */

/*
   stack-theme anchors:
     --code-token-l:   55%
     --code-token-c:   0.16
     --code-comment-l: 50%
*/

.stack-theme {
  --code-token-l:   55%;
  --code-token-c:   0.16;
  --code-comment-l: 50%;
}

/* stack-theme — Comments */
.stack-theme .token.comment,
.stack-theme .token.prolog,
.stack-theme .token.doctype,
.stack-theme .token.cdata {
  color: #8b7e6a;
  color: oklch(var(--code-comment-l) calc(var(--code-token-c) * 0.3) var(--hue-comment));
}

/* stack-theme — Keywords */
.stack-theme .token.keyword,
.stack-theme .token.tag,
.stack-theme .token.boolean,
.stack-theme .token.constant,
.stack-theme .token.deleted,
.stack-theme .token.important {
  color: #e06050;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-keyword));
}

/* stack-theme — Strings */
.stack-theme .token.string,
.stack-theme .token.char,
.stack-theme .token.attr-value,
.stack-theme .token.inserted,
.stack-theme .token.selector,
.stack-theme .token.regex {
  color: #2f9c0a;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-string));
}

/* stack-theme — Functions */
.stack-theme .token.function,
.stack-theme .token.class-name,
.stack-theme .token.builtin {
  color: #d09020;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-function));
}

/* stack-theme — Numbers */
.stack-theme .token.number,
.stack-theme .token.symbol {
  color: #b07040;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-number));
}

/* stack-theme — Operators */
.stack-theme .token.operator,
.stack-theme .token.entity,
.stack-theme .token.url {
  color: #a08060;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-operator));
}

/* stack-theme — Punctuation */
.stack-theme .token.punctuation {
  color: #706050;
  color: oklch(var(--code-token-l) calc(var(--code-token-c) * 0.5) var(--hue-punctuation));
}

/* stack-theme — Properties */
.stack-theme .token.property,
.stack-theme .token.attr-name,
.stack-theme .token.variable {
  color: #c08030;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-property));
}

/* stack-theme — Namespace */
.stack-theme .token.namespace {
  opacity: 0.7;
}


/* ============================ terminal-theme ============================== */

/*
   terminal-theme anchors:
     --code-token-l:   72%
     --code-token-c:   0.16
     --code-comment-l: 45%
*/

.terminal-theme {
  --code-token-l:   72%;
  --code-token-c:   0.16;
  --code-comment-l: 45%;
}

/* terminal-theme — Comments */
.terminal-theme .token.comment,
.terminal-theme .token.prolog,
.terminal-theme .token.doctype,
.terminal-theme .token.cdata {
  color: #64748B;
  color: oklch(var(--code-comment-l) calc(var(--code-token-c) * 0.3) var(--hue-comment));
}

/* terminal-theme — Keywords */
.terminal-theme .token.keyword,
.terminal-theme .token.tag,
.terminal-theme .token.boolean,
.terminal-theme .token.constant,
.terminal-theme .token.deleted,
.terminal-theme .token.important {
  color: #F472B6;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-keyword));
}

/* terminal-theme — Strings */
.terminal-theme .token.string,
.terminal-theme .token.char,
.terminal-theme .token.attr-value,
.terminal-theme .token.inserted,
.terminal-theme .token.selector,
.terminal-theme .token.regex {
  color: #34D399;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-string));
}

/* terminal-theme — Functions */
.terminal-theme .token.function,
.terminal-theme .token.class-name,
.terminal-theme .token.builtin {
  color: #60A5FA;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-function));
}

/* terminal-theme — Numbers */
.terminal-theme .token.number,
.terminal-theme .token.symbol {
  color: #FBBF24;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-number));
}

/* terminal-theme — Operators */
.terminal-theme .token.operator,
.terminal-theme .token.entity,
.terminal-theme .token.url {
  color: #4ADE80;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-operator));
}

/* terminal-theme — Punctuation */
.terminal-theme .token.punctuation {
  color: #94A3B8;
  color: oklch(var(--code-token-l) calc(var(--code-token-c) * 0.5) var(--hue-punctuation));
}

/* terminal-theme — Properties */
.terminal-theme .token.property,
.terminal-theme .token.attr-name,
.terminal-theme .token.variable {
  color: #FB923C;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-property));
}

/* terminal-theme — Namespace */
.terminal-theme .token.namespace {
  opacity: 0.7;
}


/* ============================== neon-terminal ============================= */

/*
   neon-terminal anchors:
     --code-token-l:   78%
     --code-token-c:   0.20
     --code-comment-l: 50%
*/

.neon-terminal {
  --code-token-l:   78%;
  --code-token-c:   0.20;
  --code-comment-l: 50%;
}

/* neon-terminal — Comments */
.neon-terminal .token.comment,
.neon-terminal .token.prolog,
.neon-terminal .token.doctype,
.neon-terminal .token.cdata {
  color: #16A34A;
  color: oklch(var(--code-comment-l) calc(var(--code-token-c) * 0.3) var(--hue-comment));
}

/* neon-terminal — Keywords */
.neon-terminal .token.keyword,
.neon-terminal .token.tag,
.neon-terminal .token.boolean,
.neon-terminal .token.constant,
.neon-terminal .token.deleted,
.neon-terminal .token.important {
  color: #F472B6;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-keyword));
}

/* neon-terminal — Strings */
.neon-terminal .token.string,
.neon-terminal .token.char,
.neon-terminal .token.attr-value,
.neon-terminal .token.inserted,
.neon-terminal .token.selector,
.neon-terminal .token.regex {
  color: #22D3EE;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-string));
}

/* neon-terminal — Functions */
.neon-terminal .token.function,
.neon-terminal .token.class-name,
.neon-terminal .token.builtin {
  color: #FBBF24;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-function));
}

/* neon-terminal — Numbers */
.neon-terminal .token.number,
.neon-terminal .token.symbol {
  color: #A78BFA;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-number));
}

/* neon-terminal — Operators */
.neon-terminal .token.operator,
.neon-terminal .token.entity,
.neon-terminal .token.url {
  color: #4ADE80;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-operator));
}

/* neon-terminal — Punctuation */
.neon-terminal .token.punctuation {
  color: #22C55E;
  color: oklch(var(--code-token-l) calc(var(--code-token-c) * 0.5) var(--hue-punctuation));
}

/* neon-terminal — Properties */
.neon-terminal .token.property,
.neon-terminal .token.attr-name,
.neon-terminal .token.variable {
  color: #FB923C;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-property));
}

/* neon-terminal — Namespace */
.neon-terminal .token.namespace {
  opacity: 0.7;
}


/* ============================== pure-mac-84 =============================== */

/*
   pure-mac-84 anchors:
     --code-token-l:   45%
     --code-token-c:   0.12
     --code-comment-l: 52%
*/

.pure-mac-84 {
  --code-token-l:   45%;
  --code-token-c:   0.12;
  --code-comment-l: 52%;
}

/* pure-mac-84 — Comments */
.pure-mac-84 .token.comment,
.pure-mac-84 .token.prolog,
.pure-mac-84 .token.doctype,
.pure-mac-84 .token.cdata {
  color: #6A737D;
  color: oklch(var(--code-comment-l) calc(var(--code-token-c) * 0.3) var(--hue-comment));
}

/* pure-mac-84 — Keywords */
.pure-mac-84 .token.keyword,
.pure-mac-84 .token.tag,
.pure-mac-84 .token.boolean,
.pure-mac-84 .token.constant,
.pure-mac-84 .token.deleted,
.pure-mac-84 .token.important {
  color: #D73A49;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-keyword));
}

/* pure-mac-84 — Strings */
.pure-mac-84 .token.string,
.pure-mac-84 .token.char,
.pure-mac-84 .token.attr-value,
.pure-mac-84 .token.inserted,
.pure-mac-84 .token.selector,
.pure-mac-84 .token.regex {
  color: #032F62;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-string));
}

/* pure-mac-84 — Functions */
.pure-mac-84 .token.function,
.pure-mac-84 .token.class-name,
.pure-mac-84 .token.builtin {
  color: #6F42C1;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-function));
}

/* pure-mac-84 — Numbers */
.pure-mac-84 .token.number,
.pure-mac-84 .token.symbol {
  color: #005CC5;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-number));
}

/* pure-mac-84 — Operators */
.pure-mac-84 .token.operator,
.pure-mac-84 .token.entity,
.pure-mac-84 .token.url {
  color: #6A737D;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-operator));
}

/* pure-mac-84 — Punctuation */
.pure-mac-84 .token.punctuation {
  color: #24292E;
  color: oklch(var(--code-token-l) calc(var(--code-token-c) * 0.5) var(--hue-punctuation));
}

/* pure-mac-84 — Properties */
.pure-mac-84 .token.property,
.pure-mac-84 .token.attr-name,
.pure-mac-84 .token.variable {
  color: #E36209;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-property));
}

/* pure-mac-84 — Namespace */
.pure-mac-84 .token.namespace {
  opacity: 0.7;
}


/* ============================= missing-theme ============================== */

/*
   missing-theme anchors (standard Prism Coy):
     --code-token-l:   50%
     --code-token-c:   0.15
     --code-comment-l: 55%
*/

.missing-theme {
  --code-token-l:   50%;
  --code-token-c:   0.15;
  --code-comment-l: 55%;
}

/* missing-theme — Comments */
.missing-theme .token.comment,
.missing-theme .token.prolog,
.missing-theme .token.doctype,
.missing-theme .token.cdata {
  color: #7d8b99;
  color: oklch(var(--code-comment-l) calc(var(--code-token-c) * 0.3) var(--hue-comment));
}

/* missing-theme — Keywords */
.missing-theme .token.keyword,
.missing-theme .token.tag,
.missing-theme .token.boolean,
.missing-theme .token.constant,
.missing-theme .token.deleted,
.missing-theme .token.important {
  color: #1990b8;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-keyword));
}

/* missing-theme — Strings */
.missing-theme .token.string,
.missing-theme .token.char,
.missing-theme .token.attr-value,
.missing-theme .token.inserted,
.missing-theme .token.selector,
.missing-theme .token.regex {
  color: #2f9c0a;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-string));
}

/* missing-theme — Functions */
.missing-theme .token.function,
.missing-theme .token.class-name,
.missing-theme .token.builtin {
  color: #c92c2c;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-function));
}

/* missing-theme — Numbers */
.missing-theme .token.number,
.missing-theme .token.symbol {
  color: #c92c2c;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-number));
}

/* missing-theme — Operators */
.missing-theme .token.operator,
.missing-theme .token.entity,
.missing-theme .token.url {
  color: #a67f59;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-operator));
}

/* missing-theme — Punctuation */
.missing-theme .token.punctuation {
  color: #5f6364;
  color: oklch(var(--code-token-l) calc(var(--code-token-c) * 0.5) var(--hue-punctuation));
}

/* missing-theme — Properties */
.missing-theme .token.property,
.missing-theme .token.attr-name,
.missing-theme .token.variable {
  color: #a67f59;
  color: oklch(var(--code-token-l) var(--code-token-c) var(--hue-property));
}

/* missing-theme — Namespace */
.missing-theme .token.namespace {
  opacity: 0.7;
}


/* ============================================================================
   Dark / Light Mode Overrides
   ============================================================================ */


/* ---------------------------------------------------------------------------
   pure-mac-84 — Dark Mode Override

   pure-mac-84 defaults to light code blocks (low lightness tokens on light
   backgrounds). In dark mode, tokens need higher lightness to remain legible
   on dark backgrounds.
   --------------------------------------------------------------------------- */

/* pure-mac-84 dark mode — Comments */
html.-dark-mode .pure-mac-84 .token.comment,
html.-dark-mode .pure-mac-84 .token.prolog,
html.-dark-mode .pure-mac-84 .token.doctype,
html.-dark-mode .pure-mac-84 .token.cdata,
.pure-mac-84.-dark-mode .token.comment,
.pure-mac-84.-dark-mode .token.prolog,
.pure-mac-84.-dark-mode .token.doctype,
.pure-mac-84.-dark-mode .token.cdata {
  color: #999999;
  color: oklch(60% calc(var(--code-token-c) * 0.3) var(--hue-comment));
}

/* pure-mac-84 dark mode — Keywords */
html.-dark-mode .pure-mac-84 .token.keyword,
html.-dark-mode .pure-mac-84 .token.tag,
html.-dark-mode .pure-mac-84 .token.boolean,
html.-dark-mode .pure-mac-84 .token.constant,
html.-dark-mode .pure-mac-84 .token.deleted,
html.-dark-mode .pure-mac-84 .token.important,
.pure-mac-84.-dark-mode .token.keyword,
.pure-mac-84.-dark-mode .token.tag,
.pure-mac-84.-dark-mode .token.boolean,
.pure-mac-84.-dark-mode .token.constant,
.pure-mac-84.-dark-mode .token.deleted,
.pure-mac-84.-dark-mode .token.important {
  color: #F87171;
  color: oklch(72% var(--code-token-c) var(--hue-keyword));
}

/* pure-mac-84 dark mode — Strings */
html.-dark-mode .pure-mac-84 .token.string,
html.-dark-mode .pure-mac-84 .token.char,
html.-dark-mode .pure-mac-84 .token.attr-value,
html.-dark-mode .pure-mac-84 .token.inserted,
html.-dark-mode .pure-mac-84 .token.selector,
html.-dark-mode .pure-mac-84 .token.regex,
.pure-mac-84.-dark-mode .token.string,
.pure-mac-84.-dark-mode .token.char,
.pure-mac-84.-dark-mode .token.attr-value,
.pure-mac-84.-dark-mode .token.inserted,
.pure-mac-84.-dark-mode .token.selector,
.pure-mac-84.-dark-mode .token.regex {
  color: #93C5FD;
  color: oklch(72% var(--code-token-c) var(--hue-string));
}

/* pure-mac-84 dark mode — Functions */
html.-dark-mode .pure-mac-84 .token.function,
html.-dark-mode .pure-mac-84 .token.class-name,
html.-dark-mode .pure-mac-84 .token.builtin,
.pure-mac-84.-dark-mode .token.function,
.pure-mac-84.-dark-mode .token.class-name,
.pure-mac-84.-dark-mode .token.builtin {
  color: #C4B5FD;
  color: oklch(72% var(--code-token-c) var(--hue-function));
}

/* pure-mac-84 dark mode — Numbers */
html.-dark-mode .pure-mac-84 .token.number,
html.-dark-mode .pure-mac-84 .token.symbol,
.pure-mac-84.-dark-mode .token.number,
.pure-mac-84.-dark-mode .token.symbol {
  color: #93C5FD;
  color: oklch(72% var(--code-token-c) var(--hue-number));
}

/* pure-mac-84 dark mode — Operators */
html.-dark-mode .pure-mac-84 .token.operator,
html.-dark-mode .pure-mac-84 .token.entity,
html.-dark-mode .pure-mac-84 .token.url,
.pure-mac-84.-dark-mode .token.operator,
.pure-mac-84.-dark-mode .token.entity,
.pure-mac-84.-dark-mode .token.url {
  color: #9CA3AF;
  color: oklch(72% var(--code-token-c) var(--hue-operator));
}

/* pure-mac-84 dark mode — Punctuation */
html.-dark-mode .pure-mac-84 .token.punctuation,
.pure-mac-84.-dark-mode .token.punctuation {
  color: #D1D5DB;
  color: oklch(72% calc(var(--code-token-c) * 0.5) var(--hue-punctuation));
}

/* pure-mac-84 dark mode — Properties */
html.-dark-mode .pure-mac-84 .token.property,
html.-dark-mode .pure-mac-84 .token.attr-name,
html.-dark-mode .pure-mac-84 .token.variable,
.pure-mac-84.-dark-mode .token.property,
.pure-mac-84.-dark-mode .token.attr-name,
.pure-mac-84.-dark-mode .token.variable {
  color: #FDBA74;
  color: oklch(72% var(--code-token-c) var(--hue-property));
}


/* ---------------------------------------------------------------------------
   neon-terminal — Light Mode Override

   neon-terminal defaults to bright phosphor tokens on dark backgrounds. In
   light mode, tokens need lower lightness to remain legible on light
   backgrounds.
   --------------------------------------------------------------------------- */

/* neon-terminal light mode — Comments */
:root.neon-terminal.-no-dark-theme .token.comment,
:root.neon-terminal.-no-dark-theme .token.prolog,
:root.neon-terminal.-no-dark-theme .token.doctype,
:root.neon-terminal.-no-dark-theme .token.cdata,
html.-light-mode .neon-terminal .token.comment,
html.-light-mode .neon-terminal .token.prolog,
html.-light-mode .neon-terminal .token.doctype,
html.-light-mode .neon-terminal .token.cdata {
  color: #668866;
  color: oklch(40% calc(var(--code-token-c) * 0.3) var(--hue-comment));
}

/* neon-terminal light mode — Keywords */
:root.neon-terminal.-no-dark-theme .token.keyword,
:root.neon-terminal.-no-dark-theme .token.tag,
:root.neon-terminal.-no-dark-theme .token.boolean,
:root.neon-terminal.-no-dark-theme .token.constant,
:root.neon-terminal.-no-dark-theme .token.deleted,
:root.neon-terminal.-no-dark-theme .token.important,
html.-light-mode .neon-terminal .token.keyword,
html.-light-mode .neon-terminal .token.tag,
html.-light-mode .neon-terminal .token.boolean,
html.-light-mode .neon-terminal .token.constant,
html.-light-mode .neon-terminal .token.deleted,
html.-light-mode .neon-terminal .token.important {
  color: #BE185D;
  color: oklch(45% var(--code-token-c) var(--hue-keyword));
}

/* neon-terminal light mode — Strings */
:root.neon-terminal.-no-dark-theme .token.string,
:root.neon-terminal.-no-dark-theme .token.char,
:root.neon-terminal.-no-dark-theme .token.attr-value,
:root.neon-terminal.-no-dark-theme .token.inserted,
:root.neon-terminal.-no-dark-theme .token.selector,
:root.neon-terminal.-no-dark-theme .token.regex,
html.-light-mode .neon-terminal .token.string,
html.-light-mode .neon-terminal .token.char,
html.-light-mode .neon-terminal .token.attr-value,
html.-light-mode .neon-terminal .token.inserted,
html.-light-mode .neon-terminal .token.selector,
html.-light-mode .neon-terminal .token.regex {
  color: #0E7490;
  color: oklch(45% var(--code-token-c) var(--hue-string));
}

/* neon-terminal light mode — Functions */
:root.neon-terminal.-no-dark-theme .token.function,
:root.neon-terminal.-no-dark-theme .token.class-name,
:root.neon-terminal.-no-dark-theme .token.builtin,
html.-light-mode .neon-terminal .token.function,
html.-light-mode .neon-terminal .token.class-name,
html.-light-mode .neon-terminal .token.builtin {
  color: #B45309;
  color: oklch(45% var(--code-token-c) var(--hue-function));
}

/* neon-terminal light mode — Numbers */
:root.neon-terminal.-no-dark-theme .token.number,
:root.neon-terminal.-no-dark-theme .token.symbol,
html.-light-mode .neon-terminal .token.number,
html.-light-mode .neon-terminal .token.symbol {
  color: #6D28D9;
  color: oklch(45% var(--code-token-c) var(--hue-number));
}

/* neon-terminal light mode — Operators */
:root.neon-terminal.-no-dark-theme .token.operator,
:root.neon-terminal.-no-dark-theme .token.entity,
:root.neon-terminal.-no-dark-theme .token.url,
html.-light-mode .neon-terminal .token.operator,
html.-light-mode .neon-terminal .token.entity,
html.-light-mode .neon-terminal .token.url {
  color: #047857;
  color: oklch(45% var(--code-token-c) var(--hue-operator));
}

/* neon-terminal light mode — Punctuation */
:root.neon-terminal.-no-dark-theme .token.punctuation,
html.-light-mode .neon-terminal .token.punctuation {
  color: #166534;
  color: oklch(45% calc(var(--code-token-c) * 0.5) var(--hue-punctuation));
}

/* neon-terminal light mode — Properties */
:root.neon-terminal.-no-dark-theme .token.property,
:root.neon-terminal.-no-dark-theme .token.attr-name,
:root.neon-terminal.-no-dark-theme .token.variable,
html.-light-mode .neon-terminal .token.property,
html.-light-mode .neon-terminal .token.attr-name,
html.-light-mode .neon-terminal .token.variable {
  color: #C2410C;
  color: oklch(45% var(--code-token-c) var(--hue-property));
}
