:root{
  /* --- Ink (neutral ramp, cool-warm neutral) --- */
  --ink-950:#06080A; --ink-900:#0B0E12; --ink-800:#14181E; --ink-700:#1F252D;
  --ink-600:#333B45; --ink-500:#4C565F; --ink-400:#6D7883; --ink-300:#98A3AE;
  --ink-200:#C6CEd6; --ink-150:#DCE2E8; --ink-100:#E9EDF1; --ink-050:#F4F6F8;

  /* --- Paper (warm registry paper, the light surface) --- */
  --paper-000:#FFFFFF; --paper-050:#FBFAF6; --paper-100:#F5F2EA; --paper-200:#EAE5D8;

  /* --- Magenta (primary: BCE Vision signature) --- */
  --magenta-700:#B00F5D; --magenta-600:#E01870; --magenta-500:#FF2E88;
  --magenta-400:#FF6BA8; --magenta-200:#FFC2DB; --magenta-100:#FFE6F0;

  /* --- Lime (accent: highlight, data-positive, motif fills) --- */
  --lime-700:#8CA800; --lime-600:#BFE800; --lime-500:#D8FF3E;
  --lime-300:#E9FF8F; --lime-100:#F4FFC9;

  /* --- Cobalt (informational / links / API surfaces) --- */
  --cobalt-700:#1B3ACC; --cobalt-600:#2C4EF0; --cobalt-500:#3B5BFF;
  --cobalt-300:#9BADFF; --cobalt-100:#E4E9FF;

  /* --- Status --- */
  --green-600:#0A9C5A; --green-500:#0FBF6F; --green-100:#DDF7EA;
  --amber-600:#C97C00; --amber-500:#FFB020; --amber-100:#FFF1D6;
  --red-600:#C4241F; --red-500:#E5322D; --red-100:#FDE3E2;

  /* ============ Semantic aliases (use these in product code) ============ */
  --text-strong:var(--ink-950);
  --text-body:var(--ink-800);
  --text-muted:var(--ink-500);
  --text-faint:var(--ink-400);
  --text-inverse:var(--paper-050);
  --text-brand:var(--magenta-600);
  --text-link:var(--cobalt-600);
  --text-link-hover:var(--magenta-600);

  --surface-page:var(--paper-050);
  --surface-card:var(--paper-000);
  --surface-sunken:var(--paper-100);
  --surface-inverse:var(--ink-950);
  --surface-inverse-soft:var(--ink-800);
  --surface-brand:var(--magenta-500);
  --surface-brand-soft:var(--magenta-100);
  --surface-accent:var(--lime-500);
  --surface-accent-soft:var(--lime-100);
  --surface-info-soft:var(--cobalt-100);

  --border-hairline:var(--ink-150);
  --border-default:var(--ink-200);
  --border-strong:var(--ink-950);
  --border-brand:var(--magenta-500);
  --border-focus:var(--cobalt-500);

  --perf-color:var(--ink-300);       /* perforation dots on light surfaces */
  --perf-color-inverse:var(--ink-600);
  --perf-color-brand:var(--magenta-400);

  --status-ok:var(--green-500); --status-ok-soft:var(--green-100);
  --status-warn:var(--amber-500); --status-warn-soft:var(--amber-100);
  --status-bad:var(--red-500); --status-bad-soft:var(--red-100);
}
:root[data-theme="dark"]{
  --text-strong:var(--paper-000); --text-body:var(--ink-100); --text-muted:var(--ink-300);
  --text-faint:var(--ink-400); --text-inverse:var(--ink-950);
  --surface-page:var(--ink-950); --surface-card:var(--ink-900); --surface-sunken:var(--ink-800);
  --surface-inverse:var(--paper-050); --surface-inverse-soft:var(--paper-100);
  --border-hairline:var(--ink-700); --border-default:var(--ink-600); --border-strong:var(--paper-000);
  --perf-color:var(--ink-600); --text-link:var(--cobalt-300);
}
