Warm paper, cold ink
Veldris color is a single tension: warm birch paper against cold fjord ink. Five product accents share one lightness and one chroma, only the hue changes, because the products differ in purpose, not in importance. All values are oklch; use the tokens, never raw hex.
Ink & paper
Ink carries hue 235 at chroma ≤ 0.02, never a pure grey. Paper carries hue 95. In dark theme the roles invert but text keeps the paper hue: never pure white on pure black.
Aurora
The aurora: sovereign light over a northern sky. It is the only accent allowed outside a product context, primary buttons, focus rings, active states, links. 500 for fills, 700 for text on light, 300 for text on dark.
One hue per product
Shared L ≈ 0.70, C ≈ 0.14. A product accent appears only inside that product's UI chrome, its marketing, or as an ordered data-viz series. Two product accents never compete in one composition, the master brand's aurora wins.
Status
| Token | Light | Dark | Use |
|---|---|---|---|
| --success-text | aurora-700 | aurora-300 | Sealed, verified, healthy |
| --warning-text | gold-700 | gold-300 | Degraded, unsealed, expiring |
| --danger / --danger-text | oklch(0.62 0.18 27) | danger-300 | Breach, failed verification, destructive actions |
| --info-text | bifrost-700 | bifrost-300 | Syncing, in-progress |
Use semantic tokens for status, always with a text label, color never carries meaning alone.
Keep body text at ink-800 / 4.5:1 contrast minimum.
Use raw hex or oklch literals in product code, tokens only.
Use accents decoratively, or gradients as fills (a <6% chroma aurora wash on hero surfaces is the sole exception).