/* tokens — :root design tokens (colors, spacing, type) */
  :root {
    color-scheme: dark;

    /* Brand (blue) */
    --brand-2: #bfdbfe;
    --brand-5: #3b82f6;
    --brand-6: #2563eb;
    --brand-7: #1d4ed8;

    /* Accent (green) */
    --accent-5: #22B34A;
    --accent-6: #1ea342;

    /* Surfaces — IM admin parity */
    --bg: #1a1819;
    --surface: #2C292A;
    --panel: rgba(255, 255, 255, 0.025);
    --panel-border: rgba(255, 255, 255, 0.07);
    --row-divider: rgba(255, 255, 255, 0.04);
    --header-pill-bg: #2C292A;

    /* Text */
    --text: #F5F5F5;
    --muted: rgba(255,255,255,0.50);
    --muted-strong: rgba(255,255,255,0.72);

    /* Chart series — a categorical palette, fixed order, validated as a SEQUENCE
       against the dark surface (dataviz five checks: lightness band, chroma
       floor, ALL-pairs CVD ΔE, normal-vision ΔE, contrast). Measured on #2C292A:
       all five PASS, worst CVD pair 10.5 (deutan), worst normal-vision pair 15.8,
       every slot over 3:1.

       All four are BESPOKE, deliberately not aliases. The earlier palette reused
       --brand-5 and --red, which pinned two slots at OKLCH chroma 0.19 and 0.22
       while the teal sat at 0.10: the blue and the amber then read as a vivid vs
       muddy clash rather than a pair. Every slot now sits at chroma 0.135–0.163
       and lightness 0.57–0.67, so no line shouts over another.

       Do NOT re-alias --red here: status colours are reserved for status, and
       --red measures 2.98:1 against the surface — a contrast WARN this palette
       clears. Do NOT chase a cooler fourth hue either: with blue, teal and red
       taken, every violet that still reads as violet collapses to normal-vision
       ΔE 11–14 against the blue, a hard FAIL. Warm is what the remaining
       perceptual space allows; the fix was the chroma, not the hue. */
    --series-messages: #4a7ed0;
    --series-ratings: #0e9c8c;
    --series-reports: #c6483f;
    --series-review: #c08a10;

    /* Status */
    --accent: var(--brand-6);
    --accent-2: var(--accent-5);
    --green: #22B34A;
    --amber: #F97316;
    --red: #dc2626;

    /* Borders */
    --border: rgba(255,255,255,0.12);
    --divider: rgba(255,255,255,0.08);

    /* Shadows */
    --shadow: 0 24px 48px rgba(15,15,15,0.32);

    /* Header geometry (DESIGN_SYSTEM.md) */
    --header-h: 52px;
    --header-btn-w: 180px;

    /* Radius */
    --radius-sm: 4px;
    --radius-md: 8px;
    /* Shared by .filter-input and button.bm-btn so the two can never drift. */
    --control-h: 32px;
    --radius-lg: 12px;

    /* Spacing */
    --space-xs: 6px;
    --space-sm: 12px;
    --space-md: 16px;
    --space-lg: 24px;

    /* Font stacks */
    --font-ui: 'Helvetica Neue', Arial, Helvetica, sans-serif;
    --font-title: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
    --font-mono: 'JetBrains Mono', 'Fira Code', monospace;

    /* Control typography — ONE size for all interactive controls (buttons,
       selects, chips-as-buttons) and one for their sub-labels/carets.
       Headings and body text keep their own scale. */
    --font-control: 12px;
    --font-control-sm: 11px;
  }
