Skip to main content
ACCESSIBILITY

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.
IMPLEMENTED

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.

KNOWN GAPS

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.