Skip to content

Motion

Only transform and opacity animate. Content fades and rises once as it scrolls into view, large visuals drift with the page, and hover states change colour or nudge by a few pixels. Everything respects reduced motion and renders fully without JavaScript.

Reveal

Fade + rise 20px, 0.8s opacity / 0.9s transform with the soft ease, children staggered 90ms in DOM order, fired once at 20% in view.

Headline
Copy
Buttons
Visual

Easings

ease-out-soft · cubic-bezier(0.22, 1, 0.36, 1)

ease-standard · cubic-bezier(0.4, 0, 0.2, 1)

ease-out-soft for reveals, slides and crossfades. ease-standard for colour changes on buttons and tabs.

Durations and rules

PatternMotionTiming
Revealopacity 0 → 1, translateY 20px → 00.8s / 0.9s ease-out-soft, stagger 90ms
Parallaxhero visual drifts down up to 60px as it leaves (exit); other visuals ±30px (through)scroll-linked, transform only
Buttons, tabsfill colour change, no lift150ms ease-standard
Cardslift 2 to 4px; clipped images scale to 1.03200ms ease-out
Stat and list rowsvalue nudges 5px right on hover200ms ease-out
Linksfade to 60% opacity200ms ease-out
Sticky navafter 8px of scroll: translucent, hairline, scaleY 0.84 + content up 6px300ms ease-out
Carouselcards slide and scale; the active pagination line slides500ms ease-out-soft / spring
Accordion bodyfade + rise 6px0.45s ease-out-soft
Reduced motionno reveals, no parallax, no autoplay, no transitionsmotion-reduce:transition-none