/* ==========================================================================
   ASISH SONTI — ANIMATION SYSTEM
   Keyframes, Micro-Interactions, Reveal Masks & Performance Controls
   ========================================================================== */

/* Keyframe Animations */
@keyframes pulseGlow {
  0%, 100% {
    opacity: 0.6;
    box-shadow: 0 0 10px var(--cyan-secondary);
  }
  50% {
    opacity: 1;
    box-shadow: 0 0 20px var(--cyan-secondary), 0 0 35px var(--blue-electric);
  }
}

@keyframes floatSlow {
  0%, 100% {
    transform: translateY(0px) rotate(0deg);
  }
  50% {
    transform: translateY(-12px) rotate(1.5deg);
  }
}

@keyframes floatReverse {
  0%, 100% {
    transform: translateY(0px) rotate(0deg);
  }
  50% {
    transform: translateY(12px) rotate(-1.5deg);
  }
}

@keyframes rotateSlow {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

@keyframes orbPulse {
  0%, 100% {
    transform: scale(1) translate(0, 0);
    opacity: 0.25;
  }
  50% {
    transform: scale(1.15) translate(15px, -10px);
    opacity: 0.45;
  }
}

@keyframes maskReveal {
  from {
    transform: translateY(105%);
    opacity: 0;
  }
  to {
    transform: translateY(0%);
    opacity: 1;
  }
}

@keyframes fadeSlideUp {
  from {
    opacity: 0;
    transform: translateY(24px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes paperSlideIn {
  from {
    opacity: 0;
    transform: translateY(30px) scale(0.98);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes loadingBarProgress {
  0% {
    width: 0%;
  }
  40% {
    width: 65%;
  }
  80% {
    width: 88%;
  }
  100% {
    width: 100%;
  }
}

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

/* Reveal Text Utilities */
.reveal-wrapper {
  overflow: hidden;
  display: block;
}

.reveal-text {
  display: block;
  animation: maskReveal 0.9s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

/* Stagger Delays */
.delay-1 { animation-delay: 0.1s; }
.delay-2 { animation-delay: 0.2s; }
.delay-3 { animation-delay: 0.3s; }
.delay-4 { animation-delay: 0.4s; }
.delay-5 { animation-delay: 0.5s; }

/* Scroll Reveal Triggers */
.fade-in-on-scroll {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1), transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: opacity, transform;
}

.fade-in-on-scroll.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Floating Elements */
.animate-float {
  animation: floatSlow 6s ease-in-out infinite;
  will-change: transform;
}

.animate-float-reverse {
  animation: floatReverse 7s ease-in-out infinite;
  will-change: transform;
}

.animate-rotate {
  animation: rotateSlow 24s linear infinite;
}

/* Interactive Card & Media Zoom */
.zoom-on-hover {
  overflow: hidden;
}

.zoom-on-hover img, .zoom-on-hover svg {
  transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}

.zoom-on-hover:hover img, .zoom-on-hover:hover svg {
  transform: scale(1.04);
}

/* Reduced Motion Override for Accessibility */
@media (prefers-reduced-motion: reduce) {
  *, ::before, ::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }

  .animate-float, .animate-float-reverse, .animate-rotate {
    animation: none !important;
  }

  .fade-in-on-scroll {
    opacity: 1 !important;
    transform: none !important;
  }
}
