/* SIGNAL RUSH — a single crisp 3.4-second opening, replayed only by .intro-active. */
.intro{
  isolation:isolate;padding:30px 4%;color:#f7f7e9;
  background:linear-gradient(125deg,#060a1426,transparent 70%);
  opacity:1;visibility:visible;
  transition:opacity .55s ease,visibility .55s;
}
.intro-top,.intro-bottom{position:relative;z-index:3}
.intro-top{border-color:#c9fff54d;color:#d3eee9;align-items:center;padding-bottom:20px}
.intro-top>span:last-child{color:#a1bbcf}
.intro-motion{position:absolute;inset:0;pointer-events:none;z-index:0;overflow:hidden}
.intro-trails{display:block;width:100%;height:100%;overflow:visible}
.intro-rush{opacity:0;transform-origin:50% 50%}
.intro-rush path{stroke-dasharray:1850 2100;stroke-dashoffset:2200;stroke-linecap:round}
.intro-registration{opacity:0;transform-origin:50% 50%;transform:scale(.96)}
.intro-register-cross{opacity:.4}
.intro-vector{opacity:0;transform:translate(-200px,0)}
.intro-orbit{position:absolute;display:block;border:1px solid #77e8e83d;border-radius:50%;opacity:0;transform:scale(.75) rotate(-20deg);transform-origin:center}
.intro-orbit-one{width:40vw;height:40vw;min-width:250px;min-height:250px;right:-12vw;top:6%;border-left-color:#d5ff00cc;border-bottom-color:transparent}
.intro-orbit-two{width:22vw;height:22vw;min-width:160px;min-height:160px;right:-3vw;top:19%;border-right-color:#ff80c4a6;border-top-color:transparent}
.intro-signal-label{position:absolute;right:4%;top:24%;font:9px 'Manrope',sans-serif;letter-spacing:2px;color:#b8ffed;opacity:0;writing-mode:vertical-rl}
.intro .intro-type{position:relative;z-index:2;margin:auto 0;max-width:100%;font-family:'Manrope','Noto Sans KR',sans-serif;font-size:clamp(58px,8.7vw,142px);font-weight:800;letter-spacing:-.073em;line-height:1.03;color:#f6f5e7;transform:none;filter:none;text-shadow:0 2px 18px #060a14a6}
.intro .intro-type>span{display:block;rotate:none;animation:none;opacity:0;filter:none;transform:translate3d(-52px,0,0)}
.intro .intro-type>span:first-child{color:#d5ff00;transform-origin:0 50%}
.intro .intro-type>span:last-child{margin-top:.12em;max-width:100%;transform-origin:0 50%}
.intro .intro-type i{display:inline;font-family:inherit;font-weight:700;letter-spacing:inherit;font-size:inherit;color:transparent;font-style:italic;-webkit-text-stroke:1px #b6ffed;text-shadow:none}
.intro .intro-line{color:#d6e4e8;font-size:13px;line-height:1.8;max-width:none}
.intro .intro-bottom{gap:24px;color:#d6e4e8}
.intro #skip-intro{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:22px;flex-shrink:0;min-height:48px;padding:13px 20px;color:#060a14;background:#d5ff00;border:1px solid #e5ff74;border-radius:0;box-shadow:4px 4px 0 #1b6871;font-size:13px;font-weight:700;text-shadow:none;opacity:1;visibility:visible;transform:none;transition:background .18s,box-shadow .18s}
.intro #skip-intro:hover{background:#a8ffe8;box-shadow:4px 4px 0 #5b3677}
.intro #skip-intro:focus-visible{outline:2px solid #b6ffed!important;outline-offset:7px}
.intro #skip-intro>span{font-size:20px}
body.intro-active .site-shell{opacity:0;transform:translate3d(0,20px,0);pointer-events:none}
body.intro-leaving .site-shell{opacity:1;transform:none;transition:opacity .55s ease,transform .7s cubic-bezier(.2,.7,.2,1)}
body.intro-done .site-shell{opacity:1;transform:none}
body.intro-active .scene-controls{opacity:0;pointer-events:none}
body.intro-active .intro-rush{animation:signalRushGroup 3.4s linear both}
body.intro-active .intro-rush path{animation:signalTrace 3.4s cubic-bezier(.16,.72,.2,1) both}
body.intro-active .intro-rush-lime{animation-delay:.14s}
body.intro-active .intro-rush-lime path{animation-delay:.14s}
body.intro-active .intro-rush-pink{animation-delay:.28s}
body.intro-active .intro-rush-pink path{animation-delay:.28s}
body.intro-active .intro-registration{animation:signalRegister 3.4s cubic-bezier(.2,.7,.2,1) both}
body.intro-active .intro-vector-one{animation:signalVectorOne 1.1s .12s cubic-bezier(.12,.6,.2,1) both}
body.intro-active .intro-vector-two{animation:signalVectorTwo 1.15s .38s cubic-bezier(.12,.6,.2,1) both}
body.intro-active .intro-vector-three{animation:signalVectorThree 1.2s 2.1s cubic-bezier(.12,.6,.2,1) both}
body.intro-active .intro-orbit-one{animation:signalOrbit 3.4s .15s cubic-bezier(.2,.65,.2,1) both}
body.intro-active .intro-orbit-two{animation:signalOrbit 3.4s .32s cubic-bezier(.2,.65,.2,1) both;animation-direction:normal}
body.intro-active .intro-signal-label{animation:signalLabel 3.4s linear both}
body.intro-active .intro-type>span:first-child{animation:signalType .85s .40s cubic-bezier(.16,1,.3,1) both}
body.intro-active .intro-type>span:last-child{animation:signalType .85s .64s cubic-bezier(.16,1,.3,1) both}
body.intro-leaving .intro,body.intro-done .intro{opacity:0;visibility:hidden;pointer-events:none}
body.intro-leaving .intro{transition:opacity .55s ease,visibility .55s}
body.intro-leaving .intro .intro-type{transform:translate3d(0,-26px,0);transition:transform .55s cubic-bezier(.3,0,.2,1)}
body.intro-leaving .intro .intro-type>span{opacity:1;transform:none}
body.intro-done .intro .intro-type>span{opacity:1;transform:none}
body.intro-skipped .site-shell,body.intro-skipped .scene-controls{transition:none!important}
@keyframes signalTrace{0%{stroke-dashoffset:2200}30%{stroke-dashoffset:0}66%{stroke-dashoffset:-350}100%{stroke-dashoffset:-3700}}
@keyframes signalRushGroup{0%{opacity:0;transform:translate3d(-9%,2%,0) scale(.96)}6%{opacity:.9}30%{opacity:.65;transform:translate3d(0,0,0) scale(1)}62%{opacity:.3}81%{opacity:.7}100%{opacity:0;transform:translate3d(10%,-3%,0) scale(1.05)}}
@keyframes signalRegister{0%,18%{opacity:0;transform:scale(.96)}32%{opacity:.6;transform:scale(1)}73%{opacity:.35;transform:scale(1)}100%{opacity:0;transform:scale(1.06)}}
@keyframes signalType{0%{opacity:0;transform:translate3d(-52px,10px,0) skewX(-8deg)}100%{opacity:1;transform:translate3d(0,0,0) skewX(0)}}
@keyframes signalVectorOne{0%{opacity:0;transform:translate3d(-200px,200px,0)}10%{opacity:1}100%{opacity:0;transform:translate3d(1800px,200px,0)}}
@keyframes signalVectorTwo{0%{opacity:0;transform:translate3d(1700px,720px,0) rotate(180deg)}10%{opacity:.8}100%{opacity:0;transform:translate3d(-200px,720px,0) rotate(180deg)}}
@keyframes signalVectorThree{0%{opacity:0;transform:translate3d(-200px,600px,0) rotate(-12deg)}10%{opacity:.9}100%{opacity:0;transform:translate3d(1800px,180px,0) rotate(-12deg)}}
@keyframes signalOrbit{0%{opacity:0;transform:scale(.75) rotate(-20deg)}30%{opacity:.75;transform:scale(1) rotate(20deg)}75%{opacity:.35;transform:scale(1.03) rotate(40deg)}100%{opacity:0;transform:scale(1.25) rotate(65deg)}}
@keyframes signalLabel{0%,27%{opacity:0}37%,70%{opacity:.65}100%{opacity:0}}
@media(min-width:1600px){.intro{padding-left:max(4%,calc((100vw - 1480px)/2));padding-right:max(4%,calc((100vw - 1480px)/2))}}
@media(max-width:760px){
 .intro{padding:25px 5%}
 .intro-top{font-size:8px;letter-spacing:1px;gap:20px;padding-bottom:17px}
 .intro-top>span:last-child{max-width:140px;text-align:right;line-height:1.7}
 .intro .intro-type{font-size:clamp(43px,12.7vw,96px);letter-spacing:-.075em;line-height:1.08}
 .intro .intro-type>span:last-child{margin-top:.2em}
 .intro .intro-type i{display:block;-webkit-text-stroke:1px #b6ffed}
 .intro .intro-line{font-size:12px;line-height:1.8;max-width:155px}
 .intro .intro-bottom{align-items:end;gap:16px}
 .intro #skip-intro{min-height:48px;padding:12px 14px;font-size:12px;gap:13px;box-shadow:3px 3px 0 #1b6871}
 .intro #skip-intro>span{font-size:18px}
 .intro-orbit-one{right:-35%;top:20%}
 .intro-orbit-two{right:-8%;top:30%}
 .intro-signal-label{font-size:7px;right:5%;top:22%;letter-spacing:1px}
 .intro-registration{display:none}
}
@media(max-width:359px){
 .intro .intro-type{font-size:12.5vw}
 .intro .intro-line{font-size:11px;max-width:125px}
 .intro #skip-intro{font-size:11px;padding:12px;gap:9px}
 .intro-top{font-size:7px}
}
@media(prefers-reduced-motion:reduce){
 body.intro-active .intro *,body.intro-active .intro *:before,body.intro-active .intro *:after{animation:none!important}
 .intro .intro-type>span{opacity:1;transform:none}
 .intro-motion{display:none}
 .intro,.intro .intro-type,.intro #skip-intro{transition:none!important}
}
