Skip to content
Graphophone

Accessibility

Accessibility statement

Graphophone is built so anyone can use it — keyboard-only, screen-reader, switch-control, voice. We treat accessibility as a correctness problem, not a polish step.

Last reviewed: 2026-10-14

Conformance target

The app and site target WCAG 2.2 Level AA. We test against it on the surfaces listed below, and anything we know falls short is noted under Known limitations.

How we keep it conformant

In the app

  • The app's accessibility test suite runs Flutter's androidTapTargetGuideline, iOSTapTargetGuideline, labeledTapTargetGuideline, and textContrastGuideline against every primary screen (Home, Unlock, Onboarding, Search, Insights, Audit, Editor, Settings) in both light and dark themes. It fails if any tap target is below 48×48 dp on Android or 44×44 pt on iOS, if any tappable surface lacks a screen-reader label, or if text contrast falls below WCAG AA — and it must pass before any change ships.
  • Native platform a11y stays on: Android TalkBack and iOS VoiceOver receive the rich semantic tree Flutter generates; we don't override platform navigation gestures.
  • Font sizes respect the OS-level Dynamic Type / font-size preference. Layouts reflow at 200% text-size without horizontal scroll.
  • Colour is never the only carrier of meaning. The audit log's "blocked" indicator pairs colour with an icon and a text label.
  • Nothing in the app flashes, strobes, or loops. There are no celebration bursts, no confetti, no pulsing or shimmering surfaces — not even on the year-in-review screen, which is entirely static. The only moving elements are the platform's own progress indicators and page transitions, which the OS "Reduce motion" setting governs directly. That puts us far inside WCAG 2.3.1 (no more than three flashes per second) with room to spare, and it is checked by reading the code, not by eye.
  • One timing is deliberately not shortened by "Reduce motion": the 1.5-second press-and-hold that confirms an emergency wipe. It is a safety interlock rather than decoration, and scaling it down would let a stray touch destroy a vault irreversibly.

On this site

  • Lighthouse Accessibility = 100 on every page is the bar, checked before each release.
  • Zero third-party scripts. Total JS payload is < 5 KB per page — screen readers, low-spec hardware, captive-portal networks all see the same content.
  • Server-rendered HTML, no client-side routing — back button, in-page find, and reader mode all work normally.
  • Skip-to-content link, visible-on-focus.
  • Forms (search, support) work without JavaScript.
  • No autoplaying media and no parallax. The only motion is smooth scrolling on in-page links and a short turn of the FAQ's "+" icon, and both stop when your system asks for prefers-reduced-motion.

Known limitations

  • The insights bar charts currently expose numbers only via the surrounding labels and the SelectableText markdown report. A dedicated table view for the chart data is in progress.
  • The compact QK1- redemption code form is a long single string. We provide a JSON-receipt alternative for users who find pasting one continuous token harder.

Reporting an issue

Email hello@graphophone.app with "a11y" in the subject. We aim to acknowledge within 48 hours and to ship a fix or a documented workaround within two weeks. We treat accessibility regressions as P0 — same as a crash on the writing surface.

Standards & statute

  • EU: European Accessibility Act (Directive 2019/882), implemented nationally from 28 June 2025 — Graphophone aims for compliance on every EU-distributed channel.
  • US: Section 508 of the Rehabilitation Act, Revised — references the WCAG 2.2 AA criteria above.
  • UK: Public Sector Bodies Accessibility Regulations 2018 — not strictly applicable to a non-public-sector product, but we hold ourselves to the same WCAG 2.2 AA bar.

This statement was reviewed on 2026-10-14 against the build at that date. The app and site checks re-verify the listed conformance criteria before each release, so the statement stays honest between reviews.