:root{--radius: 6px;--background: oklch(.18 .008 60);--foreground: oklch(.95 .01 80);--card: oklch(.24 .01 60);--card-foreground: oklch(.95 .01 80);--primary: oklch(.78 .16 70);--primary-foreground: oklch(.18 .008 60);--muted: oklch(.28 .01 60);--muted-foreground: oklch(.68 .015 70);--border: oklch(.32 .012 60);--destructive: oklch(.62 .22 25);--panel: oklch(.26 .012 60);--panel-edge: oklch(.34 .014 60);--jack-ring: oklch(.55 .02 60);--jack-audio: #f5f1e8;--jack-cv: #a78bfa;--jack-gate: #a3e635;--led-on: oklch(.78 .18 60);--led-off: oklch(.3 .02 60)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;background:var(--background);color:var(--foreground);font-family:ui-sans-serif,system-ui,-apple-system,Inter,sans-serif;font-size:14px}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}button:disabled{cursor:not-allowed;opacity:.5}.mono{font-family:ui-monospace,JetBrains Mono,SF Mono,Menlo,monospace;letter-spacing:.02em}app-root{display:flex;flex-direction:column;height:100vh}.app-header{display:flex;align-items:center;gap:16px;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--card);position:sticky;top:0;z-index:10}.app-header .brand{font-family:ui-monospace,monospace;font-size:12px;text-transform:uppercase;letter-spacing:.2em;color:var(--primary)}.app-header .modules-btn{margin-left:4px;padding:5px 10px;font-size:12px;font-family:ui-monospace,monospace;color:var(--muted-foreground);background:transparent;border:1px solid var(--panel-edge);border-radius:4px;cursor:pointer}.app-header .modules-btn:hover{color:var(--foreground)}.app-header .modules-btn.active{color:var(--primary);border-color:var(--primary);background:#1e1a16}.app-main{display:flex;flex-direction:column;flex:1;min-height:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:6px 12px;border-radius:var(--radius);background:var(--muted);color:var(--foreground);font-size:12px;border:1px solid var(--border);transition:background .12s}.btn:hover:not(:disabled){background:var(--panel-edge)}.btn.primary{background:var(--primary);color:var(--primary-foreground);border-color:transparent;font-weight:600}.btn.primary:hover:not(:disabled){filter:brightness(1.08)}.transport .btn.primary{font-size:20px;padding:4px 14px}.btn.panic{background:#551112;color:oklch(.95 .05 30);border-color:#ad524d;font-weight:600}.btn.panic:hover:not(:disabled){filter:brightness(1.12)}.btn.ghost{background:transparent;border-color:transparent}.btn.ghost:hover:not(:disabled){background:var(--muted)}.transport{display:flex;align-items:center;gap:14px;flex:1}.transport .preset-select{background:var(--muted);color:var(--foreground);border:1px solid var(--border);border-radius:4px;padding:5px 8px;font-size:12px}.master-meter{display:flex;align-items:center;gap:6px;font-family:ui-monospace,monospace;font-size:10px;color:var(--muted-foreground);user-select:none}.master-meter .bar{position:relative;width:110px;height:8px;background:linear-gradient(to right,#4cc157 0% 70%,oklch(.8 .18 85) 70% 90%,#f94144 90% 100%);border:1px solid var(--border);border-radius:3px;overflow:hidden}.master-meter .fill{position:absolute;inset:0 0 0 auto;width:100%;background:var(--muted);transition:width 60ms linear}.master-meter .clip{width:8px;height:8px;border-radius:50%;background:var(--led-off);border:1px solid var(--border)}.master-meter .clip.lit{background:oklch(.65 .24 25);box-shadow:0 0 6px oklch(.65 .24 25 / .8)}.rack-wrap{flex:1;min-height:0;position:relative;overflow:hidden;background:var(--background);touch-action:none;overscroll-behavior:none}.rack-scroll{position:absolute;inset:0;overflow:auto;touch-action:none;scrollbar-width:none;-ms-overflow-style:none}.rack-scroll::-webkit-scrollbar{width:0;height:0;display:none}.rack-world{position:relative;width:8000px;height:8000px}.rack-sizer{position:relative}.rack-containers,.rack-modules{position:absolute;inset:0;width:100%;height:100%}.rack-containers{pointer-events:none;z-index:2}.rack-modules{z-index:1}.ctx-menu{position:fixed;z-index:100;min-width:180px;max-height:60vh;overflow:hidden;background:#110c09fa;border:1px solid var(--panel-edge);border-radius:6px;box-shadow:0 10px 30px #0000007f;padding:4px;display:flex;flex-direction:column;gap:1px}.ctx-menu .ctx-title{font-family:ui-monospace,monospace;font-size:9px;text-transform:uppercase;letter-spacing:.15em;color:var(--muted-foreground);padding:6px 10px 4px}.ctx-menu .ctx-search{margin:2px 2px 4px;padding:6px 8px;font:12px ui-monospace,monospace;color:var(--foreground);background:#050302;border:1px solid var(--panel-edge);border-radius:4px;outline:none}.ctx-menu .ctx-search:focus{border-color:var(--primary)}.ctx-menu .ctx-list{display:flex;flex-direction:column;gap:1px;min-height:0;overflow:auto}.ctx-menu .ctx-list.ctx-cols{flex-direction:row;align-items:flex-start;gap:4px;overflow:auto hidden}.ctx-menu .ctx-col{display:flex;flex-direction:column;min-width:140px;gap:1px}.ctx-menu .ctx-section{font-family:ui-monospace,monospace;font-size:9px;text-transform:uppercase;letter-spacing:.15em;color:var(--muted-foreground);padding:8px 10px 2px}.ctx-menu .ctx-section:first-child{padding-top:4px}.ctx-menu button{padding-left:16px}.ctx-menu button{text-align:left;padding:6px 10px;border-radius:4px;font-size:12px;color:var(--foreground);background:transparent;border:none;cursor:pointer}.ctx-menu button:hover,.ctx-menu button.active{background:#231e1b;color:var(--primary)}.ctx-menu button.danger{color:oklch(.78 .18 25)}.ctx-menu button.danger:hover{background:#551112;color:oklch(.95 .05 30)}.ctx-menu.mod-ctx{min-width:160px}x-module{position:absolute;display:flex;flex-direction:column;background:linear-gradient(180deg,#231e1beb,#1a1512eb);border:1px solid var(--panel-edge);border-radius:8px;box-shadow:inset 0 1px #ffffff0f,0 4px 12px #00000059;overflow:hidden;user-select:none}x-module .mod-head{display:flex;align-items:center;justify-content:space-between;padding:6px 8px;border-bottom:1px solid var(--panel-edge);background:#1a1512;cursor:grab;font-family:ui-monospace,monospace;font-size:10px;text-transform:uppercase;letter-spacing:.15em;color:var(--primary)}x-module .mod-head:active{cursor:grabbing}x-module .mod-head .close{color:var(--muted-foreground);font-size:14px;padding:0 4px;line-height:1}x-module .mod-head .close:hover{color:var(--destructive)}x-module .mod-head-right{display:inline-flex;align-items:center;gap:4px}x-module .mod-meter{flex:1;min-width:16px;max-width:80px;height:4px;margin:0 8px;background:var(--muted);border:1px solid var(--panel-edge);border-radius:2px;overflow:hidden}x-module .mod-meter-fill{width:0%;height:100%;background:#4cc157;transition:width 60ms linear,background 60ms linear}x-module .mod-head .byp{font:600 9px ui-monospace,monospace;letter-spacing:.1em;padding:1px 5px;border-radius:3px;background:#110c09;color:var(--muted-foreground);border:1px solid var(--panel-edge);cursor:pointer}x-module .mod-head .byp:hover{color:var(--primary);border-color:var(--primary)}x-module .mod-head .byp.on{background:oklch(.78 .18 60);color:#0e0a07;border-color:oklch(.78 .18 60);box-shadow:0 0 6px oklch(.78 .18 60 / 60%)}x-module .mod-head .byp.mute.on{background:#ee343b;color:oklch(.98 .02 25);border-color:#ee343b;box-shadow:0 0 6px #ee343b99}x-module .mod-head .byp.solo.on{background:#e5c226;color:#0e0a07;border-color:#e5c226;box-shadow:0 0 6px #e5c22699}x-module .mod-head .byp.bypass-icon{font-size:11px;line-height:1;padding:1px 4px}x-module.bypassed .mod-body{opacity:.55}x-module.muted .mod-body{opacity:.55}x-module .mod-body{padding:12px 10px;flex:1;min-height:0;display:flex;flex-wrap:wrap;gap:8px 10px;justify-content:center;align-items:flex-start}x-module .mod-body.seq-body{flex-wrap:nowrap;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:6px}x-module .mod-body.note-body{flex-wrap:nowrap;flex-direction:column;align-items:stretch;justify-content:stretch;padding:8px;gap:0}x-module .note-text{flex:1;min-height:0;width:100%;resize:none;background:transparent;color:var(--foreground);border:1px solid var(--panel-edge);border-radius:4px;padding:8px 10px;font-family:ui-monospace,monospace;font-size:12px;line-height:1.45;outline:none;box-sizing:border-box}x-module .note-text:focus{border-color:var(--primary)}x-module .mixer-ch-wrap{display:flex;flex-direction:column;align-items:center;gap:4px}x-sampler-face{display:flex;flex-direction:column;gap:4px;flex:1 0 100%;width:100%;min-height:0}x-sampler-face .sampler-wave{display:block;width:100%;height:32px;background:#110c09;border:1px solid var(--panel-edge);border-radius:4px}x-sampler-face .sampler-row{display:flex;gap:6px;align-items:center}x-sampler-face .sampler-spacer{flex:1 1 auto}x-sampler-face .sampler-btn{font:600 9px ui-monospace,monospace;letter-spacing:.04em;padding:2px 6px;border-radius:3px;background:#15110d;color:var(--muted-foreground);border:1px solid var(--panel-edge);cursor:pointer}x-sampler-face .sampler-btn:hover{color:var(--primary);border-color:var(--primary)}x-sampler-face select.sampler-preset{font:600 9px ui-monospace,monospace;letter-spacing:.04em;padding:2px 4px;max-width:90px;appearance:none;-webkit-appearance:none}x-sampler-face .sampler-btn.play{color:var(--primary);border-color:var(--primary)}x-sampler-face .sampler-btn.rec{background:#ee343b;color:oklch(.98 .02 25);border-color:#ee343b;box-shadow:0 0 6px #ee343b99}x-module .mixer-ch-mute{font:600 9px ui-monospace,monospace;letter-spacing:.1em;padding:1px 5px;border-radius:3px;background:#110c09;color:var(--muted-foreground);border:1px solid var(--panel-edge);cursor:pointer;width:28px}x-module .mixer-ch-mute:hover{color:var(--primary);border-color:var(--primary)}x-module .mixer-ch-mute.on{background:#ee343b;color:oklch(.98 .02 25);border-color:#ee343b;box-shadow:0 0 6px #ee343b99}x-module .lfo-sync{font:600 9px ui-monospace,monospace;letter-spacing:.1em;padding:2px 6px;border-radius:3px;background:#110c09;color:var(--muted-foreground);border:1px solid var(--panel-edge);cursor:pointer;align-self:center}x-module .lfo-sync:hover{color:var(--primary);border-color:var(--primary)}x-module .lfo-sync.on{background:var(--primary);color:var(--primary-foreground);border-color:var(--primary);box-shadow:0 0 6px #f7a22499}x-module.lfo-synced .lfo-knob-rate{display:none}x-module.lfo-free .lfo-knob-div{display:none}x-module.delay-synced .delay-knob-time{display:none}x-module.delay-free .delay-knob-div{display:none}x-module.delay-pp .delay-knob-mono{display:none}x-module.delay-mono .delay-knob-pp{display:none}x-module .seq-controls{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:flex-end;justify-content:center;flex:0 0 auto}x-module .seq-scale-wrap{display:inline-flex;flex-direction:column;align-items:center;gap:3px}x-module .seq-scale-wrap .seq-scale{background:#110c09;color:var(--foreground);border:1px solid var(--panel-edge);border-radius:4px;padding:2px 4px;font:10px ui-monospace,monospace;text-transform:uppercase;letter-spacing:.06em;cursor:pointer}x-module .seq-fit{align-self:center;background:#110c09;color:var(--foreground);border:1px solid var(--panel-edge);border-radius:4px;padding:4px 8px;font:10px ui-monospace,monospace;text-transform:uppercase;letter-spacing:.08em;cursor:pointer}x-module .seq-fit:hover{border-color:var(--primary);color:var(--primary)}x-module .mod-jacks{flex:0 0 auto;display:flex;justify-content:center;gap:12px;padding:4px 4px 8px}x-module .mod-body.sum-body{padding:0;gap:0;flex:0 0 auto}x-module .mod-jacks.sum-jacks{flex-direction:column;align-items:center;gap:4px;padding:4px 2px}x-module .mod-jacks.sum-jacks x-jack{flex-direction:row;align-items:center;gap:6px}x-module .mod-resize{position:absolute;right:0;bottom:0;width:14px;height:14px;cursor:nwse-resize;background:linear-gradient(135deg,transparent 0 6px,var(--muted-foreground) 6px 7px,transparent 7px 9px,var(--muted-foreground) 9px 10px,transparent 10px);opacity:.55;z-index:3}x-module .mod-resize:hover{opacity:1}x-module.active{border-color:var(--primary);box-shadow:inset 0 1px #ffffff14,0 0 0 1px var(--primary),0 6px 18px #00000073}x-module:focus{outline:none}x-module.selected{box-shadow:inset 0 1px #ffffff14,0 0 0 2px oklch(.78 .18 250 / 80%),0 6px 18px #00000073}.rack-marquee{position:fixed;pointer-events:none;border:1px solid oklch(.78 .18 250);background:oklch(.78 .18 250 / 12%);border-radius:2px;z-index:50}.mod-actions-panel{min-width:200px}.mod-actions-panel .project-menu-actions{grid-template-columns:repeat(2,1fr)}.container{--container-color: 210 30% 50%;border:1px solid hsl(var(--container-color) / .55);background:hsl(var(--container-color) / .08);border-radius:6px;box-sizing:border-box;pointer-events:none;transition:background .14s ease,border-color .14s ease,box-shadow .14s ease}.container-head{display:flex;align-items:center;padding:0 10px;background:hsl(var(--container-color) / .18);border-bottom:1px solid hsl(var(--container-color) / .4);border-radius:5px 5px 0 0;cursor:default;user-select:none;pointer-events:auto;position:relative;z-index:3;box-sizing:border-box;width:100%}.container-label{font-family:ui-monospace,monospace;font-size:10px;text-transform:uppercase;letter-spacing:.15em;color:hsl(var(--container-color) / .95)}.container-block .container-head{border-bottom-style:dashed}.container-head-right{margin-left:auto;display:inline-flex;align-items:center;gap:4px;pointer-events:auto;position:relative;z-index:1}.container-head .byp{font:600 9px ui-monospace,monospace;letter-spacing:.1em;padding:1px 5px;border-radius:3px;background:#110c09;color:var(--muted-foreground);border:1px solid hsl(var(--container-color) / .45);cursor:pointer}.container-head .byp:hover{color:hsl(var(--container-color) / 1);border-color:hsl(var(--container-color) / .9)}.container-head .byp.mute.on{background:#ee343b;color:oklch(.98 .02 25);border-color:#ee343b;box-shadow:0 0 6px #ee343b99}.container-head .byp.solo.on{background:#e5c226;color:#0e0a07;border-color:#e5c226;box-shadow:0 0 6px #e5c22699}.container-head .close{background:transparent;border:none;color:var(--muted-foreground);font-size:14px;line-height:1;padding:0 4px;cursor:pointer}.container-head .close:hover{color:var(--destructive)}.container.container-collapsed{pointer-events:auto;cursor:grab;z-index:2;background:linear-gradient(180deg,hsl(var(--container-color) / .34),hsl(var(--container-color) / .18) 45%,hsl(var(--container-color) / .26));border-color:hsl(var(--container-color) / .85);box-shadow:inset 0 1px hsl(var(--container-color) / .55),inset 0 -1px hsl(var(--container-color) / .25),0 6px 18px #00000059}.container.container-collapsed .container-head{background:linear-gradient(180deg,hsl(var(--container-color) / .55),hsl(var(--container-color) / .32));border-bottom:1px solid hsl(var(--container-color) / .5);box-shadow:0 1px hsl(var(--container-color) / .25)}.container.container-collapsed .container-label{color:hsl(var(--container-color) / 1);text-shadow:0 1px 0 oklch(0 0 0 / 35%)}.container.container-collapsed:active{cursor:grabbing}.container.container-collapsed:before,.container.container-collapsed:after{content:"";position:absolute;width:4px;height:4px;border-radius:50%;background:radial-gradient(circle at 30% 30%,hsl(var(--container-color) / .9),hsl(var(--container-color) / .25) 70%,#0006);box-shadow:0 1px #0006;pointer-events:none}.container.container-collapsed:before{left:6px;bottom:6px}.container.container-collapsed:after{right:6px;bottom:6px}x-module.in-collapsed-block{opacity:0;pointer-events:none;transition:opacity .12s ease}.container-face{display:none;position:absolute;inset:40px 14px 14px;flex-direction:column;gap:14px;overflow:hidden;pointer-events:auto}.container.container-collapsed.container-block .container-face{display:flex}.container-face-jacks,.container-face-knobs{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:flex-start;justify-content:center;padding:4px 0}.container-face-jacks{margin-top:auto}.container-face-knobs:not(:empty)+.container-face-jacks:not(:empty){border-top:1px dashed hsl(var(--container-color) / .35);padding-top:10px}.container.container-collapsed.container-block .container-face:has(.container-face-jacks:empty):has(.container-face-knobs:empty):after{content:"expand, then right-click a knob or jack to expose it";align-self:center;margin:auto;font:10px ui-monospace,monospace;letter-spacing:.12em;text-transform:uppercase;color:hsl(var(--container-color) / .7);text-align:center;pointer-events:none}.ctx-color-row{display:flex;gap:4px;padding:4px 8px}.ctx-color-swatch{--container-color: 210 30% 50%;width:18px;height:18px;border-radius:3px;border:1px solid hsl(var(--container-color) / .8);background:hsl(var(--container-color) / .6);cursor:pointer;padding:0}.ctx-color-swatch:hover{outline:1px solid var(--primary)}.history-bar{display:flex;align-items:center;gap:2px;padding:0 4px;border-left:1px solid var(--border);height:28px}.history-bar .hist-btn{padding:2px 8px;font-size:16px;line-height:1;min-width:28px;color:var(--muted-foreground)}.history-bar .hist-btn:hover:not(:disabled){color:var(--foreground)}.history-bar .hist-btn:disabled{opacity:.35}x-midi{display:flex;flex-direction:column;gap:6px;width:100%;font-family:ui-monospace,monospace;font-size:10px;color:var(--muted-foreground)}x-midi .midi-row{display:flex;align-items:center;gap:6px}x-midi .midi-led{width:8px;height:8px;border-radius:50%;background:#322d29;box-shadow:inset 0 1px #0000007f;transition:background 80ms linear;flex-shrink:0}x-midi .midi-led.on{background:#73d25d;box-shadow:0 0 6px #73d25db3}x-midi .midi-select{flex:1;min-width:0;background:#110c09;color:var(--foreground);border:1px solid var(--panel-edge);border-radius:4px;padding:3px 4px;font:inherit}x-midi .midi-status{font-size:9px;line-height:1.3;opacity:.75}x-midi .midi-debug{font-size:9px;line-height:1.3;opacity:.6;font-family:ui-monospace,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}x-knob,x-jack{display:inline-flex;flex-direction:column;align-items:center;gap:3px;user-select:none;position:relative}.lbl-mini{font-family:ui-monospace,monospace;font-size:8px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted-foreground);line-height:1}.val-mini{font-family:ui-monospace,monospace;font-size:9px;color:#d1cdc7;line-height:1}.val-mini span{color:var(--muted-foreground);margin-left:2px}x-sequencer-grid{display:block;width:100%;margin:0;flex:1;min-height:80px;height:80px}x-sequencer-grid canvas{display:block;width:100%;height:100%;min-height:60px;background:#0e0a08;border:1px solid var(--panel-edge);border-radius:4px;cursor:crosshair}x-module .mod-body.seq-body x-sequencer-grid{height:auto}x-keyboard{display:block;width:100%;margin:4px 0}x-scope{display:block;width:100%;min-height:80px;flex:1 1 100%;margin:4px 0}x-scope .scope-canvas{display:block;width:100%;height:100%;min-height:80px;background:#0e0a08;border:1px solid var(--panel-edge);border-radius:4px}x-keyboard canvas{display:block;width:100%;height:90px;background:#0e0a08;border:1px solid var(--panel-edge);border-radius:4px;cursor:pointer;touch-action:none}.kb-row{display:flex;justify-content:flex-end;padding:2px 6px 4px}.kb-latch{background:#231e1b;color:var(--muted-foreground);border:1px solid var(--panel-edge);border-radius:4px;padding:2px 8px;font-family:ui-monospace,monospace;font-size:9px;text-transform:uppercase;letter-spacing:.1em;cursor:pointer}.kb-latch.on{background:oklch(.3 .08 70);color:#e4e4e4;border-color:#f7a224}.kb-latch:hover{background:#322d29;color:var(--foreground)}.shop{border-top:1px solid var(--border);background:var(--card);padding:12px 16px;display:flex;flex-direction:column;gap:8px;max-height:240px;overflow-y:auto}.shop h3{margin:0;font-family:ui-monospace,monospace;font-size:11px;text-transform:uppercase;letter-spacing:.15em;color:var(--muted-foreground)}.shop .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px}.shop-card{background:var(--panel);border:1px solid var(--panel-edge);border-radius:6px;padding:10px;display:flex;flex-direction:column;gap:4px;text-align:left}.shop-card .name{font-weight:600;font-size:12px}.shop-card .blurb{color:var(--muted-foreground);font-size:11px;line-height:1.3}.shop-card .row{display:flex;align-items:center;justify-content:flex-end;margin-top:4px}.minimap{position:absolute;left:12px;bottom:12px;width:192px;background:#080504eb;border:1px solid var(--panel-edge);border-radius:6px;padding:6px;display:flex;flex-direction:column;gap:6px;z-index:20;box-shadow:0 4px 16px #0006;touch-action:none;overflow:hidden}.minimap canvas{display:block;background:#100c0a;border-radius:4px}.minimap-recenter{font:600 11px ui-monospace,monospace;text-transform:uppercase;letter-spacing:.05em;padding:5px 8px;color:var(--foreground);background:#1a1512;border:1px solid var(--panel-edge);border-radius:4px;cursor:pointer}.minimap-recenter:hover{background:#26201c}.fs-global{position:fixed;top:10px;right:12px;z-index:300;padding:4px 10px;border-radius:6px;border:1px solid var(--panel-edge);background:#0c0603bf;color:var(--muted-foreground);font-size:16px;line-height:1;cursor:pointer}.fs-global:hover{color:var(--foreground);border-color:var(--primary)}.audio-debug{display:flex;align-items:center;gap:4px;padding:2px 6px;border:1px solid var(--panel-edge, transparent);border-radius:4px;background:#0003;flex-wrap:wrap}.audio-debug-dot{width:8px;height:8px;border-radius:9999px;background:var(--muted-foreground);opacity:.5}.audio-debug-dot.on{background:#f94144;opacity:1;animation:audio-debug-pulse 1s ease-in-out infinite}@keyframes audio-debug-pulse{0%,to{opacity:1}50%{opacity:.35}}.audio-debug-btn{font:inherit;font-size:11px;line-height:1;padding:4px 6px;color:var(--muted-foreground);background:none;border:1px solid transparent;border-radius:3px;cursor:pointer}.audio-debug-btn:hover:not(:disabled){color:var(--foreground);background:var(--muted)}.audio-debug-btn:disabled{opacity:.4;cursor:default}.burger-menu{position:relative;display:inline-flex;align-items:center}.burger-btn{font-size:18px;line-height:1;padding:4px 10px;color:var(--muted-foreground);background:none;border:1px solid transparent;border-radius:4px;cursor:pointer}.burger-btn:hover,.burger-btn.active{color:var(--foreground);background:var(--muted)}.burger-panel{position:absolute;top:calc(100% + 6px);right:0;z-index:50;min-width:280px;padding:10px;background:var(--panel, var(--muted));border:1px solid var(--panel-edge, var(--border));border-radius:6px;box-shadow:0 8px 24px #00000059;display:flex;flex-direction:column;gap:8px}.burger-fmt-row{display:flex;gap:4px}.burger-fmt-btn{flex:1;font:inherit;font-size:11px;line-height:1;padding:6px 8px;color:var(--muted-foreground);background:var(--muted);border:1px solid var(--panel-edge, var(--border));border-radius:3px;cursor:pointer}.burger-fmt-btn:hover:not(:disabled){color:var(--foreground)}.burger-fmt-btn.active{color:var(--primary);border-color:var(--primary)}.burger-fmt-btn:disabled{opacity:.4;cursor:default}.burger-section-label{font-family:ui-monospace,monospace;font-size:9px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted-foreground)}.project-menu{position:relative;display:inline-flex;align-items:center}.project-menu-btn{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;font:11px ui-monospace,monospace;color:var(--muted-foreground);background:#15110d;border:1px solid var(--panel-edge);border-radius:4px;cursor:pointer;max-width:240px}.project-menu-btn:hover,.project-menu-btn.active{color:var(--foreground);border-color:var(--primary)}.project-menu-label{text-transform:uppercase;letter-spacing:.12em;font-size:9px;color:var(--muted-foreground)}.project-menu-name{color:var(--foreground);font-weight:600;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-menu-caret{font-size:9px;opacity:.7}.project-menu-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:50;min-width:280px;max-height:70vh;overflow-y:auto;padding:10px;background:var(--panel, var(--muted));border:1px solid var(--panel-edge, var(--border));border-radius:6px;box-shadow:0 8px 24px #00000059;display:flex;flex-direction:column;gap:10px}.project-menu-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.project-menu-action{padding:6px 8px;font:11px ui-monospace,monospace;color:var(--foreground);background:#1a1512;border:1px solid var(--panel-edge);border-radius:4px;cursor:pointer;text-align:left}.project-menu-action:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.project-menu-action.danger{color:oklch(.78 .16 25)}.project-menu-action.danger:hover:not(:disabled){border-color:#f14d4c;color:oklch(.85 .18 25)}.project-menu-section{display:flex;flex-direction:column;gap:4px}.project-menu-list{display:flex;flex-direction:column;gap:2px}.project-menu-item{padding:5px 8px;font:11px ui-monospace,monospace;color:var(--muted-foreground);background:transparent;border:1px solid transparent;border-radius:4px;cursor:pointer;text-align:left}.project-menu-item:hover{color:var(--foreground);background:#1a1512}.project-menu-item.active{color:var(--primary);border-color:var(--primary);background:#1d140d}.btn.rec{color:oklch(.95 .05 30);background:#2b1311;border-color:#843c38;font-weight:600}.btn.rec:hover:not(:disabled){filter:brightness(1.12)}.btn.rec.active{background:#a20519;border-color:#f14d4c;animation:rec-pulse 1.2s ease-in-out infinite}@keyframes rec-pulse{0%,to{box-shadow:0 0 #f941447f}50%{box-shadow:0 0 0 6px #f9414400}}.import-overlay{position:fixed;inset:0;z-index:200;background:oklch(.08 1 60 / 60%);display:flex;align-items:center;justify-content:center}.import-box{width:min(520px,92vw);background:var(--card);border:1px solid var(--panel-edge);border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:10px;box-shadow:0 16px 48px #00000073}.import-ta{width:100%;min-height:180px;background:#0c0806;color:var(--foreground);border:1px solid var(--panel-edge);border-radius:6px;padding:10px;font:12px ui-monospace,monospace;resize:vertical;outline:none}.import-ta:focus{border-color:var(--primary)}.import-row{display:flex;justify-content:flex-end;gap:8px}.import-row.right{justify-content:flex-end}.auth-button{display:inline-flex;gap:6px;align-items:center}.auth-btn{background:var(--card);color:var(--foreground);border:1px solid var(--panel-edge);border-radius:6px;padding:4px 10px;font:12px ui-sans-serif,system-ui;cursor:pointer;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auth-btn:hover{border-color:var(--primary)}.auth-btn.ghost{background:transparent;opacity:.75}.auth-box{width:min(360px,92vw);background:var(--card);border:1px solid var(--panel-edge);border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:10px;box-shadow:0 16px 48px #00000073}.auth-title{font:600 13px ui-sans-serif,system-ui;color:var(--foreground)}.auth-input{background:#0c0806;color:var(--foreground);border:1px solid var(--panel-edge);border-radius:6px;padding:8px 10px;font:12px ui-sans-serif,system-ui;outline:none}.auth-input:focus{border-color:var(--primary)}.auth-error{color:#fa6863;font-size:11px;min-height:14px}.auth-row{display:flex;gap:8px}.auth-divider{text-align:center;font-size:11px;color:var(--muted-foreground, #888);opacity:.6}.help-overlay{position:fixed;inset:0;z-index:210;background:#03010199;display:flex;align-items:center;justify-content:center}.help-box{width:min(480px,92vw);max-height:80vh;overflow:auto;background:var(--card);border:1px solid var(--panel-edge);border-radius:8px;padding:14px 16px 18px;display:flex;flex-direction:column;gap:10px;box-shadow:0 16px 48px #00000073;color:var(--foreground);font-size:12px}.help-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.help-title{font-family:ui-monospace,monospace;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--primary)}.help-close{background:transparent;border:none;color:var(--muted-foreground);font-size:18px;line-height:1;padding:0 4px;cursor:pointer}.help-close:hover{color:var(--destructive)}.help-blurb{color:var(--muted-foreground);line-height:1.45}.help-sec-title{font-family:ui-monospace,monospace;font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted-foreground);margin:6px 0 4px;border-bottom:1px solid var(--panel-edge);padding-bottom:3px}.help-list{display:grid;grid-template-columns:max-content 1fr;gap:4px 12px;margin:0}.help-list dt{font-family:ui-monospace,monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--primary);white-space:nowrap}.help-list dd{margin:0;color:var(--foreground);line-height:1.4}x-timeline{display:flex;flex-direction:column;flex:0 0 auto;border-top:1px solid var(--border);background:var(--card);color:var(--foreground);font-size:12px;user-select:none}x-timeline.collapsed .x-timeline-body{display:none}x-timeline .x-timeline-dock{display:flex;flex-direction:column}x-timeline .x-timeline-header{display:flex;align-items:center;gap:12px;padding:6px 12px;border-bottom:1px solid var(--border);background:#1e1a16}x-timeline .x-timeline-toggle{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;font-size:10px;color:var(--muted-foreground);border:1px solid var(--panel-edge);border-radius:3px;background:transparent}x-timeline .x-timeline-toggle:hover{color:var(--foreground)}x-timeline .x-timeline-title{font-family:ui-monospace,monospace;font-size:11px;text-transform:uppercase;letter-spacing:.18em;color:var(--muted-foreground)}x-timeline .x-timeline-rewind{width:22px;height:22px;border:1px solid var(--panel-edge);border-radius:3px;color:var(--foreground);background:transparent;font-size:12px}x-timeline .x-timeline-rewind:hover{background:var(--muted)}x-timeline .x-timeline-time{font-size:12px;color:var(--foreground);min-width:160px;text-align:left}x-timeline .x-timeline-bpmlbl{color:var(--muted-foreground);font-family:ui-monospace,monospace;font-size:11px;display:inline-flex;align-items:center;gap:6px}x-timeline .x-timeline-bpm,x-timeline .x-timeline-sig{width:56px;font:inherit;color:var(--foreground);background:var(--background);border:1px solid var(--panel-edge);border-radius:3px;padding:2px 4px;text-align:right;-moz-appearance:textfield;appearance:textfield}x-timeline .x-timeline-sig{width:32px}x-timeline .x-timeline-bpm::-webkit-outer-spin-button,x-timeline .x-timeline-bpm::-webkit-inner-spin-button,x-timeline .x-timeline-sig::-webkit-outer-spin-button,x-timeline .x-timeline-sig::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}x-timeline .x-timeline-play{width:28px;height:22px;border:1px solid var(--panel-edge);border-radius:3px;color:var(--primary);background:transparent;font-size:12px;font-weight:600}x-timeline .x-timeline-play:hover{background:var(--muted)}x-timeline .x-timeline-play.active{background:var(--primary);color:var(--primary-foreground);border-color:transparent}x-timeline .x-timeline-loopbtn{padding:3px 10px;font-family:ui-monospace,monospace;font-size:11px;color:var(--muted-foreground);background:transparent;border:1px solid var(--panel-edge);border-radius:3px}x-timeline .x-timeline-loopbtn.active{color:var(--primary-foreground);background:var(--primary);border-color:transparent}x-timeline .x-timeline-body{display:flex;flex-direction:column;max-height:280px;min-height:120px;overflow:hidden}x-timeline .x-timeline-scroll{overflow-x:auto;overflow-y:auto;flex:1;display:block;position:relative}x-timeline .x-timeline-ruler{position:sticky;top:0;height:28px;background:#191512;border-bottom:1px solid var(--border);z-index:2;margin-left:140px}x-timeline .x-timeline-ruler-canvas{display:block}x-timeline .x-timeline-playhead{position:absolute;top:0;left:140px;width:1px;height:100%;background:var(--primary);pointer-events:none;box-shadow:0 0 6px var(--primary);will-change:transform;z-index:3}x-timeline .x-timeline-loop{position:absolute;top:0;height:50%;background:#f7a2242e;border-left:1px solid var(--primary);border-right:1px solid var(--primary);cursor:grab}x-timeline .x-timeline-loop-h{position:absolute;top:0;bottom:0;width:5px;cursor:ew-resize;background:var(--primary);opacity:.6}x-timeline .x-timeline-loop-l{left:-1px}x-timeline .x-timeline-loop-r{right:-1px}x-timeline .x-timeline-lanes{display:block;margin-left:0}x-timeline .x-timeline-lane{display:flex;align-items:stretch;height:28px;border-bottom:1px solid oklch(.22 .008 60)}x-timeline .x-timeline-lane-label{position:sticky;left:0;z-index:1;width:140px;flex:0 0 140px;padding:0 10px;display:flex;align-items:center;gap:4px;font-family:ui-monospace,monospace;font-size:11px;color:var(--muted-foreground);background:var(--card);border-right:1px solid var(--border);white-space:nowrap}x-timeline .x-timeline-lane-name{flex:1;overflow:hidden;text-overflow:ellipsis}x-timeline .x-timeline-lane-btn{flex:0 0 auto;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;padding:0;font:600 9px ui-monospace,monospace;color:var(--muted-foreground);background:transparent;border:1px solid var(--border);border-radius:3px;cursor:pointer;user-select:none}x-timeline .x-timeline-lane-btn:hover{color:var(--foreground);border-color:var(--muted-foreground)}x-timeline .x-timeline-lane-mute.active{background:#c53637d9;border-color:#fa6863;color:#f8f8f8}x-timeline .x-timeline-lane-solo.active{background:oklch(.72 .18 80 / .85);border-color:oklch(.85 .18 80);color:#0b0b0b}x-timeline .x-timeline-lane-label.is-muted .x-timeline-lane-name{opacity:.5;text-decoration:line-through}x-timeline .x-timeline-lane.is-muted .x-timeline-block{opacity:.35;filter:grayscale(.5)}x-timeline .x-timeline-lane.is-soloed .x-timeline-lane-track{background-color:oklch(.72 .18 80 / .06)}x-timeline .x-timeline-lane-track{position:relative;flex:1;background:repeating-linear-gradient(to right,transparent 0 59px,oklch(.24 .008 60) 59px 60px);cursor:crosshair}x-timeline .x-timeline-block{position:absolute;top:3px;bottom:3px;background:oklch(.55 .14 240 / .6);border:1px solid oklch(.7 .16 240);border-radius:3px;cursor:grab}x-timeline .x-timeline-block:hover{background:oklch(.6 .14 240 / .75)}x-timeline .x-timeline-block.is-live{background:oklch(.72 .18 80 / .7);border-color:oklch(.85 .18 80);box-shadow:0 0 0 1px oklch(.85 .18 80 / .5)}x-timeline .x-timeline-block-h{position:absolute;top:0;bottom:0;width:5px;cursor:ew-resize}x-timeline .x-timeline-block-l{left:-2px}x-timeline .x-timeline-block-r{right:-2px}x-drum-grid{display:flex;flex-direction:column;flex:1 0 100%;width:100%;min-height:0;gap:4px}x-drum-grid .drum-tabs{display:flex;gap:4px}x-drum-grid .drum-tab{font:700 10px ui-monospace,monospace;letter-spacing:.06em;padding:2px 8px;border-radius:3px;background:#110c09;color:var(--muted-foreground);border:1px solid var(--panel-edge);cursor:pointer}x-drum-grid .drum-tab.active{background:oklch(.28 .1 70);color:#fdecd1;border-color:oklch(.55 .14 70)}x-drum-grid .drum-tab.playing{box-shadow:0 0 0 1px oklch(.85 .18 80) inset,0 0 6px oklch(.85 .18 80 / .6);color:oklch(.95 .05 80)}x-drum-grid .drum-tab.clr{margin-left:auto}x-drum-grid .drum-tab:hover{color:var(--primary);border-color:var(--primary)}x-drum-grid .drum-canvas{display:block;width:100%;flex:1 1 auto;min-height:120px;background:#0a0705;border:1px solid var(--panel-edge);border-radius:4px;touch-action:none}.brand-link{cursor:pointer}.brand-link:hover{text-shadow:0 0 8px oklch(.8 .15 70 / .5)}.game-menu,.campaign,.mission{flex:1 1 auto;display:flex;align-items:center;justify-content:center;overflow:auto;background:radial-gradient(ellipse at 50% -20%,oklch(.2 .03 70 / .6),transparent 60%),var(--background)}.game-menu-inner,.campaign-inner,.city-inner,.mission-inner{display:flex;flex-direction:column;gap:16px;width:min(520px,92vw);padding:32px 0}.game-menu-title{font-family:ui-monospace,monospace;font-size:34px;letter-spacing:.3em;color:var(--primary);text-align:center;text-shadow:0 0 24px oklch(.8 .15 70 / .35)}.game-menu-sub{text-align:center;color:var(--muted-foreground);font-size:13px;margin-bottom:24px;letter-spacing:.08em}.game-menu-btn{display:flex;flex-direction:column;gap:4px;align-items:flex-start;padding:16px 20px;border-radius:8px;border:1px solid var(--panel-edge);background:linear-gradient(#201914,#110c09);box-shadow:inset 0 1px #ffffff0f,0 4px 12px #0000004d;text-align:left;transition:border-color .15s,transform .1s}.game-menu-btn:hover{border-color:var(--primary);transform:translateY(-1px)}.game-menu-btn-title{font-family:ui-monospace,monospace;font-size:15px;text-transform:uppercase;letter-spacing:.15em;color:var(--foreground)}.game-menu-btn-sub{font-size:12px;color:var(--muted-foreground)}.campaign-head{display:flex;align-items:center;gap:14px}.game-back{font:700 11px ui-monospace,monospace;letter-spacing:.08em;padding:5px 10px;border-radius:4px;border:1px solid var(--panel-edge);background:#110c09;color:var(--muted-foreground)}.game-back:hover{color:var(--primary);border-color:var(--primary)}.campaign-heading{font-family:ui-monospace,monospace;font-size:16px;text-transform:uppercase;letter-spacing:.2em;color:var(--foreground)}.campaign-reset{margin-left:auto;font:700 11px ui-monospace,monospace;letter-spacing:.08em;padding:5px 10px;border-radius:4px;border:1px solid var(--panel-edge);background:#110c09;color:var(--muted-foreground)}.campaign-reset:hover{color:var(--destructive);border-color:var(--destructive)}.dmap-inner{gap:12px;padding:20px 0 28px}.dmap-frame{position:relative;overflow:hidden;border:1px solid var(--panel-edge);border-radius:10px;background:radial-gradient(ellipse at 50% 20%,oklch(.17 .02 70 / .7),transparent 70%),#080504;box-shadow:inset 0 0 60px #00000073,0 6px 20px #00000059;padding:8px}.dmap-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.55;pointer-events:none;user-select:none}.dmap{position:relative;display:block;width:100%;height:auto}.world{position:relative;overflow:hidden;flex:1 1 auto;display:block;background:#060301}.world-stage{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);aspect-ratio:1280 / 832;min-width:100%;min-height:100%}.world-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.75) saturate(.85);user-select:none}.world-pin{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px;border:0;background:none;cursor:pointer}.world-pin-dot{width:18px;height:18px;border-radius:50%;background:radial-gradient(circle at 35% 35%,oklch(.85 .16 70),#bb6802);box-shadow:0 0 0 3px oklch(.85 .16 70 / 25%),0 0 18px #fea92f99;animation:world-pin-pulse 2.2s ease-in-out infinite}.world-pin.cleared .world-pin-dot{background:radial-gradient(circle at 35% 35%,#86e79c,#33854a);box-shadow:0 0 0 3px #75d78d40,0 0 14px #65c67d80;animation:none}@keyframes world-pin-pulse{0%,to{box-shadow:0 0 0 3px oklch(.85 .16 70 / 25%),0 0 18px #fea92f99}50%{box-shadow:0 0 0 8px oklch(.85 .16 70 / 12%),0 0 26px #fea92fbf}}.world-pin-plaque{display:flex;flex-direction:column;gap:2px;align-items:center;padding:6px 12px;border-radius:6px;border:1px solid var(--panel-edge);background:#0a0704e0;box-shadow:0 4px 14px #00000073;transition:border-color .15s,transform .12s}.world-pin:hover .world-pin-plaque{border-color:var(--primary);transform:translateY(-2px)}.world-pin-title{font:700 12px ui-monospace,monospace;text-transform:uppercase;letter-spacing:.14em;color:var(--foreground);white-space:nowrap}.world-pin-sub{font-size:11px;color:var(--muted-foreground);white-space:nowrap}.world-pin--city .world-pin-dot{background:radial-gradient(circle at 35% 35%,#7dddfb,#2e7b9c);box-shadow:0 0 0 3px #6ccdea40,0 0 14px #5bbdda80;animation:none}.dmap-grid line{stroke:#e7b3750a;stroke-width:1}.dmap-rubble circle{fill:#dfb58514}.dmap-corridor-under{fill:none;stroke:#1b150f;stroke-width:12;stroke-linecap:round;stroke-linejoin:round}.dmap-corridor{fill:none;stroke:#5245368c;stroke-width:2.5;stroke-dasharray:3 7;stroke-linecap:round;stroke-linejoin:round}.dmap-corridor.walked{stroke:#ed990ecc;stroke-dasharray:none;filter:drop-shadow(0 0 4px oklch(.8 .16 70 / .5))}.dmap-entrance{font:700 10px ui-monospace,monospace;letter-spacing:.2em;fill:#856d52}.dmap-room{cursor:pointer;outline:none}.dmap-room.locked{cursor:not-allowed}.dmap-room-glow{fill:none}.dmap-room.current .dmap-room-glow{fill:#fea92f14}.dmap-room-body{fill:#1b1510;stroke:#584a3b;stroke-width:2;transition:stroke .15s,fill .15s}.dmap-room:hover:not(.locked) .dmap-room-body,.dmap-room:focus-visible .dmap-room-body{stroke:var(--primary);fill:#261d15}.dmap-room.complete .dmap-room-body{stroke:#308639}.dmap-room.locked{opacity:.4}.dmap-door{stroke:#080504;stroke-width:4}.dmap-room-num{font:700 15px ui-monospace,monospace;fill:var(--primary);pointer-events:none}.dmap-room.complete .dmap-room-num{fill:#6a8a6a}.dmap-room-badge{font-size:13px;fill:#57cb60;pointer-events:none}.dmap-room.locked .dmap-room-badge{fill:var(--muted-foreground)}.dmap-room.treasure .dmap-room-body{stroke:#ca9d33;fill:#241b0c}.dmap-room.treasure:not(.locked) .dmap-room-body{filter:drop-shadow(0 0 6px oklch(.72 .13 85 / 35%))}.dmap-room.treasure:hover:not(.locked) .dmap-room-body,.dmap-room.treasure:focus-visible .dmap-room-body{stroke:#ecbd3a}.dmap-room.treasure .dmap-room-num{fill:#e3b842}.dmap-room.treasure.complete .dmap-room-body{stroke:#84862d}.dmap-here-ring{fill:none;stroke:var(--primary);stroke-width:2;transform-box:fill-box;transform-origin:center;animation:dmap-pulse 1.6s ease-out infinite;pointer-events:none}.dmap-here-label{font:700 9px ui-monospace,monospace;letter-spacing:.18em;fill:var(--primary);pointer-events:none}@keyframes dmap-pulse{0%{opacity:.9;transform:scale(.82)}70%{opacity:0;transform:scale(1.15)}to{opacity:0;transform:scale(1.15)}}.mission-brief{display:flex;flex-direction:column;gap:12px;padding:20px;border-radius:8px;border:1px solid var(--panel-edge);background:#110c09b3}.mission-brief p{margin:0;font-size:13px;color:var(--muted-foreground);line-height:1.5}.mission-start{align-items:center;text-align:center;align-self:center;margin-top:8px}.mission-inner.mission-wide{width:100%;height:100%;min-height:0;padding:12px 16px 14px}.mission-inner.mission-wide .mission-stage{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.mission-stage>.mission-brief{max-width:640px;width:100%;margin:auto}.mission-level{display:grid;grid-template-columns:1fr 200px;grid-template-rows:1fr auto;flex:1 1 auto;min-height:0;gap:12px;padding:16px;border-radius:8px;border:1px solid var(--panel-edge);background:#110c09b3}.mission-canvas{grid-column:1;grid-row:1;display:block;min-height:0;border-radius:6px;border:1px solid var(--panel-edge);outline:none;background:#171310}.mission-hint{grid-column:1;grid-row:2;min-height:18px;text-align:center;font:700 11px ui-monospace,monospace;letter-spacing:.08em;color:#fdc357}.mission-side{grid-column:2;grid-row:1 / span 2;display:flex;flex-direction:column;gap:12px;height:0;min-height:100%}.mission-side .mission-filter-panel:has(.mission-inv-list){flex:1 1 auto;min-height:0}.mission-filter-panel{display:flex;flex-direction:column;align-items:center;gap:14px;padding:14px 12px;border-radius:8px;border:1px solid var(--panel-edge);background:linear-gradient(#1a1511,#0e0a08)}.mission-filter-panel.unattached x-knob{opacity:.35;pointer-events:none}.mission-filter-head{display:flex;flex-direction:column;align-items:center;gap:2px;align-self:stretch}.mission-filter-state{font-size:10px;color:var(--muted-foreground)}.mission-filter-panel x-knob{display:flex;flex-direction:column;align-items:center;gap:4px;transform:scale(1.5);transform-origin:center;margin:18px 0}.mission-filter-panel .mission-meter{align-self:stretch}.mission-meter{display:flex;flex-direction:column;gap:4px}.mission-meter-track{height:10px;border-radius:999px;border:1px solid var(--panel-edge);background:#080504;overflow:hidden}.mission-meter-fill{height:100%;width:0%;border-radius:999px;background:#966626;transition:width .12s linear}.mission-meter-fill.reveal{transition:width .7s cubic-bezier(.22,1,.36,1)}.mission-meter-fill.hot{background:oklch(.8 .17 80);box-shadow:0 0 8px oklch(.8 .17 80 / .7)}.mission-status{text-align:center;font-family:ui-monospace,monospace;font-size:12px;letter-spacing:.1em;color:var(--muted-foreground)}.mission-done{align-items:center;text-align:center}.mission-done-title{font-family:ui-monospace,monospace;font-size:20px;letter-spacing:.25em;color:#6fda75;text-shadow:0 0 16px oklch(.8 .17 145 / .4)}.mission-done-actions{display:flex;flex-direction:column;gap:10px;width:260px;margin-top:10px}.mission-done-actions .game-menu-btn{align-items:center;text-align:center;align-self:stretch;padding:13px 20px;margin:0;font-family:ui-monospace,monospace;font-size:13px;text-transform:uppercase;letter-spacing:.15em;color:var(--foreground)}.mission-done-actions .mission-start{border-color:#308639;color:#6fda75;box-shadow:inset 0 1px #ffffff0f,0 0 14px #6fda752e,0 4px 12px #0000004d}.mission-done-actions .mission-start:hover{border-color:#6fda75}.mission-play{position:relative;grid-column:1;grid-row:1;min-height:0;min-width:0}.mission-play .mission-canvas{grid-column:unset;grid-row:unset;width:100%;height:100%}.mz-minimap{position:absolute;right:12px;bottom:12px;border:1px solid oklch(.42 .04 65);border-radius:8px;pointer-events:none;z-index:4;box-shadow:0 4px 14px #00000073}.mission-inv-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(42px,1fr));gap:6px;align-self:stretch;min-height:0;overflow-y:auto}.mission-inv-empty{font-size:11px;color:var(--muted-foreground);font-style:italic;text-align:center;padding:6px 0}.item-icon{position:relative;display:flex;width:100%;height:100%}.item-icon svg{width:100%;height:100%;display:block;filter:drop-shadow(0 0 3px currentColor);opacity:.92}.shop-dlg-ico:has(.item-icon[data-kind=consumable]),.inv-tile:has(.item-icon[data-kind=consumable]),.pzf-card:has(.item-icon[data-kind=consumable]){--hex-frame: polygon(25% 2%, 75% 2%, 98% 50%, 75% 98%, 25% 98%, 2% 50%);position:relative;border-color:transparent;border-radius:0;clip-path:var(--hex-frame);background:#ad524db3}.shop-dlg-ico:has(.item-icon[data-kind=consumable]):before,.inv-tile:has(.item-icon[data-kind=consumable]):before,.pzf-card:has(.item-icon[data-kind=consumable]):before{content:"";position:absolute;inset:1.5px;clip-path:var(--hex-frame);background:radial-gradient(circle at 50% 30%,#22100f,#0d0505)}.inv-tile:has(.item-icon[data-kind=consumable]):hover,.pzf-card:has(.item-icon[data-kind=consumable]):hover{border-color:transparent;background:#f47b74d9}.inv-tile:has(.item-icon[data-kind=consumable]) .inv-count{right:50%;transform:translate(50%)}.inv-tile{aspect-ratio:1;position:relative;display:flex;align-items:center;justify-content:center;border-radius:6px;border:1px solid var(--panel-edge);background:radial-gradient(circle at 50% 30%,#18130e,#0a0705)}.inv-tile:hover{border-color:var(--primary)}.inv-tile .item-icon{width:62%;height:62%}.inv-count{position:absolute;right:3px;bottom:2px;font:700 9px ui-monospace,monospace;color:var(--foreground);text-shadow:0 1px 3px rgba(0,0,0,.9);pointer-events:none}.inv-tile.usable{border-color:#5c4221;box-shadow:0 0 8px #bd813040;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.inv-tile.usable:hover{border-color:var(--primary);box-shadow:0 0 10px #bd813073}.inv-tile.lifting,.inv-tile.racked{opacity:.35}.inv-tile.pzf-ghost{width:54px;height:54px}.pz-overlay{position:absolute;inset:0 0 auto;min-height:100%;max-height:calc(100% + 44px);display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:6px;border:1px solid var(--primary);background:#0a0704f5;box-shadow:0 8px 32px #0000007f;z-index:5;overflow-y:auto;overflow-x:hidden}.pz-head{display:flex;align-items:center;justify-content:space-between}.pz-overlay.pzf{max-height:max(100%,calc(100dvh - 120px))}.pz-title{font:700 12px ui-monospace,monospace;letter-spacing:.2em;color:var(--primary)}.pz-board{position:relative;flex:1 1 auto;display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:12px;align-items:start;min-height:max-content}.pz-col{display:flex;flex-direction:column;gap:8px;min-width:0}.pz-rack-lbl{text-align:center}.pz-rack{display:flex;flex-flow:row wrap;justify-content:center;gap:10px}.pz-rack .pz-panel{flex:1 1 190px;min-width:0;max-width:280px}.pz-panel{display:flex;flex-direction:column;align-items:center;gap:7px;padding:9px 8px;border-radius:8px;border:1px solid var(--panel-edge);background:linear-gradient(#1a1511,#0e0a08)}.pz-object{border-color:#5c4221}.pz-panel-title{font:700 11px ui-monospace,monospace;letter-spacing:.15em;color:var(--foreground)}.pz-panel-sub{font-size:9px;color:var(--muted-foreground);text-align:center}.pz-monitor{display:flex;flex-direction:column;align-items:center;gap:4px;margin-top:2px}.pz-monitor-seg{display:flex;border:1px solid var(--panel-edge);border-radius:4px;overflow:hidden}.pz-monitor-btn{font:700 8px ui-monospace,monospace;letter-spacing:.06em;padding:4px 6px;background:#110c09;color:var(--muted-foreground);border:0;border-right:1px solid var(--panel-edge);cursor:pointer}.pz-monitor-btn:last-child{border-right:0}.pz-monitor-btn:hover{color:var(--foreground)}.pz-monitor-btn.on{background:oklch(.32 .07 70);color:var(--primary)}.pz-steps{display:flex;flex-direction:column;gap:4px;padding:6px 8px;border-radius:5px;border:1px solid var(--panel-edge);background:#0a0705}.pz-step-row{display:flex;align-items:center;gap:4px}.pz-step-row.dead{opacity:.35}.pz-step-lbl{font:700 7px ui-monospace,monospace;letter-spacing:.08em;color:var(--muted-foreground);width:22px}.pz-step{width:9px;height:9px;border-radius:2px;background:#1a1512;border:1px solid oklch(.26 .015 60)}.pz-step.on{background:oklch(.5 .11 70);border-color:#b77610}.pz-step.play{border-color:#e7b643}.pz-step.on.play{background:#dfa11a}.pz-note-row{display:flex;align-items:center;gap:4px}.pz-note-cell{width:26px;height:26px;padding:0;border-radius:6px;background:#130e0a;border:1px solid oklch(.3 .02 60);color:var(--muted-foreground);font:700 11px ui-monospace,monospace;cursor:pointer}.pz-note-cell:hover{border-color:#675136}.pz-note-cell.on{background:oklch(.5 .11 70);border-color:#b77610;color:#0c0806}.pz-note-cell.play{border-color:#e7b643}.pz-note-cell.on.play{background:#dfa11a}.pz-mel{display:flex;flex-direction:column;gap:3px}.pz-mel-lbl{width:26px;text-align:right}.pz-mel-key{appearance:none;background:none;border:0;padding:0 2px;border-radius:4px;cursor:pointer;transition:color .12s}.pz-mel-key:hover,.pz-mel-key:focus-visible{color:var(--foreground);outline:none;text-shadow:0 0 6px oklch(.75 .14 70 / 50%)}.pz-mel-key.ping{animation:mel-key-ping .3s ease-out}@keyframes mel-key-ping{0%{color:oklch(.85 .15 70);text-shadow:0 0 8px oklch(.75 .15 70 / 80%)}to{color:var(--muted-foreground);text-shadow:none}}.pz-mel-cell{width:22px;height:22px;border-radius:5px}.fz-overlay{position:absolute;inset:0;display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:6px;border:1px solid var(--primary);background:#0a0704f5;box-shadow:0 8px 32px #0000007f;z-index:5;overflow-y:auto}.fz-head{display:flex;align-items:center;justify-content:space-between}.fz-title{font:700 12px ui-monospace,monospace;letter-spacing:.2em;color:var(--primary)}.fz-body{flex:1 1 auto;display:grid;grid-template-columns:minmax(160px,220px) 1fr;gap:14px;align-items:start}.fz-shelf{display:flex;flex-direction:column;gap:8px;min-height:0}.fz-shelf-list{display:flex;flex-wrap:wrap;align-content:flex-start;gap:8px;overflow-y:auto}.fz-bench-lbl{text-align:center}.fz-item{display:flex;align-items:center;justify-content:center;width:54px;height:54px;flex:0 0 auto;border-radius:6px;border:1px solid var(--panel-edge);background:#110c09;cursor:grab;user-select:none;touch-action:none}.fz-item .item-icon{width:32px;height:32px}.fz-item:hover{border-color:var(--primary)}.fz-item.dragging{opacity:.35}.fz-item-slotted{cursor:pointer}.fz-item-out{cursor:default;border-color:#58994a}.fz-ghost{position:fixed;z-index:50;pointer-events:none;opacity:.9;box-shadow:0 8px 24px #0009;border-color:var(--primary)}.fz-bench{display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px;border-radius:8px;border:1px solid oklch(.4 .06 70);background:linear-gradient(#1a1511,#0e0a08)}.fz-bench.shake{animation:fz-shake .35s}@keyframes fz-shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}50%{transform:translate(5px)}75%{transform:translate(-3px)}}.fz-bench.fused{border-color:#58994a}.fz-bench-row{display:flex;align-items:center;justify-content:center;gap:8px;width:100%}.fz-slots{display:flex;align-items:stretch;gap:6px;flex:2 1 0;min-width:0}.fz-slot{flex:1 1 0;min-width:0;min-height:60px;display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:2px;border-radius:8px;border:2px dashed oklch(.32 .02 60);padding:3px}.fz-slot.hover{border-color:var(--primary);background:#1f130680}.fz-slot.filled{border-style:solid;border-color:#714d1d;align-items:center}.fz-slot.filled:hover{border-color:var(--primary)}.fz-slot-hint{font:700 9px ui-monospace,monospace;letter-spacing:.15em;color:var(--muted-foreground);text-align:center}.fz-slot-sub{font-size:9px;color:var(--muted-foreground);text-align:center;opacity:.7}.fz-plus{align-self:center;font:700 16px ui-monospace,monospace;color:var(--muted-foreground)}.fz-arrow{font:700 16px ui-monospace,monospace;color:var(--muted-foreground)}.fz-out{flex:1 1 0;min-width:0;min-height:60px;display:flex;align-items:center;justify-content:center;border-radius:8px;border:2px dashed oklch(.32 .02 60);padding:3px}.fz-out.ready{border-style:solid;border-color:#58994a;animation:fz-glow 1.2s ease-out}@keyframes fz-glow{0%{box-shadow:0 0 #68b457b3}to{box-shadow:0 0 24px 8px #68b45700}}.fz-out-q{font:700 22px ui-monospace,monospace;color:#544438;text-align:center}.fz-fuse-btn{font:700 13px ui-monospace,monospace;letter-spacing:.25em;padding:9px 30px;border-radius:6px;border:1px solid var(--primary);background:#3b2301;color:var(--primary);cursor:pointer}.fz-fuse-btn:hover:not(:disabled){background:oklch(.36 .08 70)}.fz-fuse-btn:disabled{opacity:.35;cursor:default;border-color:var(--panel-edge);color:var(--muted-foreground)}.fz-status{font-size:11px;color:var(--muted-foreground);text-align:center;min-height:16px}.pz-stick{display:flex;flex-direction:column;align-items:center;gap:4px;margin-top:2px;-webkit-user-select:none;user-select:none}.pz-stick-lbls{display:flex;justify-content:space-between;width:150px;padding:0 4px}.pz-stick-lbl{font:700 8px ui-monospace,monospace;letter-spacing:.12em;color:var(--muted-foreground);transition:color 80ms ease,text-shadow 80ms ease}.pz-stick-lbl.on{color:var(--primary);text-shadow:0 0 8px oklch(.8 .16 70 / 60%)}.pz-stick-gate{position:relative;width:150px;height:58px;border-radius:10px;background:linear-gradient(#110c08,#1b150f);border:1px solid oklch(.11 .01 60);box-shadow:inset 0 2px 6px #0000008c;cursor:pointer;touch-action:none}.pz-stick-slot{position:absolute;left:50%;top:12px;width:122px;height:34px;transform:translate(-50%);border-radius:17px;background:#050302;box-shadow:inset 0 2px 4px #000000b3,0 1px #ffffff0f}.pz-stick-knob{position:absolute;left:50%;top:4px;width:30px;height:30px;margin-left:-15px;border-radius:9999px;background:radial-gradient(circle at 32% 28%,#453b33,#19120d 72%);border:2px solid oklch(.11 .01 60);box-shadow:inset 0 2px 3px #ffffff24,inset 0 -3px 5px #0000008c,0 4px 8px #0000008c;display:flex;align-items:center;justify-content:center;cursor:grab;touch-action:none;transition:transform .11s ease}.pz-stick.grab .pz-stick-knob{cursor:grabbing;transition:none}.pz-stick-led{width:9px;height:9px;border-radius:9999px;background:#1d140d;box-shadow:inset 0 1px 2px #000000b3;transition:background 80ms ease,box-shadow 80ms ease}.pz-stick.live .pz-stick-led{background:#6fe276;box-shadow:0 0 9px #6fe276}.pz-stick.latched .pz-stick-led{background:#fea92f;box-shadow:0 0 9px #fea92f}.pz-stick-hint{opacity:.6}.pz-panel x-knob{display:flex;flex-direction:column;align-items:center;gap:4px;transform:scale(1.2);margin:10px 0}.pz-panel .mission-meter{align-self:stretch}.pz-jack{display:flex;align-items:center;gap:6px;padding:3px 8px;border-radius:999px;border:1px solid transparent;background:none;cursor:grab;touch-action:none}.pz-jack-hole{width:16px;height:16px;border-radius:50%;border:3px solid oklch(.45 .04 70);background:#050302;box-shadow:inset 0 0 4px #000c;transition:border-color .12s,box-shadow .12s}.pz-jack-lbl{font:700 9px ui-monospace,monospace;letter-spacing:.12em;color:var(--muted-foreground)}.pz-jack:hover .pz-jack-hole{border-color:var(--primary)}.pz-jack.sel .pz-jack-hole{border-color:var(--primary);box-shadow:0 0 10px #faab3fcc,inset 0 0 4px #000c}.pz-jack.patched .pz-jack-hole{border-color:#d58d25;background:oklch(.35 .08 70)}.pz-jack-row{display:flex;justify-content:center;gap:14px}.pz-cables{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.pz-cable{fill:none;stroke:#e99b2ad9;stroke-width:3;stroke-linecap:round;filter:drop-shadow(0 2px 3px oklch(0 0 0 / 50%))}.pz-cable-drag{stroke:oklch(.85 .16 80 / .95);stroke-dasharray:7 5}.pzf-board{position:relative;flex:1 1 auto;display:flex;flex-direction:column;min-height:max-content}.pzf-main{display:flex;flex-direction:column;gap:8px;min-width:0}.pzf-tab{align-self:flex-start;font:700 9px ui-monospace,monospace;letter-spacing:.2em;color:var(--muted-foreground);padding:2px 8px;border:1px solid var(--panel-edge);border-radius:4px 4px 0 0;border-bottom:0;background:#16100c}.pzf-lock,.pzf-yours,.pzf-inv{display:flex;flex-direction:column;gap:6px;padding:8px;border-radius:0 6px 6px;border:1px solid var(--panel-edge);background:#0f0b08}.pzf-lock{border-color:#5c4221}.pzf-lock-sub{font-size:9px;color:var(--muted-foreground);text-align:center}.pzf-mystery{display:flex;justify-content:center;gap:10px;padding:2px 0 4px}.pzf-mystery-card{display:flex;flex-direction:column;align-items:center;gap:6px;width:76px;padding:8px 6px;border-radius:8px;border:1px dashed oklch(.42 .05 70);background:linear-gradient(#19120e,#0c0806);color:var(--muted-foreground)}.pzf-mystery-tex{align-self:stretch;height:38px;border-radius:5px;border:1px solid oklch(.28 .02 60);background:repeating-linear-gradient(45deg,oklch(.24 .02 65 / 55%) 0 3px,transparent 3px 8px),radial-gradient(circle at 20% 30%,oklch(.26 .03 70 / 40%),transparent 60%),#130e0a;box-shadow:inset 0 1px 3px #0000007f}.pzf-mixer{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:8px 12px;border-radius:8px;border:1px solid oklch(.4 .06 70);background:linear-gradient(#1a1511,#0e0a08)}.pzf-ins{display:flex;flex-direction:column;align-items:center;gap:6px}.pzf-ins-target{display:flex;justify-content:center;gap:10px}.pz-jack.fixed{cursor:default}.pz-jack.fixed .pz-jack-hole{box-shadow:inset 0 0 0 2px #382b1e}.pz-cable-fixed{opacity:.55}.pzf-judge{display:flex;flex-direction:column;align-items:stretch;gap:8px;flex:0 1 200px;min-width:130px}.pzf-yours.drop-hot{border-color:var(--primary);background:#1a120a}.pzf-slots{display:flex;flex-flow:row wrap;justify-content:center;gap:10px}.pzf-slots .pz-panel{max-width:280px}.pzf-slot-empty{flex:1 1 190px;max-width:280px;min-height:92px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:2px dashed oklch(.34 .03 70);border-radius:8px;font-size:10px;color:var(--muted-foreground)}.pzf-slot-ghost .item-icon{width:30px;height:30px;display:block;opacity:.35;filter:grayscale(.6)}.pzf-slot-ghost .item-icon svg{width:100%;height:100%}.pzf-slot-want{font-size:10px;letter-spacing:.08em;text-transform:uppercase;opacity:.75}.pzf-slot-how{font-size:9px;font-style:italic;opacity:.55}.pzf-yours.drop-hot .pzf-slot-empty.owned{border-color:#936831;color:var(--foreground)}.pzf-yours.drop-hot .pzf-slot-empty.owned .pzf-slot-ghost .item-icon{opacity:.6;filter:none}.pzf-slotted{position:relative;flex:1 1 190px;min-width:0;max-width:300px}.pzf-slotted .pz-panel{width:100%}.pzf-eject{position:absolute;top:4px;right:4px;z-index:2;width:18px;height:18px;border-radius:4px;border:1px solid var(--panel-edge);background:#1a1511;color:var(--muted-foreground);font:700 9px ui-monospace,monospace;cursor:pointer}.pzf-eject:hover{color:var(--foreground);border-color:var(--primary)}.pzf-inv-list{display:flex;flex-wrap:wrap;align-content:flex-start;gap:8px}.pzf-inv-empty{font-size:10px;font-style:italic;color:var(--muted-foreground);text-align:center;padding:6px 0}.pzf-card{position:relative;display:flex;align-items:center;justify-content:center;width:54px;height:54px;border-radius:8px;border:1px solid oklch(.4 .06 70);background:linear-gradient(#1d1712,#110c09);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.pzf-card .item-icon{width:32px;height:32px}.pzf-card:hover{border-color:var(--primary)}.pzf-card.lifting{opacity:.35}.pzf-card.missing{opacity:.45;cursor:default;border-style:dashed}.pzf-card-q{font:700 18px ui-monospace,monospace;color:var(--muted-foreground)}.pzf-count{position:absolute;right:3px;bottom:2px;font:700 9px ui-monospace,monospace;color:var(--muted-foreground)}.pzf-ghost{position:fixed;z-index:50;transform:translate(-50%,-50%) rotate(-2deg);pointer-events:none;box-shadow:0 10px 24px #0009}.pzf-ghost.ok{outline:2px solid oklch(.72 .17 145);border-radius:6px}.wk-drop-ok{box-shadow:inset 0 0 0 2px #54bf5c7f}.pz-shift{display:flex;align-items:center;gap:8px;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none}.pz-shift-lbls{display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;height:96px;padding:4px 0}.pz-shift-lbl{font:700 8px ui-monospace,monospace;letter-spacing:.12em;color:var(--muted-foreground);background:none;border:0;padding:2px 4px;cursor:pointer;transition:color 80ms ease,text-shadow 80ms ease}.pz-shift-lbl.on{color:var(--primary);text-shadow:0 0 8px oklch(.8 .16 70 / 60%)}.pz-shift-lbl.cur{text-decoration:underline;text-underline-offset:3px}.pz-shift-gate{position:relative;width:74px;height:108px;border-radius:12px;background:linear-gradient(#110c08,#1b150f);border:1px solid oklch(.11 .01 60);box-shadow:inset 0 2px 6px #0000008c;cursor:pointer;touch-action:none}.pz-shift-rail{position:absolute;left:13px;top:50%;width:14px;height:84px;transform:translateY(-50%);border-radius:7px;background:#050302;box-shadow:inset 0 2px 4px #000000b3,0 1px #ffffff0f}.pz-shift-row{position:absolute;left:13px;top:calc(50% + var(--row) * 30px - 7px);width:44px;height:14px;border-radius:7px;background:#050302;box-shadow:inset 0 2px 4px #000000b3,0 1px #ffffff0f}.pz-shift-home{position:absolute;left:20px;top:50%;width:24px;height:24px;margin:-12px 0 0 -12px;border-radius:9999px;background:#050302;box-shadow:inset 0 2px 4px #000000b3,0 1px #ffffff0f}.pz-shift-knob{position:absolute;left:20px;top:50%;width:34px;height:34px;margin:-17px 0 0 -17px;border-radius:9999px;background:radial-gradient(circle at 32% 28%,#453b33,#19120d 72%);border:2px solid oklch(.11 .01 60);box-shadow:inset 0 2px 3px #ffffff24,inset 0 -3px 5px #0000008c,0 4px 8px #0000008c;display:flex;align-items:center;justify-content:center;cursor:grab;touch-action:none;transition:transform .11s ease}.pz-shift.grab .pz-shift-knob{cursor:grabbing;transition:none}.pz-shift-grip{width:16px;height:4px;border-radius:2px;background:#3b3129;box-shadow:0 6px #30271f,0 -6px #30271f}.pz-status{min-height:16px;text-align:center;font:700 11px ui-monospace,monospace;letter-spacing:.1em;color:#fdc357}.pz-confirm{display:block;width:100%;margin-top:6px;padding:7px 0;font:700 10px ui-monospace,monospace;letter-spacing:.18em;color:var(--foreground);background:linear-gradient(#4c3211,#2e1a01);border:1px solid oklch(.14 .02 70);border-radius:5px;box-shadow:inset 0 1px 2px #ffffff24,0 3px 6px #00000073;cursor:pointer}.pz-confirm:active{transform:translateY(1px);box-shadow:inset 0 2px 4px #00000073}.pz-confirm.wrong{animation:pz-wrong .45s ease}.pz-judge-col{display:flex;flex-direction:column;gap:2px}.pz-replay{background:linear-gradient(#07333f,#001f27);color:#91dbf2}.pz-replay:disabled{opacity:.45;cursor:default}@keyframes pz-wrong{0%,to{transform:none}20%,60%{transform:translate(-4px);background:#9b1e22}40%,80%{transform:translate(4px);background:#9b1e22}}.coin-badge{font:700 12px ui-monospace,monospace;letter-spacing:.08em;color:#f5d34a;padding:5px 10px;border-radius:4px;border:1px solid var(--panel-edge);background:#110c09;white-space:nowrap}.city{position:relative;overflow:hidden;flex:1 1 auto;display:block;background:#040208}.city-stage{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);aspect-ratio:1920 / 1088;min-width:100%;min-height:100%}.city-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;user-select:none;-webkit-user-drag:none}.city-spot{position:absolute;display:flex;align-items:flex-end;justify-content:center;padding:0 0 3%;border:none;border-radius:10px;background:transparent;cursor:pointer}.city-spot:before{content:"";position:absolute;inset:0;border-radius:10px;border:2px solid oklch(.85 .16 85 / 0);background:radial-gradient(ellipse at 50% 70%,oklch(.85 .16 85 / 0),transparent 70%);transition:border-color .18s,background .18s;pointer-events:none}.city-spot:hover:before,.city-spot:focus-visible:before{border-color:#fdc4368c;background:radial-gradient(ellipse at 50% 70%,oklch(.85 .16 85 / .12),transparent 70%)}.city-spot-plaque{display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 14px 8px;border-radius:6px;border:1px solid oklch(.5 .05 70 / .6);background:#0c0603d1;backdrop-filter:blur(2px);box-shadow:0 4px 14px #00000073;transform:translateY(0);transition:transform .18s,border-color .18s,box-shadow .18s;pointer-events:none}.city-spot:hover .city-spot-plaque,.city-spot:focus-visible .city-spot-plaque{transform:translateY(-4px);border-color:var(--primary);box-shadow:0 6px 18px #0000008c,0 0 18px #faab3f40}.city-spot-title{font:700 13px ui-monospace,monospace;text-transform:uppercase;letter-spacing:.14em;color:var(--foreground);text-shadow:0 1px 3px oklch(0 0 0 / 70%)}.city-spot-sub{font-size:10.5px;color:var(--muted-foreground);white-space:nowrap}.city-spot.locked{cursor:not-allowed}.city-spot.locked:hover:before,.city-spot.locked:focus-visible:before{border-color:#7f6e6059;background:radial-gradient(ellipse at 50% 70%,oklch(.4 .02 60 / .08),transparent 70%)}.city-spot.locked .city-spot-plaque{opacity:.72;filter:saturate(.4)}.city-spot.locked:hover .city-spot-plaque,.city-spot.locked:focus-visible .city-spot-plaque{transform:none;border-color:#765e4499;box-shadow:0 4px 14px #00000073}.city-hud{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:14px;padding:12px 16px;background:linear-gradient(oklch(0 0 0 / 55%),transparent);pointer-events:none}.city-hud>*{pointer-events:auto}.city-title{text-shadow:0 1px 4px oklch(0 0 0 / 80%)}.city-hud .city-title{position:absolute;left:50%;transform:translate(-50%)}.city-hud-bottom{position:absolute;right:16px;bottom:12px;display:flex;pointer-events:none}.city-hud-bottom>*{pointer-events:auto}.shop-dlg-overlay{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;background:#0000008c}.shop-dlg{display:flex;flex-direction:column;width:min(880px,94vw);max-height:84vh;border-radius:10px;border:1px solid var(--panel-edge);background:var(--card);box-shadow:0 18px 48px #0000007f}.shop-dlg-head{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border)}.shop-dlg-title{font:700 13px ui-monospace,monospace;letter-spacing:.2em;color:var(--primary)}.shop-dlg-close{margin-left:4px;padding:4px 9px;border-radius:4px;border:1px solid var(--panel-edge);background:transparent;color:var(--muted-foreground)}.shop-dlg-close:hover{color:var(--foreground);border-color:var(--primary)}.shop-dlg-head .coin-badge{margin-left:auto}.coin-badge-btn{cursor:pointer}.coin-badge-btn:hover{border-color:#f5d34a;background:#1d140d}.shop-dlg-panes{flex:1;min-height:0;display:flex;gap:0}.shop-dlg-pane{flex:1 1 0;min-width:0;display:flex;flex-direction:column}.shop-dlg-pane+.shop-dlg-pane{border-left:1px solid var(--border)}.shop-dlg-pane-title{padding:10px 14px 4px;font:700 10px ui-monospace,monospace;letter-spacing:.18em;color:var(--muted-foreground)}.shop-dlg-list{flex:1;min-height:0;overflow:auto;padding:8px;display:flex;flex-direction:column;gap:6px}.shop-dlg-empty{padding:14px 8px;font-size:11.5px;color:var(--muted-foreground);text-align:center}@media(max-width:720px){.shop-dlg-panes{flex-direction:column;overflow:auto}.shop-dlg-pane{flex:0 0 auto}.shop-dlg-pane+.shop-dlg-pane{border-left:0;border-top:1px solid var(--border)}}.shop-dlg-row{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:6px;border:1px solid var(--border);background:#1a1512}.shop-dlg-meta{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.shop-dlg-ico{flex:0 0 auto;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:6px;border:1px solid var(--panel-edge);background:radial-gradient(circle at 50% 30%,#18130e,#0a0705)}.shop-dlg-ico .item-icon{width:24px;height:24px}.shop-dlg-name{font:700 11px ui-monospace,monospace;letter-spacing:.12em;color:var(--foreground)}.shop-dlg-btn{flex:0 0 auto;white-space:nowrap}.lib-count{font:700 10px ui-monospace,monospace;letter-spacing:.14em;color:var(--muted-foreground)}.lib-row-blurb{font-size:11px;line-height:1.35;color:var(--muted-foreground)}.lib-row-stats{font:600 10px ui-monospace,monospace;letter-spacing:.06em;color:#c1a057}.lib-row-mystery{opacity:.6}.lib-row-mystery .lib-row-stats{color:var(--muted-foreground)}.lib-mystery-mark{font:700 18px ui-monospace,monospace;color:var(--muted-foreground)}.shop-dlg-foot{padding:10px 16px;border-top:1px solid var(--border);font-size:11px;color:var(--muted-foreground)}.mission-coins{font:700 13px ui-monospace,monospace;letter-spacing:.08em;color:#f5d34a}.workshop{display:flex;flex-direction:column;height:100dvh;overflow:hidden}.wk-head{display:flex;align-items:center;gap:14px;padding:10px 16px}.wk-title{margin:0;font-size:20px}.wk-transport{margin-left:auto;display:flex;align-items:center;gap:10px;padding-right:52px}.wk-btn{font:inherit;font-size:11px;letter-spacing:.08em;padding:6px 14px;border-radius:8px;border:1px solid var(--border);background:#1d140d;color:var(--foreground);cursor:pointer}.wk-btn:hover{border-color:var(--primary);color:var(--primary)}.wk-btn.on{background:oklch(.32 .07 70);color:var(--primary);border-color:var(--primary)}.wk-btn.busy{opacity:.7;pointer-events:none}.wk-reset.armed,.wk-reset.armed:hover{background:#521615;border-color:#e24947;color:oklch(.78 .14 25)}.wk-bpm{width:120px}.wk-bpm-val{min-width:56px;text-align:right}.wk-slider{accent-color:var(--primary);width:130px}.wk-board{position:relative;flex:1;min-height:0;display:flex;gap:14px;padding:0 16px 16px}.wk-bench{flex:1;min-width:0;position:relative;overflow:hidden;border:1px dashed oklch(.35 .03 65);border-radius:14px;background:#120c07}.wk-bench.panning{cursor:grabbing}.wk-minimap{position:absolute;right:12px;bottom:12px;width:148px;height:148px;border:1px solid oklch(.42 .04 65);border-radius:8px;cursor:pointer;touch-action:none;z-index:4;box-shadow:0 4px 14px #00000073}.wk-world{position:absolute;left:0;top:0;width:4000px;height:4000px;transform-origin:0 0;will-change:transform;background-image:radial-gradient(oklch(.24 .02 60) 1.5px,transparent 1.5px);background-size:48px 48px}.wk-inv{width:230px;overflow:auto}.wk-module{width:220px}.wk-slotted{position:absolute;max-width:240px;cursor:grab;touch-action:none;user-select:none}.wk-slotted.dragging{cursor:grabbing;z-index:3}.wk-slotted .pz-panel{width:220px}.wk-speaker{border-color:#875814}.wk-speaker{width:300px}.wk-speaker .pz-jack-row{flex-wrap:wrap;gap:8px;align-self:stretch;justify-content:space-evenly}.wk-speaker .pz-jack{padding:3px 4px}.wk-speaker .pz-jack-lbl{white-space:nowrap}.wk-mixer .pz-jack-row{flex-wrap:wrap;gap:8px;align-self:stretch;justify-content:space-evenly}.wk-mixer .pz-jack{padding:3px 4px}.wk-mixer .pz-jack-lbl{white-space:nowrap}.wk-mod-head{position:relative;align-self:stretch;display:flex;align-items:center;justify-content:center;min-height:18px}.wk-pwr{position:absolute;left:0;top:50%;transform:translateY(-50%);width:14px;height:14px;padding:0;border-radius:50%;border:2px solid oklch(.42 .04 70);background:#0c0806;cursor:pointer;transition:border-color .12s,background .12s,box-shadow .12s}.wk-pwr:hover{border-color:var(--primary)}.wk-pwr.on{border-color:#e99b2a;background:oklch(.65 .16 70);box-shadow:0 0 8px #ed990eb3}.wk-cells{display:flex;gap:3px}.wk-cell{width:20px;height:24px;font:inherit;font-size:10px;border-radius:5px;border:1px solid var(--border);background:#1d140d;color:var(--muted-foreground);cursor:pointer;padding:0}.wk-cell:hover{border-color:#675136}.wk-cell.on{background:oklch(.32 .07 70);color:var(--primary);border-color:#b77610}.game-tip{position:fixed;z-index:300;max-width:240px;padding:8px 11px 9px;border-radius:8px;border:1px solid oklch(.5 .09 70);background:linear-gradient(#201914fa,#0e0a07fa);box-shadow:0 8px 24px #0000008c,inset 0 1px #ffffff12;pointer-events:none;opacity:0;transform:translateY(4px);transition:opacity .12s ease,transform .12s ease}.game-tip.show{opacity:1;transform:translateY(0)}.game-tip.below{transform:translateY(-4px)}.game-tip.below.show{transform:translateY(0)}.game-tip:after{content:"";position:absolute;left:var(--tip-arrow-x, 50%);bottom:-4.5px;width:8px;height:8px;margin-left:-4px;transform:rotate(45deg);background:#0e0a07;border-right:1px solid oklch(.5 .09 70);border-bottom:1px solid oklch(.5 .09 70)}.game-tip.below:after{bottom:auto;top:-4.5px;background:#201914;border:0;border-left:1px solid oklch(.5 .09 70);border-top:1px solid oklch(.5 .09 70)}.game-tip-title{font:700 11px ui-monospace,monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--primary)}.game-tip-body{margin-top:3px;font-size:11px;line-height:1.45;color:var(--foreground)}.game-tip-hint{margin-top:5px;font:700 8.5px ui-monospace,monospace;letter-spacing:.14em;color:var(--muted-foreground)}.game-tip-body[hidden],.game-tip-hint[hidden]{display:none}.chest-dlg{width:min(400px,92vw)}.chest-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--border);border-radius:6px;background:#120c0799}.chest-row-name{flex:1;font:600 12px ui-monospace,monospace;letter-spacing:.06em;color:var(--foreground)}.chest-take{padding:4px 12px;border-radius:4px;border:1px solid var(--panel-edge);background:transparent;font:700 10px ui-monospace,monospace;letter-spacing:.14em;color:#f5d34a;cursor:pointer}.chest-take:hover{border-color:#f5d34a;background:#1d140d}.chest-actions{display:flex;gap:8px;padding:4px 14px 14px}.chest-actions .game-menu-btn{flex:1}.mission-hp{display:flex;flex-direction:column;gap:6px}.hp-hearts{font-size:17px;line-height:1;letter-spacing:3px;user-select:none}.hp-heart{color:#e05555;text-shadow:0 0 8px oklch(.55 .2 25 / 45%)}.hp-heart.off{color:#3d2f2f;text-shadow:none}.death-overlay{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;background:#050000e5;animation:death-fade .5s ease-out}@keyframes death-fade{0%{opacity:0}to{opacity:1}}.death-card{display:flex;flex-direction:column;gap:14px;width:min(440px,92vw);padding:30px 34px;text-align:center;border:1px solid oklch(.42 .12 25);border-radius:10px;background:var(--card);box-shadow:0 18px 60px #0009}.death-title{font:800 21px ui-monospace,monospace;letter-spacing:.28em;color:#e05555;text-shadow:0 0 18px oklch(.55 .2 25 / 55%)}.death-sub{margin:0;font-size:12.5px;line-height:1.55;color:var(--muted-foreground)}
