/* ==========================================
   animations.css — Keyframes, glow orbs, effects
   ========================================== */

/* ------------------------------------------
   TYPING CURSOR (blinking |)
   ------------------------------------------ */

.typing-cursor {
  font-weight: 100;
  animation: blink 1s step-end infinite;
}

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

/* ------------------------------------------
   GLOW ORBS (parallax background)
   ------------------------------------------ */

.glow-orb {
  position: fixed;
  border-radius: 50%;
  pointer-events: none;
  z-index: 0;
  filter: blur(80px);
  will-change: transform;
}

.orb-1 {
  width: 500px;
  height: 500px;
  background: radial-gradient(
    circle,
    rgba(129, 176, 254, 0.15),
    transparent 70%
  );
  top: 5%;
  left: -10%;
}

.orb-2 {
  width: 400px;
  height: 400px;
  background: radial-gradient(
    circle,
    rgba(99, 102, 241, 0.12),
    transparent 70%
  );
  top: 45%;
  right: -10%;
}

.orb-3 {
  width: 350px;
  height: 350px;
  background: radial-gradient(
    circle,
    rgba(129, 176, 254, 0.1),
    transparent 70%
  );
  top: 75%;
  left: 15%;
}

/* Reduce orb size on mobile for performance */
@media (max-width: 768px) {
  .glow-orb {
    filter: blur(60px);
    opacity: 0.7;
  }

  .orb-1 {
    width: 300px;
    height: 300px;
  }

  .orb-2 {
    width: 250px;
    height: 250px;
  }

  .orb-3 {
    width: 200px;
    height: 200px;
  }
}

/* ------------------------------------------
   FLOATING AVATAR
   ------------------------------------------ */

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

.avatar-wrapper {
  animation: float 4s ease-in-out infinite;
}

/* ------------------------------------------
   CTA BUTTON PULSE GLOW
   ------------------------------------------ */

@keyframes pulse-glow {
  0%,
  100% {
    box-shadow: 0 4px 20px rgba(129, 176, 254, 0.3);
  }
  50% {
    box-shadow: 0 8px 40px rgba(129, 176, 254, 0.55);
  }
}

.cta-button:hover {
  animation: pulse-glow 2s ease-in-out infinite;
}

/* ------------------------------------------
   STAT VALUE PULSE (when live stats update)
   ------------------------------------------ */

@keyframes stat-update {
  0% {
    color: var(--accent);
    transform: scale(1.08);
  }
  100% {
    color: var(--text-primary);
    transform: scale(1);
  }
}

.stat-value.updated {
  animation: stat-update 0.5s ease-out;
}

/* ------------------------------------------
   LIVE INDICATOR DOT
   ------------------------------------------ */

@keyframes live-pulse {
  0%,
  100% {
    opacity: 1;
    transform: scale(1);
  }
  50% {
    opacity: 0.5;
    transform: scale(0.85);
  }
}

/* ------------------------------------------
   CARD HOVER GLOW RING
   ------------------------------------------ */

.game-card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  border-radius: 16px;
  opacity: 0;
  transition: opacity 0.4s ease;
  pointer-events: none;
  box-shadow: inset 0 0 0 1px rgba(129, 176, 254, 0.2);
}

.game-card {
  position: relative;
}

.game-card:hover::before {
  opacity: 1;
}

/* ------------------------------------------
   SMOOTH REVEAL FOR DYNAMICALLY RENDERED CONTENT
   ------------------------------------------ */

.games-grid,
.videos-container {
  opacity: 0;
  animation: content-reveal 0.5s ease forwards;
  animation-delay: 0.2s;
}

@keyframes content-reveal {
  to {
    opacity: 1;
  }
}
