/* Fails open after 2.8 seconds even when the controller cannot load. */
.portal-launch{display:none}
.portal-launching .portal-launch{position:fixed;inset:0;z-index:99999;display:grid;place-items:center;background:#080b1b;color:#f0eafa;overflow:hidden;animation:launch-failsafe 2.8s step-end forwards}
.portal-launch__space{position:absolute;inset:-30%;background:radial-gradient(ellipse at 50% 46%,#7355b938,transparent 40%),radial-gradient(ellipse at 70% 65%,#45bbd41c,transparent 45%);animation:launch-nebula 1.2s ease-out both}
.portal-launch__content{position:relative;display:grid;justify-items:center;text-align:center;padding:24px;gap:13px}
.portal-launch__emblem{position:relative;width:190px;height:190px;display:grid;place-items:center;margin-bottom:15px;perspective:500px}
.portal-launch__ring{position:absolute;inset:0;border:1px solid #ad8efb80;border-radius:50%;transform:rotate(-35deg) rotateX(55deg);box-shadow:0 0 35px #9b66ed1c;animation:launch-orbit 1s ease-out both}
.portal-launch__ring:nth-child(2){inset:13px;border-color:#88dcdf80;transform:rotate(35deg) rotateX(55deg);animation-name:launch-orbit-alt}
.portal-launch__ring:after{content:"";position:absolute;top:16%;left:12%;width:11px;height:11px;background:#bdacfa;box-shadow:0 0 22px #bfa1ff;border-radius:50%}
.portal-launch__ring:nth-child(2):after{left:auto;right:10%;top:70%;background:#b3eee4}
.portal-launch__logo{position:relative;display:grid;place-items:center;width:86px;height:92px;background:linear-gradient(145deg,#263247,#191b33);border:1px solid #bba0fa6b;border-radius:26px;box-shadow:0 0 65px #a06ce940;font:650 64px/1 Georgia,serif;color:#e6dbff;animation:launch-logo .8s cubic-bezier(.16,1,.3,1) both}
.portal-launch__logo:before{content:"";position:absolute;inset:0;border-radius:inherit;background:conic-gradient(#c7a9ff0c 25%,transparent 0 50%,#c7a9ff0c 0 75%,transparent 0);background-size:20px 20px}
.portal-launch__name{font:650 clamp(27px,7vw,36px)/1.15 Inter,system-ui,sans-serif;letter-spacing:-1.3px;margin:0;animation:launch-copy .5s .1s both}
.portal-launch__tagline{margin:0;color:#b8b4cc;font:400 13px/1.6 Inter,system-ui,sans-serif;letter-spacing:.06em;animation:launch-copy .5s .2s both}
.portal-launch__skip{position:absolute;right:max(20px,env(safe-area-inset-right));bottom:max(22px,env(safe-area-inset-bottom));min-height:44px;padding:10px 17px;border:1px solid #a391bf66;border-radius:30px;background:#16172a;color:#d6cee7;font:500 12px/1.4 Inter,system-ui,sans-serif;cursor:pointer;-webkit-text-fill-color:currentColor}
.portal-launch__skip:hover{background:#302843;color:#fff}.portal-launch__skip:focus-visible{outline:3px solid #b9e9e4;outline-offset:4px}
.portal-launch[data-leaving]{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .32s ease,visibility .32s;animation:none}
@keyframes launch-logo{from{opacity:0;transform:scale(.65) translateY(20px) rotate(-12deg)}to{opacity:1;transform:none}}
@keyframes launch-orbit{from{opacity:0;transform:rotate(-150deg) rotateX(65deg) scale(.7)}to{opacity:1;transform:rotate(-35deg) rotateX(55deg)}}
@keyframes launch-orbit-alt{from{opacity:0;transform:rotate(160deg) rotateX(65deg) scale(.7)}to{opacity:1;transform:rotate(35deg) rotateX(55deg)}}
@keyframes launch-copy{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes launch-nebula{from{opacity:.2;transform:scale(.75)}to{opacity:1;transform:scale(1)}}
@keyframes launch-failsafe{to{visibility:hidden;opacity:0;pointer-events:none}}
@media(prefers-reduced-motion:reduce){.portal-launching .portal-launch{display:none}.portal-launch *{animation:none!important;transition:none!important}}
