Accessibility
WCAG 2.2 AA everywhere, with 7:1 contrast for primary text and numerals.
Target: WCAG 2.2 AA everywhere (DECISIONS.md #8), asserted in token tests, unit tests and the e2e suite against every page in both themes.
Named exceptions above AA
- 7:1 contrast for primary text and financial numerals:
fg.primaryandfg.numericmeet AAA on every surface layer in both themes. - No time limits on forms with legal weight. This is a consumer rule; the system never adds a timeout.
WCAG 2.2 criteria the system meets
| Criterion | How |
|---|---|
| 2.4.1 Bypass blocks | AppShell renders a skip link as the first Tab stop; it moves focus to main. |
| 2.4.11 Focus not obscured | The focus ring is an outline with offset; sticky rows offset by the TopBar height (top-topbar), so a focused control is never covered. |
| 2.5.8 Target size (minimum) | size.target.min is 24 px; the smallest control is 28 px (24 px compact) and a test asserts no interactive variant renders below 24 px. |
| 1.4.11 Non-text contrast | Input borders, the focus ring and status icons meet 3:1 against their background, in both themes. |
| 2.4.7 Focus visible | One shared focus-visible style (2 px outline, 2 px offset) on every interactive component; rendered with outline so it survives forced colours. |
| 2.3.3 Animation from interactions | Every duration collapses to 0 ms and the spinner stops under reduced motion, from the OS or data-motion="reduced". |
| 1.4.12 Text spacing | Every text role sets size, leading and tracking in relative units; nothing clips when spacing is increased. |
| 1.4.13 Content on hover or focus | Nothing in the system appears only on hover; adornments and icons are always rendered. |
Consumer responsibilities
These are app-level criteria. The using-macaw skill repeats them and the reviewer agent asks about them.
- 3.2.6 Consistent help: put help links and contact details in the same place on every page.
- 3.3.7 Redundant entry: do not ask for information already given in the same flow.
- 3.3.8 Accessible authentication: no cognitive tests at login; allow paste and password managers.
- 2.5.7 Dragging movements: any drag interaction has a single-pointer alternative.
In this section
- Color: text and non-text contrast on every layer.
- Keyboard: focus, the skip link and every component's keys.
- Developers: the manifest contract and the checks in CI.