/* §09 Motion. Calm, physical, interruptible (after Apple, Designing Fluid Interfaces).
   Enters ease out; exits are faster, ease in, and leave along the path they entered.
   Feedback fires on pointer-down, never on release. Animate transform and opacity only.
   Never lock input during a transition. Fade and 8px rise remain the only entrances.
   No bounce, no overshoot: critically damped everywhere. */
:root{
  --gt-dur:220ms; /* @kind other */
  --gt-ease:cubic-bezier(.2,.8,.2,1); /* @kind other */
  --ease-enter:var(--gt-ease); /* @kind other */
  --ease-exit:cubic-bezier(.8,0,.8,.2); /* @kind other */ /* mirror of --gt-ease: exits accelerate away */
  --duration-fast:180ms; /* @kind other */
  --duration-base:var(--gt-dur); /* @kind other */
  --duration-slow:260ms; /* @kind other */
  --duration-exit:160ms; /* @kind other */ /* exits are always faster than enters */
  --duration-press:80ms; /* @kind other */ /* pointer-down feedback: near-instant */
  --duration-release:200ms; /* @kind other */ /* release recovery: snappy ease-out */
  --easing-standard:var(--gt-ease); /* @kind other */
  --motion-rise:8px;
  --press-scale:.98; /* @kind other */
  /* Motion-graphics easing set (after Emil Kowalski, Animations on the Web).
     All ease-out/in-out, no overshoot, so they stay inside the no-bounce rule. */
  --ease-out-quint:cubic-bezier(.23,1,.32,1); /* @kind other */ /* expressive entrances, hover lift */
  --ease-out-cubic:cubic-bezier(.33,1,.68,1); /* @kind other */ /* gentle entrances */
  --ease-in-out-cubic:cubic-bezier(.645,.045,.355,1); /* @kind other */ /* moving on screen */
  --duration-hover:150ms; /* @kind other */
  --stagger-step:60ms; /* @kind other */ /* per-item delay in staggered entrances */
  --hover-lift:-4px; /* @kind other */ /* expressive lift for motion-graphics cards; UI cards keep -1px */
  /* §09b Graphics register (video, social, hero storytelling). The one place a
     settle may overshoot, and only by ~4%: a settle, never a bounce. Everything
     here resolves: noise to signal, scattered to aligned, dashed to drawn. */
  --ease-settle:cubic-bezier(.22,1.18,.36,1); /* @kind other */ /* graphics register only, never UI */
  --ease-draw:cubic-bezier(.65,0,.35,1); /* @kind other */ /* lines drawing, wipes travelling */
  --ease-wipe:cubic-bezier(.76,0,.24,1); /* @kind other */ /* colour-block scene wipes */
  --duration-reveal:640ms; /* @kind other */ /* one word, one bar, one label */
  --duration-draw:900ms; /* @kind other */ /* a line drawing its full length */
  --duration-wipe:720ms; /* @kind other */ /* half a scene wipe (in, then out) */
  --duration-count:1400ms; /* @kind other */ /* a counter reaching its value */
  --duration-hold:1200ms; /* @kind other */ /* minimum rest before the next beat */
  --stagger-word:50ms; /* @kind other */
  --stagger-item:90ms; /* @kind other */
  --reveal-rise:0.55em; /* words rise from under a mask */
}
@media (prefers-reduced-motion:reduce){
  /* Reduced motion is a cross-fade, not a freeze: opacity and colour keep a short
     duration, every transform collapses to none. */
  :root{--gt-dur:160ms; /* @kind other */--duration-fast:120ms; /* @kind other */--duration-base:160ms; /* @kind other */--duration-slow:160ms; /* @kind other */--duration-exit:120ms; /* @kind other */--duration-press:1ms; /* @kind other */--duration-release:1ms; /* @kind other */--stagger-step:0ms; /* @kind other */--hover-lift:0px; /* @kind other */--motion-rise:0px;--press-scale:1; /* @kind other */--ease-settle:var(--gt-ease); /* @kind other */--duration-reveal:160ms; /* @kind other */--duration-draw:160ms; /* @kind other */--duration-wipe:160ms; /* @kind other */--duration-count:1ms; /* @kind other */--stagger-word:0ms; /* @kind other */--stagger-item:0ms; /* @kind other */--reveal-rise:0em}
}
