@keyframes xpFloat{0%{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}to{opacity:0;transform:translateX(-50%) translateY(-80px) scale(1.3)}}@keyframes shake{0%,to{transform:translateX(0)}15%{transform:translateX(-8px)}30%{transform:translateX(8px)}45%{transform:translateX(-6px)}60%{transform:translateX(6px)}75%{transform:translateX(-3px)}90%{transform:translateX(3px)}}@keyframes comboPop{0%{transform:scale(.5);opacity:0}60%{transform:scale(1.2)}to{transform:scale(1);opacity:1}}@keyframes ripple{to{transform:scale(2.5);opacity:0}}@keyframes correctFlash{0%{background:rgba(34,197,94,0);transform:scale(1)}30%{background:rgba(34,197,94,.18);transform:scale(1.02);border-color:rgba(34,197,94,.6)}to{background:rgba(34,197,94,0);transform:scale(1)}}@keyframes wrongShake{0%,to{transform:translateX(0);background:rgba(239,68,68,0)}15%{transform:translateX(-8px);background:rgba(239,68,68,.15)}30%{transform:translateX(8px);border-color:rgba(239,68,68,.5)}45%{transform:translateX(-5px)}60%{transform:translateX(5px)}75%{transform:translateX(-2px)}}@keyframes inputPulse{0%{transform:scale(1);border-color:rgba(56,189,248,.2)}50%{transform:scale(1.02);border-color:rgba(56,189,248,.6)}to{transform:scale(1);border-color:rgba(56,189,248,.2)}}@keyframes countdownBeat{0%{transform:scale(1)}40%{transform:scale(1.08)}to{transform:scale(1)}}@keyframes countdownUrgent{0%{transform:scale(1);color:#EF4444}40%{transform:scale(1.15);color:#FCA5A5;text-shadow:0 0 20px rgba(239,68,68,.8)}to{transform:scale(1);color:#EF4444}}@keyframes scorePop{0%{transform:scale(1)}40%{transform:scale(1.3)}70%{transform:scale(.95)}to{transform:scale(1)}}@keyframes levelUpGlow{0%{box-shadow:0 0 0 rgba(245,158,11,0);transform:scale(1)}40%{box-shadow:0 0 40px rgba(245,158,11,.8),0 0 80px rgba(239,68,68,.4);transform:scale(1.05)}to{box-shadow:0 0 0 rgba(245,158,11,0);transform:scale(1)}}@keyframes badgeShine{0%{filter:brightness(1) drop-shadow(0 0 0 gold)}50%{filter:brightness(1.4) drop-shadow(0 0 12px gold)}to{filter:brightness(1) drop-shadow(0 0 0 gold)}}@keyframes streakFlicker{0%,to{opacity:1;transform:scale(1)}25%{opacity:.85;transform:scale(1.05) rotate(-2deg)}50%{opacity:1;transform:scale(.97) rotate(1deg)}75%{opacity:.9;transform:scale(1.03) rotate(-1deg)}}@keyframes playPulse{0%,to{box-shadow:0 0 20px rgba(245,158,11,.4);transform:scale(1)}50%{box-shadow:0 0 40px rgba(245,158,11,.8),0 0 60px rgba(239,68,68,.3);transform:scale(1.03)}}@keyframes slideDown{0%{opacity:0;transform:translateX(-50%) translateY(-20px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes shimmer{0%{transform:translateX(-100%)}to{transform:translateX(200%)}}@keyframes progressFill{0%{width:0}}.anim-correct{animation:correctFlash .4s ease forwards}.anim-wrong{animation:wrongShake .5s ease forwards}.anim-input-pulse{animation:inputPulse .2s ease forwards}.anim-countdown{animation:countdownBeat .3s ease forwards}.anim-countdown-urgent{animation:countdownUrgent .3s ease forwards}.anim-score-pop{animation:scorePop .4s cubic-bezier(.34,1.56,.64,1) forwards}.anim-levelup{animation:levelUpGlow 1.2s ease forwards}.anim-badge{animation:badgeShine .8s ease forwards}.anim-streak{animation:streakFlicker 1.5s ease-in-out infinite}.anim-play-pulse{animation:playPulse 2s ease-in-out infinite}.animate-shake{animation:shake .5s ease}.animate-combo-pop{animation:comboPop .3s ease}button{transition:transform .12s ease,box-shadow .15s ease}button:hover:not(:disabled){transform:scale(1.04)}button:active:not(:disabled){transform:scale(.95)}button:disabled{cursor:not-allowed}.progress-bar-fill{transition:width .8s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.progress-bar-fill:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);animation:shimmer 2s infinite}.xp-float{position:fixed;pointer-events:none;z-index:50;font-weight:900;font-size:20px;animation:xpFloat .9s ease-out forwards}.page-enter{animation:fadeInUp .35s ease forwards}.hero-xp-bar{animation:progressFill 1.2s cubic-bezier(.4,0,.2,1) forwards;position:relative;overflow:hidden}.hero-xp-bar:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:shimmer 2.5s ease-in-out infinite}.streak-fire{animation:streakFlicker 1.5s ease-in-out infinite;display:inline-block}.quest-glow{position:relative}.quest-glow:before{content:"";position:absolute;inset:-1px;border-radius:inherit;background:linear-gradient(135deg,rgba(34,197,94,.4),transparent,rgba(34,197,94,.2));animation:shimmer 3s ease-in-out infinite;pointer-events:none}@keyframes typingDot{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-6px);opacity:1}}.typing-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor;animation:typingDot 1.2s ease-in-out infinite}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}.tension-border{transition:box-shadow .3s ease,border-color .3s ease}