.kv{--background:#05070a;--foreground:#f2f4f7;--muted:#9aa3ad;--accent:#eef1f4;--warm:#f3dcc8;--cool:#cfdcea;--line:rgba(255,255,255,.15);--glass:rgba(10,13,18,.58);--frame-radius:1.5rem;--frame-shadow:0 20px 80px rgba(0,0,0,.35);--ease-out:cubic-bezier(.16,1,.3,1);--gut-l:max(16px,env(safe-area-inset-left,0px));--gut-r:max(16px,env(safe-area-inset-right,0px));--top:calc(env(safe-area-inset-top,0px) + 16px);--bot:calc(env(safe-area-inset-bottom,0px) + 16px);color-scheme:dark;position:fixed;inset:0;z-index:50;margin:0;background:var(--background);color:var(--foreground);overflow:hidden;font-family:var(--font-body);-webkit-tap-highlight-color:transparent}.kv,.kv *,.kv :after,.kv :before{box-sizing:content-box}.kv #gl{position:fixed;inset:0;display:block;width:100%;height:100%;touch-action:none;cursor:grab}.kv #gl:active{cursor:grabbing}.kv button{font:inherit;color:inherit}.kv .lbl:focus-visible,.kv button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.kv .frame{border-radius:var(--frame-radius);border:1px solid var(--line);box-shadow:var(--frame-shadow);background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.kv .labels{position:fixed;inset:0;pointer-events:none;overflow:hidden}.kv .lbl{position:absolute;left:0;top:0;font:400 12px var(--font-heading);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;padding:6px 11px;border-radius:999px;background:rgba(5,7,10,.5);border:1px solid var(--line);pointer-events:auto;cursor:pointer;transition:opacity .4s var(--ease-out),border-color .3s,background .3s}.kv .lbl b{font-weight:400;opacity:.6;margin-left:6px}.kv .lbl.cc{color:var(--cool)}.kv .lbl.mc{color:var(--warm)}.kv .lbl.core{font-size:15px;color:var(--accent)}.kv .lbl.on{border-color:currentColor;background:rgba(5,7,10,.8)}.kv .lbl.off{opacity:0;pointer-events:none}.kv .left{position:fixed;top:var(--top);left:var(--gut-l);bottom:var(--bot);width:300px;display:flex;flex-direction:column;gap:12px;pointer-events:none}.kv .left>*{pointer-events:auto}.kv .brand{padding:16px 18px;display:grid;gap:8px}.kv .brand h1{margin:0;font:400 26px/1.05 var(--font-heading);letter-spacing:.02em}.kv .brand p{margin:0;font:300 14px/1.5 var(--font-body);color:var(--muted)}.kv .ctrls{display:flex;gap:6px}.kv .ibtn{display:grid;place-items:center;width:42px;height:42px;padding:0;border:0;border-radius:999px;background:none;cursor:pointer;transition:background .3s var(--ease-out),opacity .3s var(--ease-out)}.kv .ibtn:active,.kv .ibtn:hover{background:rgba(255,255,255,.08)}.kv .ibtn svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.kv .ibtn .woff,.kv .ibtn[aria-pressed=false] .won{display:none}.kv .ibtn[aria-pressed=false] .woff{display:inline}.kv .ctrls .ibtn{width:40px;height:40px;border:1px solid var(--line);background:rgba(255,255,255,.04)}.kv .ctrls .ibtn:hover{background:rgba(255,255,255,.1)}.kv .skills{padding:10px;overflow:auto;min-height:0;flex:0 1 auto;scrollbar-width:thin}.kv .grp{font:400 10px var(--font-heading);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);padding:8px 10px 6px}.kv .row{display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;align-items:center;width:100%;text-align:left;background:none;border:1px solid transparent;border-radius:12px;padding:5px 10px;cursor:pointer;transition:background .25s,border-color .25s}.kv .row:hover{background:rgba(255,255,255,.06)}.kv .row[aria-current=true]{background:rgba(255,255,255,.08);border-color:var(--line)}.kv .row svg{width:18px;height:18px}.kv .row .nm{font:400 13px var(--font-heading);letter-spacing:.04em;display:block}.kv .row .ds{font:300 12px/1.35 var(--font-body);color:var(--muted);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kv .row .ct{font:400 12px ui-monospace,Menlo,monospace;color:var(--muted);font-variant-numeric:tabular-nums}.kv .row.cc .nm,.kv .row.cc svg{color:var(--cool)}.kv .row.mc .nm,.kv .row.mc svg{color:var(--warm)}.kv .asof{font:300 11px/1.4 var(--font-body);color:var(--muted);padding:8px 10px 4px}.kv .hud{position:fixed;right:var(--gut-r);top:var(--top);width:280px;padding:12px;display:grid;gap:9px}.kv .bar{display:flex;justify-content:space-between;align-items:center;gap:8px;font:400 10px var(--font-heading);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.kv .bar i{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);margin-right:7px;box-shadow:0 0 8px var(--accent);animation:kv-blink 1.6s step-end infinite}.kv .bar .face{display:none;place-items:center;width:36px;height:36px;padding:0;color:var(--muted);background:none;border:1px solid var(--line);border-radius:999px;cursor:pointer}.kv .bar .face svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;transition:transform .3s var(--ease-out)}.kv .sub.past{opacity:.55}.kv .screen{position:relative;border-radius:1rem;overflow:hidden;background:#020305;border:1px solid var(--line);aspect-ratio:620/720;cursor:pointer}.kv .screen canvas{position:absolute;inset:0;width:100%;height:100%}.kv .screen:before{background:repeating-linear-gradient(0deg,rgba(255,255,255,.03) 0 1px,transparent 1px 3px)}.kv .screen:after,.kv .screen:before{content:"";position:absolute;inset:0;pointer-events:none;z-index:2}.kv .screen:after{background:radial-gradient(ellipse at center,transparent 58%,rgba(0,0,0,.6))}.kv .br{position:absolute;width:14px;height:14px;border-color:rgba(238,241,244,.7);border-style:solid;z-index:3}.kv .br.tl{top:7px;left:7px;border-width:1px 0 0 1px}.kv .br.tr{top:7px;right:7px;border-width:1px 1px 0 0}.kv .br.bl{bottom:7px;left:7px;border-width:0 0 1px 1px}.kv .br.brr{bottom:7px;right:7px;border-width:0 1px 1px 0}.kv .read{position:absolute;top:10px;left:26px;right:26px;display:flex;justify-content:space-between;font:400 9px ui-monospace,Menlo,monospace;color:rgba(238,241,244,.6);z-index:3;letter-spacing:.06em}.kv .scan{position:absolute;left:0;right:0;height:30%;top:-30%;background:linear-gradient(180deg,transparent,rgba(238,241,244,.05),transparent);z-index:2;animation:kv-scan 5s linear infinite;pointer-events:none}.kv .wave{display:flex;gap:3px;align-items:center;height:14px}.kv .wave span{flex:1;background:var(--accent);opacity:.75;border-radius:2px;height:2px}.kv .story h2{margin:0;font:400 16px/1.2 var(--font-heading);letter-spacing:.02em;text-wrap:balance}.kv .story .tag{font:400 10px var(--font-heading);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}.kv .story ul{list-style:disc;margin:6px 0 0;padding-left:18px;font:300 13px/1.5 var(--font-body);color:var(--muted)}.kv .sub{min-height:2.7em;font:700 14px/1.35 var(--font-body);text-align:center;text-wrap:balance}.kv .drawer,.kv .pbar,.kv .scrim{display:none}.kv .gate{position:fixed;inset:0;display:flex;align-items:flex-start;background:rgba(5,7,10,.45);z-index:41;cursor:pointer;padding:max(var(--top),26vh) var(--gut-r) var(--bot) calc(var(--gut-l) + clamp(0px,7vw,112px));transition:opacity .8s var(--ease-out)}.kv .gate.go{opacity:0;pointer-events:none}.kv .gate.booting{cursor:default}.kv .gate>div{display:grid;gap:14px;justify-items:start;text-align:left;max-width:560px}.kv .gate b{font:400 22px var(--font-heading)}.kv .gate .boot{display:grid;gap:3px;font:400 13px/1.55 var(--font-body);color:var(--muted)}.kv .gate .boot p{margin:0}.kv .gate .boot b,.kv .gate .boot i{font:inherit}.kv .gate .boot i{animation:kv-blink 1s steps(2) infinite}.kv .gate .boot .ok i{animation:none}.kv .gate .boot b{color:var(--accent)}.kv .gate .boot .live{color:var(--foreground)}.kv .gate .boot .live:after{content:"_";margin-left:2px;animation:kv-blink 1s steps(2) infinite}.kv .gate .hint{font:300 14px/1.5 var(--font-body);color:var(--muted);margin-top:6px}.kv .gate em{font:400 13px var(--font-heading);letter-spacing:.12em;text-transform:uppercase;font-style:normal;border:1px solid var(--line);border-radius:999px;padding:10px 18px}.kv .gate .hint,.kv .gate em{transition:opacity .6s var(--ease-out)}.kv .gate.booting .hint,.kv .gate.booting em{opacity:0;pointer-events:none}.kv .fallback{position:fixed;inset:0;display:grid;place-items:center;padding:24px;text-align:center;color:var(--muted)}.kv .veil{position:fixed;inset:0;background:var(--background);z-index:40;pointer-events:none;transition:opacity 1.1s var(--ease-out)}.kv .veil.off{opacity:0}.kv .hud,.kv .left,.kv .pbar{transition:transform .9s var(--ease-out),opacity .9s var(--ease-out)}.kv .hud{transition-delay:.12s}.kv:not(.ui-in) .left{transform:translateX(-28px);opacity:0}.kv:not(.ui-in) .hud,.kv:not(.ui-in) .left>*,.kv:not(.ui-in) .pbar{pointer-events:none}.kv:not(.ui-in) .hud{transform:translateX(28px);opacity:0}.kv:not(.ui-in) .pbar{transform:translateY(-18px);opacity:0}.kv.bye:not(.ui-in) .hud{transform:none;opacity:1}.kv .lbl.core{transition:opacity .6s var(--ease-out)}@keyframes kv-blink{50%{opacity:.2}}@keyframes kv-scan{to{top:100%}}@media (prefers-reduced-motion:reduce){.kv .bar i,.kv .scan{animation:none}.kv .drawer{transition:none}}@media (max-height:560px),(max-width:980px){.kv .left{display:none}.kv .pbar{display:grid;grid-template-columns:88px minmax(0,1fr) 88px;gap:8px;align-items:center;position:fixed;top:var(--top);left:var(--gut-l);right:var(--gut-r);padding:6px;border-radius:999px}.kv .pgrp{display:flex;gap:4px}.kv .pgrp.end{justify-content:flex-end}.kv .pbar .back{opacity:0;pointer-events:none}.kv.focused .pbar .back{opacity:1;pointer-events:auto}.kv .pbar h1{margin:0;text-align:center;font:400 17px var(--font-heading);letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kv .scrim{display:block;position:fixed;inset:0;background:rgba(5,7,10,.5);opacity:0;pointer-events:none;transition:opacity .4s var(--ease-out);z-index:15}.kv .drawer{display:flex;flex-direction:column;position:fixed;z-index:16;top:0;bottom:0;left:0;width:min(330px,86vw);padding:calc(env(safe-area-inset-top,0px) + 14px) 10px calc(env(safe-area-inset-bottom,0px) + 14px) max(10px,env(safe-area-inset-left,0px));border-radius:0 1.5rem 1.5rem 0;transform:translateX(-105%);transition:transform .45s var(--ease-out)}.kv .drawer .dhead{display:flex;justify-content:space-between;align-items:center;padding:4px 6px 8px 10px;font:400 16px var(--font-heading)}.kv .drawer .skills{flex:1;padding:0;background:none;border:0;box-shadow:none;backdrop-filter:none}.kv .drawer .row{padding:10px}.kv.nav-open .drawer{transform:none}.kv.nav-open .scrim{opacity:1;pointer-events:auto}.kv .hud{top:auto;bottom:var(--bot);left:var(--gut-l);right:var(--gut-r);width:auto;grid-template-columns:128px minmax(0,1fr);gap:8px 12px;padding:10px 12px 12px;border-radius:1.25rem;align-items:start}.kv .bar{grid-column:1/-1}.kv .bar .face{display:grid}.kv .screen{grid-row:2/span 2}.kv .read,.kv .story ul,.kv .wave{display:none}.kv .story h2,.kv .sub{font-size:15px}.kv .sub{text-align:left;min-height:3.9em}.kv:not(.ui-in) .hud{transform:translateY(28px)}.kv .hud.noface{grid-template-columns:minmax(0,1fr) auto;align-items:center;padding:10px 10px 10px 16px}.kv .hud.noface .bar{display:contents}.kv .hud.noface .bar>span,.kv .hud.noface .screen,.kv .hud.noface .story{display:none}.kv .hud.noface .sub{order:1;min-height:2.7em;display:flex;align-items:center}.kv .hud.noface .face{order:2}.kv .hud.noface .face svg{transform:rotate(180deg)}}@media (max-height:560px) and (min-width:600px){.kv .hud{top:calc(env(safe-area-inset-top,0px) + 66px);bottom:calc(env(safe-area-inset-bottom,0px) + 10px);left:auto;width:250px;grid-template-columns:96px minmax(0,1fr);overflow:auto}.kv .sub{font-size:13px;min-height:0}}