/* Good Bunny design tokens: the single source (HANDOFF 2026-10-11 §1; brand-goodbunny/final/brand.md §2).
   Light only (§1e: the dark scheme is retired; blue and sky are fixed surfaces). Nothing outside this file mints a colour, size, radius, line or duration.
   Fonts, self-hosted in /fonts/ (Latin only, 74.5 KB together):
   space-grotesk.woff2 (25.9 KB) = hub/public/assets/fonts/spacegrotesk.woff2 (same file, keeps tnum)
   heebo.woff2 (18.9 KB) = brand heebo.ttf -> fonttools varLib.instancer wght=400:700 -> pyftsubset Latin-1
   space-mono-400.woff2 (17.1 KB) = Space Mono Regular (OFL) -> pyftsubset Latin-1 + dashes, quotes, ellipsis
   space-mono-700.woff2 (12.7 KB) = Space Mono Bold (OFL) -> pyftsubset ASCII + nbsp + ellipsis (ledger values and versions carry lowercase, so the brief's digits-and-capitals subset was too small)
   "Space Grotesk Fallback" is Arial metric-matched to Space Grotesk (xAvgCharWidth 559/1000 vs 904/2048) so the h1 keeps its line breaks while the file loads. */
@font-face{font-family:"Space Grotesk";src:url("/fonts/space-grotesk.woff2") format("woff2");font-weight:300 700;font-display:swap}
@font-face{font-family:"Space Grotesk Fallback";src:local("Arial");size-adjust:126.6%;ascent-override:77.7%;descent-override:23.1%;line-gap-override:0%}
@font-face{font-family:"Heebo";src:url("/fonts/heebo.woff2") format("woff2");font-weight:400 700;font-display:swap}
@font-face{font-family:"Space Mono";src:url("/fonts/space-mono-400.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Space Mono";src:url("/fonts/space-mono-700.woff2") format("woff2");font-weight:700;font-display:swap}

:root{
  color-scheme:light;
  --canvas:#F0F3FF;--surface:#FFFFFF;
  --ink:#152347;--muted:#505E7D;
  --action:#234AC7;--action-hover:#1B3BA6;--on-action:#FFFFFF;
  --tint:#E6ECFF;--hairline:#D5DCF0;--field-line:#7C88A8;
  --success:#166F47;--caution:#8A5A00;--error:#C62D12;
  --band:#152347;--on-band:#F0F3FF;--band-muted:#9AA8CC;
  --mark:#234AC7;--halo:#FFFFFF;
  --hatch:repeating-linear-gradient(135deg,transparent 0 7px,var(--hairline) 7px 8px);
  /* §1c new surfaces and lines */
  --sky:#B5C7FF;
  --band-raised:#283863;
  --line-inv:rgba(255,255,255,.12);
  --line-inv-hover:rgba(255,255,255,.2);
  --on-action-soft:rgba(255,255,255,.72);
  --ink-soft:rgba(21,35,71,.78);
  --fig-sketch:var(--band-muted);
  --dots:radial-gradient(circle,var(--hairline) 1px,transparent 1.4px);
  --dots-ink:radial-gradient(circle,rgba(21,35,71,.26) 1px,transparent 1.4px);
  --dots-size:var(--sp-5);
  --shadow-rail:0 calc(8 * var(--u)) calc(24 * var(--u)) rgba(0,0,0,.28);

  --display:"Space Grotesk","Space Grotesk Fallback",ui-sans-serif,system-ui,sans-serif;
  --body:"Heebo",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"Space Mono",ui-monospace,SFMono-Regular,Menlo,monospace;

  --fs-display:clamp(50px,6.4vw,92px);
  --fs-price:clamp(64px,5vw,72px);
  --fs-h1:clamp(40px,5vw,64px);
  --fs-h2:clamp(32px,3.6vw,48px);
  --fs-h3:24px;
  --fs-title:clamp(28px,2.25vw,32px);
  --fs-title-s:clamp(24px,2vw,28px);
  --fs-lead:clamp(18px,1.4vw,20px);
  --fs-body:17px;
  --fs-prose:17px;
  --fs-ui:16px;
  --fs-small:14px;
  --fs-eyebrow:13px;
  --fs-label:12px;
  --fs-mono-s:11px;
  --lh-tight:1;
  --lh-heading:1.05;
  --lh-title:1.15;
  --lh-body:1.5;
  --lh-prose:1.65;
  --lh-small:1.45;
  --tr-display:-.04em;
  --tr-h2:-.03em;
  --tr-h3:-.02em;
  --tr-label:.08em;
  --tr-mono:.04em;

  --ease:cubic-bezier(.2,.8,.2,1);
  --t-fast:120ms;--t-base:200ms;
  --t-mark:240ms;--t-fill:300ms;--t-draw:700ms;--t-sweep:800ms;--stagger:100ms;
  --scene-zoom:1.3;
  --scene-t-zoom:600ms;--scene-t-move:900ms;--scene-t-hop:400ms;--scene-end-fs:80px;
  --mark-in:1.14;

  --r-s:4px;--r-m:10px;--r-l:12px;--r-full:999px;

  --sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;
  --sp-6:32px;--sp-7:48px;--sp-8:64px;--sp-9:96px;--sp-10:128px;

  --edge:clamp(16px,2.8vw,40px);
  --max:1240px;
  --measure:68ch;
  --measure-lead:34em;
  --measure-narrow:720px;
  --header-h:80px;
  --control-h:48px;
  --control-h-s:40px;
  --control-h-l:56px;
  --hit:44px;
  --line:1px;
  --line-mark:1.5px;
  --line-bold:2px;
  --bar:3px;
  --stroke-fig:1.75px;
  --sec:120px;
  --pin:28px;
  --pin-s:20px;
  --cm-len:16px;
  --cm-gap:8px;
  --cm-len-l:48px;
  --cm-gap-l:16px;
  --handle:8px;
  --u-hero:2.25px;
  --u-giant:5px;
  --plinth-h:580px;
  --plinth-w:472px;
  --fig-h:252px;
  --fig-h-404:320px;
  --ico-w:56px;
  --ico-h:48px;
  --lockup-h:28px;
  --lockup-h-foot:22px;
  --log-margin:200px;
  --log-tag:96px;
  --stage-w:1280px;--stage-h:720px;--stage-ar:16 / 9;
  --stage-ph-w:420px;--stage-ph-h:640px;
  /* Kept for the pages outside this design (§1e: a token goes only when no surviving page uses it): /how-we-test/ counters and /about/ photo (oct30 release). */
  --fs-figure:clamp(96px,12vw,176px);
  --fs-figure-s:clamp(48px,5vw,72px);
  --lh-h3:1.25;
  --photo-w:320px;
}
@media (max-width:1180px){
  :root{--u-giant:3.5px}
}
@media (max-width:860px){
  :root{--fs-body:16px;--header-h:64px;--sec:72px;--cm-len:8px;--cm-gap:4px;--cm-len-l:24px;--cm-gap-l:8px;--u-hero:1.75px;--u-giant:2.6px;--plinth-h:440px;--fig-h:236px;--fig-h-404:236px;--lockup-h:24px;--log-margin:4px}
}
/* Reduced motion, once, here: every duration token collapses, so every transition ends instantly. Keyframe animations live inside no-preference queries in site.css. */
@media (prefers-reduced-motion:reduce){
  :root{--t-fast:0.01ms;--t-base:0.01ms;--t-mark:0.01ms;--t-fill:0.01ms;--t-draw:0.01ms;--t-sweep:0.01ms;--stagger:0.01ms}
}
