Last updated September 25, 2026
Accessibility
This statement is meant to be checkable. Everything below is either something measured or something the code demonstrably does — and anything we have not verified is listed as a limitation rather than left out.
The standard we aim for
We target WCAG 2.1 Level AA. Automated testing finds no violations at A or AA, and colour contrast was measured by hand across both themes rather than eyeballed.
- Dark theme, worst case
- 5.07:1
- Light theme, worst case
- 4.99:1
- AA requires
- 4.5:1
What is built in
Contrast is measured, not estimated
Every text colour in both themes was checked against its actual background. The worst case is 5.07:1 in the dark theme and 4.99:1 in the light one, against the 4.5:1 that AA requires for body text.
The puzzle has no time limit
Nothing is timed. The countdown on the home page marks when the next puzzle arrives, never how long you have — and every past puzzle stays playable indefinitely.
Extends can be played without a clock
Extends, the arcade game, is timed on purpose — the fuse is the game — so it has an Untimed mode with no fuse and no lives, where every verdict is explained before the next card. Every card can be answered from the keyboard, each new card and each result is announced, and the timed modes pause themselves when the tab or window loses focus. Its sounds can be switched off from the table and only ever repeat what is already on screen.
Two themes and a ligature switch
Dark and light are both first-class rather than one being an afterthought. Programming ligatures are off by default and can be turned on — they help some readers and hinder others, so it is a choice rather than a decision made for you.
Motion preferences are respected
Outside Extends, the only animation is a blinking cursor. In Extends, cards are dealt, thrown, shaken and stamped. If your system asks for reduced motion, all of that is cut to effectively nothing; only the fuse still moves, because it is the one piece of motion that carries information.
Zoom is never blocked
No maximum scale is set, so pinch-zoom and browser zoom both work to any level. Layouts reflow rather than requiring horizontal scrolling; only wide code blocks scroll, and they scroll inside themselves.
Structure a screen reader can navigate
A skip link comes first on every page. Landmarks, heading order and form labels are all in place, and the syntax-highlighted copy of your code is hidden from assistive technology so it is not announced twice. Running the checks announces its own result, so the verdict never depends on noticing a change on screen.
Keyboard
- T or ←, F or →
- In Extends, answers the card in play: true, or false.
- Esc
- In Extends, pauses the fuse and turns the card face down; Esc again resumes.
- Tab
- Inside the editor, inserts two spaces. Everywhere else, moves to the next control.
- Esc, then Tab
- Leaves the editor. Escape tells the next Tab to move focus instead of indenting, so the editor can never trap you.
- Tab, then Enter
- From the top of any page, reaches and follows the skip link straight to the main content.
What we have not verified
The honest part. None of these are things we are hiding until someone notices.
- The site has not been tested end to end with a screen reader by someone who uses one daily. Automated checks pass and the markup was written with assistive technology in mind, but that is not the same thing, and we would rather say so than imply otherwise.
- Automated tools cover roughly a third of the WCAG criteria. Passing them, which this site does, is evidence of care rather than proof of conformance.
- The puzzle editor is a plain textarea with syntax highlighting painted behind it. That keeps it far more predictable than a custom editor widget, but it also means there is no code autocompletion, no bracket matching, and no announcement of syntax errors as you type.
- The timed modes of Extends will not suit everyone. Someone listening to a type expression read aloud will not beat a four-second fuse, and no setting can make that fair. The Untimed mode is the honest answer, and it is a different game rather than an equivalent one.
- Solving these puzzles requires reading code, and code is dense. We have not found a way to make type-level TypeScript less demanding to read without making it a different subject.
Found a barrier?
Tell us what happened, which page, and what you were using — browser, screen reader, anything relevant. Accessibility reports go to the front of the queue, and you will get a reply from a person rather than a form.
Report an accessibility problem
