@import "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Outfit:wght@400;500;600;700;800;900&display=swap";*,:before,:after{box-sizing:border-box}:root{--bg-cream:#f5f0e8;--bg-warm:#ede8dc;--ink:#2d2a26;--ink-soft:#5c574e;--ink-muted:#9b9488;--green:#7cb886;--green-light:#c5e6ca;--orange:#e8a856;--orange-light:wheat;--blue:#6ba3d6;--blue-light:#bdd8f0;--purple:#a78bca;--purple-light:#d8cce8;--red:#d97b7b;--red-light:#f0c8c8;--pink:#d4a0b9;--yellow:#e5d26a;--border-w:2.5px;--border:var(--border-w) solid var(--ink);--radius:12px;--shadow:4px 4px 0px var(--ink);--shadow-sm:2px 2px 0px var(--ink);--shadow-hover:6px 6px 0px var(--ink);--font-display:"Outfit", system-ui, sans-serif;--font-body:"Space Grotesk", system-ui, sans-serif}html,body,#app{width:100%;height:100%;font-family:var(--font-body);background:var(--bg-cream);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0;overflow:hidden}.app-container{width:100%;height:100%;position:relative}.vue-flow{z-index:0;direction:ltr;width:100%;height:100%;position:relative;overflow:hidden}.vue-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.vue-flow__pane{z-index:1}.vue-flow__pane.draggable{cursor:grab}.vue-flow__pane.selection{cursor:pointer}.vue-flow__pane.dragging{cursor:grabbing}.vue-flow__transformationpane{transform-origin:0 0;z-index:2;pointer-events:none}.vue-flow__viewport{z-index:4;overflow:clip}.vue-flow__selection{z-index:6}.vue-flow__edge-labels{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute}.vue-flow__nodesselection-rect:focus,.vue-flow__nodesselection-rect:focus-visible{outline:none}.vue-flow .vue-flow__edges{pointer-events:none;overflow:visible}.vue-flow__edge-path,.vue-flow__connection-path{stroke:#b1b1b7;stroke-width:1px;fill:none}.vue-flow__edge{pointer-events:visibleStroke;cursor:pointer}.vue-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.vue-flow__edge.animated path.vue-flow__edge-interaction{stroke-dasharray:none;animation:none}.vue-flow__edge.inactive{pointer-events:none}.vue-flow__edge.selected,.vue-flow__edge:focus,.vue-flow__edge:focus-visible{outline:none}.vue-flow__edge.selected .vue-flow__edge-path,.vue-flow__edge:focus .vue-flow__edge-path,.vue-flow__edge:focus-visible .vue-flow__edge-path{stroke:#555}.vue-flow__edge-textwrapper{pointer-events:all}.vue-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.vue-flow__connection{pointer-events:none}.vue-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.vue-flow__connectionline{z-index:1001}.vue-flow__nodes{pointer-events:none;transform-origin:0 0}.vue-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.vue-flow__node.draggable{cursor:grab;pointer-events:all}.vue-flow__node.draggable.dragging{cursor:grabbing}.vue-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.vue-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.vue-flow__nodesselection-rect.dragging{cursor:grabbing}.vue-flow__handle{pointer-events:none;min-width:5px;min-height:5px;position:absolute}.vue-flow__handle.connectable{pointer-events:all;cursor:crosshair}.vue-flow__handle-bottom{bottom:0;left:50%;transform:translate(-50%,50%)}.vue-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.vue-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.vue-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.vue-flow__edgeupdater{cursor:move;pointer-events:all}.vue-flow__panel{z-index:5;margin:15px;position:absolute}.vue-flow__panel.top{top:0}.vue-flow__panel.bottom{bottom:0}.vue-flow__panel.left{left:0}.vue-flow__panel.right{right:0}.vue-flow__panel.center{left:50%;transform:translate(-50%)}@keyframes dashdraw{0%{stroke-dashoffset:10px}}:root{--vf-node-bg:#fff;--vf-node-text:#222;--vf-connection-path:#b1b1b7;--vf-handle:#555}.vue-flow__edge.updating .vue-flow__edge-path{stroke:#777}.vue-flow__edge-text{font-size:10px}.vue-flow__edge-textbg{fill:#fff}.vue-flow__connection-path{stroke:var(--vf-connection-path)}.vue-flow__node{cursor:grab}.vue-flow__node.selectable:focus,.vue-flow__node.selectable:focus-visible{outline:none}.vue-flow__node-default,.vue-flow__node-input,.vue-flow__node-output{text-align:center;width:150px;color:var(--vf-node-text);background-color:var(--vf-node-bg);border-style:solid;border-width:1px;border-color:var(--vf-node-color);border-radius:3px;padding:10px;font-size:12px}.vue-flow__node-default.selected,.vue-flow__node-default.selected:hover,.vue-flow__node-input.selected,.vue-flow__node-input.selected:hover,.vue-flow__node-output.selected,.vue-flow__node-output.selected:hover{box-shadow:0 0 0 .5px var(--vf-box-shadow)}.vue-flow__node-default.selected,.vue-flow__node-default:focus,.vue-flow__node-default:focus-visible,.vue-flow__node-input.selected,.vue-flow__node-input:focus,.vue-flow__node-input:focus-visible,.vue-flow__node-output.selected,.vue-flow__node-output:focus,.vue-flow__node-output:focus-visible{border:1px solid #555;outline:none}.vue-flow__node-default .vue-flow__handle,.vue-flow__node-input .vue-flow__handle,.vue-flow__node-output .vue-flow__handle{background:var(--vf-handle)}.vue-flow__node-default.selectable:hover,.vue-flow__node-input.selectable:hover,.vue-flow__node-output.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.vue-flow__node-input{--vf-node-color:var(--vf-node-color,#0041d0);--vf-handle:var(--vf-node-color,#0041d0);--vf-box-shadow:var(--vf-node-color,#0041d0);background:var(--vf-node-bg);border-color:var(--vf-node-color,#0041d0)}.vue-flow__node-input.selected,.vue-flow__node-input:focus,.vue-flow__node-input:focus-visible{border:1px solid var(--vf-node-color,#0041d0);outline:none}.vue-flow__node-default{--vf-handle:var(--vf-node-color,#1a192b);--vf-box-shadow:var(--vf-node-color,#1a192b);background:var(--vf-node-bg);border-color:var(--vf-node-color,#1a192b)}.vue-flow__node-default.selected,.vue-flow__node-default:focus,.vue-flow__node-default:focus-visible{border:1px solid var(--vf-node-color,#1a192b);outline:none}.vue-flow__node-output{--vf-handle:var(--vf-node-color,#ff0072);--vf-box-shadow:var(--vf-node-color,#ff0072);background:var(--vf-node-bg);border-color:var(--vf-node-color,#ff0072)}.vue-flow__node-output.selected,.vue-flow__node-output:focus,.vue-flow__node-output:focus-visible{border:1px solid var(--vf-node-color,#ff0072);outline:none}.vue-flow__nodesselection-rect,.vue-flow__selection{background:#0059dc14;border:1px dotted #0059dccc}.vue-flow__nodesselection-rect:focus,.vue-flow__nodesselection-rect:focus-visible,.vue-flow__selection:focus,.vue-flow__selection:focus-visible{outline:none}.vue-flow__handle{background:var(--vf-handle);border:1px solid #fff;border-radius:100%;width:6px;height:6px}.context-menu[data-v-32ca4beb]{z-index:1000;background:var(--bg-cream);border:var(--border);border-radius:var(--radius);min-width:200px;box-shadow:var(--shadow);font-family:var(--font-body);padding:6px;position:fixed}.context-menu-item[data-v-32ca4beb]{cursor:pointer;width:100%;font-size:13px;font-family:var(--font-body);color:var(--ink);text-align:left;background:0 0;border:none;border-radius:6px;justify-content:space-between;align-items:center;padding:8px 12px;transition:background .1s;display:flex}.context-menu-item[data-v-32ca4beb]:hover:not(.disabled){background:var(--bg-warm)}.context-menu-item.disabled[data-v-32ca4beb]{opacity:.4;cursor:default}.context-menu-left[data-v-32ca4beb]{align-items:center;gap:8px;display:flex}.context-menu-icon[data-v-32ca4beb]{text-align:center;width:20px;font-size:15px}.context-menu-shortcut[data-v-32ca4beb]{color:var(--ink-muted);font-size:11px;font-family:var(--font-body);margin-left:24px}.context-menu-separator[data-v-32ca4beb]{background:var(--ink-muted);opacity:.3;height:1px;margin:4px 8px}.base-module[data-v-9041860f]{background:var(--bg-cream);border:var(--border);border-radius:var(--radius);min-width:180px;box-shadow:var(--shadow);font-family:var(--font-body);color:var(--ink);transition:box-shadow .15s,transform .15s}.base-module[data-v-9041860f]:hover{box-shadow:var(--shadow-hover);transform:translate(-1px,-1px)}.module-header[data-v-9041860f]{background:var(--module-color);border-bottom:var(--border);cursor:grab;border-radius:10px 10px 0 0;justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.module-label[data-v-9041860f]{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.04em;color:var(--ink);font-size:13px;font-weight:700}.module-delete[data-v-9041860f]{background:var(--bg-cream);border:2px solid var(--ink);color:var(--ink);cursor:pointer;width:22px;height:22px;box-shadow:var(--shadow-sm);border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:14px;line-height:1;transition:all .1s;display:flex}.module-delete[data-v-9041860f]:hover{background:var(--red);box-shadow:3px 3px 0px var(--ink);transform:translate(-1px,-1px)}.module-body[data-v-9041860f]{padding:10px 12px}.module-select[data-v-e8ca3cf1]{flex-direction:column;gap:3px;display:flex}.module-select-label[data-v-e8ca3cf1]{font-family:var(--font-display);color:var(--ink-soft);font-size:11px;font-weight:600}.module-select-input[data-v-e8ca3cf1]{width:100%;font-family:var(--font-body);color:var(--ink);background:var(--bg-warm);border:var(--border);cursor:pointer;box-shadow:var(--shadow-sm);border-radius:6px;outline:none;padding:4px 8px;font-size:12px;font-weight:600}.module-select-input[data-v-e8ca3cf1]:focus{border-color:var(--select-focus-color)}.synth-controls[data-v-1f7efb74]{flex-direction:column;gap:8px;min-width:210px;display:flex}.adsr-row[data-v-1f7efb74]{gap:6px;display:flex}.adsr-knob[data-v-1f7efb74]{flex-direction:column;flex:1;align-items:center;gap:3px;display:flex}.adsr-label[data-v-1f7efb74]{font-family:var(--font-display);color:var(--ink-soft);font-size:10px;font-weight:700}.adsr-slider[data-v-1f7efb74]{appearance:none;background:var(--bg-warm);border:1.5px solid var(--ink);cursor:pointer;border-radius:3px;outline:none;width:100%;height:6px}.adsr-slider[data-v-1f7efb74]::-webkit-slider-thumb{appearance:none;background:var(--green);border:2px solid var(--ink);cursor:pointer;width:12px;height:12px;box-shadow:var(--shadow-sm);border-radius:50%}.pattern-grid[data-v-1f7efb74]{gap:3px;display:flex}.pattern-step[data-v-1f7efb74]{background:var(--bg-warm);cursor:pointer;border:1.5px solid var(--ink-muted);border-radius:4px;flex:1;justify-content:center;align-items:center;min-width:26px;height:30px;transition:all .1s;display:flex}.pattern-step.active[data-v-1f7efb74]{background:var(--green-light);border-color:var(--ink);box-shadow:var(--shadow-sm)}.pattern-step[data-v-1f7efb74]:hover{border-color:var(--ink);transform:translateY(-1px)}.step-empty[data-v-1f7efb74]{color:var(--ink-muted);font-size:14px}.note-select[data-v-1f7efb74]{width:100%;color:var(--ink);font-size:9px;font-family:var(--font-body);text-align:center;cursor:pointer;background:0 0;border:none;padding:0;font-weight:600}.note-select option[data-v-1f7efb74]{background:var(--bg-cream)}.drum-grid[data-v-ff7ed500]{flex-direction:column;gap:4px;min-width:300px;display:flex}.drum-row[data-v-ff7ed500]{align-items:center;gap:8px;display:flex}.track-name[data-v-ff7ed500]{font-family:var(--font-display);color:var(--ink-soft);text-align:right;text-transform:uppercase;flex-shrink:0;width:36px;font-size:10px;font-weight:700}.steps[data-v-ff7ed500]{gap:3px;display:flex}.drum-step[data-v-ff7ed500]{background:var(--bg-warm);border:1.5px solid var(--ink-muted);cursor:pointer;border-radius:3px;width:16px;height:16px;padding:0;transition:all .1s}.drum-step.beat[data-v-ff7ed500]{border-color:var(--ink-soft)}.drum-step.active[data-v-ff7ed500]{background:var(--orange);border-color:var(--ink);box-shadow:var(--shadow-sm)}.drum-step[data-v-ff7ed500]:hover{border-color:var(--ink);transform:translateY(-1px)}.module-slider[data-v-c53393a1]{flex-direction:column;gap:3px;display:flex}.module-slider-label[data-v-c53393a1]{font-family:var(--font-display);color:var(--ink-soft);justify-content:space-between;font-size:11px;font-weight:600;display:flex}.module-slider-value[data-v-c53393a1]{color:var(--ink);font-variant-numeric:tabular-nums;font-weight:700}.module-slider-input[data-v-c53393a1]{appearance:none;background:var(--bg-warm);border:1.5px solid var(--ink);cursor:pointer;border-radius:3px;outline:none;width:100%;height:6px}.module-slider-input[data-v-c53393a1]::-webkit-slider-thumb{appearance:none;background:var(--slider-color);border:2px solid var(--ink);cursor:pointer;width:14px;height:14px;box-shadow:var(--shadow-sm);border-radius:50%}.module-slider-input[data-v-c53393a1]::-moz-range-thumb{background:var(--slider-color);border:2px solid var(--ink);cursor:pointer;width:14px;height:14px;box-shadow:var(--shadow-sm);border-radius:50%}.delay-controls[data-v-50a8e1e5],.filter-controls[data-v-c8db21c5]{flex-direction:column;gap:8px;min-width:170px;display:flex}.oscilloscope-display[data-v-fcb1d8ab]{min-width:200px}.scope-canvas[data-v-fcb1d8ab]{border:1.5px solid var(--ink);border-radius:6px;width:100%;height:100px;display:block}.output-controls[data-v-d9695971]{flex-direction:column;gap:6px;display:flex}.gato-module[data-v-6c621bb3]{flex-direction:column;align-items:stretch;gap:8px;min-width:180px;padding:4px;display:flex}.cat-display[data-v-6c621bb3]{cursor:pointer;justify-content:center;align-items:center;transition:transform .15s;display:flex}.cat-display[data-v-6c621bb3]:hover{transform:scale(1.05)}.cat-display[data-v-6c621bb3]:active{transform:scale(.97)}.cat-display.animating[data-v-6c621bb3]{animation:.5s catBounce-6c621bb3}@keyframes catBounce-6c621bb3{0%{transform:scale(1)}20%{transform:scale(1.15)rotate(-5deg)}40%{transform:scale(1.1)rotate(5deg)}60%{transform:scale(1.05)rotate(-3deg)}80%{transform:scale(1.02)}to{transform:scale(1)}}.cat-image[data-v-6c621bb3]{pointer-events:none;width:140px;height:140px}.playground-canvas{background-color:var(--bg-cream);background-image:radial-gradient(circle, var(--ink-muted) .8px, transparent .8px);background-size:24px 24px;width:100%;height:100%}.vue-flow__edge-path{stroke:var(--ink);stroke-width:2.5px}.vue-flow__edge.selected .vue-flow__edge-path{stroke:var(--orange);stroke-width:3.5px}.vue-flow__edge:hover:not(.selected) .vue-flow__edge-path{stroke:var(--ink-soft);stroke-width:3px;cursor:pointer}.vue-flow__edge.animated .vue-flow__edge-path{stroke-dasharray:8 4;animation:.6s linear infinite flowDash}@keyframes flowDash{to{stroke-dashoffset:-12px}}.vue-flow__connection-line{stroke:var(--orange);stroke-width:2.5px;stroke-dasharray:6 4}.vue-flow__handle{background:var(--orange);border:2.5px solid var(--ink);width:14px;height:14px;box-shadow:var(--shadow-sm);border-radius:50%;transition:box-shadow .15s}.vue-flow__handle:hover{background:var(--yellow);box-shadow:var(--shadow)}.vue-flow__background{background:var(--bg-cream)}.vue-flow__minimap{background:var(--bg-warm);border:var(--border);border-radius:var(--radius)}.vue-flow__node{box-shadow:none;background:0 0;border:none;padding:0}.vue-flow__node.selected{box-shadow:none}.module-toolbar[data-v-c585b659]{z-index:10;background:var(--bg-cream);border-radius:var(--radius);border:var(--border);box-shadow:var(--shadow);gap:8px;padding:10px;display:flex;position:absolute;top:14px;left:14px}.toolbar-btn[data-v-c585b659]{background:var(--bg-warm);border:var(--border);color:var(--ink);cursor:pointer;box-shadow:var(--shadow-sm);border-radius:8px;flex-direction:column;align-items:center;gap:4px;padding:10px 14px;transition:all .1s;display:flex}.toolbar-btn[data-v-c585b659]:hover{box-shadow:var(--shadow-hover);transform:translate(-2px,-2px)}.toolbar-btn[data-v-c585b659]:active{box-shadow:1px 1px 0px var(--ink);transform:translate(1px,1px)}.toolbar-icon[data-v-c585b659]{font-size:22px}.toolbar-label[data-v-c585b659]{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);font-size:10px;font-weight:700}.transport-bar[data-v-edc188c3]{z-index:10;background:var(--bg-cream);border-radius:var(--radius);border:var(--border);box-shadow:var(--shadow);align-items:center;gap:14px;padding:10px 18px;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.play-btn[data-v-edc188c3]{background:var(--green-light);border:var(--border);width:40px;height:40px;color:var(--ink);cursor:pointer;box-shadow:var(--shadow-sm);border-radius:50%;justify-content:center;align-items:center;font-size:16px;transition:all .1s;display:flex}.play-btn[data-v-edc188c3]:hover{box-shadow:var(--shadow);transform:translate(-2px,-2px)}.play-btn[data-v-edc188c3]:active{box-shadow:1px 1px 0px var(--ink);transform:translate(1px,1px)}.play-btn.playing[data-v-edc188c3]{background:var(--green);box-shadow:var(--shadow)}.bpm-control[data-v-edc188c3]{align-items:center;gap:10px;display:flex}.bpm-label[data-v-edc188c3]{font-family:var(--font-display);color:var(--ink-soft);text-transform:uppercase;letter-spacing:.05em;font-size:11px;font-weight:700}.bpm-slider[data-v-edc188c3]{appearance:none;background:var(--bg-warm);border:1.5px solid var(--ink);cursor:pointer;border-radius:3px;outline:none;width:120px;height:6px}.bpm-slider[data-v-edc188c3]::-webkit-slider-thumb{appearance:none;background:var(--orange);border:2px solid var(--ink);cursor:pointer;width:14px;height:14px;box-shadow:var(--shadow-sm);border-radius:50%}.bpm-value[data-v-edc188c3]{font-family:var(--font-display);color:var(--ink);font-variant-numeric:tabular-nums;text-align:right;min-width:28px;font-size:14px;font-weight:800}.share-btn[data-v-5f22135f]{z-index:10;background:var(--bg-cream);border:var(--border);border-radius:var(--radius);color:var(--ink);font-family:var(--font-display);cursor:pointer;box-shadow:var(--shadow);padding:10px 18px;font-size:13px;font-weight:700;transition:all .1s;position:absolute;top:14px;right:14px}.share-btn[data-v-5f22135f]:hover{box-shadow:var(--shadow-hover);transform:translate(-2px,-2px)}.share-btn[data-v-5f22135f]:active{box-shadow:1px 1px 0px var(--ink);transform:translate(1px,1px)}.share-btn.copied[data-v-5f22135f]{background:var(--green-light)}
