@keyframes grid-fade{0%,to{opacity:.03}50%{opacity:.06}}@keyframes bar-fill{0%{width:0%}60%{width:var(--target-width)}72%{width:calc(var(--target-width) - 2%)}to{width:var(--target-width)}}@keyframes bar-glow{0%,to{opacity:.3}50%{opacity:.8}}@keyframes score-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse-dot{0%,to{opacity:.15;transform:scale(1)}50%{opacity:.4;transform:scale(1.5)}}@keyframes scan-line{0%{opacity:0;top:0%}5%{opacity:1}95%{opacity:1}to{opacity:0;top:100%}}@keyframes fade-in-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes text-shimmer{0%{background-position:-200%}to{background-position:200%}}@keyframes accent-pulse{0%,to{opacity:.6}50%{opacity:1}}@keyframes logo-reveal{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.animate-grid-fade{animation:8s ease-in-out infinite grid-fade}.animate-bar-fill{animation:1.8s cubic-bezier(.16,1,.3,1) forwards bar-fill}.animate-bar-glow{animation:3s ease-in-out infinite bar-glow}.animate-score-up{animation:.6s cubic-bezier(.16,1,.3,1) forwards score-up}.animate-pulse-dot{animation:4s ease-in-out infinite pulse-dot}.animate-scan-line{animation:5s ease-in-out infinite scan-line}.animate-fade-in-up{animation:.7s cubic-bezier(.16,1,.3,1) forwards fade-in-up}.animate-text-shimmer{background-size:200%;animation:8s linear infinite text-shimmer}.animate-accent-pulse{animation:3s ease-in-out infinite accent-pulse}.animate-logo-reveal{animation:.6s cubic-bezier(.16,1,.3,1) forwards logo-reveal}
