.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}:root{color-scheme:dark;--bg: #030706;--panel: rgba(8, 18, 15, .86);--panel-soft: rgba(13, 28, 24, .72);--line: rgba(109,255,191,.16);--line-strong: rgba(109,255,191,.38);--ink: #eafff7;--muted: #8fb9aa;--signal: #6dffbf;--blue: #8cb7ff;--pink: #ff7ab6;--amber: #ffe08a;--purple: #d7a5ff;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;background:radial-gradient(circle at 30% -10%,rgba(109,255,191,.12),transparent 35%),radial-gradient(circle at 80% 20%,rgba(140,183,255,.08),transparent 32%),var(--bg);color:var(--ink)}button,input,select{font:inherit}button{border:1px solid var(--line);border-radius:.72rem;background:#6dffbf12;color:var(--ink);padding:.55rem .72rem;cursor:pointer}button:hover{border-color:var(--line-strong);background:#6dffbf1f}button:disabled{opacity:.38;cursor:not-allowed}button.on{color:var(--signal);border-color:var(--line-strong);box-shadow:0 0 18px #6dffbf14 inset}input,select{width:100%;border:1px solid var(--line);border-radius:.58rem;background:#020705c7;color:var(--ink);padding:.45rem .52rem}label{display:grid;gap:.28rem;color:var(--muted);font-size:.76rem}.patch-app{height:100vh;display:grid;grid-template-rows:auto 1fr;overflow:hidden}.top-transport{display:flex;align-items:center;gap:.55rem;padding:.75rem .9rem;border-bottom:1px solid var(--line);background:#030706d1;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.top-transport>div{display:grid;min-width:178px}.top-transport strong{letter-spacing:.08em;text-transform:uppercase;color:var(--signal)}.top-transport small{color:var(--muted)}.top-transport label{width:90px}.top-transport select{max-width:210px}.patch-workbench{min-height:0;display:grid;grid-template-columns:minmax(56px,250px) minmax(0,1fr);gap:.65rem;padding:.65rem}.module-palette,.module-inspector,.patch-map-shell{border:1px solid var(--line);border-radius:1rem;background:linear-gradient(140deg,var(--panel),rgba(5,10,9,.78));box-shadow:0 0 calc(16px + var(--level, 0) * 24px) #6dffbf0d}.module-palette{overflow:auto;padding:.65rem}.module-palette.collapsed{padding:.45rem}.palette-toggle{width:100%;margin-bottom:.65rem}.palette-group{display:grid;gap:.38rem;margin-bottom:.8rem}.palette-group h3{margin:.2rem 0;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.12em}.palette-group button{text-align:left;display:grid;gap:.18rem}.palette-group button small{color:var(--muted);line-height:1.25}.patch-map-shell{position:relative;min-width:0;min-height:620px;overflow:hidden}.patch-map-shell .react-flow{width:100%;height:100%;background:radial-gradient(circle at center,rgba(109,255,191,.04),transparent 42%),#0000002e}.map-hint{position:absolute;z-index:6;left:.75rem;bottom:.75rem;display:flex;gap:.45rem;flex-wrap:wrap;pointer-events:none}.map-hint span,.patch-notice{border:1px solid var(--line);border-radius:999px;background:#030706c2;color:var(--muted);padding:.28rem .52rem;font-size:.72rem}.patch-notice{position:absolute;z-index:8;top:.75rem;left:50%;transform:translate(-50%);color:var(--amber);border-color:#ffe08a6b}.patch-node{position:relative;border:1px solid rgba(109,255,191,.24);border-radius:.9rem;background:linear-gradient(160deg,#091713f0,#040908e6);padding:.72rem .82rem;box-shadow:0 10px 30px #00000047}.patch-node.selected{border-color:#6dffbf9e}.patch-node.active{box-shadow:0 0 0 1px #6dffbf33,0 0 22px #6dffbf1f}.node-title{display:flex;justify-content:space-between;gap:.8rem;align-items:baseline;margin-bottom:.35rem}.node-title span{font-weight:720;letter-spacing:.04em}.node-title small{color:var(--muted);font-size:.66rem;text-transform:uppercase}.patch-node p{margin:0;max-width:170px;color:var(--muted);font-size:.72rem;line-height:1.25}.node-steps{display:grid;grid-template-columns:repeat(8,1fr);gap:.18rem;margin-top:.58rem}.node-steps i{height:5px;border-radius:99px;background:#6dffbf21}.node-steps i.on{background:var(--signal);box-shadow:0 0 8px #6dffbf99}.node-steps.drums i.on{background:var(--amber);box-shadow:0 0 8px #ffe08a80}.mini-visual{display:flex;align-items:end;gap:.35rem;height:42px;margin-top:.6rem}.mini-visual span{width:24%;border-radius:.3rem .3rem 0 0;background:linear-gradient(var(--signal),transparent);opacity:.44}.mini-visual span:nth-child(1){height:35%}.mini-visual span:nth-child(2){height:68%}.mini-visual span:nth-child(3){height:48%}.port-row{position:relative;color:var(--muted);font-size:.65rem;line-height:1.2}.port-row.in{margin-left:-.45rem}.port-row.out{text-align:right;margin-right:-.45rem}.port-handle{width:11px!important;height:11px!important;border:1px solid rgba(234,255,247,.72)!important}.port-handle.audio{background:var(--signal)!important}.port-handle.cv{background:var(--blue)!important}.port-handle.gate{background:var(--amber)!important}.port-handle.clock{background:var(--pink)!important}.port-handle.midi{background:var(--purple)!important}.port-handle.visual{background:#8afff3!important}.module-inspector{padding:.75rem;overflow:auto}.module-inspector h2{margin:0 0 .7rem;font-size:.9rem;color:var(--signal);text-transform:uppercase;letter-spacing:.1em}.module-inspector p{color:var(--muted);font-size:.78rem;line-height:1.35}.module-inspector{display:grid;align-content:start;gap:.55rem}.module-inspector.empty{color:var(--muted)}.port-legend{display:flex;flex-wrap:wrap;gap:.3rem}.port-legend span{border:1px solid var(--line);border-radius:999px;padding:.16rem .4rem;font-size:.62rem;color:var(--muted)}.port-legend .audio{color:var(--signal)}.port-legend .cv{color:var(--blue)}.port-legend .gate{color:var(--amber)}.port-legend .clock{color:var(--pink)}.port-legend .midi{color:var(--purple)}.inspector-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:.25rem;border-top:1px solid var(--line);padding-top:.5rem}.inspector-steps b{grid-column:1 / -1;color:var(--muted);font-size:.72rem}.inspector-steps input{min-width:0;text-align:center;padding:.32rem .2rem}.inspector-steps.binary{grid-template-columns:repeat(8,1fr)}.inspector-steps.binary button{padding:.28rem .1rem;font-size:.65rem}.inspector-steps.binary button.on{background:#6dffbf29;color:var(--signal)}.react-flow__minimap,.react-flow__controls{background:#020705d1;border:1px solid var(--line);border-radius:.7rem;overflow:hidden}.react-flow__controls-button{background:transparent;border:0;color:var(--ink)}@media(max-width:980px){.patch-workbench{grid-template-columns:1fr;grid-template-rows:auto 640px auto;overflow:auto}.patch-app{overflow:auto}.top-transport{flex-wrap:wrap}.module-palette{max-height:260px}.patch-map-shell{min-height:640px}}@media(max-width:680px){.patch-app:before{content:"Desktop recommended for Patch Map editing";display:block;padding:.5rem .8rem;color:var(--amber);border-bottom:1px solid rgba(255,224,138,.2)}.top-transport>div{width:100%}}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.transport-status{margin-left:auto;color:var(--muted);font-size:.74rem;max-width:280px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.transport-status.error{color:var(--amber)}.crash-fallback{place-items:center;padding:2rem}.crash-fallback section{max-width:560px;border:1px solid var(--line);border-radius:1rem;background:var(--panel);padding:1.2rem}.crash-fallback code{display:block;margin:.8rem 0;color:var(--amber);white-space:pre-wrap}.patch-map-shell .react-flow__pane{cursor:grab}.patch-map-shell .react-flow__pane:active{cursor:grabbing}.patch-node{overflow:hidden;border-color:#6dffbf33;background:linear-gradient(180deg,#0e1e1af5,#040807f0);box-shadow:0 16px 38px #00000057,inset 0 1px #ffffff0a;transition:border-color .12s ease,box-shadow .12s ease,transform .12s ease;will-change:transform}.patch-node:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(109,255,191,.08),transparent 38%,rgba(140,183,255,.045));opacity:.7}.patch-node.selected{border-color:#6dffbfb8;box-shadow:0 0 0 1px #6dffbf33,0 18px 46px #00000061}.patch-node.active{border-color:#ffe08a8a}.device-timing{border-color:#ff7ab652}.device-sequencer{border-color:#d7a5ff4d}.device-source{border-color:#6dffbf52}.device-modulation{border-color:#8cb7ff57}.device-processing{border-color:#ffe08a42}.device-mixing{border-color:#8afff34d}.device-visual{border-color:#8afff33d}.node-title{position:relative;margin:-.72rem -.82rem .55rem;padding:.48rem .72rem;background:#ffffff09;border-bottom:1px solid rgba(255,255,255,.06)}.node-title span{color:var(--ink)}.node-face{position:relative;display:grid;gap:.55rem}.node-readout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.16rem .5rem;align-items:end}.node-readout b{color:var(--signal);font-size:1rem;letter-spacing:.03em}.node-readout span{color:var(--muted);font-size:.58rem;letter-spacing:.12em}.knob-row{display:grid;grid-template-columns:repeat(2,30px);grid-auto-rows:auto;gap:.25rem .7rem;align-items:center}.knob-row i{--v: .4;width:30px;height:30px;border-radius:999px;border:1px solid rgba(109,255,191,.28);background:conic-gradient(var(--signal) calc(var(--v) * 1turn),rgba(255,255,255,.07) 0);box-shadow:inset 0 0 0 7px #030706f2}.knob-row span{font-size:.58rem;color:var(--muted);text-transform:uppercase}.mixer-mini{height:58px;display:flex;gap:.34rem;align-items:end}.mixer-mini i{width:12px;border-radius:99px 99px 0 0;background:linear-gradient(var(--signal),rgba(109,255,191,.1))}.port-row em{font-style:normal;letter-spacing:.08em;opacity:.84}.port-handle{box-shadow:0 0 0 3px #0000006b,0 0 11px currentColor!important;transition:transform .12s ease,box-shadow .12s ease}.port-handle:hover,.react-flow__handle-connecting{transform:scale(1.38);box-shadow:0 0 0 4px #0000007a,0 0 18px currentColor!important}.react-flow__edge-path{transition:stroke-width .12s ease,opacity .12s ease}.react-flow__edge:hover .react-flow__edge-path{stroke-width:3.4px!important;opacity:1!important}.module-palette{scrollbar-width:thin}.palette-group button{border-radius:.85rem;background:#ffffff06}.palette-group button:hover{transform:translateY(-1px)}.module-inspector{gap:.7rem}.module-inspector .control-line{display:grid;grid-template-columns:88px 1fr;align-items:center;gap:.55rem}.control-line.range{grid-template-columns:1fr}.control-line.range span{display:flex;justify-content:space-between;color:var(--muted)}.control-line.range b{color:var(--signal)}.control-stack{display:grid;gap:.55rem}.inspector-sequencer{display:grid;grid-template-columns:repeat(4,1fr);gap:.28rem;border:1px solid var(--line);border-radius:.8rem;padding:.55rem;background:#ffffff06}.inspector-sequencer h3{grid-column:1 / -1;margin:0 0 .2rem;color:var(--muted);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase}.step-editor{display:grid;gap:.18rem}.step-editor button,.drum-lane button{padding:.26rem .1rem;font-size:.65rem;border-color:#ffffff14;background:#ffffff06}.step-editor.on button,.drum-lane button.on{color:var(--signal);border-color:#6dffbf7a;background:#6dffbf21}.step-editor input{padding:.25rem .2rem;text-align:center;font-size:.7rem}.inspector-sequencer.drums{grid-template-columns:1fr}.drum-lane{display:grid;grid-template-columns:44px repeat(16,minmax(14px,1fr));gap:.16rem;align-items:center}.drum-lane b{color:var(--muted);font-size:.64rem;text-transform:uppercase}.drum-lane button{min-width:0}.patch-node{overflow:visible;padding-left:1.05rem;padding-right:1.05rem}.patch-node:after{content:"";position:absolute;inset:42px .5rem .5rem;border-radius:.72rem;border:1px solid rgba(255,255,255,.035);pointer-events:none}.port-row,.ports{display:none}.port-jack{position:absolute;z-index:12;display:flex;align-items:center;gap:.28rem;height:20px;color:var(--muted);font-size:.58rem;letter-spacing:.08em;text-transform:uppercase;pointer-events:none}.port-jack.in{left:-8px;flex-direction:row}.port-jack.out{right:-8px;flex-direction:row-reverse;text-align:right}.port-jack span{padding:.13rem .32rem;border:1px solid rgba(255,255,255,.08);border-radius:999px;background:#030706db;opacity:.96;white-space:nowrap;pointer-events:none}.port-jack.in span{transform:translate(4px)}.port-jack.out span{transform:translate(-4px)}.port-handle{position:relative!important;left:auto!important;right:auto!important;top:auto!important;transform:none!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;border:2px solid rgba(234,255,247,.92)!important;opacity:1!important;pointer-events:all!important;box-shadow:0 0 0 4px #000000a6,0 0 15px currentColor!important}.port-handle:after{content:"";position:absolute;inset:4px;border-radius:999px;background:#0000009e}.port-jack.audio{color:var(--signal)}.port-jack.cv{color:var(--blue)}.port-jack.gate{color:var(--amber)}.port-jack.clock{color:var(--pink)}.port-jack.midi{color:var(--purple)}.port-jack.visual{color:#8afff3}.port-handle:hover,.react-flow__handle-connecting,.react-flow__handle-valid{transform:scale(1.22)!important;box-shadow:0 0 0 5px #000000b3,0 0 24px currentColor!important}.react-flow__handle-valid{outline:2px solid rgba(109,255,191,.65)}.react-flow__handle-connecting:not(.react-flow__handle-valid){outline:2px solid rgba(255,122,122,.68)}.cable-label{position:absolute;z-index:5;pointer-events:all;border:1px solid rgba(255,255,255,.12);border-radius:999px;background:#030706d1;color:var(--muted);padding:.12rem .38rem;font-size:.55rem;letter-spacing:.1em;text-transform:uppercase;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.cable-label.audio{color:var(--signal)}.cable-label.cv{color:var(--blue)}.cable-label.gate{color:var(--amber)}.cable-label.clock{color:var(--pink)}.cable-label.midi{color:var(--purple)}.cable-label.visual{color:#8afff3}.react-flow__connection-path{stroke:var(--signal)!important;stroke-width:3!important;filter:drop-shadow(0 0 8px rgba(109,255,191,.5))}.port-jack{width:20px;gap:0}.port-jack.in{left:-10px;flex-direction:row}.port-jack.out{right:-10px;flex-direction:row}.port-jack.in span{position:absolute;right:27px;transform:none;text-align:right}.port-jack.out span{position:absolute;left:27px;transform:none;text-align:left}.port-jack span{max-width:86px;overflow:hidden;text-overflow:ellipsis}.patch-node.kind-mixer .port-jack.in span,.patch-node.kind-filter .port-jack.in span,.patch-node.kind-vca .port-jack.in span{max-width:72px}.react-flow__node .port-jack.in>span{left:auto!important;right:36px!important;transform:none!important;text-align:right!important}.react-flow__node .port-jack.out>span{right:auto!important;left:36px!important;transform:none!important;text-align:left!important}.port-jack span{box-shadow:0 0 0 2px #00000061,0 0 12px #0000006b}.patch-node:hover .port-jack span,.patch-node.selected .port-jack span{opacity:1}.node-readout b{white-space:nowrap;font-size:.94rem}.port-jack span{opacity:0;transition:opacity .12s ease,transform .12s ease,border-color .12s ease}.patch-node:hover .port-jack span,.patch-node.selected .port-jack span,.patch-map-shell.is-connecting .port-jack.origin span,.patch-map-shell.is-connecting .port-jack.compatible span{opacity:1}.patch-map-shell.is-connecting .port-jack{opacity:.34}.patch-map-shell.is-connecting .port-jack.origin,.patch-map-shell.is-connecting .port-jack.compatible{opacity:1}.patch-map-shell.is-connecting .port-jack.compatible .port-handle{outline:2px solid rgba(109,255,191,.78);box-shadow:0 0 0 5px #000000b8,0 0 26px currentColor!important}.patch-map-shell.is-connecting .port-jack.incompatible .port-handle{opacity:.28!important;filter:grayscale(.8);box-shadow:0 0 0 3px #00000080!important}.patch-map-shell.is-connecting .patch-node{transition:opacity .12s ease,border-color .12s ease}.module-inspector .module-insight{border:1px solid rgba(109,255,191,.12);border-radius:.78rem;padding:.55rem .62rem;background:#6dffbf09;display:grid;gap:.22rem}.module-inspector .module-insight b{color:var(--signal);font-size:.68rem;letter-spacing:.11em;text-transform:uppercase}.module-inspector .module-insight span{color:var(--muted);font-size:.72rem;line-height:1.35}.env-preview{border:1px solid var(--line);border-radius:.8rem;padding:.45rem .5rem;background:#ffffff05;display:grid;gap:.25rem}.env-preview svg{width:100%;height:64px}.env-preview path{fill:none;stroke:var(--signal);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 6px rgba(109,255,191,.38))}.env-preview span{color:var(--muted);font-size:.64rem;letter-spacing:.1em;text-transform:uppercase}.control-line.toggle{grid-template-columns:1fr auto}.control-line.toggle input{width:18px;height:18px;accent-color:var(--signal)}.control-line.range input[type=range]{accent-color:var(--signal);cursor:pointer}.control-line.range:has(input:focus),.control-line:has(select:focus),.control-line:has(input:focus){color:var(--ink)}.cable-label{opacity:.62}.react-flow__edge:hover .cable-label{opacity:1}.output-meter{height:7px;border:1px solid rgba(255,255,255,.08);border-radius:999px;background:#00000057;overflow:hidden}.output-meter i{display:block;height:100%;width:clamp(4%,calc(var(--level, 0) * 160%),100%);border-radius:inherit;background:linear-gradient(90deg,var(--signal),var(--amber));box-shadow:0 0 10px #6dffbf5c;transition:width .08s linear}.module-inspector .control-stack{grid-template-columns:1fr}.module-inspector .control-line input[type=text]{min-width:0}.module-inspector .control-line.toggle{min-height:30px}.port-legend span{display:inline-flex;align-items:center;gap:.16rem}.module-inline-inspector{display:grid;gap:.42rem;margin-top:.1rem;padding:.52rem;border:1px solid rgba(109,255,191,.16);border-radius:.72rem;background:#0207059e;min-width:165px}.module-inline-inspector strong{color:var(--signal);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase}.module-inline-inspector label{display:grid;grid-template-columns:56px minmax(0,1fr);align-items:center;gap:.38rem;font-size:.62rem}.module-inline-inspector .inline-range{grid-template-columns:1fr}.module-inline-inspector .inline-range span{display:flex;justify-content:space-between;gap:.4rem}.module-inline-inspector b{color:var(--signal);font-weight:650}.module-inline-inspector input,.module-inline-inspector select{padding:.24rem .34rem;border-radius:.46rem;font-size:.68rem}.module-inline-inspector input[type=range]{accent-color:var(--signal)}.module-inline-inspector .inline-toggle{grid-template-columns:1fr auto}.module-inline-inspector .inline-toggle input{width:16px;height:16px;accent-color:var(--signal)}.module-inline-inspector p{margin:-.18rem 0 .08rem;color:var(--muted);font-size:.64rem;line-height:1.3}.inline-port-list{display:flex;flex-wrap:wrap;gap:.22rem}.inline-port-list span{border:1px solid rgba(255,255,255,.08);border-radius:999px;padding:.12rem .32rem;font-size:.52rem;color:var(--muted);background:#0000002e}.inline-port-list .audio{color:var(--signal)}.inline-port-list .cv{color:var(--blue)}.inline-port-list .gate{color:var(--amber)}.inline-port-list .clock{color:var(--pink)}.inline-port-list .midi{color:var(--purple)}.inline-env{width:100%;height:48px;border:1px solid rgba(109,255,191,.12);border-radius:.55rem;background:#0000002e}.inline-env path{fill:none;stroke:var(--signal);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.inline-step-preview{display:grid;grid-template-columns:repeat(8,1fr);gap:.16rem}.inline-step-preview i,.inline-drum-preview i{height:5px;border-radius:999px;background:#ffffff14}.inline-step-preview i.on{background:var(--signal)}.inline-drum-preview{display:grid;gap:.16rem}.inline-drum-preview span{display:grid;grid-template-columns:repeat(16,1fr);gap:.12rem}.inline-drum-preview i.on{background:var(--amber)}
