Motion Design Guide

Duration Guidelines

DurationUse Case
50–100msMicro-interactions: hover states, button press, toggle
100–200msUI feedback: checkbox, tooltip appear, menu item highlight
200–300msSimple transitions: dropdown open, card flip, expand
300–500msPage elements: modal open, sidebar slide, hero animation
500–1000msComplex transitions: page transition, onboarding step
>1000msLoading states, storytelling animations only

Easing Functions (hover rows to demo)

ease (default)
Slow start, fast middle, slow end
ease-in
Slow start (exit animations)
ease-out
Slow end (enter animations)
ease-in-out
Smooth both ends (modal, drawer)
linear
Constant speed (loaders, spinners)

CSS Animation Reference

/* Fade in from bottom */
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}
.fade-in-up {
  animation: fadeInUp 300ms ease-out both;
}

/* Smooth entrance for modals */
.modal {
  animation: scaleIn 200ms cubic-bezier(0.34, 1.56, 0.64, 1);
}
@keyframes scaleIn {
  from { opacity: 0; transform: scale(0.95); }
  to   { opacity: 1; transform: scale(1); }
}

/* Skeleton loading shimmer */
@keyframes shimmer {
  to { background-position: 200% center; }
}
.skeleton {
  background: linear-gradient(90deg, #1c2035 25%, #2a2f4a 50%, #1c2035 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
}

Motion Design Principles