/* ============================================================
   TAD & NO SONS — design tokens
   Single source of truth: docs/style-bible.md §2 (ratified 2026-07-04)
   The deck owns two structural inks. Yellow + blue are COURT-FIGURE
   accents only — they exist inside generated plates, never as CSS
   fields or chrome. If you are about to use --accent-* on a surface,
   stop: that is a Style Bible violation.
   ============================================================ */

:root {
  /* --- the card (physical-object law: stock never inverts) --- */
  --stock: #F6F3EA;   /* bright card stock — reads white, whisper warm; never #FFF */
  --ink:   #1A1512;   /* bold black keyline + black suits; never #000 */
  --red:   #D62A2C;   /* flat litho red — red suits + court red; never #F00 */

  /* --- court-figure accents (plate-internal only; see header) --- */
  --accent-yellow: #F2C20E;
  --accent-blue:   #2A54A6;

  /* --- the four chapter worlds: two-ink field inversion ---
     I   spades / code      : black-on-white (bright field, black accents)
     II  hearts / design    : red-on-white  (bright field, red accents)
     III clubs / motion·3D  : white-on-black (dark field)
     IV  diamonds / growth  : white-on-red  (bold field)
     Fields invert; cards never do. */
  --field-i:   var(--stock);
  --field-ii:  var(--stock);
  --field-iii: var(--ink);
  --field-iv:  var(--red);
  --on-field-i:   var(--ink);
  --on-field-ii:  var(--red);
  --on-field-iii: var(--stock);
  --on-field-iv:  var(--stock);

  /* --- the imprint world (ABOUT) — a deliberate FIFTH field, R2 2026-08-08 ---
     Dark brick red: the same litho red pulled down into the ink, i.e. what
     --red looks like once it has soaked the stock. NOT a new brand colour —
     it is a darker state of a pigment the deck already owns, which is why it
     reads as another room in the same building rather than another building.
     Structural inks unchanged; --brick is a FIELD only, never an ink, never
     chrome, never inside a plate (Style Bible §2). Contrast on --stock:
     10.9:1 — information stays legible at body size. */
  --brick:          #62201A;
  --field-brick:    var(--brick);
  --on-field-brick: var(--stock);

  /* --- authored easing set (CLAUDE.md §4.4: no defaults, one accent) --- */
  --ease-snap:    cubic-bezier(0.16, 1, 0.3, 1);      /* the card snap — signature */
  --ease-deal:    cubic-bezier(0.7, 0, 0.18, 1);      /* deals / travels */
  --ease-breathe: cubic-bezier(0.37, 0, 0.63, 1);     /* living-interiors sine */
  --ease-exit:    cubic-bezier(0.55, 0, 0.85, 0.36);  /* cuts / swallows */

  /* --- duration scale (composed, never one-speed) --- */
  --t-flick: 120ms;
  --t-turn:  650ms;
  --t-deal:  900ms;
  --t-scene: 1400ms;

  /* --- card geometry --- */
  --card-ratio: 2 / 3;             /* plate aspect (3392×5056 masters) */
  --card-radius: 4.2%;             /* corner radius as % of card width */

  /* --- type scale (barbell: whisper chrome vs display plate lettering) --- */
  --type-chrome: clamp(11px, 0.72vw, 13px);   /* engraved border captions */
  --type-body:   clamp(15px, 1.05vw, 18px);
  --type-deal:   clamp(40px, 7vw, 96px);      /* dealt copy lines */
  --type-plate:  clamp(72px, 15vw, 240px);    /* display / plate lettering */

  /* --- the clearance law: display type and cards NEVER touch --- */
  --clear: 4vmin;

  /* --- the display voice (R3 2026-10-21) — the menu's ABOUT / CONTACT words
     and the RHYTHM columns read these three, so the falling word can never
     drift from the menu word. Rendering (antialiased) is inherited from body. */
  --display-face:   'Instrument Serif', Georgia, serif;
  --display-weight: 400;
  --display-track:  .01em;

  /* --- chrome voice (the printer's imprint; two candidate cuts, body class picks) --- */
  --chrome-font: 'Instrument Serif', Georgia, serif;
  --chrome-track: 0.18em;
  --chrome-size: var(--type-chrome);

  /* --- z theatre --- */
  --z-table: 0;
  --z-card: 10;
  --z-chrome: 100;
  --z-cursor: 1000;
}
