.ke-exit{position:fixed;inset:0;width:100vw;height:100%;height:100dvh;max-width:none;max-height:none;margin:0;padding:90px 0 max(42px,calc(env(safe-area-inset-bottom) + 24px));border:0;overflow:auto;overscroll-behavior:contain;background:#080809;color:#f2f1ed;font-family:inherit;isolation:isolate;box-sizing:border-box}
.ke-exit::backdrop{background:#080809}.ke-exit[open]{display:flex;flex-direction:column;align-items:center}
.ke-scene,.ke-world,.ke-fallback,.ke-lens{position:absolute;inset:0}.ke-scene{position:fixed;right:auto;width:100vw;touch-action:none;overflow:hidden}
.ke-world{z-index:1;opacity:0;transition:opacity 1.1s ease;pointer-events:none}.ke-exit[data-rendered=true] .ke-world{opacity:1}.ke-world-canvas{display:block;width:100%;height:100%}
.ke-lens{z-index:2;pointer-events:none;background:radial-gradient(ellipse at 50% 35%,transparent 28%,#05050666 88%),linear-gradient(0deg,#080809 0%,#080809dd 12%,transparent 42%)}
.ke-top{position:fixed;z-index:3;top:max(24px,env(safe-area-inset-top));left:max(32px,env(safe-area-inset-left));width:calc(100vw - max(32px,env(safe-area-inset-left)) - max(32px,env(safe-area-inset-right)));display:flex;align-items:center;justify-content:space-between;gap:16px;pointer-events:none}.ke-top>*{pointer-events:auto}
.ke-brand{font-size:17px;font-weight:650;letter-spacing:.03em;color:#d7d5cf}.ke-close{display:grid;place-items:center;width:44px;height:44px;flex-shrink:0;background:#11111288;border:1px solid #d5dad225;border-radius:50%;color:#e8e7e2;cursor:pointer}.ke-close svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6}
.ke-controls{position:relative;flex-shrink:0;margin:auto auto 0;width:min(460px,calc(100% - 48px));text-align:center;z-index:3}
.ke-controls h2{font-size:clamp(28px,3vw,36px);line-height:1.18;letter-spacing:-.035em;font-weight:600;margin:0 0 12px;text-wrap:balance}.ke-controls p{font-size:15px;line-height:1.5;color:#bbb9b2;margin:0 0 24px;text-wrap:pretty}
.ke-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px}.ke-actions button{min-width:0;min-height:52px;padding:12px 18px;border-radius:12px;display:flex;justify-content:center;align-items:center;gap:10px;font-family:inherit;font-size:16px;font-weight:600;line-height:1.25;cursor:pointer;border:1px solid #aaa69b55;color:#edeae3;background:#242321ba;transition:background .2s,border-color .2s,box-shadow .3s}
.ke-actions button:first-child{background:#e9e7e0;color:#1c1b18;border-color:#e9e7e0}.ke-actions button svg{width:19px;height:19px;flex-shrink:0;stroke:currentColor;fill:none;stroke-width:1.5}.ke-actions button:active{background:#403e38}.ke-actions button:first-child:active{background:#ccc9c0}
.ke-help{display:flex;justify-content:center;align-items:center;min-height:22px;margin-top:12px;color:#c0bdb4;font-size:12px}.ke-explore{position:fixed;right:max(86px,calc(env(safe-area-inset-right) + 68px));top:max(24px,env(safe-area-inset-top));display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid #d5dad225;border-radius:50%;background:#11111288;color:#d0ccc2;cursor:pointer}.ke-explore svg{width:21px;height:21px;stroke:currentColor;stroke-width:1.5;fill:none}
.ke-exit button{touch-action:manipulation}.ke-exit button:focus-visible{outline:2px solid #f1eee5;outline-offset:4px}.ke-exit button:disabled{cursor:default;opacity:.6}
.ke-exit[data-phase=confirm] [data-ke-confirm]{border-color:#d5cdb7b3;background:#38342ba8;box-shadow:0 0 26px #e7d6ab0c}
.ke-fallback{overflow:hidden;pointer-events:none;background:radial-gradient(ellipse at 50% 34%,#20202180 0%,#10101155 34%,#080809 72%)}
.ke-exit[data-phase=enter]{animation:ke-arrive .5s ease both}.ke-exit[data-phase=cancel]{animation:ke-leave .36s ease both}.ke-exit[data-phase=success] .ke-actions{grid-template-columns:1fr}
@keyframes ke-arrive{from{opacity:0}to{opacity:1}}@keyframes ke-leave{from{opacity:1}to{opacity:0}}
@media(hover:hover) and (pointer:fine){.ke-close:hover,.ke-explore:hover{background:#3a3833aa}.ke-actions button:first-child:hover{background:#fff}}
@media(max-width:600px){.ke-top{left:max(20px,env(safe-area-inset-left));top:max(16px,env(safe-area-inset-top));width:calc(100vw - max(20px,env(safe-area-inset-left)) - max(20px,env(safe-area-inset-right)))}.ke-exit{padding-bottom:max(26px,calc(env(safe-area-inset-bottom) + 16px))}.ke-controls{width:calc(100% - 40px)}.ke-controls h2{font-size:29px}.ke-controls p{font-size:14px;margin-bottom:20px}.ke-actions{gap:10px}.ke-actions button{padding:13px 10px;font-size:15px}.ke-actions button svg{display:none}.ke-explore{right:max(74px,calc(env(safe-area-inset-right) + 68px));top:max(16px,env(safe-area-inset-top))}.ke-brand{font-size:16px}}
@media(max-height:560px){.ke-exit{padding-top:78px;padding-bottom:14px}.ke-controls{width:min(410px,52%);margin:auto 24px 0 auto}.ke-controls h2{font-size:26px}.ke-controls p{font-size:14px;margin-bottom:15px}.ke-help{min-height:18px;margin-top:8px}.ke-explore,.ke-top{top:14px}.ke-lens{background:linear-gradient(90deg,transparent 18%,#08080955 50%,#080809dd 100%)}}
@media(max-height:420px) and (max-width:600px){.ke-controls{width:calc(100% - 40px);margin:auto 20px 0}.ke-exit{padding-top:78px}}
.ke-exit[data-reduced=true]{animation:none}.ke-exit[data-reduced=true] *{transition:none!important;animation:none!important}.ke-exit[data-reduced=true] .ke-explore{display:none}
/* File inputs have a browser-defined intrinsic width; constrain the upload row. */
body[data-ko-route="/developers"] label:has(input[type=file]){min-width:0;max-width:100%}
body[data-ko-route="/developers"] input[type=file]{min-width:0;max-width:100%;width:100%}
.ko-catalog-notice{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;margin:0 0 20px;border:1px solid #59514a;border-radius:12px;background:#211d1a;color:#e6ddd2;font-size:14px;line-height:1.5}.ko-catalog-notice button{flex-shrink:0;min-height:44px;padding:8px 14px;border:1px solid #72665a;border-radius:9px;color:#f0e9df;touch-action:manipulation}.ko-catalog-notice button:focus-visible{outline:2px solid #eee;outline-offset:3px}@media(max-width:480px){.ko-catalog-notice{align-items:flex-start;flex-direction:column;gap:8px}}


.ko-logo-body{transition:none!important;animation:none!important}.ko-logo-body:focus-visible{outline:2px solid #eee;outline-offset:5px;border-radius:14px}.ko-logo-body:active{cursor:grabbing!important}
body[data-ko-route="/developers"] button.bg-dark-700{color:#d4d4d7!important}body[data-ko-route="/developers"] a[href="/api/docs"]{text-decoration:underline;text-underline-offset:3px}.ko-mobile-portal{display:block!important}

/* Existing door composition; button intent only retargets reversible transitions. */
.ke-world{transition:opacity .38s ease}.ke-scene{z-index:0;touch-action:auto;pointer-events:none}
.ke-exit{background:#08090a;padding-top:32px}.ke-top,.ke-explore{display:none}
.ke-controls{margin:auto auto 0}.ke-controls h2{font-size:clamp(27px,3vw,34px)}.ke-controls p{color:#b9b9bb}
.ke-exit[data-phase=enter]{animation:ke-arrive .32s ease both}.ke-exit[data-phase=cancel]{animation:ke-leave .26s ease both}
@media(max-width:600px){}
@media(max-height:560px){.ke-exit{padding-top:32px}.ke-controls{width:min(410px,52%);margin:auto 24px 0 auto}}
@media(max-height:420px) and (max-width:600px){.ke-controls{width:calc(100% - 40px);margin:auto 20px 0}}
.ke-exit[data-reduced=true],.ke-exit[data-reduced=true] *,.ke-exit[data-reduced=true] ::before,.ke-exit[data-reduced=true] ::after{animation:none!important;transition:none!important}

/* The leaf pivots on the hinge line. The fixed stop masks the seam; light stays behind solid surfaces. */
.ke-exit{--ke-door-left:50%;--ke-door-top:12vh;--ke-door-width:clamp(124px,12vw,176px);--ke-door-height:calc(var(--ke-door-width)*2.16)}
.ke-portal{position:absolute;left:var(--ke-door-left);top:var(--ke-door-top);width:var(--ke-door-width);height:var(--ke-door-height);transform:translateX(-50%);perspective:1050px;perspective-origin:50% 45%;transform-style:preserve-3d;background:transparent;box-shadow:0 12px 44px #0009;isolation:auto}
.ke-portal-space{position:absolute;inset:0;background:linear-gradient(90deg,#53462e 0%,#b5a077 57%,#ead7b1 94%,#c5aa7d);transform:translateZ(-6px);opacity:.46;transition:opacity .72s ease;box-shadow:none}
.ke-portal-door{position:absolute;inset:0;box-sizing:border-box;transform-origin:0 50% 0;transform:rotateY(var(--ke-angle,0deg));transform-style:preserve-3d;background:repeating-linear-gradient(90deg,#ffffff02 0 1px,transparent 1px 4px),linear-gradient(105deg,#302f2b 0%,#242420 27%,#22221f 72%,#292823 100%);border:1px solid #3c3a33;box-shadow:inset 1px 0 #ffffff0b,inset -1px 0 #11110f;opacity:1;backface-visibility:visible}
.ke-portal-door::before{content:"";position:absolute;right:-5px;top:-1px;bottom:-1px;width:5px;background:linear-gradient(90deg,#73654c,#302e26 50%,#151511);transform-origin:left center;transform:rotateY(90deg);backface-visibility:visible}
.ke-portal-door::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,transparent 68%,#e9c99208 94%,#eed4a33b);opacity:0;transition:opacity .72s ease}
.ke-door-inset{position:absolute;inset:7% 10% 9%;border:1px solid #151512;box-shadow:0 1px 0 #ffffff07,inset 0 1px 2px #0005;background:linear-gradient(105deg,#0000000a,transparent 45%,#ffffff02)}
.ke-door-handle{position:absolute;right:9%;top:52%;width:8px;height:8px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#94928b,#53524c 50%,#24231f 72%);box-shadow:0 1px 2px #0009;transform:translateZ(2px)}
.ke-door-handle i{position:absolute;right:3px;top:2px;width:calc(var(--ke-door-width)*.13);height:3px;border-radius:2px 1px 1px 2px;background:linear-gradient(#b6b3a9,#77766d 42%,#393a34 65%,#77766c);box-shadow:-1px 3px 3px #000a;transform:translateZ(2px)}
.ke-door-lock{position:absolute;right:calc(9% + 2px);top:57%;width:4px;height:7px;border-radius:2px;background:linear-gradient(90deg,#25251f,#7a776b,#36362d);box-shadow:0 1px 2px #0007;transform:translateZ(1px)}
.ke-door-lock::after{content:"";position:absolute;inset:2px 1px;background:#141510;border-radius:1px}
.ke-portal-edge{position:absolute;inset:-9px -8px 0;border-style:solid;border-width:9px 8px 0;border-color:#46433a #34332d #34332d #34342e;box-shadow:-1px 0 0 #65625655,1px 0 0 #080806,inset 0 1px 1px #0008;transform:translateZ(3px);pointer-events:none}
.ke-portal-edge::before{content:"";position:absolute;left:-1px;top:-1px;bottom:0;width:3px;background:linear-gradient(90deg,#414139,#22231e);box-shadow:1px 0 1px #0008}
.ke-portal-edge::after{content:"";position:absolute;right:-1px;top:-1px;bottom:0;width:2px;background:#292820;box-shadow:-1px 0 #99846730;transition:box-shadow .72s ease}
.ke-door-hinge{position:absolute;left:-2px;top:18%;width:4px;height:13px;border-radius:1px;background:linear-gradient(90deg,#24251f,#727166 47%,#45453c 70%,#262720);box-shadow:1px 1px 1px #0006;transform:translateZ(4px)}
.ke-door-hinge:nth-last-child(2){top:49%}.ke-door-hinge:last-child{top:81%}
/* One aperture drives light, fog and the leaf. The near threshold is sharp;
   the widening floor penumbra softens with distance, without a floating halo. */
.ke-portal-space{opacity:1;background:linear-gradient(90deg,#524e43,#b5a98c 55%,#f0e2c3 94%,#b8aa8a);transition:none}
.ke-portal-door::after{opacity:var(--ke-energy,0);transition:none;background:linear-gradient(90deg,transparent 76%,#f6dfaa08 94%,#ffe9b95c)}
.ke-portal-edge::after{box-shadow:-1px 0 #e8d6ab45;transition:none}
/* The opaque door/frame occlude both the floor beam and WebGL scattering.
   Keep the fallback unstacked: its solid portal must sit above the fog canvas. */
.ke-portal{z-index:2}.ke-lens{z-index:3}
.ke-door-handle i{transform-origin:calc(100% - 1px) 50%;transform:translateZ(2px) rotate(var(--ke-handle-angle,0deg));will-change:transform}
.ke-halo{position:absolute;left:calc(var(--ke-door-left) + var(--ke-door-width)*.35);top:calc(var(--ke-door-top) + var(--ke-door-height)*.6);width:clamp(250px,40vw,620px);height:calc(var(--ke-door-height)*1.8);background:radial-gradient(ellipse,#f3d49b12, #ddbf8106 35%,transparent 67%);opacity:var(--ke-energy,0);transform:translate(-50%,-50%)}
.ke-floor-light{position:absolute;left:calc(var(--ke-door-left) - var(--ke-door-width)*.5);top:calc(var(--ke-door-top) + var(--ke-door-height));width:var(--ke-door-width);height:clamp(130px,25vh,310px);opacity:var(--ke-energy,0);transform:none;filter:none}
.ke-floor-light::before{content:"";position:absolute;inset:0 -105%;clip-path:polygon(calc(33.87% + var(--ke-gap-left,100%)*.3226) 0,66.13% 0,100% 100%,var(--ke-beam-left,42%) 100%);background:linear-gradient(180deg,#fce9bf82 0%,#dec59a35 12%,#c6aa7a14 48%,transparent 98%);filter:blur(2px);mask-image:linear-gradient(#000, #000 18%,#000a 55%,transparent)}
.ke-floor-light::after{content:"";position:absolute;left:var(--ke-gap-left,100%);right:0;top:-2px;height:3px;background:#f1dfbcb0;box-shadow:0 2px 7px #f7dda449;filter:blur(.6px)}
.ke-exit[data-phase=enter] .ke-portal{animation:ke-door-visible .6s ease both}
@keyframes ke-door-visible{from{opacity:0}to{opacity:1}}
@media(max-width:600px){.ke-exit{--ke-door-width:126px;--ke-door-top:13vh}}
@media(max-height:560px){.ke-exit{--ke-door-left:24%;--ke-door-top:35px;--ke-door-width:98px}}
@media(max-height:420px) and (max-width:600px){.ke-portal{opacity:.2}}
