/* ===== GLOBAL ANIMATIONS & HELPERS ===== */

/* Fade in up */
.fade-in-up {
  opacity: 0;
  transform: translateY(20px);
  animation: fadeInUp 0.6s var(--animation-easing) forwards;
}

@keyframes fadeInUp {
  to { opacity: 1; transform: translateY(0); }
}

/* Zoom in */
.zoom-in {
  opacity: 0;
  transform: scale(0.95);
  animation: zoomIn 0.5s var(--animation-easing) forwards;
}

@keyframes zoomIn {
  to { opacity: 1; transform: scale(1); }
}

/* Float */
.float {
  animation: float 6s ease-in-out infinite;
}

@keyframes float {
  0%, 100% { transform: translateY(0px); }
  50% { transform: translateY(-10px); }
}

/* Blink (cursor) */
.blink {
  animation: blink 1s infinite;
}

@keyframes blink {
  0%, 50% { opacity: 1; }
  51%, 100% { opacity: 0; }
}

/* ===== AOS FALLBACK =====
   If AOS fails to load, ensure elements are visible and not offset
*/
html.aos-disabled [data-aos] {
  opacity: 1 !important;
  transform: none !important;
}

html.aos-fallback [data-aos] {
  opacity: 1 !important;
  transform: none !important;
}

/* Utility: delay */
.delay-100 { animation-delay: .1s; }
.delay-200 { animation-delay: .2s; }
.delay-300 { animation-delay: .3s; }
.delay-400 { animation-delay: .4s; }
.delay-500 { animation-delay: .5s; }
