/* Language-aware code blocks. Plain text and unhighlighted blocks keep their
   existing styles. Token colours override the shared card/dropdown text rules. */

html[data-theme="dark"] .bd-article {
  --didww-code-text: #e1e4e8;
  --didww-code-keyword: #f97583;
  --didww-code-string: #9ecbff;
  --didww-code-function: #b392f0;
  --didww-code-number: #79b8ff;
  --didww-code-comment: #8b949e;
  --didww-code-tag: #7ee787;
  --didww-code-error: #ff938a;
}

html[data-theme="light"] .bd-article {
  --didww-code-text: #24292e;
  --didww-code-keyword: #d73a49;
  --didww-code-string: #032f62;
  --didww-code-function: #6f42c1;
  --didww-code-number: #005cc5;
  --didww-code-comment: #57606a;
  --didww-code-tag: #116329;
  --didww-code-error: #a40e26;
}

/* The extra scope is intentional: generic dark-mode and dropdown rules set
   colour with !important. Keep the override confined to Pygments token spans. */
html[data-theme] .bd-article div[class*="highlight-"]:not(.highlight-text):not(.highlight-none) .highlight pre {
  color: var(--didww-code-text) !important;
}

html[data-theme] .bd-article div[class*="highlight-"]:not(.highlight-text):not(.highlight-none) .highlight pre span[class] {
  color: var(--didww-code-token, var(--didww-code-text)) !important;
  font-weight: normal !important;
  font-style: normal !important;
}

.bd-article :where(div[class*="highlight-"]:not(.highlight-text):not(.highlight-none)) .highlight pre :is(.k, .kc, .kd, .kn, .kp, .kr, .kt, .o, .ow) {
  --didww-code-token: var(--didww-code-keyword);
}

.bd-article :where(div[class*="highlight-"]:not(.highlight-text):not(.highlight-none)) .highlight pre :is(.l, .ld, .s, .sa, .sb, .sc, .dl, .sd, .s1, .s2, .se, .sh, .si, .sx, .sr, .ss) {
  --didww-code-token: var(--didww-code-string);
}

.bd-article :where(div[class*="highlight-"]:not(.highlight-text):not(.highlight-none)) .highlight pre :is(.nc, .nd, .ne, .nf, .fm) {
  --didww-code-token: var(--didww-code-function);
}

.bd-article :where(div[class*="highlight-"]:not(.highlight-text):not(.highlight-none)) .highlight pre :is(.m, .mb, .mf, .mh, .mi, .mo, .il, .no, .nl, .nv, .vc, .vg, .vi, .vm, .py) {
  --didww-code-token: var(--didww-code-number);
}

.bd-article :where(div[class*="highlight-"]:not(.highlight-text):not(.highlight-none)) .highlight pre :is(.c, .ch, .cm, .cp, .cpf, .c1, .cs) {
  --didww-code-token: var(--didww-code-comment);
}

.bd-article :where(div[class*="highlight-"]:not(.highlight-text):not(.highlight-none)) .highlight pre :is(.nt, .na) {
  --didww-code-token: var(--didww-code-tag);
}

/* JSON property names are distinct from their string values. */
.bd-article :where(.highlight-json) .highlight pre .nt {
  --didww-code-token: var(--didww-code-number);
}

.bd-article :where(div[class*="highlight-"]:not(.highlight-text):not(.highlight-none)) .highlight pre :is(.err, .gr, .gt) {
  --didww-code-token: var(--didww-code-error);
}

.bd-article :where(div[class*="highlight-"]:not(.highlight-text):not(.highlight-none)) .highlight pre :is(.go, .gp, .linenos) {
  --didww-code-token: var(--didww-code-comment);
}

html[data-theme] .bd-article div[class*="highlight-"]:not(.highlight-text):not(.highlight-none) .highlight pre span.linenos {
  display: inline-block;
  min-width: 2ch;
  margin-right: 1.25em;
  padding: 0 !important;
  border: 0;
  text-align: right;
  font-variant-numeric: tabular-nums;
  user-select: none;
  -webkit-user-select: none;
}
