/* Board v2 design tokens — THE single source of color/type/spacing (spec §1).
   One language, two grounds: light = Field Office paper, dark = Site Ledger ink.
   Components style through tokens ONLY; no hex values outside this file. */

:root {
  /* ground + surfaces (light) */
  --bg: #f6f7f5;
  --panel: #ffffff;
  --panel2: #eef1ee;
  --line: #dde2e0;
  --rule: #c8d0cc;

  /* text */
  --tx: #182230;
  --mut: #5b6774;
  --faint: #676e77;

  /* brand + links */
  --gold: #b8860e; --gold-ink: #88630a;            /* brand gold, darkened for paper contrast */
  --gold-soft: #f4ead0;
  --link: #1f5fa8;            /* blueprint blue on paper */
  --link-under: #b9cee6;

  /* semantic (separate from accent) */
  --ok: #1d7b3a;
  --warn: #9b5c0e;
  --bad: #ba382d;
  --ok-soft: #e2f2e7;  --warn-soft: #f6ecd9;  --bad-soft: #f7e2df;

  /* project chips — stable hues, both themes tune only lightness */
  --chip-parks: #2e7d5b;      /* Mamaroneck Parks — park green */
  --chip-yorktown: #8a4fb0;   /* Yorktown DPW — violet */
  --chip-ardsley: #b3701a;    /* Ardsley HS — ochre */
  --chip-office: #4a6b8a;     /* 210 Marble / office — steel */
  --chip-caputo: #b5546e;     /* Caputo Center (Ossining) — rose */
  --chip-firehouse: #c0492e;  /* Firehouse YFD 8 — fire red */
  --chip-tx: #ffffff;

  /* type */
  --font-display: Rockwell, 'Roboto Slab', ui-serif, Georgia, serif;
  --font-body: system-ui, 'Segoe UI', Roboto, sans-serif;
  --font-data: ui-monospace, Consolas, 'Cascadia Mono', monospace;

  /* scale + rhythm */
  --fs-0: 12px; --fs-1: 13.5px; --fs-2: 15px; --fs-3: 17px; --fs-4: 21px; --fs-5: 27px;
  --lh: 1.55;
  --radius: 7px; --radius-lg: 10px;
  --gap-1: 6px; --gap-2: 10px; --gap-3: 16px; --gap-4: 24px;
  --shadow: 0 1px 3px rgba(24,34,48,.07);
  --shadow-pop: 0 10px 34px rgba(24,34,48,.18);
}

/* ---- dark ground (OS preference) ---- */
@media (prefers-color-scheme: dark) {
  :root {
    --bg: #0c0f14; --panel: #141922; --panel2: #181f2a;
    --line: #242c38; --rule: #2c3542;
    --tx: #e8edf4; --mut: #8b96a5; --faint: #7f8892;
    --gold: #d4a72c; --gold-ink: #d4a72c; --gold-soft: #33270e;
    --link: #6cb1ff; --link-under: #3d5a7d;
    --ok: #3fb950; --warn: #d29922; --bad: #f0564a;
    --ok-soft: #10281a; --warn-soft: #2c220c; --bad-soft: #331410;
    --chip-parks: #37936c; --chip-yorktown: #a06cc4; --chip-ardsley: #cf8a2e; --chip-office: #5f86ab; --chip-caputo: #c56d84; --chip-firehouse: #d05c40;
    --shadow: 0 1px 3px rgba(0,0,0,.4);
    --shadow-pop: 0 12px 40px rgba(0,0,0,.55);
  }
}

/* ---- explicit user choice beats the OS, both directions ---- */
:root[data-theme="dark"] {
  --bg: #0c0f14; --panel: #141922; --panel2: #181f2a;
  --line: #242c38; --rule: #2c3542;
  --tx: #e8edf4; --mut: #8b96a5; --faint: #7f8892;
  --gold: #d4a72c; --gold-ink: #d4a72c; --gold-soft: #33270e;
  --link: #6cb1ff; --link-under: #3d5a7d;
  --ok: #3fb950; --warn: #d29922; --bad: #f0564a;
  --ok-soft: #10281a; --warn-soft: #2c220c; --bad-soft: #331410;
  --chip-parks: #37936c; --chip-yorktown: #a06cc4; --chip-ardsley: #cf8a2e; --chip-office: #5f86ab; --chip-caputo: #c56d84; --chip-firehouse: #d05c40;
  --shadow: 0 1px 3px rgba(0,0,0,.4);
  --shadow-pop: 0 12px 40px rgba(0,0,0,.55);
}
:root[data-theme="light"] {
  --bg: #f6f7f5; --panel: #ffffff; --panel2: #eef1ee;
  --line: #dde2e0; --rule: #c8d0cc;
  --tx: #182230; --mut: #5b6774; --faint: #676e77;
  --gold: #b8860e; --gold-ink: #88630a; --gold-soft: #f4ead0;
  --link: #1f5fa8; --link-under: #b9cee6;
  --ok: #1d7b3a; --warn: #9b5c0e; --bad: #ba382d;
  --ok-soft: #e2f2e7; --warn-soft: #f6ecd9; --bad-soft: #f7e2df;
  --chip-parks: #2e7d5b; --chip-yorktown: #8a4fb0; --chip-ardsley: #b3701a; --chip-office: #4a6b8a; --chip-caputo: #b5546e; --chip-firehouse: #c0492e;
  --shadow: 0 1px 3px rgba(24,34,48,.07);
  --shadow-pop: 0 10px 34px rgba(24,34,48,.18);
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
