/* animations.css - GabeHost */

@keyframes slideDown {
  from { opacity: 0; transform: translateY(-10px); }
  to { opacity: 1; transform: translateY(0); }
}

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

@keyframes ledOn1 { 0% { opacity: 0; } 100% { opacity: 1; } }
@keyframes ledOn2 { 0% { opacity: 0; } 100% { opacity: 1; } }
@keyframes ledOn3 { 0% { opacity: 0; } 100% { opacity: 1; } }
@keyframes ledOn4 { 0% { opacity: 0; } 100% { opacity: 1; } }
@keyframes ledOn5 { 0% { opacity: 0; } 100% { opacity: 1; } }

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

@keyframes barFill {
  0% { width: 0%; }
  30% { width: 70%; }
  70% { width: 90%; }
  100% { width: 0%; }
}

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

@keyframes scanDown {
  0% { top: 0; opacity: 0; }
  10% { opacity: 1; }
  90% { opacity: 1; }
  100% { top: 100%; opacity: 0; }
}

@keyframes gridShift {
  0% { transform: translate(0, 0); }
  100% { transform: translate(50px, 50px); }
}

@keyframes orbDrift {
  0% { transform: translate(0, 0) scale(1); }
  100% { transform: translate(60px, 40px) scale(1.25); }
}

@keyframes particleRise {
  0% { bottom: -5%; opacity: 0; transform: translateX(0) scale(1); }
  10% { opacity: 1; transform: scale(1.3); }
  90% { opacity: 0.6; }
  100% { bottom: 105%; opacity: 0; transform: translateX(40px) scale(0.5); }
}

@keyframes lineDrop {
  0% { transform: translateY(-150px); opacity: 0; }
  25% { opacity: 1; }
  75% { opacity: 1; }
  100% { transform: translateY(calc(100vh + 150px)); opacity: 0; }
}

@keyframes diamondFloat {
  0% { bottom: -5%; opacity: 0; transform: rotate(45deg) scale(0.5); }
  15% { opacity: 1; transform: rotate(45deg) scale(1); }
  85% { opacity: 0.6; transform: rotate(225deg) scale(0.8); }
  100% { bottom: 105%; opacity: 0; transform: rotate(360deg) scale(0.3); }
}

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

/* Page Specific: Audio Streaming */
@keyframes wavePulse {
  0%, 100% { transform: scaleY(0.3); opacity: 0.5; }
  50% { transform: scaleY(1); opacity: 1; }
}

@keyframes orbPulse {
  0%, 100% { transform: scale(1); opacity: 0.5; }
  50% { transform: scale(1.3); opacity: 0.8; }
}

/* Page Specific: Reseller Particles */
@keyframes particleFloat {
    0%, 100% { transform: translate(0, 0) scale(1); opacity: 0; }
    25% { opacity: 0.8; }
    50% { transform: translate(-20px, -30px) scale(1.5); opacity: 0.5; }
    75% { opacity: 0.2; }
    100% { transform: translate(-40px, -60px) scale(0); opacity: 0; }
}

@keyframes dataFlow {
    0% { opacity: 0; transform: translateX(-100%); }
    50% { opacity: 1; }
    100% { opacity: 0; transform: translateX(100%); }
}

.fade-in {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}

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

.pulse-badge { animation: pulse 2s infinite; }

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

.animate-fade-in {
    animation: fadeIn 0.5s ease-out forwards;
}
