Accessibility
Settings has an Accessibility button that opens its own screen (menu/scenes/Accessibility.ts) with two settings. Both live in core/accessibility.ts and are kept in localStorage apart from the save, like the speed unit, so a new game keeps them.
Colour-blind colours
Section titled “Colour-blind colours”The tach’s shift zones are amber, green and red, and red-green colour blindness loses exactly the green against the other two. With the setting on:
| Where | Standard | Colour-blind |
|---|---|---|
Tach perfect zone (race/view/tachZones.ts) |
green | white |
Shift and launch grade chips, “Perfect” (race/view/shiftGrades.ts) |
green | white |
“Seconds behind your perfect run” chart (race/view/resultCharts.ts) |
green | white |
Race progress bars, one per lane (race/view/Hud.ts) |
red, teal, green, amber | vermillion, sky blue, yellow, pink (Okabe-Ito, brightened) |
Code reads goodColor() and laneColors() instead of a constant, so a new place that shows “good” in green should do the same. White, not blue, because the tach itself is blue and a blue zone disappears into it. The shift and launch callouts (“Perfect shift!”, “Wheelspin!”) already say the grade in words, so no colour is the only cue there.
Reduced motion
Section titled “Reduced motion”Defaults to the device’s “reduce motion” setting (prefers-reduced-motion) until the player picks one. With it on:
- the main menu car’s neon stops sweeping (
player/view/heroNeon.ts); - the intro’s “Tap to start” stops pulsing (
menu/scenes/Intro.ts); - the dealer’s cars swap without sliding (
shop/dealer/ShowroomCar.ts); - the shift and launch callouts appear without the pop-in scale (
race/view/ShiftCallout.ts); - the waiting-nitrous blink slows from about 3 to 1 blink a second (
race/view/nitrousBlink.ts), under the three flashes a second that can trigger seizures.
Kept as is: the loading spinner and the dealer’s loading pulse (they say something is happening), fades between story stills, and the race itself (road, cars, smoke), which is the game.
Not built: larger text
Section titled “Not built: larger text”A Larger text setting that raised textSize()’s floor (24 on desktop, 28 on phones) was tried and dropped on 2026-11-12: the screens are laid out for their own platform’s text size, and 7 of 14 overflowed on a phone (achievement cards, dyno side panel, career event cards, tuning analyzer, parts preview, weekly car line, decal hint). It is its own item in docs/TODO.md.