/* Native, resolution-independent opening. No video or autoplay dependency. */
.js .intro{position:fixed;inset:0;width:100%;height:100%;height:100dvh;min-height:100svh;display:grid;place-items:center;isolation:isolate;overflow:hidden;background:var(--bg,#070a10);z-index:1000;pointer-events:auto;contain:layout paint}
.intro-atmosphere{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 70%,#1c4b9c30,transparent 55%);opacity:0}
.intro-wave{position:absolute;left:50%;top:56%;width:145vw;min-width:900px;height:60vh;border-radius:50%;border:1px solid #3d79ff4d;box-shadow:0 1px 11px #1d60f54d,inset 0 -1px 9px #2167ff26;transform:translate(-50%,10%) rotate(-8deg);opacity:0;pointer-events:none}
.intro-wave-two{top:59%;width:160vw;height:57vh;border-color:#76aaff2e;filter:blur(1px);transform:translate(-50%,8%) rotate(9deg)}
.intro-logo-stage{position:relative;width:clamp(175px,23vw,320px);aspect-ratio:1;z-index:2;opacity:0;transform:translateY(10px) scale(.94)}
.intro-emblem{display:block;width:100%;height:100%;overflow:visible}
.intro-stroke{stroke:url(#intro-brand-gradient);stroke-width:27;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1}
.intro-glow{filter:url(#intro-glow);opacity:.55;stroke-width:32}
.intro-floor{position:absolute;left:8%;right:8%;bottom:-15%;height:20%;border-radius:50%;background:radial-gradient(ellipse,#315bfa4d,transparent 68%);filter:blur(12px);opacity:0}
.intro-particles{position:absolute;inset:0;pointer-events:none}
.intro-particles i{position:absolute;left:var(--x);top:var(--y);width:2px;height:2px;background:#739dff;border-radius:50%;box-shadow:0 0 7px #3d72ff;opacity:0}
.intro-running{animation:intro-exit .55s ease-in 4.85s both}
.intro-running .intro-atmosphere{animation:intro-atmosphere 4.85s ease-out both}
.intro-running .intro-logo-stage{animation:intro-emerge 1.5s cubic-bezier(.16,1,.3,1) .15s forwards}
.intro-running .intro-stroke{animation:intro-draw 2.25s cubic-bezier(.45,0,.2,1) .35s forwards}
.intro-running .intro-floor{animation:intro-floor 3.6s ease-out .8s both}
.intro-running .intro-wave{animation:intro-wave 4.7s ease-out .2s both}
.intro-running .intro-wave-two{animation-name:intro-wave-back;animation-delay:.65s;animation-duration:4.2s}
.intro-running .intro-particles i{animation:intro-dust 3s ease-out var(--delay) both}
@keyframes intro-exit{from{opacity:1}to{opacity:0}}
@keyframes intro-atmosphere{0%{opacity:0}45%,85%{opacity:1}100%{opacity:.6}}
@keyframes intro-emerge{0%{opacity:0;transform:translateY(10px) scale(.94)}50%{opacity:1}100%{opacity:1;transform:translateY(0) scale(1)}}
@keyframes intro-draw{0%{stroke-dashoffset:1}100%{stroke-dashoffset:0}}
@keyframes intro-floor{0%{opacity:0;transform:scaleX(.6)}45%,75%{opacity:.9}100%{opacity:.5;transform:scaleX(1.15)}}
@keyframes intro-wave{0%{opacity:0;transform:translate(-50%,12%) rotate(-8deg) scale(.85)}35%{opacity:.85}100%{opacity:.2;transform:translate(-50%,-12%) rotate(5deg) scale(1.15)}}
@keyframes intro-wave-back{0%{opacity:0;transform:translate(-50%,15%) rotate(9deg) scale(.9)}40%{opacity:.6}100%{opacity:.1;transform:translate(-50%,-9%) rotate(-5deg) scale(1.1)}}
@keyframes intro-dust{0%{opacity:0;transform:translateY(10px)}40%{opacity:.8}100%{opacity:0;transform:translateY(-28px)}}
html[data-theme=light] .intro-atmosphere{background:radial-gradient(ellipse at 50% 70%,#2468de18,transparent 55%)}
@media(max-width:767px){.intro-logo-stage{width:clamp(170px,49vw,235px)}.intro-wave{width:240vw;min-width:650px;height:50vh;top:58%}.intro-wave-two{top:63%;height:44vh}.intro-skip{bottom:max(22px,env(safe-area-inset-bottom));right:20px}}
@media(orientation:landscape) and (max-height:500px){.intro-logo-stage{width:min(210px,49vh)}}
@media(prefers-reduced-motion:reduce){.js .intro{display:none}.intro-running,.intro-running *{animation:none!important}}
