A motion system that sparks joy

Objects have weight. Shadows show depth. Movements are snappy and decisive.

Explore 54 animations
01 — Motion Vocabulary

5 durations, 7 easings

The motion system is built on duration and easing tokens. Every animation references these — never raw values.

Duration Scale
--motion-instant100ms
Hover color, press scale
--motion-fast160ms
Toggle, checkbox, tooltip
--motion-base240ms
Card hover, popover, shake
--motion-slow360ms
Modal entry, drawer slide
--motion-deliberate500ms
Page transitions, choreography
Easing Curves
Each SVG plots the curve. The animated dot traverses using the curve's own timing function.
--ease-out
cubic-bezier(0.16, 1, 0.3, 1)
Exits, fades, hover states. Fast start, gentle stop.
--ease-bounce
cubic-bezier(0.34, 1.56, 0.64, 1)
Entrances, attention, playful interactions. Overshoots then settles.
--ease-smooth
cubic-bezier(0.22, 1, 0.36, 1)
Page transitions, modal reveals. Smooth deceleration.
--ease-slam
cubic-bezier(0.55, 0.06, 0.68, 0.19)
Fast-in, abrupt stop. Dismissals, snapping, slam-down effects.
--ease-elastic
cubic-bezier(0.68, -0.55, 0.265, 1.55)
Exaggerated overshoot. Pulls back before launching forward.
Spring Easings (via linear())
True multi-oscillation spring curves using the CSS linear() function. These produce physically accurate spring motion impossible with cubic-bezier alone.
--ease-spring-gentle
linear(0, ... 1)
Gentle spring. Single small overshoot, settles naturally. Modals, cards.
--ease-spring-bouncy
linear(0, ... 1)
Bouncy spring. Multiple oscillations, playful physics. Toggles, badges.
Easing Guidelines
Each easing has a purpose. Match the curve to the intent — the wrong easing makes even a good animation feel off.
Use ease-out for...

Color changes, opacity fades, border transitions. Anything that responds immediately and decelerates naturally.

100–160ms · CSS transitions
Use ease-bounce for...

Toggle switches, checkboxes, small interactive elements. Creates playful overshooting that adds personality.

160–240ms · Spring-like feel
Use ease-smooth for...

Entrance animations, page transitions, modal reveals. Smooth deceleration creates a natural, controlled feel.

240–360ms · Entrance/exit
Use ease-slam for...

Hard stops, dismissals, and stamp-like impacts. Decelerates sharply for a weighty, definitive feel.

160–360ms · Exits and impacts
Use ease-elastic for...

Springy overshoots and playful entrances. Pulls back before springing forward for lively, energetic motion.

240–500ms · Entrances and emphasis
Never animate...

Layout shifts that cause content reflow, font-size changes, or anything that blocks user interaction. Keep the thread clear.

Avoid transform + layout simultaneously
02 — Entrances & Exits

14 lifecycle animations

Objects arrive with weight and leave with intention. Entrances and exits are natural pairs — choose one of each.

Entrances
Stamp
stamp-in

Scale 1.4 to 1 + Y drop, shadow appears on impact

360ms · bounce
heromodal
Drop
drop-in

Falls from above with slight rotation, bounces at landing

360ms · bounce
cardnotification
Slam
slide-slam

Slides from left with rotation, corrects sharply

360ms · out
drawerpanel
Punch
punch-up

Punches up from below past resting point, then settles

240ms · bounce
tooltippopover
Unfold
unfold

ScaleY from top, paper-unfolding feel

240ms · smooth
accordionmenu
1
2
3
brick-stack

Simple drop-in with 60ms stagger per child

160ms · out · stagger
listgrid
Pop
pop-stamp

Scale 0 to 1.15 to 1 with radius morph (circle to rect)

360ms · bounce
badgenotification
Reveal
shutter-reveal

Clip-path wipe from left to right

360ms · out
imagecontent
Exits
Fling
fling-right

Thrown right with 8deg rotation, fades out

240ms · out
dismissswipe
Press
press-away

Pressed into surface, shadow collapses, fades

240ms · out
closemodal
Crumple
crumple

Scale down + alternating rotation, like crumpling paper

360ms · slam
deletediscard
Trap
trapdoor

Hinges from bottom edge via perspective rotateX

300ms · slam
removelist
Snap
snap-shrink

Scale to 0, instant and decisive

160ms · out
quickchip
Fall
gravity-fall

Detaches from surface, accelerates downward with tumble

500ms · slam
dramaticerror
Component Motion Recipes
Component Entrance Exit Feedback
Toastslide-slamfling-rightconfirm-thud
Modalstamp-inpress-away
Cardbrick-stacktrapdoorspotlight
Alertinfo-slidepress-awayerror-jolt
03 — Interaction

20 response animations

How objects respond to users. Attention-grabbing shakes, system feedback, and the micro-interactions that make UI feel alive.

Attention
Knock
knock

Front-loaded horizontal shake, settles fast

400ms · linear
Pulse
stamp-pulse

Scale up (shadow grows), compress (shadow collapses), settle

500ms · bounce
Wiggle
wiggle

Small alternating rotation, eager tremor

500ms · out
Spot
spotlight

Shadow grows + focus ring blooms, then retreats

1200ms · smooth
Butt
headbutt

Vertical jump with bounce settle

400ms · bounce
March
border-march

Marching ants with chunky 8px dashes

800ms · linear · infinite
Feedback
OK
confirm-thud

Multi-bounce landing with green flash

360ms · bounce
ERR
error-jolt

Horizontal shake + danger background flash

500ms · linear
WARN
warning-bob

Gentle vertical bob with slight tilt

600ms · smooth
INFO
info-slide

Slide-in from left with subtle overshoot

240ms · out
loading-slam

Three dots bouncing with 120ms stagger

1s · bounce · infinite
progress-fill-slam

ScaleX fill that overshoots 2% and springs back

500ms · out
Micro-interactions
btn-press

Hover lifts, active slams in. Transition-based.

instant · linear
toggle-thwack

Knob stretches horizontally during transit, squishes on arrival

240ms · bounce
check-pop

Container pops in with overshoot + checkmark

240ms · bounce
Tilt me
hover-tilt

Subtle 3D perspective tilt on hover

fast · smooth
Drag
drag-lift

Scale up + rotate + shadow max on drag start

fast · bounce
input-focus-grow

Shadow shifts to accent 4px offset on focus

instant · out
⋮⋮
resize-grip-pulse

Gentle opacity pulse on resize handles

1200ms · smooth · infinite
Click
ripple-stamp

Solid-border circle expanding from click point

400ms · out
04 — Ambient & Text

10 continuous effects

Background motion and typography in motion. Subtle animations that add life without demanding attention.

Looping / Ambient
Center
hover-orbit

Small dot orbiting an element with counter-rotation

4s · linear · infinite
Breathe
breathe-shadow

Shadow breathes between sm and md

3s · smooth · infinite
Swing
pendulum

Swings +/-3deg from top-center origin

2.5s · smooth · infinite
Idle
idle-bounce

Gentle 4px vertical bounce

2s · bounce · infinite
Delightful Design System — Motion Language — Snappy & Decisive — 
ticker-scroll

Horizontal text scroll, marquee-style

15s · linear · infinite
Text Effects
console.log("hello")
typewriter-mono

Character-by-character reveal with blinking cursor

2s · steps · cursor-blink
STAMP IT
text-stamp

Per-character drop-in with 40ms stagger

200ms/char · bounce
DELIGHTFUL
text-scramble

Characters cycle through random glyphs before resolving

JS-driven · 30ms/char
Hover this text
underline-draw

3px underline draws left-to-right on hover

240ms · out
Highlighted text
highlight-sweep

Gold background sweeps across text

400ms · out
05 — Physics & Transitions

10 advanced techniques

Real-world forces and state changes. Springs, gravity, morphing shapes, and flipping cards.

Physics
Spring
spring-snap

Damped spring oscillation with decreasing overshoots

400ms · elastic
Gravity
gravity-drop

Accelerating fall + bounce on impact

500ms · slam+bounce
Rubber
rubber-band

Squash and stretch with volume conservation

500ms · bounce
Magnet
magnetic-snap

JS: elements accelerate toward cursor past threshold

JS-driven · 80px threshold
Scroll me
with momentum
and watch
the overshoot
spring back
naturally
like real
physics
momentum-scroll

Velocity-preserving scroll with overshoot

JS-driven
Transitions
Morph
morph-expand

Circle morphs to rounded rectangle while expanding

360ms · bounce
State A
State B
state-swap

Old slides up/fades, new slides up from below

160ms x 2 · out
Click to expand
Expanded content with smooth grid-template-rows transition.
accordion-squish

grid-template-rows 0fr to 1fr height animation

240ms · smooth
Front
Back
card-flip

180deg Y-axis flip with perspective

360ms · smooth
Collapse
collapse-to-chip

Full card compresses to badge/chip

360ms · out
06 — Choreography

Stagger, scroll, and orchestration

Sequenced entries with staggered delays and scroll-driven animations tied to viewport position.

Staggered Entry

Multiple items entering with sequential delays. Different spring configs produce different feels — snappy, standard, or gentle.

Snappy

30ms delay · bounce · 200ms

Item 1
Item 2
Item 3
Item 4
Standard

50ms delay · smooth · 300ms

Item 1
Item 2
Item 3
Item 4
Gentle

80ms delay · out · 400ms

Item 1
Item 2
Item 3
Item 4
Scroll-Driven

Animations tied to scroll position using animation-timeline: view() — scroll down to trigger them.

scroll-stamp-in
scroll-parallax-shadow
scroll-reveal-wipe
scroll-rotate-in
07 — Showcase

Animations in context

Animations composed together in real UI patterns. Toast, modal, form validation.

Toast System

Spawns toast notifications with slide-slam entrance and fling-right auto-dismiss.

Modal

Backdrop fades in, modal enters with stamp-in, closes with press-away.

Form Validation

Empty submit shakes with error-jolt. Valid submit confirms with confirm-thud.