:root{
  /* base — warm neutrals */
  --ivory-50:#FCFAF6;
  --ivory-100:#F7F3EC;
  --stone-100:#EFE9E0;
  --stone-200:#E2DAD0;
  --stone-300:#CFC5B8;
  --taupe-300:#BFB09B;
  --taupe-400:#A6957F;
  --taupe-500:#8A7A67;
  --taupe-600:#7C6A55;
  --taupe-700:#5F5344;
  --ink-400:#7A7268;
  --ink-600:#4A453E;
  --ink-800:#262320;
  --ink-900:#171512;
  --white-warm:#FFFDFA;

  /* base — semantic hues, all desaturated to sit inside the warm palette */
  --moss-600:#4E6B52;
  --ochre-600:#A8792F;
  --terracotta-600:#8C3B2E;
  --slate-600:#46596B;

  /* surfaces */
  --surface-page:var(--ivory-50);
  --surface-page-alt:var(--ivory-100);
  --surface-card:var(--white-warm);
  --surface-stone:var(--stone-100);
  --surface-stone-deep:var(--stone-200);
  --surface-ink:var(--ink-900);
  --surface-accent:var(--taupe-600);
  --surface-scrim:rgba(23,21,18,0.42);

  /* text */
  --text-primary:var(--ink-900);
  --text-secondary:var(--ink-600);
  --text-muted:var(--ink-400);
  --text-accent:var(--taupe-600);
  --text-on-ink:var(--ivory-100);
  --text-on-ink-muted:var(--taupe-300);
  --text-on-accent:var(--ivory-50);

  /* lines */
  --rule-hairline:#DED6CA;
  --rule-medium:var(--stone-300);
  --rule-strong:var(--ink-900);
  --rule-on-ink:rgba(247,243,236,0.22);

  /* interaction */
  --accent:var(--taupe-600);
  --accent-hover:var(--taupe-700);
  --accent-soft:var(--stone-100);
  --focus-ring:var(--taupe-600);

  /* status */
  --status-success:var(--moss-600);
  --status-warning:var(--ochre-600);
  --status-danger:var(--terracotta-600);
  --status-info:var(--slate-600);
}
[data-theme="ink"]{
  --surface-page:var(--ink-900);
  --surface-page-alt:var(--ink-800);
  --surface-card:var(--ink-800);
  --text-primary:var(--ivory-100);
  --text-secondary:var(--taupe-300);
  --text-muted:var(--taupe-400);
  --text-accent:var(--taupe-300);
  --rule-hairline:rgba(247,243,236,0.18);
  --rule-medium:rgba(247,243,236,0.28);
  --rule-strong:var(--ivory-100);
}
