@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}