Lumen
Styles

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.

50100200300400500600700800900950
Neutral
Solar
Amber
Teal
Cobalt
Jade
Coral
Iris

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)

PrimarySolar
#EA580C
GlowAmber
#E89200
AccentDawn
#FCDCBF
Primary texton light
#A8430A

Ground — Day (the eye-white)

BackgroundEye-white
#FCF8F3
SurfaceSclera
#FFFCF7
MutedMist
#F6F0E8
BorderLinen
#F2EBE2
ForegroundPupil
#3B302A

Ground — Night (warm espresso)

BackgroundMidnight
#1F1815
SurfaceEspresso
#29201B
MutedUmber
#2E241E
PrimarySolar · Night
#FF8A33
ForegroundMoonlight
#EAE0D6

Data accents (cool) & status

The clinical counterpoint — cool hues for categorical data, plus the four status colors.

Data 1Teal
#0EA5A4
Data 2Cobalt
#2E7DD1
Data 3Jade
#1FA971
Data 5Coral
#F2643C
Data 6Iris
#6366F1
SuccessVital
#15A36B
WarningHoney
#DD8A14
DangerSignal
#DC2626
InfoCyan
#0E96B0

On this page