12Interface system
Light / Dark
2 SEMANTIC SETS · 28 TOKENS EACHSOURCE: tokens/color.jsonSWITCH: ⌘⇧D
Light is the archive: mineral cream, black type, museum quiet. Dark is the instrument: carbon, mineral white, a little more Nous in the air. Vermilion stays Milo and Moss stays Offline in both.
One surface, both modes12.01
Not an inversion
Same markup, a second token set: carbon ground, mineral ink, Vermilion lifted, imagery re-mapped to Nous.
TODAY · LIGHT
What matters now?
- Render Day 1 voice trackRunning
- Write the pitch emailNeeds you
⌁ local
TODAY · DARK
What matters now?
- Render Day 1 voice trackRunning
- Write the pitch emailNeeds you
⌁ local
Same markup, different token set. The imagery re-maps: National Park on cream, Nous on carbon. Grand Teton, Carol M. Highsmith, Library of Congress.
Tokens12.02
The two semantic sets
Every semantic token with its light and dark value, from tokens/color.json.
All semantic tokens, light and dark
| Semantic token | Light | Dark |
|---|
Rules12.03
How dark differs
Eight rules for what changes in dark and what must not.
- 01Ground is carbon, not grey.
#0B0C09— the same black the image engine uses for shadows, so photographs sit in the surface rather than on it. - 02Ink is mineral, not white.
#EDE9DFkeeps the paper feeling of light mode and stops glare at large serif sizes. - 03Vermilion lifts to
#FF5A32. Contrast on carbon reaches 5.6:1 so the agent colour can carry text, not only marks. Semantics do not change. - 04Moss lifts to
#8DA64A. Still secondary, still Offline. - 05Hairlines get heavier in value, not in width.
#2C2E28reads as a rule on carbon; strong rules become mineral. - 06Depth uses less shadow. Level 3 and 4 rely on edge and scrim; shadows on black do little.
- 07Imagery prefers Nous. Deep blacks, fine dither, Vermilion as signal. National Park stays available where the surface wants warmth.
- 08The user chooses, the OS suggests. Stored choice wins; otherwise
prefers-color-scheme. Both are honoured before first paint.