/* ===== Shared animations ===== */
@keyframes float-y { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
@keyframes fade-up { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@keyframes pulse-ring { 0% { box-shadow: 0 0 0 0 rgba(37, 211, 102, .55); } 70% { box-shadow: 0 0 0 16px rgba(37, 211, 102, 0); } 100% { box-shadow: 0 0 0 0 rgba(37, 211, 102, 0); } }
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes grow-w { from { width: 0; } }
.float { animation: float-y 5s ease-in-out infinite; }
.float.d2 { animation-delay: 1.2s; } .float.d3 { animation-delay: 2.4s; }
.fade-up { animation: fade-up .7s both; }
.lift { transition: transform .25s, box-shadow .25s; } .lift:hover { transform: translateY(-5px); box-shadow: var(--shadow-lg); }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; } }
