What has been built in
These are implemented and checked as part of the build:
- A skip link to the main content, so the header navigation can be bypassed
- Interactive controls sized to at least 44 by 44 pixels, for touch and for imprecise pointing
- Full keyboard operation: every control is reachable and operable without a mouse
- Visible focus indication throughout
- Live regions announcing results that change without a page load — the calculator result itself announces politely on every recompute, as does the category filter's match count
- Labels and accessible names on every input, button and image
- Colour used to reinforce meaning, never as the only carrier of it — confidence levels are labelled as well as coloured
- Both light and dark themes, following your system preference by default
- Semantic headings, landmarks and lists rather than styled generic elements
Where the site has genuine limits
The field tools depend on hardware. The bubble level and clinometer communicate through a moving indicator and a haptic pulse, which does not translate to a screen reader; the numeric tilt readings are exposed as text, but the tool is fundamentally visual and physical. The camera overlay is a visual aid with no non-visual equivalent.
The 3D viewport and the sensitivity chart are graphical. The chart's underlying figures are available as text; the viewport's are available as the dimensions you entered and the volume shown beside it.
These limits are stated rather than papered over. Where a tool cannot be made equivalent, the calculator that does the same job in numbers is linked from it.
How it is checked, and when
Every build runs axe-core 4.13 against the pre-rendered HTML of twenty page templates — one of every shape the site renders, from a calculator to the embed frame to the 404. A violation fails the build, so a regression cannot ship quietly. Last run: 12 September 2026, with no violations on any template.
Two axe rules are switched off, and both are named here rather than left for somebody to discover. Colour contrast is not measured by axe because the test harness computes no layout; instead the build checks all 180 colour-token pairs across 9 palettes against 4.5:1 directly, which tests the source of every colour rather than a sample of pages. The landmark-uniqueness rule is off because it fires on the repeated related-content panels that hub pages render, each of which already carries its own label.
What the automated check cannot see
It reads the HTML the server sends, so it checks structure — landmarks, heading order, form labels, link names, language, duplicate ids. It does not check the page after JavaScript has run: a dialog that is open, a panel that has been expanded, a live region that has just announced. It does not check keyboard order, focus management or what a screen reader actually says.
Those need a person, and no such testing has been commissioned. An automated pass is a floor, not a conformance claim — it is roughly the share of accessibility problems a tool can find at all, which the industry puts at about a third.
What has not been done
No independent accessibility audit has been carried out, and no assistive-technology user testing has been commissioned. The statement above describes work done by the developers against the guidelines, which is not the same thing and should not be presented as if it were.
Reporting a barrier
If something here is not usable for you, please report it — a specific description of what you were trying to do and what happened is the most useful thing you can send. Accessibility defects are treated as defects, not as enhancements.
