Hextor data-viz & verdict palette (FROZEN)
Five axis slots in fixed order plus the reserved verdict palette. Axis order and colour are frozen forever — changing either invalidates every Skill Card ever shared.
npx shadcn@latest add @hextor/viz-tokensDocs
AXIS SLOTS are fixed in order and colour, never cycled, never reassigned. The radar's silhouette is only comparable across users and across seasons if both are frozen; changing either invalidates every Skill Card ever shared. If the rubric changes, ADD an axis — never recolour one.
The values are the validated categorical palette, stepped per mode (dark: worst adjacent CVD deltaE 8.4, normal-vision 19.3, all at least 3:1; light: 9.1 / 19.6). In light mode three slots land under 3:1, so the relief rule applies — every axis is ALWAYS directly labelled with its number and a table view exists. Never colour-alone.
VERDICT SLOTS are the reserved status palette, deliberately not drawn from the axis slots so a pass/fail colour can never be mistaken for a skill axis — which is why correctness is blue, not green. They are mode-invariant: defined once under :root and deliberately ABSENT from the dark block, so .dark inherits them and the two can never drift.
Note that shadcn add merges cssVars append-only unless you pass --overwrite. That is the right default for adoption, but it means the CLI will never tell you your values have drifted from ours. If you depend on cross-app comparability, diff against https://ui.hextor.co/r/viz-tokens.json in your own CI.