/* Premium/Corporate motion (Tranche 2). Premium cubic-bezier(0.4,0,0.2,1)
   entrances; Corporate cubic-bezier(0.2,0,0,1) micro-interactions.
   Elements are only hidden when JS is active (.motion-js on <html>),
   so no-JS and crawler renders stay fully visible. */
.motion-js .motion-reveal {
  opacity: 0; transform: translateY(16px);
  transition: opacity 550ms cubic-bezier(0.4,0,0.2,1), transform 550ms cubic-bezier(0.4,0,0.2,1);
  transition-delay: var(--motion-delay, 0ms);
}
.motion-js .motion-reveal.is-inview { opacity: 1; transform: translateY(0); }
.motion-js .motion-reveal-card {
  opacity: 0; transform: translateY(12px);
  transition: opacity 350ms cubic-bezier(0.2,0,0,1), transform 350ms cubic-bezier(0.2,0,0,1);
  transition-delay: var(--motion-delay, 0ms);
}
.motion-js .motion-reveal-card.is-inview { opacity: 1; transform: translateY(0); }
.motion-press { transition: transform 200ms cubic-bezier(0.2,0,0,1); }
.motion-press:hover { transform: translateY(-1px); }
.motion-press:active { transform: scale(0.98); }
@media (prefers-reduced-motion: reduce) {
  .motion-js .motion-reveal, .motion-js .motion-reveal-card {
    opacity: 1; transform: none; transition: none;
  }
  .motion-press, .motion-press:hover, .motion-press:active { transform: none; transition: none; }
}
