:root{color:#f6edf7;font-synthesis:none;--ink:#0c071c;--panel:#17102d;--line:#4b376d;--muted:#9b8aae;--pink:#ff4f81;--cyan:#65d9ff;--gold:#ffd37a;--green:#72f0b0;background:#09051a;font-family:Trebuchet MS,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html{background:#09051a;min-width:320px;min-height:100%}body{min-width:320px;min-height:100vh;margin:0;overflow-x:hidden}button,input,select{font:inherit}button,.file-button{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.app-shell{isolation:isolate;background:linear-gradient(#080519e8,#190b2ae8);min-height:100vh;position:relative}.app-shell.play-mode{background:#05020e;height:100vh;min-height:0;overflow:hidden}.mode-tabs{background:linear-gradient(#211334aa,#10091faa);border-left:1px solid #4d3764;border-right:1px solid #4d3764;align-content:center;align-self:stretch;gap:5px;min-width:184px;padding:0 16px;display:grid;box-shadow:inset 1px 0 #ffffff08,inset -1px 0 #ffffff08}.mode-tabs small{color:#aa87bb;letter-spacing:.2em;font:8px Consolas,monospace}.mode-tabs>div{grid-template-columns:1fr 1fr;display:grid}.mode-tabs button{color:#a894b4;cursor:pointer;letter-spacing:.1em;background:#10091f;border:1px solid #5b426f;height:28px;padding:0 12px;font-size:10px}.mode-tabs button+button{border-left:0}.mode-tabs button:hover{z-index:1;color:#fff;background:#302047;border-color:#bd82bd}.mode-tabs button[aria-selected=true]{z-index:1;color:#fff;text-shadow:1px 1px #6b1537;background:linear-gradient(#ff5b89,#bd315e);border-color:#ff7198;box-shadow:inset 0 1px #ffffff32,0 0 12px #ff4f8133}.mode-tabs select,.visual-theme-picker select{color:#f8eef9;cursor:pointer;letter-spacing:.04em;background:#120a23;border:1px solid #6b4d7c;border-radius:2px;height:30px;padding:0 27px 0 9px;font:10px Consolas,monospace}.mode-tabs select:hover,.visual-theme-picker select:hover{background:#251638;border-color:#bd82bd}.visual-theme-picker{gap:4px;min-width:166px;display:grid}.visual-theme-picker small{color:#aa87bb;letter-spacing:.18em;font:8px Consolas,monospace}.visual-theme-picker select{border-left:3px solid var(--pink);width:100%}.play-workspace{background:#000;border-top:1px solid #5a3e70;position:absolute;inset:68px 0 0;box-shadow:inset 0 8px 24px #000b}.play-workspace .game-screen{aspect-ratio:auto;width:100vw;height:100%;min-height:0;max-height:none}.play-workspace .screen-vignette,.play-workspace .screen-noise,.play-workspace .recompute-flag{display:none}.mountain-backdrop{z-index:-2;filter:saturate(.72);background-image:linear-gradient(#0d0721aa,#160925f2 68%),url(/assets/original/celeste-splash.png);background-position:50% 28%;background-size:cover;position:fixed;inset:0}.mountain-backdrop:after{content:"";opacity:.45;background-image:radial-gradient(circle at 18% 13%,#fff9 0 1px,#0000 2px),radial-gradient(circle at 77% 19%,#fff7 0 1px,#0000 2px),linear-gradient(90deg,#0000 49%,#ffffff05 50%,#0000 51%);background-size:130px 130px,190px 190px,4px 4px;position:absolute;inset:0}.topbar{z-index:20;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#0a0619f2;border-bottom:2px solid #81588d88;align-items:center;gap:20px;height:68px;padding:0 max(20px,50vw - 820px);display:flex;position:sticky;top:0;box-shadow:0 8px 28px #0008}.brand-mark{align-items:center;gap:11px;min-width:230px;display:flex}.brand-mark .wing{color:#fff;border:2px solid var(--pink);place-items:center;width:37px;height:37px;font-size:25px;display:grid;transform:rotate(45deg);box-shadow:inset 0 0 15px #ff4f8177,0 0 18px #ff4f8144}.brand-mark div{line-height:1;display:grid}.brand-mark strong{letter-spacing:.2em;text-shadow:2px 2px #842d61;font-size:18px}.brand-mark em{color:var(--cyan);letter-spacing:.44em;margin-top:5px;font-size:9px;font-style:normal}.wasm-status{color:var(--muted);letter-spacing:.08em;align-items:center;gap:8px;font:11px Consolas,monospace;display:flex}.wasm-status i{background:var(--gold);border-radius:50%;width:8px;height:8px;box-shadow:0 0 10px}.wasm-status span{color:var(--gold);background:#ffd37a12;border:1px solid #ffd37a66;padding:3px 7px}.wasm-status.ready i{background:var(--green)}.wasm-status.ready span{color:var(--green);background:#72f0b012;border-color:#72f0b066}.wasm-status.error i{background:var(--pink)}.wasm-status.error span{color:var(--pink);background:#ff4f8112;border-color:#ff4f8166}.top-actions{gap:8px;margin-left:auto;display:flex}.top-actions button,.file-button{text-align:center;cursor:pointer;letter-spacing:.08em;background:linear-gradient(#2d2044,#1a112c);border:1px solid #665080;border-radius:2px;min-width:62px;padding:8px 12px;font-size:11px;box-shadow:inset 0 1px #ffffff14}.top-actions button:hover,.file-button:hover{border-color:var(--cyan);color:#fff;background:#30224d}.file-button input{display:none}.play-quick-actions{align-items:center;gap:16px;min-width:0;margin-left:auto;display:flex}.play-quick-actions .top-actions{flex:none;margin-left:0}.play-room{text-align:right;grid-template-columns:auto minmax(0,auto);align-items:center;gap:2px 10px;min-width:0;margin-left:auto;display:grid}.play-room small{color:#aa87bb;letter-spacing:.2em;grid-column:1/-1;font:8px Consolas,monospace}.play-room strong{color:#fff;letter-spacing:.06em;text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.play-room span{color:var(--cyan);background:#65d9ff0d;border:1px solid #65d9ff55;padding:3px 7px;font:9px Consolas,monospace}.training-picker{align-items:center;gap:8px;min-width:0;margin-left:auto;display:flex}.training-picker label{gap:3px;display:grid}.training-picker label small{color:#aa87bb;letter-spacing:.16em;font:8px Consolas,monospace}.training-picker select{color:#fff;background:#150c27;border:1px solid #765888;min-width:130px;height:30px;padding:0 25px 0 8px;font:10px Consolas,monospace}.training-context{min-width:0;max-width:620px;margin-left:auto}.training-context .play-room span{text-overflow:ellipsis;white-space:nowrap;max-width:440px;overflow:hidden}.workspace{grid-template-columns:minmax(0,1fr) 310px;gap:14px;width:min(1640px,100% - 28px);margin:0 auto;padding:18px 0 24px;display:grid}.panel-frame{background:linear-gradient(145deg,#1d1236f2,#100a24f5);border:2px solid #6d4b7e;position:relative;box-shadow:inset 0 0 0 1px #160b27,0 14px 38px #0008}.panel-frame:before,.panel-frame:after{content:"";z-index:2;pointer-events:none;border-color:#c081a8;width:8px;height:8px;position:absolute}.panel-frame:before{border-top:2px solid;border-left:2px solid;top:3px;left:3px}.panel-frame:after{border-bottom:2px solid;border-right:2px solid;bottom:3px;right:3px}.stage{min-width:0;overflow:hidden}.training-workspace{grid-template-columns:minmax(0,1fr);gap:12px;width:100%;margin:0;display:grid}.training-stage{min-width:0;overflow:hidden}.training-stage .game-screen{max-height:calc(100vh - 330px)}.training-stage h1 em{color:#b79ac4;margin-left:8px;font-size:11px;font-style:normal;font-weight:400}.training-prompt{z-index:6;top:var(--prompt-y);left:var(--prompt-x);color:#fff;pointer-events:none;background:#11251dee;border:1px solid #72f0b088;max-width:min(360px,70%);padding:9px 12px;font-size:12px;line-height:1.4;position:absolute;transform:translate(-50%,calc(-100% - 24px));box-shadow:0 0 18px #72f0b022}.training-prompt:after{content:"";border:5px solid #0000;border-top-color:#72f0b088;position:absolute;top:100%;left:50%;transform:translate(-50%)}.training-prompt i{vertical-align:-2px;background:var(--green);width:5px;height:12px;margin-left:2px;animation:.55s step-end infinite training-prompt-caret;display:inline-block}@keyframes training-prompt-caret{50%{opacity:0}}.training-stage{position:relative}.training-failure,.training-success{--outcome-progress:0;z-index:8;opacity:calc(.68 + var(--outcome-progress) * .32);align-content:center;justify-items:center;padding:20px;display:grid;position:absolute;inset:0 0 57px}.training-failure{color:#fff;background:radial-gradient(circle,#0000 0 30%,#390a1bb8 68%,#390a1bf5 100%);box-shadow:inset 0 0 90px #ff4f8166}.training-success{color:#fff;background:radial-gradient(circle,#0000 0 30%,#082a1994 70%,#082a19f0 100%);box-shadow:inset 0 0 90px #72f0b066}.training-assist{color:#bba9c4;align-items:center;gap:5px;font:10px Consolas,monospace;display:flex}.training-result-card{z-index:1;text-align:left;transform-origin:50% 70%;background:#0b0719e8;border:1px solid #fff6;width:min(720px,94%);padding:18px;animation:.62s cubic-bezier(.16,1.18,.32,1) both training-result-enter;position:relative;overflow:hidden;box-shadow:0 20px 60px #000a,inset 0 0 30px #ffffff08}.training-result-card:before{content:"";z-index:-1;opacity:.34;pointer-events:none;animation:.85s ease-out .12s both training-result-sweep;position:absolute;inset:-40% -15%;transform:translate(-75%)skew(-18deg)}.training-result-card.success{border-color:#72f0b0aa}.training-result-card.success:before{background:linear-gradient(90deg,#0000 35%,#72f0b055 50%,#0000 65%)}.training-result-card.failed{border-color:#ff7198aa}.training-result-card.failed:before{background:linear-gradient(90deg,#0000 35%,#ff4f8155 50%,#0000 65%)}.training-result-heading{justify-content:space-between;align-items:end;gap:16px;display:flex}.training-result-heading small{color:#aa87bb;letter-spacing:.18em;font:9px Consolas,monospace;animation:.42s ease-out .12s both training-result-copy;display:block}.training-result-heading strong{text-shadow:0 0 calc(4px + var(--outcome-progress) * 14px) currentColor;margin-top:4px;font-size:28px;animation:.58s cubic-bezier(.16,1.3,.32,1) 60ms both training-result-title;display:block}.training-result-heading em{color:var(--gold);font:13px Consolas,monospace;animation:.42s ease-out .2s both training-result-copy}.training-result-card p{color:#d8cbdc;margin:12px 0;font-size:11px}.training-result-actions{justify-content:flex-end;gap:8px;animation:.4s ease-out .42s both training-result-copy;display:flex}.training-result-actions button{color:#fff;cursor:pointer;background:#ffffff0d;border:1px solid;min-height:34px;padding:0 14px}.training-result-actions button.primary{color:#08180f;border-color:var(--green);background:var(--green);font-weight:700}.training-result-stats{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px;display:grid}.training-result-stats div{background:#160d25;border:1px solid #5a4668;gap:4px;padding:9px 10px;animation:.48s ease-out both training-result-stat;display:grid}.training-result-stats div:first-child{animation-delay:.2s}.training-result-stats div:nth-child(2){animation-delay:.27s}.training-result-stats div:nth-child(3){animation-delay:.34s}.training-result-stats span{color:#a995b3;font:8px Consolas,monospace}.training-result-stats b{color:#fff;font:14px Consolas,monospace}.training-result-timeline{animation:.45s ease-out .15s both training-result-copy}@keyframes training-result-enter{0%{opacity:0;transform:translateY(34px)scale(.9)rotateX(8deg)}68%{opacity:1;transform:translateY(-4px)scale(1.015)rotateX(0)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes training-result-title{0%{opacity:0;letter-spacing:.28em;transform:translate(-18px)scale(.88)}to{opacity:1;letter-spacing:normal;transform:none}}@keyframes training-result-copy{0%{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}@keyframes training-result-stat{0%{opacity:0;transform:translateY(14px)scale(.94)}to{opacity:1;transform:none}}@keyframes training-result-sweep{0%{transform:translate(-75%)skew(-18deg)}to{transform:translate(75%)skew(-18deg)}}.training-result-timeline{background:#080711;border:1px solid #604b70;height:132px;margin-top:14px;position:relative;overflow:visible}.training-result-timeline:before{content:"";z-index:0;background:#eee9f2;height:4px;position:absolute;top:58px;left:2.5%;right:2.5%;box-shadow:0 0 8px #fff2}.training-result-timeline .training-window{z-index:1;opacity:.78;background:#67ab62;height:24px;top:48px;bottom:auto;box-shadow:inset 0 0 0 1px #8bd884,0 0 11px #72f0b033}.training-result-target,.training-result-input,.training-result-failure{z-index:4;width:4px;height:64px;color:var(--cyan);box-shadow:0 0 8px color-mix(in srgb, currentColor 48%, transparent);pointer-events:none;background:currentColor;margin-left:-2px;position:absolute;top:28px}.training-result-input{color:#f0643d;height:50px;top:35px}.training-result-failure{height:58px;color:var(--pink);top:31px}.training-result-target span,.training-result-input span,.training-result-failure span{color:currentColor;background:#080711e8;width:max-content;padding:2px 4px;font:9px Consolas,monospace;position:absolute;left:50%;transform:translate(-50%)}.training-result-target span{bottom:calc(100% + 5px)}.training-result-input span,.training-result-failure span{top:calc(100% + 5px)}.training-result-input.label-row-2 span{top:calc(100% + 17px)}.training-result-input.label-row-3 span{top:calc(100% + 29px)}.stage-header{background:linear-gradient(90deg,#28153d,#140d2b);border-bottom:1px solid #5a3e70;justify-content:space-between;align-items:center;min-height:58px;padding:9px 16px;display:flex}.stage-header small,.panel-heading small,.timeline-toolbar small{color:#aa87bb;letter-spacing:.18em;font:9px Consolas,monospace;display:block}.stage-header h1,.panel-heading h2,.timeline-toolbar h2{color:#fff;letter-spacing:.05em;text-shadow:1px 2px #6e255d;margin:3px 0 0;font-size:15px}.cache-meter{color:#a98ab8;justify-items:end;font:9px Consolas,monospace;display:grid}.cache-meter strong{color:var(--green);margin-top:3px;font-size:13px}.game-screen{aspect-ratio:960/544;background:#0a061d;width:100%;min-height:360px;max-height:calc(100vh - 275px);position:relative;overflow:hidden}.game-screen canvas{width:100%;height:100%;image-rendering:pixelated;display:block}.screen-vignette,.screen-noise{pointer-events:none;position:absolute;inset:0}.screen-vignette{box-shadow:inset 0 0 80px #05020ee8,inset 0 0 12px #000}.screen-noise{opacity:.1;mix-blend-mode:overlay;background-image:repeating-linear-gradient(0deg,#0000 0 3px,#fff 4px)}.recompute-flag{color:#d9cae1;background:#140a25d9;border:1px solid #9b78aa;align-items:center;gap:7px;padding:6px 9px;font:10px Consolas,monospace;display:flex;position:absolute;top:14px;right:14px}.recompute-flag span{background:var(--gold);border-radius:50%;width:7px;height:7px;animation:1s infinite pulse}@keyframes pulse{50%{opacity:.28}}.transport{background:#100922;border-top:1px solid #5a3e70;justify-content:center;align-items:center;gap:7px;min-height:57px;padding:8px;display:flex}.transport button,.transport select{color:#e8ddeb;cursor:pointer;background:linear-gradient(#2b1d43,#171027);border:1px solid #5f4775;border-radius:2px;min-width:38px;height:34px;padding:0 11px;box-shadow:inset 0 1px #ffffff12}.transport button:hover{color:#fff;background:#38214c;border-color:#bd82bd}.transport button:disabled{opacity:.35;cursor:not-allowed}.transport .play-button{color:#fff;text-shadow:1px 1px #6b1537;background:linear-gradient(#ff5b89,#bd315e);border-color:#ff7198;width:45px;font-size:15px}.record-button i{background:var(--pink);border-radius:50%;width:8px;height:8px;margin-right:7px;display:inline-block}.record-button.active{color:#fff;border-color:var(--pink);background:#5a1738}.record-button.active i{box-shadow:0 0 8px var(--pink);animation:.65s infinite pulse}.right-rail{flex-direction:column;gap:12px;display:flex}.panel-heading{border-bottom:1px solid #513a68;justify-content:space-between;align-items:flex-start;padding:13px 14px 10px;display:flex}.cache-pill{color:var(--gold);background:#ffd37a12;border:1px solid #ffd37a55;align-self:center;padding:4px 6px;font:9px Consolas,monospace}.cache-pill.valid{color:var(--green);background:#72f0b012;border-color:#72f0b055}.frame-number{color:#fff;letter-spacing:.12em;text-shadow:3px 3px #6f285f;padding:8px 14px 4px;font:34px Consolas,monospace}.state-list{border:1px solid #48335f;margin:4px 12px 13px}.state-list>div{background:#10092288;border-bottom:1px solid #3d2b52;justify-content:space-between;align-items:center;min-height:33px;padding:5px 8px;display:flex}.state-list>div:last-child{border-bottom:0}.state-list dt{color:#9f8aac;text-transform:uppercase;letter-spacing:.08em;font:9px Consolas,monospace}.state-list dd{color:#fff;margin:0;font:11px Consolas,monospace}.state-list dd i{color:#6f5a7e;margin:0 5px;font-style:normal}.state-list .state-name{color:var(--pink);font-weight:700}.bool{text-align:center;color:#8c789b;border:1px solid #4e3b5d;min-width:31px;padding:2px 4px;font-size:8px;display:inline-block}.bool.on{color:var(--green);background:#72f0b012;border-color:#72f0b055}.current-input{padding-bottom:10px}.input-buttons{grid-template-columns:1fr 1fr;gap:5px;padding:10px;display:grid}.input-buttons button{text-align:left;color:#aa98b7;cursor:pointer;background:#100922;border:1px solid #49355f;grid-template-columns:24px 1fr auto;align-items:center;gap:5px;min-height:36px;padding:5px;display:grid}.input-buttons button:hover{border-color:#86639b}.input-buttons button.active{color:#fff;border-color:var(--lane,var(--pink));background:color-mix(in srgb, var(--lane,var(--pink)) 22%, #100922);box-shadow:inset 3px 0 var(--lane,var(--pink))}.input-buttons button span{width:22px;height:22px;color:var(--lane,#fff);border:1px solid;place-items:center;font:9px Consolas,monospace;display:grid}.input-buttons button strong{font-size:10px}.input-buttons kbd{color:#8a759a;font:9px Consolas,monospace}.up,.down,.left,.right{--lane:#65d9ff}.jump{--lane:#72f0b0}.dash{--lane:#ff4f81}.grab{--lane:#ffd37a}.notice{color:#ad9ab8;background:#0b0619aa;border:1px dashed #604771;align-items:center;gap:8px;min-height:42px;padding:9px 11px;font-size:10px;line-height:1.4;display:flex}.notice i{background:var(--gold);border-radius:50%;flex:none;width:7px;height:7px}.notice i.ready{background:var(--green)}.notice i.error{background:var(--pink)}.timeline-panel,.training-timeline{grid-column:1/-1;min-width:0;overflow:hidden}.training-timeline-head{background:linear-gradient(90deg,#25143a,#120b28);border-bottom:1px solid #5a3e70;justify-content:space-between;align-items:center;min-height:54px;padding:8px 14px;display:flex}.training-timeline-head small{color:#aa87bb;letter-spacing:.18em;font:9px Consolas,monospace;display:block}.training-timeline-head h2{color:#fff;margin:3px 0 0;font-size:14px}.training-timeline-head output{color:var(--green);font:14px Consolas,monospace}.training-track{cursor:ew-resize;touch-action:none;background:linear-gradient(#110a20,#0a0615);border:1px solid #513a68;height:82px;margin:16px 14px 10px;position:relative;overflow:hidden}.training-track:before{content:"";background:#685077;height:1px;position:absolute;bottom:23px;left:0;right:0;box-shadow:0 -18px #3b2b4b,0 18px #3b2b4b}.training-track:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.training-objective-curve{z-index:2;pointer-events:none;width:100%;height:58px;position:absolute;top:6px;left:0;overflow:visible}.training-result-timeline .training-objective-curve{height:72px;top:24px}.training-objective-series{color:var(--gold)}.training-objective-series.objective-1{color:var(--cyan)}.training-objective-series.objective-2{color:var(--pink)}.training-objective-series polyline{fill:none;stroke:currentColor;stroke-width:1.7px;vector-effect:non-scaling-stroke}.training-objective-hover-layer{z-index:20;pointer-events:none;position:absolute;inset:0}.training-objective-hit{pointer-events:auto;cursor:help;display:block;position:absolute;top:0;bottom:0}.training-objective-hit:focus{outline:0}.training-objective-tooltip{z-index:32;color:#e9e0ed;background:#0b0719fa;border:1px solid #8e70a0;align-items:center;width:max-content;min-height:14px;padding:1px 4px;font:7px/1 Consolas,monospace;display:none;position:absolute;top:4px;left:50%;transform:translate(-50%);box-shadow:0 3px 8px #000c}.training-objective-hit.before .training-objective-tooltip{left:0;transform:none}.training-objective-hit.after .training-objective-tooltip{left:auto;right:0;transform:none}.training-objective-hit:hover .training-objective-tooltip,.training-objective-hit:focus .training-objective-tooltip{gap:4px;display:flex}.training-objective-tooltip b{color:#d8c8df;font-size:7px}.training-objective-tooltip strong{color:var(--green);font-size:8px}.training-objective-hit.failed .training-objective-tooltip strong{color:var(--pink)}.training-window{background:#72f0b077;min-width:3px;height:6px;display:block;position:absolute;top:38px;bottom:auto;box-shadow:inset 0 0 0 1px #72f0b0,0 0 10px #72f0b055}.training-marker{z-index:2;color:#fff;text-align:center;pointer-events:none;width:18px;margin-left:-9px;font:9px Consolas,monospace;position:absolute;top:36px}.training-marker:before{content:"";z-index:-1;background:currentColor;width:1px;position:absolute;top:-19px;bottom:-12px;left:8px}.training-marker.fuzz{color:var(--cyan)}.training-marker.target{color:var(--gold)}.training-marker.input{color:var(--green)}.training-marker.failure{color:var(--pink);font-size:18px}.training-marker.reset{height:18px;color:var(--gold);cursor:pointer;pointer-events:auto;background:0 0;border:0;padding:0;font-weight:700;top:55px}.training-marker.reset:before{top:-38px;bottom:8px}.training-playhead{z-index:4;pointer-events:none;background:#fff;width:2px;position:absolute;top:0;bottom:0;box-shadow:0 0 7px #fff}.training-timeline-actions{color:#9683a2;background:#100921;border-top:1px solid #49345e;justify-content:space-between;align-items:center;gap:10px;min-height:37px;padding:6px 14px;font:9px Consolas,monospace;display:flex}.training-timeline-actions button{min-height:25px;color:var(--gold);cursor:pointer;background:#ffd37a0e;border:1px solid #ffd37a77;padding:0 8px;font:9px Consolas,monospace}.timeline-toolbar{background:linear-gradient(90deg,#25143a,#120b28);border-bottom:1px solid #5a3e70;justify-content:space-between;align-items:center;min-height:55px;padding:8px 14px;display:flex}.timeline-tools{color:#9f8aad;align-items:center;gap:7px;font:9px Consolas,monospace;display:flex}.timeline-tools label{align-items:center;gap:5px;display:flex}.timeline-tools input{color:#fff;background:#0e081e;border:1px solid #5b426f;width:67px;padding:5px;font:10px Consolas,monospace}.timeline-tools .timeline-zoom{color:#b8a4c2;background:#0e081e;border:1px solid #4f3a62;align-items:center;gap:7px;padding:5px 8px;display:flex}.timeline-zoom output{color:#fff;min-width:32px}.timeline-tools button{color:#fff;cursor:pointer;background:#241636;border:1px solid #5b426f;width:27px;height:27px}.timeline-canvas{cursor:crosshair;touch-action:none;width:100%;image-rendering:pixelated;background:#08050f;display:block}.timeline-canvas:focus-visible{outline:2px solid var(--cyan);outline-offset:-2px}.timeline-body{background:#0c071b;grid-template-columns:92px minmax(0,1fr);min-height:253px;display:grid}.lane-labels{z-index:3;background:#130b27;border-right:1px solid #604676;position:relative;box-shadow:7px 0 14px #0007}.ruler-label,.lane-label{color:#a790b1;border-bottom:1px solid #322442;align-items:center;gap:7px;height:28px;padding:0 9px;font:9px Consolas,monospace;display:flex}.ruler-label{color:#6f5b7c;height:29px}.lane-label span{width:17px;height:17px;color:var(--lane,#be9ac6);border:1px solid;place-items:center;font-size:7px;display:grid}.lane-label.state{color:#cbb3d1}.timeline-scroll{scrollbar-color:#725083 #160d27;scrollbar-width:thin;min-width:0;overflow:auto hidden}.frame-ruler,.input-lane,.state-lane{width:max-content;display:grid}.frame-ruler{background:#100921;height:29px}.frame-ruler button,.input-lane button,.state-lane button{cursor:pointer;background:0 0;border-top:0;border-bottom:1px solid #322442;border-left:0;border-right:1px solid #2f213f;border-radius:0;min-width:0;padding:0;position:relative}.frame-ruler button{color:#766381;font:8px Consolas,monospace}.frame-ruler button:nth-child(10n+1){border-left:1px solid #6a4e78}.frame-ruler button.selected{color:#fff;background:#ff4f8130}.input-lane{--lane:#65d9ff;height:28px}.input-lane.jump{--lane:#72f0b0}.input-lane.dash{--lane:#ff4f81}.input-lane.grab{--lane:#ffd37a}.input-lane button:hover{background:#ffffff0a}.input-lane button.active{background:color-mix(in srgb, var(--lane) 17%, transparent)}.input-lane button.active i{border:1px solid color-mix(in srgb, var(--lane) 75%, white);background:var(--lane);box-shadow:0 0 7px color-mix(in srgb, var(--lane) 70%, transparent);position:absolute;inset:5px 4px}.input-lane button.selected:after,.state-lane button.selected:after,.end-cell.selected:after{content:"";z-index:3;background:#fff;width:2px;height:100%;position:absolute;top:0;left:-1px;box-shadow:0 0 6px #fff}.end-cell{background:#ffffff04;border-bottom:1px solid #322442;border-right:1px solid #2f213f;position:relative}.state-lane{height:28px}.state-lane button i{background:#42334f;position:absolute;inset:8px 3px}.state-lane button.computed i{background:var(--green);box-shadow:0 0 5px #72f0b077}.state-lane button.state-dash i,.state-lane button.state-reddash i{background:var(--pink)}.state-lane button.state-climb i{background:var(--gold)}.state-lane button.state-swim i{background:var(--cyan)}.state-lane button.invalid{background:repeating-linear-gradient(135deg,#0000 0 4px,#6a4e7818 5px 6px)}.state-lane button.invalid i{height:1px;box-shadow:none;background:#5c4868;top:13px}.timeline-legend{color:#887592;background:#100921;border-top:1px solid #49345e;align-items:center;gap:18px;min-height:34px;padding:6px 13px;font:8px Consolas,monospace;display:flex}.timeline-legend span{align-items:center;gap:5px;display:flex}.timeline-legend i{background:#584665;width:12px;height:5px}.timeline-legend i.held{background:var(--cyan)}.timeline-legend i.cached{background:var(--green)}.timeline-legend i.invalid{background:repeating-linear-gradient(135deg,#5c4868 0 2px,#0000 2px 4px)}.timeline-legend em{color:#b197bc;margin-left:auto;font-style:normal}.modal-backdrop{z-index:50;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#05020bd9;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.bindings-modal{width:min(440px,100%);padding-bottom:13px}.start-modal{width:min(860px,100%);max-height:calc(100vh - 36px);padding-bottom:13px;overflow:auto}.icon-button{color:#fff;cursor:pointer;background:#251638;border:1px solid #634979;width:30px;height:30px;font-size:18px}.modal-copy{color:#a28eae;margin:12px 14px;font-size:11px;line-height:1.6}.binding-list{gap:6px;padding:0 13px;display:grid}.binding{color:#cdbfd2;cursor:pointer;text-align:left;background:#100922;border:1px solid #4d3862;grid-template-columns:29px 1fr 120px;align-items:center;gap:9px;min-height:43px;padding:6px 8px;display:grid}.binding:hover{border-color:#916ca1}.binding.listening{border-color:var(--cyan);box-shadow:inset 3px 0 var(--cyan)}.action-glyph{width:27px;height:27px;color:var(--lane,#fff);border:1px solid;place-items:center;font:9px Consolas,monospace;display:grid}.binding strong{font-size:11px}.binding kbd{color:#fff;text-align:center;background:#28183b;border:1px solid #725884;padding:6px;font:10px Consolas,monospace;box-shadow:0 2px #090512}.gamepad-settings{background:#100922;border:1px solid #4d3862;gap:10px;margin:13px 13px 0;padding:12px;display:grid}.gamepad-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.gamepad-heading>div{gap:3px;display:grid}.gamepad-heading small{color:#aa87bb;letter-spacing:.18em;font:8px Consolas,monospace}.gamepad-heading strong{font-size:11px}.gamepad-heading>span{color:var(--muted);border:1px solid #5a456b;padding:3px 6px;font:8px Consolas,monospace}.gamepad-heading>span.connected{color:var(--green);background:#72f0b012;border-color:#72f0b055}.gamepad-settings label{color:#b9a8c3;justify-content:space-between;align-items:center;gap:12px;font-size:10px;display:flex}.gamepad-settings select{color:#fff;background:#28183b;border:1px solid #725884;min-width:120px;padding:6px 8px}.gamepad-settings p{color:#8f7a9d;text-overflow:ellipsis;white-space:nowrap;margin:0;font:8px Consolas,monospace;overflow:hidden}.gamepad-settings>small{color:#8f7a9d;font:8px/1.5 Consolas,monospace}.start-modal form{padding:0 14px}.start-modal .modal-copy{margin-left:0;margin-right:0}.start-map-grid{grid-template-columns:162px minmax(0,1fr);gap:10px;display:grid}.room-picker{flex-direction:column;gap:7px;display:flex}.room-picker button{color:#aa98b7;cursor:pointer;text-align:left;background:#100922;border:1px solid #49355f;align-content:center;gap:3px;min-height:68px;padding:9px 11px;display:grid}.room-picker button:hover{background:#1a102d;border-color:#86639b}.room-picker button.selected{color:#fff;border-color:var(--pink);box-shadow:inset 3px 0 var(--pink);background:linear-gradient(135deg,#3a1734,#18102d)}.room-picker small,.start-preview-heading small{color:#aa87bb;letter-spacing:.18em;font:8px Consolas,monospace}.room-picker strong{font-size:11px}.room-picker span{color:#7f6b8c;text-overflow:ellipsis;white-space:nowrap;font:9px Consolas,monospace;overflow:hidden}.start-preview{background:#0b0619;border:1px solid #513a68;min-width:0;overflow:hidden}.start-preview-heading{background:linear-gradient(90deg,#25143a,#120b28);border-bottom:1px solid #513a68;justify-content:space-between;align-items:center;gap:12px;min-height:48px;padding:8px 11px;display:flex}.start-preview-heading>div{gap:3px;display:grid}.start-preview-heading strong{font-size:12px}.start-preview-heading output{color:var(--green);white-space:nowrap;background:#72f0b012;border:1px solid #72f0b055;padding:5px 8px;font:10px Consolas,monospace}.start-map{color:#fff;cursor:crosshair;touch-action:none;width:100%;height:auto;image-rendering:pixelated;background:#08050f;border-bottom:1px solid #513a68;display:block}.start-map:focus-visible{outline:2px solid var(--cyan);outline-offset:-2px}.start-map .map-background{fill:#0d0920}.start-map .map-solid{fill:#513665;stroke:#9c6fa3;stroke-width:1px;vector-effect:non-scaling-stroke}.start-map .map-entity{fill:#65d9ff2e;stroke:#65d9ffaa;stroke-width:1px;vector-effect:non-scaling-stroke}.start-map .map-entity[data-kind=water]{fill:#65d9ff45}.start-map .map-entity[data-kind=spikes]{fill:#ff4f8166;stroke:var(--pink)}.start-map .map-entity[data-kind=dream_block]{fill:#a46cff4d;stroke:#c5a1ff}.start-map .default-spawn circle{fill:#ffd37a22;stroke:var(--gold);stroke-width:1px;vector-effect:non-scaling-stroke}.start-map .default-spawn path{fill:none;stroke:var(--gold);stroke-width:1px;vector-effect:non-scaling-stroke}.start-map .selected-spawn{filter:drop-shadow(0 0 4px #ff4f81)}.start-map .selected-spawn circle{fill:#ff4f8138;stroke:#fff;stroke-width:2px;vector-effect:non-scaling-stroke}.start-map .selected-spawn path{fill:none;stroke:#fff;stroke-width:2px;vector-effect:non-scaling-stroke}.default-spawn-button{color:#b9a8c3;cursor:pointer;background:#100922;border:0;width:100%;min-height:34px;font-size:10px}.default-spawn-button:hover{color:#fff;background:#1d1232}.modal-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.modal-actions button{color:#e8ddeb;cursor:pointer;background:linear-gradient(#2b1d43,#171027);border:1px solid #5f4775;min-width:84px;height:36px;padding:0 12px}.modal-actions button.primary{color:#fff;background:linear-gradient(#ff5b89,#bd315e);border-color:#ff7198;min-width:134px}.modal-actions button:disabled,.icon-button:disabled{opacity:.45;cursor:wait}footer{color:#7d6889;text-align:center;letter-spacing:.06em;padding:0 14px 20px;font:8px Consolas,monospace}.app-shell.training-mode{background:#080519;height:100vh;min-height:0;overflow:hidden}.mode-tabs{flex-direction:column;justify-content:center;display:flex}.mode-tabs select{color:#fff;cursor:pointer;background:#150c27;border:1px solid #765888;border-radius:2px;min-width:104px;height:29px;padding:0 25px 0 8px;font:11px Consolas,monospace}.training-workspace{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:292px minmax(0,1fr);gap:0;width:100%;height:calc(100vh - 68px);margin:0;padding:0;overflow:hidden}.training-catalog{color:#eee5f0;scrollbar-color:#634577 #10091f;background:linear-gradient(160deg,#180d2a,#0b0719 72%);border-right:1px solid #513869;grid-area:1/1/-1;min-height:0;overflow:hidden auto;box-shadow:8px 0 28px #0008,inset -1px 0 #ffffff08}.training-catalog-heading{background:linear-gradient(135deg,#29153d,#130a25);border-bottom:1px solid #513869;padding:20px 18px 17px}.training-catalog-heading small{color:var(--pink);letter-spacing:.2em;font:8px Consolas,monospace}.training-catalog-heading h2{letter-spacing:.06em;margin:5px 0 4px;font-size:20px}.training-catalog-heading p{color:#9e8aaa;margin:0;font-size:10px}.training-catalog nav{padding:14px 11px 28px}.training-catalog-section+.training-catalog-section{margin-top:18px}.training-catalog-section-title{color:#d9c8df;letter-spacing:.08em;justify-content:space-between;align-items:center;gap:8px;margin:0 6px 8px;font-size:11px;font-weight:700;display:flex}.training-catalog-section-title small{color:#8c739a;letter-spacing:.12em;font:7px Consolas,monospace}.training-technique{background:#10091f99;border:1px solid #3d2a51;transition:border-color .16s,background .16s;overflow:hidden}.training-technique.selected{background:#170d29;border-color:#765287}.training-technique-toggle{width:100%;min-height:64px;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:10px minmax(0,1fr) 14px;align-items:start;gap:8px;padding:11px 10px;display:grid}.training-technique-toggle:hover{background:#ffffff08}.training-technique-toggle>span:nth-child(2){gap:4px;display:grid}.training-technique-toggle strong{color:#fff;font-size:13px}.training-technique-toggle small{color:#9d8ba8;font-size:9px;line-height:1.45}.training-technique-toggle i{color:#b494c0;font-size:16px;font-style:normal;line-height:1;transition:transform .16s}.training-technique-toggle[aria-expanded=false] i{transform:rotate(-90deg)}.training-tree-point{border:1px solid var(--pink);width:7px;height:7px;margin-top:5px;transform:rotate(45deg);box-shadow:0 0 8px #ff4f8166}.training-variant-list{gap:3px;padding:2px 7px 8px 20px;display:grid;position:relative}.training-variant-list:before{content:"";background:#62436f;width:1px;position:absolute;top:0;bottom:12px;left:13px}.training-variant-option{color:#c8b9cf;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;grid-template-columns:24px minmax(0,1fr);align-items:start;gap:8px;width:100%;min-height:58px;padding:9px 8px;display:grid;position:relative}.training-variant-option:before{content:"";background:#62436f;width:8px;height:1px;position:absolute;top:18px;left:-8px}.training-variant-option:hover{color:#fff;background:#ffffff08;border-color:#5b406a}.training-variant-option.active{color:#fff;box-shadow:inset 2px 0 var(--cyan);background:linear-gradient(90deg,#65d9ff1c,#65d9ff08);border-color:#65d9ff77}.training-variant-number{color:#8e779a;margin-top:1px;font:9px Consolas,monospace}.training-variant-option.active .training-variant-number{color:var(--cyan)}.training-variant-option>span:last-child{gap:4px;display:grid}.training-variant-option strong{font-size:11px}.training-variant-option small{color:#8f7d9a;font-size:8px;line-height:1.45}.training-variant-option.active small{color:#af9db8}.training-stage{grid-area:1/2}.training-timeline{grid-area:2/2}.training-loading{grid-area:1/2/-1;align-self:center;margin:20px}.training-stage{grid-template-rows:auto minmax(0,1fr) auto;min-height:0;display:grid}.training-stage .game-screen{aspect-ratio:auto;height:100%;min-height:0;max-height:none}.training-timeline{min-height:0}.training-track{height:67px;margin:10px 14px 7px}.training-timeline-actions{min-height:31px}.training-timeline-actions>span{min-width:0}.training-outcome-layout{justify-content:center;align-items:center;gap:16px;width:min(720px,94%);display:grid}.training-outcome-layout.success{grid-template-columns:minmax(210px,280px) minmax(0,720px);width:min(1050px,98%)}.training-outcome-layout .training-result-card{width:100%}.training-recommendations{text-align:left;background:#0b0719f2;border:1px solid #65d9ff77;animation:.48s ease-out .18s both training-recommendations-enter;overflow:hidden;box-shadow:0 18px 48px #000a,0 0 24px #65d9ff18}.training-recommendations-heading{background:linear-gradient(135deg,#25153a,#100a22);border-bottom:1px solid #4c3861;padding:13px 14px 11px}.training-recommendations-heading small{color:var(--cyan);letter-spacing:.18em;font:8px Consolas,monospace}.training-recommendations-heading h2{color:#fff;margin:4px 0 3px;font-size:15px}.training-recommendations-heading p{color:#a591af;margin:0;font-size:9px}.training-recommendation-list{background:#433052;gap:1px;display:grid}.training-recommendation-list button{color:#fff;text-align:left;cursor:pointer;background:#10091f;border:0;min-width:0;padding:0;overflow:hidden}.training-recommendation-list button:hover{background:#1d1231}.training-variant-thumbnail{background:#09051a;border-bottom:1px solid #4d3860;width:100%;height:72px;display:block}.training-thumb-solid{fill:#49305f;stroke:#a978a9;stroke-width:1px;vector-effect:non-scaling-stroke}.training-thumb-entity{fill:#65d9ff55;stroke:#65d9ff;stroke-width:1px;vector-effect:non-scaling-stroke}.training-thumb-entity[data-kind=spikes]{fill:#ff4f8199;stroke:#ff89aa}.training-thumb-entity[data-kind=booster]{fill:#72f0b077;stroke:var(--green)}.training-thumb-player-glow,.training-thumb-player{fill:#ff4f81}.training-recommendation-list button>span{gap:3px;padding:9px 11px 11px;display:grid}.training-recommendation-list small{color:var(--cyan);letter-spacing:.12em;font:7px Consolas,monospace}.training-recommendation-list strong{font-size:12px}.training-recommendation-list em{color:#aa98b4;min-height:24px;font-size:8px;font-style:normal;line-height:1.45}.training-recommendation-list b{color:var(--green);justify-content:space-between;align-items:center;margin-top:3px;font:8px Consolas,monospace;display:flex}.training-recommendation-list b i{font-size:13px;font-style:normal;transition:transform .15s}.training-recommendation-list button:hover b i{transform:translate(3px)}@keyframes training-recommendations-enter{0%{opacity:0;transform:translate(-24px)}to{opacity:1;transform:none}}.training-legend{color:#a997b3;flex-wrap:wrap;align-items:center;gap:5px 11px;display:flex}.training-legend i{background:#fff;border-radius:50%;width:9px;height:9px;display:inline-block}.training-legend i.objective{background:var(--gold);width:13px;height:2px;box-shadow:4px -3px 0 -1px var(--gold), -4px 3px 0 -1px var(--gold);border-radius:0}.training-legend i.fuzz{background:var(--cyan)}.training-legend i.target{background:var(--gold);transform:rotate(45deg)}.training-legend i.window{outline:1px solid var(--green);background:#72f0b080;border-radius:0;width:13px}.training-legend i.input{background:var(--green)}.training-legend i.failure{background:var(--pink)}.training-legend i.reset{border:1px solid var(--gold);background:0 0}.training-marker{pointer-events:auto;cursor:help}.training-marker.offscreen{font-size:19px;font-weight:700}.training-marker.offscreen:before{display:none}.training-tooltip{z-index:12;color:#fff;opacity:0;pointer-events:none;background:#120a23f5;border:1px solid #8f72a0;width:max-content;max-width:250px;padding:6px 8px;font:9px/1.4 Consolas,monospace;transition:opacity .12s,transform .12s;position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%,4px);box-shadow:0 5px 15px #0008}.training-marker.before .training-tooltip{left:0;transform:translateY(4px)}.training-marker.after .training-tooltip{left:auto;right:0;transform:translateY(4px)}.training-marker:hover .training-tooltip,.training-marker:focus-within .training-tooltip{opacity:1;transform:translate(-50%)}.training-marker.before:hover .training-tooltip,.training-marker.before:focus-within .training-tooltip,.training-marker.after:hover .training-tooltip,.training-marker.after:focus-within .training-tooltip{transform:translate(0)}@media (width<=1280px){.topbar{gap:12px;padding-left:12px;padding-right:12px}.brand-mark{min-width:185px}.wasm-status{font-size:0}.wasm-status span{font-size:9px}.top-actions{gap:5px}.top-actions button,.file-button{min-width:54px;padding:7px 8px;font-size:9px}.training-workspace{grid-template-columns:250px minmax(0,1fr)}.training-catalog-heading{padding:16px 14px 14px}.training-catalog nav{padding-left:8px;padding-right:8px}.training-outcome-layout.success{grid-template-columns:minmax(190px,230px) minmax(0,640px)}}@media (width<=1100px){.advanced-mode .topbar{flex-wrap:wrap;height:auto;min-height:68px;padding-top:10px;padding-bottom:10px}.advanced-mode .top-actions{order:4;width:100%;margin-left:0;padding-bottom:2px;overflow-x:auto}}@media (width<=980px){.workspace{grid-template-columns:1fr}.right-rail{grid-template-columns:1fr 1fr;display:grid}.notice{grid-column:1/-1}.game-screen{min-height:300px;max-height:none}}@media (width<=900px){.play-mode .brand-mark{min-width:37px}.play-mode .brand-mark div,.play-mode .wasm-status,.play-mode .play-room{display:none}.training-workspace{grid-template-columns:220px minmax(0,1fr)}.training-outcome-layout.success{grid-template-columns:minmax(0,1fr);width:min(640px,96%);max-height:96%;overflow:auto}.training-recommendations{order:2}.training-recommendation-list{grid-template-columns:1fr 1fr}}@media (width<=680px){.topbar{flex-wrap:wrap;gap:9px;height:auto;min-height:64px;padding:10px 12px}.mode-tabs{min-width:136px;box-shadow:none;background:0 0;border:0;order:2;align-self:auto;padding:0}.mode-tabs small,.visual-theme-picker small{display:none}.mode-tabs button{height:32px}.visual-theme-picker{order:2;min-width:132px}.visual-theme-picker select{height:32px}.wasm-status{order:3;width:100%}.brand-mark{min-width:0}.top-actions{order:4;width:100%;margin-left:0;padding-bottom:2px;overflow-x:auto}.play-room{order:3;width:100%}.play-mode .topbar{flex-wrap:nowrap;min-height:64px}.play-mode .brand-mark div,.play-mode .wasm-status,.play-mode .play-room{display:none}.play-mode .top-actions{order:initial;width:auto;padding:0;overflow:visible}.play-workspace{inset:64px 0 0}.workspace{width:calc(100% - 12px);padding-top:7px}.right-rail{display:flex}.game-screen{min-height:230px}.transport{flex-wrap:wrap}.timeline-toolbar{align-items:flex-start;gap:8px}.timeline-tools{flex-wrap:wrap;justify-content:flex-end}.timeline-body{grid-template-columns:74px minmax(0,1fr)}.ruler-label,.lane-label{padding:0 6px}.timeline-legend em{display:none}.modal-backdrop{padding:8px}.start-modal{max-height:calc(100vh - 16px)}.start-map-grid{grid-template-columns:1fr}.room-picker{flex-direction:row;overflow-x:auto}.room-picker button{min-width:142px}.start-preview-heading{align-items:flex-start}.training-context{display:none}.training-mode .topbar{flex-wrap:nowrap;min-height:64px}.training-workspace{grid-template-columns:minmax(156px,42vw) minmax(0,1fr);height:calc(100vh - 64px)}.training-catalog-heading{padding:12px 10px}.training-catalog-heading h2{font-size:15px}.training-catalog-heading p,.training-technique-toggle small,.training-variant-option small,.training-catalog-section-title small{display:none}.training-catalog nav{padding:9px 5px 20px}.training-technique-toggle{min-height:44px;padding:9px 7px}.training-variant-option{min-height:38px;padding:8px 5px}.training-stage .stage-header{min-height:48px}.training-stage .game-screen{min-height:180px}.training-legend{gap:4px 7px;font-size:7px}.training-timeline-head h2{font-size:11px}}@media (width<=380px){.play-mode .brand-mark{display:none}.play-mode .mode-tabs{min-width:112px}.play-mode .visual-theme-picker{min-width:104px}}
