:root{
/* ── Base: Plum (primary brand) ─────────────────────────── */
--plum-50:#F6EFF8;--plum-100:#EADCEF;--plum-200:#D7BEE1;--plum-300:#B98CC9;--plum-350:#A863C2;--plum-400:#8E4FA6;--plum-500:#5B2A6E;--plum-600:#4A2159;--plum-700:#381843;--plum-800:#26102D;
/* ── Base: Rose (accent) ───────────────────────────────── */
--rose-50:#FCF0F6;--rose-100:#F7DCEA;--rose-200:#EFBFD8;--rose-300:#D9A8C7;--rose-400:#C27FA9;--rose-500:#A85C88;--rose-600:#83446A;
/* ── Base: Ink (deep surfaces, headings) ────────────────── */
--ink-900:#1B1420;--ink-800:#251C2B;--ink-700:#3A2F41;--ink-600:#4E4156;--ink-500:#6B5C74;
/* ── Base: Neutrals (warm sand → graphite) ─────────────── */
--neutral-0:#FFFFFF;--neutral-25:#FBF8F4;--neutral-50:#F5F1EB;--neutral-100:#EDE7DF;--neutral-200:#E8E0D6;--neutral-300:#CFC4B7;--neutral-400:#A99E92;--neutral-500:#807480;--neutral-600:#5C525F;--neutral-700:#463C48;--neutral-800:#302834;--neutral-900:#211B24;
/* ── Base: Semantic hues ───────────────────────────────── */
--green-500:#2F6B4F;--green-50:#EAF3ED;--red-500:#B3382C;--red-50:#FBECEA;--blue-500:#4A5FA8;--blue-50:#EDEFF8;--clay-500:#A25A1E;--clay-50:#FBF0E6;

/* ── Semantic: text ────────────────────────────────────── */
--text-heading:#241B26;
--text-body:var(--neutral-700);
--text-muted:var(--neutral-500);
--text-subtle:var(--neutral-400);
--text-brand:var(--plum-500);
--text-inverse:#F8F3F7;
--text-inverse-muted:#B7A9BA;
/* Theme-INVARIANT: foregrounds that belong to the ink surface itself
   (app sidebar, toast, inverse button). Never overridden in dark. */
--text-on-ink:#F8F3F7;
--text-on-ink-muted:#B7A9BA;
--text-on-ink-subtle:#8C7F90;
--text-on-brand:#FFFFFF;
--text-link:var(--plum-500);
--text-link-hover:var(--plum-600);
--text-danger:var(--red-500);
--text-success:var(--green-500);
--text-warning:var(--clay-500);

/* ── Semantic: surfaces ────────────────────────────────── */
--surface-page:var(--neutral-25);
--surface-card:var(--neutral-0);
--surface-sunken:var(--neutral-50);
--surface-raised:var(--neutral-0);
--surface-inverse:var(--ink-900);
--surface-inverse-alt:var(--ink-800);
--surface-brand:var(--plum-500);
--surface-brand-hover:var(--plum-600);
--surface-brand-active:var(--plum-700);
--surface-brand-soft:var(--plum-50);
--surface-accent-soft:var(--rose-50);
--surface-hover:var(--neutral-50);
--surface-active:var(--neutral-100);
--surface-disabled:var(--neutral-100);
--surface-overlay:rgba(27,20,32,.55);
--surface-glass:rgba(255,255,255,.72);

/* ── Semantic: borders ─────────────────────────────────── */
--border-subtle:var(--neutral-100);
--border-default:var(--neutral-200);
--border-strong:var(--neutral-300);
--border-brand:var(--plum-500);
--border-inverse:rgba(255,255,255,.14);
--border-focus:var(--plum-400);

/* ── Semantic: status pairs ────────────────────────────── */
--status-success-fg:var(--green-500);--status-success-bg:var(--green-50);--status-success-border:#C6DFD0;
--status-warning-fg:var(--clay-500);--status-warning-bg:var(--clay-50);--status-warning-border:#EED8C0;
--status-danger-fg:var(--red-500);--status-danger-bg:var(--red-50);--status-danger-border:#EFC8C2;
--status-info-fg:var(--blue-500);--status-info-bg:var(--blue-50);--status-info-border:#CDD4EC;
--status-neutral-fg:var(--neutral-600);--status-neutral-bg:var(--neutral-50);--status-neutral-border:var(--neutral-200);

/* ── Semantic: app sidebar ─────────────────────────────── */
--sidebar-bg:var(--neutral-50);
--sidebar-border:var(--border-default);
--sidebar-fg:var(--text-heading);
--sidebar-fg-muted:var(--text-body);
--sidebar-fg-subtle:var(--text-subtle);
--sidebar-item-hover-bg:var(--neutral-100);
--sidebar-item-active-bg:var(--surface-brand-soft);
--sidebar-item-active-fg:var(--text-brand);
--sidebar-panel-bg:var(--surface-card);
--sidebar-panel-border:var(--border-default);
--sidebar-accent:var(--rose-600);
--sidebar-count-bg:var(--rose-300);
--sidebar-count-fg:var(--ink-900);

/* ── Semantic: focus ring ──────────────────────────────── */
--focus-ring:0 0 0 3px rgba(142,79,166,.30);
color-scheme:light;
}

/* ══ Dark theme — warm near-black, deliberately low contrast.
      Scope: the product app. Set data-theme="dark" on <html>. ══ */
[data-theme="dark"]{
--text-heading:#EFE8EE;
--text-body:#CDC2CE;
--text-muted:#948A96;
--text-subtle:#6F6673;
--text-brand:var(--plum-300);
--text-inverse:#241B26;
--text-inverse-muted:#5C525F;
--text-on-brand:#1B1420;
--text-link:var(--plum-300);
--text-link-hover:var(--plum-200);
--text-danger:#E8938A;
--text-success:#79C79E;
--text-warning:#E0A165;

--surface-page:#1B1420;
--surface-card:#251C2B;
--surface-sunken:#201828;
--surface-raised:#2C2233;
--surface-inverse:#120D16;
--surface-inverse-alt:#1B1420;
--surface-brand:var(--plum-350);
--surface-brand-hover:#B87ACF;
--surface-brand-active:#9A55B4;
--surface-brand-soft:#2B1F33;
--surface-accent-soft:#2A1B25;
--surface-hover:#2E2436;
--surface-active:#382C41;
--surface-disabled:#2A2131;
--surface-overlay:rgba(10,7,12,.66);
--surface-glass:rgba(37,28,43,.78);

--border-subtle:#2E2434;
--border-default:#3A2F41;
--border-strong:#4E4156;
--border-brand:var(--plum-350);
--border-inverse:rgba(255,255,255,.10);
--border-focus:var(--plum-350);

--status-success-fg:#79C79E;--status-success-bg:#17251D;--status-success-border:#283B30;
--status-warning-fg:#E0A165;--status-warning-bg:#2A1F16;--status-warning-border:#453220;
--status-danger-fg:#E8938A;--status-danger-bg:#2A1719;--status-danger-border:#47262A;
--status-info-fg:#9FB0E8;--status-info-bg:#191C2A;--status-info-border:#2C3245;
--status-neutral-fg:#A79EA9;--status-neutral-bg:#241C29;--status-neutral-border:#3A2F41;

--sidebar-bg:#120D16;
--sidebar-border:#2E2434;
--sidebar-fg:var(--text-on-ink);
--sidebar-fg-muted:var(--text-on-ink-muted);
--sidebar-fg-subtle:var(--text-on-ink-subtle);
--sidebar-item-hover-bg:rgba(255,255,255,.06);
--sidebar-item-active-bg:rgba(255,255,255,.10);
--sidebar-item-active-fg:var(--text-on-ink);
--sidebar-panel-bg:#1F1725;
--sidebar-panel-border:rgba(255,255,255,.10);
--sidebar-accent:var(--rose-200);
--sidebar-count-bg:var(--rose-300);
--sidebar-count-fg:var(--ink-900);

--focus-ring:0 0 0 3px rgba(168,99,194,.35);
color-scheme:dark;
}
