Accessibility statement
SPINE targets WCAG 2.1 AA. This statement describes what has actually been checked and fixed as of 30 August 2026 — and what remains open. Accessibility is why this demo is built on UX4G, the Government of India's design system.
Checked and passing
- check_circleText contrast: every text-on-colour combination on every page was measured programmatically in both the light and high-contrast (dark) themes; all meet 4.5:1 (3:1 for large text). Failures this audit found — the top bar, alert text, and status tags in dark mode — were fixed.
- check_circleHeadings: every page has exactly one h1 and no skipped heading levels.
- check_circleKeyboard: every flow — matcher, OTP, consent, booking, filters, menus, account tabs — uses native form controls and links, with no custom key handling and no positive tabindex. The mobile menu is a disclosure button (aria-expanded); it moves focus into the panel on open, and Escape closes it and returns focus.
- check_circleA skip link on every page, visually hidden until focused, landing on the main content.
- check_circleVisible focus indicators everywhere, including a restored outline on expanded accordion buttons that the design system removes, and a page-wide fallback outline for anything not styled specifically.
- check_circleTouch targets of at least 44px on buttons, form fields, and standalone links. Tag-shaped links use an invisible extended hit area.
- check_circleForm errors are announced via live regions, marked with aria-invalid, tied to their fields with aria-describedby, and focus moves to the first invalid field.
- check_circleReduced motion: all transitions and animations collapse to instant when prefers-reduced-motion is set.
- check_circleStatus is never colour alone — every state pairs colour with text, and usually an icon.
Known gaps
- pendingNo human screen-reader pass yet. Everything above was verified with automated measurement and accessibility-tree inspection, which catches structure but not whether the experience is followable by ear. A VoiceOver/NVDA walkthrough is the next step.
- pendingHindi is real but partial and unreviewed: the home and mental health pages carry full Hindi versions (correct lang attributes, Devanagari type, 1.8 line-height), but the translation is model-generated and has not been checked by a Hindi-speaking editor — treat it as a starting point, not verified public-service copy. Scheme and provider records, and the rest of the site, remain English.
- pendingSwitching themes animates colours for about a third of a second; steady-state contrast passes in both themes (and the animation is disabled under reduced motion), but the transition itself briefly blends colours.
- pendingInline links inside sentences keep their natural text height rather than a 44px block — an accepted convention, but worth naming.
- pendingSome fixes patch the design system app-side (dark-theme tag, alert, and top-bar colours); upstream UX4G still ships those defaults.
Hit a barrier this page doesn't mention? Tell us on the help page — accessibility problems get fixed first.