nilam · नीलम · hue 285 · 7,430 assertions
Colour, proven.
Every lightness on this page was found by inverting a contrast requirement, not chosen. The semantic hues were selected to maximise separation under three kinds of colour blindness. Nothing here is hand-tuned.
The signature
One hue, two brand moments. A filled button inverts the polarity of the page it
sits on, so step 9 differs by mode — and --brand-ink follows it. The
two cards below are on the same page: one forced light, one forced dark, with no
token redeclared.
The assertion nobody else ships
The four status solids, as four different readers see them. Where two chips become
one colour the palette says so out loud, and
proveStatusChannels() fails the build unless those components carry a
glyph as well as a hue. Every badge and note below has one, and that is why.
The solved scales
1 page · 2 subtle · 3–5 component rest/hover/active · 6–8 border subtle/normal/hover · 9–10 solid/hover · 11–12 text. Radix's role model, with the roles as contracts a solver satisfies rather than labels on chosen swatches.
Buttons
Disabled uses legible tokens rather than opacity, which fades the label below 4.5:1.
Forms
We only use this for receipts.
Enter a valid email address.
Status
Every glyph is required, not decorative — see the simulation above.
Overlays
Native throughout. <dialog> for the modal — focus trap, Esc and
an inert background with no library. The menu and tooltip are the Popover API plus
CSS anchor positioning, which reached Baseline in 2026: the popover anchors itself
to the button that opened it, so there is no Floating UI and no JS.
Disclosure and tabs
<details name> makes the accordion exclusive with no state to manage.
Why is info achromatic?
Why is step 9 different in each mode?
What is not derived?
GLOW_L = 0.66. Four derivations were tried and none produce it. It is measured off Zima Blue and an accent that works.Revenue by channel
Table
| Account | Owner | Status | MRR |
|---|---|---|---|
| Northwind | NW | ✓Active | £4,200 |
| Contoso | CO | !Expiring | £2,750 |
| Initech | IN | ×Failed | £1,980 |
| Umbrella | UM | iTrial | £0 |
| Globex | GX | ✓Active | £6,410 |
Loading
Four, because they answer four different questions. Prefer the skeleton wherever the
shape is predictable — a spinner tells the reader nothing about what is arriving.
Under prefers-reduced-motion these keep animating on opacity alone: a
frozen spinner reads as a hung app, not as reduced motion.
spinner · unknown duration
dots · inline thinking
Generatingprogress · known proportion
bar · unknown duration
skeleton · shape is known