Motion
Motion clarifies state changes — it never decorates. Four durations, four easings, six entrance primitives. Reduced-motion always wins.
Durations
Shorter for state changes, longer for entrances. Never longer than 480ms — operators are working.
| Token | Value | Use for |
|---|---|---|
| --dur-instant | 80ms | Tooltips, instant feedback |
| --dur-fast | 120ms | Hover, button states |
| --dur-base | 200ms | Popover & modal entry |
| --dur-slow | 320ms | Side sheet, page-section reveals |
| --dur-slower | 480ms | Full-screen transitions |
| --dur-page | 640ms | Page-level orchestration |
Easings
Four curves. Out for entrances, in-out for transforms, spring for delight, snap for instantaneous corrections.
Animation primitives
Apply one of these CSS classes to fade/slide an element in. Combine with .anim-delay-1 through .anim-delay-5 to orchestrate stacks.
Do & don't
Use motion to clarify state changes. A popover opening explains where it came from.
Use motion to decorate. If it doesn't communicate something, remove it.
Respect prefers-reduced-motion. The token system shrinks all durations to ~0 automatically.
Animate the same element on every state. Choose where animation matters.