:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--gap:11px;--pad:1rem;--hue-accent:30;--hue-background:50;--col-white:oklch(95.698% .02111 241.502);--col-black:oklch(11.813% .03195 23.316);--col-fg:var(--lightningcss-light,var(--col-black))var(--lightningcss-dark,var(--col-white));--col-bg:var(--lightningcss-light,var(--col-white))var(--lightningcss-dark,var(--col-black));--col-red:oklch(48.786% .19393 28.533);--col-orange:oklch(62% .22 55);--col-plum:oklch(45% .15 310);--col-pink:oklch(65% .18 350);--col-purple:oklch(52% .2 290);--col-blue:oklch(55% .19 260);--col-green:oklch(58% .18 140);--curve:12px;--border:3px solid var(--lightningcss-light,color-mix(in oklch, var(--col-black) 50%, transparent))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 50%, transparent));--time-short:90ms;--time-medium:.145s;--time-long:.45s;--bg-color:var(--lightningcss-light,var(--col-white,white))var(--lightningcss-dark,var(--col-black,black));--text-color:var(--lightningcss-light,var(--col-black,black))var(--lightningcss-dark,var(--col-white,white))}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@font-face{font-family:Raleway;src:url(/harmoneasy/assets/Raleway-VariableFont_wght-tcJTL8Dy.ttf)format("truetype-variations");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Raleway;src:url(/harmoneasy/assets/Raleway-Italic-VariableFont_wght-DtvgYG-n.ttf)format("truetype-variations");font-weight:100 900;font-style:italic;font-display:swap}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--col-blue);background-clip:padding-box;border:2px solid #0000;border-radius:6px;transition:background .2s}::-webkit-scrollbar-thumb:hover{background:var(--col-blue);opacity:.9;background-clip:padding-box}::-webkit-scrollbar-thumb:active{background:var(--col-blue);opacity:1;background-clip:padding-box}::-webkit-scrollbar-corner{background:0 0}*{scrollbar-color:var(--col-blue) transparent;scrollbar-width:thin}@media (prefers-color-scheme:dark){::-webkit-scrollbar-thumb{background:var(--col-blue);background-clip:padding-box;border:2px solid #0000}::-webkit-scrollbar-thumb:hover{opacity:.8}*{scrollbar-color:var(--col-blue) var(--lightningcss-light,color-mix(in oklch, var(--col-white) 5%, transparent))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 5%, transparent))}}@media (prefers-color-scheme:light){::-webkit-scrollbar-thumb{background:var(--col-blue);background-clip:padding-box;border:2px solid #0000}::-webkit-scrollbar-thumb:hover{opacity:.7}*{scrollbar-color:var(--col-blue) var(--lightningcss-light,color-mix(in oklch, var(--col-black) 5%, transparent))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 5%, transparent))}}html{scroll-behavior:smooth;accent-color:var(--accent-color)}body{scroll-snap-type:y mandatory;color:var(--lightningcss-light,#333)var(--lightningcss-dark,#e0e0e0);background-color:var(--lightningcss-light,#fafafa)var(--lightningcss-dark,#1a1a1a);flex-direction:column;min-height:100dvh;margin:0;display:flex;overflow-y:scroll}body.drag-over{background-color:var(--lightningcss-light,color-mix(in oklch, var(--col-red) 10%, #fff))var(--lightningcss-dark,color-mix(in oklch, var(--col-red) 15%, #000));box-shadow:inset 0 0 0 2px var(--col-red)}a{color:var(--lightningcss-light,var(--col-purple))var(--lightningcss-dark,var(--col-blue));-webkit-text-decoration:inherit;text-decoration:inherit;font-weight:500}a:hover{color:var(--lightningcss-light,var(--col-purple))var(--lightningcss-dark,color-mix(in oklch, var(--col-blue) 110%, #fff))}details,details div{flex-direction:column;display:flex}summary{cursor:pointer}summary:before,summary:after{content:"";width:1em;height:2px;margin-right:calc(var(--pad) / 2);background-color:currentColor;order:99;grid-area:icon}summary:after{transform-origin:50%;transition:transform .3s ease-in-out;transform:rotate(-90deg)}summary{-webkit-user-select:none;user-select:none;grid-gap:calc(var(--pad) / 2);padding:calc(var(--pad) / 2) calc(var(--pad));grid-template-columns:1fr auto;grid-template-areas:"text icon";place-items:center;display:grid}[open] summary:after{transform:rotate(180deg)}.summary-info:before{margin-right:calc(var(--pad) / 2)}::marker{content:""}[open] ::marker{content:""}svg{max-width:100%;overflow:visible}canvas{max-width:100%;max-height:100%}input{padding:calc(var(--pad) / 1) calc(var(--pad) / 2);flex:1}input[type=search]{appearance:none;padding-left:var(--pad);color:var(--lightningcss-light,var(--col-black))var(--lightningcss-dark,var(--col-white));text-underline-offset:2px;background:0 0;border:none;outline:none;text-decoration:underline}::placeholder{color:currentColor;opacity:1}::-moz-placeholder{color:currentColor}select{cursor:pointer;padding:calc(var(--pad)) calc(var(--pad));border:var(--border);border-radius:var(--curve,4px);font-family:inherit;font-size:inherit;color:inherit;background:inherit;border-width:4px}select:focus{border-color:var(--col-accent);outline:none}option{background:inherit;background:var(--lightningcss-light,var(--col-white))var(--lightningcss-dark,var(--col-black));color:var(--lightningcss-light,var(--col-black))var(--lightningcss-dark,var(--col-white));padding:calc(var(--pad)) calc(var(--pad))}option:hover{color:var(--col-orange)}option:checked{font-weight:900}menu,ol,ul{margin:0;padding:0;list-style-type:none}button{border:var(--border);padding:calc(var(--pad) / 2) calc(var(--pad));background-color:var(--col-bg);min-width:44px;min-height:44px;color:var(--col-fg);cursor:pointer;box-sizing:border-box;border-color:#0000;border-radius:8px;font-family:inherit;font-size:1em;font-weight:700;transition:background .2s,border-color .25s}button.primary{background-color:var(--lightningcss-light,color-mix(in oklch, var(--col-pink) 40%, #fff))var(--lightningcss-dark,var(--col-pink));color:var(--lightningcss-light,var(--col-pink))var(--lightningcss-dark,#fff)}button.primary:hover{background-color:var(--lightningcss-light,color-mix(in oklch, var(--col-plum) 60%, #fff))var(--lightningcss-dark,color-mix(in oklch, var(--col-plum) 120%, #fff))}button:hover{border-color:var(--lightningcss-light,color-mix(in oklch, var(--col-plum) 60%, #fff))var(--lightningcss-dark,var(--col-plum))}button:active{transform:scale(.96)}#btn-metronome[aria-pressed=true]{background-color:var(--col-plum);color:#fff;border-color:currentColor}button:focus{outline:none}button:focus-visible{outline:4px auto var(--col-orange)}.btn-close{font-size:0}.btn-close:before{content:"x";margin:auto;font-size:1rem;font-weight:900}dialog .btn-close{top:var(--pad);right:calc(var(--pad));z-index:999;position:absolute}.logo-inline{height:1.5em;vertical-align:middle;filter:invert();width:auto;height:1lh;margin-right:.5em;display:inline-block}.btn-remove{background:var(--lightningcss-light,color-mix(in oklch, var(--col-red) 30%, #fff))var(--lightningcss-dark,color-mix(in oklch, var(--col-red) 90%, #000));color:var(--lightningcss-light,var(--col-red))var(--lightningcss-dark,#fff);cursor:pointer;right:var(--pad);top:var(--pad);border:none;border-radius:4px;font-size:0;transition:background .2s;position:absolute}.btn-remove:hover{background:var(--lightningcss-light,color-mix(in oklch, var(--col-red) 50%, #fff))var(--lightningcss-dark,var(--col-red))}.btn-reset{text-underline-offset:4px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.btn-reset:hover{color:var(--col-red,red);-webkit-text-decoration-color:var(--col-red,red);text-decoration-color:var(--col-red,red)}.btn-remove:before,.btn-remove-chain:before,.btn-reset:before{content:"";vertical-align:middle;background-color:currentColor;flex:none;width:20px;height:20px;margin-right:.375rem;display:inline-block;-webkit-mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='1.75'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M3%206h18M9%206V3h6v3M5%206l1%2015h12l1-15M10%2010v7M14%2010v7'/%3e%3c/svg%3e") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='1.75'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20d='M3%206h18M9%206V3h6v3M5%206l1%2015h12l1-15M10%2010v7M14%2010v7'/%3e%3c/svg%3e") 50%/contain no-repeat}.btn-remove{justify-content:center;align-items:center;display:inline-flex}.btn-kill-switch{--col-bg:var(--col-red,red);text-transform:uppercase}.btn-bluetooth:before{content:"📡";margin-right:.375rem}.btn-midi:before{content:"🎛";margin-right:.375rem}.btn-connect{--col-bg:var(--col-green)}.btn-connect:before{content:"+";margin-right:.2rem}.btn-disconnect{--col-bg:var(--col-pink)}.btn-disconnect:before{content:"-";margin-right:.2rem}.btn-import:before{content:"↑";margin-right:.2rem}.btn-export:before{content:"↓";margin-right:.2rem}.btn-settings{--col-bg:var(--col-pink)}.btn-settings:before{content:"⚙";margin-right:.2rem}.btn-add:before{content:"+";margin-right:.2rem}.btn-zoom-in,.btn-zoom-out{justify-content:center;align-items:center;gap:.375em;display:inline-flex}.btn-zoom-in:before,.btn-zoom-out:before{content:"";width:var(--zoom-icon-size,1.25em);height:var(--zoom-icon-size,1.25em);-webkit-mask:var(--zoom-icon) center/contain no-repeat;mask:var(--zoom-icon) center/contain no-repeat;background-color:currentColor;flex:none;display:inline-block}.btn-zoom-in{--zoom-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='1.8'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3ccircle%20cx='10'%20cy='10'%20r='6.5'/%3e%3cpath%20d='m15%2015%206%206M7%2010h6m-3-3v6'/%3e%3c/svg%3e")}.btn-zoom-out{--zoom-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='1.8'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3ccircle%20cx='10'%20cy='10'%20r='6.5'/%3e%3cpath%20d='m15%2015%206%206M7%2010h6'/%3e%3c/svg%3e")}.graph-view-controls .btn-zoom-in,.graph-view-controls .btn-zoom-out{--zoom-icon-size:22px}.file-menu>button,.btn-file-menu-item{min-width:32px;min-height:28px;color:var(--col-fg);background:0 0;border:1px solid #0000;border-radius:4px;padding:4px 10px;font-size:12px;font-weight:500;line-height:1.1}.file-menu>button:hover,.btn-file-menu-item:hover{background:color-mix(in oklch, var(--col-fg) 12%, transparent)}.file-menu>button:focus-visible,.btn-file-menu-item:focus-visible{outline:2px solid var(--col-orange);outline-offset:1px}.transformer-drawer{--col-bg:#00000080}.btn-transport{justify-content:center;align-items:center;gap:var(--gap);display:inline-flex}.btn-transport svg{fill:currentColor;flex:none;width:1em;height:1em}.piano-key{transition:opacity var(--time-quick,90ms) linear, fill 4ms linear;fill:var(--fill,white);border-radius:10%}.piano-key .piano-key-name{visibility:hidden}@media (hover:hover) and (pointer:fine){.piano-key:hover{fill:var(--col-green)}.piano-key:hover .piano-key-name{visibility:visible}}.piano-key.active,.piano-key.pressed{fill:var(--col-accent,var(--col-orange,orange))}@media (hover:hover) and (pointer:fine){.piano-key.active:hover,.piano-key.pressed:hover{fill:color-mix(in oklch, var(--col-accent) 50%, var(--fill))}}.piano-key:focus{outline:none}.piano-key:focus-visible{stroke-width:4px;stroke:var(--col-orange);outline:none}.piano-key-white{--fill:var(--col-white,white)}.piano-key-black{--fill:var(--col-black,black)}.piano-key-black:focus-visible{stroke-width:4px;stroke:var(--col-orange)}.piano-key-indicators{pointer-events:none}.piano-note-indicator{transition:opacity var(--time-quick,90ms) linear;stroke:var(--col-white);stroke-width:.3px;fill:var(--col-orange);opacity:0}.piano{--piano-key-width:23px;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;flex-direction:column;max-width:100%;min-height:180px;display:flex;position:relative;overflow:hidden}.piano .piano-viewport{flex:1;min-height:0;overflow:hidden}.piano .piano-keys{width:100%;min-width:calc(var(--piano-white-keys,75) * var(--piano-key-width));pointer-events:auto;touch-action:none;height:100%;display:block}.piano .piano-range{box-sizing:border-box;pointer-events:auto;touch-action:pan-y;width:100%;min-width:0;accent-color:var(--col-orange,orange);flex:0 0 32px;margin:0;padding:0 16px}@media (pointer:coarse){.piano{--piano-key-width:44px}.piano .piano-range{flex-basis:44px}}input[type=checkbox]{--visual-size:20px;appearance:none;width:var(--visual-size);height:var(--visual-size);padding:calc((48px - var(--visual-size)) / 2);box-sizing:content-box;cursor:pointer;vertical-align:middle;margin:0;display:inline-block;position:relative}input[type=checkbox]:after{content:"";left:calc((100% - var(--visual-size)) / 2 - (48px - var(--visual-size)) / 2);top:calc((100% - var(--visual-size)) / 2 - (48px - var(--visual-size)) / 2);width:var(--visual-size);height:var(--visual-size);background:var(--lightningcss-light,var(--col-white))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 90%, var(--col-black)));border:2px solid var(--lightningcss-light,color-mix(in oklch, var(--col-black) 20%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 20%, var(--col-black)));border-radius:4px;transition:background .12s,border-color .12s,box-shadow .12s;position:absolute;box-shadow:inset 0 1px #00000008}input[type=checkbox]:checked:after{background:var(--col-blue);border-color:var(--col-blue);box-shadow:inset 0 0 0 3px var(--col-white)}input[type=checkbox]:focus-visible{outline:none}input[type=checkbox]:focus-visible:after{box-shadow:0 0 0 4px var(--lightningcss-light,color-mix(in oklch, var(--col-blue) 14%, transparent))var(--lightningcss-dark,color-mix(in oklch, var(--col-blue) 14%, transparent)), inset 0 1px 0 #00000008}label>input[type=checkbox]{display:inline-block}input[type=checkbox][disabled]:after{background:var(--lightningcss-light,color-mix(in oklch, var(--col-white) 95%, var(--col-black)))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 20%, var(--col-black)));border-color:var(--lightningcss-light,color-mix(in oklch, var(--col-black) 13%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 35%, var(--col-black)));opacity:.8}.qwerty-keyboard{--key-size:40px;--key-spacing:2px;--row-spacing:8px;--key-color:#ccc;--special-key-color:#555;--key-active-color:#4caf50;--key-border:#999;pointer-events:all;-webkit-user-select:none;user-select:none;background:var(--lightningcss-light,#f5f5f5)var(--lightningcss-dark,#2a2a2a);border-radius:8px;max-height:min(200px,25vh);padding:10px;overflow:auto;box-shadow:0 4px 12px #00000026}.qwerty-keyboard .qwerty-keys{width:100%;height:auto;display:block}.qwerty-keyboard .qwerty-key{cursor:pointer;-webkit-user-select:none;user-select:none;filter:drop-shadow(0 2px 4px #0000001a);transition:fill 50ms linear,filter 50ms linear}.qwerty-keyboard .qwerty-key:hover{filter:drop-shadow(0 2px 6px #00000026)brightness(.95)}.qwerty-keyboard .qwerty-key.active{filter:drop-shadow(0 2px 8px #4caf5066);fill:var(--key-active-color)!important}.qwerty-keyboard .qwerty-key:active{filter:drop-shadow(0 1px 2px #0003)brightness(.9)}.qwerty-keyboard .qwerty-key-label{-webkit-user-select:none;user-select:none;pointer-events:none;font-weight:500}.qwerty-keyboard .qwerty-key-group{cursor:pointer}.qwerty-keyboard .qwerty-key-group:hover .qwerty-key{filter:drop-shadow(0 2px 6px #00000026)brightness(.95)}#graph{width:100%;height:100%}#graph .beat{pointer-events:none}#graph .react-flow{background:0 0;grid-area:graph}#graph .react-flow__attribution{display:none}#graph .react-flow__edges{width:100%}#graph .react-flow__node{--hue-accent:90%;--xy-node-border:transparent;--xy-node-group-background-color-default:transparent;background-color:#0000;padding:0}#graph .react-flow__node:has(.is-fullscreen){margin:0;padding:0;position:absolute;inset:0;transform:none!important}#graph .react-flow__node-input,#graph .react-flow__node-output{width:max-content;max-width:none;height:auto}#graph .react-flow__controls-button{background-color:var(--col-black)}#graph .react-flow__controls-button svg{max-width:32px;max-height:32px;fill:var(--col-white)}.react-flow.node-expanded>.react-flow__renderer,.react-flow.node-expanded>.react-flow__panel{visibility:hidden}.node-viewport-editor{z-index:10000;background:var(--col-bg);position:fixed;inset:0;overflow:auto}.node-viewport-editor>.graph-node.is-fullscreen{box-sizing:border-box;width:100%;min-width:0;height:auto;min-height:100%;padding:var(--pad);border-radius:0}.node-viewport-editor .btn-fullscreen{width:auto}.node-viewport-editor>.graph-node.is-fullscreen:has(.audiobus-butterchurn){border:0;gap:0;height:100%;min-height:0;padding:0;overflow:hidden}.node-viewport-editor>.graph-node.is-fullscreen:has(.audiobus-butterchurn)>.device-node-header{z-index:1;border:0;padding:0;position:absolute;inset:0 0 auto}.node-viewport-editor>.graph-node.is-fullscreen:has(.audiobus-butterchurn)>.device-node-header>h6{display:none}.node-viewport-editor>.graph-node.is-fullscreen:has(.audiobus-butterchurn)>.nodrag.nowheel{width:100%;height:100%;min-height:0}.node-viewport-editor>.graph-node.is-fullscreen:has(.audiobus-butterchurn) .audiobus-butterchurn{aspect-ratio:auto;border-radius:0;height:100%;margin:0}.graph-node{color:var(--col-fg);border:var(--border);border-radius:var(--curve);padding:var(--pad);text-transform:uppercase;letter-spacing:1px;background-color:color-mix(in oklch, oklch(50% .1385 var(--hue-accent)) 90%, transparent);background-image:linear-gradient(0deg, color-mix(in oklch, oklch(50% .16392 var(--hue-accent)) 90%, transparent), color-mix(in oklch, oklch(50% .1385 var(--hue-accent)) 90%, transparent));background-blend-mode:hue;min-width:var(--size,150px);gap:var(--gap);box-shadow:0 4px 6px var(--lightningcss-light,color-mix(in oklch, var(--col-black) 10%, transparent))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 10%, transparent));flex-direction:column;font-weight:700;display:flex;position:relative}.graph-node h6,.graph-node h5,.graph-node p{max-width:30ch}.graph-node>label>button{width:100%}.graph-node .btn-fullscreen{top:var(--pad);left:var(--pad);z-index:5;position:absolute}.graph-node.has-controls>:first-child{padding-bottom:var(--pad);border-bottom:var(--border)}.graph-node.is-fullscreen{width:100%;height:100%;margin:0;padding:0}.config-enabled-label{align-items:center;gap:.5rem;display:inline-flex}.config-enabled-label svg{fill:none;stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:20px;height:20px}.node-input .btn-remove,.node-output .btn-remove,.node-transformer .btn-remove{left:var(--pad);right:auto}.node-input .btn-fullscreen,.node-output .btn-fullscreen,.node-transformer .btn-fullscreen{left:auto;right:var(--pad)}.graph-node>.device-node-header{align-items:center;gap:var(--gap);grid-template-columns:auto minmax(0,1fr) auto;display:grid}.graph-node>.device-node-header>h6{text-align:center;overflow-wrap:anywhere;min-width:0;max-width:none;margin:0}.graph-node>.device-node-header>.btn-remove,.graph-node>.device-node-header>.btn-fullscreen{width:auto;margin:0;position:static}.node-transformer{min-height:var(--size,150px)}.node-transformer>*{justify-content:space-between;align-items:center;display:flex}.node-transformer>label+label{margin-top:var(--gap)}.node-transformer select{margin-left:var(--gap)}.node-transformer .transformer-icon{width:48px;height:48px;padding:calc(var(--pad) * .5);filter:drop-shadow(0 2px 4px #0003);color:currentColor;margin:0 auto}.node-transformer .transformer-icon:hover{filter:drop-shadow(0 4px 8px #0006)brightness(1.1)}.node-transformer>h6{text-align:center;white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:none;margin:0;display:block}.node-start,.node-add-transformer,.node-end{--size:280px;box-sizing:border-box;text-transform:none;letter-spacing:normal;border-radius:16px;justify-content:center;align-items:stretch;width:320px}.node-start h6,.node-add-transformer h6,.node-end h6{text-align:center;margin:0}.node-start>.btn-add,.node-add-transformer>.btn-add,.node-end>.btn-add{width:100%}.node-start .shared-device-selector,.node-add-transformer .shared-device-selector,.node-end .shared-device-selector{flex-direction:column;align-items:stretch;gap:.5rem;font-size:.875rem;font-weight:400;display:flex}.node-start .shared-device-selector select,.node-add-transformer .shared-device-selector select,.node-end .shared-device-selector select{box-sizing:border-box;width:100%;min-width:0;font:inherit}.node-start{--hue-accent:162}.node-end{--hue-accent:25}.node-add-transformer{--hue-accent:280}.add-transformer-dialog .transformer-picker{gap:var(--pad);flex-direction:column;display:flex}.add-transformer-dialog .transformer-picker .items-grid{margin:0;padding:0;list-style:none}.add-transformer-dialog .transformer-picker .grid-item{overflow-wrap:anywhere;width:100%;height:100%}.add-transformer-dialog .transformer-picker .no-matches{grid-column:1/-1}.node-input{--hue-accent:162;min-width:404px}.node-output{--hue-accent:25;min-width:404px}.category-tuning{--hue-accent:219}.category-timing{--hue-accent:280}.filter-label{gap:var(--gap);flex-flow:row;width:fit-content;display:flex}.graph-node-menu{gap:var(--gap);margin-top:var(--pad);padding-top:var(--pad);border-top:var(--border)}.graph-node-menu button{font-size:66%}.graph-node-menu .btn-previous,.graph-node-menu .btn-next{justify-content:center;align-items:center;gap:.375rem;display:inline-flex}.graph-node-menu .btn-previous svg,.graph-node-menu .btn-next svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:1em;height:1em}.no-matches{color:var(--col-red)}.graph-container{flex-direction:column;width:100%;height:100%;display:flex;position:relative}.graph-container.fullscreen-mode .transformers-drawer,.graph-container.fullscreen-mode .react-flow__edges,.graph-container.fullscreen-mode .graph-node-menu,.graph-container.fullscreen-mode .react-flow__nodes>div:not(.is-fullscreen){display:none}.graph-container.fullscreen-mode .is-fullscreen{z-index:10;border-width:2px;width:min(90vw,900px);max-height:calc(100vh - 120px);position:absolute;top:60px;left:50%;overflow:auto;transform:translate(-50%);box-shadow:0 10px 40px #0000004d}.fullscreen-header{height:60px;padding:0 var(--pad);background:var(--col-bg);border-bottom:var(--border);z-index:11;justify-content:space-between;align-items:center;display:flex;position:absolute;top:0;left:0;right:0}.fullscreen-header h3{text-transform:uppercase;letter-spacing:1px;flex:1;margin:0}.fullscreen-header .btn-close-fullscreen{color:var(--col-fg);cursor:pointer;padding:var(--pad);background:0 0;border:none;justify-content:center;align-items:center;font-size:24px;transition:transform .2s;display:flex}.fullscreen-header .btn-close-fullscreen:hover{transform:scale(1.1)}.fullscreen-header .btn-close-fullscreen:active{transform:scale(.95)}.iochain-manager{--stroke:2px;--stroke-color:var(--col-fg);background:var(--col-bg);padding:var(--gap);border-top:var(--border);flex-direction:column;display:flex}.iochain-manager summary{background:var(--col-bg);cursor:pointer;padding:var(--gap);text-transform:uppercase;letter-spacing:1px;font-size:.85rem;font-weight:700}.iochain-manager .iochain-actions{padding:var(--gap)}.iochain-manager .iochain-actions .btn-add-chain{background:var(--lightningcss-light,color-mix(in oklch, var(--col-white) 94%, var(--col-black)))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 85%, #000));width:100%;color:var(--lightningcss-light,#333)var(--lightningcss-dark,var(--col-white));border:1px solid var(--lightningcss-light,color-mix(in oklch, var(--col-black) 13%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 25%, var(--col-black)));cursor:pointer;border-radius:4px;padding:8px 12px;transition:all .2s}.iochain-manager .iochain-actions .btn-add-chain:hover{background:var(--lightningcss-light,color-mix(in oklch, var(--col-black) 5%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 80%, #000))}.iochain-manager .chain-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.iochain-manager .chain-list li{align-items:center;gap:4px;display:flex}.iochain-manager .chain-list li.active .btn-switch-chain{background:var(--lightningcss-light,color-mix(in oklch, var(--col-black) 10%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 15%, var(--col-black)));font-weight:700}.iochain-manager .chain-list .btn-switch-chain{background:var(--lightningcss-light,color-mix(in oklch, var(--col-white) 94%, var(--col-black)))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 85%, #000));color:var(--lightningcss-light,#333)var(--lightningcss-dark,var(--col-white));border:1px solid var(--lightningcss-light,color-mix(in oklch, var(--col-black) 13%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 25%, var(--col-black)));cursor:pointer;text-align:left;border-radius:4px;flex:1;padding:8px 12px;transition:all .2s}.iochain-manager .chain-list .btn-switch-chain:hover{background:var(--lightningcss-light,color-mix(in oklch, var(--col-black) 5%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 80%, #000))}.iochain-manager .chain-list .btn-remove-chain{color:var(--col-fg);border:1px solid var(--col-fg);cursor:pointer;background:0 0;border-radius:4px;padding:6px 10px;transition:all .2s}.iochain-manager .chain-list .btn-remove-chain:hover:not(:disabled){color:#fff;background:#f44;border-color:#f44}.iochain-manager .chain-list .btn-remove-chain:disabled{opacity:.3;cursor:not-allowed}.iochain-manager .no-chains{padding:var(--gap);color:var(--col-fg);opacity:.7;text-align:center}.node-actions{gap:var(--gap);flex-wrap:wrap;display:flex}.node-actions .btn-fullscreen{padding:calc(var(--pad) * .75);background:var(--col-bg);border:var(--border);color:var(--col-fg);border-radius:var(--curve);cursor:pointer;flex:1;font-size:16px;transition:all .2s}.node-actions .btn-fullscreen:hover{background:color-mix(in oklch, var(--col-accent) 20%, transparent);transform:translateY(-2px)}.node-actions .btn-fullscreen:active{transform:translateY(0)}.node-actions .btn-remove{flex:1}dialog.add-input-dialog,dialog.add-transformer-dialog,dialog.add-output-dialog{--pad:16px;--gap:8px;box-sizing:border-box;width:min(800px,100vw - 24px);min-width:0;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);padding:0;font-size:14px;overflow:hidden}dialog.add-input-dialog[open],dialog.add-transformer-dialog[open],dialog.add-output-dialog[open]{grid-template-rows:auto minmax(0,1fr);display:grid}dialog.add-input-dialog:before,dialog.add-input-dialog:after,dialog.add-transformer-dialog:before,dialog.add-transformer-dialog:after,dialog.add-output-dialog:before,dialog.add-output-dialog:after{content:none}dialog.add-input-dialog>*,dialog.add-transformer-dialog>*,dialog.add-output-dialog>*{min-width:0;max-width:none}dialog.add-input-dialog>header,dialog.add-transformer-dialog>header,dialog.add-output-dialog>header{position:static}dialog.add-input-dialog>header h5,dialog.add-transformer-dialog>header h5,dialog.add-output-dialog>header h5{align-items:center;min-height:44px;padding-right:52px;display:flex}dialog.add-input-dialog .dialog-content,dialog.add-transformer-dialog .dialog-content,dialog.add-output-dialog .dialog-content{overscroll-behavior:contain;min-height:0;overflow-y:auto}dialog.add-input-dialog .dialog-section,dialog.add-transformer-dialog .dialog-section,dialog.add-output-dialog .dialog-section{flex-shrink:0}dialog.add-input-dialog .filter-input-global,dialog.add-transformer-dialog .filter-input-global,dialog.add-output-dialog .filter-input-global{width:100%;min-width:0}dialog.add-input-dialog .items-grid,dialog.add-transformer-dialog .items-grid,dialog.add-output-dialog .items-grid{grid-template-columns:repeat(auto-fill,minmax(min(140px,100%),1fr))}dialog.add-input-dialog>form,dialog.add-transformer-dialog>form,dialog.add-output-dialog>form{z-index:11;border:0;margin:0;padding:0;position:absolute;top:12px;right:12px}dialog.add-input-dialog>form .btn-close,dialog.add-transformer-dialog>form .btn-close,dialog.add-output-dialog>form .btn-close{letter-spacing:0;background:0 0;border:1px solid #0000;border-radius:6px;place-items:center;width:44px;height:44px;padding:0;font-size:28px;font-weight:400;line-height:1;display:grid;position:static}dialog.add-input-dialog>form .btn-close:before,dialog.add-transformer-dialog>form .btn-close:before,dialog.add-output-dialog>form .btn-close:before{content:none}.add-output-dialog,.add-transformer-dialog{border-radius:var(--curve);border:var(--border);background-color:var(--col-bg);min-width:600px;max-width:800px;max-height:80vh;color:var(--col-fg);overflow:auto}.add-output-dialog header,.add-transformer-dialog header{padding:var(--pad);border-bottom:var(--border);background-color:var(--col-bg);z-index:10;position:sticky;top:0}.add-output-dialog header h5,.add-transformer-dialog header h5{margin:0 0 var(--pad) 0;text-transform:uppercase;letter-spacing:1px;font-size:1.25em}.add-output-dialog .dialog-filter,.add-transformer-dialog .dialog-filter{align-items:center;gap:calc(var(--gap) * .5);padding:calc(var(--pad) * .75);background-color:color-mix(in oklch, var(--col-fg) 5%, transparent);border:var(--border);border-radius:var(--curve);transition:all .2s;display:flex}.add-output-dialog .dialog-filter .filter-icon,.add-transformer-dialog .dialog-filter .filter-icon{flex-shrink:0;font-size:1.2em}.add-output-dialog .dialog-filter .filter-input-global,.add-transformer-dialog .dialog-filter .filter-input-global{color:var(--col-fg);background:0 0;border:none;outline:none;flex:1;padding:0;font-size:1em}.add-output-dialog .dialog-filter .filter-input-global::placeholder,.add-transformer-dialog .dialog-filter .filter-input-global::placeholder{color:color-mix(in oklch, var(--col-fg) 50%, transparent)}.add-output-dialog .dialog-filter .filter-input-global:focus,.add-transformer-dialog .dialog-filter .filter-input-global:focus{outline:2px solid var(--col-accent);outline-offset:-2px}.add-output-dialog .dialog-filter:focus-within,.add-transformer-dialog .dialog-filter:focus-within{background-color:color-mix(in oklch, var(--col-fg) 10%, transparent);border-color:var(--col-accent);box-shadow:0 0 0 3px color-mix(in oklch, var(--col-accent) 20%, transparent)}.add-output-dialog .dialog-content,.add-transformer-dialog .dialog-content{gap:var(--pad);padding:var(--pad);flex-direction:column;display:flex}.add-output-dialog .dialog-section,.add-transformer-dialog .dialog-section{gap:calc(var(--gap) * 1.5);flex-direction:column;display:flex}.add-output-dialog .dialog-section .section-title,.add-transformer-dialog .dialog-section .section-title{text-transform:uppercase;letter-spacing:2px;color:color-mix(in oklch, var(--col-fg) 80%, transparent);padding-bottom:calc(var(--gap) * .5);border-bottom:1px solid color-mix(in oklch, var(--col-fg) 15%, transparent);margin:0;font-size:.95em}.add-output-dialog .items-grid,.add-transformer-dialog .items-grid{gap:var(--gap);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));display:grid}.add-output-dialog .items-grid .grid-item,.add-transformer-dialog .items-grid .grid-item{justify-content:center;align-items:center;gap:calc(var(--gap) * .75);padding:var(--pad);background-color:color-mix(in oklch, var(--col-fg) 5%, transparent);border:2px solid color-mix(in oklch, var(--col-fg) 20%, transparent);border-radius:var(--curve);cursor:pointer;text-align:center;text-transform:uppercase;letter-spacing:.5px;color:var(--col-fg);flex-direction:column;font-size:.9em;font-weight:600;transition:all .2s;display:flex}.add-output-dialog .items-grid .grid-item .item-icon,.add-transformer-dialog .items-grid .grid-item .item-icon{justify-content:center;align-items:center;height:1.2em;font-size:2em;transition:transform .2s;display:flex}.add-output-dialog .items-grid .grid-item .item-name,.add-transformer-dialog .items-grid .grid-item .item-name{word-wrap:break-word;line-height:1.3;display:block}.add-output-dialog .items-grid .grid-item:hover,.add-transformer-dialog .items-grid .grid-item:hover{background-color:color-mix(in oklch, var(--col-fg) 10%, transparent);border-color:var(--col-accent);box-shadow:0 4px 12px color-mix(in oklch, var(--col-accent) 30%, transparent);transform:translateY(-4px)}.add-output-dialog .items-grid .grid-item:hover .item-icon,.add-transformer-dialog .items-grid .grid-item:hover .item-icon{transform:scale(1.15)}.add-output-dialog .items-grid .grid-item:active,.add-transformer-dialog .items-grid .grid-item:active{box-shadow:0 2px 6px color-mix(in oklch, var(--col-accent) 20%, transparent);transform:translateY(-2px)}.add-output-dialog .items-grid .grid-item:focus-visible,.add-transformer-dialog .items-grid .grid-item:focus-visible{outline:2px solid var(--col-accent);outline-offset:2px}.add-output-dialog form,.add-transformer-dialog form{gap:var(--gap);padding:var(--pad);border-top:var(--border);justify-content:flex-end;display:flex}.add-output-dialog form .btn-close,.add-transformer-dialog form .btn-close{padding:calc(var(--pad) * .75) calc(var(--pad) * 1.5);background-color:color-mix(in oklch, var(--col-fg) 10%, transparent);border:var(--border);color:var(--col-fg);border-radius:var(--curve);cursor:pointer;text-transform:uppercase;letter-spacing:.5px;font-size:.9em;font-weight:600;transition:all .2s}.add-output-dialog form .btn-close:hover,.add-transformer-dialog form .btn-close:hover{background-color:color-mix(in oklch, var(--col-fg) 15%, transparent);border-color:var(--col-fg);box-shadow:0 2px 8px color-mix(in oklch, var(--col-black) 20%, transparent);transform:translateY(-2px)}.add-output-dialog form .btn-close:active,.add-transformer-dialog form .btn-close:active{transform:translateY(0)}.add-output-dialog form .btn-close:focus-visible,.add-transformer-dialog form .btn-close:focus-visible{outline:2px solid var(--col-accent);outline-offset:2px}.add-input-dialog{border-radius:var(--curve);border:var(--border);background-color:var(--col-bg);min-width:600px;max-width:800px;max-height:80vh;color:var(--col-fg);overflow:auto}.add-input-dialog header{padding:var(--pad);border-bottom:var(--border);background-color:var(--col-bg);z-index:10;position:sticky;top:0}.add-input-dialog header h5{margin:0 0 var(--pad) 0;text-transform:uppercase;letter-spacing:1px;font-size:1.25em}.add-input-dialog .dialog-filter{align-items:center;gap:calc(var(--gap) * .5);padding:calc(var(--pad) * .75);background-color:color-mix(in oklch, var(--col-fg) 5%, transparent);border:var(--border);border-radius:var(--curve);transition:all .2s;display:flex}.add-input-dialog .dialog-filter .filter-icon{flex-shrink:0;font-size:1.2em}.add-input-dialog .dialog-filter .filter-input-global{color:var(--col-fg);background:0 0;border:none;outline:none;flex:1;padding:0;font-size:1em}.add-input-dialog .dialog-filter .filter-input-global::placeholder{color:color-mix(in oklch, var(--col-fg) 50%, transparent)}.add-input-dialog .dialog-filter .filter-input-global:focus{outline:2px solid var(--col-accent);outline-offset:-2px}.add-input-dialog .dialog-filter:focus-within{background-color:color-mix(in oklch, var(--col-fg) 10%, transparent);border-color:var(--col-accent);box-shadow:0 0 0 3px color-mix(in oklch, var(--col-accent) 20%, transparent)}.add-input-dialog .dialog-content{gap:var(--pad);padding:var(--pad);flex-direction:column;display:flex}.add-input-dialog .dialog-section{gap:calc(var(--gap) * 1.5);flex-direction:column;display:flex}.add-input-dialog .dialog-section .section-title{text-transform:uppercase;letter-spacing:2px;color:color-mix(in oklch, var(--col-fg) 80%, transparent);padding-bottom:calc(var(--gap) * .5);border-bottom:1px solid color-mix(in oklch, var(--col-fg) 15%, transparent);margin:0;font-size:.95em}.add-input-dialog .items-grid{gap:var(--gap);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));display:grid}.add-input-dialog .items-grid .grid-item{justify-content:center;align-items:center;gap:calc(var(--gap) * .75);padding:var(--pad);background-color:color-mix(in oklch, var(--col-fg) 5%, transparent);border:2px solid color-mix(in oklch, var(--col-fg) 20%, transparent);border-radius:var(--curve);cursor:pointer;text-align:center;text-transform:uppercase;letter-spacing:.5px;color:var(--col-fg);flex-direction:column;font-size:.9em;font-weight:600;transition:all .2s;display:flex}.add-input-dialog .items-grid .grid-item .item-icon{justify-content:center;align-items:center;height:1.2em;font-size:2em;transition:transform .2s;display:flex}.add-input-dialog .items-grid .grid-item .item-name{word-wrap:break-word;line-height:1.3;display:block}.add-input-dialog .items-grid .grid-item:hover{background-color:color-mix(in oklch, var(--col-fg) 10%, transparent);border-color:var(--col-accent);box-shadow:0 4px 12px color-mix(in oklch, var(--col-accent) 30%, transparent);transform:translateY(-4px)}.add-input-dialog .items-grid .grid-item:hover .item-icon{transform:scale(1.15)}.add-input-dialog .items-grid .grid-item:active{box-shadow:0 2px 6px color-mix(in oklch, var(--col-accent) 20%, transparent);transform:translateY(-2px)}.add-input-dialog .items-grid .grid-item:focus-visible{outline:2px solid var(--col-accent);outline-offset:2px}.add-input-dialog form{gap:var(--gap);padding:var(--pad);border-top:var(--border);justify-content:flex-end;display:flex}.add-input-dialog form .btn-close{padding:calc(var(--pad) * .75) calc(var(--pad) * 1.5);background-color:color-mix(in oklch, var(--col-fg) 10%, transparent);border:var(--border);color:var(--col-fg);border-radius:var(--curve);cursor:pointer;text-transform:uppercase;letter-spacing:.5px;font-size:.9em;font-weight:600;transition:all .2s}.add-input-dialog form .btn-close:hover{background-color:color-mix(in oklch, var(--col-fg) 15%, transparent);border-color:var(--col-fg);box-shadow:0 2px 8px color-mix(in oklch, var(--col-black) 20%, transparent);transform:translateY(-2px)}.add-input-dialog form .btn-close:active{transform:translateY(0)}.add-input-dialog form .btn-close:focus-visible{outline:2px solid var(--col-accent);outline-offset:2px}#graph:has(.chains-workspace){display:block;overflow:auto}.chains-workspace{gap:1rem;padding:.5rem;display:grid}.chain-panel{border:1px solid var(--col-fg);min-width:0;container:chain-panel/inline-size}.chain-panel.active{border-width:2px}.chain-toolbar,.iochain-manager{flex-wrap:wrap;align-items:center;gap:.5rem;padding:.5rem;display:flex}.chain-toolbar strong{margin-right:auto}.chain-graph{grid-template:"sidebar graph"minmax(22rem,55vh)/minmax(8rem,14rem) minmax(0,1fr);min-width:0;display:grid;position:relative}.chain-graph .presets{grid-area:presets}.chain-graph .chain-layout{grid-area:layout;align-items:center;gap:.5rem;padding:.5rem;display:flex}.chain-graph .transformers-drawer{min-width:0;min-height:0;overflow:auto}.chain-graph .fullscreen-header{grid-column:1/-1}.chain-graph .react-flow{min-width:0;min-height:0}@media (width<=600px){.chain-graph{grid-template-columns:minmax(6rem,8rem) minmax(0,1fr)}}.chain-toolbar .chain-name{min-width:6rem;max-width:100%;font:inherit;color:inherit;text-align:left;margin-right:auto;font-weight:700}.chain-toolbar input.chain-name{box-sizing:border-box;width:100%;min-height:44px;box-shadow:none;cursor:text;background:0 0;border:1px solid #0000;border-radius:4px}.chain-toolbar input.chain-name::placeholder{color:inherit;opacity:1}.chain-toolbar input.chain-name:hover{border-color:color-mix(in srgb, currentColor 25%, transparent)}.chain-toolbar input.chain-name:focus{background:color-mix(in srgb, currentColor 8%, transparent);outline-offset:1px;border-color:currentColor;outline:2px solid}.chain-toolbar .chain-name:focus-visible{outline:2px solid}.presets{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.presets select,.iochain-manager select{min-width:0;max-width:100%}.iochain-manager .chain-create-control{grid-template-columns:minmax(0,1fr) auto;width:min(100%,38rem);min-width:0;font-size:.875rem;display:grid}.iochain-manager .chain-create-control select,.iochain-manager .chain-create-control button{box-sizing:border-box;border:1px solid color-mix(in srgb, currentColor 35%, transparent);min-height:44px;font:inherit;margin:0;padding:.5rem .75rem}.iochain-manager .chain-create-control select{border-radius:6px 0 0 6px;width:100%}.iochain-manager .chain-create-control button{background:color-mix(in srgb, currentColor 10%, transparent);white-space:nowrap;border-left:0;border-radius:0 6px 6px 0;font-weight:700}.iochain-manager .chain-create-control button:hover{background:color-mix(in srgb, currentColor 18%, transparent)}.iochain-manager .chain-create-control button:active{transform:none}.iochain-manager .chain-create-control :focus-visible{outline:2px solid var(--col-orange);outline-offset:-2px}.chain-toolbar{gap:.5rem;padding:.375rem .5rem;font-size:.875rem}.chain-toolbar .chain-name{padding:.25rem .5rem}.chain-toolbar .presets{margin-right:auto}.chain-toolbar select{font:inherit;border-width:1px;border-radius:6px;padding:.375rem .5rem}.chain-actions{flex-wrap:wrap;gap:.25rem;display:flex}.chain-actions button{min-height:44px;font:inherit;justify-content:center;align-items:center;gap:.375rem;padding:.375rem .5rem;display:inline-flex}.chain-actions svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:1rem;height:1rem}.chain-graph .chain-layout{padding:.25rem .5rem;font-size:.875rem}.chain-graph .chain-layout select{font:inherit;border-width:1px;border-radius:6px;padding:.25rem .5rem}.chain-panel.inactive{border-style:dashed}.save-preset{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.chain-toolbar .presets button{font:inherit;padding:.375rem .5rem}.save-preset input{max-width:16rem;font:inherit}.chain-toolbar{border-bottom:1px solid color-mix(in srgb, currentColor 18%, transparent);grid-template-columns:minmax(5rem,1fr) minmax(10rem,20rem) max-content;grid-template-areas:"name presets actions";gap:.75rem;padding:.375rem .625rem;display:grid}.chain-toolbar .chain-name{text-overflow:ellipsis;white-space:nowrap;grid-area:name;min-width:0;margin:0;overflow:hidden}.chain-toolbar .presets{grid-area:presets}.chain-toolbar .presets:before{content:none;display:none}.chain-toolbar .presets{min-width:0;box-shadow:none;background:0 0;border:0;grid-template-columns:minmax(0,1fr) 44px;align-items:center;gap:.375rem;margin:0;padding:0;display:grid}.chain-toolbar .presets select{border-color:color-mix(in srgb, currentColor 25%, transparent);background-color:#0000;width:100%;min-height:44px;margin:0}.chain-toolbar button{border-radius:6px}.chain-toolbar svg{fill:none;stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:20px;height:20px}.chain-toolbar .chain-icon-button{background:0 0;justify-content:center;align-items:center;width:44px;height:44px;padding:0;display:inline-flex}.chain-toolbar .chain-actions{flex-wrap:nowrap;grid-area:actions;align-items:center;gap:.25rem}.chain-toolbar .chain-actions select{border-color:color-mix(in srgb, currentColor 25%, transparent);background-color:#0000;min-height:44px;margin:0}.chain-toolbar .chain-power{white-space:nowrap;background:0 0}.chain-toolbar .chain-power[aria-pressed=true] svg{color:var(--col-green,#64bb94)}.chain-toolbar .chain-delete:hover{color:var(--col-red,#e97777)}.chain-toolbar .save-preset,.chain-toolbar .presets>[role=status]{grid-column:1/-1}.chain-toolbar .save-preset{padding-block:.5rem}.chain-toolbar .save-preset label{flex:1;gap:.25rem;min-width:0;display:grid}.chain-toolbar .save-preset input{box-sizing:border-box;width:100%}@container chain-panel (width<=40rem){.chain-toolbar{grid-template-columns:minmax(0,1fr) max-content;grid-template-areas:"name actions""presets presets";gap:.375rem}}.chain-graph{grid-template-columns:44px minmax(0,1fr)}.chain-graph:has(>.chain-sidebar[data-open=true]){grid-template-columns:minmax(12rem,min(18rem,65cqw)) minmax(0,1fr)}.chain-graph>.chain-sidebar{box-sizing:border-box;border-right:1px solid color-mix(in srgb, currentColor 20%, transparent);grid-area:sidebar;grid-template-columns:44px minmax(0,1fr);min-width:0;height:100%;min-height:0;display:grid;position:relative;overflow:hidden}.chain-graph>.chain-sidebar .chain-sidebar-tabs{border-right:1px solid color-mix(in srgb, currentColor 15%, transparent);flex-direction:column;display:flex;overflow-y:auto}.chain-graph>.chain-sidebar .chain-sidebar-tabs>button{box-sizing:border-box;writing-mode:vertical-rl;text-orientation:mixed;text-transform:none;letter-spacing:normal;background:color-mix(in srgb, currentColor 5%, transparent);border:0;border-radius:0;flex:none;justify-content:center;align-items:center;width:44px;min-height:110px;margin:0;padding:.75rem .5rem;font-size:.875rem;display:flex}.chain-graph>.chain-sidebar .chain-sidebar-tabs>button:before{content:none}.chain-graph>.chain-sidebar .chain-sidebar-tabs>button[aria-selected=true]{background:color-mix(in srgb, currentColor 18%, transparent)}.chain-graph>.chain-sidebar .chain-sidebar-tabs>button:focus-visible{outline-offset:-2px;outline:2px solid}.chain-graph>.chain-sidebar .chain-sidebar-panel:not([hidden]){overscroll-behavior-y:contain;box-sizing:border-box;flex-direction:column;gap:.5rem;min-width:0;min-height:0;padding:.5rem;display:flex;overflow:auto}.chain-graph>.chain-sidebar .chain-sidebar-panel:not([hidden])>header{justify-content:space-between;align-items:center;gap:.25rem;display:flex}.chain-graph>.chain-sidebar .chain-sidebar-panel:not([hidden])>header h6{margin:0;font-size:.875rem}.chain-graph>.chain-sidebar .chain-sidebar-panel:not([hidden])>header button{background:0 0;width:44px;min-height:44px;padding:0}.chain-graph>.chain-sidebar .chain-sidebar-panel:not([hidden]) .transformer-picker,.chain-graph>.chain-sidebar .chain-sidebar-panel:not([hidden]) .device-picker{flex-direction:column;gap:.5rem;display:flex}.chain-graph>.chain-sidebar .chain-sidebar-panel:not([hidden]) input{box-sizing:border-box;width:100%;min-width:0}.chain-graph>.chain-sidebar .chain-sidebar-panel:not([hidden]) ul{margin:0;padding:0;list-style:none}.chain-graph>.chain-sidebar .chain-sidebar-panel:not([hidden]) li>button{white-space:normal;overflow-wrap:anywhere;width:100%}.chain-graph>.chain-sidebar .chain-sidebar-panel:not([hidden]) .shared-device-selector{gap:.25rem;font-size:.875rem;display:grid}.chain-graph>.chain-sidebar .chain-sidebar-panel:not([hidden]) select{width:100%;min-width:0}.chain-toolbar .chain-layout-buttons{border-right:1px solid color-mix(in srgb, currentColor 20%, transparent);flex-direction:row;align-items:center;gap:2px;margin-right:.125rem;padding-right:.375rem;display:flex}.chain-toolbar .chain-layout-buttons button[aria-pressed=true]{background:color-mix(in srgb, currentColor 14%, transparent);border-color:color-mix(in srgb, currentColor 35%, transparent)}#chain:has(.chain-solo){z-index:1000}#graph:has(.chain-solo){overflow:visible}.chain-panel.chain-solo{z-index:1000;box-sizing:border-box;background:var(--lightningcss-light,#fafafa)var(--lightningcss-dark,#1a1a1a);border:0;grid-template-rows:auto minmax(0,1fr);width:100vw;height:100dvh;display:grid;position:fixed;inset:0;overflow:auto}.chain-panel.chain-solo>.chain-graph{grid-template-rows:minmax(0,1fr);min-height:0}.chain-toolbar .chain-solo-toggle{background:0 0}.chain-toolbar .chain-solo-toggle[aria-pressed=true]{background:color-mix(in srgb, currentColor 14%, transparent);border-color:color-mix(in srgb, currentColor 35%, transparent)}.chain-toolbar .chain-identity{grid-area:name;align-items:center;gap:.25rem;min-width:0;display:flex}.chain-toolbar .chain-identity .chain-power{flex:0 0 44px}.chain-toolbar .chain-identity .chain-name{flex:1;min-width:0;padding-inline:.25rem}.add-input-dialog .items-grid,.add-output-dialog .items-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));align-items:stretch}.add-input-dialog .items-grid .device-choice-card,.add-output-dialog .items-grid .device-choice-card{text-align:left;text-transform:none;letter-spacing:normal;border-radius:12px;justify-content:flex-start;align-items:stretch;gap:.625rem;min-width:0;padding:1rem;font-size:.9rem;font-weight:400;line-height:1.45}.add-input-dialog .items-grid .device-choice-card .item-icon,.add-output-dialog .items-grid .device-choice-card .item-icon{justify-content:flex-start;height:auto;font-size:1.75rem}.add-input-dialog .items-grid .device-choice-card .item-name,.add-output-dialog .items-grid .device-choice-card .item-name{font-size:1rem;font-weight:700}.add-input-dialog .items-grid .device-choice-card .item-description,.add-output-dialog .items-grid .device-choice-card .item-description{display:block}.add-input-dialog .items-grid .device-choice-card .device-choice-detail,.add-output-dialog .items-grid .device-choice-card .device-choice-detail{gap:.125rem;display:grid}.add-input-dialog .items-grid .device-choice-card .device-choice-label,.add-output-dialog .items-grid .device-choice-card .device-choice-label{font-size:.8rem;font-weight:700}.add-input-dialog .items-grid .device-choice-card:hover,.add-output-dialog .items-grid .device-choice-card:hover{transform:none}#graph .graph-view-controls .graph-zoom-in{order:1}#graph .graph-view-controls .graph-zoom-out{order:2}#graph .graph-view-controls .graph-fit-all{order:3}#graph .graph-view-controls .react-flow__controls-interactive{order:4}#graph .graph-view-controls .graph-control-icon{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:22px;max-width:none;height:22px;max-height:none}.graph-node.can-remove{--node-corner-size:56px}.graph-node.can-remove>.node-actions{margin:0;padding:0;position:static}.graph-node.can-remove>menu.node-actions{height:0;min-height:0}.graph-node.can-remove>.device-node-header{padding-inline:24px;display:block}.graph-node.can-remove>.node-actions>.btn-remove,.graph-node.can-remove>.node-actions>.btn-fullscreen{z-index:6;width:var(--node-corner-size);height:var(--node-corner-size);color:#fff;border:0;flex:none;min-width:0;max-width:none;min-height:0;margin:0;padding:0;font-size:0;transition:filter .15s;position:absolute;top:0}.graph-node.can-remove>.node-actions>.btn-remove:hover,.graph-node.can-remove>.node-actions>.btn-fullscreen:hover{filter:brightness(1.2);transform:none}.graph-node.can-remove>.node-actions>.btn-remove:active,.graph-node.can-remove>.node-actions>.btn-fullscreen:active{filter:brightness(.9);transform:none}.graph-node.can-remove>.node-actions>.btn-remove:focus-visible,.graph-node.can-remove>.node-actions>.btn-fullscreen:focus-visible{outline:none;box-shadow:inset 0 0 0 3px #fff}.graph-node.can-remove>.node-actions>.btn-remove{border-radius:var(--curve) 0 0 0;clip-path:polygon(0 0,100% 0,0 100%);background:#c52c56;left:0;right:auto}.graph-node.can-remove>.node-actions>.btn-remove:before{width:18px;height:18px;margin:0;position:absolute;top:10px;left:10px}.graph-node.can-remove>.node-actions>.btn-fullscreen{border-radius:0 var(--curve) 0 0;clip-path:polygon(0 0,100% 0,100% 100%);background:#236dc1;left:auto;right:0}.graph-node.can-remove>.node-actions>.btn-fullscreen svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px;position:absolute;top:10px;right:10px}.node-viewport-editor>.graph-node.is-fullscreen{--editor-accent:oklch(72% .14 var(--hue-accent,280));--node-corner-size:64px;color:var(--lightningcss-light,#252333)var(--lightningcss-dark,#f1eefb);background:radial-gradient(ellipse at 80% 0%, color-mix(in oklch, var(--editor-accent) 22%, transparent), transparent 65%), var(--lightningcss-light,#f5f3fa)var(--lightningcss-dark,#161522);border:1px solid color-mix(in oklch, var(--editor-accent) 45%, transparent);border-top:3px solid var(--editor-accent);text-transform:none;letter-spacing:normal;gap:1.5rem;padding:clamp(1.25rem,4vw,3rem);box-shadow:inset 0 1px #ffffff1a}.node-viewport-editor>.graph-node.is-fullscreen>.node-actions>.btn-remove,.node-viewport-editor>.graph-node.is-fullscreen>.node-actions>.btn-fullscreen{border-radius:0}.node-viewport-editor>.graph-node.is-fullscreen>.expanded-node-heading{border-bottom:1px solid color-mix(in srgb, currentColor 14%, transparent);justify-content:flex-start;align-items:center;gap:1.25rem;padding:1rem 2rem 1.75rem;display:flex}.node-viewport-editor>.graph-node.is-fullscreen>.expanded-node-heading .expanded-node-emblem{border:1px solid color-mix(in oklch, var(--editor-accent) 45%, transparent);background:color-mix(in oklch, var(--editor-accent) 18%, transparent);height:80px;box-shadow:0 8px 30px color-mix(in oklch, var(--editor-accent) 12%, transparent);border-radius:22px;flex:0 0 80px;place-items:center;display:grid}.node-viewport-editor>.graph-node.is-fullscreen>.expanded-node-heading .expanded-node-emblem img{object-fit:contain;width:52px;height:52px}.node-viewport-editor>.graph-node.is-fullscreen>.expanded-node-heading .expanded-node-category{letter-spacing:.1em;text-transform:uppercase;color:var(--lightningcss-light,#555068)var(--lightningcss-dark,#b9b0d1);font-size:.7rem;font-weight:700}.node-viewport-editor>.graph-node.is-fullscreen>.expanded-node-heading h2{margin:.375rem 0;font-size:clamp(1.5rem,3vw,2.5rem);line-height:1.15}.node-viewport-editor>.graph-node.is-fullscreen>.expanded-node-heading p{max-width:65ch;margin:0;font-size:.95rem;font-weight:400;line-height:1.6}.node-viewport-editor>.graph-node.is-fullscreen>.expanded-node-settings{grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));align-items:stretch;gap:1rem;width:100%;display:grid}.node-viewport-editor>.graph-node.is-fullscreen>.expanded-node-settings>label{border:1px solid color-mix(in srgb, currentColor 14%, transparent);background:color-mix(in oklch, var(--editor-accent) 7%, transparent);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:1rem;font-size:.875rem;display:flex}.node-viewport-editor>.graph-node.is-fullscreen>.expanded-node-settings>label select{max-width:100%;min-height:44px;font:inherit;border-width:1px;border-radius:8px;margin:0}.node-viewport-editor>.graph-node.is-fullscreen>.device-node-header{border-bottom:1px solid color-mix(in srgb, currentColor 14%, transparent);padding:1rem 2rem 1.5rem}.node-viewport-editor>.graph-node.is-fullscreen>.device-node-header>h6{font-size:clamp(1.5rem,3vw,2.5rem);line-height:1.2}.node-viewport-editor>.graph-node.is-fullscreen>.graph-node-menu{border-top:1px solid color-mix(in srgb, currentColor 14%, transparent);margin-top:auto;padding-top:1rem}.node-viewport-editor>.graph-node.is-fullscreen>.graph-node-menu button{font-size:.875rem}@media (width<=600px){.node-viewport-editor>.graph-node.is-fullscreen>.expanded-node-heading{flex-direction:column;align-items:flex-start;padding-inline:1rem}.node-viewport-editor>.graph-node.is-fullscreen>.expanded-node-heading .expanded-node-emblem{flex-basis:auto;width:64px;height:64px}}dialog{box-sizing:border-box;width:fit-content;height:auto;max-width:calc(100% - var(--pad,1rem) * 2);max-height:calc(100% - var(--pad,1rem) * 2);padding:calc(2 * var(--pad)) calc(3 * var(--pad));z-index:9009;place-self:center;margin:auto;position:fixed;top:0;bottom:0;overflow:auto}dialog:before{content:"";background:radial-gradient(circle at center, var(--col-black) 0%, #64141466 20%, #320a0a1a 100%);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);z-index:-2;position:fixed;inset:-2048px}dialog:after{content:"";background:inherit;border:inherit;z-index:-1;position:absolute;inset:0}::backdrop{background-color:var(--lightningcss-light,#2b1e1e80)var(--lightningcss-dark,#000000b3);display:block}#midi-control-settings{gap:var(--gap);flex-wrap:wrap;max-width:42rem;display:flex}#midi-control-settings p,#midi-control-settings ul{flex-basis:100%;margin-block:.25rem}#midi-control-settings label{align-items:center;gap:.5rem;min-width:0;display:flex}#midi-control-settings select{max-width:100%}#midi-control-settings li{overflow-wrap:anywhere;margin-block:.5rem}#transport{flex-wrap:nowrap;flex:0 auto;align-items:center;gap:.5rem;min-width:0;display:flex}#btn-transport-details{text-align:left;white-space:nowrap;font-variant-numeric:tabular-nums}.header-main{--col-light:color-mix(in oklch, var(--col-white) 15%, var(--col-white));--col-dark:color-mix(in oklch, var(--col-black) 15%, var(--col-black));color:color-contrast(var(--lightningcss-light,var(--col-black))var(--lightningcss-dark,var(--col-white)));background-color:var(--lightningcss-light,var(--col-light))var(--lightningcss-dark,var(--col-dark));padding:calc(var(--pad) * 1) calc(var(--pad));border-bottom:var(--border);z-index:303;justify-content:space-between;align-items:center;gap:var(--gap);grid-template-areas:"logo""menu";display:grid;position:relative}@media (width>=1024px){.header-main{grid-template-areas:"logo menu"}}.header-main .backlink{grid-area:logo}.header-controls{gap:var(--gap);grid-area:menu;grid-template-columns:minmax(0,2fr) minmax(0,1fr) auto;grid-template-areas:"tempo swing connect""volume volume connect""clock clock clock";align-items:center;width:100%;display:grid}@media (width>=1200px){.header-controls{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,2fr) auto;grid-template-areas:"tempo swing volume connect""clock clock clock clock"}}.header-controls .controls{width:100%;min-width:0}@media (width<=700px){.header-controls .controls{flex-wrap:wrap;gap:.375rem}.header-controls .controls input[type=range]{flex:1;width:4rem;min-width:0}}#clock-controls{flex-wrap:wrap;grid-area:clock;align-items:center;gap:.5rem;display:flex}#clock-controls #clock-source-status{font-size:.85rem}#volume-control{grid-area:volume}#netronome-link{grid-area:connect;justify-items:center;gap:.25rem;padding:.375rem;font-size:.7rem;display:grid}#netronome-qr-preview{width:80px;height:80px}#netronome-dialog{color:var(--lightningcss-light,#333)var(--lightningcss-dark,#e0e0e0);background:var(--lightningcss-light,#fafafa)var(--lightningcss-dark,#1a1a1a);width:min(36rem,100vw - 2rem);max-width:calc(100vw - 2rem);height:min(48rem,100dvh - 2rem);max-height:calc(100dvh - 2rem);padding:0;inset:0;overflow:hidden}#netronome-dialog[open]{grid-template-rows:auto minmax(0,1fr);display:grid}#netronome-dialog:before,#netronome-dialog:after{content:none}#netronome-dialog::backdrop{background:#0009}#netronome-dialog>header{border-bottom:1px solid;justify-content:space-between;align-items:center;gap:1rem;padding:.5rem 1rem;display:flex}#netronome-dialog>header h2{margin:0}#netronome-dialog .netronome-dialog-content{overscroll-behavior:contain;touch-action:pan-y;scrollbar-gutter:stable;scrollbar-width:auto;scrollbar-color:var(--lightningcss-light,#777)var(--lightningcss-dark,#aaa) var(--lightningcss-light,#e5e5e5)var(--lightningcss-dark,#303030);min-width:0;min-height:0;padding:1rem;overflow:hidden auto}#netronome-dialog .netronome-dialog-content::-webkit-scrollbar{width:12px}#netronome-dialog .netronome-dialog-content::-webkit-scrollbar-track{background:var(--lightningcss-light,#e5e5e5)var(--lightningcss-dark,#303030)}#netronome-dialog .netronome-dialog-content::-webkit-scrollbar-thumb{background:var(--lightningcss-light,#777)var(--lightningcss-dark,#aaa);border-radius:8px}#netronome-dialog textarea{box-sizing:border-box;width:100%;margin:.5rem 0;display:block}#netronome-dialog label{margin-top:1rem;display:block}#netronome-qr{width:min(100%,512px);height:auto;margin:auto}#tempo-control{grid-area:tempo}#swing-control{grid-area:swing}#swing-control input{flex:1;width:4rem;min-width:0}#swing-control output{white-space:nowrap}.backlink{flex-wrap:nowrap;margin-bottom:0;display:flex}.backlink>:nth-child(2){margin-right:auto}.controls{box-sizing:border-box;background:var(--lightningcss-light,color-mix(in oklch, var(--col-black) 20%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 80%, #000));border-radius:4px;flex-wrap:nowrap;flex:100%;align-items:center;gap:12px;padding:0;display:flex}.controls label{flex-grow:1;justify-content:stretch;align-items:center;gap:8px;font-size:14px;display:flex}.controls label input{width:100%}#bpm{font-weight:600}.menu-input-devices{gap:var(--gap);display:flex}.menu-input-devices button{background:var(--col-blue);color:var(--col-white)}#sidebar{background:var(--lightningcss-light,color-mix(in oklch, var(--col-white) 97%, var(--col-black)))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 85%, #000));width:400px;height:100vh;box-shadow:-2px 0 8px var(--lightningcss-light,color-mix(in oklch, var(--col-black) 20%, transparent))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 40%, transparent));z-index:1000;pointer-events:none;transition:right .3s;position:fixed;top:0;right:-400px;overflow-y:auto}#sidebar.open{pointer-events:auto;right:0}#sidebar-header{background:var(--lightningcss-light,color-mix(in oklch, var(--col-black) 15%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 90%, #000));color:var(--lightningcss-light,var(--col-plum))var(--lightningcss-dark,var(--col-white));z-index:1;justify-content:space-between;align-items:center;padding:16px;display:flex;position:sticky;top:0}#sidebar-content{padding:16px}#sidebar-content output{padding:calc(2 * var(--pad));background:var(--lightningcss-light,var(--col-white))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 90%, #000));border:1px solid var(--lightningcss-light,color-mix(in oklch, var(--col-black) 13%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 25%, var(--col-black)));color:var(--lightningcss-light,var(--col-plum))var(--lightningcss-dark,var(--col-white));border-radius:4px;margin-bottom:16px;font-size:13px;display:block}main{--height-graph:calc(100dvh - 3lh);scroll-snap-align:start;scroll-snap-stop:always;grid-template-rows:auto auto;grid-template-areas:"graph""explorer";display:grid;position:relative}body>footer{z-index:909;padding:calc(var(--pad) / 2) calc(var(--pad));justify-content:space-between;align-items:center;gap:var(--gap);order:999;display:flex}.packages-info-btn{background:var(--lightningcss-light,color-mix(in oklch, var(--col-white) 94%, var(--col-black)))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 85%, #000));color:var(--lightningcss-light,#333)var(--lightningcss-dark,var(--col-white));border:1px solid var(--lightningcss-light,color-mix(in oklch, var(--col-black) 13%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 25%, var(--col-black)));cursor:pointer;border-radius:4px;padding:6px 12px;font-size:12px;transition:all .2s}.packages-info-btn:hover{background-color:var(--col-blue);color:var(--col-white);border-color:var(--col-blue)}.packages-info-btn:active{transform:scale(.98)}#action-bar{border-bottom:1px solid var(--col-grey);background:var(--col-bg);z-index:909;flex-wrap:wrap;order:-1;justify-content:flex-start;align-items:center;margin:0;display:flex;position:sticky;top:0}#action-bar .btn-kill-switch{color:var(--lightningcss-light,var(--col-plum))var(--lightningcss-dark,var(--col-pink));margin-left:auto}#graph-layout-settings{gap:.75rem;display:grid}#graph-layout-settings label{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}#chain{z-index:1;isolation:isolate;top:calc(var(--pad) * 2 + 1lh);height:var(--height-graph);max-height:var(--height-graph);grid-area:graph;position:sticky}#chain #graph{z-index:1;width:100%;height:100%;position:relative}#chain .graph-container{width:100%;height:100%}#note-visualiser{z-index:0;pointer-events:none;background:0 0;width:100%;height:100%;display:block;position:absolute;inset:0}#onscreen-keyboard{z-index:250;height:calc(min(148px, 33dvh) + 32px + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);box-sizing:border-box;pointer-events:none;position:fixed;inset:auto 0 0}#onscreen-keyboard>.piano{height:100%;min-height:0;position:relative}body:has(#onscreen-keyboard>.piano){padding-bottom:calc(min(148px, 33dvh) + 32px + env(safe-area-inset-bottom,0px))}@media (pointer:coarse){#onscreen-keyboard{height:calc(min(148px, 33dvh) + 44px + env(safe-area-inset-bottom,0px))}body:has(#onscreen-keyboard>.piano){padding-bottom:calc(min(148px, 33dvh) + 44px + env(safe-area-inset-bottom,0px))}}song-explorer,song-visualiser-ui,song-explorer-ui{z-index:202;grid-area:explorer;width:100%;max-width:100%;overflow:auto}#options{display:none!important}#ble-manual-send-fieldset{background:var(--lightningcss-light,var(--col-white))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 85%, #000));padding:calc(2 * var(--pad));border:1px solid var(--lightningcss-light,color-mix(in oklch, var(--col-black) 13%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 25%, var(--col-black)));color:var(--lightningcss-light,var(--col-plum))var(--lightningcss-dark,var(--col-white));border-radius:4px;margin-top:16px}#ble-manual-send-fieldset label{margin-bottom:12px;font-size:13px;display:block}#ble-manual-send-fieldset input,#ble-manual-send-fieldset select{width:100%;padding:calc(2 * var(--pad));border:1px solid var(--lightningcss-light,color-mix(in oklch, var(--col-black) 13%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 25%, var(--col-black)));background:var(--lightningcss-light,var(--col-white))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 90%, #000));color:var(--lightningcss-light,#333)var(--lightningcss-dark,var(--col-white));border-radius:4px;margin-top:4px}#btn-send-ble-manual{background:var(--col-blue);width:100%;color:var(--col-white);cursor:pointer;border:none;border-radius:4px;padding:10px;font-weight:500}#btn-send-ble-manual:hover{background:var(--lightningcss-light,color-mix(in oklch, var(--col-blue) 90%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-blue) 110%, var(--col-white)));border-color:#0000}@media (width<=768px){header{align-items:flex-start;gap:12px}#sidebar{width:100%;right:-100%}.menu-input-devices{flex-direction:column}}.export-overlay{background:color-mix(in oklch, var(--col-black) 80%, transparent);z-index:9999;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:fixed;top:0;left:0}.export-overlay-content{background:var(--lightningcss-light,var(--col-white))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 85%, #000));color:var(--lightningcss-light,var(--col-plum))var(--lightningcss-dark,var(--col-white));border-radius:var(--curve);text-align:center;box-shadow:0 10px 40px var(--lightningcss-light,color-mix(in oklch, var(--col-black) 50%, transparent))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 50%, transparent));padding:40px 60px}.export-overlay-content p{color:var(--lightningcss-light,color-mix(in oklch, var(--col-black) 40%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 40%, var(--col-black)));margin:0;font-size:14px}#graph{grid-template:"presets presets""sidebar graph"1fr/auto 1fr;display:grid}.presets{--stroke:2px;--stroke-color:var(--col-fg);background:var(--col-bg);display:flex;position:relative}.presets:before{content:"";background:var(--stroke-color);z-index:908;width:100%;height:var(--stroke);position:absolute;top:100%}.presets summary{background:var(--col-bg);top:100%;right:var(--gap,1rem);z-index:909;border:var(--stroke) solid var(--col-fg);border-top:0;border-radius:0 0 12px 12px;position:absolute}.presets-list{gap:var(--gap);flex-wrap:nowrap;place-content:center stretch;place-items:center;margin:0;padding:0;list-style:none;display:flex;overflow:auto hidden}.presets-list li{flex:1}.presets-list li button{background:var(--lightningcss-light,color-mix(in oklch, var(--col-white) 94%, var(--col-black)))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 85%, #000));color:var(--lightningcss-light,#333)var(--lightningcss-dark,var(--col-white));border:1px solid var(--lightningcss-light,color-mix(in oklch, var(--col-black) 13%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 25%, var(--col-black)));border-radius:4px;align-items:center;gap:8px;padding:8px 12px;transition:all .2s;display:flex}.presets-list li button img{filter:invert(100)}.presets-list li button:hover{background:var(--lightningcss-light,color-mix(in oklch, var(--col-black) 5%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 80%, #000));border-color:var(--lightningcss-light,color-mix(in oklch, var(--col-black) 20%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 30%, var(--col-black)))}.presets-list li button:active{transform:scale(.98)}.presets-list .preset-icon{object-fit:contain;opacity:.8;width:20px;min-width:20px;height:20px}.transformers-drawer{border-right:var(--border);flex:100%;grid-area:sidebar;min-height:100%;max-height:100%;position:relative}.transformers-drawer button{width:100%}.transformers-drawer .transformers,.transformers-drawer .presets{flex-direction:column;display:flex}.presets{grid-area:presets}#packages-dialog{min-width:400px;max-width:90vw;max-height:90vh}.packages-list{background:var(--lightningcss-light,color-mix(in oklch, var(--col-white) 98%, var(--col-black)))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 95%, #000));border-radius:4px;flex-direction:column;gap:1.5rem;max-height:60vh;margin:1.5rem 0;padding:1rem;display:flex;overflow-y:auto}.package-item{border:1px solid var(--lightningcss-light,color-mix(in oklch, var(--col-black) 13%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 25%, var(--col-black)));background:var(--lightningcss-light,var(--col-white))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 90%, #000));border-radius:6px;padding:1rem;transition:all .2s}.package-item h6{justify-content:space-between;align-items:center;gap:.5rem;margin:0 0 .5rem;display:flex}.package-item h6 .version{color:var(--lightningcss-light,color-mix(in oklch, var(--col-black) 60%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 60%, var(--col-black)));font-size:.85em;font-weight:400}.package-item p{color:var(--lightningcss-light,color-mix(in oklch, var(--col-black) 70%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 70%, var(--col-black)));margin:0 0 .75rem;font-size:.9em;line-height:1.5}.package-item a{color:var(--col-blue);font-size:.9em;text-decoration:none;transition:all .2s}.package-item a:hover{color:var(--lightningcss-light,var(--col-blue))var(--lightningcss-dark,var(--col-cyan));text-decoration:underline}.package-item:hover{border-color:var(--col-blue);box-shadow:0 2px 8px var(--lightningcss-light,color-mix(in oklch, var(--col-black) 10%, transparent))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 30%, transparent))}.spinner{border:4px solid var(--lightningcss-light,color-mix(in oklch, var(--col-black) 10%, transparent))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 20%, transparent));border-top-color:var(--col-red);border-radius:50%;width:50px;height:50px;margin:0 auto;animation:1s linear infinite spin}#export-dialog{min-width:300px;max-width:90vw}.export-menu{flex-direction:column;gap:.5rem;margin:1rem 0;padding:0;list-style:none;display:flex}.export-menu .export-option{text-align:left;background-color:var(--lightningcss-light,color-mix(in oklch, var(--col-white) 94%, var(--col-black)))var(--lightningcss-dark,color-mix(in oklch, var(--col-black) 85%, #000));width:100%;color:var(--lightningcss-light,#333)var(--lightningcss-dark,var(--col-white));border:1px solid var(--lightningcss-light,color-mix(in oklch, var(--col-black) 13%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 25%, var(--col-black)));padding:.75em 1em;transition:all .2s}.export-menu .export-option:hover{background-color:var(--col-red);color:var(--col-white);border-color:var(--col-red)}.export-menu .export-option:active{transform:scale(.98)}#midi-transport-control{top:calc(var(--pad) * .5 + 1lh);z-index:910;border-bottom:var(--border);border-radius:0;flex-wrap:nowrap;flex:none;align-items:center;gap:.25rem;min-width:0;padding:2px .5rem;display:flex;position:sticky}#midi-transport-control .btn-transport{flex:none;width:44px;height:44px;padding:0}#midi-transport-control #btn-transport-details{background:0 0;padding:0 .5rem;font-size:.875rem;font-weight:400}#recordings{z-index:202;grid-area:explorer;min-width:0;position:relative}#recordings .note-timeline-panel{border:1px solid color-mix(in srgb, currentColor 20%, transparent);background:#151923;border-radius:6px;min-width:0;position:relative;overflow:hidden}#recordings #note-timeline{touch-action:none;cursor:grab;width:100%;height:360px;display:block}#recordings #note-timeline:active{cursor:grabbing}#recordings #note-timeline:focus-visible{outline:2px solid var(--col-orange);outline-offset:-2px}#recordings .note-timeline-controls{pointer-events:none;align-items:center;gap:2px;display:flex;position:absolute;bottom:28px;left:12px;right:12px}#recordings .note-timeline-controls button{pointer-events:auto;background-color:var(--col-black);min-height:36px;color:var(--col-white);margin:0;box-shadow:0 1px 5px #0006}#recordings .note-timeline-controls .btn-zoom-in,#recordings .note-timeline-controls .btn-zoom-out{width:36px;min-width:36px;height:36px;padding:0}#recordings .note-timeline-controls #btn-reset{margin-left:auto}#recordings .note-timeline-hint{color:#c7d1e4;pointer-events:none;background:#151923e6;margin:0;padding:4px 12px;font-size:11px;position:absolute;bottom:0}#chain-navigation{align-items:center;gap:var(--gap,2px);flex:1;min-width:0;margin-left:auto;display:flex;overflow-x:auto}#chain-navigation a,#chain-navigation button{box-sizing:border-box;border:1px solid color-mix(in srgb, currentColor 25%, transparent);min-height:32px;color:inherit;font:inherit;white-space:nowrap;background:0 0;border-radius:4px;flex:none;align-items:center;padding:.25rem .625rem;font-size:.8125rem;text-decoration:none;display:inline-flex}#chain-navigation a:hover,#chain-navigation button:hover{background:color-mix(in srgb, currentColor 12%, transparent)}#chain-navigation a:focus-visible,#chain-navigation button:focus-visible{outline:2px solid var(--col-orange);outline-offset:1px}body:has(.chains-workspace){scroll-snap-type:none}#chain:has(.chains-workspace){height:auto;max-height:none;padding-bottom:0;position:relative;top:auto}#chain #graph:has(.chains-workspace){height:auto;overflow:visible}.chain-panel,#add-iochain{scroll-margin-top:calc(var(--transport-height,52px) + 8px)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}html{text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{--GRAD:0;font-variation-settings:"GRAD" var(--GRAD);font-family:Raleway,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;font-weight:400;line-height:1.6}.font-mono,time,input,output{font-family:Courier New,monospace}@media (prefers-contrast:more){body{--GRAD:700}}@media (prefers-contrast:less){body{--GRAD:-50}}@media (prefers-color-scheme:dark){body{--GRAD:-50}}@media (prefers-color-scheme:dark) and (prefers-contrast:more){body{--GRAD:150}}@media (prefers-color-scheme:dark) and (prefers-contrast:less){body{--GRAD:-150}}h1,h2,h3,h4,h5,h6,summary{text-transform:uppercase;letter-spacing:1px;margin:0}[aria-summary]{margin-top:calc(var(--pad));margin-bottom:calc(var(--pad))}.h1,.h2,h1,h2{text-wrap:balance;margin:0;font-size:1.5rem;font-weight:600;line-height:1.1}.h3,h3{margin:calc(var(--pad) * 1) calc(var(--pad) * 2);font-size:1.5rem;font-weight:600}[aria-summary]{font-weight:800}.h6,h6{font-size:1.5rem}p{text-box:trim-both cap alphabetic}summary{font-weight:900}legend{padding:0 calc(var(--pad));font-weight:600}@keyframes spin{to{transform:rotate(360deg)}}[data-key=A],[data-key=A\#]{--col-accent:var(--col-orange)}[data-key=B]{--col-accent:var(--col-red)}[data-key=C],[data-key=C\#]{--col-accent:var(--col-plum)}[data-key=D],[data-key=D\#]{--col-accent:var(--col-pink)}[data-key=E]{--col-accent:var(--col-purple)}[data-key=F],[data-key=F\#]{--col-accent:var(--col-blue)}[data-key=G],[data-key=G\#]{--col-accent:var(--col-green)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.selectable{-webkit-user-select:all;user-select:all}.float-left{float:left}[data-error]{color:var(--lightningcss-light,#a32020)var(--lightningcss-dark,#faa)}[hidden]{display:none!important}.prompt-ai-panel{padding:var(--pad);margin:var(--pad);border:1px solid var(--col-border);border-radius:var(--rad);background:var(--lightningcss-light,color-mix(in oklch, var(--col-bg) 95%, var(--col-primary) 5%))var(--lightningcss-dark,color-mix(in oklch, var(--col-bg) 90%, var(--col-primary) 10%));box-shadow:0 2px 8px #0000001a}.prompt-ai-panel .prompt-ai-container{gap:var(--pad);flex-direction:column;display:flex}.prompt-ai-panel .prompt-ai-container h3{color:var(--col-primary);margin:0;font-size:1.1rem;font-weight:600}.prompt-ai-panel .prompt-ai-container textarea{padding:var(--pad-sm);border:1px solid var(--col-border);border-radius:var(--rad-sm);background:var(--col-bg);color:inherit;resize:vertical;min-height:80px;font-family:inherit;font-size:.95rem}.prompt-ai-panel .prompt-ai-container textarea:focus{border-color:var(--col-primary);outline:none;box-shadow:0 0 0 2px #646cff1a}.prompt-ai-panel .prompt-ai-container textarea::placeholder{color:var(--col-text-secondary);opacity:.7}.prompt-ai-panel .prompt-ai-container .prompt-controls{gap:var(--pad-sm);flex-wrap:wrap;display:flex}.prompt-ai-panel .prompt-ai-container .prompt-controls button{min-width:120px;padding:var(--pad-sm) var(--pad);border:1px solid var(--col-primary);border-radius:var(--rad-sm);background:var(--col-primary);color:var(--col-text-on-primary);cursor:pointer;transition:all var(--time-fast);flex:1;font-weight:500}.prompt-ai-panel .prompt-ai-container .prompt-controls button:hover:not(:disabled){background:color-mix(in oklch, var(--col-primary) 110%, black);box-shadow:0 2px 8px #646cff4d}.prompt-ai-panel .prompt-ai-container .prompt-controls button:active:not(:disabled){transform:translateY(1px)}.prompt-ai-panel .prompt-ai-container .prompt-controls button:disabled{opacity:.6;cursor:not-allowed}.prompt-ai-panel .prompt-ai-container .prompt-controls button#stop-generation{background:var(--col-danger,#ff6b6b);border-color:var(--col-danger,#ff6b6b)}.prompt-ai-panel .prompt-ai-container .prompt-controls button#stop-generation:hover:not(:disabled){background:color-mix(in oklch, var(--col-danger,#ff6b6b) 110%, black)}.prompt-ai-panel .prompt-ai-container .status-message{padding:var(--pad-sm);border-radius:var(--rad-sm);text-align:center;justify-content:center;align-items:center;min-height:1.5rem;font-size:.9rem;display:flex}.prompt-ai-panel .prompt-ai-container .status-message.status-success{color:var(--col-success,#2ecc71);border:1px solid var(--col-success,#2ecc71);background:oklch(51.9752% .176858 142.495/.3)}.prompt-ai-panel .prompt-ai-container .status-message.status-error{color:var(--col-danger,#ff6b6b);border:1px solid var(--col-danger,#ff6b6b);background:oklch(62.7955% .257683 29.2339/.3)}.prompt-ai-panel .prompt-ai-container .status-message.status-info{color:var(--col-info,#3498db);border:1px solid var(--col-info,#3498db);background:oklch(45.2014% .313214 264.052/.3)}.prompt-ai-panel .prompt-ai-container .generated-notes{padding:var(--pad-sm);border:1px solid var(--col-border);border-radius:var(--rad-sm);background:color-mix(in oklch, var(--col-bg) 98%, var(--col-primary) 2%)}.prompt-ai-panel .prompt-ai-container .generated-notes .notes-list strong{margin-bottom:var(--pad-sm);color:var(--col-primary);font-size:.95rem;display:block}.prompt-ai-panel .prompt-ai-container .generated-notes .notes-list .notes-grid{gap:var(--pad-sm);flex-wrap:wrap;display:flex}.prompt-ai-panel .prompt-ai-container .generated-notes .notes-list .notes-grid .note-tag{background:var(--col-primary);color:var(--col-text-on-primary);border-radius:var(--rad-sm);white-space:nowrap;padding:4px 8px;font-family:monospace;font-size:.85rem;font-weight:500;display:inline-block}.prompt-ai-panel .prompt-ai-container .speech-controls{gap:var(--pad-sm);flex-direction:column;display:flex}.prompt-ai-panel .prompt-ai-container .speech-controls .speech-btn{padding:var(--pad-sm) var(--pad);border:1px solid var(--col-primary);border-radius:var(--rad-sm);background:var(--col-primary);color:var(--col-text-on-primary);cursor:pointer;transition:all var(--time-fast);font-size:.95rem;font-weight:500}.prompt-ai-panel .prompt-ai-container .speech-controls .speech-btn:hover:not(:disabled){background:color-mix(in oklch, var(--col-primary) 110%, black);box-shadow:0 2px 8px #646cff4d}.prompt-ai-panel .prompt-ai-container .speech-controls .speech-btn:active:not(:disabled){transform:translateY(1px)}.prompt-ai-panel .prompt-ai-container .speech-controls .speech-btn:disabled{opacity:.6;cursor:not-allowed}.prompt-ai-panel .prompt-ai-container .speech-controls .listening-indicator{align-items:center;gap:var(--pad-sm);padding:var(--pad-sm);background:color-mix(in oklch, var(--col-success,#2ecc71) 20%, transparent);border:1px solid var(--col-success,#2ecc71);border-radius:var(--rad-sm);color:var(--col-success,#2ecc71);font-size:.9rem;font-weight:500;display:flex}.prompt-ai-panel .prompt-ai-container .speech-controls .listening-indicator.hidden{display:none}.prompt-ai-panel .prompt-ai-container .speech-controls .listening-indicator .pulse{background:var(--col-success,#2ecc71);border-radius:50%;width:8px;height:8px;animation:1s infinite pulse;display:inline-block}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.2)}}.prompt-ai-panel .prompt-ai-container .speech-controls .transcript-preview{padding:var(--pad-sm);border:1px solid var(--col-border);border-radius:var(--rad-sm);background:color-mix(in oklch, var(--col-bg) 98%, var(--col-primary) 2%);min-height:2rem;font-size:.9rem}.prompt-ai-panel .prompt-ai-container .speech-controls .transcript-preview .transcript strong{color:var(--col-primary);margin-bottom:.25rem;font-size:.85rem;display:block}.prompt-ai-panel .prompt-ai-container .speech-controls .transcript-preview .transcript p{color:inherit;word-break:break-word;margin:0}.prompt-ai-panel .prompt-ai-container .speech-controls .transcript-preview .transcript.interim{opacity:.7;font-style:italic}.prompt-ai-panel .prompt-ai-container .speech-controls .transcript-preview .transcript.final{font-style:normal}@media (width<=768px){.prompt-ai-panel{margin:var(--pad-sm)}.prompt-ai-panel .prompt-ai-container textarea{min-height:60px}.prompt-ai-panel .prompt-ai-container .prompt-controls button{min-width:100px;padding:var(--pad-xs) var(--pad-sm);font-size:.9rem}}.audiotool-dialog{width:min(36rem,100vw - 2rem);max-height:calc(100dvh - 2rem);padding:var(--pad);overflow-y:auto}.audiotool-dialog fieldset{gap:.75rem;min-width:0;margin-block:1rem;display:grid}.audiotool-dialog label{gap:.3rem;display:grid}.audiotool-dialog select,.audiotool-dialog input{box-sizing:border-box;width:100%;min-width:0}.audiotool-dialog p{margin-block:.75rem}.audiotool-dialog button:disabled{opacity:.55;cursor:wait}#app{display:none}.logo{height:1lh;margin-right:calc(var(--pad) / 2);will-change:filter;transition:filter var(--time-medium)}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.card{padding:var(--pad)}.read-the-docs{color:var(--lightningcss-light,color-mix(in oklch, var(--col-black) 50%, var(--col-white)))var(--lightningcss-dark,color-mix(in oklch, var(--col-white) 50%, var(--col-black)))}.react-flow{--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:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--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:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--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:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--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 #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;direction:ltr}.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:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--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:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--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:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--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 #00000014;--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{width:100%;height:100%;position:absolute;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{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.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;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:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.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:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;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%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;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{z-index:5;margin:15px;position:absolute}.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{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.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{box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)));width:26px;height:26px;color:var(--xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default)));cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.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{border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));width:150px;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));padding:10px;font-size:12px}.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{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.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-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.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))}
