Accessibility
Our commitment
Accessibility is a subset of quality. This site targets WCAG 2.2 Level AA and we track issues publicly to stay accountable.
Features
- Light/dark mode — inherits your operating system preference and lets you override it with the toggle in the header. Your choice is saved across visits.
- Keyboard navigation — all interactive elements are reachable by keyboard; focus indicators meet 3:1 contrast in both colour modes.
- Forced-colours (high contrast) — the theme toggle uses system colour keywords so it stays visible in Windows High Contrast mode.
- Reduced motion — theme transitions are disabled when
prefers-reduced-motion: reduceis active. - Skip navigation — not yet present; tracked as an open issue.
- Semantic HTML — one
<h1>per page, headings nested in order,<main>landmark present. - Images — every content image has descriptive
alttext. - Link text — links describe their destination rather than using generic phrases.
Known limitations
| Area | Status |
|---|---|
| Skip-to-content link | Not yet implemented |
| ARIA live regions | Not yet audited |
| PDF documents | Not applicable — no PDFs are hosted here |
| Third-party embeds | Font Awesome icon font loaded from CDN; we do not control its accessibility |
Automated testing
This site is checked on every push with:
- pa11y-ci — WCAG 2.1 AA automated scan
- Axe via Playwright
- html-validate — structural HTML validation
- Lychee — broken link detection
Reporting an issue
If you find an accessibility barrier, please open an issue on GitHub or contact me directly. I aim to respond within five business days.
Standards and references
- WCAG 2.2 Understanding 1.4.3 Contrast (Minimum)
- WCAG 2.2 Understanding 1.4.11 Non-text Contrast
- CSS
prefers-color-schememedia query - Light/Dark Mode Accessibility Best Practices
Last updated: 2026-03-02
