Accessibility Statement - Signals & Systems

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" with aria-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. Every focus-visible:outline-none is 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. Respects prefers-color-scheme on first visit and sets the .dark class 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"> with aria-labelledby/aria-describedby, sets an aria-label on the rendered surface, and emits an sr-only data table covering every plotted value.
  • Wiring schematics expose <title> and <desc> via aria-labelledby, and ship with a textual connection list (from-pin / to-pin / signal type) inside a <details> alternative. SVG text uses explicit CSS color to mirror fill, so contrast checkers see the rendered color regardless of inherited dark-mode prose styles.
  • Every inline article image carries an alt attribute. 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

Move to next element Tab
Move to previous element
Shift + Tab
Activate link or button Enter
Activate button Space
Close dialog / mobile menu Esc
Skip to main content Tab

Screen reader shortcuts

Next heading H
Next landmark D
Next link K
Browse mode toggle
Ctrl + Shift + M

Note: Screen reader shortcuts vary by software (NVDA, JAWS, VoiceOver). Consult your screen reader's documentation for the full key map.