Color
One warm primary on a pinkish-white ground, cool data accents — over even-lightness tonal scales.
One warm primary (the iris-sun) anchored on Solar; a warm, near-white ground (the sclera); cool data accents as the clinical counterpoint. Hex is canonical; OKLCH on implementation.
Tonal scales — the source of truth
Each hue is an even-lightness OKLCH ramp (50 → 950). Pick a step by role and contrast is structural, not
lucky — the scales are generated by strategy/tools/ramps.py, shipped as data in the lumen package
(import { ramps } from 'lumen'), and rendered below from the package so these rows can never go stale.
Role → step
Ground 50–200 · borders 200–300 · fills & dots 500–600 · text 700 (AA on light) · ink 800–950. Night brightens one band (300–400 carry text and accents).
The personal halo (north star)
The Neutral ramp is a skin tone, not a tinted gray — Day and Night sample two points on the human skin spectrum (very light ↔ very dark · cool ↔ warm · olive ↔ red). The generator already treats the neutral's hue/chroma as an undertone parameter, so a future, personal Halo can wear your undertone while the even-lightness structure keeps every contrast guarantee. Unshipped by design — but every token decision today must keep this door open. (Philosophy #7: the halo is personal.)
Primary — Solar (the iris-sun)
Ground — Day (the eye-white)
Ground — Night (warm espresso)
Data accents (cool) & status
The clinical counterpoint — cool hues for categorical data, plus the four status colors.