/* AssetIQ design tokens (§2.3, §2.4). The single source of colour, type, shape and motion values.
   Teal means act · Indigo means AI · Marigold is brand/celebration only (never a status) · every status = colour + icon + word.
   The two dark blocks below MUST stay byte-identical (CSS cannot share one ruleset between a media query and a
   selector); public/tools/tokens-check.html diffs them. */
:root{
  color-scheme:light;
  /* surfaces */
  --bg:#F5F8F7; --surface:#FFFFFF; --surface-2:#EEF3F2; --line:#DCE5E3; --scrim:rgb(10 18 20/.48);
  --ink:#0E1B2B; --ink-2:#4A5A66; --ink-3:#617079;            /* never lighter than --ink-3 for text (spec #66757F was 4.45:1 on --bg) */
  /* brand */
  --primary:#0F766E; --primary-strong:#0B5F58; --primary-soft:#E6F6F3; --on-primary:#FFFFFF;  /* 5.5:1 on white */
  --ai:#4338CA; --ai-soft:#EEF0FF;                               /* AI surfaces only */
  --marigold:#F5B544;                                            /* logo dot, celebrations, pip — never status */
  --brand-grad:linear-gradient(135deg,#14B8A6 0%,#0F766E 55%,#3730A3 100%);
  --hero-grad:linear-gradient(135deg,#0F766E 0%,#0B5F58 50%,#3730A3 100%); /* AI headline cards: white text ≥ 4.5:1 at every stop */
  --hero-1:#0F766E; --hero-2:#0B5F58; --hero-3:#3730A3;          /* the stops above, read by tools/tokens-check.html */
  /* readiness / status (always icon + word) */
  --ready:#15803D;  --ready-soft:#ECFDF3;   /* ✓ Ready            check-circle   */
  --inuse:#1D4ED8;  --inuse-soft:#EFF4FF;   /* ● In use           dot            */
  --clean:#6D28D9;  --clean-soft:#F3EEFF;   /* ◆ Needs cleaning   droplet        */
  --due:#B45309;    --due-soft:#FFF7E6;     /* ▲ Due soon         clock/triangle */
  --repair:#C2410C; --repair-soft:#FFF1E8;  /* ■ Under repair     wrench/square  */
  --dnu:#B91C1C;    --dnu-soft:#FEF2F2;     /* ⬣ Do-not-use       octagon-slash  */
  --stale:#5E6E83;  --stale-soft:#F1F5F9;   /* ? Not seen 90d+    question       */
  /* branch palette (auto-assigned in order; colour-blind-safe sequence) */
  --b1:#0F766E; --b2:#4338CA; --b3:#C2410C; --b4:#BE185D; --b5:#15803D; --b6:#6D4C41; --b7:#0369A1; --b8:#7E22CE;
  /* shape */
  --r-sm:10px; --r:14px; --r-lg:20px; --r-pill:999px;
  --tap:48px; --tap-lg:56px; --tab-h:64px; --header-h:56px; --gutter:16px; --rail-w:240px; --rail-w-collapsed:72px; --drawer-w:420px;
  --shadow-1:0 1px 2px rgb(14 27 43/.05),0 2px 8px rgb(14 27 43/.05);
  --shadow-sheet:0 -8px 32px rgb(14 27 43/.16);
  /* motion */
  --ease:cubic-bezier(.2,.8,.2,1); --ease-out:cubic-bezier(.16,1,.3,1);
  --t-fast:120ms; --t:200ms; --t-slow:320ms;
  /* type */
  --font:"Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --font-indic:"Noto Sans Telugu","Noto Sans Devanagari";
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  /* type scale (phone) — rem so 200% text scaling works */
  --fs-display:2rem;      --lh-display:2.25rem;
  --fs-h1:1.5rem;         --lh-h1:1.875rem;
  --fs-h2:1.25rem;        --lh-h2:1.625rem;
  --fs-body:1rem;         --lh-body:1.5rem;
  --fs-label:.875rem;     --lh-label:1.25rem;
  --fs-caption:.8125rem;  --lh-caption:1.125rem;
}
@media (min-width:1024px){
  :root{
    --fs-display:2.25rem; --lh-display:2.5rem; --fs-h1:1.625rem; --lh-h1:2rem;
    --fs-body:.9375rem; --lh-body:1.375rem; --fs-label:.8125rem; --lh-label:1.125rem; --fs-caption:.75rem; --lh-caption:1rem;
  }
}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]){
  color-scheme:dark;
  --bg:#0A1214; --surface:#111C1F; --surface-2:#172427; --line:#23363A; --scrim:rgb(0 0 0/.6);
  --ink:#E6EEF0; --ink-2:#9AAEB3; --ink-3:#7E959B;
  --primary:#2DD4BF; --primary-strong:#5EEAD4; --primary-soft:#0E2E2B; --on-primary:#04211E;
  --ai:#A5B4FC; --ai-soft:#1B1E3D;
  --ready:#4ADE80; --ready-soft:#0B2A18; --inuse:#60A5FA; --inuse-soft:#0C1D38; --clean:#C4B5FD; --clean-soft:#221838;
  --due:#FBBF24; --due-soft:#2B1F06; --repair:#FB923C; --repair-soft:#2F1608; --dnu:#F87171; --dnu-soft:#2E0F0F;
  --stale:#94A3B8; --stale-soft:#1A2329;
  --shadow-1:none; --shadow-sheet:0 -8px 32px rgb(0 0 0/.5);
} }
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#0A1214; --surface:#111C1F; --surface-2:#172427; --line:#23363A; --scrim:rgb(0 0 0/.6);
  --ink:#E6EEF0; --ink-2:#9AAEB3; --ink-3:#7E959B;
  --primary:#2DD4BF; --primary-strong:#5EEAD4; --primary-soft:#0E2E2B; --on-primary:#04211E;
  --ai:#A5B4FC; --ai-soft:#1B1E3D;
  --ready:#4ADE80; --ready-soft:#0B2A18; --inuse:#60A5FA; --inuse-soft:#0C1D38; --clean:#C4B5FD; --clean-soft:#221838;
  --due:#FBBF24; --due-soft:#2B1F06; --repair:#FB923C; --repair-soft:#2F1608; --dnu:#F87171; --dnu-soft:#2E0F0F;
  --stale:#94A3B8; --stale-soft:#1A2329;
  --shadow-1:none; --shadow-sheet:0 -8px 32px rgb(0 0 0/.5);
}
/* OT / glare / sunlight mode — user toggle, also auto under prefers-contrast: more */
:root[data-contrast="high"]{ --ink-2:var(--ink); --ink-3:var(--ink); --line:#0E1B2B; --r:10px; }
:root[data-theme="dark"][data-contrast="high"],:root[data-scheme="dark"][data-contrast="high"]{ --line:#E6EEF0; }
@media (prefers-contrast:more){ :root:not([data-contrast="normal"]){ --ink-2:var(--ink); --ink-3:var(--ink); --line:#0E1B2B; } }

/* ── Night ward (Me › Display): dim, warm, low-blue dark for wards at night. Chosen as theme 'night' (always) or
   'night_auto' (20:00–07:00); core/shell.js sets data-theme="night" and data-scheme="night". Every pair ≥ 4.5:1. ── */
:root[data-theme="night"]{
  color-scheme:dark;
  --bg:#100D0A; --surface:#18140F; --surface-2:#201B15; --line:#342C23; --scrim:rgb(0 0 0/.66);
  --ink:#DCD0BB; --ink-2:#C0B29A; --ink-3:#A8987F;
  --primary:#86C5B4; --primary-strong:#A8D8CA; --primary-soft:#1C2A24; --on-primary:#120E0A;
  --ai:#B9B0EC; --ai-soft:#221E33;
  --ready:#9BCB8C; --ready-soft:#18241A; --inuse:#A9BCD6; --inuse-soft:#1B212B; --clean:#C9B5E0; --clean-soft:#231D2B;
  --due:#E2B266; --due-soft:#2A2113; --repair:#E9A274; --repair-soft:#2C1C13; --dnu:#EE958A; --dnu-soft:#2E1714;
  --stale:#B3A898; --stale-soft:#211D18;
  --brand-grad:linear-gradient(135deg,#5E9A8A 0%,#3F6B5F 55%,#3B3550 100%);
  --hero-grad:linear-gradient(135deg,#3F6B5F 0%,#33544A 50%,#3B3550 100%); --hero-1:#3F6B5F; --hero-2:#33544A; --hero-3:#3B3550;
  --shadow-1:none; --shadow-sheet:0 -8px 32px rgb(0 0 0/.6);
}
:root[data-theme="night"][data-contrast="high"]{ --line:#DCD0BB; }

/* ── Accent palettes (Me › Display). data-accent is the choice; data-scheme is the resolved light | dark | night that
   core/shell.js (and the boot script in index.html) keeps current. Teal + indigo is the default and needs no block.
   Indigo stays the AI colour in every palette; status colours never change. Checked by /tools/tokens-check.html. ── */
:root[data-accent="clinical"]{ --brand-grad:linear-gradient(135deg,#38BDF8 0%,#1D5BC4 55%,#3730A3 100%); --hero-grad:linear-gradient(135deg,#1D5BC4 0%,#1E40AF 50%,#3730A3 100%); --hero-1:#1D5BC4; --hero-2:#1E40AF; --hero-3:#3730A3; }
:root[data-accent="clinical"][data-scheme="light"]{ --primary:#1D5BC4; --primary-strong:#174A9E; --primary-soft:#E8F0FD; --on-primary:#FFFFFF; }
:root[data-accent="clinical"][data-scheme="dark"]{ --primary:#7CB2FF; --primary-strong:#A9CBFF; --primary-soft:#0F213F; --on-primary:#06173A; }
:root[data-accent="clinical"][data-scheme="night"]{ --primary:#9DB7D9; --primary-strong:#BBCDE6; --primary-soft:#1D2430; --on-primary:#120E0A;
  --brand-grad:linear-gradient(135deg,#5B7A9E 0%,#3D5675 55%,#3B3550 100%); --hero-grad:linear-gradient(135deg,#3D5675 0%,#33465F 50%,#3B3550 100%); --hero-1:#3D5675; --hero-2:#33465F; --hero-3:#3B3550; }

:root[data-accent="ayurveda"]{ --brand-grad:linear-gradient(135deg,#84CC16 0%,#2E7D32 55%,#14532D 100%); --hero-grad:linear-gradient(135deg,#2E7D32 0%,#22602A 50%,#14532D 100%); --hero-1:#2E7D32; --hero-2:#22602A; --hero-3:#14532D; }
:root[data-accent="ayurveda"][data-scheme="light"]{ --primary:#2E7D32; --primary-strong:#22602A; --primary-soft:#EAF5EA; --on-primary:#FFFFFF; }
:root[data-accent="ayurveda"][data-scheme="dark"]{ --primary:#7DD87F; --primary-strong:#A6E8A7; --primary-soft:#10291A; --on-primary:#062A0B; }
:root[data-accent="ayurveda"][data-scheme="night"]{ --primary:#A3C990; --primary-strong:#BFDDAE; --primary-soft:#1D2719; --on-primary:#120E0A;
  --brand-grad:linear-gradient(135deg,#6E8F55 0%,#46663A 55%,#2E3F27 100%); --hero-grad:linear-gradient(135deg,#46663A 0%,#3A5531 50%,#2E3F27 100%); --hero-1:#46663A; --hero-2:#3A5531; --hero-3:#2E3F27; }

:root[data-accent="marigold"]{ --brand-grad:linear-gradient(135deg,#F5B544 0%,#C2690A 55%,#7C2D12 100%); --hero-grad:linear-gradient(135deg,#A85A00 0%,#9A3412 50%,#7C2D12 100%); --hero-1:#A85A00; --hero-2:#9A3412; --hero-3:#7C2D12; }
:root[data-accent="marigold"][data-scheme="light"]{ --primary:#9A5B00; --primary-strong:#7A4700; --primary-soft:#FDF3DC; --on-primary:#FFFFFF; }
:root[data-accent="marigold"][data-scheme="dark"]{ --primary:#F5B544; --primary-strong:#FFCF73; --primary-soft:#2E2209; --on-primary:#2A1A00; }
:root[data-accent="marigold"][data-scheme="night"]{ --primary:#E5B86E; --primary-strong:#F0CD92; --primary-soft:#2B2112; --on-primary:#120E0A;
  --brand-grad:linear-gradient(135deg,#A07A3C 0%,#7A5524 55%,#5A321B 100%); --hero-grad:linear-gradient(135deg,#7A5524 0%,#6B3F1F 50%,#5A321B 100%); --hero-1:#7A5524; --hero-2:#6B3F1F; --hero-3:#5A321B; }

:root[data-accent="graphite"]{ --brand-grad:linear-gradient(135deg,#64748B 0%,#374151 55%,#111827 100%); --hero-grad:linear-gradient(135deg,#475569 0%,#334155 50%,#111827 100%); --hero-1:#475569; --hero-2:#334155; --hero-3:#111827; }
:root[data-accent="graphite"][data-scheme="light"]{ --primary:#374151; --primary-strong:#1F2937; --primary-soft:#EEF0F3; --on-primary:#FFFFFF; }
:root[data-accent="graphite"][data-scheme="dark"]{ --primary:#CBD5E1; --primary-strong:#E2E8F0; --primary-soft:#1E2630; --on-primary:#111827; }
:root[data-accent="graphite"][data-scheme="night"]{ --primary:#CFC5B6; --primary-strong:#E2DACD; --primary-soft:#25211C; --on-primary:#120E0A;
  --brand-grad:linear-gradient(135deg,#6B655C 0%,#4F4A43 55%,#2E2A25 100%); --hero-grad:linear-gradient(135deg,#4F4A43 0%,#433E38 50%,#2E2A25 100%); --hero-1:#4F4A43; --hero-2:#433E38; --hero-3:#2E2A25; }

/* Fonts (§2.4). Plus Jakarta Sans is self-hosted as /fonts/PlusJakartaSans-{400,600,800}.woff2 once those files are
   committed; until then local() picks an installed copy and the stack falls back to system-ui (no network fetch, no 404). */
@font-face{ font-family:"Plus Jakarta Sans"; font-weight:400; font-display:swap; src:local("Plus Jakarta Sans"), local("PlusJakartaSans-Regular"); }
@font-face{ font-family:"Plus Jakarta Sans"; font-weight:600; font-display:swap; src:local("Plus Jakarta Sans SemiBold"), local("PlusJakartaSans-SemiBold"); }
@font-face{ font-family:"Plus Jakarta Sans"; font-weight:800; font-display:swap; src:local("Plus Jakarta Sans ExtraBold"), local("PlusJakartaSans-ExtraBold"); }
