:root{
/* base palette - six colors, no more */
--ink:#111312;
--paper:#ECEDE7;
--paper-deep:#E0E2DA;
--ledger-green:#0E4F4A;
--signal:#B4532A;
--rule-gray:#5D625E;
--signal-deep:#9A4522; /* Rust for small text on light */

/* tints, derived only for hairlines and hover washes. never as fills of their own */
--ink-12:rgba(17,19,18,.12);
--ink-08:rgba(17,19,18,.08);
--ink-04:rgba(17,19,18,.04);
--rule-40:rgba(93,98,94,.4);
--signal-12:rgba(180,83,42,.12);

/* semantic - text */
--text-primary:var(--ink);
--text-secondary:var(--ledger-green);
--text-muted:var(--rule-gray);
--text-inverse:var(--paper);
--text-accent:var(--signal-deep);
--text-link:var(--ink);
--text-link-hover:var(--signal-deep);

/* semantic - surface */
--surface-page:var(--paper);
--surface-raised:var(--paper-deep);
--surface-card:var(--paper-deep);
--surface-panel:var(--paper-deep);
--surface-inverse:var(--ink);
--surface-accent:var(--signal);

/* semantic - line */
--border-hairline:var(--rule-40);
--border-strong:var(--ink);
--border-accent:var(--signal);
--divider:var(--rule-40);

/* semantic - control */
--control-bg:var(--ink);
--control-fg:var(--paper);
--control-bg-hover:var(--signal);
--control-track:var(--ink-12);
--control-fill:var(--ledger-green);

/* data visualization - two series colors, one axis color */
--data-1:var(--ledger-green);
--data-2:var(--signal);
--data-axis:var(--ink);
--data-grid:var(--rule-40);
}

/* Reverse context: dark is the exception, not a parallel default.
   Apply .on-ink to a section to flip text and line colors. */
.on-ink{
--text-primary:var(--paper);
--text-secondary:var(--paper-deep);
--text-muted:var(--rule-gray);
--surface-page:var(--ink);
--surface-card:#1B1E1C;
--border-hairline:rgba(236,237,231,.22);
--divider:rgba(236,237,231,.22);
--control-bg:var(--paper);
--control-fg:var(--ink);
background:var(--ink);
color:var(--paper);
}
