/* Luxor design system tokens v1.3 (2026-10-22).
   HOUSE DEFAULT is Vitality design v1 (design-tokens.css + design.css).
   Omit data-theme, or set data-theme="luxor". The theme control sets
   data-theme="light" or data-theme="dark", or removes it for the system theme.
   data-mode="light|dark" is the same switch for older pages.
   Named opt-in palettes: data-theme="volt|stroom|hartslag". */
:root {
  color-scheme: light;
  /* type — system UI, no webfont. Body 16px/1.5 (design.css wins over the older 15px). */
  --font: system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-body: var(--font);
  --font-display: var(--font);
  --font-mono: ui-monospace, "IBM Plex Mono", monospace;
  --type-body: 16px; --type-secondary: 14px; --type-small: 12px;
  --type-h1: 28px; --type-h2: 20px; --type-h3: 16px;
  --leading-body: 1.5; --leading-h1: 1.25; --leading-h2: 1.35; --leading-h3: 1.4;
  /* spacing (4px grid) */
  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-5: 24px; --space-6: 32px; --space-7: 48px;
  /* shape, size, motion */
  --radius-s: 6px; --radius-m: 8px; --radius: 12px; --radius-pill: 999px;
  --shadow-1: 0 1px 2px rgb(0 0 0 / .06); --shadow-2: 0 4px 16px rgb(0 0 0 / .10);
  --shadow-menu: 0 6px 20px rgb(0 0 0 / .12);
  --control: 44px; --target-min: 24px; --content: 1200px; --measure: 75ch;
  --motion: 150ms ease; --focus-ring-width: 3px; --focus-ring-offset: 3px;
  /* status lights: fills for white text (>=4.5:1). --on-status is that text. */
  --light-ok: var(--status-ok); --light-warn: var(--status-warn); --light-bad: var(--status-bad); --light-neutral: var(--secondary);
  --status-ok: #137c65; --status-warn: #815400; --status-bad: #a32632; --status-neutral: #48606a;
  --on-status: #ffffff;
  /* Vitality light */
  --page: #f4f6f5; --surface: #ffffff; --ink: #172b35; --secondary: #48606a; --ink-2: var(--secondary);
  --muted: #5e737c;
  --line: #748b96; --subtle: #e9f0ee; --action: #006b5b; --on-action: #ffffff; --focus: #175bc4;
  --warning: #815400; --warning-bg: #fff4d9; --error: #a32632; --error-bg: #fff0f1;
  --ring: rgb(11 11 11 / .10); --wash: rgb(11 11 11 / .04);
  --mark-1: #1d9e75; --mark-2: #ef9f27; --mark-3: #d85a30; --mark-p: #185fa5;
  --z1: #536b7b; --z2: #126ead; --z3: #137c65; --z4: #966100; --z5: #9a418e; --z6: #b33e34; --z7: #5146a8;
}
/* House dark. Named palettes are excluded so volt/stroom/hartslag keep their own steps. */
@media (prefers-color-scheme: dark) {
  :root:not([data-mode="light"]):not([data-theme="light"]):not([data-theme="volt"]):not([data-theme="stroom"]):not([data-theme="hartslag"]) {
    color-scheme: dark;
    --page: #101b22; --surface: #182932; --ink: #eff5f5; --secondary: #b5c8cd;
    --muted: #829094;
    --line: #607982; --subtle: #223c44; --action: #73d9bd; --on-action: #102c27; --focus: #8cbaff;
    --warning: #ffd087; --warning-bg: #3e321d; --error: #ffb2ba; --error-bg: #43272e;
    --ring: rgb(255 255 255 / .10); --wash: rgb(255 255 255 / .05);
    --mark-1: #5dcaa5; --mark-2: #fac775; --mark-3: #f0997b; --mark-p: #ffffff;
    --z1: #adbfcb; --z2: #77bff0; --z3: #66d6b2; --z4: #e8b963; --z5: #e79cdb; --z6: #ffaaa0; --z7: #b9b2ff;
    --shadow-1: none; --shadow-2: 0 4px 16px rgb(0 0 0 / .4);
    --light-ok: #34c759; --light-warn: #ffb020; --light-bad: #ff453a;
  }
}
:root[data-mode="dark"]:not([data-theme="volt"]):not([data-theme="stroom"]):not([data-theme="hartslag"]),
:root[data-theme="dark"] {
  color-scheme: dark;
  --shadow-1: none; --shadow-2: 0 4px 16px rgb(0 0 0 / .4); --light-ok: #34c759; --light-warn: #ffb020; --light-bad: #ff453a;
  --page: #101b22; --surface: #182932; --ink: #eff5f5; --secondary: #b5c8cd;
  --muted: #829094;
  --line: #607982; --subtle: #223c44; --action: #73d9bd; --on-action: #102c27; --focus: #8cbaff;
  --warning: #ffd087; --warning-bg: #3e321d; --error: #ffb2ba; --error-bg: #43272e;
  --ring: rgb(255 255 255 / .10); --wash: rgb(255 255 255 / .05);
  --mark-1: #5dcaa5; --mark-2: #fac775; --mark-3: #f0997b; --mark-p: #ffffff;
  --z1: #adbfcb; --z2: #77bff0; --z3: #66d6b2; --z4: #e8b963; --z5: #e79cdb; --z6: #ffaaa0; --z7: #b9b2ff;
}
/* Named themes (light values; dark via data-mode or device). --action is a fill, not text. */
:root[data-theme="volt"]     { --page:#F2F4F8; --surface:#FFFFFF; --ink:#0B1026; --secondary:#5B6478; --subtle:#DDE1EC; --line:#DDE1EC; --action:#C8F53C; --on-action:#0B1026; --focus:#3D4FD6; --radius:10px; }
:root[data-theme="stroom"]   { --page:#F1F4F9; --surface:#FFFFFF; --ink:#070D1C; --secondary:#56627A; --subtle:#D8E0EB; --line:#D8E0EB; --action:#2DE2E6; --on-action:#070D1C; --focus:#0E7490; --radius:10px; }
:root[data-theme="hartslag"] { --page:#F6F3F7; --surface:#FFFFFF; --ink:#120D1A; --secondary:#6A5F74; --subtle:#E3DCE6; --line:#E3DCE6; --action:#FF4D5E; --on-action:#120D1A; --focus:#C8102E; --radius:10px; }
@media (prefers-color-scheme: dark) {
  :root[data-theme="volt"]:not([data-mode="light"])     { --page:#0B1026; --surface:#161D3C; --ink:#EEF1F8; --secondary:#AEB6CC; --subtle:#28305A; --line:#28305A; --focus:#C8F53C; }
  :root[data-theme="stroom"]:not([data-mode="light"])   { --page:#070D1C; --surface:#121B30; --ink:#EAF0F8; --secondary:#A7B3C9; --subtle:#22304D; --line:#22304D; --focus:#2DE2E6; }
  :root[data-theme="hartslag"]:not([data-mode="light"]) { --page:#120D1A; --surface:#201829; --ink:#F3EEF6; --secondary:#BBAFC6; --subtle:#362B42; --line:#362B42; --focus:#FFC53D; }
}
:root[data-theme="volt"][data-mode="dark"]     { --page:#0B1026; --surface:#161D3C; --ink:#EEF1F8; --secondary:#AEB6CC; --subtle:#28305A; --line:#28305A; --focus:#C8F53C; }
:root[data-theme="stroom"][data-mode="dark"]   { --page:#070D1C; --surface:#121B30; --ink:#EAF0F8; --secondary:#A7B3C9; --subtle:#22304D; --line:#22304D; --focus:#2DE2E6; }
:root[data-theme="hartslag"][data-mode="dark"] { --page:#120D1A; --surface:#201829; --ink:#F3EEF6; --secondary:#BBAFC6; --subtle:#362B42; --line:#362B42; --focus:#FFC53D; }
/* Control borders need >=3:1 (WCAG 1.4.11); named themes had --line == --subtle. */
:root[data-theme="volt"],:root[data-theme="stroom"],:root[data-theme="hartslag"]{--line:var(--secondary);--ink-2:var(--secondary)}
