/* Light-only since 2026-08-14: the deck shipped dark-first with a light theme
   toggled by js/theme.js, then dropped dark mode entirely. The values below are
   the former .theme-light set promoted to the defaults; the dark set is gone
   (git has it). Contrast notes assume a white/near-white ground. */
:root {
  /* backgrounds — elevation is white-on-gray */
  --bg-0: #eef1f5;
  --bg-1: #ffffff;
  --bg-2: #e7ebf2;
  --bg-3: #d9e0ea;

  /* borders */
  --border-1: #b6c0d0;
  --border-2: #8fa0b7;

  /* foreground — values chosen to clear WCAG on white at body sizes.
     fg-1 carries body text; fg-2 captions/footnotes; fg-3 incidental. */
  --fg-0: #101828;
  --fg-1: #2b3648;
  --fg-2: #3f4a5c;
  --fg-3: #5b6575;

  /* accent — saturated values used for gradients/strokes/decoration only.
     Use the -text variants below whenever the color is rendering as text.
     Heading gradient gets its own brighter stops: h1/h2 are large text (3:1
     floor), so 600-weights (6.3/4.6 on white) keep the brand vivid where the
     AAA inline-text variants would read navy→maroon. */
  --accent-1: #6366f1;
  --accent-2: #ec4899;
  --accent-1-text: #3730a3;
  --accent-2-text: #9d174d;
  --accent-glow: rgba(99, 102, 241, 0.22);
  --grad: linear-gradient(135deg, var(--accent-1), var(--accent-2));
  --grad-text: linear-gradient(135deg, #4f46e5, #db2777);

  /* semantic — 4.5:1 is a floor, not a target: past ~8:1 on white every hue
     collapses toward black. ok sits at 5.0:1 and still reads green. */
  --ok: #15803d;
  --warn: #b45309;
  --err: #dc2626;
  --err-text: #991b1b;
  --info: #0e7490;

  /* syntax — ≥4.5:1 on white AND on the light .ex-code panel (see anchors.css);
     700/800-weights hold their hue where 900s would read near-black */
  --syntax-blue: #1d4ed8;
  --syntax-teal: #115e59;
  --syntax-green: #166534;
  --syntax-purple: #7e22ce;
  --syntax-yellow: #854d0e;
  --syntax-orange: #9a3412;

  /* per-activity accent colors — one perceptual weight across the set
     (OKLCH L≈49-56, 4.5-7:1 on white) so the hue coding stays legible. */
  --act-eipl:   #6d28d9;
  --act-prompt: #1d4ed8;
  --act-probe:  #047857;
  --act-refute: #be123c;
  --act-decomp: #b45309;
  --act-erd:    #0e7490;

  /* type scale (relative to 1920x1080 stage) */
  --t-h1: 104px;
  --t-h2: 72px;
  --t-h3: 40px;
  --t-h4: 36px;
  --t-body: 28px;
  --t-caption: 22px;
  --t-mono: 26px;
  --t-label: 16px;

  /* spacing */
  --s-1: 4px;
  --s-2: 8px;
  --s-3: 16px;
  --s-4: 24px;
  --s-5: 32px;
  --s-6: 48px;
  --s-7: 64px;
  --s-8: 96px;
  --s-9: 128px;
  --s-10: 192px;

  /* radii */
  --r-sm: 8px;
  --r-md: 12px;
  --r-lg: 16px;
  --r-pill: 999px;

  /* timing */
  --t-fast: 180ms;
  --t-med: 240ms;
  --t-slow: 360ms;
  --ease: cubic-bezier(0.22, 0.61, 0.36, 1);
}
