/* ===========================================================================
   Syntax highlighting — one map for both themes.

   Code blocks are always a dark terminal, light theme included, so there is no
   second palette to keep in sync. This is also what fixes the old bug where
   github-dark omitted .p/.na/.nx/.nb/.bp and the light values leaked in,
   rendering every semicolon and paren at #1f2328 on a dark surface.

   Colour roles: purple = keywords, green = strings, blue = identifiers and
   numbers, grey italic = comments. Everything else inherits --code-text, so
   punctuation is always visible.
   =========================================================================== */

.chroma {
  background: transparent;
  color: var(--code-text);
}

/* keywords */
.chroma .k, .chroma .kc, .chroma .kd, .chroma .kn,
.chroma .kp, .chroma .kr, .chroma .kt, .chroma .ow { color: var(--code-kw); }

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

/* numbers, builtins, variables */
.chroma .m, .chroma .mb, .chroma .mf, .chroma .mh, .chroma .mi, .chroma .il,
.chroma .mo, .chroma .nb, .chroma .bp, .chroma .nv, .chroma .vc, .chroma .vg,
.chroma .vi, .chroma .nl { color: var(--code-id); }

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

/* names, punctuation, operators — explicit so nothing falls back to a light
   palette value on a dark ground */
.chroma .n, .chroma .na, .chroma .nx, .chroma .no, .chroma .nd, .chroma .ni,
.chroma .ne, .chroma .nn, .chroma .py, .chroma .nt,
.chroma .p, .chroma .o, .chroma .w { color: var(--code-text); }

.chroma .nf, .chroma .fm { color: var(--code-id); font-weight: 600; }
.chroma .nc { color: var(--code-kw); }

/* diagnostics */
.chroma .err { color: #f87171; }
.chroma .gd { color: #f87171; }
.chroma .gi { color: var(--code-str); }
.chroma .ge { font-style: italic; }
.chroma .gs { font-weight: 600; }

/* line wrappers used by the line-number counter */
.chroma .line { display: block; }
.chroma .lnt, .chroma .ln { color: var(--code-cm); user-select: none; }
