Files
zeekayandHanzo Dev e87fddb327 State is drawn in luminance, and a gate counts what is not
theme.ts already recorded this decision for the chrome — "There is no
accent constant… the purple that used to live here was a literal on a
register documented as monochrome." State is where the hues survived it:
nine files each mapped state to colour on their own, in green, amber,
orange, yellow, cyan and red, and on this palette every one resolves to
one grey. --color-brand is hsla(0,0%,100%) and even --color-red is
hsla(0,0%,60%), so four hues rendered as one value: an indicator that
says nothing.

hanzo/status.ts carries it instead, in two things the ramp can express.
Luminance carries degree — settled is brightest, in motion is the middle,
at rest is dimmest, which is the order a list is scanned in and always
beside the state's own name. Inversion carries attention and is spent
once, on the one step a person has something to do about: the brand as a
fill with the ink that reads on it. Spending it anywhere else is what
made a healthy machine the brightest thing on screen.

Information is not a state and takes no step: two cyan callouts become a
lifted surface from the ramp. A warning tint at 5% alpha was the whole of
a border-0 alert's signal and is indistinguishable from the ground here,
so the surface lifts and the icon carries it. The one yellow call to
action was already an inversion — yellow fill, black ink — and stays one
without the hue.

bin/palette.mjs is the enforcement, and it reads the SOURCE because the
theme cannot enforce itself: Tailwind 4's @theme OVERRIDES tokens rather
than replacing the set, so a scale commented out of it keeps Tailwind's
default. Measured in the bundle, --color-cyan-400 is defined and
.text-cyan-400 is emitted. 177 chromatic and 7 literal today, ratcheting
down, failing when either rises. Colours named in comments do not count —
the first run reported the hsla in a note written to explain a
conversion, which would make the gate argue against documenting the rule
it enforces.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-11 04:08:51 -07:00

6 lines
60 B
JSON

{
"chromatic": 177,
"literal": 7,
"achromatic": 326
}