/*
 * Syntax highlighting for fenced code blocks in posts.
 *
 * Rouge does the tokenizing SERVER-SIDE (see app/services/markdown_renderer.rb) and emits these
 * class names. No JavaScript is involved, which is deliberate: the CSP is enforced and a client-side
 * highlighter would need an importmap entry plus a script-src allowance, and would fail silently
 * without them.
 *
 * The palette is the Terminal system's own: amber "spark" for keywords, the test-green for strings,
 * muted for comments. Anything Rouge emits that isn't listed here just inherits the code block's
 * body color, which degrades cleanly.
 */

.prose .highlight .c,                 /* comment */
.prose .highlight .cm,
.prose .highlight .c1,
.prose .highlight .cs,
.prose .highlight .cd     { color: var(--muted-2); font-style: italic; }

.prose .highlight .k,                 /* keyword */
.prose .highlight .kc,
.prose .highlight .kd,
.prose .highlight .kn,
.prose .highlight .kp,
.prose .highlight .kr,
.prose .highlight .kt     { color: var(--spark); }

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

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

.prose .highlight .n,                 /* plain name */
.prose .highlight .nb,
.prose .highlight .bp     { color: var(--bone); }

.prose .highlight .nc,                /* class / constant / namespace */
.prose .highlight .no,
.prose .highlight .nn,
.prose .highlight .ne     { color: var(--bone-bright); }

.prose .highlight .nf,                /* function / method */
.prose .highlight .nd,
.prose .highlight .nl     { color: var(--bone-bright); }

.prose .highlight .nv,                /* variable */
.prose .highlight .vc,
.prose .highlight .vg,
.prose .highlight .vi     { color: var(--bone); }

.prose .highlight .na     { color: var(--warn); }   /* attribute */
.prose .highlight .nt     { color: var(--spark); }  /* html/xml tag */
.prose .highlight .o,                               /* operator */
.prose .highlight .ow     { color: var(--muted); }
.prose .highlight .p      { color: var(--muted); }  /* punctuation */

.prose .highlight .gd     { color: var(--warn); }   /* diff deleted */
.prose .highlight .gi     { color: var(--ok); }     /* diff inserted */
.prose .highlight .gh     { color: var(--muted-2); }
.prose .highlight .err    { color: var(--bone); }
