Skip to content

Formal statement

Accessibility

This page states what we claim, how we tested it, and where we know we fall short. An accessibility demo that hides its own gaps would be arguing against itself.

Conformance

Jordan / Kinetic targets WCAG 2.2 Level AA across all pages. The Kinetic Access engine (smoothing, gravity wells, dwell, echo map) is an enhancement layered on top of that baseline — every task on the site can be completed without it, by keyboard alone, by screen reader, or by ordinary pointer.

What was tested, and how

  • Keyboard only: every page traversed with the mouse unplugged — all interactive elements reachable and operable, focus always visible, no traps. The Access drawer traps focus while open, releases on Escape, and returns focus to its trigger.
  • Screen reader: NVDA on Windows against Firefox and Chrome — landmarks, heading order, toggle state announcements (aria-pressed, role="switch"), and the live regions on the toast, route output and lab counters. The 3D canvas is aria-hidden; its beacons read as ordinary buttons.
  • Zoom: 200% and 400% browser zoom — no horizontal scrolling, no clipped content; layouts collapse to a single column.
  • Contrast: body text on background at 15.7:1; secondary text (--dim) at 8.6:1; both pass AA and AAA. Decorative dimmest text (--dimmer, 5.2:1) is used only for genuinely decorative lines. The high-contrast mode raises everything above 7:1.
  • Reduced motion: the OS-level prefers-reduced-motion and the site's own Still mode toggle are honoured independently; either one stops the hero orbit, marquee, reveals and transitions. The full manual script is in docs/test-plan.md.

Kinetic features → WCAG criteria

The engine is not decoration; each piece addresses a specific success criterion, usually going beyond what the criterion requires.

Feature-to-criterion mapping
Kinetic Access featureWCAG 2.2 criterion addressedHow
Dwell activation ("Hold to activate") 2.5.7 Dragging Movements (AA); 2.5.8 Target Size Minimum (AA); 2.5.2 Pointer Cancellation (A) No action on this site requires dragging or a physical click; resting on a target activates it, with user-set timing and a refractory period.
Gravity wells + captured-target outline 2.5.8 Target Size (AA), exceeded Targets are ≥24 px (primary actions ≥44 px) before assistance; gravity makes their effective size larger still, and the outline shows exactly what a press will hit.
Tremor smoothing (1€ filter) No direct criterion — this is the gap the project argues WCAG has Pointer stability is assumed, not addressed, by current criteria; smoothing supplies it client-side.
Echo map with visible transcript 1.3.1 Info and Relationships (A); 2.4.1 Bypass Blocks (A) Page landmarks are exposed as structure and additionally rendered as positional audio; the transcript keeps the scan available to deaf users.
Still mode + prefers-reduced-motion 2.3.3 Animation from Interactions (AAA); 2.2.2 Pause, Stop, Hide (A) All motion — including the WebGL hero — collapses under either the OS setting or the in-site toggle, independently.
High contrast mode 1.4.6 Contrast Enhanced (AAA) Raises all text above 7:1 on demand; default palette already meets AA.
Text size control (100–140%) 1.4.4 Resize Text (AA) In-page scaling on top of browser zoom, persisted across pages.
Audio portraits Beyond scope — sensory description as content Spoken sensory descriptions give low-vision visitors what the photograph gives sighted ones; the text is always visible too.

Known gaps

  • The kinetic cursor engine does not run on touch devices — deliberately, because a synthetic cursor has no meaning under a finger, but it means the engine's benefit is desktop-only.
  • Speech output (echo map, audio portraits) uses the browser's speechSynthesis voices; quality varies by platform and the Arabic place names are pronounced by an English voice.
  • The Lighthouse accessibility audit scores 100 on content pages; any run that scores below on the lab page is typically the decorative canvas — which carries an aria-label describing its content and has non-canvas equivalents for all information.
  • The simulated-tremor slider affects the pointer only, not scrolling; real tremor affects both.

Report a barrier

If anything on this site is harder for you than it should be, that is a bug in the project's core claim. Raise it with the project team through the university submission portal, or open an issue in the project repository if you received one with this build — both routes reach the same people.