Foundation

Motion

A CSS-first motion language for feedback, presence and spatial context. Component state remains readable when motion is reduced or unavailable.

Live gallery

Inspect each family at a readable speed, then switch to its actual production timing.

FadeOpacity: 0 to 1
Preview

Continuous feedback

Reserved for active progress; reduced motion stops repetition.

Spinner

Loading in progress

Pulse

Background activity

Token scale

FamilyTokenValue
Durationinstant80ms
Durationfast120ms
Durationbase180ms
Durationslow260ms
Durationdeliberate420ms
Durationspinner700ms
Durationpulse1800ms
Distancemicro0.125rem
Distancefloating0.5rem
Scaleenter0.98
ScalepressSmall0.96
ScalepressMedium0.98
ScalepressLarge0.99

Native utility families

Presenceanimate-poyraz-fade-in / animate-poyraz-fade-outOpacity only
Scaleanimate-poyraz-scale-in / animate-poyraz-scale-outOpacity + scale
Floatinganimate-poyraz-floating-in / animate-poyraz-floating-outRadix data-side aware
Overlayanimate-poyraz-overlay-in / animate-poyraz-overlay-outOpacity; blur remains static
Disclosureanimate-poyraz-accordion-down / animate-poyraz-accordion-upRadix measured height
Progressanimate-poyraz-spin / animate-poyraz-pulseNon-essential loading feedback

Do

Animate opacity and transform, keep hover travel at 1-2px, and make exits slightly shorter than entrances.

Preserve labels, focus and state attributes so motion remains supplementary.

Don't

Do not animate blur, layout position, border width or large shadows. Do not use perpetual motion for semantic state.

Do not remove content in reduced-motion mode; reduce duration and repetition instead.