Conformance target:
WCAG 2.1 AA and Section 508.
Civic Filament is designed to be usable by residents of a community, not just the technically comfortable subset of them. Below is our own, self-assessed map of what we believe conforms today and what doesn’t yet.
What we target
- ◇WCAG 2.1 Level AA — the international baseline for web accessibility. All four principles: perceivable, operable, understandable, robust.
- ◇US Section 508 (Revised) — federal-procurement conformance, which incorporates WCAG 2.0 AA. Meeting WCAG 2.1 AA is a superset.
- ◇EN 301 549 (EU) — the EU accessibility standard for public-sector procurement. Also downstream of WCAG.
What’s live today
Keyboard navigation
Skip-to-content link at the top of every page, semantic landmarks (header, main, nav, contentinfo), no keyboard traps in the interview flow found in our spot checks. Global :focus-visible ring.
Form labels
Inputs on public forms — sign-in, sign-up, forgot/reset password, contact, feedback, demo booking, account deletion, age gate, newsletter waitlist, evidence submission — have a programmatically associated label.
Dialogs
The age gate and the cookie banner are proper dialogs (dialog role, labelled, focus moved into them) rather than plain overlays.
In-page accessibility controls
High contrast, larger text and reduced motion toggles are mounted site-wide and persist in this browser. High contrast is its own toggle and works with any theme.
Color contrast
Three themes (Void, Lumina, Cipher). Body and tertiary (secondary-label) text meet at least 4.5:1 contrast in all three themes. Cipher is a stylistic theme, not a high-contrast mode — use the high contrast toggle for that.
Text size
Minimum text size is 11px. The larger-text toggle scales text up across the site; browser zoom also works.
Motion
prefers-reduced-motion is honored site-wide, including framer-motion animations via a global MotionConfig; the reduced-motion toggle does the same without changing your OS setting. The interview simulation jumps to its completed state.
Screen reader access to illustrative animations
The animated interview simulation on the landing page and the animated consensus map provide an sr-only text summary and mark the animation itself aria-hidden.
Icon-only buttons
Mobile menu toggle, theme switcher, rating stars and voice input carry aria-label. Toggle buttons carry aria-pressed to signal state.
Read-aloud
Mediator messages, LRD text and blog posts can be read aloud (text-to-speech). The text being read is on the page as well.
Voice input
The interview accepts voice input where the browser provides speech recognition. In Chrome and some other browsers the audio is sent to the browser vendor for transcription; typing is always available.
PWA + offline
The app shell is cached by a service worker and an in-progress interview is saved in the browser, so a dropped connection doesn't lose work. The mediator runs on the server, so replying requires a connection.
What we don’t claim yet
Self-assessed only
Everything on this page is self-assessed by the team. The VPAT at /vpat is an internally authored, self-assessed draft, not a third-party report.
Third-party audit
Not yet commissioned. Testing so far: automated eslint jsx-a11y rules, plus manual keyboard and screen-reader spot checks by the team. There is no automated axe test suite.
Screen reader user study
The app has not been through a formal study with disabled participants or a full screen-reader pass of every route.
Captions for read-aloud audio
The source text is on the page, but it is not highlighted in sync with the audio.
Language support
The mediator and the app UI are English-only today. A multi-language mediator is on the roadmap but has not been built.
Report an issue
If any part of Civic Filament is inaccessible to you, please tell us via the contact page or the feedback form. Please include the page URL, the assistive technology you’re using (if any), and what happened vs. what you expected.
Accessibility bugs skip the normal queue. We aim to acknowledge within 3 business days and to fix or document a workaround within 30 days for AA-level issues.
LAST UPDATED: 2026-09-30 · SELF-ASSESSED
Based on eslint jsx-a11y rules and the team’s manual keyboard and screen-reader spot checks of the main routes. Open findings appear in Known Gaps above.