* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  min-height: 100vh;
  background: #0a0e1a;
  overflow-x: hidden;
}

@keyframes pulse-glow {
  0%, 100% { box-shadow: 0 0 20px rgba(59, 130, 246, 0.4), 0 0 60px rgba(59, 130, 246, 0.1); }
  50% { box-shadow: 0 0 30px rgba(59, 130, 246, 0.6), 0 0 80px rgba(59, 130, 246, 0.2); }
}

@keyframes float-key {
  0%, 100% { transform: translateY(0) rotate(var(--rot, 0deg)); opacity: 0.15; }
  50% { transform: translateY(-20px) rotate(var(--rot, 0deg)); opacity: 0.25; }
}

@keyframes shake {
  0%, 100% { transform: translateX(0); }
  10%, 50%, 90% { transform: translateX(-4px); }
  30%, 70% { transform: translateX(4px); }
}

@keyframes screen-shake {
  0%, 100% { transform: translate(0, 0); }
  10%, 50%, 90% { transform: translate(-3px, -1px); }
  30%, 70% { transform: translate(3px, 1px); }
}

@keyframes flash-green {
  0% { background-color: rgba(34, 197, 94, 0.15); }
  100% { background-color: transparent; }
}

@keyframes flash-orange {
  0% { background-color: rgba(249, 115, 22, 0.15); }
  100% { background-color: transparent; }
}

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

@keyframes slide-down-in {
  0% { transform: translateY(-20px); opacity: 0; }
  100% { transform: translateY(0); opacity: 1; }
}

@keyframes confetti-fall {
  0% { transform: translateY(-100vh) rotate(0deg); opacity: 1; }
  100% { transform: translateY(100vh) rotate(720deg); opacity: 0; }
}

@keyframes letter-pop {
  0% { transform: scale(1); }
  50% { transform: scale(1.15); }
  100% { transform: scale(1); }
}

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

@keyframes neon-flicker {
  0%, 19%, 21%, 23%, 25%, 54%, 56%, 100% { text-shadow: 0 0 10px #3b82f6, 0 0 20px #3b82f6, 0 0 40px #3b82f6, 0 0 80px #2563eb; }
  20%, 24%, 55% { text-shadow: none; }
}

@keyframes progress-glow {
  0%, 100% { box-shadow: 0 0 8px rgba(59, 130, 246, 0.5); }
  50% { box-shadow: 0 0 16px rgba(59, 130, 246, 0.8); }
}

@keyframes praise-pop {
  0% { transform: scale(0.5) translateY(20px); opacity: 0; }
  60% { transform: scale(1.1) translateY(-5px); opacity: 1; }
  100% { transform: scale(1) translateY(0); opacity: 1; }
}

@keyframes victory-text {
  0% { transform: scale(0); opacity: 0; }
  50% { transform: scale(1.1); }
  100% { transform: scale(1); opacity: 1; }
}

.animate-shake { animation: shake 0.4s ease-in-out; }
.animate-screen-shake { animation: screen-shake 0.3s ease-in-out; }
.animate-flash-green { animation: flash-green 0.6s ease-out; }
.animate-flash-orange { animation: flash-orange 0.6s ease-out; }
.animate-slide-up { animation: slide-up 0.4s ease-out; }
.animate-letter-pop { animation: letter-pop 0.15s ease-out; }
.animate-praise-pop { animation: praise-pop 0.4s ease-out; }
.animate-victory { animation: victory-text 0.6s ease-out; }

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

.neon-title {
  text-shadow: 0 0 10px #3b82f6, 0 0 20px #3b82f6, 0 0 40px #3b82f6, 0 0 80px #2563eb;
  animation: neon-flicker 4s infinite alternate;
}

.cursor-blink {
  animation: blink 0.8s step-end infinite;
}

.progress-bar-glow {
  animation: progress-glow 1.5s ease-in-out infinite;
}

.confetti-piece {
  position: fixed;
  top: -20px;
  animation: confetti-fall linear forwards;
  pointer-events: none;
  z-index: 100;
}

.floating-key {
  animation: float-key var(--dur, 4s) ease-in-out infinite;
  animation-delay: var(--delay, 0s);
}

/* Hidden input */
.typing-input {
  position: absolute;
  left: -9999px;
  opacity: 0;
  width: 1px;
  height: 1px;
}

/* Scrollbar */
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(59, 130, 246, 0.3); border-radius: 3px; }