/* Kismet Signal — design tokens, v2 (dark)
   SINGLE SOURCE OF TRUTH.
   Nothing else in the app declares a colour, size, tracking, radius or duration.
   Generated from the Kismet Signal design system, section 08. */

:root {
  color-scheme: dark;

  /* ground — four surfaces, separated by hairlines rather than by contrast */
  --ground:          #0a0b0c;
  --surface:         #121315;
  --surface-raised:  #1a1c1f;
  --surface-marked:  #1c1a14;   /* open / jumped-to row. warm: the mark belongs to demand */
  --rule:            #2b2e32;
  --rule-soft:       #1e2023;

  /* ink — three, each with a floor. read it / read it second / do not read it.
     measured on --surface-raised, the lightest surface text sits on:
     --ink 16.6:1   --ink-muted 9.7:1   --ink-faint 5.4:1   all clear AA. */
  --ink:             #edeef0;
  --ink-muted:       #bcc2c8;
  --ink-faint:       #8b9197;

  /* signal — one meaning each, app-wide. never used for interaction state */
  --demand:          #d2b083;
  --fit:             #8fb6dd;
  --pos:             #7ec48d;
  --neg:             #dd8a6b;
  --demand-rgb:      210,176,131;   /* the one triple; score ramps read it at alpha */
  --ink-on-demand:   #0a0b0c;       /* ink for demand fills at alpha >= .5 */
  --scrim:           rgba(0,0,0,.72);

  /* the demand chart's two trend lines. read by BOTH the stroke and its legend swatch */
  --trend-web:       #edeef0;
  --trend-yt:        #4fc3ff;

  /* the demand chart's twelve language bands, ordered by share (demand.js BANDS) – carried
     from v1, the handoff omits them */
  --band-1: rgba(205,180,136,.92); --band-2: rgba(205,180,136,.62);
  --band-3: rgba(168,200,232,.62); --band-4: rgba(158,212,140,.55);
  --band-5: rgba(224,160,135,.55); --band-6: rgba(204,204,204,.42);
  --band-7: rgba(196,164,208,.55); --band-8: rgba(232,206,140,.50);
  --band-9: rgba(140,196,196,.55); --band-10: rgba(224,176,196,.48);
  --band-11: rgba(168,184,224,.48); --band-12: rgba(180,204,152,.45);

  /* type — five roles. a sixth step requires a sixth kind of text */
  --face:            'IBM Plex Sans', system-ui, sans-serif;
  --face-label:      'IBM Plex Sans Condensed', sans-serif;
  --face-mono:       'IBM Plex Mono', monospace;
  --face-wordmark:   'Bebas Neue', sans-serif;   /* the app-header wordmark ONLY. never a type step */

  --type-micro:      11px;   --track-micro:   .09em;   /* uppercase. names a value */
  --type-data:       13px;   --track-data:    0;       /* every cell, chip, control */
  --type-body:       16px;   --track-body:    0;       /* prose read in sentences */
  --type-section:    20px;   --track-section: .06em;   /* the one heading rank */
  --type-numeral:    34px;   --track-numeral: -.01em;  /* gauges and headline figures */

  --weight-text:     400;
  --weight-label:    500;
  --weight-data:     600;

  /* space — six rungs, three role aliases for the values that kept being re-decided */
  --s-1: 4px;  --s-2: 8px;  --s-3: 12px;
  --s-4: 16px; --s-5: 24px; --s-6: 40px;
  --pad-cell:  8px 12px;
  --pad-card:  16px;
  --pad-pane:  24px;

  /* radius — by kind of thing, not by size */
  --r-media:   2px;
  --r-control: 4px;
  --r-surface: 8px;
  --r-pill:    999px;   /* a capsule at any height */

  /* state */
  --off:        .35;    /* the one disabled treatment */
  --dur-state:  120ms;  /* colour and opacity only */
  --dur-reveal: 200ms;

  /* spec-driven: the slate renderer emits these per table */
  --tracks:    1fr;
  --slate-min: 0;
}

/* LIGHT – retuned 2026-09-02 (slice 0's port was mechanical; this is that named follow-up).
   Every value is v1's light palette under its v2 name; --ink-muted / --ink-faint are computed
   to the dark inks' floors on --surface-raised. The retune pass and its ledger:
   docs/superpowers/specs/2026-09-01-design-system-v2-landing-design.md. */
:root[data-theme="light"] {
  color-scheme: light;

  --ground:          #fff;
  --surface:         #fbfaf8;
  --surface-raised:  #f0ede7;
  --surface-marked:  #faf3e0;
  --rule:            #d9d4ca;
  --rule-soft:       #eae6de;

  --ink:             #000;
  --ink-muted:       #3c3a36;   /* 9.7:1 on #f0ede7 */
  --ink-faint:       #62605c;   /* 5.4:1 on #f0ede7 */

  /* demand and pos were 4.29:1 / 4.34:1 on --surface-raised, under the 4.5:1 AA floor (fit
     4.69:1 and neg 5.05:1 already cleared it). Same hue/saturation, lightness stepped down in
     small increments until the first value that clears 4.5:1 on --surface-raised, computed with
     the WCAG 2.x relative-luminance formula (script, not eyeballed) — see the retune ledger. */
  --demand:          #856731;   /* was #8a6a33 — 4.29:1 -> 4.51:1 on --surface-raised */
  --fit:             #2f6ca8;
  --pos:             #3e7932;   /* was #3f7c33 — 4.34:1 -> 4.51:1 on --surface-raised */
  --neg:             #a34a24;
  --demand-rgb:      133,103,49;
  --ink-on-demand:   #000;       /* DARK in both themes: the heat ramp tops out at alpha .8, where over a light
                                    surface black clears 6.5:1 and white reads 3.2:1 (measured 2026-09-01) */
  --scrim:           rgba(0,0,0,.45);

  --trend-web:       #000;
  --trend-yt:        #0b6fa4;

  --band-1: #a8843c; --band-2: #c9a86a;
  --band-3: #4a87c4; --band-4: #4f9a45;
  --band-5: #c2603a; --band-6: #8a8a8a;
  --band-7: #8f5fa8; --band-8: #c9a227;
  --band-9: #3f9a9a; --band-10: #c25f86;
  --band-11: #6072c0; --band-12: #7a9a45;
}

/* The default, declared once, never restated (law 06). */
body {
  background: var(--ground);
  color: var(--ink);
  font-family: var(--face);
  font-size: var(--type-data);
  font-weight: var(--weight-text);
  line-height: 1.5;
}
