/* === MICRO-INTERACTIONS & CELEBRATION ANIMATIONS === */

/* Score count-up container */
.score-reveal {
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  font-size: 3rem;
  font-weight: 700;
  color: var(--color-primary, #0d9488);
  transition: color 0.3s ease;
}
.score-reveal--perfect {
  color: var(--color-accent, #f59e0b);
}

/* XP float up */
.xp-float {
  animation: floatUp 1.2s ease-out forwards;
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  font-weight: 700;
  color: var(--color-primary, #0d9488);
  pointer-events: none;
  z-index: 9999;
}
@keyframes floatUp {
  0% { opacity: 1; transform: translateY(0); }
  100% { opacity: 0; transform: translateY(-40px); }
}

/* Correct answer flash */
.answer-flash--correct {
  animation: flashGreen 0.4s ease;
}
@keyframes flashGreen {
  0% { border-color: var(--color-border, #e5e7eb); }
  30% { border-color: var(--color-success, #10b981); box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.15); }
  100% { border-color: var(--color-border, #e5e7eb); }
}

/* Incorrect answer shake */
.answer-flash--incorrect {
  animation: shakeRed 0.4s ease;
}
@keyframes shakeRed {
  0% { border-color: var(--color-border, #e5e7eb); transform: translateX(0); }
  15% { border-color: var(--color-danger, #ef4444); transform: translateX(-4px); }
  30% { transform: translateX(4px); }
  45% { transform: translateX(-3px); }
  60% { transform: translateX(3px); }
  75% { transform: translateX(-2px); }
  100% { border-color: var(--color-border, #e5e7eb); transform: translateX(0); }
}

/* Confetti container */
.confetti-container {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 9999;
  overflow: hidden;
}
.confetti-piece {
  position: absolute;
  width: 8px;
  height: 8px;
  border-radius: 2px;
  opacity: 0.6;
  animation: confettiFall 2.5s ease-out forwards;
}
@keyframes confettiFall {
  0% { transform: translateY(-20px) rotate(0deg); opacity: 0.6; }
  100% { transform: translateY(100vh) rotate(720deg); opacity: 0; }
}

/* Streak milestone overlay */
.milestone-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.6);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 10000;
  animation: fadeIn 0.3s ease;
}
.milestone-card {
  background: var(--color-surface, #ffffff);
  border-radius: var(--radius-lg, 16px);
  padding: 2.5rem;
  text-align: center;
  max-width: 360px;
  animation: scaleIn 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@keyframes scaleIn {
  0% { transform: scale(0.8); opacity: 0; }
  100% { transform: scale(1); opacity: 1; }
}
@keyframes fadeIn {
  0% { opacity: 0; }
  100% { opacity: 1; }
}

/* Level up number */
.level-up-number {
  font-family: var(--font-mono, 'JetBrains Mono', monospace);
  font-size: 4rem;
  font-weight: 700;
  color: var(--color-primary, #0d9488);
  animation: levelPulse 0.6s ease;
}
@keyframes levelPulse {
  0% { transform: scale(0.5); opacity: 0; }
  60% { transform: scale(1.1); }
  100% { transform: scale(1); opacity: 1; }
}

/* Daily goal ring completion */
.goal-complete-ring {
  animation: ringSnap 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@keyframes ringSnap {
  0% { transform: scale(1); }
  50% { transform: scale(1.05); }
  100% { transform: scale(1); }
}

/* Flashcard 3D flip */
.flashcard-flipper {
  perspective: 1000px;
}
.flashcard-inner {
  transition: transform 0.3s ease-in-out;
  transform-style: preserve-3d;
}
.flashcard-inner--flipped {
  transform: rotateY(180deg);
}
.flashcard-front,
.flashcard-back {
  backface-visibility: hidden;
}
.flashcard-back {
  transform: rotateY(180deg);
}

/* Improvement arrow */
.improvement-arrow {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  color: var(--color-success, #10b981);
  font-weight: 600;
  animation: slideUp 0.5s ease 0.8s both;
}
.improvement-arrow--down {
  color: var(--color-danger, #ef4444);
}
@keyframes slideUp {
  0% { opacity: 0; transform: translateY(10px); }
  100% { opacity: 1; transform: translateY(0); }
}
