/* Replace pixel noise with a slow, layered motion background. */
body{background:#090c14}
.noise{opacity:1;background:none;overflow:hidden}
.noise::before,.noise::after{content:"";position:absolute;inset:-22%;pointer-events:none}
.noise::before{background:radial-gradient(circle at 22% 22%,rgba(97,130,255,.18),transparent 27%),radial-gradient(circle at 77% 16%,rgba(89,225,225,.12),transparent 23%),radial-gradient(circle at 63% 78%,rgba(222,76,147,.14),transparent 28%),radial-gradient(circle at 8% 85%,rgba(255,126,108,.11),transparent 25%);filter:blur(34px);animation:background-drift 18s ease-in-out infinite alternate}
.noise::after{background-image:linear-gradient(rgba(190,207,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(190,207,255,.025) 1px,transparent 1px);background-size:72px 72px;mask-image:radial-gradient(ellipse at center,black 15%,transparent 75%);opacity:.72;animation:grid-shift 22s linear infinite}
.ambient{opacity:.26;filter:blur(110px)}
@keyframes background-drift{0%{transform:translate3d(-2%,-1%,0) scale(1)}50%{transform:translate3d(3%,2%,0) scale(1.1)}100%{transform:translate3d(-1%,4%,0) scale(1.04)}}
@keyframes grid-shift{from{transform:translate3d(0,0,0)}to{transform:translate3d(-72px,-72px,0)}}
@media(prefers-reduced-motion:reduce){.noise::before,.noise::after{animation:none}.ambient{animation:none}}
