.reveal { opacity: 0; transform: translateY(22px); transition: opacity 520ms ease, transform 520ms ease; }
.reveal.visible { opacity: 1; transform: translateY(0); }
.slide-left { transform: translateX(26px); }
.slide-right { transform: translateX(-26px); }
.zoom-in { transform: scale(.96); }
.slide-left.visible, .slide-right.visible, .zoom-in.visible { transform: none; }
.ripple { position: absolute; border-radius: 999px; transform: scale(0); animation: ripple 620ms ease-out; background: rgba(255,255,255,.45); pointer-events: none; }
@keyframes ripple { to { transform: scale(3); opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 1ms !important; transition-duration: 1ms !important; scroll-behavior: auto !important; }
  .reveal { opacity: 1; transform: none; }
}
