Accessibility

Most users will reach this site under stress, on a phone, possibly with shaking hands, possibly with degraded vision, possibly with poor connectivity. Accessibility isn't a polish item for us — it's the primary use case. Here's what we've done, what we know is missing, and how to report something we got wrong.

Commitments

  • Target: WCAG 2.1 Level AA, with selected Level AAA where reasonable.
  • No-mouse usage: every interactive element reachable + activatable by keyboard.
  • Screen reader support: semantic HTML, proper heading hierarchy, ARIA labels on non-text controls.
  • Colour contrast: all body text and interactive elements meet AA (4.5:1) minimum; emergency CTAs target AAA (7:1).
  • Motion: no auto-playing animation, no parallax, no flashing content. Respects prefers-reduced-motion.
  • Offline + low-bandwidth: the PWA caches the directory and core map tiles so the site works on a slow or no connection after a single visit.
  • Multilingual: Hindi and Kannada machine-translation baseline shipped; native-speaker reviews welcome. Tamil, Telugu, Marathi, Bengali, Malayalam scaffolded.
  • Mobile-first: tap targets ≥44×44 pixels; thumb-reach prioritised.

Done in v0.2

  • Semantic HTML throughout: <main>, <nav>, <header>, <footer> landmarks.
  • Skip-to-content link visible on keyboard focus.
  • Visible :focus-visible outlines on all interactive elements.
  • ARIA labels on icon-only buttons (save star, search, share, dead-number).
  • aria-hidden on decorative emoji icons that pair with text.
  • aria-live="polite" on status messages (geolocate status, form feedback).
  • aria-pressed state on toggle controls (save).
  • Form labels associated with inputs via for/id; placeholders never substitute for labels.
  • Heading hierarchy: each page has exactly one <h1>, nested correctly.
  • Dark-mode support via prefers-color-scheme.
  • Language declared on <html lang> and updated when the language switcher is used.

Known gaps (we're honest about these)

  • No professional WCAG audit yet. The above is self-reported. We have not contracted a third-party audit. A volunteer or grant-funded audit is a v1.5 priority.
  • Map view (MapLibre) is image-driven and not fully accessible to screen readers. We surface the same data as a sortable list on the same page, so map content is not load-bearing.
  • Hindi / Kannada strings are machine-translated. Medical-emergency copy in particular needs native-speaker review. Until reviewed, the language switcher flags these as "machine-only".
  • Tamil, Telugu, Marathi, Bengali, Malayalam show up in the switcher but fall back to English at runtime until translations land.
  • Embed widget badge (SVG) is an image; the surrounding link's text describes the listing, but the badge itself doesn't carry semantic content for screen readers.
  • No specific dyslexia-friendly typography toggle (e.g., OpenDyslexic). Considered.
  • Form validation messages rely on the browser's built-in messages. Custom, more verbose validation is on the roadmap.

Reporting an accessibility issue

If something on this site is unreachable, unreadable, or unusable for you, please tell us. We treat accessibility bugs as priority issues.

  • Preferred: open a GitHub issue tagged accessibility at our issue tracker.
  • Email: ashwinsk@saralcare.com with subject [A11Y]. We respond within 48 hours.
  • Anonymous: if you'd rather not identify yourself, send the report via any mirror's contact (see MIRRORING.md).

Why we publish gaps publicly

Most accessibility statements you read are insurance for the publisher. Ours is a punch list for the maintainer. The gaps section is editable in the same Git history as the rest of the project — if we mark something fixed but you can still see the problem, that's a bug worth reporting.