/* Kavi boot intro: grid + scan line, pixels fly in, mascot drops, eyes open and wink,
   smile draws, kavi_ pops in with a glitch, status lines, rings ripple, circle wipe. */
.kv-intro{position:fixed;inset:0;z-index:1000;background:#050505;overflow:hidden;display:flex;align-items:center;justify-content:center;font-family:"Inter Tight",system-ui,sans-serif;color:#F5F5F5}
.kv-intro.is-leaving{animation:kvIntroOut .8s cubic-bezier(.7,0,.3,1) forwards}
.kv-intro *{box-sizing:border-box}
.kv-intro-grid{position:absolute;inset:-48px;background-image:linear-gradient(#161616 1px,transparent 1px),linear-gradient(90deg,#161616 1px,transparent 1px);background-size:48px 48px;animation:kvGridIn 1.2s ease both,kvGridPan 6s linear infinite}
.kv-intro-scan{position:absolute;left:0;right:0;top:0;height:2px;background:#4D8DFF;box-shadow:0 0 24px 4px #4D8DFF;opacity:0;animation:kvScan 1.5s ease-in-out .2s 2}
.kv-intro-glow{position:absolute;left:50%;top:50%;width:10px;height:10px;margin:-60px 0 0 -5px;border-radius:50%;box-shadow:0 0 200px 110px #4D8DFF;opacity:0;animation:kvGridIn .6s ease 1.5s both,kvGlowPulse 2.4s ease-in-out 2.1s infinite}
.kv-intro-ring{position:absolute;left:50%;top:50%;width:200px;height:200px;margin:-160px 0 0 -100px;border:2px solid #4D8DFF;border-radius:52px;opacity:0;animation:kvRipple 2.4s ease-out infinite}
.kv-intro-px{position:absolute;left:50%;top:50%;opacity:0;animation:kvConverge 1.1s cubic-bezier(.5,0,.2,1) forwards}
.kv-intro-skip{position:absolute;top:20px;right:24px;z-index:3;min-height:44px;padding:0 18px;border:1px solid #2A2A2A;border-radius:999px;background:#050505;color:#BDBDBD;font:500 14px "Inter Tight",sans-serif;cursor:pointer}
.kv-intro-skip:hover{color:#fff;border-color:#4D8DFF}
.kv-intro-stack{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:26px}
.kv-intro-drop{animation:kvDrop 1s cubic-bezier(.3,.7,.4,1) .9s both}
.kv-intro-float{animation:kvFloat 3s ease-in-out 2.1s infinite}
.kv-intro-word{font-weight:800;font-size:56px;letter-spacing:-.03em;display:flex;animation:kvGlitch .45s steps(5) 3.1s 2}
.kv-intro-word span{display:inline-block;animation:kvLetter .55s cubic-bezier(.2,.9,.3,1.4) both}
.kv-intro-word .u{color:#4D8DFF}
.kv-intro-bar{position:relative;width:260px;height:4px;background:#161616;border-radius:4px;overflow:hidden;animation:kvUp .5s ease .8s both}
.kv-intro-bar i{display:block;height:100%;background:#4D8DFF;box-shadow:0 0 12px #4D8DFF;animation:kvFill 2.6s cubic-bezier(.6,0,.2,1) 1s both}
.kv-intro-bar b{position:absolute;top:0;bottom:0;left:0;width:25%;background:#fff;opacity:.35;animation:kvShimmer 1.1s linear 1s infinite}
.kv-intro-status{height:18px;overflow:hidden;font:12px "JetBrains Mono",monospace;letter-spacing:.3em;color:#8A8A8A;text-align:center;animation:kvUp .5s ease 1s both}
.kv-intro-status div{display:flex;flex-direction:column;animation:kvStatus 3.2s ease 1s both}
.kv-intro-status span{line-height:18px}
.kv-intro-status span:last-child{color:#4D8DFF}
.kv-replay{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 16px;border:1px solid #2A2A2A;border-radius:999px;background:#0D0D0D;color:#E5E5E5;font:600 14px "Inter Tight",sans-serif;cursor:pointer;white-space:nowrap}
.kv-replay:hover{border-color:#4D8DFF;color:#fff}
.kv-replay svg{width:12px;height:12px;fill:currentColor}
.st-bar .kv-replay{margin-left:auto;margin-right:10px}
@media (max-width:900px){.st-bar .kv-replay{display:none}}
@keyframes kvFloat{0%,100%{transform:translateY(0) rotate(-6deg)}50%{transform:translateY(-16px) rotate(-2deg)}}
@keyframes kvUp{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes kvPopA{0%{opacity:0;transform:scale(.6)}70%{opacity:1;transform:scale(1.06)}100%{opacity:1;transform:scale(1)}}
@keyframes kvFill{from{width:0}to{width:100%}}
@keyframes kvCursor{50%{opacity:0}}
@keyframes kvGridIn{from{opacity:0}to{opacity:1}}
@keyframes kvGridPan{to{background-position:48px 48px}}
@keyframes kvScan{0%{top:0;opacity:0}10%{opacity:1}90%{opacity:1}100%{top:100%;opacity:0}}
@keyframes kvRipple{0%{transform:scale(.4) rotate(0);opacity:0}15%{opacity:.9}100%{transform:scale(3.2) rotate(45deg);opacity:0}}
@keyframes kvConverge{40%{opacity:1}to{transform:none;opacity:0}}
@keyframes kvDrop{0%{transform:translateY(-110vh) rotate(-40deg)}55%{transform:translateY(0) rotate(4deg) scale(1.18,.82)}72%{transform:translateY(-36px) rotate(-3deg) scale(.94,1.06)}86%{transform:translateY(0) scale(1.04,.96)}100%{transform:none}}
@keyframes kvEyesOpen{from{transform:scaleY(.05)}to{transform:scaleY(1)}}
@keyframes kvWink{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.08)}}
@keyframes kvDraw{to{stroke-dashoffset:0}}
@keyframes kvLetter{0%{opacity:0;transform:translateY(40px) scale(.4) rotate(-12deg)}70%{opacity:1;transform:translateY(-6px) scale(1.12)}100%{opacity:1;transform:none}}
@keyframes kvGlitch{0%,100%{text-shadow:none;transform:none}20%{text-shadow:-4px 0 #FF5A5F,4px 0 #38BDF8;transform:translateX(3px)}40%{text-shadow:4px 0 #FF5A5F,-4px 0 #38BDF8;transform:translateX(-3px)}60%{text-shadow:-2px 0 #FF5A5F,2px 0 #38BDF8}80%{text-shadow:none}}
@keyframes kvStatus{0%,20%{transform:translateY(0)}25%,45%{transform:translateY(-18px)}50%,70%{transform:translateY(-36px)}75%,100%{transform:translateY(-54px)}}
@keyframes kvGlowPulse{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.3)}}
@keyframes kvShimmer{from{transform:translateX(-100%)}to{transform:translateX(400%)}}
@keyframes kvIntroOut{from{clip-path:circle(150% at 50% 50%)}to{clip-path:circle(0% at 50% 50%);visibility:hidden}}
