# Accessibility

> Contrast, focus, motion and language rules every screen meets.

- Targets: 32px (`icon-sm`) is the smallest control; use 36px or more by default and 44px on touch (mobile triggers, chat header buttons).
- Every icon-only button has an `aria-label` (the audit found 39 of 226 without one); every field has a visible [`Label`](/design/components/label.md), never a placeholder alone; logos and faces beside a name take `alt=""`.
- No `outline-none` without a `focus-visible` replacement; primitives draw the 3px `ring` halo.
- Use real elements: buttons and links, not clickable `div`s; one `h1` per page, no heading jumps, `nav` and `main` landmarks; chat output lives in an `aria-live` region.
