:root{
  /* ---- Primitive tokens: raw values, never referenced directly by components ---- */
  --ink:#1C2321;
  --ink-soft:#54504A;
  --paper:#F7F2E7;
  --paper-raised:#FFFDF8;
  --line:#DCD3BE;
  --brass:#9C6B30;
  --brass-dark:#7C5323;
  --credit:#33513C;
  --credit-soft:#EAF0EA;
  --debit:#9C3B2E;
  --debit-soft:#F5E4DF;
  --sidebar-ink:#171C1A;      /* slightly deeper than --ink, for the sidebar rail */
  --radius:3px;
  --font-display:'Fraunces', serif;
  --font-body:'IBM Plex Sans', sans-serif;
  --font-mono:'IBM Plex Mono', monospace;

  /* ---- Semantic tokens: what components actually use. Named by purpose, ----
     ---- not by pigment — this is the layer that makes re-theming a one-file edit. ---- */
  --bg-page:var(--paper);
  --bg-surface:var(--paper-raised);
  --bg-sidebar:var(--sidebar-ink);
  --bg-sidebar-hover:rgba(247,242,231,0.06);
  --bg-sidebar-active:rgba(156,107,48,0.18);

  --text-primary:var(--ink);
  --text-secondary:var(--ink-soft);
  --text-on-dark:var(--paper);
  --text-on-dark-soft:rgba(247,242,231,0.6);

  --border-default:var(--line);
  --border-focus:var(--brass);

  --action-primary:var(--brass);
  --action-primary-hover:var(--brass-dark);
  --action-primary-text:var(--paper-raised);

  --status-positive:var(--credit);
  --status-positive-bg:var(--credit-soft);
  --status-negative:var(--debit);
  --status-negative-bg:var(--debit-soft);
}

