The instrument grows a second door: an accessible text version

access.html + app/access.js — a screen-reader- and keyboard-first way to play Stellate, no vision required. It is not a reduced clone: it imports the same state/world/targeting/live modules the star map uses and drives them by an explicit genre choice or an ordered journey instead of a cursor, so it…

• retargetWeights(weights, pt?) added to targeting.js; retarget(pt) now delegates to it (map behavior unchanged — explorer-ui green).

• Genre picker (all 228, with each card's blurb), explicit-percentage blend, journey builder (an ordered loop of stops), 8 labeled "shape" macro sliders, seed, mode, Play/Stop (Space toggles).

• Only the two DOM ids the imported modules touch at load (#boot, #bgChip) exist as inert aria-hidden stubs; panels.js/starmap.js are never imported.

• Discoverability: a focus-revealed .a11y-skip link at the top of index.html and an About-panel link. Fixed stale "178-genre" -> 228 copy in the About.

Verified: access-ui-run.js: the accessible-page gate (12 checks — all 228 genres, hold + A/B blend + journey with real audio, determinism, zero errors).

▶ Play it: Hadal Vespers → Antiphon Decay — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=atlantidrone&seed=8314&path=2133.13956,1727.16539&xdur=0.287

7395b9f https://github.com/aboard-io/stellate/commit/7395b9fa90e36b7ea29009bd32893914110bfd30