1.66:1 · fails 4.52:1 · passes hover to fix it
Design is not the part that looks good. Whether text can be read is a measurement rather than an opinion — and one with a number, a standard, and in more than forty countries a law behind it.
The laws differ. The standard does not. The Americans with Disabilities Act, the European Accessibility Act, the UK Equality Act, the Accessible Canada Act, Australia’s Disability Discrimination Act — written differently, enforced differently, argued differently, and nearly all of them pointing at the same technical document. WCAG, Level AA. Which is the useful part: a product sold everywhere needs one answer, not one per market.
So a colour is not picked because somebody likes it. The second line above is warning yellow on the primary fill — 1.66 to 1, and both of them ours. That is exactly why someone would reach for it. Hovering swaps it for the value the system already carries for text on that fill.
None of this is aspiration. Each one is in a component spec or in the reset, and most of it is enforced by the components rather than left to whoever is building a screen.
The single most useful decision in this system is that the form controls are native elements. A <select> arrives already knowing type-ahead, arrow keys, Escape, focus return, and how to announce itself to a screen reader. None of that had to be built, and none of it can rot.
Almost every accessibility bug is something re-implemented worse. A <div> with a click handler has no role, no name, no keyboard behaviour and no focus — and each of those is then added back, separately, by someone who has to remember all four.
The specs put it as a prohibition rather than a preference, which is the right strength: do not add a JS keyboard handler.
A focus ring on every click is noise, and noise gets designed away — which is how systems end up with no ring at all. :focus-visible is the browser deciding for you: it shows the ring when the focus came from a keyboard and hides it when it came from a pointer.
The left one is drawn as it would appear; the right one is a real button you can click. Tab to either and the browser will show you the real thing.
This is the part of the page that matters. Everything above is already true; everything below is not, and the first one is worse than absent — it is a contradiction the system is carrying in two places at once.