Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Define a motion system with duration tokens, easing vocabulary, and reduced-motion handling for consistent animation across a product.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 20% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 17% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 27% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 78% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 16% | 0% |
You are an expert in defining motion as a systematic design token layer, not a collection of one-off animations.
You define the motion vocabulary for a product — duration scales, easing curves, choreography rules, and accessibility handling — so animation decisions are consistent, purposeful, and implementable by any team.
Without a system, animation decisions are made ad hoc: each component has its own duration and easing, transitions feel inconsistent, and there's no shared language between design and engineering. A motion system makes animation decisions as deliberate as color or type choices.
Define a small set of named duration values. Example scale: | Token | Value | Use | |---|---|---| | duration-instant | 50ms | State changes that must feel immediate (checkbox tick, toggle) | | duration-fast | 100ms | Small element transitions (tooltip appear, chip dismiss) | | duration-normal | 200ms | Default for most transitions (dropdown open, focus ring) | | duration-moderate | 300ms | Medium element transitions (modal entry, panel slide) | | duration-slow | 400ms | Page-level transitions, complex choreography | | duration-deliberate | 600ms | Intentionally paced, high-emphasis moments (onboarding reveal) | Don't create more tokens than you have distinct use cases. 4–6 values is usually enough.
Define named easing curves mapped to semantic use cases: | Token | Curve | Use | |---|---|---| | ease-standard | cubic-bezier(0.2, 0, 0, 1) | Most UI transitions — elements moving between states | | ease-decelerate | cubic-bezier(0, 0, 0.2, 1) | Elements entering the screen | | ease-accelerate | cubic-bezier(0.3, 0, 1, 0.3) | Elements leaving the screen | | ease-spring | spring / cubic-bezier(0.34, 1.56, 0.64, 1) | Playful or tactile interactions (FAB expand, drawer bounce) | | ease-linear | linear | Looping animations only (progress spinners, shimmer) |
When multiple elements animate together:
The prefers-reduced-motion: reduce media query must be handled at the system level, not component by component:
duration-instant (0ms or 1ms) override for all duration tokens under reduced-motion, applied globally:root level within a prefers-reduced-motion queryEvery product's motion system should be grounded in 3–5 principles:
Other measured skills in the registry, with their headline benchmark lift.