Accessibility
Provenance and reach have to work without sight, without motion and without a pointer. Every colour cue pairs with a word or a shape, every live region speaks once, and every gesture has a keyboard path.
Still and reduced motion
Still stops every animation in the app. It turns on by itself when the device asks for reduced motion, and people can switch it from the top bar or Settings at any time.
- Never encode a state only in motion. Thinking has a blinking caret and a word; with Still on, the word remains.
- Streamed text arrives whole when Still is on.
Contrast
All text colours meet 4.5:1 on their backgrounds in both modes, including pigment at its lightest stop. See Colour for the figures.
Screen readers
- Announce model output once, when it is complete. Mark the region
aria-busywhile words stream in, so screen readers don’t read every word as it lands. - Say who wrote it. Pigment is invisible to a screen reader, so label model regions in words: “Lease summary, written by the model”.
- Give reach in the accessible name or description: “Release deposit. Person only. Cannot be undone.”
- Announce changes the model made in one sentence: “The model changed 4 values in the rent roll.”
Keyboard paths
| Component | Gesture | Keyboard |
|---|---|---|
| Morph | Drag in a direction | Arrow keys choose, Enter applies |
| Seal | Hold for one beat | Hold Space or Enter |
| Caret | Tap to take the draft | Tab takes all, → takes one word |
| Reel | Tap the sides, hold to pause | ← and → change scene, Space pauses |
| Lasso | Select text | Select with Shift and the arrows, then Tab to the actions |
| Guide | Tap Ask in the dock | ⌘K or Ctrl+K |
Text size
Every size is in rem. Settings offers 100%, 112% and 125%, and layouts reflow at each one. Browser zoom works too.
Gestures
- Every swipe has a button: murmurs can be swiped, and also have their actions as buttons.
- The Ring keyboard is an addition, never a replacement. Hide it and the system keyboard returns.
- Holds can be cancelled by letting go early. Nothing happens until the hold completes.