Brand Motion Guidelines
Author a brand motion system — the document that defines how a brand or product moves, the way mature design systems (Slack, IBM Carbon, Klarna, Material) do it. Output is a fill-in-ready template covering principles, easing/timing tokens, a motion library, logo rules, feedback states, accessibility, and do/don't examples.
When to use
Use when a brand or product needs a documented motion language, when animation feels inconsistent across a team, when defining named easing/duration tokens for designers and engineers, or when adding a reduced-motion/accessibility standard. The output is a structured doc, not code.
Decision tree — scope the system, then pick the token
Two judgments: how big a system does this brand actually need, and which token a given motion should use. Don't build a 7-part system for a landing page; don't ship a one-pager for a multi-team design system.
How many surfaces/teams will use this?
├─ One site / one campaign → lightweight: principles + tokens + a short
│ library. Skip deep logo/state sections unless relevant.
├─ A product (app/web) → full 7-part doc; tokens are mandatory.
└─ A brand across product + marketing + broadcast → full doc PLUS a
Motion Personality preset (see motion-art-direction) so every medium matches.
Picking the token for a given motion:
duration: larger element / longer travel → longer token
(instant<fast<base<slow<slower)
easing: entrance → decelerate · exit → accelerate (and shorter)
within-view move → standard · brand moment → emphasized
continuous loop → linear · playful accent → spring (sparingly)
Rule of thumb: if a motion can't name the token it uses, it's a one-off — and one-offs are what make a system feel inconsistent.
What a motion system contains
A complete motion guidelines doc has seven parts. Author them in order:
- Motion principles — 3-5 named beliefs that govern every animation.
- Timing & easing tokens — named durations and curves, so motion is consistent and engineer-implementable.
- Motion library — entrance, exit, and transition patterns mapped to tokens.
- Logo animation rules — how the mark may and may not move.
- Feedback & state motion — loading, success, error, hover, focus.
- Accessibility — reduced-motion, photosensitivity, focus visibility.
- Do / Don't — concrete examples that make the rules unambiguous.
Tokens are the core
Everything else references the tokens. Define durations and curves once, as named tokens; the library and components reuse them. This is what makes a motion system implementable rather than decorative.
Sample duration tokens (fill in / adjust)
| Token |
Value |
Use |
duration-instant |
100ms |
Micro-feedback (toggle, tap) |
duration-fast |
150ms |
Hover, small state change |
duration-base |
250ms |
Standard UI transition (default) |
duration-slow |
400ms |
Larger surfaces, modals, page sections |
duration-slower |
600ms |
Hero/brand moments, full-screen |
Rule of thumb: the larger the element/distance, the longer the duration. Most UI motion lives at 150-400ms; under ~100ms reads as instant, over ~500ms feels sluggish for routine UI.
Sample easing tokens (curves)
| Token |
cubic-bezier |
Feel / use |
ease-standard |
(0.4, 0.0, 0.2, 1) |
Default; element moving within view |
ease-decelerate (ease-out) |
(0.0, 0.0, 0.2, 1) |
Entrances — fast in, settle |
ease-accelerate (ease-in) |
(0.4, 0.0, 1, 1) |
Exits — ease in, speed off |
ease-emphasized |
(0.2, 0.0, 0, 1) |
Expressive/brand moments |
ease-spring |
spring(stiffness, damping) |
Playful overshoot (use sparingly) |
Principle: entrances decelerate (objects arrive and settle), exits accelerate (objects leave with intent), and nothing important uses linear easing — linear feels mechanical and is reserved for continuous loops (spinners, progress).
Motion library (map patterns to tokens)
| Pattern |
Tokens |
Behaviour |
| Fade in |
duration-base + ease-decelerate |
Opacity 0→1 |
| Scale + fade in |
duration-base + ease-decelerate |
0.96→1 scale, opacity 0→1 |
| Slide up in |
duration-slow + ease-decelerate |
Y +8/16px → 0, fade in |
| Fade out |
duration-fast + ease-accelerate |
Opacity 1→0 (exits faster than entrances) |
| Modal open |
duration-slow + ease-emphasized |
Scale + fade, backdrop fades in |
| Page/section transition |
duration-base + ease-standard |
Cross-fade or shared-element move |
| List stagger |
duration-fast per item, 30-50ms offset |
Items cascade, not all at once |
Default rule: exits are shorter than entrances; staggers use small offsets (30-50ms) so groups feel alive without dragging.
The template (fill in)
[BRAND] MOTION GUIDELINES Version: ___ Owner: ___
1. PRINCIPLES
We move to: [principle 1 — e.g. "Guide attention, never steal it"]
[principle 2 — e.g. "Fast by default, expressive on purpose"]
[principle 3 — e.g. "Every motion has a reason"]
[principle 4] [principle 5]
2. TIMING TOKENS
instant ___ms · fast ___ms · base ___ms · slow ___ms · slower ___ms
3. EASING TOKENS
standard ____ · decelerate ____ · accelerate ____ · emphasized ____
4. MOTION LIBRARY
Entrances: [list patterns + tokens]
Exits: [list patterns + tokens]
Transitions:[list patterns + tokens]
5. LOGO ANIMATION
Allowed: [reveal style, duration token, when it may animate]
Never: [stretch, distort, rotate freely, recolour, exceed ___ms]
6. FEEDBACK & STATE MOTION
Loading: [spinner/skeleton rules + when each]
Success: [confirmation motion]
Error: [shake/colour rules — never colour alone]
Hover/Focus: [token + visible focus requirement]
7. ACCESSIBILITY
Reduced motion: [what happens — see section below]
Photosensitivity: max 3 flashes/sec; no full-screen strobing.
Focus: focus indicators never animate away or disappear.
8. DO / DON'T
✅ [do] ❌ [don't]
Logo animation rules (fill in)
State explicitly what is allowed and forbidden. Typical baseline:
- Allowed: a reveal/build using
duration-slow-slower + ease-emphasized; gentle settle; one signature build kept consistent everywhere.
- Never: stretch/squash the mark out of proportion, free-rotate, recolour outside the palette, animate every appearance (reserve it for key moments), or exceed the agreed max duration.
Feedback & state motion
- Loading: skeletons for content layout; spinners only for short, indeterminate waits; show progress for waits over ~1s.
- Success/error: pair motion with a label or icon — never communicate state by colour or motion alone (accessibility).
- Hover/focus:
duration-fast + ease-standard; focus state must be clearly visible and must not animate itself out of view.
Accessibility (required section)
- Reduced motion: honour the user's "reduce motion" setting. Replace movement/parallax/large transforms with simple opacity cross-fades or instant state changes. Keep essential meaning; remove decorative motion. (Conceptually maps to
prefers-reduced-motion.)
- Photosensitivity: no more than 3 flashes per second; avoid full-screen high-contrast strobing.
- No meaning by motion/colour alone: always pair with text or icon.
- Focus visibility: never let an animation hide or remove the focus indicator.
Worked examples
GOOD — a token-anchored library entry:
Modal open: duration-slow (400ms) + ease-emphasized; scale 0.96→1, backdrop fades in. Close: duration-base (250ms) + ease-accelerate.
Every value is a named token, the close is shorter than the open, the easing matches the intent (emphasized for a brand moment in, accelerate to leave). An engineer can implement it directly and it will match every other modal.
ANTI-PATTERN — the "vibes" guideline:
"Animations should feel smooth, modern, and delightful. Use nice easing and keep things snappy but not too fast."
Why it fails: no named tokens, no values, no entrance/exit rule, nothing implementable — "smooth" and "snappy" contradict and every engineer interprets them differently, so the product ends up inconsistent (the exact problem the doc was meant to solve). The fix: replace adjectives with the token tables, map each pattern to tokens, and give do/don't pairs with concrete millisecond values.
Common mistakes
| Symptom |
Why it happens |
Fix |
| Motion inconsistent across screens |
Hand-tuned one-off values, no tokens |
Define tokens once; every pattern references them |
| Doc sounds nice, can't be built |
Principles written as adjectives, not values |
Pair every principle with a numeric token rule |
| Everything bounces |
Spring/overshoot used everywhere |
Reserve spring/emphasized for brand moments only |
| Exits feel sluggish |
Exit duration ≥ entrance |
Make exits one step shorter; accelerate them |
| Animation breaks accessibility |
No reduced-motion / colour-only states |
Add the required accessibility section; pair motion with text/icon |
| Logo animates differently everywhere |
No logo rules |
State one signature reveal + an explicit "never" list |
| Token values renamed constantly |
Names are literal (duration-250) |
Name by purpose (duration-base) so values can change |
Deliverable spec — what a good motion guidelines doc contains
The output is a structured document (template in references/full-template.md), not code. A complete doc has all seven parts, and:
- 3-5 named principles, each with a one-line rule (not adjectives).
- Duration and easing tokens with values/curves — the implementable core.
- A motion library mapping every pattern to tokens.
- Explicit logo allowed/never rules.
- Feedback/state motion (loading, success, error, hover, focus).
- A required accessibility section (reduced-motion, photosensitivity, focus, no meaning-by-colour-alone).
- Concrete do/don't pairs that remove ambiguity.
Before you finish — checklist
Related frameworks
This doc is the system-of-record for a brand's motion; two sibling skills supply the upstream theory and the per-project feel — reference and apply them, don't duplicate their tables:
animation-principles — your principles section should encode the Three Pillars (intent → tone → craft); the Primary/Secondary/Ambient motion layers explain why a hero move and ambient drift get different tokens; the 1/3 Rule justifies stagger limits (don't move everything at once). Cite these; keep the canonical tables there.
motion-art-direction — for a brand spanning product + marketing + broadcast, pick a named Motion Personality preset and state it at the top of the doc, then derive token values to match (snappier preset → shorter durations; premium preset → longer, smoother). The motion-language spec lives there.
Quick reference
| Decision |
Default |
| Default UI duration |
duration-base 250ms |
| Entrance easing |
decelerate (ease-out) |
| Exit easing |
accelerate (ease-in), shorter than entrance |
| Linear easing |
only for loops (spinners/progress) |
| Stagger offset |
30-50ms per item |
| Logo animation |
reserved, consistent, never distort |
| State feedback |
motion + label/icon, never colour alone |
| Reduced motion |
swap transforms for fades/instant |
Reference files
references/full-template.md — the complete fill-in motion guidelines document with every section expanded and example copy.
references/token-reference.md — full duration and easing token tables with values, cubic-bezier curves, and usage notes.
references/dos-and-donts.md — a library of concrete do/don't pairs and worked principle examples (Slack/IBM/Material-style).
1---2name: brand-motion-guidelines3description: This skill should be used when the user asks to "write motion guidelines", "create a brand motion system", "define easing and timing tokens", "document our animation principles", "build a motion language like Slack/IBM/Klarna", "set up entrance/exit/transition rules", or "add a reduced-motion / accessibility section". It outputs a fill-in-ready brand motion guidelines document.4---56# Brand Motion Guidelines78Author a brand motion system — the document that defines how a brand or product moves, the way mature design systems (Slack, IBM Carbon, Klarna, Material) do it. Output is a fill-in-ready template covering principles, easing/timing tokens, a motion library, logo rules, feedback states, accessibility, and do/don't examples.910## When to use1112Use when a brand or product needs a documented motion language, when animation feels inconsistent across a team, when defining named easing/duration tokens for designers and engineers, or when adding a reduced-motion/accessibility standard. The output is a structured doc, not code.1314## Decision tree — scope the system, then pick the token1516Two judgments: *how big a system does this brand actually need*, and *which token a given motion should use*. Don't build a 7-part system for a landing page; don't ship a one-pager for a multi-team design system.1718```19How many surfaces/teams will use this?20├─ One site / one campaign → lightweight: principles + tokens + a short21│ library. Skip deep logo/state sections unless relevant.22├─ A product (app/web) → full 7-part doc; tokens are mandatory.23└─ A brand across product + marketing + broadcast → full doc PLUS a24 Motion Personality preset (see motion-art-direction) so every medium matches.2526Picking the token for a given motion:27 duration: larger element / longer travel → longer token28 (instant<fast<base<slow<slower)29 easing: entrance → decelerate · exit → accelerate (and shorter)30 within-view move → standard · brand moment → emphasized31 continuous loop → linear · playful accent → spring (sparingly)32```3334Rule of thumb: if a motion can't name the token it uses, it's a one-off — and one-offs are what make a system feel inconsistent.3536## What a motion system contains3738A complete motion guidelines doc has seven parts. Author them in order:39401. **Motion principles** — 3-5 named beliefs that govern every animation.412. **Timing & easing tokens** — named durations and curves, so motion is consistent and engineer-implementable.423. **Motion library** — entrance, exit, and transition patterns mapped to tokens.434. **Logo animation rules** — how the mark may and may not move.445. **Feedback & state motion** — loading, success, error, hover, focus.456. **Accessibility** — reduced-motion, photosensitivity, focus visibility.467. **Do / Don't** — concrete examples that make the rules unambiguous.4748## Tokens are the core4950Everything else references the tokens. Define durations and curves once, as named tokens; the library and components reuse them. This is what makes a motion system implementable rather than decorative.5152### Sample duration tokens (fill in / adjust)5354| Token | Value | Use |55|---|---|---|56| `duration-instant` | 100ms | Micro-feedback (toggle, tap) |57| `duration-fast` | 150ms | Hover, small state change |58| `duration-base` | 250ms | Standard UI transition (default) |59| `duration-slow` | 400ms | Larger surfaces, modals, page sections |60| `duration-slower` | 600ms | Hero/brand moments, full-screen |6162Rule of thumb: the larger the element/distance, the longer the duration. Most UI motion lives at 150-400ms; under ~100ms reads as instant, over ~500ms feels sluggish for routine UI.6364### Sample easing tokens (curves)6566| Token | cubic-bezier | Feel / use |67|---|---|---|68| `ease-standard` | (0.4, 0.0, 0.2, 1) | Default; element moving within view |69| `ease-decelerate` (ease-out) | (0.0, 0.0, 0.2, 1) | Entrances — fast in, settle |70| `ease-accelerate` (ease-in) | (0.4, 0.0, 1, 1) | Exits — ease in, speed off |71| `ease-emphasized` | (0.2, 0.0, 0, 1) | Expressive/brand moments |72| `ease-spring` | spring(stiffness, damping) | Playful overshoot (use sparingly) |7374Principle: entrances decelerate (objects arrive and settle), exits accelerate (objects leave with intent), and nothing important uses linear easing — linear feels mechanical and is reserved for continuous loops (spinners, progress).7576## Motion library (map patterns to tokens)7778| Pattern | Tokens | Behaviour |79|---|---|---|80| Fade in | `duration-base` + `ease-decelerate` | Opacity 0→1 |81| Scale + fade in | `duration-base` + `ease-decelerate` | 0.96→1 scale, opacity 0→1 |82| Slide up in | `duration-slow` + `ease-decelerate` | Y +8/16px → 0, fade in |83| Fade out | `duration-fast` + `ease-accelerate` | Opacity 1→0 (exits faster than entrances) |84| Modal open | `duration-slow` + `ease-emphasized` | Scale + fade, backdrop fades in |85| Page/section transition | `duration-base` + `ease-standard` | Cross-fade or shared-element move |86| List stagger | `duration-fast` per item, 30-50ms offset | Items cascade, not all at once |8788Default rule: exits are shorter than entrances; staggers use small offsets (30-50ms) so groups feel alive without dragging.8990## The template (fill in)9192```93[BRAND] MOTION GUIDELINES Version: ___ Owner: ___94951. PRINCIPLES96 We move to: [principle 1 — e.g. "Guide attention, never steal it"]97 [principle 2 — e.g. "Fast by default, expressive on purpose"]98 [principle 3 — e.g. "Every motion has a reason"]99 [principle 4] [principle 5]1001012. TIMING TOKENS102 instant ___ms · fast ___ms · base ___ms · slow ___ms · slower ___ms1031043. EASING TOKENS105 standard ____ · decelerate ____ · accelerate ____ · emphasized ____1061074. MOTION LIBRARY108 Entrances: [list patterns + tokens]109 Exits: [list patterns + tokens]110 Transitions:[list patterns + tokens]1111125. LOGO ANIMATION113 Allowed: [reveal style, duration token, when it may animate]114 Never: [stretch, distort, rotate freely, recolour, exceed ___ms]1151166. FEEDBACK & STATE MOTION117 Loading: [spinner/skeleton rules + when each]118 Success: [confirmation motion]119 Error: [shake/colour rules — never colour alone]120 Hover/Focus: [token + visible focus requirement]1211227. ACCESSIBILITY123 Reduced motion: [what happens — see section below]124 Photosensitivity: max 3 flashes/sec; no full-screen strobing.125 Focus: focus indicators never animate away or disappear.1261278. DO / DON'T128 ✅ [do] ❌ [don't]129```130131## Logo animation rules (fill in)132133State explicitly what is allowed and forbidden. Typical baseline:134- **Allowed**: a reveal/build using `duration-slow`-`slower` + `ease-emphasized`; gentle settle; one signature build kept consistent everywhere.135- **Never**: stretch/squash the mark out of proportion, free-rotate, recolour outside the palette, animate every appearance (reserve it for key moments), or exceed the agreed max duration.136137## Feedback & state motion138139- **Loading**: skeletons for content layout; spinners only for short, indeterminate waits; show progress for waits over ~1s.140- **Success/error**: pair motion with a label or icon — never communicate state by colour or motion alone (accessibility).141- **Hover/focus**: `duration-fast` + `ease-standard`; focus state must be clearly visible and must not animate itself out of view.142143## Accessibility (required section)144145- **Reduced motion**: honour the user's "reduce motion" setting. Replace movement/parallax/large transforms with simple opacity cross-fades or instant state changes. Keep essential meaning; remove decorative motion. (Conceptually maps to `prefers-reduced-motion`.)146- **Photosensitivity**: no more than 3 flashes per second; avoid full-screen high-contrast strobing.147- **No meaning by motion/colour alone**: always pair with text or icon.148- **Focus visibility**: never let an animation hide or remove the focus indicator.149150## Worked examples151152**GOOD — a token-anchored library entry:**153> *Modal open: `duration-slow` (400ms) + `ease-emphasized`; scale 0.96→1, backdrop fades in. Close: `duration-base` (250ms) + `ease-accelerate`.*154155Every value is a named token, the close is shorter than the open, the easing matches the intent (emphasized for a brand moment in, accelerate to leave). An engineer can implement it directly and it will match every other modal.156157**ANTI-PATTERN — the "vibes" guideline:**158> *"Animations should feel smooth, modern, and delightful. Use nice easing and keep things snappy but not too fast."*159160Why it fails: no named tokens, no values, no entrance/exit rule, nothing implementable — "smooth" and "snappy" contradict and every engineer interprets them differently, so the product ends up inconsistent (the exact problem the doc was meant to solve). The fix: replace adjectives with the token tables, map each pattern to tokens, and give do/don't pairs with concrete millisecond values.161162## Common mistakes163164| Symptom | Why it happens | Fix |165|---|---|---|166| Motion inconsistent across screens | Hand-tuned one-off values, no tokens | Define tokens once; every pattern references them |167| Doc sounds nice, can't be built | Principles written as adjectives, not values | Pair every principle with a numeric token rule |168| Everything bounces | Spring/overshoot used everywhere | Reserve spring/emphasized for brand moments only |169| Exits feel sluggish | Exit duration ≥ entrance | Make exits one step shorter; accelerate them |170| Animation breaks accessibility | No reduced-motion / colour-only states | Add the required accessibility section; pair motion with text/icon |171| Logo animates differently everywhere | No logo rules | State one signature reveal + an explicit "never" list |172| Token values renamed constantly | Names are literal (`duration-250`) | Name by purpose (`duration-base`) so values can change |173174## Deliverable spec — what a good motion guidelines doc contains175176The output is a structured document (template in references/full-template.md), not code. A complete doc has all seven parts, and:177- 3-5 named principles, each with a one-line rule (not adjectives).178- Duration and easing **tokens** with values/curves — the implementable core.179- A motion library mapping every pattern to tokens.180- Explicit logo allowed/never rules.181- Feedback/state motion (loading, success, error, hover, focus).182- A required accessibility section (reduced-motion, photosensitivity, focus, no meaning-by-colour-alone).183- Concrete do/don't pairs that remove ambiguity.184185### Before you finish — checklist186- [ ] 3-5 principles, each named and given a one-line rule.187- [ ] Duration tokens defined with values; easing tokens with cubic-bezier curves.188- [ ] Every library pattern names the tokens it uses.189- [ ] Entrances decelerate, exits accelerate and are shorter; linear only for loops.190- [ ] Logo rules state both allowed and never.191- [ ] Feedback states pair motion with text/icon (never colour alone).192- [ ] Accessibility section present: reduced-motion, photosensitivity, focus, contrast.193- [ ] Do/don't pairs are concrete (with values), not vibes.194- [ ] Token names are semantic (purpose), not literal values.195196## Related frameworks197198This doc is the *system-of-record* for a brand's motion; two sibling skills supply the upstream theory and the per-project feel — reference and apply them, don't duplicate their tables:199- **`animation-principles`** — your principles section should encode the **Three Pillars** (intent → tone → craft); the **Primary/Secondary/Ambient** motion layers explain *why* a hero move and ambient drift get different tokens; the **1/3 Rule** justifies stagger limits (don't move everything at once). Cite these; keep the canonical tables there.200- **`motion-art-direction`** — for a brand spanning product + marketing + broadcast, pick a named **Motion Personality** preset and state it at the top of the doc, then derive token values to match (snappier preset → shorter durations; premium preset → longer, smoother). The motion-language spec lives there.201202## Quick reference203204| Decision | Default |205|---|---|206| Default UI duration | `duration-base` 250ms |207| Entrance easing | decelerate (ease-out) |208| Exit easing | accelerate (ease-in), shorter than entrance |209| Linear easing | only for loops (spinners/progress) |210| Stagger offset | 30-50ms per item |211| Logo animation | reserved, consistent, never distort |212| State feedback | motion + label/icon, never colour alone |213| Reduced motion | swap transforms for fades/instant |214215## Reference files216217- `references/full-template.md` — the complete fill-in motion guidelines document with every section expanded and example copy.218- `references/token-reference.md` — full duration and easing token tables with values, cubic-bezier curves, and usage notes.219- `references/dos-and-donts.md` — a library of concrete do/don't pairs and worked principle examples (Slack/IBM/Material-style).