Get in touch
This site

Built to be used by everyone.

An interface nobody can operate is a broken interface. This statement says what standard the site holds itself to, what is already true, what is not — and how to report what fails.

The standard

WCAG 2.2 AA, reaching further where the palette allows.

This site targets WCAG 2.2 Level AA as its baseline: body and secondary text aim for 7:1 contrast, muted text and links hold at least 4.5:1, and borders and focus indicators at least 3:1. That is a commitment about how the site is built — not a certificate. Conformance here is self-assessed.

Accessibility decisions live in the design system, not on individual pages: one focus style, one target size, one token pair per color role, checked in both light and dark themes.

What is already true

Built in, not bolted on.

Interaction

  • Every interactive element is reachable by keyboard, with a visible 2px focus ring
  • A skip link is the first stop in the tab order; <main> takes focus on demand
  • The menu and search overlays are native <dialog> elements — focus trapped, Escape honored, focus returned
  • Dropdowns, filters and the theme toggle work without a mouse

Structure & media

  • Landmarks (header, nav, main, footer) and breadcrumbs on every subpage
  • Semantic HTML first; ARIA only where native semantics run out
  • Forms use real labels, inline validation with aria-invalid and live error text
  • All animation collapses under prefers-reduced-motion
  • Color is never the only signal — pills carry text, states carry labels
What is not done yet

The honest list.

  • No independent audit. Conformance is self-assessed; spot checks are not the same thing as a full audit.
  • No exhaustive screen-reader pass. Keyboard and structural checks are done; a systematic pass across screen-reader and browser combinations is not.
  • The language menu changes the document language, not the content. The interface is honest about what it does; full translation is a separate project.
  • The contact form is not connected yet. It validates and states plainly that no message is sent in this static build.
Telling me about a barrier

Report it — the report is the roadmap.

Send the page address, what you were trying to do, and what happened instead, through the contact page (topic: website correction). Reports are read, answered, and fixed where the fix belongs — usually in the design system, so one repair closes the whole class.