:root {
  /* house token aliases per ADVISOR-NOTE v2.1 errata (V2.1) */
  --bg: var(--of-paper);            /* dark #0b1324 · light #f6f7fa */
  --panel: var(--of-paper-soft);    /* dark #18253e · light #e9eef9 */
  --text: var(--ink);
  --hairline: var(--overlay-border);/* thin 1px rules (ink 14%); use where v1 said --line */
  --line: var(--overlay-border);    /* compatibility alias for hairlines */
  --field: var(--field-surface);
  --pass: var(--status-success);
  --warn: var(--status-warning);
  --fail: var(--status-error);
  --hl-fail: var(--status-error);
  --band: color-mix(in srgb, var(--status-error) 14%, var(--of-paper));
  --band-line: color-mix(in srgb, var(--status-error) 45%, transparent);
  --band-text: var(--status-error);
  --menu-alpha: .6;
  --glass-phone: color-mix(in srgb, var(--of-paper) 60%, transparent);

  /* geometry and type */
  --font: Arial, Helvetica, system-ui, sans-serif;
  --font-cond: "Arial Narrow", "Roboto Condensed", "Helvetica Neue", Arial, sans-serif;
  --mono: ui-monospace, "Cascadia Mono", "SF Mono", Consolas, Menlo, monospace;
  --fs-body: 12.5px;
  --fs-sub: 11px;
  --fs-label: 10px;
  --fs-title: 20px;
  --fs-count: 13px;
  --r-ctl: 2px;
  --r-ov: 3px;          /* spec: nearly square */
  --ctl: 24px;          /* V2.3: compact on a mouse */
  --gap-1: 4px;
  --gap-2: 8px;
  --gap-3: 12px;
  --gap-4: 16px;
  --band-h: 24px;
  --head-h: 72px;
  --cfg-h: 56px;
  --foot-h: 32px;
  --panel-w: 326px;

  /* animations */
  --dur-press: 80ms;
  --dur-fast: 140ms;
  --dur: 200ms;
  --dur-sheet: 280ms;
  --ease: cubic-bezier(0.2, 0, 0, 1);
  --ease-sheet: cubic-bezier(0.32, 0.72, 0, 1);
}

@media (pointer: coarse) {
  :root {
    --ctl: 32px; /* visible size; hit areas reach 44px through ::after */
  }
}
