/* ==========================================================================
   GRUPO VILLANET - ANIMACIONES Y EFECTOS 3D EN SCROLL (SUBIDA Y BAJADA)
   ========================================================================== */

/* Animación Reveal Bidireccional (Scroll Down & Up) */
.reveal-3d {
  opacity: 0;
  transform: translateY(45px) scale(0.96) rotateX(6deg);
  transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), 
              transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: opacity, transform;
}

.reveal-3d.active {
  opacity: 1;
  transform: translateY(0) scale(1) rotateX(0deg);
}

.reveal-left {
  opacity: 0;
  transform: translateX(-50px) rotateY(-8deg);
  transition: all 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}

.reveal-left.active {
  opacity: 1;
  transform: translateX(0) rotateY(0deg);
}

.reveal-right {
  opacity: 0;
  transform: translateX(50px) rotateY(8deg);
  transition: all 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}

.reveal-right.active {
  opacity: 1;
  transform: translateX(0) rotateY(0deg);
}

/* Keyframes de Velocidad y Destellos Neón */
@keyframes pulseGlowGreen {
  0% {
    box-shadow: 0 0 10px rgba(124, 189, 0, 0.2);
  }
  50% {
    box-shadow: 0 0 25px rgba(124, 189, 0, 0.6), 0 0 40px rgba(124, 189, 0, 0.3);
  }
  100% {
    box-shadow: 0 0 10px rgba(124, 189, 0, 0.2);
  }
}

@keyframes pulseGlowOrange {
  0% {
    box-shadow: 0 0 10px rgba(255, 121, 0, 0.2);
  }
  50% {
    box-shadow: 0 0 25px rgba(255, 121, 0, 0.6), 0 0 40px rgba(255, 121, 0, 0.3);
  }
  100% {
    box-shadow: 0 0 10px rgba(255, 121, 0, 0.2);
  }
}

@keyframes fiberSpeedLine {
  0% {
    stroke-dashoffset: 1000;
  }
  100% {
    stroke-dashoffset: 0;
  }
}

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

.animate-float {
  animation: float3D 5s ease-in-out infinite;
}

.glow-pulse-green {
  animation: pulseGlowGreen 3s infinite;
}

.glow-pulse-orange {
  animation: pulseGlowOrange 3s infinite;
}
