:root{--bg-0: #111314;--bg-1: #141719;--bg-2: #1a1d21;--bg-3: #21262b;--surface-border: #2b3036;--surface-border-strong: #3b4149;--surface-shadow: rgba(0, 0, 0, .4);--accent: #ff6a3d;--accent-strong: #ff8357;--accent-soft: rgba(255, 106, 61, .18);--text-primary: #f3f4f4;--text-muted: #b3b9c1;--text-subtle: #7d838b;--success-text: #9ed0a3;--danger-text: #ff9b9f;--grid-dot: #1b1f23;--grid-dot-alt: #23272c}.app-shell{display:flex;flex-direction:column;height:100vh;background-color:var(--bg-0);color:var(--text-primary);font-family:IBM Plex Mono,JetBrains Mono,Fira Code,monospace}main{flex:1;display:flex;flex-direction:column;min-height:0}option{background-color:var(--bg-2)}.toolbar{display:flex;align-items:center;justify-content:space-between;padding:.4rem .75rem;background:var(--bg-2);border-bottom:1px solid var(--surface-border);gap:.75rem;flex-wrap:wrap}.toolbar-section{display:flex;align-items:center;gap:.75rem}.toolbar-section.error{color:var(--danger-text);font-size:.85rem}.toolbar-section.success{color:var(--success-text);font-size:.85rem}.toolbar-section--brand{gap:.5rem;flex:1 1 auto}.toolbar-section--brand strong{letter-spacing:.08em;text-transform:uppercase}.toolbar-section--actions{gap:.5rem;flex:0 0 auto}.toolbar-button{border:1px solid var(--surface-border);background:var(--bg-3);color:inherit;border-radius:4px;padding:.35rem .75rem;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease;font-size:.85rem}.toolbar-button:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-strong)}.toolbar-button--accent{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong)}.toolbar-button--accent:hover{background:var(--accent-strong);color:#1a1a1a;border-color:var(--accent-strong)}.toolbar-button--ghost{background:transparent;border-color:transparent;color:var(--text-muted);padding-inline:.5rem}.toolbar-button--ghost:hover{color:var(--accent-strong);background:var(--accent-soft);border-color:var(--accent)}.toolbar-menubar{position:relative}.toolbar-menu-button{border:none;background:transparent;color:inherit;font-size:.85rem;padding:.2rem .4rem;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:.25rem}.toolbar-menu-button:hover,.toolbar-menu-button--open{background:var(--accent-soft);color:var(--accent-strong)}.toolbar-menu{position:absolute;top:calc(100% + .25rem);left:0;min-width:200px;background:var(--bg-3);border:1px solid var(--surface-border);border-radius:6px;box-shadow:0 12px 24px var(--surface-shadow);padding:.25rem 0;z-index:30;display:flex;flex-direction:column}.toolbar-menu__item{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;border:none;background:transparent;color:inherit;padding:.45rem .75rem;font-size:.82rem;cursor:pointer}.toolbar-menu__item:hover:not([disabled]){background:var(--accent-soft);color:var(--accent-strong)}.toolbar-menu__item[disabled]{opacity:.4;cursor:default}.toolbar-menu__hint{font-size:.72rem;color:var(--text-subtle)}.workspace{flex:1;display:flex;min-height:0;overflow:hidden;background:var(--bg-1)}.workspace-main{position:relative;flex:1;display:flex;min-height:0}.workspace-dock{display:flex;flex-direction:column;gap:.75rem;padding:.75rem;width:320px;max-width:35%;background:var(--bg-2);border-left:1px solid var(--surface-border);overflow-y:auto}.workspace-dock:empty{display:none}.dock-panel{background:var(--bg-3);border:1px solid var(--surface-border);border-radius:6px;box-shadow:0 8px 16px var(--surface-shadow);display:flex;flex-direction:column}.dock-panel--left{width:280px;max-width:35%;border-right:1px solid var(--surface-border);border-left:none;border-top:none;border-bottom:none;box-shadow:inset -1px 0 0 var(--surface-border)}.dock-panel__header{display:flex;align-items:center;justify-content:space-between;padding:.55rem .75rem;border-bottom:1px solid var(--surface-border)}.dock-panel__title{margin:0;font-size:.9rem;letter-spacing:.06em;text-transform:uppercase}.dock-panel__close{border:none;background:transparent;color:var(--text-muted);font-size:1.1rem;cursor:pointer;padding:.1rem .35rem}.dock-panel__close:hover{color:var(--accent-strong)}.dock-panel__body{padding:.75rem;display:flex;flex-direction:column;gap:.75rem;overflow:auto;max-height:calc(100vh - 6rem)}.dock-panel__body--code{font-size:.78rem;line-height:1.5}.dock-panel__placeholder{margin:0;font-size:.85rem;color:var(--text-subtle)}.code-block{margin:0;background:#161a1f;border:1px solid var(--surface-border);border-radius:4px;padding:.75rem;overflow:auto;color:var(--text-muted)}.code-token--kw{color:#ffad66}.properties-section{display:flex;flex-direction:column;gap:.5rem}.properties-section__subtitle{color:var(--text-subtle);font-size:.75rem;text-transform:uppercase}.properties-controls{display:flex;flex-direction:column;gap:.65rem}.properties-field{display:flex;flex-direction:column;gap:.3rem}.properties-field__control{display:flex;align-items:center;gap:.4rem}.properties-field input[type=text]{background:var(--bg-3);border:1px solid var(--surface-border);border-radius:4px;padding:.35rem .5rem;color:var(--text-primary)}.properties-field input[type=text]:focus{outline:1px solid var(--accent)}.properties-field__remove{padding:.25rem .5rem;background:#ff484226;border:1px solid rgba(255,72,66,.4);color:var(--danger-text);border-radius:4px;font-size:.7rem;cursor:pointer}.properties-field__remove:hover{background:#ff48424d}.properties-action{align-self:flex-start;padding:.3rem .65rem;border-radius:4px;border:1px solid var(--accent);background:var(--accent-soft);color:var(--accent-strong);font-size:.75rem;font-weight:500;cursor:pointer}.properties-action:hover{background:var(--accent);color:var(--bg-1)}.properties-action--inline{padding:.25rem .5rem;font-size:.7rem}.properties-section__header{display:flex;align-items:center;justify-content:space-between}.properties-control{display:flex;flex-direction:column;gap:.35rem}.properties-control__label{display:flex;justify-content:space-between;align-items:center;color:var(--text-primary);font-weight:500}.properties-control__label small{font-size:.72rem;color:var(--text-subtle)}.properties-control input[type=range]{width:100%;accent-color:var(--accent)}.properties-connections{display:flex;flex-direction:column;gap:.75rem}.properties-connections h5{margin:0 0 .35rem;text-transform:uppercase;letter-spacing:.04em;font-size:.72rem;color:var(--text-subtle)}.properties-connections ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.45rem}.properties-connections li{display:flex;justify-content:space-between;gap:.5rem;font-size:.82rem}.properties-connections button{border:1px solid var(--surface-border);background:var(--bg-3);color:var(--text-muted);border-radius:4px;padding:.2rem .6rem;cursor:pointer}.properties-connections button:hover{background:var(--accent-soft);color:var(--accent-strong)}.properties-section--danger{align-items:flex-start}.properties-delete{border:1px solid rgba(255,106,61,.4);background:#ff6a3d1f;color:var(--danger-text);border-radius:4px;padding:.4rem .75rem;cursor:pointer}.properties-delete:hover{background:#ff6a3d33}.properties-section--validation ul{margin:0;padding-left:1.25rem;color:var(--danger-text);font-size:.82rem}.audio-settings{display:grid;gap:.6rem}.audio-settings label{display:flex;flex-direction:column;gap:.3rem;font-size:.82rem}.audio-settings select{background:var(--bg-3);border:1px solid var(--surface-border);border-radius:4px;color:var(--text-primary);padding:.35rem .5rem}.node-browser__search{padding:.5rem .75rem 0}.node-browser__search input{width:100%;border-radius:4px;border:1px solid var(--surface-border);background:var(--bg-3);color:var(--text-primary);padding:.4rem .6rem}.node-browser__list{padding:.75rem;display:flex;flex-direction:column;gap:.75rem;max-height:calc(100vh - 6rem);overflow-y:auto}.node-browser__group header{font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-subtle);margin-bottom:.35rem}.node-browser__group ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.35rem}.node-browser__item{width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;border:1px solid var(--surface-border);background:var(--bg-3);color:inherit;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.node-browser__item:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong)}.node-browser__item-kind{font-size:.7rem;color:var(--text-subtle)}.node-browser__empty{margin:0;font-size:.85rem;color:var(--text-subtle)}.canvas-pane{position:relative;flex:1;display:flex;flex-direction:column;min-height:0;background:var(--bg-1)}.canvas-body{position:relative;flex:1;overflow:hidden;background:radial-gradient(circle at 0 0,var(--grid-dot) .75px,transparent .75px),radial-gradient(circle at 12px 12px,var(--grid-dot-alt) .75px,transparent .75px);background-size:24px 24px;user-select:none;touch-action:none;cursor:grab}.canvas-body:active{cursor:grabbing}.canvas-content{position:absolute;top:0;left:0;transform-origin:0 0}.canvas-selection{position:absolute;border:1px solid rgba(255,106,61,.8);background:#ff6a3d33;pointer-events:none;z-index:7}.canvas-context-menu{position:absolute;z-index:20;min-width:176px;padding:4px 0;border-radius:6px;background:var(--panel-bg, rgba(25, 25, 28, .95));box-shadow:0 12px 32px #00000059;border:1px solid rgba(255,255,255,.08);color:inherit}.canvas-context-menu__button{width:100%;padding:6px 16px;background:none;border:none;color:inherit;text-align:left;font:inherit;cursor:pointer}.canvas-context-menu__button:hover,.canvas-context-menu__button:focus{background:#ffffff1f;outline:none}.canvas-context-menu__button:disabled{opacity:.45;cursor:default;pointer-events:none}.canvas-context-menu__separator{height:1px;margin:4px 0;background:#ffffff1a}.canvas-connections{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:6}.canvas-connections path{fill:none;stroke:var(--accent);stroke-width:2px;stroke-linecap:round}.canvas-connections__pending{stroke:var(--accent-strong);stroke-dasharray:6 6}.canvas-placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;color:var(--text-subtle);font-size:.95rem}.canvas-message{position:absolute;bottom:1rem;left:1rem;padding:.5rem .75rem;border-radius:4px;font-size:.85rem;background:#1a1d20eb;border:1px solid rgba(255,106,61,.35)}.canvas-message--error{color:var(--danger-text)}.canvas-status{position:absolute;bottom:1rem;right:1rem;padding:.5rem .85rem;border-radius:4px;font-size:.82rem;background:#1a1d20e6;border:1px solid var(--surface-border);pointer-events:none;z-index:8;color:var(--text-muted)}.canvas-status--error{border-color:#ff6a3d73;color:var(--danger-text)}.workspace-overlay{position:absolute;z-index:8;display:flex}.workspace-overlay--top-right{top:.75rem;right:.75rem}.workspace-overlay--top-left{top:.75rem;left:.75rem}.subpatch-breadcrumb{display:inline-flex;align-items:center;gap:.5rem;padding:.35rem .6rem;border-radius:4px;background:#00000073;backdrop-filter:blur(6px);color:var(--text-muted)}.subpatch-breadcrumb ol{display:inline-flex;align-items:center;gap:.35rem;list-style:none;margin:0;padding:0}.subpatch-breadcrumb li{display:inline-flex;align-items:center;gap:.35rem}.subpatch-breadcrumb button{background:transparent;border:none;color:inherit;font-size:.8rem;cursor:pointer;padding:0}.subpatch-breadcrumb button:hover{color:var(--text-primary);text-decoration:underline}.subpatch-breadcrumb__current{color:var(--text-primary);font-weight:600}.subpatch-breadcrumb__divider{color:var(--text-subtle)}.subpatch-breadcrumb__exit{padding:.2rem .5rem;border-radius:4px;border:1px solid var(--surface-border);background:#0003;color:var(--text-subtle);font-size:.7rem;cursor:pointer}.subpatch-breadcrumb__exit:hover{color:var(--text-primary);border-color:var(--accent)}.oversampling-switch{display:inline-flex;align-items:center;gap:.5rem;padding:.35rem .6rem;border-radius:4px;background:var(--accent-soft);color:var(--accent-strong);border:1px solid var(--accent);font-size:.78rem}.oversampling-switch select{background:var(--accent-soft);border:1px solid var(--accent);color:var(--accent-strong);border-radius:4px;padding:.2rem .4rem}.command-palette{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center}.command-palette__backdrop{position:absolute;inset:0;background:#00000073}.command-palette__panel{position:relative;width:min(560px,90vw);background:var(--bg-2);border:1px solid var(--surface-border);border-radius:8px;box-shadow:0 16px 32px var(--surface-shadow);padding:.75rem .75rem .25rem;display:flex;flex-direction:column;gap:.65rem}.command-palette__panel input{width:100%;border:1px solid var(--surface-border);border-radius:4px;background:var(--bg-3);color:var(--text-primary);padding:.5rem .65rem;font-size:.9rem}.command-palette__results{list-style:none;margin:0;padding:0;max-height:320px;overflow-y:auto;display:flex;flex-direction:column}.command-palette__result{width:100%;display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:.75rem;background:transparent;border:none;color:inherit;text-align:left;padding:.45rem .6rem;border-radius:4px;cursor:pointer}.command-palette__result--active{background:var(--accent-soft);color:var(--accent-strong)}.command-palette__result-kind{font-size:.75rem;color:var(--text-subtle)}.command-palette__result-category{font-size:.72rem;color:var(--text-subtle);text-transform:uppercase;letter-spacing:.05em}.command-palette__empty{margin:0;padding:.5rem .6rem;color:var(--text-subtle)}.help-modal{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center}.help-modal__backdrop{position:absolute;inset:0;background:#0000008c}.help-modal__panel{position:relative;width:min(640px,92vw);max-height:min(80vh,720px);background:var(--bg-2);border:1px solid var(--surface-border);border-radius:10px;box-shadow:0 18px 36px var(--surface-shadow);padding:1.25rem 1.5rem;display:flex;flex-direction:column;gap:1rem}.help-modal__panel h1{margin:0;font-size:1.35rem}.help-modal__panel h2{margin:1.2rem 0 .6rem;font-size:1.05rem}.help-modal__panel section:first-of-type h2{margin-top:.6rem}.help-modal__scroll{flex:1 1 auto;overflow-y:auto;padding-right:.5rem}.help-modal__scroll p{margin:0 0 .75rem;line-height:1.6}.help-modal__scroll ul{margin:0 0 1rem 1.25rem;padding:0;list-style:disc;line-height:1.6}.help-modal__close{position:absolute;top:.6rem;right:.6rem;background:transparent;border:none;color:var(--text-muted);font-size:1.5rem;line-height:1;cursor:pointer}.help-modal__close:hover{color:var(--accent-strong)}.help-modal__startup{display:inline-flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--text-muted)}.help-modal__startup input{width:1rem;height:1rem}.patch-node{position:absolute;display:flex;flex-direction:column;background:var(--bg-2);border:1px solid var(--surface-border);border-radius:6px;box-shadow:0 8px 16px var(--surface-shadow);transition:border-color .15s ease,box-shadow .15s ease}.patch-node--selected{border-color:var(--accent);box-shadow:0 12px 24px #ff6a3d47}.patch-node__header{display:flex;justify-content:space-between;align-items:center;padding:.5rem .7rem;border-bottom:1px solid var(--surface-border);cursor:grab}.patch-node__header:active{cursor:grabbing}.patch-node__title{font-size:.85rem;font-weight:600}.patch-node__subtitle{font-size:.68rem;color:var(--text-subtle);text-transform:uppercase;letter-spacing:.06em}.patch-node__ports{display:flex;justify-content:space-between;gap:.5rem;padding:.7rem}.patch-node__ports-column{display:flex;flex-direction:column;gap:.35rem}.patch-node__ports-column--outputs{align-items:flex-end}.patch-node__port{position:relative;display:flex;align-items:center;gap:.4rem;height:28px;padding:0 1.4rem;border:1px solid var(--surface-border);border-radius:999px;background:var(--bg-3);color:inherit;font-size:.8rem;cursor:pointer;transition:border-color .15s ease,background .15s ease,color .15s ease}.patch-node__port:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong)}.patch-node__port-indicator{position:absolute;top:50%;left:.7rem;width:12px;height:12px;border-radius:50%;background:var(--text-subtle);transform:translate(-50%,-50%);box-shadow:0 0 0 1px var(--bg-2);pointer-events:none;transition:background .15s ease,box-shadow .15s ease}.patch-node__port--output .patch-node__port-indicator{left:auto;right:.7rem;transform:translate(50%,-50%)}.patch-node__port--connected{border-color:var(--accent);color:var(--accent-strong)}.patch-node__port--connected .patch-node__port-indicator{background:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.patch-node__port--active{border-color:var(--accent-strong);background:var(--accent-soft);color:var(--accent-strong);box-shadow:0 0 0 1px #ff6a3d40}.patch-node__port--active .patch-node__port-indicator{background:var(--accent-strong);box-shadow:0 0 0 3px #ff6a3d73}.patch-node__widget{padding:.5rem .7rem .7rem;border-top:1px solid var(--surface-border)}.patch-node__controls{display:flex;gap:.7rem;padding:.55rem .7rem .7rem;border-top:1px solid var(--surface-border);align-items:center;justify-content:flex-start}.patch-node__controls--grid{display:grid;gap:.9rem;align-items:stretch;justify-items:center}.patch-node__control{display:flex;flex-direction:column;gap:.3rem;align-items:center;font-size:.73rem;color:var(--text-muted)}.patch-node__control-column{display:flex;flex-direction:column;gap:.6rem;align-items:center}.patch-node__control-label{font-size:.72rem;color:var(--text-muted);text-align:center}.patch-node__control--fader{min-width:52px}.patch-node__control-value{font-size:.68rem;color:var(--text-subtle)}.knob{width:48px;height:48px;border-radius:50%;border:1px solid var(--surface-border);background:radial-gradient(circle at 30% 30%,#3a3f47,#1f2327);display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;box-shadow:inset 0 2px 6px #00000073;touch-action:none}.knob:focus{outline:2px solid var(--accent);outline-offset:2px}.knob__indicator{width:4px;height:18px;border-radius:2px;background:#ffe0d6;transform-origin:bottom center;transition:transform .05s linear;box-shadow:0 0 4px #ff6a3d59}.fader{width:20px;height:110px;border:1px solid var(--surface-border);border-radius:10px;background:linear-gradient(180deg,#2b3036,#181b1f);display:flex;align-items:center;justify-content:center;padding:6px 0;cursor:pointer;position:relative;touch-action:none}.fader:focus{outline:2px solid var(--accent);outline-offset:2px}.fader__track{position:relative;width:6px;height:100%;border-radius:4px;background:#ffffff14;box-shadow:inset 0 0 4px #0009}.fader__fill{position:absolute;bottom:0;left:0;width:100%;background:var(--accent-soft);border-radius:4px}.fader__thumb{position:absolute;left:50%;transform:translate(-50%,50%);width:16px;height:10px;border-radius:4px;background:var(--accent-strong);box-shadow:0 2px 6px #0006}.envelope-visualizer,.scope-visualizer{width:100%}.envelope-visualizer__svg{display:block;width:100%;height:100px}.envelope-visualizer__background{fill:#14171be6;stroke:#5a606699;stroke-width:1}.envelope-visualizer__curve{stroke:#c3ff7c}.envelope-visualizer__cursor{stroke:#ffffff73;stroke-width:1;stroke-dasharray:4 3}.envelope-visualizer__marker{fill:#c3ff7c;stroke:#1c2130;stroke-width:1}.envelope-visualizer__value{fill:#c3ff7c59;stroke:#1c2130;stroke-width:1}.scope-visualizer__canvas{display:block;width:100%;height:140px;border-radius:6px;background:#121519e6;border:1px solid rgba(82,88,96,.6)}.scope-visualizer__background{fill:#121519e6;stroke:#52586099;stroke-width:1}.scope-visualizer__grid{stroke:#78808a40;stroke-width:1}.scope-visualizer__grid--vertical{stroke-dasharray:4 4}.scope-visualizer__curve{stroke:#c3ff7c;fill:none}.scope-visualizer__curve--triggered{stroke:#ffcf6c}.scope-visualizer__curve--hold{stroke:#ff6ca8}.inspector-placeholder,.node-browser__item-kind,.command-palette__result-kind{font-family:IBM Plex Mono,JetBrains Mono,Fira Code,monospace}:root{color-scheme:dark}html,body{margin:0;padding:0;height:100%;font-family:IBM Plex Mono,JetBrains Mono,Fira Code,monospace;background-color:#111314;color:#f3f4f4}button{font:inherit}
