Accessibility Statement
Last updated: 2026-05-07
Our commitment
Signals & Systems targets WCAG 2.1 AA. Every page in the site has been audited with pa11y (axe 4.11 + htmlcs) in both light and dark modes and ships with zero confirmed failures. This page describes what is in place today, and how to tell me if something still gets in your way.
What's in place
- Skip-to-content link as the first focusable element on every page.
- Semantic landmarks (
<header>,<nav>,<main>,<footer>) and a consistent heading hierarchy. - Keyboard navigation throughout, including primary nav, mobile menu, theme toggle, and citation drawers. ESC closes the mobile menu and the consent dialog and restores focus to the trigger. Outside-click also closes both, and the consent dialog restores focus through its focus trap; the mobile menu's outside-click restores focus to the trigger only when keyboard focus was still inside the menu, so a click on another interactive element does not get its focus stolen back.
- Consent dialog uses
role="dialog"witharia-modal, a focus trap, ESC-to-decline, and click-on-backdrop-to-decline. - Visible focus rings on every interactive control, scoped via
focus-visible:so the ring only appears for keyboard navigation and never for mouse clicks. Everyfocus-visible:outline-noneis paired with a replacement ring. - Color contrast meets WCAG AA (4.5:1 for body text, 3:1 for large text) in both light and dark themes. Code blocks use the github-light-high-contrast and github-dark-high-contrast Shiki themes so every syntax token, including comments, passes AA.
- Dark mode with a class-based toggle in the primary nav, persisted in
localStorage. Respectsprefers-color-schemeon first visit and sets the.darkclass before paint to avoid flash. - Every chart component (line, bar, pie, doughnut, radar, scatter, sankey, heatmap, timeline, geo data charts) wraps in
<figure role="group">witharia-labelledby/aria-describedby, sets anaria-labelon the rendered surface, and emits ansr-onlydata table covering every plotted value. - Wiring schematics expose
<title>and<desc>viaaria-labelledby, and ship with a textual connection list (from-pin / to-pin / signal type) inside a<details>alternative. SVG text uses explicit CSScolorto mirrorfill, so contrast checkers see the rendered color regardless of inherited dark-mode prose styles. - Every inline article image carries an
altattribute. Decorative images use empty alt; meaningful images describe what the reader should take away. - Automated a11y audits run on every pull request and every push to
main: pa11y (axe + htmlcs) across nine routes in both themes, plus Lighthouse CI with a 0.95 accessibility floor. Confirmed failures block the merge.
How to report a barrier
If something on this site gets in your way, please tell me. The fastest path is a GitHub issue using the a11y report template; it captures the page, the assistive technology, and what you expected.
File an accessibility report on GitHub · or email contact@jellwrites.com.
Keyboard navigation reference
The site is fully operable without a pointing device. These are the shortcuts you'll use most often.
Navigation shortcuts
Screen reader shortcuts
Note: Screen reader shortcuts vary by software (NVDA, JAWS, VoiceOver). Consult your screen reader's documentation for the full key map.