:root{--bg-deep: #07070d;--bg-primary: #0a0a12;--bg-surface: #111119;--bg-raised: #1a1a25;--accent-primary: #4a8db5;--accent-secondary: #3a7464;--accent-warn: #c49040;--text-primary: #e2e8f0;--text-secondary: #94a3b8;--text-tertiary: #7c8ba1;--border-subtle: rgba(255, 255, 255, .09);--panel-w: 340px;--pick-outline: #61afef;--lock-gray: #6b7280;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg-deep);color:var(--text-primary);overflow:hidden}#app{height:100%;display:flex;align-items:stretch}.menu-screen{flex:1;display:flex;align-items:center;justify-content:center;padding:24px}.menu-screen[hidden]{display:none}.menu-card{width:480px;max-width:100%;display:flex;flex-direction:column;align-items:center;gap:20px;text-align:center}.menu-title{font-size:1.5rem;line-height:1.5;margin:0;color:var(--text-primary)}.menu-title span{color:var(--accent-primary)}.menu-tagline{margin:0;font-size:.78rem;color:var(--text-tertiary);max-width:38ch}.level-grid{width:100%;display:flex;flex-direction:column;gap:8px}.level-card{display:flex;align-items:center;gap:12px;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:0;color:var(--text-primary);font-family:inherit;padding:10px 14px;cursor:pointer;text-align:left;transition:border-color .15s,background .15s}.level-card:hover:not(:disabled){border-color:var(--accent-primary);background:var(--bg-raised)}.level-card .level-num{font-size:.72rem;color:var(--text-tertiary);width:1.4em;flex-shrink:0}.level-card .level-title{flex:1;font-size:.85rem}.level-card .level-badge{font-size:.8rem;flex-shrink:0}.level-card.completed{border-color:var(--accent-secondary)}.level-card.completed .level-badge{color:#6fcaa8}.level-card.locked{cursor:not-allowed;color:var(--text-tertiary)}.level-card.locked .level-title{opacity:.55}.level-card.secret{border-color:#e06c7566;background:#e06c750f}.level-card.secret:hover{border-color:#e06c75;background:#e06c751f}.level-card.secret .level-num{color:#e06c75}.level-card.secret.locked,.level-card.secret.locked:hover{border-color:#e06c7533;background:#e06c7508}.level-card.secret.locked .level-num,.level-card.secret.locked .level-title{opacity:.5}.menu-footer{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:2px}.cheat-input{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:0;color:var(--text-secondary);font-family:inherit;font-size:.68rem;padding:5px 8px;width:110px}.cheat-input:focus{outline:none;border-color:var(--accent-primary);color:var(--text-primary)}.reset-progress{background:none;border:none;color:var(--text-tertiary);font-family:inherit;font-size:.68rem;letter-spacing:.04em;text-decoration:underline;cursor:pointer;padding:4px}.reset-progress:hover{color:var(--text-secondary)}.stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;min-width:0;transition:margin-right .25s ease}.stage[hidden]{display:none}#app.panel-open .stage{margin-right:var(--panel-w)}.hud{width:768px;max-width:95%;display:flex;align-items:center;gap:10px}.hud-title{font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-tertiary);margin-right:auto}.hud button{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:0;color:var(--text-secondary);font-family:inherit;font-size:.8rem;padding:7px 12px;cursor:pointer;transition:color .15s,border-color .15s}.hud button:hover{color:var(--text-primary);border-color:var(--accent-primary)}.hud .menu-btn{color:var(--text-tertiary)}.hud .panel-toggle{color:var(--accent-primary);font-weight:700}.hud .panel-toggle.pulse{animation:pulse-glow 1.6s ease-in-out infinite}@keyframes pulse-glow{0%,to{box-shadow:0 0 #4a8db500}50%{box-shadow:0 0 12px 2px #4a8db58c}}.hint-bar{width:768px;max-width:95%;font-size:.68rem;color:var(--text-tertiary);letter-spacing:.04em}.world{position:relative;width:768px;height:432px;border:2px solid #2c3358;overflow:hidden;background:radial-gradient(120% 80% at 50% 12%,rgba(74,141,181,.1),transparent 60%),radial-gradient(90% 60% at 50% 100%,rgba(58,116,100,.1),transparent 70%),linear-gradient(180deg,#0c0d17,#0a0a12 55%,#08080f)}.world:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.022) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.022) 1px,transparent 1px);background-size:48px 48px;box-shadow:inset 0 0 90px 10px #0000008c}.world.frozen{box-shadow:inset 0 0 0 2px #4a8db559}.world.frozen .obj,.world.frozen .obj:before,.world.frozen .obj:after{animation-play-state:paused!important}.world.frozen:after{content:"paused";position:absolute;top:8px;left:10px;font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-primary);opacity:.8}.obj{position:absolute}.obj.solid{background:var(--bg-raised);border:2px solid rgba(255,255,255,.13)}.obj.floor,.obj.ledge{border:none;background:linear-gradient(180deg,rgba(255,255,255,.06),transparent 38%,rgba(0,0,0,.3)),repeating-linear-gradient(180deg,rgba(255,255,255,.055) 0 1px,transparent 1px 16px),repeating-linear-gradient(180deg,transparent 0 14px,rgba(0,0,0,.42) 14px 16px),repeating-linear-gradient(90deg,transparent 0 23px,rgba(0,0,0,.34) 23px 24px),repeating-linear-gradient(90deg,#272d47 0,#272d47 24px,#212840 24px,#212840 48px),#202536;box-shadow:inset 0 3px #4a8db5b3,inset 0 4px 10px #4a8db51f,0 6px 14px #0006}.obj.ledge{background:linear-gradient(180deg,rgba(255,255,255,.07),transparent 38%,rgba(0,0,0,.3)),repeating-linear-gradient(180deg,rgba(255,255,255,.06) 0 1px,transparent 1px 16px),repeating-linear-gradient(180deg,transparent 0 14px,rgba(0,0,0,.4) 14px 16px),repeating-linear-gradient(90deg,transparent 0 23px,rgba(0,0,0,.32) 23px 24px),repeating-linear-gradient(90deg,#2e3554 0,#2e3554 24px,#262c48 24px,#262c48 48px),#242a44}.obj.plank{border:none;background:linear-gradient(180deg,rgba(255,255,255,.12),transparent 45%,rgba(0,0,0,.25)),repeating-linear-gradient(to right,#6b5537 0,#6b5537 20px,#7a6240 20px,#7a6240 24px),#6b5537;box-shadow:inset 0 3px #97794f,inset 0 -3px #4a3a24,0 5px 12px #00000073}.obj.ladder{background:repeating-linear-gradient(to bottom,transparent 0 10px,#8a7049 10px 14px),linear-gradient(90deg,#7a6240 0 6px,#5c4a2e 6px,transparent 6px calc(100% - 6px),#5c4a2e calc(100% - 6px),#7a6240 calc(100% - 6px) 100%);filter:drop-shadow(0 3px 5px rgba(0,0,0,.5))}.obj.platform{border:none;background:linear-gradient(180deg,rgba(255,255,255,.1),transparent 45%,rgba(0,0,0,.3)),repeating-linear-gradient(90deg,#2c3350 0,#2c3350 12px,#262c44 12px,#262c44 24px),#2a3048;box-shadow:inset 0 2px #61afefa6,inset 0 -2px #00000080,0 5px 12px #00000073}.obj.door-frame{border:none;background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 30%,rgba(0,0,0,.35)),repeating-linear-gradient(180deg,rgba(255,255,255,.05) 0 1px,transparent 1px 24px),repeating-linear-gradient(180deg,transparent 0 22px,rgba(0,0,0,.4) 22px 24px),#262c48;box-shadow:inset 0 -3px #4a8db58c,0 6px 14px #0006}.obj.bridge{border:none;background:repeating-linear-gradient(to right,#61afef80 0,#61afef80 22px,#61afef47 22px,#61afef47 24px),#1c2e42d9;box-shadow:inset 0 2px #61afefcc,0 0 14px #61afef59}.obj.rack{border:none;background:linear-gradient(180deg,rgba(255,255,255,.08),transparent 40%,rgba(0,0,0,.35)),repeating-linear-gradient(0deg,#3a3020 0,#3a3020 6px,#4a3d28 6px,#4a3d28 12px),#3a3020;box-shadow:inset 0 2px #c4904080,0 5px 10px #0006}.obj.laser{border:none;background:linear-gradient(180deg,#3a4254 0,#232a38 8px,transparent 8px calc(100% - 8px),#232a38 calc(100% - 8px),#3a4254 100%);box-shadow:inset 0 2px #ffffff1a,inset 0 -2px #ffffff0f}.obj.laser:before{content:"";position:absolute;left:0;right:0;top:8px;bottom:8px;background:linear-gradient(90deg,transparent 0,rgba(255,77,94,.45) 28%,#ffe0e4 46% 54%,rgba(255,77,94,.45) 72%,transparent 100%);box-shadow:0 0 14px 2px #ff3c5080;animation:laser-beam var(--laser-period, 2s) steps(1) var(--laser-delay, 0s) infinite}.obj.laser.blocked{filter:saturate(.2) brightness(.7)}.obj.laser.blocked:before{animation:none;opacity:0}.obj.laser.outage{filter:brightness(.4) saturate(.3)}.obj.laser.outage:before{animation:laser-outage 2s linear forwards}@keyframes laser-outage{0%{opacity:.2}3%,84%{opacity:0}86%,87%{opacity:.25}88%,91%{opacity:0}92%,93%{opacity:.25}94%,to{opacity:0}}@keyframes laser-beam{0%,49.9%{opacity:1}50%,to{opacity:.3}}.world.vault{border-color:#3a2c38;background:linear-gradient(180deg,rgba(224,60,70,.09),transparent 60px),radial-gradient(120% 80% at 50% 12%,rgba(140,70,90,.08),transparent 60%),linear-gradient(180deg,#0d0a12,#0a080e 55%,#070609)}.decor{position:absolute;pointer-events:none}.decor.lamp{background:#521a20;border:1px solid rgba(224,60,70,.5);border-top:none;border-radius:0 0 5px 5px}.decor.lamp:after{content:"";position:absolute;top:-16px;right:-20px;bottom:-16px;left:-20px;background:radial-gradient(closest-side,rgba(224,60,70,.3),transparent);animation:lamp-breathe 3.2s ease-in-out infinite}@keyframes lamp-breathe{0%,to{opacity:.45}50%{opacity:1}}.decor.hazard-stripes{background:repeating-linear-gradient(45deg,#8f7524 0,#8f7524 9px,#15151a 9px,#15151a 18px);opacity:.5}.decor.mission-timer{font-family:inherit;font-size:.8rem;letter-spacing:.12em;text-align:center;color:#e0c8c8bf;text-shadow:0 0 8px rgba(224,60,70,.4)}.decor.mission-timer.low{color:#ff5560;animation:timer-low .5s steps(1) infinite}@keyframes timer-low{50%{opacity:.35}}.obj.platform.gated{animation:platform-rise 3s ease-in-out infinite alternate;animation-play-state:var(--mainframe, paused)}@keyframes platform-rise{0%{top:360px}to{top:96px}}.obj.pc{background:repeating-linear-gradient(90deg,#2a3346 0,#2a3346 4px,#1a2130 4px,#1a2130 7px) left bottom / 100% 8px no-repeat,linear-gradient(180deg,rgba(255,255,255,.07),transparent 35%),#171d2a;border:2px solid #333c50;border-radius:3px}.obj.pc:before{content:"";position:absolute;top:4px;right:4px;bottom:12px;left:4px;background:linear-gradient(#3ad35f,#3ad35f) 3px 4px / 20px 2px no-repeat,linear-gradient(#2fae4f,#2fae4f) 3px 9px / 26px 2px no-repeat,linear-gradient(#2fae4f,#2fae4f) 3px 14px / 13px 2px no-repeat,linear-gradient(#7dffa0,#7dffa0) 20px 19px / 5px 3px no-repeat,linear-gradient(#2fae4f,#2fae4f) 3px 19px / 15px 2px no-repeat,repeating-linear-gradient(0deg,rgba(0,0,0,.35) 0 2px,transparent 2px 4px),linear-gradient(180deg,#0c1810,#081209);border:1px solid rgba(58,211,95,.35);box-shadow:0 0 10px #3ad35f40,inset 0 0 6px #0009;animation:pc-flicker 1.1s steps(2) infinite}.obj.pc.hacked:before{background:linear-gradient(#3ad35fd9,#3ad35fd9) 3px 4px / 28px 8px no-repeat,linear-gradient(#2fae4f,#2fae4f) 3px 17px / 20px 2px no-repeat,linear-gradient(#7dffa0,#7dffa0) 3px 22px / 9px 3px no-repeat,repeating-linear-gradient(0deg,rgba(0,0,0,.35) 0 2px,transparent 2px 4px),linear-gradient(180deg,#0e2415,#0a1a0e);box-shadow:0 0 14px #50dc788c,inset 0 0 6px #00000080;animation:none}.obj.pc:after{content:"";position:absolute;left:-3px;right:-3px;top:-13px;height:6px;border:1px solid rgba(97,175,239,.55);border-radius:2px;background:linear-gradient(var(--accent-secondary),var(--accent-secondary)) left / calc(var(--hack, 0) * 100%) 100% no-repeat,#080c12d9;transition:opacity .4s ease}.obj.pc.hacked:after{opacity:0}@keyframes pc-flicker{50%{opacity:.75}}.world.alarm-flash:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;pointer-events:none;background:#e03c4647;animation:alarm-fade .5s ease-out}@keyframes alarm-fade{0%{opacity:1}to{opacity:0}}.obj.exit{background:radial-gradient(70% 60% at 50% 45%,#3a746466,#3a746426),#14282280;border:3px solid var(--accent-secondary);box-shadow:inset 0 0 0 2px #07070d,inset 0 0 16px #4ac8a059,0 0 22px #3a746473;animation:exit-breathe 2.8s ease-in-out infinite}@keyframes exit-breathe{0%,to{box-shadow:inset 0 0 0 2px #07070d,inset 0 0 14px #4ac8a047,0 0 18px #3a746459}50%{box-shadow:inset 0 0 0 2px #07070d,inset 0 0 20px #4ac8a073,0 0 30px #3a746499}}.obj.exit:after{content:"exit";position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:#6fcaa8;text-shadow:0 0 8px rgba(58,116,100,.7)}.player{position:absolute;left:0;top:0;image-rendering:pixelated;z-index:4;will-change:transform;filter:drop-shadow(0 4px 3px rgba(0,0,0,.55))}.world.picking .obj:not(.bridge){transition:opacity .15s ease}.world.picking.spotlit .obj:not(.pick-hover):not(.bridge){opacity:.4}.world.picking .obj.pick-selected{outline:2px solid var(--accent-secondary);outline-offset:1px}.pick-overlay{position:absolute;display:none;pointer-events:none;z-index:6;border:2px solid var(--pick-outline);background:#61afef21}.pick-overlay.locked{border-color:var(--lock-gray);background:#6b728021}.pick-tooltip{position:fixed;z-index:30;pointer-events:none;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:0;padding:5px 9px;font-size:.68rem;color:var(--text-secondary);white-space:nowrap;display:none}.pick-tooltip .cls{color:var(--pick-outline)}.pick-tooltip.locked .cls{color:var(--lock-gray)}.panel{position:fixed;top:0;right:0;bottom:0;z-index:25;width:var(--panel-w);background:var(--bg-surface);border-left:2px solid var(--border-subtle);display:flex;flex-direction:column;transform:translate(100%);visibility:hidden;transition:transform .22s ease,visibility 0s .22s}.panel.open{transform:translate(0);visibility:visible;transition:transform .22s ease,visibility 0s}.panel-top{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border-subtle)}.panel-top .sel-title{font-size:.78rem;color:var(--text-secondary);margin-right:auto}.panel-top .apply-close{background:#3a746438;border:1px solid var(--accent-secondary);border-radius:0;color:#55a08a;font-family:inherit;font-size:.7rem;padding:5px 10px;cursor:pointer}.panel-top .apply-close:hover{background:#3a746466;color:#fff}.editables{display:flex;flex-wrap:wrap;gap:6px;padding:10px 12px;border-bottom:1px solid var(--border-subtle)}.editables .chip{background:var(--bg-raised);border:1px solid var(--border-subtle);border-radius:0;color:var(--pick-outline);font-family:inherit;font-size:.7rem;padding:3px 8px;cursor:pointer}.editables .chip:hover{border-color:var(--pick-outline)}.rules{flex:1;overflow-y:auto;padding:12px;font-size:.78rem;line-height:1.7}.rule{margin-bottom:14px}.rule .selector{color:var(--pick-outline)}.rule .brace{color:var(--text-tertiary)}.rule .decl{padding-left:16px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.rule .prop{color:#c678dd}.rule .value-readout{color:#98c379;min-width:54px;text-align:right}.rule .locked-decl{padding-left:16px;color:var(--lock-gray)}.rule .locked-decl .padlock{font-size:.65rem;margin-left:6px}.rule input[type=range]{flex:1;min-width:90px;accent-color:var(--accent-primary);cursor:ew-resize}.rule .prop-pick{background:var(--bg-raised);border:1px solid var(--border-subtle);border-radius:0;color:#c678dd;font-family:inherit;font-size:.75rem;padding:3px 4px;cursor:pointer}.rule .prop-pick:focus{outline:none;border-color:var(--accent-primary)}.rule .value-input{background:var(--bg-raised);border:1px solid var(--border-subtle);border-radius:0;color:#98c379;font-family:inherit;font-size:.75rem;padding:4px 8px;width:110px}.rule .value-input:focus{outline:none;border-color:var(--accent-primary)}.rule .value-input:disabled{opacity:.35;cursor:not-allowed}.rule .unit,.rule .fn-prefix{color:#98c379;opacity:.75}.rule .value-input.invalid{border-color:#e06c75;background:#e06c7524;color:#e06c75}.rule .decl-error{padding-left:16px;color:#e06c75;font-size:.7rem;line-height:1.5;margin-top:2px}.rule .line{margin-bottom:4px}.rule .line-remove{width:16px;height:16px;border-radius:50%;border:1px solid #e06c75;background:#e06c7526;color:#e06c75;font-family:inherit;font-size:.55rem;line-height:1;padding:0;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s}.rule .line-remove:hover{background:#e06c75;color:#fff}.rule .decl-add{padding-left:16px;margin:4px 0 2px}.rule .decl-add button{background:none;border:1px dashed var(--border-subtle);border-radius:0;color:var(--text-tertiary);font-family:inherit;font-size:.68rem;padding:2px 9px;cursor:pointer;transition:color .15s,border-color .15s}.rule .decl-add button:hover{color:var(--accent-primary);border-color:var(--accent-primary)}.panel.shake{animation:panel-shake .28s ease}@keyframes panel-shake{0%,to{transform:translate(0)}25%{transform:translate(-7px)}60%{transform:translate(5px)}}.panel-foot{padding:10px 12px;border-top:1px solid var(--border-subtle);font-size:.68rem;color:var(--text-tertiary);display:flex;justify-content:space-between}.panel-foot .budget{color:var(--accent-secondary)}.win-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:none;align-items:center;justify-content:center;background:#07070dd1}.win-overlay.show{display:flex}.win-card{text-align:center;background:var(--bg-surface);border:1px solid var(--accent-secondary);border-radius:0;padding:28px 40px}.win-card h2{margin:0 0 6px;font-size:1.1rem;color:var(--accent-secondary)}.win-card p{margin:0 0 18px;font-size:.75rem;color:var(--text-secondary)}.win-actions{display:flex;flex-direction:column-reverse;gap:10px}.win-card button{border-radius:0;font-family:inherit;font-size:.78rem;padding:8px 18px;cursor:pointer}.win-card .win-retry,.win-card .win-select{background:transparent;border:1px solid var(--border-subtle);color:var(--text-secondary)}.win-card .win-retry:hover,.win-card .win-select:hover{border-color:var(--text-secondary);color:var(--text-primary)}.win-card .win-next{background:#3a746438;border:1px solid var(--accent-secondary);color:#6fcaa8}.win-card .win-next:hover{background:#3a746466;color:#fff}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,80px);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:0;padding:9px 16px;font-size:.78rem;color:var(--text-secondary);transition:transform .25s ease;z-index:40}.toast.show{transform:translate(-50%)}#mobile-guard{display:none}@media(max-width:899px),(pointer:coarse)and (hover:none){#app{display:none}#mobile-guard{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100%;gap:22px;padding:24px;text-align:center}#mobile-guard h1{font-size:1.3rem;margin:0;line-height:1.5}#mobile-guard h1 span{color:var(--accent-primary)}#mobile-guard pre{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:0;padding:14px 16px;font-size:.66rem;text-align:left;overflow-x:auto;max-width:100%}}@media(prefers-reduced-motion:reduce){.hud .panel-toggle.pulse,.obj.exit{animation:none}.panel{transition:none}.panel.shake{animation:none}}
