We Wrote an Accessibility Article Then Failed Our Own Audit
TL;DR
Built an 84-citation article about Apple’s accessibility history. Then audited the hosting site and found it failed WCAG on every single page. The irony wrote itself.
What the audit found
Five parallel agents audited every layout and page file. The results were brutal:
Systemic failures (every page):
- No skip link anywhere (except the new palimpsest page)
.sr-onlyclass used in 5 places but never definedoutline: noneon 4 search inputs with no replacement focus ringscroll-behavior: smoothnot gated behindprefers-reduced-motion- No
forced-colorssupport for Windows High Contrast Mode - No
aria-pressedon any filter/toggle button
Contrast (the biggest category):
- Dark-themed pages used
rgba(255,255,255,0.2-0.45)for secondary text — ratios of 1.3:1 to 2.7:1 against 4.5:1 requirement - Parchment-themed pages used
rgba(100,70,35,0.3-0.55)— ratios of 1.6:1 to 1.9:1 - Whiteboard marker-colored titles all failed on light card backgrounds (red 2.5:1, blue 3.5:1)
- Even the “passing” colors were borderline — doc date at 3.8:1, citation items at 4.3:1
Keyboard access:
- Clickable
<div>elements in the reading year modal unreachable by keyboard - Scope creep modal had no focus trap (only modal missing it)
- Shelf trigger button at 0.25 opacity — effectively invisible
.sticky-doc-linkwas 11x11px, well under 24px minimum touch target
Semantic HTML:
- ForgeLayout used
<div class="forge-article">instead of<article> - Guide labels were
<div>instead of<h3> - 404 page had no
<h1>
What we fixed
Fixed everything in Layout.astro first (skip link, .sr-only, global focus indicators, reduced-motion, forced-colors) so every page inherited the fix. Then four parallel agents fixed contrast across all layouts and pages simultaneously.
The key insight: fixing accessibility at the layout level is a force multiplier. One file change fixed 15+ pages.
Contrast fix pattern
The fix was mechanical but tedious. On dark backgrounds (#0f1117, #2a3a2a), white text needs at least 0.65 alpha to hit 4.5:1. On parchment (#f0e6d0), brown text needs solid colors around #6b4d25. We switched from rgba to solid hex where possible — rgba is harder to reason about for contrast.
Developer takeaway
If you’re building a site about accessibility, audit it before you publish. We had the humility to run the audit and the irony was instructive: the design choices that make a site feel “atmospheric” (low-opacity text, subtle UI, hidden triggers) are exactly the choices that fail WCAG. Atmosphere and accessibility are in tension, but they’re not incompatible — you just need to find the floor and stay above it.