Shaaf Kashan

Accessibility

I aim for this site to meet WCAG 2.2 level AA. This page says what I have done toward that, what I have not, and how to tell me about a problem. It describes my own checks. It is not an independent audit.

Target: WCAG 2.2 level AA. Last updated 30 October 2026.

How it is checked

  • Automated axe-core scans in the Playwright end-to-end suite, run against the home page, the Realm codex and this page, using the WCAG 2.0 A and AA rule sets. The tests fail on critical or serious violations.
  • Colour contrast tests on the core design tokens (text, muted text, primary and accent against the background), each held to at least 4.5:1.
  • A type-size test that fails the test suite if any text on the classic site is set below 12px.
  • Reduced-motion support: animated components check the user's reduced-motion setting, and a global style rule switches animations and transitions off when it is set.
  • A skip-to-main-content link at the top of every page.
  • A visible focus outline on links, buttons and form fields.
  • Tap targets of at least 44px on the navigation bar and footer links and buttons.
  • Expandable sections (education, career entries) use native details elements or buttons with aria-expanded, so they work from the keyboard and with a screen reader.
  • The WebGL experiences are opt-in. The Realm falls back to an accessible text codex when WebGL is unavailable or reduced motion is set, and ShaafOS shows a fallback message when WebGL is unavailable.

Known gaps

  • The site is dark-only. There is no light or high-contrast mode yet.
  • The WebGL worlds (/os and /realm) are decorative. The same content is available in the classic site and in the Realm codex, which are the accessible versions.
  • Automated scans cover the home page, the Realm codex and this page. The other pages are not scanned automatically.
  • The axe scans use the WCAG 2.0 A and AA rule sets. WCAG 2.2 criteria such as target size and focus appearance are addressed through design choices, not checked by an automated scan.
  • Contrast tests cover the core token pairs only. Muted secondary text classes use at least 80% opacity (about 6.1:1 against the page background), and a test scans class names for anything lower. Composited colours on cards and in the ShaafOS screens are not all checked.
  • The 44px tap-target work covers the navigation bar and footer. I have not measured every inline control on every page.
  • I have not had the site audited by a third party, and I do not claim a full manual screen-reader review.

Report a problem

Email msk@shaafkashan.com with the page and what got in the way.