Accessibility
This site targets WCAG 2.2 Level AA and exceeds it on text contrast, which meets Level AAA in both light and dark themes.
What that means here
- The whole site works with JavaScript disabled. Nothing you can read or navigate depends on a script.
- Focus is always visible. The indicator is never removed, and it sits outside the element so it reads against any background.
- Colour is never the only signal. A visited link changes both its hue and its underline style.
- Entry titles and the “discuss” links announce that they open in a new tab. The arrow beside a title is drawn rather than written, so it is silent to a screen reader — the announcement is separate text, read as part of the link.
- Motion is minimal, and if your system asks for reduced motion every animation and page transition is switched off, not merely shortened.
- Every page has one first-level heading, headings descend without skipping levels, and there is a skip link to the main content.
- Interactive targets are at least 24 by 24 pixels.
- On a narrow screen the navigation collapses behind one control, which is a plain disclosure button: it reports whether it is open, it works without JavaScript, Esc closes it, and while it is open the page underneath cannot take keyboard focus.
- Keyboard shortcuts (/, j, k) never fire while you are typing in a field, and never trap focus.
How it's checked
Every build runs axe-core against every generated page, renders the site with JavaScript disabled to confirm it still works, and recomputes the contrast of every colour pair. A failure in any of those stops the deploy rather than filing a warning nobody reads.
Automated testing catches perhaps half of what matters. It cannot judge whether link text makes sense out of context or whether the reading order is sensible, so those are reviewed by hand and are the likeliest place for a problem to survive.
Known gaps
- Search results are rendered client-side and are unavailable without JavaScript. The archive page lists every entry and needs none.
- Entries are archived from Bluesky as written. Where a post's original wording is unclear out of context, the archived copy inherits that.
- A link written inside an entry's text opens in a new tab without saying so. The title and “discuss” links on the same entry do announce it; adding the same to inline links would mean rewriting the page after it is built, which is more machinery than the gap justifies. This is a Level AAA requirement, above the AA this site targets.
Something not working?
Tell me and I will fix it. The fastest route is a message on Bluesky. Please say what you were trying to do and what got in the way — that is usually enough to reproduce it.