Make it look the way you think
Every visual control with its own live preview built from the real test surface — every override you make appears here exactly as it will on /app.
Themes & mode
Pick a community palette and flip light / dark. The preview is the real practice passage — every palette swap repaints it.
Colors
Override the active palette one CSS variable at a time. The preview pairs the live stats strip with the practice passage so every token has a visible target.
Geometry
Corner radius and the borders rule across the app. Every component honours these — the passage card, buttons, chips, popovers.
Caret & cursor
Style, thickness, roundness, blink, smooth-motion — the marker that follows your typing. The preview runs the real caret on a frozen passage so every option (including blink and smooth) plays here.
Typography
Font family, size, and word spacing of the practice passage. Body text and chrome stay on JetBrains Mono — only the passage changes.
Keyboard widget
The live keyboard rendered under the passage. Every option here repaints the preview above instantly.
Background
Drop in an image, pick how it fits, and tune opacity. Local to your browser — nothing uploads.
Live stats
WPM and accuracy ticker rendered alongside the passage. Colour, opacity, style (off / text / mini / flash), unit and decimal toggle all reflect in the real Readouts strip.
Typing area
Line count, max width, tape vs free-flow, smooth scroll. The passage above is the same component the test screen runs — every toggle moves it live.
Result screen
What the post-test screen shows. The preview embeds the real result components (BigStats and WpmTrace) so the layout, type ramp, and chart shape are exactly what the user sees after a run.
Keymap
Hand-layout that powers the heatmap and ergonomic stats. The preview reacts to every keymap setting; switching layout swaps the legend live.
Multiplayer
How live opponents read in /race. Today's only race surface is the 1v1v1v1 bot race, but the rule of thumb still holds — visuals here only affect surfaces with more than one racer.
Player colours are off · turn them on to enable the in-passage marker.