Accessibility statement
Last updated: 17 August 2026.
Our target
This site targets WCAG 2.2 Level AA. That is a commitment, not a claim of perfection, and the known gaps are listed below rather than hidden.
What we do
Structure. Semantic landmarks on every page, exactly one h1, and no heading level skips. Both are checked in our build and a violation fails it.
Keyboard. Everything is operable from the keyboard: the command bar, the calculators, the theme toggle, the language switcher, the chart data tables, and every navigation control. The command bar traps focus while open and restores it on close.
Focus. A 2px focus ring with a 2px offset, never removed. Every focusable target carries scroll margin equal to the header height, so the sticky header can never sit on top of the thing you just focused (WCAG 2.4.11).
Target size. Every interactive control is at least 24 by 24 CSS pixels, and touch targets aim for 44 by 44 (2.5.8).
No drag-only interaction. Calculator inputs accept typed values and arrow keys; nothing requires a drag (2.5.7).
Consistent help. The help and contact block sits in the same footer position on every page (3.2.6).
Redundant entry. Calculators remember what you typed for the duration of your visit, in memory only, so moving between them does not make you retype (3.3.7).
Contrast. Every text and background pair the design actually renders is checked programmatically at build time in both light and dark themes. A failure fails the build. Body copy never sits on blurred glass — reading surfaces are solid.
The safety verdict never relies on colour. Every instance carries an icon and an explicit text label as well as a colour, and a screen reader announces “Safety verdict” and the label before the answer text (1.4.1).
Charts always ship their data. Every chart carries role="img", a descriptive label, and a real data table containing the same numbers. If the chart fails to load, the table opens automatically.
The roof assembly diagram is inline SVG with a title, a description, and a complete text list of every layer — never an image of a diagram.
Motion and transparency. prefers-reduced-motion, prefers-reduced-transparency and prefers-contrast: more are all honoured. Under reduced transparency the glass surfaces become solid.
Language. Spanish pages carry lang="es-US", English pages lang="en-US", and inline terms in the other language are marked up.
How we test
Automated axe-core checks run in our build and must report zero violations. Contrast pairs and heading structure are checked separately in the same build. Beyond that, each template gets a manual pass with a screen reader.
Automated testing catches perhaps a third of real accessibility problems, which is why the next section exists.
Known gaps
- Manual screen reader passes are done on VoiceOver and NVDA. We have not tested with JAWS, Dragon, or switch access.
- The Chart.js canvas itself is not navigable; the accessible path is the data table beneath it, which is always present and always complete.
- Long spec tables scroll horizontally on narrow screens. The scroll container is keyboard-reachable, but a wide table remains harder to read on a phone than we would like.
- Our Spanish content is written, not machine-translated, but it has had less screen-reader testing than the English.
Reporting a barrier
If something here does not work with your assistive technology, that is a bug and we want to fix it.
Tell us the page, what you were trying to do, and what happened, plus your browser and assistive technology if you know them. We aim to respond within five working days.