/* clab report kit — tokens.css
   All colors as custom properties, both themes. Charts and components consume
   roles, never raw hex. Palette = dataviz-skill validated default (see the
   dataviz skill's references/palette.md; re-validate if you change hues).
   Dark values are declared under BOTH the media query and the data-theme
   scopes — the viewer's toggle must win in both directions. */

:root {
  color-scheme: light;
  /* surfaces & ink */
  --paper: #f9f9f7;          /* page plane */
  --surface: #fcfcfb;        /* cards, chart surface */
  --ink: #0b0b0b;
  --ink-2: #52514e;          /* secondary */
  --muted: #898781;          /* axis labels, captions */
  --grid: #e1e0d9;           /* hairline gridlines */
  --baseline: #c3c2b7;       /* axis / baseline strokes */
  --border: rgba(11, 11, 11, 0.10);
  --accent: #256abf;         /* links, active controls (seq-500) */
  /* categorical series — fixed order, never cycled; scatter/small-multiples
     cap at 3 series (slots 1–3 validate all-pairs), then fold to "Other" */
  --series-1: #2a78d6;
  --series-2: #eb6834;
  --series-3: #1baf7a;
  --series-4: #eda100;
  --series-5: #e87ba4;
  --series-6: #008300;
  --series-7: #4a3aa7;
  --series-8: #e34948;
  /* sequential (single-hue blue, light→dark); ordinal ramps start ≥ seq-250 */
  --seq-100: #cde2fb; --seq-250: #86b6ef; --seq-400: #3987e5;
  --seq-500: #256abf; --seq-600: #184f95; --seq-700: #0d366b;
  /* diverging = series-1 blue ↔ series-8 red around a neutral midpoint */
  --div-mid: #f0efec;
  /* status — fixed, never themed, never reused as series colors */
  --good: #0ca30c;
  --warning: #fab219;
  --serious: #ec835a;
  --critical: #d03b3b;
  --good-text: #006300;      /* success text on light needs the darker step */
  --warn-ink: #8a5a00;       /* low-n / caveat text that must stay readable */
  --warn-bg: #fff6e0;        /* amber callout fill */
  --lesson-bg: #fdeeee;      /* superseded-result callout fill */
  /* type */
  --serif: Georgia, "Times New Roman", serif;
  --sans: system-ui, -apple-system, "Segoe UI", sans-serif;
  --mono: ui-monospace, Menlo, Consolas, monospace;
  /* spacing rhythm */
  --gap: 1rem;
  --radius: 6px;
}

@media (prefers-color-scheme: dark) {
  :root:where(:not([data-theme="light"])) {
    color-scheme: dark;
    --paper: #0d0d0d;
    --surface: #1a1a19;
    --ink: #ffffff;
    --ink-2: #c3c2b7;
    --muted: #898781;
    --grid: #2c2c2a;
    --baseline: #383835;
    --border: rgba(255, 255, 255, 0.10);
    --accent: #5598e7;
    --series-1: #3987e5;
    --series-2: #d95926;
    --series-3: #199e70;
    --series-4: #c98500;
    --series-5: #d55181;
    --series-6: #008300;
    --series-7: #9085e9;
    --series-8: #e66767;
    --div-mid: #383835;
    --good-text: #0ca30c;
    --warn-ink: #e8b968;
    --warn-bg: #2a2212;
    --lesson-bg: #2a1717;
  }
}
:root[data-theme="dark"] {
  color-scheme: dark;
  --paper: #0d0d0d;
  --surface: #1a1a19;
  --ink: #ffffff;
  --ink-2: #c3c2b7;
  --muted: #898781;
  --grid: #2c2c2a;
  --baseline: #383835;
  --border: rgba(255, 255, 255, 0.10);
  --accent: #5598e7;
  --series-1: #3987e5;
  --series-2: #d95926;
  --series-3: #199e70;
  --series-4: #c98500;
  --series-5: #d55181;
  --series-6: #008300;
  --series-7: #9085e9;
  --series-8: #e66767;
  --div-mid: #383835;
  --good-text: #0ca30c;
  --warn-ink: #e8b968;
  --warn-bg: #2a2212;
  --lesson-bg: #2a1717;
}
:root[data-theme="light"] {
  color-scheme: light;
  --paper: #f9f9f7;
  --surface: #fcfcfb;
  --ink: #0b0b0b;
  --ink-2: #52514e;
  --muted: #898781;
  --grid: #e1e0d9;
  --baseline: #c3c2b7;
  --border: rgba(11, 11, 11, 0.10);
  --accent: #256abf;
  --series-1: #2a78d6;
  --series-2: #eb6834;
  --series-3: #1baf7a;
  --series-4: #eda100;
  --series-5: #e87ba4;
  --series-6: #008300;
  --series-7: #4a3aa7;
  --series-8: #e34948;
  --div-mid: #f0efec;
  --good-text: #006300;
  --warn-ink: #8a5a00;
  --warn-bg: #fff6e0;
  --lesson-bg: #fdeeee;
}

.num { font-variant-numeric: tabular-nums; }
