.app-backdrop{z-index:-1;pointer-events:none;contain:strict;background:var(--app-backdrop-base);display:none;position:fixed;inset:0;overflow:hidden}html:has(.app-ui){background:var(--app-backdrop-base)}html:has(.app-ui) body{background:0 0}html:has(.app-ui) .app-backdrop{display:block}.app-backdrop>*{pointer-events:none;position:absolute}.app-backdrop-glow{background:radial-gradient(ellipse 55% 60% at 72% 34%, var(--app-backdrop-glow), transparent 70%), radial-gradient(ellipse 40% 45% at 20% 80%, var(--app-backdrop-glow), transparent 75%);opacity:.9;inset:0}.app-backdrop-bloom{background:radial-gradient(closest-side, var(--app-backdrop-glow), transparent);opacity:.45;width:70vw;height:80vh;animation:40s ease-in-out infinite app-backdrop-breathe;top:-20vh;right:-15vw}.app-backdrop-vignette{background:radial-gradient(ellipse 85% 80% at 50% 45%, transparent 55%, var(--app-backdrop-vignette));inset:0}.app-backdrop-grain{opacity:var(--app-backdrop-grain-opacity);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");inset:0}.app-backdrop[data-paused] *{animation-play-state:paused}@keyframes app-backdrop-breathe{0%,to{opacity:.4;transform:translate(0,0)scale(1)}50%{opacity:.55;transform:translate(-1vw,1vh)scale(1.03)}}@media (prefers-reduced-motion:reduce){.app-backdrop *{animation:none!important}}
