Skip to content

Motion

Animation in Plane 1 must carry functional information. Decorative motion is prohibited.

Two ADHD-specific failure modes drive the constraints:

  1. Layout shift on hover — displaces click targets during motor-imprecise moments. Prohibited.
  2. Translational excess — large sliding distances feel cinematic in demos, feel like waiting after 40 daily opens. Prohibited.
TokenValueUse
--motion-ease-calmcubic-bezier(0.3, 0.0, 0.2, 1.0)Large structural shifts — sidebar, view transitions. Slow, predictable deceleration.
--motion-ease-organiccubic-bezier(0.4, 0.0, 0.2, 1.0)Standard state changes — hover, focus, selection. Natural physical inertia.
--motion-duration-fast120msMicro-interactions — button press, tag selection
--motion-duration-base180msStandard transitions — input focus, card hover
--motion-duration-slow280msStructural transitions — panel open/close
TokenValueUse
--motion-micro120ms ease-organicButton press, tag toggle
--motion-state-change180ms ease-organicFocus, hover, selection
--motion-structural280ms ease-calmPanel open/close, view transitions

prefers-reduced-motion is a floor, not a ceiling. The system honours the OS preference and additionally provides an in-app motion intensity control. When reduced motion is active, all durations collapse to 0ms.

Saltie’s animations use personality-timing, not UI-timing. Her motion budget is separate from Plane 1. Her entrance may have a deliberate 800ms delay because she’s deciding whether to bother. Saltie’s animation tokens are separate from the tokens above.

  • No layout shift on hover — element must not move as cursor approaches
  • No large translational movement as primary transition
  • No ambient motion on any Plane 1 element
  • Plane 2 motion (the swamp) is exempt from these rules but never carries functional information