.anim{opacity:0;transform:none;transition:all var(--duration, 0.8s) ease-out var(--delay, 0s);will-change:opacity,transform}.anim.run{opacity:1;transform:none}.fade-in{transform:none}.fade-up{transform:translateY(50px)}.slide-left{transform:translateX(-50px)}.slide-right{transform:translateX(50px)}.zoom-in{transform:scale(0.8)}.rotate-in{transform:rotate(-10deg) scale(0.8)}.hover-underline{background:linear-gradient(to right, var(--fromColor, #ec695c), var(--toColor, #61c454)) no-repeat left bottom;background-size:0 2px;transition:background-size 1000ms}.hover-underline:hover{background-size:100% 2px}.pulse{animation:pulse 1.8s ease-in-out infinite}@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(0.94)}}.cta-hint .ripple-ring{animation-iteration-count:3}.cta-hint{animation:breath 2.2s ease-in-out 3}
