/* ==========================================================================
   NOVA APEX - ANIMATIONS & MOTION CHOREOGRAPHY
   GPU-Accelerated • Mass & Spring Physics • No layout reflows
   ========================================================================== */

/* --------------------------------------------------------------------------
   Atmospheric & Ambient Breathing
   -------------------------------------------------------------------------- */
@keyframes ambientDrift1 {
  0%, 100% {
    transform: translate3d(0, 0, 0) scale(1);
    opacity: 0.45;
  }
  50% {
    transform: translate3d(40px, -30px, 0) scale(1.1);
    opacity: 0.65;
  }
}

@keyframes ambientDrift2 {
  0%, 100% {
    transform: translate3d(0, 0, 0) scale(1);
    opacity: 0.35;
  }
  50% {
    transform: translate3d(-50px, 40px, 0) scale(1.15);
    opacity: 0.55;
  }
}

@keyframes pulseLive {
  0%, 100% {
    transform: scale(1);
    opacity: 1;
    box-shadow: 0 0 0 0 rgba(0, 206, 103, 0.7);
  }
  50% {
    transform: scale(1.1);
    opacity: 0.8;
    box-shadow: 0 0 0 6px rgba(0, 206, 103, 0);
  }
}

/* --------------------------------------------------------------------------
   Holographic Glows & Pedestal Auroras
   -------------------------------------------------------------------------- */
@keyframes auroraPulseGold {
  0%, 100% {
    transform: translate(-50%, -50%) scale(1);
    opacity: 0.55;
    filter: blur(30px);
  }
  50% {
    transform: translate(-50%, -50%) scale(1.15);
    opacity: 0.85;
    filter: blur(40px);
  }
}

@keyframes auroraPulseCyan {
  0%, 100% {
    transform: translate(-50%, -50%) scale(1);
    opacity: 0.45;
    filter: blur(25px);
  }
  50% {
    transform: translate(-50%, -50%) scale(1.12);
    opacity: 0.75;
    filter: blur(35px);
  }
}

@keyframes auroraPulseBronze {
  0%, 100% {
    transform: translate(-50%, -50%) scale(1);
    opacity: 0.4;
    filter: blur(25px);
  }
  50% {
    transform: translate(-50%, -50%) scale(1.1);
    opacity: 0.7;
    filter: blur(32px);
  }
}

/* --------------------------------------------------------------------------
   Pedestal & Avatar Micro-Levitation
   -------------------------------------------------------------------------- */
@keyframes floatSubtle {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-6px);
  }
}

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

@keyframes crownShine {
  0%, 100% {
    transform: rotate(0deg) scale(1);
    filter: drop-shadow(0 0 8px rgba(255, 209, 0, 0.7));
  }
  50% {
    transform: rotate(-3deg) scale(1.08);
    filter: drop-shadow(0 0 16px rgba(255, 209, 0, 1));
  }
}

/* --------------------------------------------------------------------------
   Entrance & Staggered Reveal Animations
   -------------------------------------------------------------------------- */
@keyframes podiumRiseUp {
  0% {
    opacity: 0;
    transform: translateY(40px) scale(0.95);
  }
  100% {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes fadeInScaleUp {
  0% {
    opacity: 0;
    transform: scale(0.92);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes slideDownIsland {
  0% {
    opacity: 0;
    transform: translateY(-30px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes energyPulseLine {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(100%);
  }
}

/* Helper animation classes */
.anim-rise-gold {
  animation: podiumRiseUp 0.8s cubic-bezier(0.32, 0.72, 0, 1) 0.15s both;
}

.anim-rise-cyan {
  animation: podiumRiseUp 0.8s cubic-bezier(0.32, 0.72, 0, 1) 0.05s both;
}

.anim-rise-bronze {
  animation: podiumRiseUp 0.8s cubic-bezier(0.32, 0.72, 0, 1) 0.25s both;
}

/* --------------------------------------------------------------------------
   Progress Bar Super Glow & Tip Flare
   -------------------------------------------------------------------------- */
@keyframes intenseProgressGlow {
  0% {
    box-shadow: 0 0 10px rgba(0, 238, 255, 0.4), inset 0 0 4px rgba(255, 255, 255, 0.5);
    filter: brightness(1);
  }
  15% {
    box-shadow: 0 0 35px rgba(0, 238, 255, 1), 0 0 55px rgba(255, 209, 0, 0.95), inset 0 0 14px #ffffff;
    filter: brightness(1.45);
  }
  75% {
    box-shadow: 0 0 30px rgba(0, 238, 255, 0.85), 0 0 45px rgba(255, 209, 0, 0.8), inset 0 0 10px #ffffff;
    filter: brightness(1.3);
  }
  100% {
    box-shadow: 0 0 12px rgba(0, 238, 255, 0.4), inset 0 0 4px rgba(255, 255, 255, 0.4);
    filter: brightness(1);
  }
}

.bar-intense-glow {
  animation: intenseProgressGlow 4.5s cubic-bezier(0.16, 1, 0.3, 1) forwards !important;
}

@keyframes flareTipActive {
  0%, 100% {
    transform: scale(1);
    box-shadow: 0 0 8px #ffffff;
  }
  50% {
    transform: scale(1.65);
    box-shadow: 0 0 25px #ffffff, 0 0 45px rgba(0, 238, 255, 1);
  }
}

.tip-active-flare {
  animation: flareTipActive 0.8s ease-in-out infinite alternate !important;
}

/* --------------------------------------------------------------------------
   TV Kiosk Display Mode Animations
   -------------------------------------------------------------------------- */
@keyframes slideInFromRight {
  0% {
    opacity: 0;
    transform: translate3d(80px, 0, 0);
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

.tv-card-slide-in {
  animation: slideInFromRight 0.75s cubic-bezier(0.16, 1, 0.3, 1) both;
}

/* --------------------------------------------------------------------------
   TV Scene 3: D+ Ranking Centered Brand Pulsation & Star Sparkle (Toothpaste Glint)
   -------------------------------------------------------------------------- */
@keyframes tvBrandPulsation {
  0%, 100% {
    transform: scale(1);
    filter: drop-shadow(0 18px 50px rgba(0, 0, 0, 0.9)) drop-shadow(0 0 35px rgba(0, 238, 255, 0.4));
  }
  50% {
    transform: scale(1.038);
    filter: drop-shadow(0 26px 70px rgba(0, 0, 0, 0.95)) drop-shadow(0 0 60px rgba(0, 238, 255, 0.75)) drop-shadow(0 0 90px rgba(255, 255, 255, 0.3));
  }
}

.tv-brand-pulse-wrapper {
  animation: tvBrandPulsation 3.6s ease-in-out infinite;
  will-change: transform, filter;
}


/* --------------------------------------------------------------------------
   Podium Levitating / Floating Cards (All 3 Champions) & 1st Place Crown
   -------------------------------------------------------------------------- */
@keyframes podiumFloat1 {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-13px);
  }
}

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

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

.shield-pedestal.rank-1 {
  animation: podiumFloat1 3.2s ease-in-out infinite alternate;
  will-change: transform;
}

.shield-pedestal.rank-2 {
  animation: podiumFloat2 3.8s ease-in-out 0.45s infinite alternate;
  will-change: transform;
}

.shield-pedestal.rank-3 {
  animation: podiumFloat3 3.5s ease-in-out 0.9s infinite alternate;
  will-change: transform;
}

.shield-pedestal:hover {
  animation-play-state: paused;
}

@keyframes crownBob {
  0%, 100% {
    transform: translateX(-50%) translateY(0) scale(1) rotate(-1.5deg);
    filter: drop-shadow(0 0 10px rgba(255, 215, 0, 0.85));
  }
  50% {
    transform: translateX(-50%) translateY(-6px) scale(1.06) rotate(1.5deg);
    filter: drop-shadow(0 0 18px rgba(255, 215, 0, 1)) drop-shadow(0 0 28px rgba(255, 240, 150, 0.6));
  }
}

.podium-crown {
  animation: crownBob 2.4s ease-in-out infinite alternate;
  will-change: transform, filter;
}



