/* tokens_mockup.css — ADR 0037 D2: the visual system's source of truth.
   The :root block and the body.theme-dark block below are copied BYTE FOR BYTE from Per's
   "Customer360_Agent_Dashboard_Mockup 3.html" (its <style> block, lines 10–56), copied 2026-10-05.
   Never retype, round or "improve" a value here. When Per changes the mockup, re-copy both blocks
   here AND into tests/fixtures/mockup/ in one commit (tests/test_tokens_mockup_454.py compares them).
   The app's --ins-* tokens (static/insight.css) are aliases of these. The dark block is carried,
   not switched (D7): nothing reads body.theme-dark yet. */
:root{
  /* brand constants — identical in both themes */
  --sapphire:#4D4DF0; --slate:#91BCD4; --teal:#00CFB4; --teal-d:#00A690;
  --cerulean:#00587F; --onyx:#222928; --sky:#0A9CCC; --berry:#CE0058;
  --r:10px;
  /* ---- light theme ---- */
  --bg:#F7FAFC; --surface:#fff; --surface-2:#FBFDFE; --surface-3:#F5F8FC;
  --tint:#EFF5F9; --tint-2:#F8FBFD;
  --line:#DDE7EE; --line-2:#C9D8E3; --line-3:#F2F6F8;
  --tx:#222928; --muted:#5C6B75; --muted-2:#8496A3;
  --accent-h:#4D4DF0; --stat:#00A690; --chip-tx:#00587F; --hl:#E4E4FD;
  --link:#0A9CCC; --link-h:#00587F;
  --topbar:#222928; --topbar-line:#000; --topbar-div:#3A4342;
  --ctl:#2E3635; --ctl-line:#3F4948; --ctl-tx:#C8D3DA;
  --ok-bg:#E6F7F4; --ok-line:#B8E8E0; --ok-tx:#00795F;
  --warn-bg:#FFF7E6; --warn-line:#F2E0B8; --warn-tx:#8A6100;
  --neutral-bg:#F3F5F6; --neutral-line:#DDE3E6; --neutral-tx:#6B7A82;
  --info-bg:#EEF0FE; --info-line:#CFD3FA; --info-tx:#3B3BC4;
  --sky-bg:#E9F5FA; --sky-line:#C6E3EF; --sky-tx:#00587F;
  --berry-bg:#FFF0F6; --berry-line:#F7CEDF; --berry-tx:#A8004A;
  --chart-grid:#EDF3F7; --chart-tx:#5C6B75; --track:#EDF3F7;
  --dash:#C9D8E3; --dash-2:#D6E0E7;
  --shadow:0 1px 2px rgba(34,41,40,.06), 0 8px 24px rgba(34,41,40,.05);
  --shadow-lg:0 18px 48px rgba(34,41,40,.2);
  --focus:rgba(77,77,240,.12);
}
body.theme-dark{
  --bg:#14181A; --surface:#1E2426; --surface-2:#1A2022; --surface-3:#262E30;
  --tint:#232B2D; --tint-2:#1C2325;
  --line:#2E3739; --line-2:#3D4749; --line-3:#262E30;
  --tx:#E9EFF1; --muted:#A9B8BF; --muted-2:#7F9099;
  --accent-h:#00CFB4; --stat:#00CFB4; --chip-tx:#7FD8EF; --hl:#3C3C93;
  --link:#3ACAFB; --link-h:#8CDFFD;
  --topbar:#0D1112; --topbar-line:#000; --topbar-div:#2B3436;
  --ctl:#222A2C; --ctl-line:#384243; --ctl-tx:#C8D3DA;
  --ok-bg:#123029; --ok-line:#1F4E44; --ok-tx:#45DCC0;
  --warn-bg:#382C11; --warn-line:#5B4820; --warn-tx:#E8B855;
  --neutral-bg:#262E30; --neutral-line:#3A4446; --neutral-tx:#A0B0B7;
  --info-bg:#1F2050; --info-line:#343675; --info-tx:#AFAFFC;
  --sky-bg:#0F303C; --sky-line:#1D4C5D; --sky-tx:#63CBEA;
  --berry-bg:#3A0F22; --berry-line:#5F1C38; --berry-tx:#FF84B1;
  --chart-grid:#2A3335; --chart-tx:#93A2AC; --track:#262E30;
  --dash:#3B4648; --dash-2:#3B4648;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 24px rgba(0,0,0,.32);
  --shadow-lg:0 18px 48px rgba(0,0,0,.55);
  --focus:rgba(0,207,180,.18);
}
