@keyframes fade-in-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in-scale{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes slide-in-right{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes slide-out-right{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}@keyframes toast-slide-in{0%{opacity:0;transform:translate(100%)scale(.95)}60%{opacity:1;transform:translate(-5%)scale(1.02)}to{opacity:1;transform:translate(0)scale(1)}}@keyframes confetti-fall{0%{opacity:1;transform:translateY(-100%)rotate(0)}to{opacity:0;transform:translateY(100vh)rotate(720deg)}}@keyframes confetti-shake{0%,to{transform:translate(0)}25%{transform:translate(-10px)}75%{transform:translate(10px)}}.confetti-piece{z-index:9999;pointer-events:none;border-radius:2px;width:10px;height:10px;animation:3s ease-in-out forwards confetti-fall,.5s ease-in-out infinite confetti-shake;position:fixed;top:-10px}@keyframes badge-glow{0%,to{box-shadow:0 0 5px #ffd7004d}50%{box-shadow:0 0 20px #ffd70099,0 0 40px #ffd7004d}}@keyframes badge-shine{0%{background-position:-200%}to{background-position:200%}}@keyframes star-spin{0%{transform:rotate(0)scale(1)}50%{transform:rotate(180deg)scale(1.2)}to{transform:rotate(360deg)scale(1)}}.badge-earned{animation:2s ease-in-out infinite badge-glow}.badge-shine{background:linear-gradient(90deg,#0000 0%,#fff6 50%,#0000 100%) 0 0/200% 100%;animation:3s ease-in-out infinite badge-shine}@keyframes progress-fill{0%{width:0%}}@keyframes progress-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.progress-bar-animated{background:linear-gradient(90deg,currentColor 0%,#ffffff4d 50%,currentColor 100%) 0 0/200% 100%;animation:1.5s ease-out forwards progress-fill,2s ease-in-out 1.5s infinite progress-shimmer}.btn-gamified{transition:all .2s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.btn-gamified:hover{transform:scale(1.03);box-shadow:0 0 20px #2d8cff4d}.btn-gamified:active{transform:scale(.97)}@keyframes ripple{to{opacity:0;transform:scale(4)}}.ripple-container{position:relative;overflow:hidden}.ripple-effect{pointer-events:none;background:#fff6;border-radius:50%;animation:.6s linear ripple;position:absolute;transform:scale(0)}.card-interactive{transition:all .3s cubic-bezier(.4,0,.2,1)}.card-interactive:hover{transform:translateY(-4px);box-shadow:0 12px 40px #1b365d1f}@keyframes skeleton-loading{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.skeleton{background:linear-gradient(90deg,#f0f0f0 0,#e0e0e0 40px,#f0f0f0 80px) 0 0/200px 100%;border-radius:8px;animation:1.5s ease-in-out infinite skeleton-loading}.skeleton-text{width:80%;height:14px;margin-bottom:8px}.skeleton-title{width:60%;height:20px;margin-bottom:12px}.skeleton-circle{border-radius:50%}@keyframes pulse-ring{0%{transform:scale(.95);box-shadow:0 0 #2d8cff80}70%{transform:scale(1);box-shadow:0 0 0 10px #2d8cff00}to{transform:scale(.95);box-shadow:0 0 #2d8cff00}}.pulse-effect{animation:1.5s cubic-bezier(.4,0,.6,1) infinite pulse-ring}@keyframes count-up-bounce{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.count-up-done{animation:.3s ease-out count-up-bounce}@keyframes shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-4px)}20%,40%,60%,80%{transform:translate(4px)}}.shake{animation:.5s ease-in-out shake}@keyframes checkmark-draw{0%{stroke-dashoffset:24px}to{stroke-dashoffset:0}}.checkmark-animated{stroke-dasharray:24;stroke-dashoffset:24px;animation:.4s ease-out .2s forwards checkmark-draw}@keyframes star-burst{0%{opacity:1;transform:scale(0)rotate(0)}50%{opacity:.8;transform:scale(1.5)rotate(180deg)}to{opacity:0;transform:scale(0)rotate(360deg)}}.stagger-item{opacity:0;animation:.4s ease-out forwards fade-in-up;transform:translateY(15px)}.stagger-item:first-child{animation-delay:50ms}.stagger-item:nth-child(2){animation-delay:.1s}.stagger-item:nth-child(3){animation-delay:.15s}.stagger-item:nth-child(4){animation-delay:.2s}.stagger-item:nth-child(5){animation-delay:.25s}.stagger-item:nth-child(6){animation-delay:.3s}.stagger-item:nth-child(7){animation-delay:.35s}.stagger-item:nth-child(8){animation-delay:.4s}.stagger-item:nth-child(9){animation-delay:.45s}.stagger-item:nth-child(10){animation-delay:.5s}@keyframes toast-progress{0%{width:100%}to{width:0%}}.toast-progress-bar{animation:linear forwards toast-progress}@keyframes level-up-flash{0%{opacity:0;transform:scale(.5)}30%{opacity:1;transform:scale(1.1)}60%{transform:scale(.95)}to{opacity:1;transform:scale(1)}}.level-up-animation{animation:.6s cubic-bezier(.4,0,.2,1) level-up-flash}@keyframes trend-bounce-up{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes trend-bounce-down{0%,to{transform:translateY(0)}50%{transform:translateY(3px)}}.trend-up{color:#16a34a;animation:1s ease-in-out infinite trend-bounce-up}.trend-down{color:#dc2626;animation:1s ease-in-out infinite trend-bounce-down}@keyframes podium-rise{0%{transform-origin:bottom;transform:scaleY(0)}to{transform-origin:bottom;transform:scaleY(1)}}.podium-bar{animation:.8s cubic-bezier(.4,0,.2,1) forwards podium-rise}@keyframes xp-pop{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-40px)scale(1.3)}}.xp-pop{pointer-events:none;animation:1.2s ease-out forwards xp-pop}@keyframes xp-float-up{0%{opacity:1;transform:translateY(0)translate(-50%)scale(.8)}30%{opacity:1;transform:translateY(-10px)translate(-50%)scale(1.1)}to{opacity:0;transform:translateY(-30px)translate(-50%)scale(1)}}.xp-float-up{pointer-events:none;animation:1.2s ease-out forwards xp-float-up}@keyframes xp-bar-glow{0%,to{box-shadow:0 0 4px #6366f14d}50%{box-shadow:0 0 12px #6366f199,0 0 24px #6366f14d}}.xp-bar-glow{animation:2s ease-in-out infinite xp-bar-glow}@keyframes gold-glow{0%,to{box-shadow:0 4px 20px #3b82f64d}50%{box-shadow:0 4px 30px #3b82f680,0 0 50px #6366f133}}@keyframes flame-flicker{0%,to{transform:scale(1)rotate(0)}25%{transform:scale(1.1)rotate(-3deg)}50%{transform:scale(.95)rotate(2deg)}75%{transform:scale(1.05)rotate(-1deg)}}.flame-flicker{animation:.8s ease-in-out infinite flame-flicker}
