/* ============================================================
   highlight.css — syntax highlighting for sfarrens theme
   Token colours are driven by CSS custom properties defined
   in sfarrens.css, so light ↔ dark switching is automatic.
   Light palette: GitHub-inspired (matches website light mode)
   Dark palette:  One Dark (matches website dark mode)
   ============================================================ */

.hljs {
  display: block;
  overflow-x: auto;
  color: var(--hl-base);
  background: transparent;
}

/* Comments */
.hljs-comment,
.hljs-quote {
  color: var(--hl-comment);
  font-style: italic;
}

/* Keywords, control flow */
.hljs-keyword,
.hljs-selector-tag,
.hljs-addition {
  color: var(--hl-keyword);
  font-weight: bold;
}

/* Types */
.hljs-type {
  color: var(--hl-type);
  font-weight: bold;
}

/* Strings */
.hljs-string,
.hljs-doctag,
.hljs-template-variable,
.hljs-deletion {
  color: var(--hl-string);
}

/* Numbers, literals */
.hljs-number,
.hljs-literal {
  color: var(--hl-number);
}

/* Regular expressions */
.hljs-regexp {
  color: var(--hl-regexp);
}

/* Function names */
.hljs-title,
.hljs-function .hljs-title {
  color: var(--hl-function);
  font-weight: bold;
}

/* Class names */
.hljs-class .hljs-title,
.hljs-class {
  color: var(--hl-class);
  font-weight: bold;
}

/* Variables */
.hljs-variable,
.hljs-template-tag,
.hljs-link {
  color: var(--hl-variable);
}

/* Attributes */
.hljs-attr,
.hljs-attribute {
  color: var(--hl-attr);
}

/* Operators, punctuation */
.hljs-symbol,
.hljs-bullet,
.hljs-subst {
  color: var(--hl-operator);
}

/* Built-ins */
.hljs-built_in {
  color: var(--hl-builtin);
}

/* HTML/XML tags */
.hljs-tag,
.hljs-name,
.hljs-selector-id,
.hljs-selector-class {
  color: var(--hl-tag);
}

/* Parameters */
.hljs-params {
  color: var(--hl-variable);
}

/* Meta / preprocessor */
.hljs-meta {
  color: var(--hl-comment);
}

/* Section headings (e.g. Markdown) */
.hljs-section {
  color: var(--hl-function);
  font-weight: bold;
}

/* Diff markers */
.hljs-addition { background: transparent; }
.hljs-deletion { background: transparent; }

/* Formatting */
.hljs-emphasis { font-style: italic; }
.hljs-strong   { font-weight: bold; }

/* ── Rouge token classes (used by markdownify / kramdown) ───── */
/* Comments */
.highlight .c,  .highlight .c1, .highlight .cm,
.highlight .cs, .highlight .cp, .highlight .cd { color: var(--hl-comment); font-style: italic; }

/* Keywords */
.highlight .k,  .highlight .kd, .highlight .kn,
.highlight .kp, .highlight .kr, .highlight .kv,
.highlight .kc { color: var(--hl-keyword); font-weight: bold; }

/* Type keywords */
.highlight .kt { color: var(--hl-type); font-weight: bold; }

/* Strings */
.highlight .s,  .highlight .s1, .highlight .s2,
.highlight .sb, .highlight .sc, .highlight .sd,
.highlight .se, .highlight .sh, .highlight .si,
.highlight .sx { color: var(--hl-string); }
.highlight .sr  { color: var(--hl-regexp); }

/* Numbers */
.highlight .m,  .highlight .mb, .highlight .mf,
.highlight .mh, .highlight .mi, .highlight .mo,
.highlight .mx, .highlight .il { color: var(--hl-number); }

/* Names */
.highlight .nf, .highlight .fm { color: var(--hl-function); font-weight: bold; }
.highlight .nc  { color: var(--hl-class);    font-weight: bold; }
.highlight .nd  { color: var(--hl-class);    font-weight: bold; }
.highlight .nb, .highlight .bp { color: var(--hl-builtin); }
.highlight .nn  { color: var(--hl-base); }
.highlight .nt  { color: var(--hl-tag); }
.highlight .na, .highlight .no,
.highlight .vc, .highlight .vg,
.highlight .vi, .highlight .nv { color: var(--hl-variable); }

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

/* Punctuation / generic */
.highlight .p   { color: var(--hl-base); }
.highlight .n   { color: var(--hl-base); }
.highlight .err { color: #f44747; background: transparent; }
.highlight .gd  { color: #f44747; background: transparent; }
.highlight .gi  { color: var(--hl-string); background: transparent; }
.highlight .gp  { color: var(--hl-comment); }
