Color
Every color token in both themes, with hex values and computed WCAG contrast ratios so you never have to eyeball accessibility.
Surfaces
The four-step surface stack. Note surface-raised equals surface on this palette — elevation is carried by shadow, not by a lighter fill.
vs bg 1.00:1
vs bg 1.00:1
vs bg 1.03:1
vs bg 1.07:1
vs bg 1.08:1
vs bg 1.06:1
vs bg 1.03:1
vs bg 1.07:1
Borders
vs bg 1.20:1
vs bg 1.56:1
vs bg 1.43:1
vs bg 2.33:1
vs bg 1.13:1
vs bg 1.25:1
Text
Tertiary is intentionally darker than a typical “tertiary” gray — it's tuned to clear 4.5:1 against both bg and surface, not just look muted.
vs bg 17.34:1
vs bg 19.68:1
vs bg 7.37:1
vs bg 7.68:1
vs bg 4.63:1
vs bg 5.82:1
Accent
The brand green family. Production defines --primary: #039855 (exposed here as accent-vivid, for icons/large text/fills at the 3:1 threshold); accent itself is the AA-safe same-hue cut #027a45 used for small text and links.
vs bg 5.27:1
vs bg 15.03:1
vs bg 6.18:1
vs bg 15.49:1
vs bg 6.61:1
vs bg 16.11:1
vs bg 1.09:1
vs bg 1.28:1
vs bg 5.27:1
vs bg 15.86:1
vs bg 5.27:1
vs bg 3.92:1
vs bg 3.63:1
vs bg 15.03:1
Signal
The literal brand neon (#60FF70). It's reserved for dark/black surfaces — on a light background it fails contrast, so it never appears as text or a fill on the light theme's surface/bg.
vs bg 1.27:1
vs bg 15.03:1
vs bg 1.02:1
vs bg 1.20:1
vs bg 5.27:1
vs bg 15.49:1
Status — success
vs bg 5.27:1
vs bg 8.64:1
vs bg 1.09:1
vs bg 1.20:1
vs bg 7.90:1
vs bg 14.02:1
Status — warning
vs bg 4.88:1
vs bg 11.79:1
vs bg 1.08:1
vs bg 1.22:1
vs bg 8.82:1
vs bg 13.65:1
Status — danger
vs bg 6.29:1
vs bg 3.04:1
vs bg 1.19:1
vs bg 1.09:1
vs bg 9.74:1
vs bg 10.37:1
Status — info
vs bg 5.03:1
vs bg 7.74:1
vs bg 1.19:1
vs bg 1.18:1
vs bg 10.07:1
vs bg 10.91:1