/* ============================================================
   Syntax highlighting — Rouge token classes
   Works with light/dark theme via CSS custom properties
   ============================================================ */

/* ── Token colours: dark (default) ───────────────────────── */
:root {
  --syn-keyword:  #72e83a;   /* lime — keywords, declarations   */
  --syn-string:   #7dcfb6;   /* teal — strings                  */
  --syn-comment:  #6a6358;   /* muted — comments                */
  --syn-number:   #ff9e64;   /* orange — numbers                */
  --syn-builtin:  #c8b8f0;   /* lavender — builtins, types      */
  --syn-operator: #b0a898;   /* mid — operators, punctuation    */
  --syn-attr:     #e8a87c;   /* sand — object keys, attributes  */
}

/* ── Token colours: light ─────────────────────────────────── */
[data-theme="light"],
@media (prefers-color-scheme: light) { :root:not([data-theme="dark"]) {
  --syn-keyword:  #7c3a00;
  --syn-string:   #0c7a6e;
  --syn-comment:  #8a8278;
  --syn-number:   #b83c00;
  --syn-builtin:  #5c35c7;
  --syn-operator: #44403a;
  --syn-attr:     #8a4800;
}}

[data-theme="light"] {
  --syn-keyword:  #7c3a00;
  --syn-string:   #0c7a6e;
  --syn-comment:  #8a8278;
  --syn-number:   #b83c00;
  --syn-builtin:  #5c35c7;
  --syn-operator: #44403a;
  --syn-attr:     #8a4800;
}

/* ── Token mappings ───────────────────────────────────────── */

/* keywords */
.highlight .k,
.highlight .kd,
.highlight .kn,
.highlight .kp,
.highlight .kr,
.highlight .kt,
.highlight .kv  { color: var(--syn-keyword); }

/* strings */
.highlight .s,
.highlight .s1,
.highlight .s2,
.highlight .sb,
.highlight .sc,
.highlight .sd,
.highlight .se,
.highlight .sh,
.highlight .si,
.highlight .ss,
.highlight .sx  { color: var(--syn-string); }

/* comments */
.highlight .c,
.highlight .c1,
.highlight .cm,
.highlight .cp,
.highlight .cs  { color: var(--syn-comment); font-style: italic; }

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

/* builtins, types, class names */
.highlight .nb,
.highlight .nc,
.highlight .nd,
.highlight .ni,
.highlight .nl,
.highlight .nn,
.highlight .no  { color: var(--syn-builtin); }

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

/* object keys / attributes */
.highlight .na,
.highlight .nv,
.highlight .vc,
.highlight .vg,
.highlight .vi  { color: var(--syn-attr); }

/* diff: deleted / inserted */
.highlight .gd  { color: #ff7a7a; }
.highlight .gi  { color: var(--syn-string); }

/* shell prompt */
.highlight .gp  { color: var(--syn-comment); user-select: none; }

/* generic output */
.highlight .go  { color: var(--syn-operator); }
