Accessibility
WCAG 2.2 AA is the floor. AAA where the cost is small. We treat accessibility as a correctness problem, not a feature.
Contrast
- Body text ≥ 4.5 : 1 (AA). Default body is 19.6 : 1 (AAA).
- Large text (≥ 18.66 px bold or ≥ 24 px regular) ≥ 3 : 1.
- UI components and graphical objects ≥ 3 : 1.
- Focus indicators ≥ 3 : 1 against both the component and its background.
Focus & keyboard
- Every interactive element is reachable and operable with a keyboard.
:focus-visibleis required, neveroutline: nonewithout a replacement. - Focus order matches visual order. Skip links lead to the main landmark.
- Target size is ≥ 24 × 24 CSS pixels (WCAG 2.2 — 2.5.8).
Motion
- Honour
prefers-reduced-motion. We collapse durations to 0.01 ms in the global stylesheet. - No parallax or large auto-scroll without an explicit user toggle.
Forms
- Every input has a programmatic label. Placeholder is never a label.
- Error messages reference the field by id and are announced via
aria-describedby. - No CAPTCHA without an accessible alternative (WCAG 2.2 — 3.3.8).