*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:white}@keyframes gradient-shift{0%,to{opacity:.6}50%{opacity:1}}.animate-gradient-shift{animation:gradient-shift 20s ease-in-out infinite alternate}.orb{position:fixed;border-radius:50%;filter:blur(80px);animation:float 15s ease-in-out infinite;pointer-events:none;z-index:1}.orb-1{width:400px;height:400px;background:#6366f1;top:-100px;right:-100px;opacity:.15;animation-delay:0s}.orb-2{width:300px;height:300px;background:#8b5cf6;bottom:-50px;left:-50px;opacity:.12;animation-delay:-5s}.orb-3{width:200px;height:200px;background:#06b6d4;top:50%;left:50%;transform:translate(-50%,-50%);opacity:.08;animation-delay:-10s}@keyframes float{0%,to{transform:translate(0) scale(1)}33%{transform:translate(30px,-30px) scale(1.05)}66%{transform:translate(-20px,20px) scale(.95)}}.orb-3{animation-name:float-center}@keyframes float-center{0%,to{transform:translate(-50%,-50%) scale(1)}33%{transform:translate(calc(-50% + 30px),calc(-50% - 30px)) scale(1.05)}66%{transform:translate(calc(-50% - 20px),calc(-50% + 20px)) scale(.95)}}.grid-overlay{z-index:2;background-image:linear-gradient(rgba(255,255,255,.02) 1px,transparent 0),linear-gradient(90deg,rgba(255,255,255,.02) 1px,transparent 0);background-size:60px 60px;mask-image:radial-gradient(ellipse 80% 80% at 50% 50%,black,transparent);-webkit-mask-image:radial-gradient(ellipse 80% 80% at 50% 50%,black,transparent)}.grid-overlay,.noise{position:fixed;inset:0}.noise{z-index:5;opacity:.03;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E")}.noise,.scanline{pointer-events:none}.scanline{position:fixed;top:0;left:0;width:100%;height:2px;background:linear-gradient(90deg,transparent,#6366f1,transparent);opacity:.3;animation:scan 8s linear infinite;z-index:100}@keyframes scan{0%{top:-2px;opacity:0}5%{opacity:.3}95%{opacity:.3}to{top:100%;opacity:0}}@keyframes border-rotate{0%{background-position:0 50%}to{background-position:200% 50%}}.animate-border-rotate{background-size:200% 100%;animation:border-rotate 4s linear infinite}