/* A short orbital prologue. The dialog is absent when JavaScript is unavailable. */
.intro{position:fixed;inset:0;width:100%;height:100%;height:100dvh;max-width:none;max-height:none;margin:0;border:0;padding:0;background:#050918;color:#fff;overflow:hidden;isolation:isolate}
.intro:not([open]){display:none}.intro[open]{display:flex;flex-direction:column}.intro::backdrop{background:#050918}body.intro-open{overflow:hidden}
.intro-space{position:absolute;inset:0;z-index:-1;overflow:hidden;background:radial-gradient(ellipse at 50% 48%,#112761 0, #090f2b 38%,#050918 75%)}
.intro-space:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#050918,transparent 30%,transparent 75%,#050918aa);pointer-events:none}
.intro-stars{position:absolute;inset:0;opacity:.65}.intro-stars i{position:absolute;width:2px;height:2px;border-radius:50%;background:#bdcbff;box-shadow:0 0 6px #a1b9ff80}
.intro-halo{position:absolute;left:50%;top:48%;width:min(62vw,850px);aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,transparent 42%,#3157ff08 52%,#517bff66 60%,#9cb7ff 60.4%,#3157ff88 61%,#3157ff06 68%,transparent 72%);box-shadow:inset 0 0 130px #3157ff1a;animation:halo-arrive 2.6s cubic-bezier(.16,1,.3,1) both}
.intro-orbit{position:absolute;left:50%;top:47%;width:78%;height:40%;border:1px solid #7d9bff40;border-radius:50%;transform:translate(-50%,-50%) rotate(-24deg);animation:orbit-arrive 3s ease both}.intro-orbit-b{width:67%;height:57%;transform:translate(-50%,-50%) rotate(27deg);border-color:#7d9bff1a}
.intro-top{display:flex;justify-content:space-between;align-items:center;padding:28px 4vw;position:relative;z-index:5;flex-shrink:0}.intro-brand{display:flex;align-items:center;gap:3px;font-size:30px;font-weight:700;letter-spacing:-1.8px;line-height:1}.intro-brand>span{color:#7792ff}.intro-brand img{margin-left:10px;border-radius:8px}.intro-skip{color:#b8c4e8;background:none;border:0;padding:10px;font-size:14px;display:flex;align-items:center;gap:24px}.intro-skip:hover{color:white}.intro-skip span{font-size:22px}
.intro-scene{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center}.intro-kicker{position:absolute;top:0;left:0;right:0;text-align:center;font-size:12px;letter-spacing:.25em;color:#b5c6ff;animation:intro-copy 1.4s .2s both}
.intro-title{display:flex;align-items:center;justify-content:center;gap:.1em;font-family:Anton,Impact,sans-serif;font-size:clamp(110px,25vw,410px);line-height:1;letter-spacing:-.035em;font-weight:400;transform:translateY(-4%);width:100%;white-space:nowrap;animation:title-arrive 1.8s cubic-bezier(.16,1,.3,1) both;color:#e8edff;text-shadow:0 6px 50px #071234}
.intro-title i{font-style:normal;color:#4569ff;font-size:.95em;margin:0 .02em;text-shadow:0 0 100px #3157ff60}
.intro-mascot{position:absolute;left:50%;top:50%;width:clamp(200px,30vw,450px);transform:translate(-50%,-43%);animation:mascot-arrive 2.4s cubic-bezier(.16,1,.3,1) both;filter:drop-shadow(0 25px 45px #0008)}
.intro-mascot img{display:block;width:100%;animation:zero-gravity 7s 2.4s ease-in-out infinite;will-change:transform}
.intro-coordinate{position:absolute;bottom:8%;font-size:12px;letter-spacing:.13em;line-height:1.8;color:#8295c2;animation:intro-copy 1.5s 1s both}.intro-coordinate-left{left:4vw}.intro-coordinate-right{right:4vw;text-align:right}
.intro-bottom{position:relative;text-align:center;z-index:5;flex-shrink:0;padding:8px 24px max(28px,env(safe-area-inset-bottom));animation:intro-copy 1.3s .6s both}.intro-bottom p{font-size:22px;letter-spacing:-.5px}.intro-bottom p>span{display:block;font-size:14px;letter-spacing:0;color:#9baed6;margin-top:4px}.intro-enter{margin:22px auto 18px;display:flex;align-items:center;justify-content:space-between;gap:40px;border:1px solid #7a93ff;border-radius:100px;background:#3157ff;color:#fff;padding:9px 10px 9px 26px;font-size:15px;font-weight:700;box-shadow:0 0 40px #3157ff25;transition:background .2s,box-shadow .2s,transform .2s}.intro-enter b{display:grid;place-items:center;font-weight:400;font-size:26px;width:44px;height:44px;border-radius:50%;background:#fff;color:#3157ff;transition:transform .2s}.intro-enter:hover{background:#4266ff;box-shadow:0 0 55px #3157ff60;transform:translateY(-2px)}.intro-enter:hover b{transform:rotate(45deg)}.intro-footnote{font-size:12px;color:#7588b1;letter-spacing:.13em}.intro-enter:focus-visible,.intro-skip:focus-visible{outline:2px solid white;outline-offset:6px}
.intro-wipe{position:absolute;z-index:10;inset:-30%;background:#3157ff;transform:translateX(-130%) skewX(-18deg);pointer-events:none}
.intro.is-leaving .intro-wipe{animation:slash-wipe 1s cubic-bezier(.76,0,.24,1) both}.intro.is-leaving .intro-mascot{animation:mascot-depart 1s cubic-bezier(.55,0,.4,1) both}.intro.is-leaving .intro-title{animation:title-depart .8s ease both}.intro.is-leaving .intro-bottom,.intro.is-leaving .intro-top{opacity:0;transition:opacity .2s}
.site-arriving .hero-copy{animation:site-arrive 1s .1s both}.site-arriving .hero-art{animation:site-arrive 1.2s .2s both}.site-arriving .header{animation:site-arrive .7s both}
.intro-replay{border:1px solid #ccd5e8;border-radius:100px;padding:8px 15px;background:transparent;color:var(--ink);font-size:13px;white-space:nowrap}.intro-replay:hover{background:#edf1ff}
#hero-title:focus{outline:none}
.intro-controls{display:flex;align-items:center;gap:14px}.intro-motion{border:1px solid #44547a;color:#dce5ff;background:#101a35;border-radius:50%;width:36px;height:36px;font-size:15px;padding:0}.intro-motion:hover{background:#253864}
.intro-skip{white-space:nowrap}.intro-motion{flex-shrink:0}
@media(max-width:360px){.intro-top{padding:16px}.intro-brand{font-size:23px}.intro-brand img{width:24px;height:24px;margin-left:6px}.intro-controls{gap:4px}.intro-skip{font-size:12px;gap:8px;padding:8px}.intro-motion{width:32px;height:32px}}
@keyframes halo-arrive{from{opacity:0;transform:translate(-50%,-50%) scale(.7)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@keyframes orbit-arrive{from{opacity:0}to{opacity:1}}
@keyframes intro-copy{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
@keyframes title-arrive{from{opacity:0;transform:translateY(12%) scale(1.15);filter:blur(12px)}to{opacity:1;transform:translateY(-4%) scale(1);filter:blur(0)}}
@keyframes mascot-arrive{from{opacity:0;transform:translate(-50%,-20%) scale(.65) rotate(-15deg)}to{opacity:1;transform:translate(-50%,-43%) scale(1) rotate(0)}}
@keyframes zero-gravity{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-16px) rotate(3deg)}}
@keyframes slash-wipe{0%{transform:translateX(-130%) skewX(-18deg)}70%,100%{transform:translateX(0) skewX(-18deg)}}
@keyframes mascot-depart{from{transform:translate(-50%,-43%) scale(1)}to{transform:translate(-50%,-110%) scale(1.8);opacity:0}}
@keyframes title-depart{to{transform:scale(1.15);opacity:0}}
@keyframes site-arrive{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1500px){.intro-top{padding-top:34px}.intro-bottom{padding-bottom:38px}}
@media(max-width:740px){.intro-top{padding:20px}.intro-brand{font-size:26px}.intro-brand img{width:28px;height:28px}.intro-skip{gap:12px}.intro-title{font-size:27vw;gap:.03em;transform:translateY(-16%)}.intro-mascot{width:min(64vw,340px);transform:translate(-50%,-40%)}.intro-kicker{top:4%;font-size:12px;letter-spacing:.15em}.intro-halo{width:115vw;top:43%}.intro-orbit{width:140%;height:35%;top:43%}.intro-coordinate{display:none}.intro-bottom{padding:12px 20px max(28px,env(safe-area-inset-bottom))}.intro-bottom p{font-size:20px}.intro-enter{margin-top:20px}.intro-footnote{font-size:11px;letter-spacing:.08em}}
@media(max-height:600px){.intro-top{padding:12px 24px}.intro-bottom{padding-bottom:14px}.intro-bottom p{display:none}.intro-enter{margin:6px auto 10px;padding:5px 7px 5px 22px}.intro-mascot{width:min(30vh,260px)}.intro-title{font-size:min(24vw,44vh)}.intro-kicker{font-size:11px}.intro-footnote{font-size:11px}}
@media(prefers-reduced-motion:reduce){.intro *,.site-arriving *{animation:none!important;transition:none!important}.intro-title{filter:none}.intro-mascot img{will-change:auto}}
.motion-paused .intro *{animation:none!important;transition:none!important}
