.outage-intro{display:none}
html.intro-active{overflow:hidden}
html.intro-active body{overflow:hidden;background:#000;min-height:100dvh}
html.intro-active .outage-intro{display:block;position:fixed;top:-2px;left:-2px;right:-2px;bottom:-2px;width:calc(100vw + 4px);height:calc(100vh + 4px);height:calc(100dvh + 4px);min-height:calc(100dvh + 4px);z-index:2147483647;overflow:hidden;background:#000;color:#fff;isolation:isolate;touch-action:none}
html.intro-active .outage-intro:before{content:'';position:fixed;inset:-100px;z-index:-1;background:#000;pointer-events:none}
.intro-stage{--eye-size:min(120vw,110svh);position:absolute;top:50%;left:50%;width:var(--eye-size);height:var(--eye-size);transform:translate(-50%,-50%)}
.intro-logo{width:100%;height:100%;transform:translate(1%,7.5%);transform-origin:49% 42.5%;will-change:transform}
.intro-logo img{display:block;width:100%;height:100%;object-fit:contain;animation:intro-pulse 1.6s ease-in-out infinite;will-change:filter}
.intro-loading{position:absolute;bottom:max(34px,env(safe-area-inset-bottom));left:50%;width:min(360px,72vw);transform:translateX(-50%);font-size:14px;font-weight:600;letter-spacing:3px;z-index:2;padding:20px 0 0;background:linear-gradient(transparent,#000 40%)}
.intro-readout{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}
#intro-percent{color:#ff2434;letter-spacing:1px;font-variant-numeric:tabular-nums}
.intro-dots{animation:intro-dots 1.2s ease-in-out infinite}
.intro-track{height:2px;background:#2c1517;overflow:hidden}
.intro-track span{display:block;width:0;height:100%;background:#ff2434;box-shadow:0 0 12px #ff2434;transition:width 80ms linear}
.intro-enter .intro-loading{opacity:0;transition:opacity 130ms ease}
.intro-enter .intro-logo{animation:intro-portal 2s cubic-bezier(.72,0,.22,1) forwards}
.intro-enter .intro-logo img{animation:intro-signal 2s linear forwards}
html.intro-active .outage-intro.intro-enter{animation:intro-dissolve 2s linear forwards}
@keyframes intro-pulse{0%,100%{filter:brightness(.82)}50%{filter:brightness(1.13)}}
@keyframes intro-dots{0%,100%{opacity:.3}50%{opacity:1}}
@keyframes intro-portal{0%{transform:translate(1%,7.5%) scale(1)}100%{transform:translate(1%,7.5%) scale(28)}}
@keyframes intro-signal{0%{filter:brightness(1) blur(0)}35%{filter:brightness(.9) blur(.35px)}65%{filter:brightness(.65) blur(1.5px)}86%,100%{filter:brightness(0) blur(4px)}}
@keyframes intro-dissolve{0%,80%{opacity:1}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.intro-logo img,.intro-dots{animation:none}.intro-track span{transition:none}}
