: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-btn{margin-left:auto;font-size:16px;padding:4px 8px;color:var(--muted-foreground);background:none;border:1px solid transparent;border-radius:4px;cursor:pointer}.fs-btn:hover{color:var(--foreground);background:var(--muted)}.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)}.campaign-list{display:flex;flex-direction:column;gap:10px}.campaign-card{display:flex;align-items:center;gap:16px;padding:14px 16px;border-radius:8px;border:1px solid var(--panel-edge);background:linear-gradient(#1a1511,#0e0a08);text-align:left;transition:border-color .15s}.campaign-card:hover:not(.locked){border-color:var(--primary)}.campaign-card.locked{opacity:.45}.campaign-card.complete{border-color:#308639}.campaign-num{font-family:ui-monospace,monospace;font-size:22px;color:var(--primary);min-width:34px}.campaign-meta{flex:1 1 auto;display:flex;flex-direction:column;gap:2px}.campaign-title{font-family:ui-monospace,monospace;font-size:13px;text-transform:uppercase;letter-spacing:.12em;color:var(--foreground)}.campaign-tagline{font-size:11px;color:var(--muted-foreground)}.campaign-badge{font-size:14px;color:var(--muted-foreground)}.campaign-card.complete .campaign-badge{color:#57cb60}.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:min(980px,96vw)}.mission-level{display:grid;grid-template-columns:1fr 200px;grid-template-rows:auto auto;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;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}.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}.mission-play .mission-canvas{grid-column:unset;grid-row:unset;width:100%}.mission-inv-list{display:flex;flex-direction:column;gap:8px;align-self:stretch}.mission-inv-empty{font-size:11px;color:var(--muted-foreground);font-style:italic;text-align:center;padding:6px 0}.mission-inv-item{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border-radius:6px;border:1px solid var(--panel-edge);background:#0c0806}.mission-inv-name{font:700 11px ui-monospace,monospace;letter-spacing:.12em;color:var(--primary)}.mission-inv-blurb{font-size:10px;color:var(--muted-foreground);line-height:1.4}.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:none}.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}.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-direction:column;gap:8px;overflow-y:auto}.fz-bench-lbl{text-align:center}.fz-item{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border-radius:6px;border:1px solid var(--panel-edge);background:#110c09;cursor:grab;user-select:none;touch-action:none}.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;width:180px;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}.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-item-slotted .mission-inv-blurb{display:none}.fz-out{flex:1 1 0;min-width:0;min-height:60px;display:flex;flex-direction:column;align-items:stretch;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:grid;grid-template-columns:minmax(0,1fr) 190px;gap:10px;align-items:stretch;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;align-items:center;justify-content:center;border:2px dashed oklch(.34 .03 70);border-radius:8px;font-size:10px;font-style:italic;color:var(--muted-foreground)}.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-direction:column;gap:8px}.pzf-inv-empty{font-size:10px;font-style:italic;color:var(--muted-foreground);text-align:center;padding:6px 0}.pzf-card{display:flex;flex-direction:column;gap:3px;padding:8px;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:hover{border-color:var(--primary)}.pzf-card.lifting{opacity:.35}.pzf-card.missing{opacity:.45;cursor:default;border-style:dashed}.pzf-card-name{font:700 10px ui-monospace,monospace;letter-spacing:.12em;color:var(--foreground)}.pzf-card-blurb{font-size:9px;color:var(--muted-foreground);line-height:1.4}.pzf-card-hint{opacity:.55}.pzf-ghost{position:fixed;z-index:50;width:170px;transform:translate(-50%,-50%) rotate(-2deg);pointer-events:none;box-shadow:0 10px 24px #0009}.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-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{margin-inline:auto}.city-fullscreen{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}.city-fullscreen:hover{color:var(--foreground);border-color:var(--primary)}.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(560px,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}.shop-dlg-list{overflow:auto;padding:8px;display:flex;flex-direction:column;gap:6px}.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-row.owned{border-color:#42543099}.shop-dlg-meta{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.shop-dlg-name{font:700 11px ui-monospace,monospace;letter-spacing:.12em;color:var(--foreground)}.shop-dlg-blurb{font-size:11.5px;color:var(--muted-foreground);line-height:1.35}.shop-dlg-btn{flex:0 0 auto;white-space:nowrap}.shop-dlg-note{flex:0 0 auto;font:700 10px ui-monospace,monospace;letter-spacing:.1em;color:var(--muted-foreground);text-transform:uppercase}.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}
