/* Workbench design system — THE token source (WB-019, DS-FOUND).
 *
 * Extracted from the design system's canonical values: the UI/UX
 * desk's 2026-10-29 workbench design system, section 2 (colour,
 * type, shape, space from the V18 language; the motion table
 * folded into the same source). This file is the ONE source for
 * the system's tokens: motion.css and components.css consume it,
 * the motion-carrying pages link it ahead of the sheets that
 * consume it, and Inbox Triage's foundation (IT-S12) vendors
 * identical bytes. A token value changes here first and
 * propagates; a new definition of any name this source owns,
 * anywhere else in the site's sheets or authored pages, is
 * drift — a defect, found by census (scripts/tests/
 * test_design_foundation.py).
 *
 * Light-only: the system has no dark theme. The standing
 * exception, named: the four remaining pre-system pages (home,
 * finance, divorce, inbox) still define four palette names
 * (--bg, --blue, --green, and --red where the page carries it)
 * in their own local styles, later in their cascades, and those
 * govern each page's appearance until its surface story retires
 * them for this source. The register's adoption (WB-020)
 * retired its palette entire: that page defines none of this
 * source's names, and its only local definitions are four
 * aliases (--panel, --border, --text, --dim: legacy names the
 * shared motion sheet still speaks, which the source does not
 * own) pointing at this source's tokens. The census names the
 * remaining exceptions per page, so any FURTHER local
 * definition fails the battery the day it lands.
 */

:root {
  /* Colour (V18, unchanged) */
  --bg: #F5F7FA;
  --surface: #FFFFFF;
  --ink: #0F172A;
  --ink-2: #475569;
  --ink-3: #64748B;
  --line: #E7ECF3;
  /* The skeleton's neutral ground, in the bg/line family (the
   * design review's F1 token, WB-019: lavender is the band, not
   * a ground). */
  --tint: #EEF1F6;
  --blue: #2563EB;
  --blue-strong: #1D4ED8;
  --blue-soft: #EAF1FE;
  --lav: #DDE3F5;
  --green: #16A34A;
  --green-soft: #E7F6EE;
  --amber: #B45309;
  --amber-soft: #FBF3E2;
  --red: #DC2626;
  --red-soft: #FDECEC;

  /* Type. The language specifies weights and scale, not a font
   * purchase: a humanist sans in the Inter class, carried as a
   * system stack (no load, no third-party request). Hierarchy
   * rule: number > title > label, always. Counts, stamps, and
   * metrics carry tabular numerals. */
  --font: -apple-system, "Segoe UI", Roboto, "Helvetica Neue",
    Arial, sans-serif;
  --stat-size: 30px;
  --stat-weight: 600;
  --title-size: 20px;
  --title-weight: 650;
  --card-title-size: 15px;
  --card-title-weight: 600;
  --body-size: 14px;
  --label-size: 12px;
  --label-weight: 500;

  /* Shape */
  --radius-card: 14px;
  --radius-row: 10px;
  --radius-input: 10px;
  --radius-button: 10px;
  --radius-pill: 999px;
  --radius-chip: 8px;

  /* Space. The air lives between cards and sections; inside
   * data-dense rows the settled compact padding governs (the
   * density rule) — the components carry that split. */
  --space-unit: 4px;
  --gap-cards: 16px;
  --gap-sections: 24px;

  /* Shadow: the V18 layered soft pair, never a hard edge. */
  --shadow-rest: 0 1px 2px rgba(15, 23, 42, .04),
    0 8px 24px rgba(15, 23, 42, .05);
  --shadow-raised: 0 12px 32px rgba(15, 23, 42, .12);

  /* Motion (the motion layer, folded in). Settles are
   * entrance-only; true values stand in the DOM and accessible
   * text from first render; no animation changes a status or a
   * value's meaning. */
  --dur-micro: 120ms;
  --dur-entry: 220ms;
  --dur-view: 280ms;
  --stagger: 30ms;
  --stagger-cap: 8;
  --dur-chart: 600ms;
  --settle: 700ms;
  --settle-slow: 1400ms;
  --leg: 550ms;
  --journey-budget: 6s;
  --rise: 6px;
}
