Accessibility statement
This page states what was measured, not what we hope. Where a thing was not measured, it says so. Nothing here is a certification, and accessibility is a property of your finished site rather than of a theme: the content you write, the images you upload and the plugins you add all decide the outcome.
What was checked, and how
| Check | Where it ran |
|---|---|
| axe, WCAG 2.2 level A and AA | Every template and every page of the demo, in both light and dark, at three widths. |
| Contrast, computed from the encoded token values | Every colour pair, in every one of the four style variations, in both modes. |
| Keyboard | Every interactive element on every page: reachable, operable, with a visible focus ring. |
| HTML validation | Every page of the demo. |
| Reduced motion | Every transition resolves to its destination state. |
What the build commits to
- Type is text. Prices, times, stamps and dietary marks are letters, not images and not icons. They scale, they translate, they are selectable and a screen reader reads them.
- Never colour alone. A struck row carries a 2px strike, a stamped mark and a word. The open status dot is beside a sentence, never instead of one.
- Focus is always visible. The focus ring's colour is deliberately left out of every transition, so it can never fade up: it is either there or it is not.
- 44px press targets on the mobile navigation trigger, and 56px rows in the panel.
- No hover-only affordance anywhere. Everything reachable with a mouse is reachable without one.
- The dietary filter never removes a row from the page. Rows are hidden in place, so the document does not reflow under a finger and a reader who wants the whole card gets it back instantly.
- Landmarks are real. One header, one main, one footer per page; the current route carries
aria-current. - Disclosures are native.
<details>/<summary>, not a scripted accordion. - The address control never lies. It says selected when the browser has no clipboard and copied when it does, and its accessible name does not change when the state does.
Motion
The theme is near-static: paper is set down, not animated. Three durations (120ms, 150ms, 180ms) and one 4px travel, on transform and opacity only.
Nothing animates on scroll, nothing staggers, there is no loop anywhere, no parallax, no video hero, no carousel. Photographs never pan, zoom or fade in. The served-now chip never pulses. Because there is no looping or auto-playing motion, the theme spends no moving content and owes no pause control.
Under prefers-reduced-motion: reduce, each transition resolves to its destination state rather
than being switched off: the slip is already on the card, the disclosure still opens and arrives
whole, the daypart panel still swaps.
The type over the photograph
The hero and the 404 page set white type straight onto a photograph, with no scrim.
A dark wash added to make type readable is a way of shipping a photograph that does not work. So instead, each counter plate was measured against the actual pixels at its registered focal point, in both modes, and the type colour holds at least 4.5:1 against them. A plate that failed was re-cropped or replaced; a scrim was never added to make one pass.
This is the one check that does not survive you replacing the image. WordPress has no equivalent measurement. After you set a new counter photograph, look at the home page at 375 and at 1440 before you publish. It is said again on the four editing tasks and in the Guide inside your site.
A documented deviation from the design source
Table and Type is the WordPress edition of a design that exists elsewhere. One token was changed on the way, and it is named here because a buyer who compares the two will see it.
--field-border — the outline of a form field — is a control boundary, and WCAG 2.2
SC 1.4.11 Non-text Contrast requires 3:1 against the colour beside it. Measured on the source's
own encoded values:
| Pair | Ratio | Verdict |
|---|---|---|
Source --field-border #a49d96 on --field #f3efeb (light) |
2.34 : 1 | fails |
Source --field-border #a49d96 on --card #fdfaf6 (light) |
2.57 : 1 | fails |
Source --field-border #58534c on --field #110d09 (dark) |
2.54 : 1 | fails |
The dark half fails as well as the light one. The fix invents no colour: --field-border takes the
values the same design already used for --control-border — #766f66 in light and
#756f68 in dark — in the base theme, in the Dark variation, and in each preset's light and
dark halves, each preset using its own.
| Pair, as shipped | Ratio | Verdict |
|---|---|---|
#766f66 on --field #f3efeb (light) |
4.33 : 1 | passes |
#756f68 on --field #110d09 (dark) |
3.90 : 1 | passes |
The lowest reading anywhere in the shipped theme, across all four variations and both modes, is 3.24:1 — Cresson, dark, against the card. So your form outlines are darker than the design demo's, on purpose.
The finding was reported back to the design's own repository.
What is not claimed
- No conformance claim. We do not say the theme "is WCAG 2.2 AA compliant" or carries any certification. We say which checks ran and what they returned.
- No claim about your finished site. Your copy, your images, your alternative text, your colour choices and any plugin you add can all break something this theme got right. A theme cannot promise what it cannot see.
- No claim about assistive technology behaviour beyond what the checks above measured. Manual screen-reader testing was not part of this release.
- No accessibility overlay, and none will be added.
If you find a barrier, tell us — see Support. A reported barrier is a bug.