@keyframes bounce-in{0%{transform:scale(.3) translateY(-50px);opacity:0}50%{transform:scale(1.05) translateY(0)}70%{transform:scale(.9)}to{transform:scale(1);opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes float-up{0%{transform:translateY(0);opacity:1}to{transform:translateY(-30px);opacity:0}}@keyframes sparkle{0%,to{transform:scale(0) rotate(0deg);opacity:0}50%{transform:scale(1) rotate(180deg);opacity:1}}@keyframes glow-pulse{0%,to{box-shadow:0 0 5px currentColor}50%{box-shadow:0 0 20px currentColor,0 0 30px currentColor}}@keyframes wiggle{0%,to{transform:rotate(0deg)}25%{transform:rotate(-3deg)}75%{transform:rotate(3deg)}}.animate-bounce-in{animation:bounce-in .6s ease-out}.animate-fade-in{animation:fade-in .3s ease-out}.animate-float-up{animation:float-up 1s ease-out forwards}.animate-sparkle{animation:sparkle 1.5s ease-in-out infinite}.animate-glow-pulse{animation:glow-pulse 2s ease-in-out infinite}.animate-wiggle{animation:wiggle .5s ease-in-out}.achievement-modal{background:linear-gradient(135deg,#8b5cf6,#ec4899 25%,#f59e0b 50%,#10b981 75%,#3b82f6);background-size:400% 400%;animation:gradient-shift 3s ease infinite}@keyframes gradient-shift{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.streak-counter{position:relative;overflow:visible}.streak-counter:before{content:"";position:absolute;inset:-2px;background:linear-gradient(45deg,#ff6b6b,#feca57,#48dbfb,#ff9ff3);border-radius:inherit;z-index:-1;animation:rotate-border 2s linear infinite}@keyframes rotate-border{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.gamified-button{transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.gamified-button:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);transition:left .5s}.gamified-button:hover:before{left:100%}.gamified-button:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.15)}.gamified-button:active{transform:translateY(0);box-shadow:0 2px 4px rgba(0,0,0,.1)}.score-popup{animation:score-bounce .8s ease-out}@keyframes score-bounce{0%{transform:translateY(0) scale(1);opacity:0}50%{transform:translateY(-20px) scale(1.2);opacity:1}to{transform:translateY(-40px) scale(1);opacity:0}}.progress-dot{transition:all .3s cubic-bezier(.4,0,.2,1)}.progress-dot.completed{animation:complete-bounce .5s ease-out}@keyframes complete-bounce{0%{transform:scale(1)}50%{transform:scale(1.3)}to{transform:scale(1.1)}}.rank-badge-excellent{box-shadow:0 0 10px rgba(34,197,94,.5);animation:excellent-glow 2s ease-in-out infinite alternate}@keyframes excellent-glow{0%{box-shadow:0 0 10px rgba(34,197,94,.5)}to{box-shadow:0 0 20px rgba(34,197,94,.8)}}.rank-badge-good{box-shadow:0 0 8px rgba(250,204,21,.5)}.rank-badge-poor{box-shadow:0 0 6px rgba(239,68,68,.5)}.category-item{position:relative;transition:all .3s ease}.category-item.selected:after{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:4px;height:60%;background:linear-gradient(180deg,#fbbf24,#f59e0b);border-radius:0 4px 4px 0;animation:pulse-glow 1s ease-in-out infinite alternate}@keyframes pulse-glow{0%{box-shadow:0 0 5px rgba(251,191,36,.5);opacity:.8}to{box-shadow:0 0 15px rgba(251,191,36,.8);opacity:1}}