.bg-grid-pattern{background-image:linear-gradient(90deg,hsla(0,0%,100%,.1) 1px,transparent 0),linear-gradient(180deg,hsla(0,0%,100%,.1) 1px,transparent 0);background-size:50px 50px}.bg-circuit-pattern{background-image:url("data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 10h80v80h-80z' fill='none' stroke='rgba(255,255,255,0.1)' stroke-width='0.5'/%3E%3Ccircle cx='50' cy='50' r='3' fill='rgba(255,255,255,0.1)'/%3E%3Cpath d='M50 10v30M50 60v30M10 50h30M60 50h30' stroke='rgba(255,255,255,0.1)' stroke-width='0.5'/%3E%3C/svg%3E");background-size:100px 100px}@keyframes grid{0%{transform:translateY(0)}to{transform:translateY(-50%)}}@keyframes circuit{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes blob1{0%,to{transform:translate(0) scale(1);opacity:.3}25%{transform:translate(20%,10%) scale(1.1);opacity:.4}50%{transform:translateY(20%) scale(1.05);opacity:.35}75%{transform:translate(-20%,10%) scale(.95);opacity:.3}}@keyframes blob2{0%,to{transform:translate(0) scale(1);opacity:.3}25%{transform:translate(-20%,-10%) scale(.95);opacity:.35}50%{transform:translateY(-20%) scale(1.05);opacity:.4}75%{transform:translate(20%,-10%) scale(1.1);opacity:.3}}@keyframes gradient{0%,to{background-position:0 50%}50%{background-position:100% 50%}}.animate-grid{animation:grid 20s linear infinite}.animate-circuit{animation:circuit 40s linear infinite}.animate-blob1{animation:blob1 15s ease-in-out infinite}.animate-blob2{animation:blob2 18s ease-in-out infinite}.animate-gradient{background-size:200% 200%;animation:gradient 3s ease infinite}