/* ── Involet colour system ───────────────────────────────────────────────
   Base ramps are literal. Semantic aliases are what product code should use.
   Light only — Involet ships no dark theme, so there is one set of roles and
   no theme scope to keep in sync.
   ──────────────────────────────────────────────────────────────────────── */
:root{
  /* Warm neutral ramp — paper & ink */
  --warm-25:#FDFCF9;  --warm-50:#FAF7F1;  --warm-100:#F6F2EA;
  --warm-150:#F0EBE1; --warm-200:#E8E1D4; --warm-300:#D9D0BF;
  --warm-400:#BFB5A2; --warm-500:#9C9384; --warm-600:#756E63;
  --warm-700:#544E45; --warm-800:#35312B; --warm-900:#211E19;
  --warm-950:#12100C;

  /* Stationery accents — 100 = surface, 200 = edge / folder tab,
     350 = mount & billing bars, 600 = ink, 800 = deep ink */
  --sky-100:#E5EEF7;  --sky-200:#C9DDEF;  --sky-350:#7FA9CC; --sky-600:#3B6E96; --sky-800:#23455F;
  --lav-100:#E9EAFA;  --lav-200:#D3D7F5;  --lav-350:#A3AEEC; --lav-600:#4F5CB2; --lav-800:#313A78;
  --but-100:#FBF3DA;  --but-200:#F6E5B2;  --but-350:#DFBE63; --but-600:#8E7020; --but-800:#584512;
  --pea-100:#FAE8DD;  --pea-200:#F4D1BB;  --pea-350:#E0A377; --pea-600:#A45C37; --pea-800:#673921;
  --sag-100:#E5EEE3;  --sag-200:#CADDC7;  --sag-350:#8FB58A; --sag-600:#4C7749; --sag-800:#2F4E2D;
  --cor-100:#FBE4E2;  --cor-200:#F5C8C3;  --cor-350:#E39A93; --cor-600:#A64D47; --cor-800:#672E2A;
  --cre-100:#FBF6EB;  --cre-200:#F4EAD4;  --cre-350:#D3BE92;

  /* One step deeper than --paper-<tint>: folder tabs, layered paper edges */
  --edge-sky:var(--sky-200);
  --edge-lavender:var(--lav-200);
  --edge-butter:var(--but-200);
  --edge-peach:var(--pea-200);
  --edge-sage:var(--sag-200);
  --edge-coral:var(--cor-200);
  --edge-cream:var(--cre-200);

  /* Card mounts — the saturated frame around a mounted sheet */
  --mount-sky:var(--sky-350);
  --mount-lavender:var(--lav-350);
  --mount-butter:var(--but-350);
  --mount-peach:var(--pea-350);
  --mount-sage:var(--sag-350);
  --mount-coral:var(--cor-350);
  --mount-cream:var(--cre-350);

  /* Ink used for tactile shadows — warm, never pure black */
  --shadow-ink:38 30 20; /* @kind other */
  --highlight-ink:255 253 248; /* @kind other */

  /* ── Semantic roles: digital paper ──────────────────────────────────── */
  color-scheme:light;

  --bg-page:var(--warm-50);
  --bg-page-deep:var(--warm-150);
  --surface-paper:#FFFDF9;
  --surface-card:#FFFDF9;
  --surface-sunken:var(--warm-100);
  --surface-raised:#FFFFFF;
  --surface-glass:rgb(255 253 249 / .72);
  --surface-glass-strong:rgb(255 253 249 / .88);
  --surface-inverse:var(--warm-900);

  --text-title:var(--warm-950);
  --text-body:var(--warm-900);
  --text-secondary:var(--warm-700);
  --text-muted:var(--warm-600);   /* 4.6:1 on --bg-page — safe for small text */
  --text-faint:var(--warm-500);   /* 2.8:1 — rules, dots, disabled marks, NOT text */
  --text-inverse:var(--warm-25);
  --text-link:var(--lav-600);
  --text-link-hover:var(--lav-800);

  --border-hairline:rgb(33 30 25 / .07);
  --border-subtle:rgb(33 30 25 / .10);
  --border-strong:rgb(33 30 25 / .18);
  --border-glass:rgb(255 255 255 / .70);
  --border-focus:var(--lav-600);

  --accent:var(--lav-600);
  --accent-ink:var(--lav-800);
  --accent-surface:var(--lav-100);
  --accent-edge:var(--lav-200);

  --paper-sky:var(--sky-100);      --ink-sky:var(--sky-800);
  --paper-lavender:var(--lav-100); --ink-lavender:var(--lav-800);
  --paper-butter:var(--but-100);   --ink-butter:var(--but-800);
  --paper-peach:var(--pea-100);    --ink-peach:var(--pea-800);
  --paper-sage:var(--sag-100);     --ink-sage:var(--sag-800);
  --paper-coral:var(--cor-100);    --ink-coral:var(--cor-800);
  --paper-cream:var(--cre-100);    --ink-cream:var(--warm-800);

  /* Product status vocabulary — one colour per state, everywhere */
  --status-draft:var(--warm-600);      --status-draft-surface:var(--warm-100);   --status-draft-edge:var(--warm-200);
  --status-sent:var(--sky-600);        --status-sent-surface:var(--sky-100);     --status-sent-edge:var(--sky-200);
  --status-paid:var(--sag-600);        --status-paid-surface:var(--sag-100);     --status-paid-edge:var(--sag-200);
  --status-overdue:var(--cor-600);     --status-overdue-surface:var(--cor-100);  --status-overdue-edge:var(--cor-200);
  --status-unbilled:var(--but-600);    --status-unbilled-surface:var(--but-100); --status-unbilled-edge:var(--but-200);
  --status-running:var(--lav-600);     --status-running-surface:var(--lav-100);  --status-running-edge:var(--lav-200);
  --status-archived:var(--warm-500);   --status-archived-surface:var(--warm-100);--status-archived-edge:var(--warm-200);

  /* Money and billing */
  --money-positive:var(--warm-950);    /* figures are ink, not green */
  --money-owed:var(--cor-600);
  --money-muted:var(--warm-500);
  --bar-track:var(--warm-150);
  --bar-billed:var(--sag-350);
  --bar-unbilled:var(--but-350);
  --bar-remaining:var(--warm-300);

  --success:var(--sag-600); --success-surface:var(--sag-100);
  --warning:var(--but-600); --warning-surface:var(--but-100);
  --danger:var(--cor-600);  --danger-surface:var(--cor-100);
  --info:var(--sky-600);    --info-surface:var(--sky-100);

  --btn-primary-bg:var(--warm-950);
  --btn-primary-bg-hover:var(--warm-900);
  --btn-primary-text:var(--warm-25);

  --grain-opacity:.32; /* @kind other */
  --grain-blend:multiply; /* @kind other */
}
