/* ============================================================
   Reward Overlay — Academia do Ruby
   Animações e efeitos de raridade para o momento de recompensa
   ============================================================ */

/* --- Keyframes de entrada --- */

@keyframes rewardPopIn {
  0% {
    opacity: 0;
    transform: scale(0.8) translateY(20px);
  }
  100% {
    opacity: 1;
    transform: scale(1) translateY(0);
  }
}

@keyframes rewardSlideUp {
  0% {
    opacity: 0;
    transform: translateY(20px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes rewardFadeInUp {
  0% {
    opacity: 0;
    transform: translateY(10px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

/* --- Keyframe de saída --- */

@keyframes rewardExit {
  0% {
    opacity: 1;
    transform: scale(1);
  }
  100% {
    opacity: 0;
    transform: scale(0.96);
  }
}

/* --- Animação da barra de XP (usa CSS vars definidas inline) --- */

@keyframes rewardFillBar {
  0% {
    width: var(--xp-from, 0%);
  }
  100% {
    width: var(--xp-to, 100%);
  }
}

/* --- Float contínuo para o ícone do badge --- */

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

/* --- Level up pulse --- */

@keyframes rewardLevelPulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: 0.85; transform: scale(1.04); }
}

/* --- Classes de animação --- */

.reward-pop-in {
  animation: rewardPopIn 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}

.reward-slide-up {
  animation: rewardSlideUp 0.5s ease-out forwards;
}

.reward-fade-in-up {
  animation: rewardFadeInUp 0.45s ease-out forwards;
}

.reward-fill-bar {
  animation: rewardFillBar 1s ease-out forwards;
}

.reward-float {
  animation: rewardFloat 3s ease-in-out infinite;
}

.reward-level-pulse {
  animation: rewardLevelPulse 1.6s ease-in-out infinite;
}

.reward-exit {
  animation: rewardExit 0.35s ease-in forwards;
}

/* Estado inicial — invisível até a animação ser adicionada */
.reward-hidden {
  opacity: 0;
}

/* --- Glow de raridade (aplicado no elemento decorativo de fundo) ---
   box-shadow sozinho em elemento transparente só aparece nas bordas.
   background + filter:blur cria o efeito de luz ambiental irradiando do centro. */

.rarity-glow-common {
  background: radial-gradient(ellipse at center, rgba(113, 113, 122, 0.18) 0%, transparent 70%);
  filter: blur(24px);
}

.rarity-glow-rare {
  background: radial-gradient(ellipse at center, rgba(56, 189, 248, 0.22) 0%, transparent 70%);
  filter: blur(28px);
}

.rarity-glow-epic {
  background: radial-gradient(ellipse at center, rgba(139, 92, 246, 0.26) 0%, transparent 70%);
  filter: blur(32px);
}

.rarity-glow-legendary {
  background: radial-gradient(ellipse at center, rgba(245, 158, 11, 0.30) 0%, transparent 70%);
  filter: blur(36px);
}
