# 18 — Accessibility & Inclusion Commitments

Accessibility is a launch requirement, not a follow-up.

## Standards

- **WCAG 2.1 Level AA** target across mobile, dashboard, website.
- **Mobile native:** iOS VoiceOver and Android TalkBack supported on every flow that reaches a confirmed booking.
- **Keyboard navigation** on all web surfaces; visible focus state on all interactive elements.

## Non-negotiables

- Color contrast ≥ 4.5:1 for body text; ≥ 3:1 for large text.
- Minimum touch target 44×44 pt on mobile; 24×24 px clickable area + 44 px touch target on web.
- All form fields have visible labels (no placeholder-as-label).
- All custom controls expose `accessibilityLabel`/`accessibilityRole` (RN) and ARIA attributes (web).
- Error messages are announced via `aria-live="polite"` and inline text; never color-only.
- All images have `alt` text or `accessibilityLabel`; decorative images marked as such.
- Captions / transcripts for any video content.
- Text resizes up to 200% without loss of function.

## Internationalization tied to accessibility

- RTL layout for Arabic; logical properties (`marginInlineStart`, `paddingInlineEnd`) only.
- Don't mirror icons that aren't direction-sensitive (e.g. Wi-Fi, camera).
- Mirror direction-sensitive icons (back arrow, breadcrumbs).
- Numbers, dates, currencies via `Intl` per active locale.

## Audit cadence

- A per-feature accessibility checklist sits next to the QA checklist.
- A full accessibility audit before public launch; another every quarter.
- Any failure to meet AA blocks release of the affected screen.

## Inclusive content guidelines

- Imagery includes a range of ages, abilities, and modest dress.
- Copy avoids regional idioms that don't translate; tested with native AR readers.
- Forms accept names with non-Latin characters and apostrophes.
- Phone fields support local UAE formats and international formats both.

## Tools

- `axe-core` integrated into web e2e suite.
- `react-native-a11y-checks` (or equivalent) on mobile.
- Manual screen-reader pass on every release candidate.

## Documented assumptions

- Achieving AA is a launch gate; AAA is aspirational and not a P1 commitment.
- Any third-party UI we embed (maps, Stripe Elements) is reviewed for a11y; we do not regress to a vendor's defaults if they fail AA.
