/* ChoreQuest - Retro 8-Bit Animations */

@keyframes floatUpFade {
  0% {
    opacity: 0;
    transform: translateY(10px) scale(0.8);
  }
  20% {
    opacity: 1;
    transform: translateY(-10px) scale(1.2);
  }
  80% {
    opacity: 1;
    transform: translateY(-40px) scale(1.05);
  }
  100% {
    opacity: 0;
    transform: translateY(-60px) scale(0.9);
  }
}

.floating-xp-item {
  position: absolute;
  pointer-events: none;
  font-family: 'Press Start 2P', monospace;
  font-size: 1.1rem;
  color: #facc15;
  text-shadow: 2px 2px 0 #000, -2px -2px 0 #000, 2px -2px 0 #000, -2px 2px 0 #000, 0 4px 10px rgba(250, 204, 21, 0.6);
  z-index: 10000;
  animation: floatUpFade 1.4s ease-out forwards;
}

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

.avatar-bounce {
  animation: avatarBounce 2s ease-in-out infinite;
}

@keyframes retroPulse {
  0%, 100% {
    filter: drop-shadow(0 0 4px rgba(250, 204, 21, 0.4));
  }
  50% {
    filter: drop-shadow(0 0 12px rgba(250, 204, 21, 0.9));
  }
}

.gold-pulse {
  animation: retroPulse 2s infinite;
}

@keyframes impactShake {
  0% { transform: translate(0, 0); }
  20% { transform: translate(-3px, 2px); }
  40% { transform: translate(3px, -2px); }
  60% { transform: translate(-2px, -1px); }
  80% { transform: translate(2px, 1px); }
  100% { transform: translate(0, 0); }
}

.impact-shake {
  animation: impactShake 0.3s ease-out;
}

@keyframes scanlineFlicker {
  0% { opacity: 0.85; }
  50% { opacity: 0.95; }
  100% { opacity: 0.85; }
}

.flicker {
  animation: scanlineFlicker 0.1s infinite;
}

/* Modal Fade & Zoom */
@keyframes retroModalOpen {
  0% {
    opacity: 0;
    transform: scale(0.92);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

.modal-enter {
  animation: retroModalOpen 0.15s cubic-bezier(0, 0, 0.2, 1) forwards;
}
