Every colour on this site derives from six seeds per theme. Nothing is hand-picked, and nothing outside tokens/ is allowed to contain a literal colour.
Six values per theme. Adding a theme is six more — which is why a fifth theme is a row in a table rather than a stylesheet.
light · data-theme="newsprint"
dark · data-theme="ink"
light · data-theme="folio"
light · data-theme="contrast"
What the rest of the site actually references. Switch the theme in the header and every swatch below moves with it.
--groundThe page.--surfaceCards, overlays, controls.--textBody and headings.--text-mutedSecondary text and disabled labels.--text-faintApparatus that should recede.--ruleStructural separation.--rule-hairSeparation inside one object.--accentFigure numbers, current position, one call to action.--accent-quietSelection and hover ground.--state-availableA slot is free. Never the accent.--state-warningSomething needs attention.--state-dangerDestructive, or failed.unDraw hands you one palette, baked in as hex. There are four themes here, and two of them are grounds that palette cannot sit on — so no downloaded file is served as downloaded. scripts/tokenize-illustration.mjs classifies every colour in it and rewrites it onto these, and the theme decides from then on, exactly like every other colour on this page.
--illus-lineThe deepest darks — detail laid against an outline.--illus-line-softThe common outline. Two darks, or figures go flat.--illus-fillThe brand shape — whatever it was downloaded in.--illus-quietA tint of the brand shape.--illus-paperEverything that arrived white.--illus-neutralStructural grey.--illus-neutral-deepThe shadow side of a structural grey.--illus-skinFigure tone. Not derivable from six seeds.--illus-skin-shadeThe shadow side of a figure tone.--illus-hairWarm darks that are not linework.Three families with three jobs: a serif for reading, a sans for chrome, a mono for apparatus. The body is chrome, so prose opts INTO the serif rather than inheriting it — otherwise admin panels arrive set in a reading face.
I build systems.
From questions to systems.
Thinking, in the open.
What the decision cost
The sentence under a heading, carrying the argument.
Reading size, set in the serif at the measure.
Navigation, labels, controls.
Captions, hints and footnotes.
Fig. 4 · 980 ms · 12 Sep 2026
Border, fill and radius each say “operable”. They are spent only on things that are — an editorial block that looks operable and is not has lied.
Editorial surfaces take a rule and whitespace and no radius at all. A card is a considered exception; only overlays float, so only overlays have a shadow.
Used where the reader is meant to pick something up.