/* Jobber — design tokens
   Ported verbatim from jobber.html :root (base palette + owner's Excel
   palette used by the .wt weekly grid) plus the font stacks. Nothing in
   this file renders anything — it only defines custom properties consumed
   by app.css.

   ===== BRAND REBRAND 2026-07-31 (wave38 item 13): indigo -> Navillus blue =====
   The whole brand family (--accent, --accent-hover, --accent-soft, --accent-deep,
   --accent-ink, --accent-rgb, --accent-soft-rgb, --highlight-ring, --flash-bg,
   --daygrp-today-bg) moved from indigo #4F46E5 to Navillus blue #045CB4 — the
   corporate primary, hue 210°, confirmed against navillus-public-website
   BRAND.md / shared.css. Every value below is a step on ONE hue-210 ramp
   (hsl(210, 85-96%, L)); the light ramp runs deep, the dark ramp runs lifted —
   they are NOT the same numbers, because #045CB4 on a near-black surface is a
   3:1 colour and the dark theme needs 4.5:1 out of the same slot.

   Two rules the next editor must not break:
   1. --accent is DOUBLE-BOOKED in dark mode: it is a button FILL under white
      --onaccent text (>=4.5:1 wanted) AND the focus-ring/border colour against
      --canvas (>=3:1 wanted). That pins dark --accent's relative luminance into
      the band 0.176 .. 0.183. #1275D9 (0.1786) sits mid-band: white-on-fill
      4.59:1, ring-on-canvas 3.03:1. Move it and one of the two breaks.
   2. --accent alone never clears 4.5:1 as TEXT on dark surfaces (3.03-3.99:1) —
      that is what --accent-ink is for, exactly as under the old indigo. See the
      step-up list in app.css §"Dark-mode accent-as-TEXT".

   The status blue --review (#2F6FB0) is the SAME HUE as the brand now (210°).
   They are separated by chroma and depth only: brand = vivid (S~96) and deep,
   review = muted (S~58) and mid. Do not desaturate the brand ramp or the two
   families collapse into one. Full measured table: ITEM-13-rebrand.md. */

:root{
  --bg:#EEF1F5; --surface:#FFFFFF; --sidebar:#16202E; --sidebar-2:#1E2B3C;
  --ink:#182230; --muted:#6B7686; --faint:#96A0AD; --line:#E2E7ED; --line-strong:#CDD5DE;
  --accent:#045CB4; --accent-hover:#046BD2; --accent-soft:#D0E5FB;
  --ok:#1F9D6B; --ok-bg:#E7F5EE; --review:#2F6FB0; --review-bg:#E9F1F9;
  --attn:#CF8A12; --attn-bg:#FBF1DB; --rej:#C64232; --rej-bg:#FBE8E5;
  --ps-ink:#1246A3;   /* print-sheets: the app's own 'pen' on the digital replica */

  /* owner's Excel palette (Timebelt demo.xlsx) — the weekly .wt grid renders in these */
  --xl-navy:#1F3864; --xl-head:#2E5496; --xl-amber:#B26B00; --xl-zebra:#E8EEF7;
  --xl-otbg:#FFF3E6; --xl-ottx:#843C0C; --xl-add:#F2F2F2;

  /* semantic tokens absorbing literals that used to be hardcoded per call-site */
  --surface-2:#F6F8FA; --canvas:#F1F4F7;
  --ondark-1:#C7D0DB; --ondark-2:#AEB9C6; --ondark-3:#9AA6B4; --ondark-hover:#E7ECF2; --ondark-strong:#D5DCE4;
  --onaccent:#FFFFFF; --accent-deep:#02386E; --accent-ink:#024382;
  --code-bg:#EDF2FA; --code-border:#C9D6EA; --uncoded-bg:#F4F6F8; --attn-border:#EBD9AE; --review-hover:#265E96;
  --avatar-bg:#33445A; --avatar-bg-hover:#3E5169;
  --daygrp-border:#D3DFEC; --daygrp-bg:#EDF3FA; --daygrp-today-bg:#E2F0FD;
  --highlight-ring:#B4D6F9; --xl-faint:#AEB8C4; --xl-ot-faint:#D8BC9C;
  --wt-foot-bg:#EEF2F7; --flash-bg:#C5E0FC; --track-bg:#EAEEF2;
  --tag-bg:#EEF2F6; --tag-ink:#516074;
  --dchip-ok-ink:#0F6B48; --dchip-review-ink:#215489; --dchip-attn-ink:#8A5B05; --dchip-rej-ink:#9C3123; --dchip-pay-ink:#7A4A00;
  --shadow-rgb:20,32,46; --accent-rgb:4,92,180; --accent-soft-rgb:208,229,251; --surface-rgb:255,255,255; --rej-rgb:198,66,50;

  /* wave38 item 14 — the whatsnew welcome-pane hero gradient. This is the
     TARGET Navillus brand blue (#045CB4 / #046BD2, confirmed against
     navillus-public-website/BRAND.md — see the wave38 UI brand map),
     deliberately its OWN token pair rather than --accent. (Item 13 has since
     landed the rebrand, so in LIGHT mode these now equal --accent/--accent-hover
     by construction; they stay a separate pair because DARK --accent is the
     lifted #1275D9 and this hero must not follow it.) Same value
     in both themes on purpose — it is a fixed brand-colour hero panel, not
     part of the surrounding chrome, and white text stays >6:1 against either
     stop in both themes (recomputed alongside the rebrand's own ramp). */
  --wn-welcome-1:#045CB4; --wn-welcome-2:#046BD2;

  --ui:"Liberation Sans","DejaVu Sans",Arial,sans-serif;
  --cond:"DejaVu Sans Condensed","Liberation Sans",Arial,sans-serif;
  --mono:"DejaVu Sans Mono",Menlo,monospace;
}

/* ===== dark theme override — same custom-property names, dark values.
   Sidebar/rail chrome (--sidebar*, --ondark-*, --onaccent, --avatar-bg*) and
   the .wt opaque header bars (--xl-head, --xl-amber) are intentionally
   UNCHANGED — see DARK-MODE plan part 4. (--accent-deep was listed here too,
   but it has always carried its own dark value; it is the far stop of the
   sidebar mark gradient, which the .brandmark logo chip now covers, so only
   .ehrule still paints it.) ===== */
:root[data-theme="dark"]{
  --bg:#0F151D; --surface:#1A2330;
  --ink:#E7ECF2; --muted:#96A3B3; --faint:#66748A; --line:#2A3444; --line-strong:#3A4658;
  /* Brand blue, dark ramp. NOT the light values: #045CB4 as dark-mode --accent
     would measure 2.10-2.79:1 against these surfaces. Lifted and very slightly
     desaturated, same hue-210 family. --accent is luminance-pinned (see the
     header); --accent-hover is deliberately LIGHT because its dominant job here
     is .lk:hover TEXT (5.9-7.8:1) — the four button-fill hovers that also read
     it swap their ink to --sidebar in app.css rather than keep white on it. */
  --accent:#1275D9; --accent-hover:#5CADFF; --accent-soft:#022950; --accent-deep:#023D78;
  --ok:#35C88A; --ok-bg:#123625; --review:#5B9FE0; --review-bg:#172B40;
  --attn:#E3A93B; --attn-bg:#3A2E10; --rej:#E8695A; --rej-bg:#3A1815;
  --ps-ink:#7FA8E8;

  --xl-navy:#16233B; --xl-zebra:#212C3D; --xl-otbg:#3A2A14; --xl-ottx:#F0A868; --xl-add:#26303F;

  --surface-2:#212B3A; --canvas:#232D3A;
  --accent-ink:#AFD8FF;
  --code-bg:#1C2A40; --code-border:#33496B; --uncoded-bg:#232C38; --attn-border:#5A431C; --review-hover:#6FAEEA;
  --daygrp-border:#2E3A4C; --daygrp-bg:#1B2431; --daygrp-today-bg:#022E5A;
  /* --highlight-ring now matches the light value on purpose: it is an inset ring
     drawn on the .wt header bar, and --xl-head (#2E5496) is theme-INVARIANT. The
     old dark value #4C55A0 was darker than the bar it sat on — 1.10:1, i.e. an
     invisible resize indicator. #B4D6F9 measures 4.93:1 on that bar in both themes. */
  --highlight-ring:#B4D6F9; --xl-faint:#4A5568; --xl-ot-faint:#6B4A2E;
  --wt-foot-bg:#1C2635; --flash-bg:#0F4C8A; --track-bg:#263242;
  --tag-bg:#232E3C; --tag-ink:#A9B7C7;
  --dchip-ok-ink:#4FE3A6; --dchip-review-ink:#8AC0F2; --dchip-attn-ink:#F0C468; --dchip-rej-ink:#F29488; --dchip-pay-ink:#B26B00;
  /* --rej-rgb tracks the lifted dark --rej #E8695A above — without this dark
     value, rgba(var(--rej-rgb),…) borders (ocrprocess.css) painted the LIGHT
     theme's #C64232 on dark surfaces. */
  --shadow-rgb:0,0,0; --accent-rgb:18,117,217; --accent-soft-rgb:2,41,80; --surface-rgb:26,35,48; --rej-rgb:232,105,90;
  /* unchanged from light — see the light block's comment */
  --wn-welcome-1:#045CB4; --wn-welcome-2:#046BD2;
}
/* No @media(prefers-color-scheme) fallback needed here: the anti-FOUC inline
   script in index.html <head> always resolves the effective theme (stored
   choice, else matchMedia) and sets data-theme="dark"|"light" explicitly
   before first paint, so the attribute selector above is always authoritative. */
