Conformance by gate, not intention.
Target: WCAG 2.2 AA. What follows is enforced on every build — a check that can fail is the difference between a statement and a wish.
| requirement | how it holds |
|---|---|
| Perceivable state | State is never colour alone: glyph + label + border + fill. |
| Contrast | 4.5:1 body text, 3:1 non-text, checked as rendered component pairs. |
| Keyboard | Full traversal plus an axe pass on every template. |
| Motion | Under reduced-motion every sequence resolves instantly to its end state; nothing loops. |
| Stability | Cumulative layout shift budget: zero. Reserved heights everywhere. |
| Structure | Skip link, landmarks, labelled navs, table headers, focus-visible throughout. |
Known limitation
The homepage sample needs JavaScript to convert an image; without it, the page states the same facts statically and nothing depends on the demo. If you hit a barrier anywhere else, write hello@openconvert.dev — fixed within one release cycle.