:root{
  /* -- colour tokens (handoff §02) -- */
  --green:#1B5739; --green-2:#103A26; --green-soft:#E7F0EA; --green-line:#CDE0D4;
  --ink:#13211B; --gold:#C28A2C; --gold-2:#9C6E1C; --gold-soft:#F7EAD0; --gold-line:#E7D2A0;
  --paper:#F4F1E9;
  --muted:#6E685B; --line:#E3DDD0;
  --debt:#992C22; --debt-soft:#F4E0DC; --debt-line:#E2C2BB;
  --money-2:#564E41;
  /* Informational, not good/bad — "partial", "bank", "service", "salary".
     Bootstrap's own .bg-info is #0DCAF0, a cyan that belongs to no part of
     this palette and shouted off every list that used it. A desaturated
     slate sits beside the green without competing with it. */
  --slate:#3E5560; --slate-soft:#E7EDF0; --slate-line:#CFDCE2;
  --shadow:0 1px 2px rgba(20,30,24,.05),0 8px 28px rgba(20,30,24,.07);
  --app-bg:#EEECE3; --app-card:#FFFFFF; --app-line:#E0DACC;
  --app-line-soft:#ECE7DC; --app-hover:#F6F4EE; --app-ink:#1A241F;
  /* -- layout -- */
  --sidebar-w:236px; --sidebar-rail:62px; --topbar-h:50px;

  /* Re-point Bootstrap's own palette at the brand tokens so every
     .btn-primary / .text-success / .table-striped etc. follows along. */
  --bs-primary:#1B5739; --bs-primary-rgb:27,87,57;
  --bs-success:#1B5739; --bs-success-rgb:27,87,57;
  --bs-danger:#992C22;  --bs-danger-rgb:153,44,34;
  --bs-warning:#C28A2C; --bs-warning-rgb:194,138,44;
  --bs-body-bg:#EEECE3; --bs-body-color:#1A241F;
  --bs-border-color:#E0DACC;
  --bs-font-sans-serif:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --bs-font-monospace:'IBM Plex Mono',SFMono-Regular,Menlo,Consolas,monospace;
  --bs-link-color:#1B5739; --bs-link-hover-color:#103A26;

  /* Type scale — one source of truth. Before this, 26 distinct font-sizes
     were scattered across the sheet (11/11.5, 12/12.5, 13/13.5, 14/14.5,
     15/15.5 half-pixel twins), because sizes were nudged per component
     instead of chosen from a system. Colours already had --app-* tokens;
     typography now does too. */
  --text-2xs:10.5px;   /* micro labels, badge captions */
  --text-xs:11.5px;    /* table meta, hints */
  --text-sm:12.5px;    /* secondary text */
  --text-base:13.5px;  /* body / table default */
  --text-lg:15px;      /* emphasised body, section labels */
  --text-xl:16px;      /* card titles */
}
