/* SWCorp app family — tokens (fonts + colors, shape, type, motion, depth).
   Copy verbatim to <app>/static/css/ with fonts in <app>/static/fonts/.
   Load FIRST, before swcorp.css and the app's app.css. Never redefine these per app:
   change them here and propagate. Rules: ../CLAUDE.md. */

@font-face { font-family: "Geist"; src: url("../fonts/Geist-Variable.woff2") format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; }
@font-face { font-family: "Geist Mono"; src: url("../fonts/GeistMono-Variable.woff2") format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; }

/* ---------------------------------------------------------------- tokens */
:root {
  /* Brand */
  --navy: #1C3D5A; --navy-dark: #152E45; --navy-50: #EDF2F7; --navy-100: #DCE6EF;
  /* Surfaces */
  --white: #FFFFFF; --ground: #FFFFFF;
  --surface: #FFFFFF; --surface-2: #F8F9FA; --surface-3: #F1F3F5;
  /* Lines. --line-strong keeps inputs at 3:1 against white (WCAG 1.4.11). */
  --line: #DEE2E6; --line-soft: #F1F3F5; --line-mid: #CED4DA; --line-strong: #8A96A3;
  /* Text */
  --ink: #212529; --ink-2: #495057; --ink-3: #6C757D;
  /* Semantics: info navy · pending amber · warning · ok · blocking red */
  --ok: #1E7A4A; --ok-bg: #E8F5EE; --ok-line: #9BCFB2;
  --warn: #8A5A00; --warn-bg: #FFF4D6; --warn-bg-h: #FDEDC0; --warn-line: #E9C46A;
  --block: #B42318; --block-bg: #FDECEA; --block-line: #F1B3AD;
  --amber: #C8A44D; --amber-stroke: #A8873A;
  /* Running: something in progress right now (a sync, a TR being written). Blue, not navy: navy already means "done". */
  --run: #2F7BD8; --run-bg: #E8F1FC;
  /* Text on --run-bg: --run itself is ~3.7:1 there (fails AA); this is ~5.6:1. */
  --run-ink: #1F5FAE;
  /* Light tint of --run, for a running dot on navy (like --ok-line, --warn-line). */
  --run-line: #8DB9EE;
  /* Source tags (Rebate Validation inventory map, MatchType). AlternateID/Xref are tints of
     #33CCFF, Xref deeper (it carries a confirmed Lowe's Item Number); text keeps 4.5:1 on its tint. */
  --match-alt-bg: #D9F5FF; --match-alt-text: #07698C; --match-xref-bg: #B3EBFF; --match-xref-text: #055A78;
  --match-stock-unconf-bg: #F2F6FA; --match-stock-unconf-text: #3F5F7D; --match-manual-bg: #FFF1CC; --match-manual-text: #8A5A00;
  /* Focus */
  --focus: #1C3D5A; --ring: 0 0 0 3px rgba(28,61,90,.12); --ring-strong: 0 0 0 3px rgba(28,61,90,.25);
  /* Shape */
  --r-window: 20px; --r-dialog: 14px; --r-box: 10px; --r-ctl: 8px; --r-tag: 4px;
  --h-hdr: 56px; --h-ctl: 36px; --h-ctl-sm: 30px; --row: 38px;
  /* Type */
  --font: "Geist", "Segoe UI", system-ui, -apple-system, sans-serif;
  --mono: "Geist Mono", Consolas, ui-monospace, monospace;
  /* Motion */
  --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
  --ease-overshoot: cubic-bezier(0.34, 1.56, 0.64, 1);
  --ease-settle: cubic-bezier(0.22, 1, 0.36, 1);
  /* On-screen movement (layout morphs): starts gently, a full-speed start reads as a jump. */
  --ease-in-out: cubic-bezier(0.45, 0, 0.2, 1);
  /* Durations (Emil Kowalski's scale): press 100-160 · small UI 150-250 ·
     screens 200-300 · exits faster than entries. Celebrations may run longer. */
  --dur-press: 160ms; --dur-exit: 180ms; --dur-enter: 260ms; --dur-toast: 320ms; --dur-morph: 350ms;
  /* Depth */
  --shadow-window: 0 8px 40px rgba(0,0,0,.18);
  --shadow-pop: 0 4px 14px rgba(21,46,69,.10), 0 1px 3px rgba(21,46,69,.08);
  --shadow-card: 0 12px 28px rgba(15,30,45,.14), 0 1px 3px rgba(21,46,69,.08);
  --shadow-dialog: 0 20px 50px rgba(21,46,69,.25), 0 2px 6px rgba(21,46,69,.08);
  --z-pop: 6; --z-overlay: 20; --z-toast: 50; --z-dialog: 100;
}

