:root{
  /* Base palette — §4.1 of the brief. These eight values are the whole palette. */
  --ss-blue:#003FFF;
  --ss-ink:#0B0F1A;
  --ss-steel:#5A6472;
  --ss-zinc:#E4E7EC;
  --ss-paper:#F7F8FA;
  --ss-white:#FFFFFF;
  --ss-signal:#FF6A00;
  --ss-pending:#8A8F98;

  /* Derived states. Interaction darkens or lightens blue; nothing else is introduced. */
  --ss-blue-hover:#0033CC;
  --ss-blue-press:#002999;
  --ss-blue-wash:#EDF1FF;
  --ss-ink-hover:#1C2333;
  --ss-zinc-strong:#C9CFD8;
  --ss-signal-wash:#FFF2E8;

  /* Semantic aliases — use these in components, not the base names. */
  --text-heading:var(--ss-ink);
  --text-body:var(--ss-ink);
  --text-secondary:var(--ss-steel);
  --text-caption:var(--ss-steel);
  --text-data:var(--ss-ink);
  --text-brand:var(--ss-blue);
  --text-inverse:var(--ss-white);
  --text-pending:var(--ss-pending);

  --surface-base:var(--ss-white);
  --surface-section:var(--ss-paper);
  --surface-card:var(--ss-white);
  --surface-inverse:var(--ss-ink);
  --surface-brand:var(--ss-blue);
  --surface-highlight:var(--ss-signal-wash);
  --surface-pending:var(--ss-paper);

  --border-hairline:var(--ss-zinc);
  --border-strong:var(--ss-zinc-strong);
  --border-focus:var(--ss-blue);
  --border-pending:var(--ss-pending);

  --action-primary-bg:var(--ss-blue);
  --action-primary-bg-hover:var(--ss-blue-hover);
  --action-primary-bg-press:var(--ss-blue-press);
  --action-primary-fg:var(--ss-white);
  --action-secondary-fg:var(--ss-ink);
  --action-secondary-border:var(--ss-ink);

  /* Status enum from §5 — calculated · test_pending · verified */
  --status-calculated:var(--ss-ink);
  --status-test-pending:var(--ss-pending);
  --status-verified:var(--ss-blue);

  /* Restricted: highlighted row in comparison tables only. */
  --table-row-highlight-accent:var(--ss-signal);
}
