@keyframes particleFloat{0%{transform:translateY(0) rotate(0deg);opacity:.6}50%{transform:translateY(-30px) rotate(180deg);opacity:1}to{transform:translateY(-60px) rotate(1turn);opacity:0}}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.typing-cursor:after{content:"|";animation:blink 1s step-end infinite;color:var(--color-primary)}@keyframes glowRing{0%{box-shadow:0 0 0 0 rgba(99,102,241,.4)}70%{box-shadow:0 0 0 10px rgba(99,102,241,0)}to{box-shadow:0 0 0 0 rgba(99,102,241,0)}}.glow-ring{animation:glowRing 2s infinite}@keyframes gradientBorder{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.animated-border{background:linear-gradient(270deg,#6366f1,#8b5cf6,#06b6d4,#6366f1);background-size:300% 300%;animation:gradientBorder 4s ease infinite;padding:1px;border-radius:12px}.animated-border>*{background:#18181b;border-radius:11px}@keyframes dotPulse{0%,80%,to{transform:scale(0);opacity:0}40%{transform:scale(1);opacity:1}}.dot-pulse span{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--color-primary);animation:dotPulse 1.4s ease-in-out infinite}.dot-pulse span:nth-child(2){animation-delay:.2s}.dot-pulse span:nth-child(3){animation-delay:.4s}.video-card:hover .shimmer-overlay{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.03) 50%,transparent);background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes starFill{0%{transform:scale(.5);opacity:0}60%{transform:scale(1.3)}to{transform:scale(1);opacity:1}}.star-filled{animation:starFill .3s ease forwards}@keyframes checkDraw{0%{stroke-dashoffset:50}to{stroke-dashoffset:0}}.check-mark path{stroke-dasharray:50;stroke-dashoffset:50;animation:checkDraw .5s ease .2s forwards}@keyframes xpGlow{0%{box-shadow:0 0 4px rgba(252,211,77,.2),0 0 8px rgba(252,211,77,.1)}50%{box-shadow:0 0 12px rgba(252,211,77,.6),0 0 20px rgba(252,211,77,.3)}to{box-shadow:0 0 4px rgba(252,211,77,.2),0 0 8px rgba(252,211,77,.1)}}.xp-bar-fill{animation:xpGlow 2s ease-in-out infinite}@keyframes popIn{0%{transform:scale(.6);opacity:0}70%{transform:scale(1.05);opacity:1}to{transform:scale(1);opacity:1}}.pop-in{animation:popIn .5s cubic-bezier(.175,.885,.32,1.275) forwards}@keyframes slideInLeft{0%{transform:translateX(-120%);opacity:0}to{transform:translateX(0);opacity:1}}.ticker-card{animation:slideInLeft .5s cubic-bezier(.175,.885,.32,1.275) forwards}@keyframes btnPulse{0%{box-shadow:0 0 0 0 rgba(99,102,241,.5)}70%{box-shadow:0 0 0 10px rgba(99,102,241,0)}to{box-shadow:0 0 0 0 rgba(99,102,241,0)}}.btn-pulse:hover{animation:btnPulse 1s infinite}@keyframes xpShake{0%,to{transform:translateY(0)}20%{transform:translateY(-6px) scale(1.1)}40%{transform:translateY(2px) scale(.98)}60%{transform:translateY(-4px) scale(1.05)}80%{transform:translateY(1px)}}.xp-gained{animation:xpShake .6s ease}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in-up{animation:fadeInUp .5s ease-out both}@media (prefers-reduced-motion:reduce){.animate-fade-in-up{animation:none;opacity:1;transform:none}}@keyframes blobSlow{0%{transform:translateZ(0) scale(1)}33%{transform:translate3d(8%,-6%,0) scale(1.1)}66%{transform:translate3d(-6%,8%,0) scale(.95)}to{transform:translateZ(0) scale(1)}}.animate-blob-slow{animation:blobSlow 18s ease-in-out infinite;will-change:transform}@media (prefers-reduced-motion:reduce){.animate-blob-slow{animation:none}}