*,:before,:after{box-sizing:border-box}*{scrollbar-width:thin;scrollbar-color:var(--bg-hover) transparent}:root{--bg-canvas:#1d2129;--bg-panel:#262b33;--bg-titlebar:#1b1f26;--bg-hover:#2f3540;--border:#14171c;--accent:#699ce8;--error:#e06c75;--stat-in:#699ce8;--stat-out:#d8a657;--error-bg:#3a2226;--json-key:#7fbbb3;--json-str:#a7c080;--json-num:#d8a657;--json-literal:#d699b6;--rhai-keyword:#d699b6;--rhai-str:#a7c080;--rhai-num:#d8a657;--rhai-comment:#6b7280;--rhai-host:#7fbbb3;--text:#cdced2;--text-dim:#85878c;--radius:4px;--font-mono:"JetBrains Mono", ui-monospace, monospace}body{background:var(--bg-canvas);height:100vh;color:var(--text);overscroll-behavior-x:none;-webkit-user-select:none;user-select:none;flex-direction:column;margin:0;font-family:Noto Sans,Open Sans,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;display:flex;overflow:hidden}.card .property,.property-list,.log-body,.failure-list,.connection-card,.state-card,.docs-content,.modal,.script-editor,input,textarea{-webkit-user-select:text;user-select:text}.navbar{background:var(--bg-titlebar);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:4px 10px;font-size:12px;display:flex}.navbar .zoom-level{font-family:var(--font-mono);color:var(--text-dim);text-align:right;min-width:4ch;font-size:11px}.main-content{flex-direction:row;flex:1;min-height:0;display:flex}.surface{transform-origin:0 0;position:absolute;top:0;left:0}.pipelines{cursor:grab;background-color:var(--bg-canvas);background-image:linear-gradient(rgba(255,255,255,.043) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.043) 1px,transparent 1px);background-size:20px 20px;flex:1;position:relative;overflow:hidden}.pipelines.panning{cursor:grabbing}.pipelines.panning,.pipelines.panning *{-webkit-user-select:none;user-select:none}.edges{pointer-events:none;position:absolute;top:0;left:0;overflow:visible}.edges path{fill:none;stroke:var(--text-dim);stroke-width:2px;stroke-linecap:round;transition:stroke .7s ease-out,stroke-width .7s ease-out}.edges path.active{stroke:var(--accent);stroke-width:3px;transition-duration:.12s}@media (prefers-reduced-motion:reduce){.edges path,.edges path.active{stroke:var(--text-dim);stroke-width:2px;transition:none}}.channel-grip .hit,.port-grip .hit{stroke:transparent;stroke-width:14px;stroke-linecap:butt;pointer-events:stroke}.channel-grip .grip,.port-grip .grip{stroke:var(--accent);stroke-width:4px;stroke-linecap:round;opacity:0;pointer-events:none;transition:opacity .12s ease-out}.channel-grip:hover .grip,.channel-grip.held .grip,.port-grip:hover .grip,.port-grip.held .grip{opacity:.7}.channel-grip.held .grip,.port-grip.held .grip{opacity:1}.channel-grip .hit{cursor:ew-resize}.channel-grip .hit.vertical,.port-grip .hit{cursor:ns-resize}.port-grip .hit.vertical{cursor:ew-resize}.port-grip.pinned .grip{opacity:.35}.sidebar{background:var(--bg-panel);border-right:1px solid var(--border);width:220px;padding:4px;overflow-y:auto}.sidebar .tree-item{border-radius:var(--radius);cursor:pointer;align-items:center;gap:6px;padding:4px 8px;display:flex}.sidebar .tree-item:hover{background:var(--bg-hover)}.sidebar .tree-item.selected{box-shadow:inset 2px 0 0 var(--accent);color:var(--text);background:rgba(105,156,232,.25)}.sidebar .tree-item .tree-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.sidebar-tabs{border-bottom:1px solid var(--border);gap:2px;margin-bottom:4px;display:flex}.sidebar-tabs .tab{color:var(--text-dim);cursor:pointer;font:inherit;background:0 0;border:none;border-bottom:2px solid transparent;flex:1;padding:4px 2px 5px;font-size:11px}.sidebar-tabs .tab:hover{color:var(--text)}.sidebar-tabs .tab.active{color:var(--text);border-bottom-color:var(--accent)}.card{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;display:flex;position:absolute;overflow:hidden;box-shadow:0 4px 16px rgba(0,0,0,.45)}.card>header{background:var(--bg-titlebar);border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:8px 10px;font-weight:600;display:flex}.card>header.draggable{cursor:grab;-webkit-user-select:none;user-select:none}.card>header .card-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.card .card-status{letter-spacing:.06em;text-transform:uppercase;color:var(--error);background:var(--error-bg);border:1px solid var(--error);border-radius:3px;flex:none;padding:2px 5px;font-size:9px;font-weight:700}.card .card-status.starting{color:var(--stat-out);border-color:var(--stat-out);background:0 0}.card .card-maximize{color:var(--text-dim);cursor:pointer;opacity:.6;background:0 0;border:none;flex:none;padding:0 2px;font-size:14px;line-height:1}.card .card-maximize:hover{opacity:1;color:var(--text)}.card.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), 0 4px 16px rgba(0,0,0,.45);z-index:5}.card.selected>header{background:rgba(105,156,232,.25)}.card.maximized{z-index:15}.card.pinned>.section-config{min-height:0;overflow:hidden}.card.pinned>.section-logs.open,.card.pinned>.section-logs.open>.log{flex:1;min-height:0}.card.pinned>.section-logs.open .log-body{flex:1;max-height:none}.card.dragging{cursor:grabbing;z-index:10;border-color:var(--accent);box-shadow:0 10px 28px rgba(0,0,0,.6)}.card.dragging>header.draggable{cursor:grabbing}.card-spawn{background:var(--bg-hover);border-top-right-radius:var(--radius);width:18px;height:14px;color:var(--text-dim);cursor:pointer;font:inherit;opacity:0;border:none;justify-content:center;align-items:center;padding:0;font-size:13px;line-height:1;transition:opacity 80ms linear;display:flex;position:absolute;bottom:0;left:0}.card:hover .card-spawn{opacity:.45}.card-spawn:hover{opacity:1;color:var(--text);background:var(--accent)}.card-spawn:focus-visible{opacity:1;color:var(--text);background:var(--accent)}.resize-handle{cursor:nwse-resize;background:linear-gradient(135deg, transparent 0 50%, var(--text-dim) 50% 60%, transparent 60% 70%, var(--text-dim) 70% 80%, transparent 80%);opacity:.5;width:14px;height:14px;position:absolute;bottom:0;right:0}.resize-handle:hover{opacity:1}.inspector{flex-direction:column;min-height:0;display:flex}.tabs{background:var(--bg-titlebar);border-bottom:1px solid var(--border);display:flex}.tabs .tab{appearance:none;border:none;border-right:1px solid var(--border);color:var(--text-dim);font:inherit;cursor:pointer;background:0 0;border-top:2px solid transparent;flex:1;padding:4px 6px;font-size:11px}.tabs .tab:last-child{border-right:none}.tabs .tab:hover{color:var(--text);background:var(--bg-hover)}.tabs .tab.active{background:var(--bg-panel);border-top-color:var(--accent);color:var(--text)}.pane{min-height:92px;max-height:180px;padding:6px;overflow-y:auto}.section+.section{margin-top:6px}.section-kind{background:var(--bg-hover);letter-spacing:.06em;text-transform:uppercase;border-radius:2px;margin-bottom:4px;padding:2px 6px;font-size:10px;font-weight:600}.property{grid-template-columns:40% 1fr;align-items:center;gap:6px;padding:1px 2px;display:grid}.property .name{color:var(--text-dim);font-size:11px}.property .value{background:var(--bg-canvas);border:1px solid var(--border);font-family:var(--font-mono);border-radius:2px;padding:1px 5px;font-size:11px}.property .name,.property .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.empty{color:var(--text-dim);padding:2px;font-size:11px;font-style:italic}.card-section{flex-direction:column;min-height:0;display:flex}.card-section+.card-section>.section-head{border-top:1px solid var(--border)}.section-head{appearance:none;cursor:pointer;width:100%;color:var(--text-dim);font:inherit;letter-spacing:.05em;text-transform:uppercase;text-align:left;-webkit-user-select:none;user-select:none;background:0 0;border:none;align-items:center;gap:5px;padding:3px 8px;font-size:10px;display:flex}.section-head:hover{background:var(--bg-hover);color:var(--text)}.section-head .chevron{flex:none;width:9px;font-size:10px;line-height:1}.chart{flex-direction:column;gap:5px;padding:5px 8px 7px;display:flex}.chart-bar{color:var(--text-dim);align-items:center;gap:8px;font-size:10px;display:flex}.chart-bar .series{align-items:center;gap:4px;display:flex}.chart-bar .series:before{content:"";border-radius:1px;width:6px;height:6px}.chart-bar .series.in:before{background:var(--stat-in)}.chart-bar .series.out:before{background:var(--stat-out)}.chart-bar .series.err:before{background:var(--error)}.chart-bar .peak{font-family:var(--font-mono);font-variant-numeric:tabular-nums;margin-left:auto}.chart-bar .units{gap:2px;display:flex}.chart-bar .units .chip{appearance:none;border-radius:var(--radius);color:var(--text-dim);cursor:pointer;font:inherit;background:0 0;border:1px solid transparent;padding:0 4px;font-size:10px}.chart-bar .units .chip:hover{background:var(--bg-hover);color:var(--text)}.chart-bar .units .chip.active{border-color:var(--accent);color:var(--text)}.failures{border-top:1px solid var(--border);padding:6px 8px 7px}.failures-head{color:var(--text-dim);margin-bottom:4px;font-size:10px}.failure-list{flex-direction:column;gap:3px;max-height:96px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.failure{grid-template-columns:auto auto auto 1fr auto;align-items:baseline;gap:6px;font-size:10px;line-height:1.5;display:grid}.failure .failure-when,.failure .failure-age,.failure .failure-count{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--text-dim);white-space:nowrap}.failure .failure-where{color:var(--text-dim);white-space:nowrap}.failure .failure-text{color:var(--error);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.failure .failure-count{color:var(--error)}.chart-plot{border-bottom:1px solid var(--border);height:54px;position:relative}.chart-plot .chart-svg{width:100%;height:100%;display:block}.chart-plot .chart-svg path{stroke:none}.chart-plot .chart-svg path.in{fill:var(--stat-in)}.chart-plot .chart-svg path.out{fill:var(--stat-out)}.chart-plot .empty{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.chart-axis{pointer-events:none;position:absolute;inset:0}.chart-axis .axis-mark{border-top:1px dashed var(--border);height:0;position:absolute;left:0;right:0}.chart-axis .axis-label{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--text-dim);background:var(--bg-panel);opacity:.85;padding-left:3px;font-size:9px;line-height:1;position:absolute;bottom:1px;right:0}.chart-errors{border-bottom:1px solid var(--border);height:14px;margin-top:3px;position:relative}.chart-errors .chart-svg{width:100%;height:100%;display:block}.chart-errors .chart-svg path{stroke:none;fill:var(--error)}.chart-errors.quiet{opacity:.25}.chart-errors .error-peak{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--error);background:var(--bg-panel);padding-right:3px;font-size:9px;line-height:1;position:absolute;top:0;left:0}.log{flex-direction:column;min-height:0;display:flex;position:relative}.log-bar{background:var(--bg-titlebar);align-items:center;gap:3px;padding:2px 6px;font-size:10px;display:flex}.log-bar .rate{color:var(--text-dim);font-family:var(--font-mono);font-variant-numeric:tabular-nums;margin-left:auto}.log-bar .chip,.log-bar .clear{appearance:none;border-radius:var(--radius);color:var(--text-dim);cursor:pointer;font:inherit;background:0 0;border:1px solid transparent;padding:1px 5px;font-size:10px}.log-bar .chip:hover,.log-bar .clear:hover{background:var(--bg-hover);color:var(--text)}.log-bar .chip{border-color:var(--border)}.log-bar .chip.active{border-color:var(--accent);color:var(--text)}.log-bar .clear{margin-left:3px}.log-bar .clear.active{border-color:var(--accent);color:var(--text)}.log-body{font-family:var(--font-mono);overscroll-behavior:contain;max-height:8em;padding:4px 8px;font-size:11px;overflow-y:auto}.log-body .log-pass{color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;gap:6px;padding:0 6px;line-height:1.6;display:flex}.log-body .log-pass:hover{background:var(--bg-hover)}.log-body .log-pass.error{color:var(--error)}.log-body .log-pass .log-caret{color:var(--text-dim);flex:none;width:1em}.log-body .log-pass .log-errors{color:var(--error);flex:none;margin-left:auto}.log-body .log-gap{color:var(--text-dim);text-align:center;opacity:.7;font-style:italic;line-height:1.6}.log-body .log-pass-entries .log-row{padding-left:18px}.log-body>.log-row:last-child{color:var(--text)}.log-body>.log-row:nth-last-child(2):has(+.log-expanded){color:var(--text)}.log-body .log-row{color:var(--text-dim);gap:6px;padding:0 6px;line-height:1.6;display:flex}.log-body .log-row .log-expand{appearance:none;font:inherit;line-height:inherit;width:1em;color:var(--text-dim);cursor:pointer;opacity:0;-webkit-user-select:none;user-select:none;background:0 0;border:none;flex:none;margin:0;padding:0}.log-body .log-row:hover .log-expand,.log-body .log-row.open .log-expand{opacity:1}.log-body .log-row.open .log-expand{color:var(--accent)}.log-body .log-row.error,.log-body .log-row.error:last-child{color:var(--error);background:var(--error-bg)}.log-body .log-row .log-time{color:var(--text-dim);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}.log-body .log-row .log-stage{color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;flex:none;width:2.4em}.log-body .log-row .log-text{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.log-body .log-expanded{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-canvas);overscroll-behavior:contain;max-height:260px;margin:2px 6px 4px;overflow:auto}.log-body .log-expanded .log-expanded-bar{z-index:1;background:var(--bg-titlebar);border-bottom:1px solid var(--border);align-items:center;gap:6px;padding:2px 6px;display:flex;position:sticky;top:0}.log-body .log-expanded .log-expanded-count{color:var(--text-dim);margin-right:auto}.log-body .log-expanded .log-expanded-note{color:var(--text-dim);opacity:.7;padding:2px 8px 4px;font-style:italic}.log-body .log-expanded .log-message+.log-message{border-top:1px solid var(--border)}.log-body .log-expanded .log-message-bar{align-items:center;gap:6px;padding:2px 6px 0;display:flex}.log-body .log-expanded .log-message-bar .log-message-index{color:var(--text-dim);font-variant-numeric:tabular-nums}.log-body .log-expanded .log-message-bar .clear{opacity:0;margin-left:auto}.log-body .log-expanded .log-message:hover .log-message-bar .clear{opacity:1}.log-body .log-pass-entries .log-expanded{margin-left:18px}.log-json{font:inherit;white-space:pre-wrap;word-break:break-word;color:var(--text);margin:0;padding:2px 8px 4px}.log-json.plain{color:var(--text-dim)}.json-indent{white-space:pre}.json-punct{color:var(--text-dim)}.json-key{color:var(--json-key)}.json-str{color:var(--json-str)}.json-num{color:var(--json-num)}.json-literal{color:var(--json-literal)}.log-jump{appearance:none;background:var(--bg-hover);border:1px solid var(--accent);color:var(--text);cursor:pointer;font:inherit;border-radius:10px;padding:1px 8px;font-size:10px;position:absolute;bottom:4px;left:50%;transform:translate(-50%);box-shadow:0 2px 8px rgba(0,0,0,.5)}.navbar .brand{letter-spacing:.04em;font-weight:600}.navbar .nav-links{gap:2px;margin-left:16px;margin-right:auto;display:flex}.navbar .nav-links a{color:var(--text-dim);border-radius:var(--radius);padding:2px 8px;text-decoration:none}.navbar .nav-links a:hover,.navbar .nav-links a[aria-current]{color:var(--text);background:var(--bg-hover)}.sidebar .search-box{margin-bottom:6px;position:relative}.sidebar .search{background:var(--bg-canvas);border:1px solid var(--border);width:100%;color:var(--text);font:inherit;border-radius:2px;padding:4px 20px 4px 6px;font-size:11px}.sidebar .search::placeholder{color:var(--text-dim)}.sidebar .search:focus{border-color:var(--accent);outline:none}.sidebar .search::-webkit-search-cancel-button{appearance:none;display:none}.sidebar .search-clear{cursor:pointer;width:18px;color:var(--text-dim);background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-size:14px;line-height:1;display:flex;position:absolute;top:0;bottom:0;right:1px}.sidebar .search-clear:hover{color:var(--text)}.docs-sidebar{flex-direction:column;gap:2px;display:flex}.docs-sidebar .sidebar-tabs{flex:none}.docs-sidebar .nav-group+.nav-group{margin-top:8px}.docs-sidebar .nav-group-title{color:var(--text-dim);letter-spacing:.06em;text-transform:uppercase;padding:2px 8px;font-size:10px;font-weight:600}.docs-sidebar .tree-item{font-family:var(--font-mono);font-size:12px}.docs-content{scroll-behavior:smooth;flex:1;padding:16px 24px 64px;overflow-y:auto}.docs-content>*{max-width:860px}.docs-content h2{color:var(--text-dim);letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid var(--border);margin:24px 0 8px;padding-bottom:4px;font-size:11px;font-weight:600}.docs-content .docs-family:first-child h2{margin-top:0}.doc-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);border-left:2px solid transparent;margin-bottom:10px;transition:border-left-color .2s ease-out;overflow:hidden}.doc-card.selected{border-left-color:var(--accent)}.doc-card>header{background:var(--bg-titlebar);border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:6px 10px;display:flex}.doc-card .doc-kind{font-family:var(--font-mono);font-size:13px;font-weight:600}.doc-card .doc-tag{background:var(--bg-canvas);border:1px solid var(--border);color:var(--text-dim);font-family:var(--font-mono);border-radius:2px;margin-left:auto;padding:1px 6px;font-size:10px}.doc-card .doc-description{color:var(--text);margin:0;padding:8px 10px 0;line-height:1.6}.doc-card .doc-description+.doc-description{padding-top:6px}.doc-card>.empty{padding:8px 10px}.field-table{padding:8px 10px 10px}.field-table .field{grid-template-columns:22% 22% 68px 1fr;align-items:baseline;gap:8px;padding:5px 0;display:grid}.field-table .field+.field{border-top:1px solid var(--border)}.field-table .field-name{font-family:var(--font-mono);color:var(--text);word-break:break-word;font-size:12px}.field-table .field-type{background:var(--bg-canvas);border:1px solid var(--border);font-family:var(--font-mono);color:var(--text-dim);word-break:break-word;border-radius:2px;justify-self:start;padding:1px 5px;font-size:11px}.field-table .field-requirement{letter-spacing:.04em;text-transform:uppercase;color:var(--accent);font-size:10px}.field-table .field-requirement.optional{color:var(--text-dim)}.field-table .field-description{color:var(--text-dim);line-height:1.5}.field-table .field-description .doc-description{color:inherit;padding:0}.doc-variant{border-left:1px solid var(--border);margin:0 10px 8px;padding-left:10px}.doc-variant .section-kind{font-family:var(--font-mono);text-transform:none;letter-spacing:0;display:inline-block}.doc-variant .field-table{padding:4px 0 0}.doc-metadata{border-left:1px solid var(--border);margin:0 10px 8px;padding-left:10px}.doc-metadata .section-kind{font-family:var(--font-mono);text-transform:none;letter-spacing:0;display:inline-block}.doc-metadata .doc-metadata-note{color:var(--text-dim);margin:2px 0 0;font-size:11px}.doc-metadata .doc-metadata-note code{font-family:var(--font-mono)}.doc-metadata .field-table{padding:4px 0 0}.doc-metadata .field-table .field{grid-template-columns:22% 1fr}.method-badge{font-family:var(--font-mono);letter-spacing:.04em;border:1px solid transparent;border-radius:2px;flex:none;padding:1px 5px;font-size:10px;font-weight:600}.method-badge.get{color:var(--accent);background:rgba(105,156,232,.12);border-color:rgba(105,156,232,.4)}.method-badge.post{color:#7fb069;background:rgba(127,176,105,.12);border-color:rgba(127,176,105,.4)}.method-badge.put{color:#d6a75f;background:rgba(214,167,95,.12);border-color:rgba(214,167,95,.4)}.method-badge.delete{color:var(--error);background:var(--error-bg);border-color:rgba(224,108,117,.4)}.endpoint-path{font-family:var(--font-mono);color:var(--text);word-break:break-all;font-size:12.5px}.docs-sidebar .endpoint-item{align-items:center;gap:6px;display:flex}.docs-sidebar .endpoint-item .endpoint-path{color:inherit;font-size:11px}.endpoint-card>header{flex-wrap:wrap}.endpoint-card .endpoint-summary{color:var(--text);margin:0;padding:8px 10px 0;line-height:1.5}.endpoint-card .endpoint-summary+.doc-description{color:var(--text-dim)}.endpoint-card .section-kind{padding:10px 10px 0}.endpoint-card .field-table{padding-top:4px}.endpoint-card .field-name.status{font-weight:600}.endpoint-card .field-name.status.success{color:#7fb069}.endpoint-card .field-name.status.failure{color:var(--error)}.api-intro{margin-bottom:16px}.api-intro .doc-description{color:var(--text-dim);margin:0;line-height:1.6}.api-intro a{color:var(--accent);font-family:var(--font-mono)}.docs-content>section>.doc-description{color:var(--text-dim);margin:0 0 10px;line-height:1.6}.docs-content>section>.doc-description strong,.docs-content>section>.doc-description em{color:var(--text)}.doc-warning{border-left:2px solid var(--accent);padding-left:10px}.doc-example{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-dim);font-family:var(--font-mono);margin:0 0 10px;padding:10px;font-size:11.5px;line-height:1.5;overflow-x:auto}.doc-description code{background:var(--bg-canvas);font-family:var(--font-mono);border-radius:2px;padding:0 2px;font-size:.92em}.icon-button{appearance:none;color:var(--text-dim);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:2px;padding:2px 6px;font-size:13px;line-height:1}.icon-button:hover{background:var(--bg-hover);color:var(--text)}.icon-button.danger:hover{background:var(--error-bg);color:var(--error)}.icon-button.mode-toggle{text-transform:uppercase;letter-spacing:.04em;border:1px solid var(--border);padding:2px 5px;font-size:10px}.icon-button.armed{background:var(--error-bg);color:var(--error);text-transform:uppercase;letter-spacing:.04em;font-size:10px}.sidebar-header{border-bottom:1px solid var(--border);align-items:center;gap:6px;margin-bottom:4px;padding:2px 2px 6px 8px;display:flex}.sidebar-header .sidebar-title{color:var(--text-dim);letter-spacing:.06em;text-transform:uppercase;margin-right:auto;font-size:10px;font-weight:600}.sidebar-error{color:var(--error);background:var(--error-bg);border-radius:2px;margin-bottom:4px;padding:4px 6px;font-size:11px}.sidebar .tree-item{align-items:center;gap:4px;display:flex}.sidebar .tree-item .tree-label{text-overflow:ellipsis;white-space:nowrap;margin-right:auto;overflow:hidden}.sidebar .tree-item.repeat .tree-label{color:var(--text-dim);font-style:italic}.sidebar .tree-item .icon-button{visibility:hidden}.sidebar .tree-item:hover .icon-button,.sidebar .tree-item .icon-button.armed,.sidebar .tree-item .icon-button.open{visibility:visible}.sidebar .tree-item .row-menu-button{letter-spacing:.08em;padding:2px 4px}.sidebar .tree-item .row-menu-button.open{background:var(--bg-hover);color:var(--text)}.row-menu{z-index:10;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);min-width:130px;padding:2px;position:fixed;left:120px;box-shadow:0 4px 14px rgba(0,0,0,.45)}.row-menu .row-menu-item{appearance:none;text-align:left;width:100%;color:var(--text);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:2px;padding:5px 8px;font-size:12px;display:block}.row-menu .row-menu-item:hover{background:var(--bg-hover)}.connection-card{z-index:10;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);width:260px;max-height:60vh;padding:6px;position:fixed;left:226px;overflow-y:auto;box-shadow:0 4px 14px rgba(0,0,0,.45)}.connection-card .connection-card-name{font-family:var(--font-mono);border-bottom:1px solid var(--border);margin-bottom:5px;padding:0 2px 5px;font-size:12px}.connection-card .property{grid-template-columns:34% 1fr}.state-card{z-index:10;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);width:320px;max-height:70vh;padding:6px;position:fixed;left:226px;overflow-y:auto;box-shadow:0 4px 14px rgba(0,0,0,.45)}.state-card .state-card-name{font-family:var(--font-mono);border-bottom:1px solid var(--border);margin-bottom:5px;padding:0 2px 5px;font-size:12px}.state-card .state-entry+.state-entry{border-top:1px solid var(--border);margin-top:6px;padding-top:6px}.state-card .state-key{font-family:var(--font-mono);color:var(--accent);padding:0 2px 2px;font-size:12px}.state-card .state-key.unkeyed{color:var(--text-dim);font-family:inherit;font-style:italic}.state-card .state-updated{color:var(--text-dim);padding:2px 2px 0;font-size:10px}.state-card .state-truncated{border-top:1px solid var(--border);color:var(--text-dim);text-align:center;margin-top:6px;padding-top:6px;font-size:10px}.state-card .property{grid-template-columns:40% 1fr}.bucket-keys{font-family:var(--font-mono);color:var(--text-dim);font-size:10px}.canvas-blank{pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex;position:absolute;inset:0}.canvas-blank p{color:var(--text-dim);font-size:13px}.canvas-blank .button{pointer-events:auto}.modal-backdrop{z-index:10;background:rgba(0,0,0,.55);justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;width:620px;max-width:100%;min-height:0;max-height:100%;display:flex;box-shadow:0 12px 40px rgba(0,0,0,.6)}.modal>header{background:var(--bg-titlebar);border-bottom:1px solid var(--border);align-items:center;padding:6px 6px 6px 10px;display:flex}.modal>header .modal-title{margin-right:auto;font-weight:600}.modal>footer{background:var(--bg-titlebar);border-top:1px solid var(--border);align-items:flex-end;gap:8px;padding:8px 10px;display:flex}.modal>footer .modal-messages{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.modal-body{min-height:0;padding:10px;overflow-y:auto}.modal-with-panel{justify-content:center;align-items:stretch;gap:12px;max-width:100%;min-height:0;max-height:100%;display:flex}.sample-panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;flex-shrink:1;width:420px;min-width:0;min-height:0;display:flex;box-shadow:0 12px 40px rgba(0,0,0,.6)}.sample-panel>header{background:var(--bg-titlebar);border-bottom:1px solid var(--border);align-items:center;padding:6px 6px 6px 10px;display:flex}.sample-panel>header .modal-title{margin-right:auto}.sample-body{-webkit-user-select:text;user-select:text;min-height:0;padding:10px;overflow:auto}.sample-body .form-hint,.sample-body .form-error{margin-bottom:6px}.sample-body .log-json{margin-bottom:8px}.form-list-actions{gap:6px;margin-top:2px;display:flex}.form-list-actions>.button{flex:1}.sample-stage{color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;border-top:1px solid var(--border);margin:10px 0 6px;padding-top:8px;font-size:11px}.sample-count{color:var(--text-dim);margin-bottom:6px;font-size:11px}.button{appearance:none;background:var(--bg-hover);border:1px solid var(--border);color:var(--text);font:inherit;cursor:pointer;white-space:nowrap;border-radius:2px;padding:4px 12px;font-size:12px}.button:hover{border-color:var(--accent)}.button.primary{background:var(--accent);color:var(--bg-titlebar);font-weight:600}.button:disabled{opacity:.5;cursor:default;border-color:var(--border)}.form-row{grid-template-columns:140px 1fr;align-items:baseline;gap:6px;padding:2px 0;display:grid}.form-row>label{color:var(--text-dim);overflow-wrap:break-word;font-size:11px}.form-row.heading,.form-row.unlabelled{grid-template-columns:1fr}.form-row.heading>label{color:var(--text)}.form-row .required-marker{color:var(--accent);margin-left:3px}.form-control{min-width:0}.form-control.invalid .text-input,.form-control.invalid .select{border-color:var(--error)}.text-input,.select{background:var(--bg-canvas);border:1px solid var(--border);width:100%;color:var(--text);font-family:var(--font-mono);border-radius:2px;padding:3px 6px;font-size:11px}.text-input::placeholder{color:var(--text-dim);font-family:inherit}.select::placeholder{color:var(--text-dim);font-family:inherit}.text-input:focus,.select:focus{border-color:var(--accent);outline:none}.text-input.invalid,.select.invalid{border-color:var(--error)}.form-nested,.form-list{border-left:1px solid var(--border);margin:2px 0 6px;padding-left:10px}.form-list .form-list-row{border:1px solid var(--border);background:var(--bg-canvas);border-radius:2px;margin-bottom:6px;padding:4px 6px 6px}.form-list .form-list-row-header{justify-content:space-between;align-items:center;gap:6px;margin-bottom:2px;display:flex}.form-list .form-list-row.inline{align-items:center;gap:6px;padding:3px 6px;display:flex}.form-list .form-list-row.inline .form-list-row-header{display:contents}.form-list .form-list-row.inline .form-list-body{flex:1;order:1;min-width:0}.form-list .form-list-row.inline .icon-button{order:2}.form-list .form-list-row.inline .form-row{padding:0}.form-list .form-list-index{color:var(--text-dim);font-family:var(--font-mono);font-size:10px}.form-list .form-list-body>.form-nested{border-left:none;margin-bottom:0;padding-left:0}.form-error{color:var(--error);padding:2px 0 0;font-size:11px}.form-hint{color:var(--text-dim);font-size:11px;font-style:italic}.stage{margin-top:12px}.stage .stage-header{align-items:center;gap:6px;display:flex}.stage .stage-header .section-kind{flex:1;margin-bottom:0}.component-editor{border:1px solid var(--border);background:var(--bg-titlebar);border-radius:2px;margin-top:6px;padding:6px 8px 8px}.component-editor .component-header{align-items:center;gap:6px;margin-bottom:4px;display:flex}.component-editor .component-header .select{flex:1;font-weight:600}.mode-controls{align-items:center;gap:6px;margin-left:auto;margin-right:16px;display:flex}.mode-controls .button{padding:2px 10px;font-size:11px}.mode-controls .mode-toggle.active{background:var(--accent);color:var(--bg-titlebar);border-color:var(--accent);font-weight:600}.mode-controls .button.armed{background:var(--error-bg);border-color:var(--error);color:var(--error)}.mode-controls .mode-error{color:var(--error);font-size:11px}.mode-controls .mode-note{color:var(--text-dim);font-size:11px;font-style:italic}.unsaved{color:#d8a657;white-space:nowrap;background:rgba(216,166,87,.12);border:1px solid rgba(216,166,87,.35);border-radius:2px;padding:1px 6px;font-size:11px}.modal.narrow{width:380px}.modal.narrow .modal-intro{color:var(--text-dim);margin:0 0 10px;font-size:12px}.modal.narrow .modal-body>.form-hint{margin:6px 0 0}.format-picker{gap:4px;display:flex}.format-picker .button{text-transform:lowercase;flex:1;padding:2px 0;font-size:11px}.format-picker .button.active{background:var(--accent);border-color:var(--accent);color:var(--bg-titlebar);font-weight:600}.form-warning{color:#d8a657;padding:2px 0 0;font-size:11px}.login-page{background:var(--bg-canvas);justify-content:center;align-items:center;min-height:100vh;display:flex}.login{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:6px;width:280px;padding:24px;display:flex}.login .brand{letter-spacing:.04em;margin-bottom:12px;font-size:16px;font-weight:600}.login label{color:var(--text-dim);font-size:11px}.login .button{text-align:center;margin-top:12px}.login .login-error{color:var(--error);background:var(--error-bg);border:1px solid var(--error);border-radius:2px;margin:8px 0 0;padding:6px 8px;font-size:11px}.login .text-input.invalid{border-color:var(--error)}.account{align-items:center;gap:6px;margin-right:16px;display:flex}.account .account-name{color:var(--text-dim);font-size:11px}.account .button.subtle{background:0 0;padding:2px 8px;font-size:11px}.access-badge{font-family:var(--font-mono);letter-spacing:.04em;border:1px solid var(--border);color:var(--text-dim);border-radius:2px;flex:none;margin-left:auto;padding:1px 5px;font-size:10px}.access-badge.access-admin{color:#d8a657;background:rgba(216,166,87,.1);border-color:rgba(216,166,87,.4)}:root{--script-line-height:18px;--script-pad-x:8px;--script-pad-y:6px}.script-editor{flex-direction:column;gap:4px;min-width:0;display:flex}.form-row:has(.script-editor){grid-template-columns:1fr;align-items:stretch}.script-toolbar{align-items:center;gap:6px;font-size:11px;display:flex}.script-toolbar-gap{flex:auto}.script-scope{appearance:none;color:var(--rhai-host);font-family:var(--font-mono);cursor:pointer;background:0 0;border:1px solid transparent;border-radius:2px;padding:1px 4px;font-size:11px}.script-scope:hover,.script-scope:focus{border-color:var(--border);background:var(--bg-hover);outline:none}.script-scope>option{background:var(--bg-panel);color:var(--text)}.script-scope-picker{align-items:center;display:inline-flex;position:relative}.script-scope-picker>.script-scope{padding-right:14px}.script-scope-picker:after{content:"▾";color:var(--text-dim);pointer-events:none;font-size:9px;position:absolute;right:4px}.script-toolbar-button{appearance:none;color:var(--text-dim);font:inherit;cursor:pointer;background:0 0;border:1px solid transparent;border-radius:2px;padding:1px 6px;font-size:11px}.script-toolbar-button:hover{color:var(--text);background:var(--bg-hover)}.script-toolbar-button.active{color:var(--text);border-color:var(--border);background:var(--bg-hover)}.script-surface{background:var(--bg-canvas);border:1px solid var(--border);border-radius:var(--radius);max-height:320px;display:flex;overflow:auto}.script-surface.failed{border-color:var(--error)}.script-gutter{text-align:right;color:var(--text-dim);background:var(--bg-titlebar);border-right:1px solid var(--border);-webkit-user-select:none;user-select:none;z-index:1;font-family:var(--font-mono);flex:none;padding:6px 6px 6px 8px;font-size:12px;line-height:1.5;position:sticky;left:0}.script-gutter-line{min-height:var(--script-line-height)}.script-gutter-line.failed{color:var(--error)}.script-code{flex:1 0 auto;position:relative}.script-highlight,.script-input,.script-measure{font-family:var(--font-mono);white-space:pre;overflow-wrap:normal;tab-size:2;border:0;margin:0;font-size:12px;line-height:1.5}.script-highlight,.script-input{padding:var(--script-pad-y) var(--script-pad-x)}.script-highlight{width:max-content;min-width:100%;min-height:120px;color:var(--text);pointer-events:none}.script-measure{visibility:hidden;pointer-events:none;padding:0;position:absolute;top:0;left:0}.script-line{min-height:var(--script-line-height)}.script-line.failed{background:var(--error-bg)}.script-input{resize:none;color:transparent;width:100%;height:100%;caret-color:var(--text);background:0 0;outline:none;position:absolute;inset:0;overflow:hidden}.script-input::selection{background:rgba(105,156,232,.35)}.rhai-plain,.rhai-ident,.rhai-punct{color:var(--text)}.rhai-punct{color:var(--text-dim)}.rhai-keyword,.rhai-literal{color:var(--rhai-keyword)}.rhai-str{color:var(--rhai-str)}.rhai-num{color:var(--rhai-num)}.rhai-comment{color:var(--rhai-comment);font-style:italic}.rhai-host{color:var(--rhai-host)}.script-popup,.script-hint{z-index:3;font-family:var(--font-mono);background:var(--bg-titlebar);border:1px solid var(--border);border-radius:var(--radius);font-size:12px;position:absolute;box-shadow:0 6px 20px rgba(0,0,0,.5)}.script-popup{min-width:220px;max-width:520px;max-height:168px;margin:2px 0 0;padding:2px;list-style:none;overflow-y:auto}.script-popup-row>button{white-space:nowrap;appearance:none;width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:2px;align-items:baseline;gap:6px;padding:2px 6px;display:flex}.script-popup-row.selected>button,.script-popup-row>button:hover{background:var(--accent);color:#fff}.script-popup-row.selected>button .script-popup-detail,.script-popup-row.selected>button .script-popup-kind,.script-popup-row>button:hover .script-popup-detail,.script-popup-row>button:hover .script-popup-kind{color:rgba(255,255,255,.75)}.completion-builtin{color:var(--rhai-host)}.completion-field{color:var(--json-key)}.completion-keyword{color:var(--rhai-keyword)}.script-popup-detail{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;flex:auto;font-family:Noto Sans,Open Sans,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:11px;overflow:hidden}.script-popup-kind{color:var(--text-dim);flex:none;font-size:10px}.script-hint{pointer-events:none;flex-direction:column;gap:2px;max-width:380px;padding:4px 8px;display:flex}.script-hint>code{color:var(--rhai-host)}.script-hint>span{color:var(--text-dim);white-space:normal;font-size:11px}.script-hint-warn{color:var(--stat-out)!important}.script-problem{border-radius:var(--radius);color:var(--error);background:var(--error-bg);flex-wrap:wrap;align-items:baseline;gap:6px;padding:4px 8px;font-size:12px;display:flex}.script-problem.unasked,.script-problem.checking{color:var(--text-dim);background:0 0;padding-left:0}.script-problem-where{font-family:var(--font-mono);opacity:.85;font-size:11px}.script-problem-message{flex:200px}.script-reference{background:var(--bg-canvas);border:1px solid var(--border);border-radius:var(--radius);min-width:0;max-height:320px;padding:8px;overflow:auto}.script-reference>h4{color:var(--text-dim);margin:0 0 6px;font-size:11px;font-weight:600}.script-reference>ul{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.script-reference-row.out-of-scope{opacity:.55}.script-reference-row>code{font-family:var(--font-mono);font-size:12px}.script-reference-scope{color:var(--stat-out);margin-left:6px;font-size:10px}.script-reference-summary{color:var(--text);margin:2px 0 0;font-size:11px}.script-reference-detail{color:var(--text-dim);margin:2px 0 0;font-size:11px}.script-results{flex-direction:column;gap:4px;min-height:0;display:flex}.script-results-toggle{color:var(--text-dim);cursor:pointer;background:0 0;border:0;align-self:flex-start;padding:0;font-size:11px}.script-results-toggle:hover{color:var(--text)}.script-results-body{grid-template-columns:1fr 1fr;gap:8px;min-height:0;display:grid}.script-pane{flex-direction:column;gap:4px;min-width:0;min-height:0;display:flex}.script-pane-head{color:var(--text-dim);align-items:baseline;gap:6px;font-size:11px;display:flex}.script-pane-note{color:var(--rhai-host);font-size:10px}.script-messages{font-family:var(--font-mono);resize:vertical;background:var(--bg-canvas);min-height:96px;color:var(--text);border:1px solid var(--border);border-radius:var(--radius);white-space:pre;padding:6px 8px;font-size:11px}.script-out{background:var(--bg-canvas);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;flex:auto;gap:4px;min-height:96px;max-height:260px;padding:4px 6px;display:flex;overflow:auto}.script-out-empty{color:var(--text-dim);font-size:11px}.script-warning{color:var(--stat-out);font-size:11px}.script-overlay{z-index:20;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:8px;min-height:0;padding:0 12px 12px;display:flex;position:fixed;inset:24px;box-shadow:0 12px 40px rgba(0,0,0,.6)}.script-overlay-head{background:var(--bg-titlebar);border-bottom:1px solid var(--border);align-items:center;gap:8px;margin:0 -12px;padding:6px 6px 6px 10px;display:flex}.script-overlay-head .script-toolbar{flex:auto}.script-overlay-body{flex:auto;gap:8px;min-height:0;display:flex}.script-overlay-body .script-reference{flex:0 0 300px;max-height:none}.script-overlay-code{flex-direction:column;flex:auto;gap:4px;min-width:0;min-height:0;display:flex}.script-overlay-code .script-surface{flex:auto;max-height:none}.script-overlay>.script-results{flex:0 0 30%;min-height:0}.script-overlay>.script-results .script-results-body{flex:auto;min-height:0}.script-overlay>.script-results .script-messages,.script-overlay>.script-results .script-out{flex:auto;min-height:0;max-height:none}