Skip to main content

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.primary and fg.numeric meet 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

CriterionHow
2.4.1 Bypass blocksAppShell renders a skip link as the first Tab stop; it moves focus to main.
2.4.11 Focus not obscuredThe 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 contrastInput borders, the focus ring and status icons meet 3:1 against their background, in both themes.
2.4.7 Focus visibleOne 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 interactionsEvery duration collapses to 0 ms and the spinner stops under reduced motion, from the OS or data-motion="reduced".
1.4.12 Text spacingEvery text role sets size, leading and tracking in relative units; nothing clips when spacing is increased.
1.4.13 Content on hover or focusNothing 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.