Ninety.

Sensory & Focus · 02 A quiet button, in any way you reach it.

Ninety. is one button. Tap it, get ninety seconds of brown noise paced to a slow breath. Tap again to stop. The audience is people who reach for an app like this in a difficult moment — sensory overwhelm, ADHD, autism, post-concussion, migraine, processing fatigue. Accessibility for Ninety. isn't a checkbox on a feature list. It's the whole product surface.

Below is an honest, complete list of the ten Accessibility Nutrition Label categories Ninety. declares, what each one means in practice, and how to enable it on your iPhone. If a feature works for the App Store label but doesn't work for you, that's a bug — see the feedback section at the bottom.

i.VoiceOver

The central button reads as a single clear statement of state: "Play ninety seconds of brown noise. Button." Activate it and the next swipe announces "Stop. Button." A spoken announcement on session start ("Playing ninety seconds of brown noise.") and end ("Stopped.") confirms the state change without needing to swipe back to the button.

The brand mark NINETY. reads as "Ninety" — not letter-by-letter. The breathing halo and helper text are hidden from VoiceOver (decorative — they'd add noise without information). The appearance toggle in the top-right is announced as "Switch to dark mode" or "Switch to light mode" based on the current state.

Verified on iPhone.

ii.Voice Control

The button responds to a wide range of natural phrasings — "Tap play," "Tap start," "Tap begin," "Tap breathe" when idle; "Tap stop," "Tap pause," "Tap end," "Tap quit" when playing. The appearance toggle accepts "Tap dark mode," "Tap light mode," "Tap appearance," "Tap theme." "Show numbers" overlays the interactive elements for users who prefer numbered targets.

Verified on iPhone.

iii.Switch Control

One central button, one appearance toggle in the corner — Ninety. is unusually friendly to switch users. Scanning lands on the play/stop button on the first or second item-mode pass with no nested groups to traverse. Activation triggers the same playback flow as a tap.

Verified on iPhone.

iv.Larger Text

The helper text, brand label, and footer use Dynamic Type-mapped font tokens (system body / footnote / caption2). Setting iOS to AccessibilityXXXL scales every text element in Ninety. without clipping. The central button itself has no text — it's a colored circle — so it's unaffected by text-size changes.

Verified at every Dynamic Type size from xSmall through AccessibilityXXXL.

v.Sufficient Contrast

Ninety. ships with a designed dark variant on by default — cool dark grey canvas (#1F1F21) with a near-white ink (#EBEBED) for body text. Body text contrast measures 14.4:1, well above WCAG AAA's 7:1 threshold.

The optional light register (Settings does not exist; toggle is in the top-right corner) uses warm cream canvas (#F8F5F0) with near-black ink (#1A1A1A) — 16.8:1, also AAA. Both registers pair with a calibrated cool-blue accent that meets WCAG 3:1 graphical UI contrast in either mode. Increased Contrast (iOS Settings → Display & Text Size) is honored: faded helper text becomes fully opaque.

vi.Reduced Motion

Honored. The breathing halo animation around the central button — a slow 6-second swell on session start, normally synchronized with the audio LFO — collapses to a static "active" state (slightly larger, slightly brighter) with no animation. The audio itself still breathes; only the visual breathing is paused.

The 5-second audio fade-in and fade-out remain regardless of Reduced Motion. Audio fades are functional (preventing abrupt onset/offset that would be hostile to the audience), not decorative.

vii.Reduced Transparency

Honored. The 24px gaussian blur on the breathing halo collapses to a solid disc with no blur. This matters for users on older iPhones where blur is more taxing visually and for users who find translucency disorienting (a real sensory-overwhelm trigger).

viii.Differentiate Without Color

Ninety. has only one interactive element on its main surface (the central button) and one auxiliary control (the appearance toggle). Neither relies on color to communicate state: the button changes size and brightness when active (halo grows, hue lifts), the toggle's text label changes ("Dark Mode" ↔ "Light Mode"). Tested under iOS Color Filters set to Grayscale — every state distinction reads cleanly.

ix.Bigger Hit Targets

The central button is 132 × 132 points — three times Apple's minimum hit-target guideline of 44 × 44. The appearance toggle uses a 44-point Bootstrap-Tailored tap area despite its visually smaller text label. Both surfaces are forgiving to users with tremor, low fine-motor control, or who use Switch Control with imprecise pointer devices.

x.Dark Interface

Ninety. ships a designed dark variant — not system-inverted, not Smart-Invert friendly, but a deliberately composed dark canvas with paired ink + accent tokens. The audience this app is for over-indexes on photophobia, migraine sensitivity, post-concussion syndrome, and sensory-overload triggers where bright canvases are actively harmful. Dark is the default on first launch for this reason.

The light register exists for users who prefer cream-on-paper as an aesthetic, and persists per device once chosen via the top-right toggle. Both registers were designed deliberately; neither is "dark mode just inverted."

xi.How to enable accessibility features

VoiceOver. iPhone: Settings → Accessibility → VoiceOver. Or set the Accessibility Shortcut once and triple-press the side button to toggle.

Voice Control. iPhone: Settings → Accessibility → Voice Control. (Requires downloading the language model on first enable.)

Switch Control. iPhone: Settings → Accessibility → Switch Control. Configure your switches before enabling.

Larger Text. Settings → Accessibility → Display & Text Size → Larger Text. Drag the slider to your preferred size; toggle "Larger Accessibility Sizes" for AX1 through AX5.

Increase Contrast. Settings → Accessibility → Display & Text Size → Increase Contrast.

Reduce Motion. Settings → Accessibility → Motion → Reduce Motion.

Reduce Transparency. Settings → Accessibility → Display & Text Size → Reduce Transparency.

Color Filters / Grayscale. Settings → Accessibility → Display & Text Size → Color Filters → Grayscale.

Dark / Light register inside Ninety. Tap the small "Dark Mode" or "Light Mode" text in the top-right of the main screen. Persists across launches.

xii.What we don't yet support

Honesty matters more than a clean checklist. As of v1.0:

Captions for Sound Alerts. Ninety. uses no notification sounds and no alert tones — the audio output is the product itself, not an alert. There's nothing to caption. Apple's nutrition label category doesn't apply.

Audio Descriptions. Same — the app has no video content, no animations that require narration. Doesn't apply.

Both categories are intentionally not declared on the ASC nutrition label.

xiii.Feedback

Accessibility issues, gaps, or "this doesn't read right with my screen reader" reports go to [email protected]. We read every email. If something is broken for you — that's a bug, not a feature gap, and we fix it.

Made quietly by sthreelabs.