this page lists what lowkey type actually does today to fit different ways of seeing, moving, and typing. it's deliberately plain. if something isn't here, it isn't supported yet — we'd rather say less than overclaim.
seeing
readable font (atkinson hyperlegible) and four color palettes: default, sepia (warm + low glare), and two color-blind-safe sets (red-green and blue-yellow). a high-contrast mode that pushes text past wcag aaa contrast and drops the blur. four text sizes that grow the typing line and the on-screen keyboard together. every accuracy band on the heatmap also carries a shape, so it reads without color. forced-colors / windows high-contrast mode is respected.
moving
reduced-motion mode that disables the background drift, the next-key pulse, and entrance fades. respects the system 'prefers-reduced-motion' setting by default. no animation in the app cycles faster than once a second, well under the wcag 2.3.1 flashing limit.
typing
an on-screen keyboard with real, focusable, labeled buttons — 44x44 px touch targets, sticky shift, backspace, the same scoring + adaptive path as a physical keystroke. auto-detected on touch devices; turn-on / turn-off in settings. repeat tolerance drops accidental double-presses and held-key auto-repeat. no-pressure pacing hides the speed pill, drops the error shake, and lets you mark any exercise done whenever you want — skipped exercises don't touch the per-key data.
reading the keyboard
the next-key hint has four levels — auto, strong, subtle, off. auto fades per key as you settle a letter (the more accurate you get, the quieter the cue becomes). the on-screen keyboard relabels itself per keyboard type (windows / mac / chromebook) and scales with your chosen text size.
language
the page sets html lang per locale (english / español). practice text that doesn't match the page locale (e.g. english practice on the spanish ui) is tagged with its own lang so screen-reader voices know to switch.
privacy
no account, no analytics, no ad networks, no third-party scripts. your progress lives in localStorage and IndexedDB on this device. clearing them resets the app to a fresh state. no part of practice is sent over the network.
what isn't here yet: a verified screen-reader pass, self-voicing / by-ear operation, switch-scanning beyond what native assistive tech can drive through the keyboard buttons, and a formal wcag / vpat statement. when those land, they'll show up on this page first.