Accessibility
This site aims to meet WCAG 2.2 Level AA. Here is specifically what that means in practice, and what to do if you hit something that doesn't work.
Last updated July 2026
What's been done
Color and contrast
Contrast ratios were calculated rather than eyeballed, in both light and dark themes. Body text sits at roughly 7.5:1 against the background and the smallest metadata at 5.3:1, both above the 4.5:1 required for normal text. The vermilion accent exists in two values: the brighter one is used only for rules, large figures, and interface affordances, while inline links use a darker variant that clears 4.5:1. Color is never the only thing carrying meaning.
Keyboard
Every interactive element is reachable and operable by keyboard, in a
logical order. Focus is always visible: a two-pixel outline offset from the
element, never removed. A “Skip to content” link is the first thing you
reach on every page. The expanding career entries are built on the native
<details> element, so they behave the way your browser and
assistive technology already expect.
Screen readers
Pages use real landmarks and a single, correctly ordered heading structure. Images carry meaningful alternative text, and decorative elements, the expand/collapse marks and the rules between sections, are hidden from assistive technology rather than announced as noise. Where an abbreviation or a reference marker appears visually, the full text is available to screen readers.
Motion
The site animates section entrances with scroll-driven animation, and smooths scrolling with a small script. All of it is disabled when your system is set to reduce motion. Not shortened, disabled. Nothing animates automatically, nothing flashes, and no content is only reachable after an animation completes.
Zoom and reflow
Text is sized in relative units and scales with your browser's zoom and text size settings. Content reflows to a single column at 320px equivalent width without horizontal scrolling or loss of information.
Without JavaScript
Every page is fully readable with JavaScript disabled. All content is real HTML delivered by the server. Nothing is rendered client-side. A few conveniences go quiet: the theme toggle, the scroll-to-top control, the current-section mark, and the shareable link for the domain lens. Every link and every section still works, and the site still follows your system appearance preference.
Known limitations
- Testing has been done with automated tooling and keyboard navigation, plus manual review. It has not yet been tested by people who use screen readers daily, which is the test that matters most.
If something doesn't work
Please tell me. An accessibility failure here is a bug, and I would rather know than not. Message me on LinkedIn with what you were trying to do, what happened, and what you're using. I'll reply and fix it.
Last reviewed July 2026.