/* KAPLEX BOOT: the K powers up like a chip. The real lockup, one hairline of current drawing across, the five Kore
   parts walking the progress line. Once per session, skipped under reduced motion, gone by about 4.5 s whatever happens. */
.kx-boot{--g:#2BF08B;position:fixed;inset:0;z-index:2147483000;background:#010403;display:flex;align-items:center;justify-content:center;
  transition:background-color .45s ease;font-family:'Geist Mono',ui-monospace,Menlo,monospace}
@keyframes kxb-cap{to{opacity:0;visibility:hidden}}
.kx-boot.is-out{opacity:0;visibility:hidden;pointer-events:none}
html.kx-boot-skip .kx-boot{display:none!important}
html.kx-boot-on,html.kx-boot-on body{overflow:hidden!important}
.kx-boot::before{content:'';position:absolute;inset:0;background:radial-gradient(40% 36% at 50% 46%,rgba(43,240,139,.10),transparent 70%)}
.kx-boot-grid{position:absolute;inset:0;opacity:.5;background:
  repeating-linear-gradient(90deg,rgba(255,255,255,.025) 0 1px,transparent 1px 48px),repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0 1px,transparent 1px 48px);
  -webkit-mask:radial-gradient(50% 50% at 50% 50%,#000,transparent);mask:radial-gradient(50% 50% at 50% 50%,#000,transparent)}
.kx-boot-in{position:relative;display:flex;flex-direction:column;align-items:center;gap:26px;width:min(360px,80vw)}
.kx-boot-logo{width:clamp(150px,26vw,210px);height:auto;opacity:0;transform:scale(.96);animation:kxb-logo 1.6s cubic-bezier(.16,1,.3,1) .15s forwards}
@keyframes kxb-logo{60%{opacity:1;filter:drop-shadow(0 0 22px rgba(43,240,139,.55))}100%{opacity:1;transform:none;filter:drop-shadow(0 0 12px rgba(43,240,139,.3))}}
.kx-boot-trace{position:relative;width:100%;height:1px;background:rgba(255,255,255,.08)}
.kx-boot-trace i{position:absolute;left:0;top:0;height:1px;width:0;background:linear-gradient(90deg,rgba(43,240,139,.2),var(--g));box-shadow:0 0 10px rgba(43,240,139,.8);animation:kxb-fill 3.2s cubic-bezier(.45,0,.2,1) .2s forwards}
.kx-boot-trace i::after{content:'';position:absolute;right:-3px;top:-2px;width:5px;height:5px;border-radius:50%;background:#cfffe6;box-shadow:0 0 12px 3px rgba(43,240,139,.9)}
@keyframes kxb-fill{to{width:100%}}
.kx-boot-l{display:flex;justify-content:space-between;width:100%;font-size:10.5px;letter-spacing:.24em;color:#6f8a7d;text-transform:uppercase}
.kx-boot-l b{font-weight:500;color:#cfe9db}
.kx-boot-st{position:relative;height:14px;flex:1;margin-left:16px;text-align:right}
.kx-boot-st span{position:absolute;right:0;top:0;opacity:0;color:var(--g);animation:kxb-st .64s ease var(--d) both}
.kx-boot-st span:last-child{animation:kxb-last .64s ease var(--d) both}
@keyframes kxb-st{0%{opacity:0;transform:translateY(4px)}20%,80%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-4px)}}
@keyframes kxb-last{0%{opacity:0;transform:translateY(4px)}100%{opacity:1;transform:none}}
.kx-boot-sk{position:absolute;right:20px;bottom:20px;background:none;border:1px solid rgba(255,255,255,.14);color:#9fb5a9;font:500 11px 'Geist Mono',monospace;letter-spacing:.2em;text-transform:uppercase;padding:9px 14px;border-radius:8px;cursor:pointer}

/* Round 14: the loading screen for the 3D world on every visit (never a bare black screen), then a hand-off: the
   background and text clear first, and the K mark flies to the 3D K waiting above the chip and fades as it settles. */
.kx-boot-mark{width:clamp(96px,14vw,132px);height:auto;opacity:0;transform:scale(.96);animation:kxb-logo 1.4s cubic-bezier(.16,1,.3,1) .1s forwards;transition:transform .36s cubic-bezier(.2,.8,.2,1),opacity .34s ease-in;will-change:transform}
.kx-boot.is-quick .kx-boot-mark{animation-duration:.5s;animation-delay:0s}
.kx-boot-word{display:flex;flex-direction:column;align-items:center;gap:6px;margin-top:-6px;line-height:1}
.kx-boot-word b{font:500 19px/1 Geist,system-ui,sans-serif;letter-spacing:.42em;color:#edf6f1;padding-left:.42em}
.kx-boot-word i{font:500 9.5px/1 'Geist Mono',monospace;font-style:normal;letter-spacing:.42em;color:#2BF08B;padding-left:.42em}
.kx-boot-trace i{animation:none;transition:none;width:0}
.kx-boot.is-quick .kx-boot-st{visibility:hidden}
.kx-boot.is-out{background-color:transparent;opacity:1;visibility:visible;pointer-events:none}
.kx-boot.is-out::before,.kx-boot.is-out .kx-boot-grid,.kx-boot.is-out .kx-boot-word,.kx-boot.is-out .kx-boot-trace,.kx-boot.is-out .kx-boot-l,.kx-boot.is-out .kx-boot-sk{opacity:0;transition:opacity .22s ease}
/* hard cap: whatever the main thread is doing, the whole boot (and its K) is invisible 400 ms after the hand-off starts */
.kx-boot.is-out{animation:kxb-gone .4s linear forwards}
@keyframes kxb-gone{0%,95%{opacity:1}100%{opacity:0;visibility:hidden}}
.kx-boot.is-out .kx-boot-mark{opacity:0;animation:none}
.kx-boot.is-still .kx-boot-mark,.kx-boot.is-still .kx-boot-st span{animation:none;opacity:1;transform:none}
html.kx-boot-on .hint{opacity:0!important}
