
@keyframes fadeUp { from { opacity: 0; transform: translateY(32px); } to { opacity: 1; transform: translateY(0); } }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes rotateSlow { from { transform: translate(-50%, -50%) rotate(0deg); } to { transform: translate(-50%, -50%) rotate(360deg); } }
@keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
[data-animate] { opacity: 0; transform: translateY(24px); transition: opacity 0.7s var(--transition-slow), transform 0.7s var(--transition-slow); }
[data-animate='fade-in'] { transform: none; }
[data-animate].is-visible { opacity: 1; transform: none; }
[data-delay='100'].is-visible { transition-delay: 0.1s; }
[data-delay='200'].is-visible { transition-delay: 0.2s; }
[data-delay='300'].is-visible { transition-delay: 0.3s; }
[data-delay='400'].is-visible { transition-delay: 0.4s; }
[data-delay='500'].is-visible { transition-delay: 0.5s; }
.hover-lift { transition: transform var(--transition-base), box-shadow var(--transition-base); }
.hover-lift:hover { box-shadow: var(--shadow-lg); transform: translateY(-4px); }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; scroll-behavior: auto !important; transition-duration: 0.01ms !important; }
  [data-animate] { opacity: 1; transform: none; }
}
