.nx-loader { position: fixed; inset: 0; z-index: 2147483000; display: grid; place-items: center; background: radial-gradient(60% 50% at 50% 45%, #12131a, #08090b 70%); transition: opacity .4s ease, visibility .4s ease; }
.nx-loader.out { opacity: 0; visibility: hidden; }
.nx-loader-in { display: flex; flex-direction: column; align-items: center; gap: 20px; }
.nx-loader-gun { width: 96px; height: 96px; background: url("favicon-frames.png") 0 0 / 96px 5760px no-repeat; image-rendering: pixelated; animation: nxLoaderSpin 1.8s steps(60) infinite; filter: drop-shadow(0 10px 18px rgba(0,0,0,.6)); }
.nx-loader-bar { position: relative; width: 168px; height: 3px; overflow: hidden; border-radius: 99px; background: rgba(255,255,255,.08); }
.nx-loader-bar i { position: absolute; top: 0; bottom: 0; left: 0; width: 45%; border-radius: 99px; background: linear-gradient(90deg, #ff4d4d, #ffa23e, #ffe93b, #5cff8f, #4dd2ff, #7d7dff, #e07dff); animation: nxLoaderBar 1.15s cubic-bezier(.45,0,.55,1) infinite; }
.nx-loader-txt { font: 700 10px/1 "Azeret Mono", ui-monospace, monospace; letter-spacing: .34em; text-transform: uppercase; color: #565964; }
@keyframes nxLoaderSpin { to { background-position: 0 -5760px; } }
@keyframes nxLoaderBar { from { transform: translateX(-110%); } to { transform: translateX(240%); } }
@media (prefers-reduced-motion: reduce) { .nx-loader-gun, .nx-loader-bar i { animation: none; } }
