:root{--bg:#120a4a;--ink:#f6f3ff;--muted:#b9acf0;--glass:#1c10549e;--line:#ffffff29;--gold:#ffd166;--pink:#ff6b9d;--cyan:#4cc9f0;--green:#06d6a0;--c:#4cc9f0;--radius:22px;--mono:"JetBrains Mono", ui-monospace, Menlo, Consolas, monospace}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:Fredoka,system-ui,sans-serif;font-size:17px;line-height:1.5}code,pre,textarea,input{font-family:var(--mono)}code{background:#ffffff1f;border-radius:6px;padding:1px 6px;font-size:.88em}a{color:inherit}h1,h2,h3,h4{margin:0 0 8px;line-height:1.15}p{margin:0 0 12px}.backdrop{z-index:0;position:fixed;inset:0}.backdrop canvas{display:block}.glass{background:var(--glass);-webkit-backdrop-filter:blur(14px)saturate(140%);border:1.5px solid var(--line);border-radius:var(--radius);box-shadow:0 10px 40px #08002873}.topbar{z-index:50;pointer-events:none;justify-content:space-between;align-items:center;gap:12px;padding:12px 18px;display:flex;position:fixed;top:0;left:0;right:0}.topbar:before{content:"";z-index:-1;pointer-events:none;background:linear-gradient(#0e0634e6 55%,#0e063400);position:absolute;inset:0 0 -18px}.topbar>*{pointer-events:auto}.brand{align-items:center;gap:10px;font-size:1.25rem;font-weight:700;line-height:1;text-decoration:none;display:flex}.brand small{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin-top:3px;font-size:.72rem;font-weight:500;display:block}.logo{background:linear-gradient(135deg,#ff6b9d,#ffd166);border-radius:14px;place-items:center;width:44px;height:44px;font-size:24px;display:grid;transform:rotate(-6deg);box-shadow:0 6px 20px #ff6b9d80}.stats{align-items:center;gap:10px;display:flex}.lvl{color:#3b1d00;background:linear-gradient(135deg,#ffd166,#ff9f1c);border-radius:999px;padding:5px 12px;font-weight:700;box-shadow:0 4px 14px #ff9f1c80}.xpbar{border:1.5px solid var(--line);background:#0006;border-radius:999px;width:150px;height:26px;position:relative;overflow:hidden}.xpfill{background:linear-gradient(90deg,#06d6a0,#4cc9f0);position:absolute;inset:0 auto 0 0;box-shadow:0 0 14px #06d6a0}.xpbar span{text-shadow:0 1px 2px #000;place-items:center;font-size:.78rem;font-weight:600;display:grid;position:absolute;inset:0}.icon-btn{border:1.5px solid var(--line);background:var(--glass);width:40px;height:40px;color:inherit;cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:12px;font-size:18px}.icon-btn:hover{transform:translateY(-2px)}.btn{font:inherit;cursor:pointer;color:#2a0f5c;background:linear-gradient(#ffe08a,#ffd166);border:0;border-radius:14px;padding:10px 20px;font-weight:600;text-decoration:none;transition:transform .12s,box-shadow .12s,filter .12s;display:inline-block;box-shadow:0 5px #c9962b,0 10px 22px #00000059}.btn:hover:not(:disabled){filter:brightness(1.05);transform:translateY(-2px)}.btn:active:not(:disabled){transform:translateY(3px);box-shadow:0 2px #c9962b}.btn:disabled{opacity:.45;cursor:default}.btn.ghost{color:var(--ink);background:#ffffff1f;box-shadow:0 5px #00000059}.btn.small{padding:5px 12px;font-size:.85rem}.btn.go{background:linear-gradient(#7df0c9,#06d6a0);box-shadow:0 5px #04906c,0 10px 22px #00000059}.row{flex-wrap:wrap;gap:12px;margin:14px 0;display:flex}.chip{font:inherit;cursor:pointer;border:1.5px solid var(--line);color:var(--ink);background:#ffffff14;border-radius:999px;padding:6px 16px;font-weight:700;transition:all .15s}.chip:hover{background:#ffffff2e}.chip.on{background:var(--c);color:#1b1464;box-shadow:0 0 18px var(--c);border-color:#0000}.chip.small{font-size:.78rem;font-weight:500;font-family:var(--mono);padding:3px 10px}.m-GET{--c:#06d6a0}.m-POST{--c:#ffd166}.m-DELETE{--c:#ff6b9d}.map-hint{z-index:10;text-align:center;pointer-events:none;padding:0 20px;position:fixed;bottom:5vh;left:0;right:0}.map-hint h1{text-shadow:0 4px 24px #0009;font-size:clamp(1.5rem,3.6vw,2.6rem)}.map-hint p{color:var(--muted);text-shadow:0 2px 12px #000000b3}.island-label{border:1.5px solid color-mix(in srgb, var(--c) 70%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);white-space:nowrap;background:#140846b8;border-radius:999px;align-items:center;gap:8px;padding:6px 14px 6px 8px;font-family:Fredoka,sans-serif;transition:transform .2s,box-shadow .2s;display:flex}.island-label .num{background:var(--c);border-radius:50%;place-items:center;width:32px;height:32px;font-size:17px;display:grid}.island-label.soon .num{background:#6c6690}.island-label .txt{text-align:left;flex-direction:column;line-height:1.1;display:flex}.island-label b{color:#fff;font-size:.95rem}.island-label i{color:var(--muted);font-size:.72rem;font-style:normal}.island-label.hot{box-shadow:0 0 26px var(--c);transform:scale(1.12)translateY(-4px)}.node-label{border:1.5px solid var(--c);white-space:nowrap;color:#fff;background:#140846c7;border-radius:999px;padding:5px 14px;font-family:Fredoka,sans-serif;font-size:.9rem;font-weight:600}.world-panel{z-index:20;width:min(420px,100vw - 32px);max-height:calc(100vh - 110px);padding:22px;position:fixed;top:84px;right:22px;overflow:auto}.world-panel h2{font-size:1.8rem}.world-panel p{color:#ddd5ff}.back{color:var(--muted);font-size:.9rem;font-weight:500;text-decoration:none}.back:hover{color:#fff}.w-emoji{filter:drop-shadow(0 0 16px var(--c));margin:8px 0 0;font-size:44px}.eyebrow{text-transform:uppercase;letter-spacing:.12em;color:var(--c);margin-bottom:6px;font-size:.72rem;font-weight:600}.lesson-list{gap:10px;margin:16px 0 0;padding:0;list-style:none;display:grid}.lesson-link{border:1.5px solid var(--line);background:#ffffff14;border-radius:16px;align-items:center;gap:12px;padding:12px 14px;text-decoration:none;transition:all .15s;display:flex}a.lesson-link:hover{border-color:var(--c);background:#ffffff2b;transform:translate(4px)}.lesson-link.locked{opacity:.55}.lt{flex-direction:column;flex:1;line-height:1.2;display:flex}.lt i{color:var(--muted);font-size:.8rem;font-style:normal}.badge{background:var(--c);color:#1b1464;border-radius:50%;flex:none;place-items:center;width:34px;height:34px;font-weight:700;display:grid}.badge.done{background:var(--green)}.xp{color:var(--gold);font-size:.78rem;font-weight:700}.lesson-page{z-index:30;background:radial-gradient(1200px 700px at 80% -10%,#c77dff47,#0000),radial-gradient(900px 600px at 0 110%,#ff6b9d33,#0000),linear-gradient(#170c5a,#0f0838);min-height:100vh;padding:92px 24px 110px;position:relative}.lesson-head{max-width:1240px;margin:0 auto 18px}.lesson-head h1{font-size:clamp(1.8rem,4vw,2.8rem)}.lesson-grid{grid-template-columns:1.25fr 1fr;align-items:start;gap:22px;max-width:1240px;margin:0 auto;display:grid}.lesson-grid.wide{grid-template-columns:1fr 1fr}.stage-3d{height:min(66vh,600px);min-height:380px;position:relative;overflow:hidden}.stage-3d canvas{border-radius:var(--radius)}.stage-3d:before,.backdrop:before{content:"Warming up the 3D engine…";color:var(--muted);letter-spacing:.04em;place-items:center;font-weight:500;display:grid;position:absolute;inset:0}.dots{z-index:3;justify-content:center;gap:10px;display:flex;position:absolute;bottom:14px;left:0;right:0}.dots button{cursor:pointer;background:0 0;border:2px solid #fff9;border-radius:50%;width:14px;height:14px;padding:0;transition:all .2s}.dots button.seen{background:#ffffff73}.dots button.on{background:var(--gold);border-color:var(--gold);box-shadow:0 0 12px var(--gold);transform:scale(1.35)}.lesson-text{min-width:0}.lesson-text h2{font-size:1.7rem}.lesson-text p{color:#e3dcff}.tip{margin-top:14px;font-size:.92rem;color:var(--muted)!important}.hint{font-size:.92rem;color:var(--gold)!important}.wait{color:var(--muted);align-items:center;gap:10px;padding:10px 0;display:flex}.pulse{background:var(--cyan);border-radius:50%;width:12px;height:12px;animation:.9s infinite pulse}@keyframes pulse{50%{opacity:.3;transform:scale(1.8)}}.code{border:1.5px solid var(--line);color:#b8f3ff;white-space:pre-wrap;word-break:break-word;background:#060220bf;border-radius:14px;margin:10px 0;padding:12px 16px;font-size:.86rem;line-height:1.55;overflow:auto}.code-input{border:2px solid var(--line);color:#fff;resize:vertical;background:#060220bf;border-radius:14px;outline:none;width:100%;padding:12px 16px;font-size:.9rem;line-height:1.5}.code-input.tall{min-height:190px}.code-input:focus{border-color:var(--cyan)}.code-input.bad{border-color:var(--pink)}.code-input.good{border-color:var(--green)}.statusbar{word-break:break-word;border-radius:12px;margin:8px 0;padding:8px 14px;font-size:.88rem}.statusbar.bad{background:#ff6b9d29}.statusbar.good{background:#06d6a029}.reqline{align-items:center;gap:10px;margin:10px 0;padding:8px 8px 8px 14px;display:flex}.reqline input{color:#fff;background:0 0;border:0;outline:none;flex:1;min-width:0;font-size:1rem}.verb{color:var(--c);font-weight:700;font-family:var(--mono)}.ideas{flex-wrap:wrap;align-items:center;gap:6px;margin:10px 0;display:flex}.ideas span{color:var(--muted);margin-right:4px;font-size:.85rem}.peek{color:var(--muted);margin-top:12px}.peek summary{cursor:pointer}.methods{gap:8px;margin-top:14px;display:flex}.response{border-color:color-mix(in srgb, var(--c) 70%, transparent);min-height:190px;box-shadow:0 0 40px color-mix(in srgb, var(--c) 28%, transparent);margin:14px 0;padding:18px;transition:all .3s}.status{align-items:baseline;gap:12px;display:flex}.status .big{font-size:38px}.status .num{color:var(--c);text-shadow:0 0 24px var(--c);font-size:3rem;font-weight:700;line-height:1}.status .st{font-size:1.15rem;font-weight:600}.fam{margin:4px 0 0;font-weight:500;color:var(--c)!important}.missions{gap:8px;margin:4px 0 16px;padding:0;list-style:none;display:grid}.mrow{align-items:center;gap:12px;display:flex}.mlabel{flex:1}.hint-btn{font:inherit;cursor:pointer;color:var(--gold);background:#ffd16624;border:1.5px solid #ffd166b3;border-radius:999px;flex:none;padding:3px 12px;font-size:.8rem;font-weight:600;transition:all .15s}.hint-btn:hover{background:#ffd1664d}.hint-box{border-left:4px solid var(--gold);background:#ffd1661a;border-radius:12px;margin:10px 0 2px 36px;padding:10px 14px;font-size:.92rem}.hint-box p{margin:0 0 6px;color:#fff0c4!important}.hint-box .code{margin:6px 0;font-size:.8rem}.no-xp{color:var(--muted);margin-top:6px;display:block}.done-bar{flex-wrap:wrap;justify-content:center}.cheat{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:6px 16px;margin:10px 0;padding:12px 16px;font-size:.88rem;display:grid}.cheat div{align-items:baseline;gap:8px;display:flex}.cheat b{min-width:64px}.cheat code{color:#b8f3ff;background:0 0;padding:0}.missions li{border:1.5px solid var(--line);background:#ffffff12;border-radius:14px;padding:9px 14px;font-size:.95rem;transition:all .3s;display:block}.missions li.done{border-color:var(--green);background:#06d6a02e}.check{border:2px solid var(--line);color:#04382a;border-radius:8px;flex:none;place-items:center;width:24px;height:24px;font-weight:700;display:grid}.done .check{background:var(--green);border-color:var(--green)}.tree{min-height:160px;max-height:360px;padding:14px 16px;overflow:auto}.tnode{margin-left:calc(var(--d) * 0px)}.tkids{border-left:2px dashed var(--line);margin-left:10px;padding-left:14px}.trow{flex-wrap:wrap;align-items:center;gap:8px;padding:3px 0;font-size:.9rem;display:flex}.tkey{font-family:var(--mono);color:#fff;font-weight:600}.tkey:after{content:":";color:var(--muted)}.tchip{text-transform:uppercase;letter-spacing:.06em;color:#1b1464;border-radius:999px;padding:1px 8px;font-size:.66rem;font-weight:700}.tval{font-family:var(--mono)}.tcount{color:var(--muted);font-size:.8rem}.t-string{background:#06d6a0}.tval.t-string{color:#7df0c9;background:0 0}.t-number{background:#ffd166}.tval.t-number{color:#ffe08a;background:0 0}.t-boolean{background:#ff6b9d}.tval.t-boolean{color:#ff9bbd;background:0 0}.t-null{background:#aaa}.tval.t-null{color:#bbb;background:0 0}.t-array{background:#4cc9f0}.t-object{background:#c77dff}.gems{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:14px 0 10px;display:grid}.gem{font:inherit;cursor:pointer;border:1.5px solid var(--line);color:var(--ink);background:#ffffff12;border-radius:16px;padding:12px 10px;transition:all .15s;position:relative}.gem code{background:0 0;font-size:.82rem}.gem:hover{background:#ffffff26;transform:translateY(-3px)}.gem.got{border-color:#ffd16699}.gem.on{background:var(--gold);color:#2a0f5c;box-shadow:0 0 22px var(--gold)}.gem .mini{font-size:16px;position:absolute;top:-8px;right:-6px}.progressline{background:#ffffff1f;border-radius:999px;height:8px;overflow:hidden}.progressline div{background:linear-gradient(90deg,#ffd166,#ff6b9d);height:100%}.pipeline{border-color:color-mix(in srgb, var(--c) 70%, transparent);min-height:360px;box-shadow:0 0 40px color-mix(in srgb, var(--c) 25%, transparent);padding:18px;transition:all .3s}.stepline span{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:.75rem}.arrow{text-align:center;color:var(--c);font-weight:600;font-family:var(--mono);margin:2px 0;font-size:.85rem}.verdict{color:var(--c);margin-top:6px;font-size:1.5rem;font-weight:700}.quiz{margin:20px 0 6px;padding:18px}.quiz.ok{border-color:var(--green)}.q-tag{color:var(--gold);letter-spacing:.1em;text-transform:uppercase;font-size:.78rem;font-weight:700}.opts{gap:8px;margin:12px 0 6px;display:grid}.opt{font:inherit;text-align:left;cursor:pointer;border:1.5px solid var(--line);color:var(--ink);background:#ffffff12;border-radius:14px;padding:10px 14px;transition:all .15s}.opt:hover:not(:disabled){background:#ffffff2b;transform:translate(4px)}.opt.right{border-color:var(--green);background:#06d6a040}.opt.wrong{border-color:var(--pink);background:#ff6b9d40;animation:.35s shake}.opt.dim{opacity:.45}.explain{margin:8px 0 0;color:#b8ffe9!important}@keyframes shake{25%{transform:translate(-6px)}75%{transform:translate(6px)}}.done-bar{z-index:60;white-space:nowrap;align-items:center;gap:18px;padding:10px 14px 10px 22px;font-weight:600;display:flex;position:fixed;bottom:20px;left:50%;translate:-50%}.done-bar .btn{padding:8px 18px}.modal-bg{z-index:100;background:#08002899;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:#1c1054f2;width:100%;max-width:460px;padding:24px}.msg{color:var(--gold)}.toast{z-index:120;color:var(--gold);border-color:var(--gold);padding:12px 26px;font-size:1.2rem;font-weight:700;position:fixed;top:80px;left:50%;translate:-50%;box-shadow:0 0 40px #ffd16680}.confetti{z-index:110;pointer-events:none;position:fixed;inset:0;overflow:hidden}.confetti i{border-radius:2px;position:absolute;top:0}.lesson-stack{gap:22px;max-width:1240px;margin:0 auto;display:grid}.lesson-stack .lesson-grid{width:100%}.stage-3d.tall{height:min(62vh,560px);min-height:380px}.legend{z-index:3;flex-wrap:wrap;gap:6px;display:flex;position:absolute;bottom:12px;left:14px}.legend i{border:1.5px solid var(--c);background:#140846b3;border-radius:999px;padding:2px 10px;font-size:.72rem;font-style:normal;font-weight:600}.tree-label{border:1.5px solid var(--c);font-family:var(--mono);color:#fff;white-space:nowrap;background:#140846cc;border-radius:8px;padding:1px 9px;font-size:.76rem}.preview-frame{border:2px solid var(--line);background:#fff;border-radius:14px;width:100%;height:190px}.sliders{gap:6px;margin:10px 0;padding:12px 16px;display:grid}.sliders label{color:var(--c);grid-template-columns:72px 1fr 54px;align-items:center;gap:10px;font-weight:600;display:grid}.sliders input[type=range]{accent-color:var(--c);width:100%}.sliders output{font-family:var(--mono);color:#fff;text-align:right;font-size:.85rem}.check-row{cursor:pointer;align-items:center;gap:10px;color:var(--ink)!important;font-weight:500!important;display:flex!important}.check-row input{width:18px;height:18px;accent-color:var(--gold)}.totals{color:var(--muted);flex-wrap:wrap;gap:8px 18px;font-size:.9rem;display:flex}.totals b{color:var(--gold);font-family:var(--mono)}.preview-box{background:repeating-linear-gradient(45deg,#ffffff0d 0 8px,#0000 8px 16px);padding:12px;overflow:hidden}.m-layer{background:repeating-linear-gradient(45deg,#ff9f1c8c 0 6px,#ff9f1c4d 6px 12px);display:inline-block}.ev-wrap{margin:12px 0;padding:20px}.ev-box{border-radius:18px;padding:30px 22px 22px;position:relative}.ev-box.outer{background:#ff9f1c38;border:2px dashed #ff9f1c}.ev-box.middle{background:#c77dff40;border:2px dashed #c77dff;justify-content:center;padding-top:34px;display:flex}.ev-tag{font-family:var(--mono);color:#fff;opacity:.85;font-size:.72rem;position:absolute;top:6px;left:12px}.ev-btn{font:inherit;cursor:pointer;color:#06304a;background:linear-gradient(#8fe3fb,#4cc9f0);border:0;border-radius:14px;padding:12px 26px;font-weight:700}.evlog{align-content:start;gap:4px;min-height:120px;margin:8px 0;padding:12px 16px;font-size:.92rem;list-style:none;display:grid}.evlog li.capture b{color:var(--cyan)}.evlog li.bubble b{color:var(--gold)}.evlog em{color:var(--pink);font-size:.85rem;font-style:normal}.sandbox{color:#241b4b;background:#fff;border-radius:16px;margin:10px 0;padding:14px 18px}.sandbox h4{margin:0 0 6px;transition:all .3s}.sandbox h4.glow{color:#c2185b;text-shadow:0 0 14px #ff6b9d;letter-spacing:.06em}.sandbox ul{margin:0;padding-left:20px}.filechips{flex-wrap:wrap;gap:6px;margin:8px 0;display:flex}.review{gap:1px;margin:8px 0;padding:8px;display:grid}.rline{text-align:left;font:inherit;cursor:pointer;color:var(--ink);background:0 0;border:1.5px solid #0000;border-radius:8px;align-items:center;gap:10px;padding:3px 10px;display:flex}.rline:hover:not(:disabled){background:#ffffff14}.rline .ln{color:var(--muted);font-family:var(--mono);text-align:right;width:20px;font-size:.72rem}.rline code{white-space:pre-wrap;word-break:break-word;background:0 0;flex:1;padding:0;font-size:.78rem}.rline.flag{background:#ff6b8b1f;border-color:#ff6b8b}.rline.isbug{box-shadow:inset 4px 0 #ff4d6d}.case{margin:10px 0;padding:12px 16px}.case h4{color:var(--gold);margin:0 0 4px}.case p{margin:0}.clues{gap:8px;margin:8px 0;display:grid}.clue{padding:8px 14px}.clue pre{white-space:pre-wrap;word-break:break-word;font-family:var(--mono);color:#b8f3ff;margin:4px 0 0;font-size:.78rem}.choices{gap:8px;margin:8px 0;display:grid}.method{gap:3px;margin:0 0 12px;padding:10px 14px 10px 34px;font-size:.9rem;display:grid}.checks{gap:4px;margin:6px 0;display:grid}.meter{margin:12px 0;padding:10px 14px}.meter-top{justify-content:space-between;font-weight:600;display:flex}.promptbox{white-space:pre-wrap;max-height:300px;overflow:auto}.plan{gap:4px;margin:10px 0;padding:10px 14px 10px 34px;font-size:.9rem;display:grid}.plan li.warn{color:#ffb3c6}.order{gap:6px;margin:8px 0;display:grid}.ostep{text-align:left;font:inherit;cursor:pointer;border:1.5px solid var(--line);color:var(--ink);background:#ffffff12;border-radius:14px;align-items:center;gap:10px;padding:9px 14px;display:flex}.ostep:hover{background:#ffffff26}.ostep.ok{border-color:var(--green);background:#06d6a02e}.ostep b{background:var(--green);color:#04382a;border-radius:50%;flex:none;place-items:center;width:24px;height:24px;display:grid}.files{gap:4px;padding:8px 14px;display:grid}.file-row{align-items:center;gap:10px;display:flex}.file-row .grow,.dep-top .grow{flex:1}.fstate{color:var(--muted);background:#ffffff1a;border-radius:999px;padding:1px 9px;font-size:.72rem}.fstate.mod{color:var(--gold);background:#ffd16640}.fstate.staged{color:var(--green);background:#06d6a040}.term{height:230px;font-family:var(--mono);background:#060220cc;padding:10px 14px;font-size:.8rem;overflow:auto}.tl{white-space:pre-wrap;word-break:break-word;margin-bottom:4px}.tl.cmd{color:#fff;font-weight:600}.tl.cmd span{color:var(--green)}.tl.out{color:#b8f3ff}.tl.err{color:#ffb3c6}.tl.info{color:var(--muted)}.switches{gap:8px;margin:12px 0;display:grid}.switch{border:1.5px solid var(--line);cursor:pointer;background:#ffffff0f;border-radius:14px;align-items:center;gap:12px;padding:10px 14px;transition:all .15s;display:flex}.switch.on{border-color:var(--gold);background:#ffd1661f}.switch input{width:18px;height:18px;accent-color:var(--gold)}.switch span{line-height:1.25;display:grid}.switch small{color:var(--muted)}.sizebar{background:#ffffff1a;border-radius:999px;height:26px;margin:8px 0;position:relative;overflow:hidden}.sizebar>div{background:linear-gradient(90deg,#ffd166,#ff6b9d);height:100%}.sizebar span{text-shadow:0 1px 2px #000;place-items:center;font-size:.78rem;font-weight:600;display:grid;position:absolute;inset:0}.filelist{gap:2px;padding:8px 14px;font-size:.88rem;display:grid}.filelist div{justify-content:space-between;display:flex}.filelist b{font-family:var(--mono);color:var(--gold)}.cache{padding:12px 14px}.cache-grid{grid-template-columns:1fr 1fr;gap:10px;margin-top:8px;display:grid}.cache-grid div{background:#ffffff12;border-radius:12px;gap:2px;padding:8px 12px;font-size:.85rem;display:grid}.cache-grid code{margin-top:2px;display:block}.envs{gap:6px;padding:8px 14px;display:grid}.env-row{color:var(--muted);grid-template-columns:98px 1fr auto;align-items:center;gap:8px;font-weight:600;display:grid}.env-row input{font-family:var(--mono);border:1.5px solid var(--line);color:#fff;background:#060220bf;border-radius:10px;min-width:0;padding:6px 10px;font-size:.8rem}.browser{overflow:hidden}.browser .bar{color:var(--muted);background:#ffffff1a;align-items:center;gap:6px;padding:6px 12px;font-size:.75rem;display:flex}.browser .bar i{background:#ff6b9d;border-radius:50%;width:10px;height:10px}.browser .bar i:nth-child(2){background:#ffd166}.browser .bar i:nth-child(3){background:#06d6a0}.browser pre{white-space:pre-wrap;margin:0;padding:18px;font-family:Fredoka,sans-serif;font-size:1.15rem}.browser.ok pre{color:#7df0c9}.browser.bad{border-color:#ff4d6d}.browser.bad pre{color:#ffb3c6}.deps{gap:8px;margin-bottom:10px;display:grid}.dep{gap:4px;padding:10px 14px;display:grid}.dep.live{border-color:var(--green)}.dep.failed{opacity:.85;border-color:#ff4d6d}.dep-top{align-items:center;gap:10px;display:flex}.livebadge{color:var(--green);font-size:.75rem;font-style:normal;font-weight:700}.failbadge{color:#ff6b8b;font-size:.75rem;font-style:normal;font-weight:700}.three-stage{position:absolute;inset:0}.view-tag{z-index:3;border:1.5px solid var(--line);pointer-events:none;background:#140846c7;border-radius:999px;padding:3px 12px;font-size:.78rem;font-weight:600;position:absolute;top:12px}.view-tag.left{left:14px}.view-tag.right{right:14px}.statbox{gap:4px;margin:12px 0;padding:10px 16px;display:grid}.statbox div{justify-content:space-between;gap:12px;font-size:.88rem;display:flex}.statbox span{color:var(--muted)}.statbox b{font-family:var(--mono);color:var(--gold);text-align:right;min-width:80px}.glsl-log{white-space:pre-wrap;font-family:var(--mono);color:#ffb3c6;margin:6px 0 0;font-size:.75rem}.methods .grow{flex:1}.routes{gap:4px;padding:8px 14px;display:grid}.route-row{cursor:pointer;align-items:center;gap:10px;padding:4px 0;display:flex}.route-row .grow{flex:1}.route-row input{width:17px;height:17px;accent-color:var(--gold)}.row-label.danger{box-shadow:0 0 14px #ff2d55}.trace{gap:3px;margin:8px 0;padding:0;font-size:.88rem;list-style:none;display:grid}.trace li.no{color:#ffb3c6}.jwt{font-family:var(--mono);word-break:break-all;padding:12px 14px;font-size:.76rem;line-height:1.5}.jwt .h,.jwt-decoded .h{color:#ff6b9d}.jwt .p,.jwt-decoded .p{color:#c77dff}.jwt .s,.jwt-decoded .s{color:#4cc9f0}.jwt-decoded{gap:6px;margin-top:8px;display:grid}.jwt-decoded i{text-transform:uppercase;letter-spacing:.08em;font-size:.72rem;font-style:normal;font-weight:700}.secrets{gap:8px;margin:10px 0;padding:10px 14px;display:grid}.secret-row{border:1.5px solid #0000;border-radius:12px;gap:6px;padding:8px 10px;display:grid}.secret-row.flag{background:#ff4d6d1a;border-color:#ff4d6d}.s-name{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.s-name code{color:#fff;background:0 0;padding:0}.s-name small{color:var(--muted)}.s-opts{grid-template-columns:1fr 1fr;gap:8px;display:grid}.s-opts select{font-family:var(--mono);border:1.5px solid var(--line);color:#fff;background:#060220bf;border-radius:10px;width:100%;min-width:0;padding:6px 8px;font-size:.76rem}.bundle{margin:10px 0;padding:10px 14px}.statusbar ul{margin:6px 0 0;padding-left:20px}.muted{color:var(--muted);font-size:.88rem}.rcard{background:color-mix(in srgb, var(--c) 22%, #1a1050);border:2px solid var(--c);box-shadow:0 0 18px color-mix(in srgb, var(--c) 40%, transparent);border-radius:14px;align-items:center;gap:8px;padding:8px 14px;display:inline-flex}.rc-emoji{font-size:22px}.rpreview{align-items:center;min-height:90px;display:flex}.rlist{flex-wrap:wrap;gap:10px;display:flex}.rgroup{border:2px dashed var(--cyan);border-radius:16px;width:100%;padding:8px 14px 12px}.rgroup h5{color:var(--cyan);margin:0 0 8px}.cards-edit{gap:8px;padding:10px 14px;display:grid}.card-row{align-items:center;gap:10px;display:flex}.card-row input{min-width:0;font-family:var(--mono);border:1.5px solid var(--line);color:#fff;background:#060220bf;border-radius:10px;flex:1;padding:6px 10px}.shop{padding:14px}.shop h4{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.shop h4 small{color:var(--muted);font-weight:400}.shop-kids{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.cmp{border:1.5px solid var(--line);background:#ffffff12;border-radius:14px;padding:10px 14px}.cmp h4{flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 6px;font-size:.95rem;display:flex}.cmp .big{color:var(--gold);font-size:2rem;font-weight:700;line-height:1}.rbadge{font-family:var(--mono);color:#b8f3ff;background:#61dafb33;border-radius:999px;padding:1px 8px;font-size:.68rem;font-weight:400}.lifelog{min-height:180px;font-family:var(--mono);align-content:start;gap:3px;margin:0 0 8px;padding:12px 16px;font-size:.8rem;list-style:none;display:grid}.lifelog .mount{color:var(--green)}.lifelog .effect{color:var(--cyan)}.lifelog .cleanup{color:var(--gold)}.lifelog .unmount{color:#ff9bbd}.lifelog .warn{color:var(--pink);font-weight:600}.lifelog .info{color:var(--muted)}.row-label{border:1.5px solid var(--c);font-family:var(--mono);color:#fff;white-space:nowrap;background:#0c0430c7;border-radius:8px;padding:1px 10px;font-size:.74rem}.row-label.dim{opacity:.4}.rtable-wrap{max-width:100%;overflow:auto}.rtable{border-collapse:collapse;width:100%;font-family:var(--mono);font-size:.82rem}.rtable th{text-align:left;color:var(--cyan);border-bottom:2px solid var(--line);white-space:nowrap;padding:6px 10px;font-weight:600}.rtable td{white-space:nowrap;border-bottom:1px solid #ffffff14;padding:5px 10px}.rtable td i{color:var(--muted)}.rtable tr.hotrow td{background:#ffd16633;animation:1.2s ease-out flash}.rtable tr[style*=--tint] td:first-child{border-left:5px solid var(--tint)}@keyframes flash{0%{opacity:0}60%{opacity:0}82%{opacity:.95}to{opacity:0}}.tview{margin:10px 0;padding:10px 14px}.tview-name{margin-bottom:4px;font-weight:700}.tview-name small{color:var(--muted);margin-left:6px;font-weight:400}.shield-note{color:#bdeeff;background:#4cc9f029;border-radius:12px;margin-top:8px;padding:8px 14px;font-size:.9rem}.policies{gap:8px;margin:8px 0;display:grid}.policy{border:1.5px solid var(--line);cursor:pointer;background:#ffffff12;border-radius:14px;align-items:flex-start;gap:12px;padding:10px 14px;display:flex}.policy.on{border-color:var(--cyan);background:#4cc9f026}.policy input{accent-color:var(--cyan);margin-top:5px}.policy span{gap:2px;display:grid}.policy code{color:#b8f3ff;white-space:pre-wrap;background:0 0;padding:0;font-size:.78rem}.builder{gap:8px;margin:10px 0;padding:12px 16px;display:grid}.builder label{color:var(--muted);grid-template-columns:86px 1fr;align-items:center;gap:10px;font-weight:600;display:grid}.builder input,.builder select{font-family:var(--mono);border:1.5px solid var(--line);color:#fff;background:#060220bf;border-radius:10px;width:100%;min-width:0;padding:6px 10px;font-size:.85rem}.builder .inline{gap:6px;display:flex}.keys{gap:10px;margin:8px 0;display:grid}.keycard{padding:12px 14px}.keycard code{white-space:pre-wrap;word-break:break-all;background:0 0;padding:0;font-size:.78rem;display:block}.keycard.ok{border-color:var(--green)}.keycard.bad{border-color:var(--pink)}.chip:disabled{opacity:.45;cursor:default}@media (width<=900px){body{font-size:16px}.lesson-grid,.lesson-grid.wide{grid-template-columns:1fr}.xpbar{width:96px}.brand small{display:none}.world-panel{width:auto;max-height:52vh;inset:auto 12px 12px}.lesson-page{padding:84px 14px 110px}.stage-3d{height:48vh}.done-bar{white-space:normal;justify-content:space-between;width:calc(100vw - 24px)}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}.icon-btn.off{opacity:.45}.adv{letter-spacing:.08em;color:#2a0f5c;vertical-align:middle;background:linear-gradient(90deg,#ff6b9d,#ff9f1c);border-radius:999px;margin-left:8px;padding:2px 8px;font-size:.62rem;font-style:normal;font-weight:700}@media (width>=1100px){::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:#b9a8ff52;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#b9a8ff8c}::-webkit-scrollbar-track{background:0 0}*{scrollbar-width:thin;scrollbar-color:#b9a8ff59 transparent}.lesson-page{flex-direction:column;height:100vh;min-height:0;padding:70px 20px 14px;display:flex;overflow:hidden}.lesson-head{align-items:center;gap:18px;width:100%;max-width:none;margin:0 0 10px;display:flex}.lesson-head .lh-title{flex:1;align-items:baseline;gap:14px;min-width:0;display:flex}.lesson-head h1{white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:1.5rem;overflow:hidden}.lesson-head .eyebrow{white-space:nowrap;margin:0}.lesson-body{flex:1;min-height:0}.lesson-stack{grid-template-columns:minmax(360px,37%) minmax(0,1fr);align-items:stretch;gap:14px;width:100%;max-width:none;height:100%}.lesson-stack>.stage-3d{height:100%!important;min-height:0!important}.lesson-stack>.lesson-grid{grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1.55fr) minmax(280px,1fr);align-items:stretch;gap:14px;max-width:none;height:100%;min-height:0}.lesson-body>.lesson-grid{grid-template-rows:minmax(0,1fr);align-items:stretch;gap:14px;width:100%;max-width:none;height:100%}.lesson-body>.lesson-grid.wide{grid-template-columns:1fr 1fr}.lesson-body>.lesson-grid:not(.wide){grid-template-columns:minmax(360px,1.2fr) 1fr}.lesson-body>.lesson-grid>.stage-3d{height:100%;min-height:0}.lesson-grid>.lesson-text{min-height:0;max-height:100%;padding:2px 8px 24px 2px;overflow:hidden auto}.lesson-text h2{font-size:1.35rem}.lesson-text>p{font-size:.94rem}.done-bar{bottom:16px}}@media (width>=1700px){.lesson-stack{grid-template-columns:minmax(520px,42%) minmax(0,1fr)}.lesson-page{padding-left:32px;padding-right:32px}}.guide-bg{z-index:130;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#060022b8;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.guide{border-color:color-mix(in srgb, var(--c) 60%, transparent);width:min(1040px,96vw);height:min(580px,88vh);box-shadow:0 0 80px color-mix(in srgb, var(--c) 30%, transparent), 0 20px 60px #0009;background:#160c4af0;grid-template-columns:38% 1fr;display:grid;overflow:hidden}.guide-art{background:radial-gradient(circle at 50% 40%, color-mix(in srgb, var(--c) 42%, #1a0f5c), #0e0640 75%);place-items:center;display:grid;position:relative;overflow:hidden}.art-stage{place-items:center;width:260px;height:260px;display:grid;position:relative}.art-glow{background:radial-gradient(circle, color-mix(in srgb, var(--c) 70%, transparent), transparent 70%);filter:blur(18px);border-radius:50%;animation:3s ease-in-out infinite breathe;position:absolute;inset:20px}.art-main{filter:drop-shadow(0 0 24px #ffffff73);font-size:112px;line-height:1;animation:4s ease-in-out infinite floaty;position:relative}.orbiter{width:44px;height:44px;font-size:1.15rem;font-weight:700;font-family:var(--mono);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:11s linear infinite orbit;animation-delay:calc(var(--k) * (-11s / var(--n)));background:#ffffff24;border:1.5px solid #ffffff4d;border-radius:14px;place-items:center;margin:-22px;display:grid;position:absolute;top:50%;left:50%}.guide-step{text-align:center;color:var(--muted);font-size:.78rem;position:absolute;bottom:14px;left:16px;right:16px}.guide-body{flex-direction:column;min-height:0;padding:26px 30px 20px;display:flex;overflow:hidden}.guide-body>div:first-child{flex:1;min-height:0;padding-right:6px;overflow-y:auto}.guide-body h2{margin-bottom:12px;font-size:1.7rem}.guide-body p{color:#e8e1ff;font-size:1.02rem}.g-points,.g-steps{gap:7px;margin:6px 0 12px;padding-left:22px;font-size:1rem;display:grid}.g-points li::marker{color:var(--c)}.g-steps li::marker{color:var(--gold);font-weight:700}.g-callout{border-left:4px solid var(--gold);color:#fff0c4;background:#ffd1661f;border-radius:14px;margin-top:10px;padding:10px 14px;font-size:.95rem}.guide-nav{border-top:1.5px solid var(--line);align-items:center;gap:10px;padding-top:12px;display:flex}.guide-nav .grow{flex:1}.gdots{gap:8px;display:flex}.gdots button{cursor:pointer;background:0 0;border:2px solid #ffffff80;border-radius:50%;width:12px;height:12px;padding:0;transition:all .2s}.gdots button.seen{background:#fff6}.gdots button.on{background:var(--gold);border-color:var(--gold);box-shadow:0 0 10px var(--gold);transform:scale(1.3)}@keyframes orbit{0%{transform:rotate(0)translate(118px)rotate(0)}to{transform:rotate(360deg)translate(118px)rotate(-360deg)}}@keyframes floaty{50%{transform:translateY(-10px)rotate(3deg)}}@keyframes breathe{50%{opacity:.75;transform:scale(1.18)}}@media (width<=900px){.guide{grid-template-columns:1fr;height:90vh}.guide-art{display:none}}.splash{z-index:500;cursor:pointer;background:#04001a;transition:opacity .6s;position:fixed;inset:0;overflow:hidden}.splash.leaving{opacity:0;pointer-events:none;transition-delay:.95s}.splash-gl{position:absolute;inset:0}.splash-flash{opacity:0;pointer-events:none;background:radial-gradient(circle,#fff,#9bf6ff 40%,#0000 70%);position:absolute;inset:0}.splash-flash.on{animation:1.5s ease-in forwards flash}.splash-sub{text-align:center;opacity:0;pointer-events:none;transition:opacity 1.6s,transform 1.6s;position:absolute;top:63%;left:0;right:0;transform:translateY(14px)}.splash-sub.on{opacity:1;transform:none}.splash-sub span{letter-spacing:.6em;text-transform:uppercase;color:#cfe9ff;text-shadow:0 0 24px #4cc9f0,0 0 60px #4cc9f0;padding-left:.6em;font-size:clamp(1.1rem,2.6vw,2.2rem);font-weight:600;display:block}.splash-sub small{color:var(--muted);letter-spacing:.08em;margin-top:12px;display:block}.splash-cta{text-align:center;opacity:0;pointer-events:none;transition:opacity 1s;position:absolute;bottom:9%;left:0;right:0}.splash-cta.on{opacity:1}.splash-cta b{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffff14;border:2px solid #fff9;border-radius:999px;padding:12px 30px;font-size:1.3rem;animation:1.6s ease-in-out infinite pulseBtn;display:inline-block}.splash-cta small{color:var(--muted);margin-top:12px;display:block}@keyframes pulseBtn{50%{transform:scale(1.04);box-shadow:0 0 40px #9bf6ffb3}}.splash-skip{font:inherit;color:var(--muted);border:1.5px solid var(--line);cursor:pointer;background:#ffffff12;border-radius:999px;padding:6px 16px;position:absolute;top:18px;right:22px}.splash-skip:hover{color:#fff;background:#ffffff29}.plan-list{gap:6px;margin:10px 0;display:grid}.plan-step{text-align:left;font:inherit;cursor:pointer;color:var(--ink);border:1.5px solid var(--line);align-items:center;gap:12px;padding:9px 14px;transition:all .15s;display:flex}.plan-step:hover{background:#ffffff1f}.plan-step b{background:var(--cyan);color:#06304a;border-radius:50%;flex:none;place-items:center;width:26px;height:26px;display:grid}.plan-step span{flex:1}.plan-step.flag{background:#ffd16624;border-color:#ffd166}.plan-step.risky{box-shadow:inset 5px 0 #ff4d6d}.checks.lines{gap:6px}.check-row.line{border:1.5px solid var(--line);background:#ffffff0d;border-radius:12px;align-items:flex-start;padding:7px 12px}.check-row.line.good{border-left:4px solid #ffd166}.check-row.line.junk{border-left:4px solid #ff4d6d}.check-row.line.ok{border-left:4px solid #8b7bd6}.check-row.line.sel{border-color:var(--cyan);background:#4cc9f024}.check-row.line em{font-style:normal;font-family:var(--mono);color:var(--muted);white-space:nowrap;margin-left:auto;padding-left:8px;font-size:.72rem}.check-row.line span{flex:1;font-size:.9rem}.sim{gap:8px;padding:10px 14px;font-size:.88rem;display:grid}.sim ul{margin:2px 0 0;padding-left:18px}.simfx{color:#ffd0da;background:#ff4d6d24;border-radius:10px;padding:6px 10px}.sortlist{gap:8px;margin:8px 0;display:grid}.sortcard{padding:10px 14px}.sortcard p{margin:0 0 8px}.sortcard.ok{border-color:var(--green)}.sortcard .why{color:#b8ffe9;font-size:.9rem}.buckets{flex-wrap:wrap;gap:6px;display:flex}.tasks{gap:8px;margin-top:8px;display:grid}.taskrow{border-left:5px solid var(--c);padding:10px 14px}.tt{align-items:baseline;gap:10px;margin-bottom:8px;display:flex}.tt b{color:var(--c);font-size:1.1rem}.tt span{flex:1;font-size:.92rem}.tt em{font-style:normal;font-family:var(--mono);color:var(--muted);white-space:nowrap;font-size:.75rem}.event{margin:10px 0;padding:14px 16px}.event h4{margin:0 0 10px;font-size:1.15rem}.event .chip em{font-style:normal;font-family:var(--mono);opacity:.8;margin-left:4px;font-size:.75rem}.evlog2{font-family:var(--mono);color:var(--muted);gap:3px;margin:8px 0;padding:0;font-size:.78rem;list-style:none;display:grid}.tipgrid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:8px 0 14px;display:grid}.tipcard{font:inherit;text-align:left;cursor:pointer;border:1.5px solid var(--line);min-height:92px;color:var(--ink);background:linear-gradient(135deg,#ffd16629,#c77dff24);border-radius:14px;align-content:start;gap:4px;padding:10px 12px;display:grid}.tipcard em{color:var(--gold);font-size:1.6rem;font-style:normal;font-weight:700}.tipcard span{color:var(--muted);font-size:.8rem}.tipcard.open{border-color:var(--green);background:#06d6a024}.tipcard.open b{font-size:.88rem}.tipcard.open span{color:#e6fff7;font-size:.78rem;line-height:1.35}.rules{gap:4px;padding:10px 14px;display:grid}.rules .eyebrow{margin:8px 0 2px}.rule-row{color:var(--muted);grid-template-columns:130px 1fr 40px;align-items:center;gap:10px;font-size:.9rem;display:grid}.rule-row select{font-family:var(--mono);border:1.5px solid var(--line);color:#fff;background:#060220bf;border-radius:10px;padding:4px 8px;font-size:.8rem}.rule-row output{font-family:var(--mono);text-align:right;color:#fff}.verdicts{gap:6px;margin:8px 0;display:grid}.verdict{padding:7px 12px}.verdict.right{border-color:var(--green)}.verdict.wrong{border-color:#ff4d6d}.vtop{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.vtop b{flex:1;font-size:.9rem}.vtop em{color:var(--muted);font-size:.72rem;font-style:normal}.verdict small{color:#ffb3c6;font-family:var(--mono);font-size:.72rem}.ctl{gap:6px;margin:8px 0;padding:8px 14px;display:grid}.ctl>div{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.ctl b{min-width:118px;color:var(--muted);font-size:.82rem}.layout-demo{background:#ffffffeb;margin:10px 0;padding:12px;overflow-x:auto}.fbox{background:repeating-linear-gradient(45deg,#eef1ff 0 10px,#e4e8ff 10px 20px);border:2px dashed #8b7bd6;border-radius:10px;overflow:hidden}.fitem{color:#1b1464;border-radius:8px;place-items:center;font-weight:700;display:grid}.kpis{grid-template-columns:repeat(3,1fr);gap:10px;margin:12px 0;display:grid}.kpi{text-align:center;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:14px;gap:2px;padding:10px 12px;display:grid}.kpi b{font-family:var(--mono);color:var(--gold);font-size:1.35rem}.kpi span{color:var(--muted);font-size:.72rem;line-height:1.25}.cdemo{margin:12px 0;padding:10px}.cbox{background:#61dafb0d;border:1px solid #61dafb59;border-radius:10px;gap:4px;margin:4px 0;padding:6px 8px;font-size:.78rem;display:grid}.cbox>span{font-family:var(--mono);color:#bfefff}.cbox i{color:var(--gold);margin-left:6px;font-style:normal}.cbox .cbox{margin-left:10px}.counts{flex-wrap:wrap;gap:6px;margin:8px 0;padding:8px 10px;display:flex}.counts span{color:var(--muted);background:#ffffff0d;border-radius:8px;align-items:center;gap:6px;padding:2px 8px;font-size:.72rem;display:flex}.counts b{color:var(--gold);font-family:var(--mono)}.splash-sound{color:#ffe9a8;letter-spacing:.02em;opacity:0;pointer-events:none;z-index:5;background:#ffd16624;border:1px solid #ffd16680;border-radius:999px;padding:9px 18px;font-size:.9rem;font-weight:700;transition:opacity .6s;position:absolute;top:22px;left:50%;transform:translate(-50%)}.splash-sound.on{opacity:1;animation:1.6s ease-in-out infinite soundpulse}@keyframes soundpulse{0%,to{box-shadow:0 0 #ffd16680}50%{box-shadow:0 0 22px 6px #ffd16659}}
