Accessibility
Accessibility is one of the three things this site says it's built around, so it should be able to show its work. This page explains what that means in practice.
Conformance target
This site targets WCAG 2.2 Level AA conformance, with Level AAA criteria applied wherever they don't conflict with content or design decisions. It has not been formally audited by a third party — the assessment below is a good-faith self-evaluation, backed by automated testing, that I keep current as the site changes.
Every page is scanned with axe-core against WCAG 2.2 Level A/AA as a required check in CI — a pull request can't merge if it introduces a violation. As of the last review, that scan is clean across every route. Pushing further to AAA, the one gap is color contrast: secondary/muted text (timestamps, captions, footer links) intentionally uses a lower-contrast tone for visual hierarchy against the primary text — it clears AA (4.5:1+) but falls short of AAA's stricter 7:1 in places. That's a deliberate design tradeoff, not an oversight, and it's the reason this site claims AA rather than AAA as its conformance level.
Why this matters
This isn't just a personal standard — accessible digital services are a legal requirement for public-sector organizations in Manitoba under the Accessibility for Manitobans Act, and that's the same lens I try to bring to my own work, this site included. This site isn't a public-sector service and isn't bound by the AMA, but the principle behind it — that access to digital information and services shouldn't depend on ability — is exactly why accessibility gets the same weight here as performance and discoverability, not treated as an afterthought.
What's been done
- Semantic HTML landmarks and a "Skip to content" link on every page.
- Visible keyboard focus indicators on all interactive elements, including a custom one on the logo where the framework default was previously suppressed without a replacement. Verified with a manual keyboard-only pass — tab order is logical front-to-back on every page, with no keyboard traps and no positive
tabindex. - Scroll-triggered reveal animations respect
prefers-reduced-motion— content renders immediately, with no motion, for anyone who has that preference set. The same is true of the decorative animated background on the homepage, which is also markedaria-hiddensince it's purely visual flourish, not content. - Color contrast checked against WCAG AA for body text and UI controls, with AAA applied where the design allows it — see "Conformance target" above for the one place it doesn't.
- Descriptive link text and labelled icon-only controls (email, social links, navigation).
- A single, self-hosted variable font with no layout-shifting web font swap.
- Automated accessibility testing (axe-core via Playwright) runs in CI on every push and pull request, gating merges the same way lint and type-checking do.
Known limitations
Nothing here is a permanent excuse — it's the current punch list:
- Some third-party embeds (the GitHub activity feed and the scootr.ca/ScootTalks content feeds) render markup I don't fully control and haven't independently audited for accessibility.
- The site hasn't yet been tested with a full range of assistive technology (screen readers across browsers, switch access, magnification) beyond automated tooling and manual keyboard testing.
- Automated testing catches a meaningful slice of issues, but not everything WCAG covers — things like whether alt text is genuinelydescriptive (versus merely present) still need a human judgment call, which is applied on a best-effort basis rather than exhaustively re-verified on every content change.
Feedback
If you hit an accessibility barrier anywhere on this site, I want to know about it. Email hello@jeremyshields.ca with the page and what happened, and I'll look into it.
Last reviewed: August 6, 2026.