Accessibility

What we build to, and what is still weak.

A page that only lists the good parts is a marketing page, not an accessibility statement.

The target

WCAG 2.2 Level AA. Not as an aspiration: contrast on this site is measured with a script rather than eyeballed, and the build fails if a required pair falls below the threshold.

What is in place

  • Body text starts at 18px. A floor, not a default. Some of our readers are 80, and 16px gray text is the most common failure in this category.
  • Measured contrast. Body text runs at 12.9:1 against the page background. The primary button uses a dark label on amber at 5.05:1, because white on that amber measures 2.71:1 and fails. That pairing is a requirement, not a style choice.
  • Touch targets of at least 48px, and 64px for anything primary, including every option in the check.
  • Full keyboard operation. The menu opens with Enter, moves with arrow keys, closes with Escape and returns focus to where you were. Focus is never trapped, so Tab can always leave.
  • Visible focus. A solid three pixel outline with an offset, never removed.
  • A skip link to the main content as the first thing in the tab order.
  • Real semantics. One h1 per page in a sensible order, labeled form fields, grouped radio sets with legends, and errors announced rather than only colored.
  • Never color alone. Every status in your results carries a word, so Likely and Ruled out do not depend on being able to tell green from gray.
  • Reduced motion respected. If your system asks for less movement, transitions are switched off rather than shortened.
  • Text scaling. The layout holds at 200% zoom without content being lost.

What we got wrong, and when we fixed it

This page said contrast here is measured by a script and that the build fails below the threshold. On 8 August 2026 both halves of that were checked against the live site, and the second half was not true: there was no such script, and seven groups of text were running between 3.02:1 and 3.55:1 where 4.5:1 is required.

  • Every label in the check, at 14px, on an assessment built for older adults.
  • The source and date line under every program, which is the part of this site that carries its whole argument.
  • The checked-date stamps, the review dates, the pull-quote citations and the program tags.

All of them inherited one color token that measured 3.55:1. It is now 5.15:1, and the ten pages we measure were re-checked afterwards rather than assumed. The build now computes the contrast of every muted color against both surfaces it can sit on and refuses to finish if one falls short, which is what this page had been describing.

Two things are worth saying about how it was found, because they are the reason to trust the numbers above. The first version of the measurement was wrong twice: it read a short caption as body text, and it misread modern CSS color values, turning a light background into a near-black one and inventing a failure that did not exist. The numbers here were only trusted once the same method reproduced a figure this page already claimed, the primary button at 5.05:1, and once the new build gate was deliberately broken to confirm it could actually stop a build.

What is still weak

Being straight about this is more useful than a compliance badge.

  • The check needs JavaScript. Everything runs in your browser, which is what keeps your answers off our servers, but it means the check will not run without it. The five California programs are written out in full on the home page for that reason.
  • English only so far. No Spanish version yet, which is a real gap for California specifically and is on the list.
  • Screen reader testing has been done against the standard rather than against every combination. If something behaves badly in yours, we want to know which one.
  • No plain text or large print version of your results yet.

Tell us when we get it wrong

If any part of this site is hard to use, please email [email protected] and say what you were trying to do and what got in the way. Accessibility problems are treated as defects, not as feature requests, and they go to the front.

Last reviewed 28 July 2026