Accessibility

This is the portfolio of Owen Peters. It should work for everyone who visits, whatever they browse with. This page is the honest state of that: what the site actually does, and what it doesn't do yet. I would rather name the gaps than pretend coverage.

Commitment

The site is hand-built static HTML, which means every element on it was a decision. Where one of those decisions shuts someone out, that's a defect in the craft, not a compliance footnote, and I want to know about it. Accessibility issues reported to me get fixed, and this page gets updated to match.

Standards and Testing

WCAG 2.2 Level AA is the reference standard. Testing so far is developer testing: keyboard-only walkthroughs, a reduced-motion pass, and automated axe-core scans run against every page template. In the most recent scan, the only rule the site fails is color contrast, described plainly under known limitations. What it has not had: a formal third-party audit, or sessions with people who actually rely on assistive technology. Until it has both, the claims below describe how the site is built, not how it has been proven to be experienced.

What Works Today

  • Every page has one h1 and headings that descend in order, with content in a main landmark and labelled navigation, so a screen reader can skim the structure the way a sighted reader skims the layout.
  • A "Skip to content" link is the first tab stop on every page and jumps past the fixed navigation controls.
  • Interactive controls are real elements: every link is an <a>, and the non-link controls (the touch menu chevrons on the navigation and section bars, the footer's link accordions, and the back-to-section control) are real <button>s or native <details>. The menus expose their open state via aria-expanded, close on Escape, and return focus to their toggle.
  • Keyboard focus is visible everywhere: a 2px offset outline on every focusable element. The sticky navigation and section bars are shallow, and in-page section jumps offset themselves beneath them, so no sticky element covers focused content. Even the hidden philosophy link on the home page, which sighted visitors discover by hovering the mark, reveals itself on keyboard focus.
  • Motion honors prefers-reduced-motion. With it set, the scroll-driven reading effect never runs and all text renders at full contrast immediately, the home page load-in and hover animations are skipped, autoplaying demo videos are paused on their first frame, and in-page scrolling jumps instead of gliding.
  • Color is not the only channel. The current page in the navigation is exposed through aria-current, not just its tint; links inside body text are underlined; the big decision numerals in case studies carry hidden "Decision 1:" text for screen readers.
  • Every content image has descriptive alt text, authored in the CMS alongside the image itself. Decorative artwork, the waves, arrows, and doodles, is aria-hidden or empty-alt so assistive tech skips it. Videos carry aria-label descriptions.
  • Zoom is never disabled. The layout is fluid from small phones up through 200% page zoom without loss of content or horizontal scrolling.
  • Touch targets in the primary navigation are at least 40px tall with clear spacing, and the touch menu chevrons, drawn at 24px, accept taps on a 44px square.

Known Limitations

Honesty is the point of this page, so here is exactly where the site currently falls short.

  • Some supporting text is deliberately faint and fails the AA contrast threshold: the rest-state tabs in the navigation and section bars sit near 3.9:1, and group captions on the resume near 2.1:1, against the 4.5:1 requirement. It's a visual-hierarchy choice in open conflict with a contrast rule, and it is not resolved yet.
  • With motion enabled, the case-study reading effect holds unread words at low contrast until you scroll to them. Reduced-motion visitors are unaffected, but for everyone else, text mid-page is temporarily hard to read by design.
  • No video on the site has captions or a transcript. Most are silent interface demonstrations, but that's an explanation, not a substitute.
  • One motion study (Enlight's) is an animated GIF, which keeps animating even under reduced motion; unlike the videos, a GIF can't be paused. It needs a static fallback.
  • Type is sized in pixels. Page zoom scales everything correctly, but a browser's text-only size setting won't rescale this site.
  • There are no forms here, so the site demonstrates nothing about form labels, helper text, or error messaging; contact is a plain email link. If a form ever ships, this page will say how it behaves.
  • None of the above has been validated by people who rely on assistive technology day-to-day. Code review and tooling catch structure; they don't catch experience.

Contact and Feedback

If something here blocks you, or just makes the site harder than it should be, tell me: me@ompeters.com. Feedback goes straight to me, fixes ship to a static site quickly, and this page changes with them.

Last Updated

July 19, 2026.