:root{
/* ═══ PRIMITIVES ═══ */

/* Stone — warm neutral. The paper of the brand. Never blue-grey. */
--af-stone-50:#FAF8F4;--af-stone-100:#F4F1EA;--af-stone-200:#E7E2D8;--af-stone-300:#D3CCBF;
--af-stone-400:#B0A99B;--af-stone-500:#8A857B;--af-stone-600:#6A665E;--af-stone-700:#4C4944;
--af-stone-800:#33312D;--af-stone-900:#1F1E1B;

/* Basalt — cool dark. The ground of the product. */
--af-basalt-950:#080A0B;--af-basalt-900:#0B0E0F;--af-basalt-850:#101416;--af-basalt-800:#12171A;
--af-basalt-700:#1A2124;--af-basalt-600:#232C30;--af-basalt-500:#2E393D;--af-basalt-400:#46545A;
--af-basalt-300:#6B7A80;--af-basalt-200:#9FA8AA;--af-basalt-100:#C6CCCD;--af-basalt-50:#E4E8E8;

/* Verdigris — oxidised copper. The action colour. Deep, calm, never neon. */
--af-verdigris-50:#E8F5F2;--af-verdigris-100:#C4E7E0;--af-verdigris-200:#8CD3C6;
--af-verdigris-300:#4FBFAC;--af-verdigris-400:#2FC0A8;--af-verdigris-500:#0B6E62;
--af-verdigris-600:#095A50;--af-verdigris-700:#064B43;--af-verdigris-800:#04352F;--af-verdigris-900:#02211D;

/* Brass — the seal. PROOF ONLY: attestation, ledger, signature, certificate.
   Never a button, never a status, never a chart series. This is the one rule
   that keeps brass from colliding with the amber warning colour. */
--af-brass-200:#EFD9A6;--af-brass-300:#E0B761;--af-brass-400:#D2A44B;
--af-brass-500:#C4933A;--af-brass-600:#A2762A;--af-brass-700:#7C591F;

/* Semantic primitives */
--af-success-300:#7BD6A5;--af-success-400:#3DBF7A;--af-success-500:#2E9E63;--af-success-700:#155C39;--af-success-900:#0B2E1D;
--af-warning-300:#F3C878;--af-warning-400:#E6A23C;--af-warning-500:#C77E12;--af-warning-700:#7A4D08;--af-warning-900:#3D2704;
--af-danger-300:#F08A99;--af-danger-400:#E0475F;--af-danger-500:#C42B43;--af-danger-700:#791325;--af-danger-900:#3C0913;
--af-info-300:#9BBBF5;--af-info-400:#5B8DEF;--af-info-500:#3567C4;--af-info-700:#1D3D7A;--af-info-900:#0F1F3D;

/* ═══ SEMANTIC ALIASES — LIGHT (default: web, documents, reports) ═══ */
--surface-page:var(--af-stone-50);
--surface-card:#FFFFFF;
--surface-sunken:var(--af-stone-100);
--surface-raised:#FFFFFF;
--surface-inverse:var(--af-basalt-900);
--surface-accent-subtle:var(--af-verdigris-50);
--surface-proof:#FBF6EA;
--surface-overlay:rgba(31,30,27,.44);

--text-primary:var(--af-basalt-900);
--text-secondary:var(--af-stone-700);
--text-tertiary:var(--af-stone-500);
--text-disabled:var(--af-stone-400);
--text-inverse:var(--af-stone-50);
--text-accent:var(--af-verdigris-500);
--text-proof:var(--af-brass-600);
--text-on-accent:#FFFFFF;

--border-subtle:var(--af-stone-200);
--border-default:var(--af-stone-300);
--border-strong:var(--af-stone-400);
--border-accent:var(--af-verdigris-500);
--border-proof:var(--af-brass-400);
--border-focus:var(--af-verdigris-500);

--action-primary-bg:var(--af-verdigris-500);
--action-primary-bg-hover:var(--af-verdigris-600);
--action-primary-bg-active:var(--af-verdigris-700);
--action-primary-fg:#FFFFFF;
--action-secondary-bg:transparent;
--action-secondary-bg-hover:var(--af-stone-100);
--action-secondary-bg-active:var(--af-stone-200);
--action-secondary-fg:var(--af-basalt-900);
--action-secondary-border:var(--af-stone-300);
--action-ghost-bg-hover:var(--af-stone-100);
--action-danger-bg:var(--af-danger-500);
--action-danger-bg-hover:var(--af-danger-700);

--status-success-fg:var(--af-success-500);--status-success-bg:#E6F5EC;--status-success-border:#B6E3CB;
--status-warning-fg:var(--af-warning-500);--status-warning-bg:#FBF0DC;--status-warning-border:#EFD6A6;
--status-danger-fg:var(--af-danger-500);--status-danger-bg:#FBE8EB;--status-danger-border:#F0C2CB;
--status-info-fg:var(--af-info-500);--status-info-bg:#E8EFFB;--status-info-border:#C2D5F3;
--status-neutral-fg:var(--af-stone-600);--status-neutral-bg:var(--af-stone-100);--status-neutral-border:var(--af-stone-200);

--chart-1:var(--af-verdigris-500);--chart-2:var(--af-info-500);--chart-3:var(--af-stone-500);
--chart-4:var(--af-success-500);--chart-5:var(--af-basalt-400);
--chart-track:var(--af-stone-200);
}

[data-theme="dark"]{
/* ═══ SEMANTIC ALIASES — DARK (product default) ═══ */
--surface-page:var(--af-basalt-900);
--surface-card:var(--af-basalt-800);
--surface-sunken:var(--af-basalt-950);
--surface-raised:var(--af-basalt-700);
--surface-inverse:var(--af-stone-50);
--surface-accent-subtle:rgba(47,192,168,.09);
--surface-proof:rgba(196,147,58,.10);
--surface-overlay:rgba(8,10,11,.68);

--text-primary:#EDEAE3;
--text-secondary:var(--af-basalt-200);
--text-tertiary:var(--af-basalt-300);
--text-disabled:var(--af-basalt-400);
--text-inverse:var(--af-basalt-900);
--text-accent:var(--af-verdigris-400);
--text-proof:var(--af-brass-300);
--text-on-accent:var(--af-basalt-950);

--border-subtle:var(--af-basalt-700);
--border-default:var(--af-basalt-600);
--border-strong:var(--af-basalt-500);
--border-accent:var(--af-verdigris-400);
--border-proof:var(--af-brass-500);
--border-focus:var(--af-verdigris-400);

--action-primary-bg:var(--af-verdigris-400);
--action-primary-bg-hover:#4FCFBA;
--action-primary-bg-active:var(--af-verdigris-300);
--action-primary-fg:var(--af-basalt-950);
--action-secondary-bg:transparent;
--action-secondary-bg-hover:var(--af-basalt-700);
--action-secondary-bg-active:var(--af-basalt-600);
--action-secondary-fg:#EDEAE3;
--action-secondary-border:var(--af-basalt-600);
--action-ghost-bg-hover:var(--af-basalt-700);
--action-danger-bg:var(--af-danger-500);
--action-danger-bg-hover:var(--af-danger-400);

--status-success-fg:var(--af-success-400);--status-success-bg:rgba(61,191,122,.12);--status-success-border:rgba(61,191,122,.28);
--status-warning-fg:var(--af-warning-400);--status-warning-bg:rgba(230,162,60,.12);--status-warning-border:rgba(230,162,60,.28);
--status-danger-fg:var(--af-danger-400);--status-danger-bg:rgba(224,71,95,.12);--status-danger-border:rgba(224,71,95,.30);
--status-info-fg:var(--af-info-400);--status-info-bg:rgba(91,141,239,.12);--status-info-border:rgba(91,141,239,.28);
--status-neutral-fg:var(--af-basalt-200);--status-neutral-bg:var(--af-basalt-700);--status-neutral-border:var(--af-basalt-600);

--chart-1:var(--af-verdigris-400);--chart-2:var(--af-info-400);--chart-3:var(--af-basalt-300);
--chart-4:var(--af-success-400);--chart-5:var(--af-stone-500);
--chart-track:var(--af-basalt-700);
}
