:root{--font-ui:-apple-system, BlinkMacSystemFont, system-ui, sans-serif;--font-mono:"JetBrains Mono", "SF Mono", Menlo, monospace;--radius:4px;--radius-lg:6px;--shadow-sm:0 1px 2px #0006;--shadow-md:0 4px 12px #00000080;--bg:#1a1b26;--paper:#24283b;--paper-hi:#2e334a;--ink:#c0caf5;--ink-mid:#a9b1d6;--ink-faint:#565f89;--rule:#2e334a;--rule-hi:#3b4261;--accent:#7aa2f7;--accent-soft:#7aa2f726;--red:#f7768e;--green:#9ece6a;--orange:#ff9e64;--violet:#bb9af7}:root[data-theme=tokyo-night]{--bg:#1a1b26;--paper:#24283b;--paper-hi:#2e334a;--ink:#c0caf5;--ink-mid:#a9b1d6;--ink-faint:#565f89;--rule:#2e334a;--rule-hi:#3b4261;--accent:#7aa2f7;--accent-soft:#7aa2f726;--red:#f7768e;--green:#9ece6a;--orange:#ff9e64;--violet:#bb9af7}:root[data-theme=dune]{--bg:#e4d9cb;--paper:#f0e8db;--paper-hi:#e8dfd1;--ink:#3a2e22;--ink-mid:#7a6e5e;--ink-faint:#a89a88;--rule:#d4c8b8;--rule-hi:#c0b5a0;--accent:#b05a3a;--accent-soft:#b05a3a26;--red:#b85a4a;--green:#7a9a6a;--orange:#d4a06a;--violet:#9b8bb8}:root[data-theme=frost]{--bg:#eef1f5;--paper:#fff;--paper-hi:#f8fafc;--ink:#334155;--ink-mid:#64748b;--ink-faint:#94a3b8;--rule:#e2e8f0;--rule-hi:#cbd5e1;--accent:#3b82f6;--accent-soft:#3b82f626;--red:#ef4444;--green:#22c55e;--orange:#f59e0b;--violet:#8b5cf6}:root[data-theme=dracula]{--bg:#282a36;--paper:#2d2f3f;--paper-hi:#34364a;--ink:#f8f8f2;--ink-mid:#a0a2b8;--ink-faint:#626483;--rule:#3a3c50;--rule-hi:#44475a;--accent:#bd93f9;--accent-soft:#bd93f926;--red:#f55;--green:#50fa7b;--orange:#ffb86c;--violet:#ff79c6}:root[data-theme=nord]{--bg:#2e3440;--paper:#3b4252;--paper-hi:#434c5e;--ink:#eceff4;--ink-mid:#d8dee9;--ink-faint:#818da4;--rule:#434c5e;--rule-hi:#4c566a;--accent:#88c0d0;--accent-soft:#88c0d026;--red:#bf616a;--green:#a3be8c;--orange:#d08770;--violet:#b48ead}:root[data-theme=gruvbox]{--bg:#282828;--paper:#32302f;--paper-hi:#3c3836;--ink:#ebdbb2;--ink-mid:#bdae93;--ink-faint:#7c6f64;--rule:#504945;--rule-hi:#665c54;--accent:#fabd2f;--accent-soft:#fabd2f26;--red:#fb4934;--green:#b8bb26;--orange:#fe8019;--violet:#d3869b}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font-ui);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:13px}button{font-family:inherit;font-size:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0}input,textarea{font-family:inherit;font-size:inherit;color:inherit;background:0 0;border:none;outline:none}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--rule-hi);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--ink-faint)}.app-root{background:var(--bg);width:100vw;height:100vh;color:var(--ink);flex-direction:column;display:flex;overflow:hidden}.workspace{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.ws-panel-group{flex:1;min-width:0;min-height:0}.ws-handle{background:var(--rule);flex-shrink:0;transition:background .15s}.ws-handle:hover,.ws-handle[data-resize-handle-state=drag]{background:var(--accent)}.ws-handle-h{width:3px}.ws-handle-v{height:3px}[data-panel-resize-handle-enabled]{background:var(--rule);transition:background .15s}[data-panel-resize-handle-enabled]:hover,[data-panel-resize-handle-enabled][data-resize-handle-state=drag]{background:var(--accent)}[data-panel-resize-handle-enabled][data-panel-group-direction=horizontal]{width:1px}[data-panel-resize-handle-enabled][data-panel-group-direction=vertical]{height:1px}.left-pane-handle{background:var(--rule)!important;height:3px!important}.left-pane-handle:hover,.left-pane-handle[data-resize-handle-state=drag]{background:var(--accent)!important}.shell-group{background:var(--paper);flex-direction:column;width:100%;min-width:0;height:100%;min-height:0;display:flex}.shell-handlebar{border-bottom:1px solid var(--rule);background:var(--paper);flex-shrink:0;align-items:center;height:28px;padding:0 14px;display:flex}.shell-handlebar-title{text-transform:uppercase;letter-spacing:.8px;color:var(--ink-faint);font-size:10px}.shell-body{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.status-bar{background:var(--paper);border-top:1px solid var(--rule);flex-shrink:0;align-items:center;height:26px;padding:0 6px;display:flex}.status-bar-group{align-items:center;gap:2px;display:flex}.status-bar-spacer{flex:1}.status-bar-btn{width:26px;height:20px;color:var(--ink-faint);border-radius:var(--radius);justify-content:center;align-items:center;font-size:12px;transition:all .12s;display:flex}.status-bar-btn:hover{color:var(--ink-mid);background:var(--paper-hi)}.status-bar-btn.active{color:var(--accent);background:var(--accent-soft)}.authoring-zone{background:var(--bg);flex-direction:column;width:100%;min-width:0;height:100%;min-height:0;display:flex}.authoring-empty{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:6px;display:flex}.authoring-empty-title{color:var(--ink-mid);font-size:13px}.authoring-empty-hint{color:var(--ink-faint);letter-spacing:.4px;font-size:10px}.tab-bar{background:var(--paper);border-bottom:1px solid var(--rule);flex-direction:row;flex-shrink:0;height:28px;display:flex;overflow-x:auto}.tab{height:100%;color:var(--ink-faint);background:var(--paper);border-right:1px solid var(--rule);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;min-width:0;max-width:200px;padding:0 8px 0 12px;font-size:11px;transition:all .15s;display:flex}.tab:hover{color:var(--ink-mid)}.tab.active{color:var(--ink);background:var(--bg);border-bottom:1px solid var(--bg);margin-bottom:-1px}.tab-glyph{text-align:center;flex-shrink:0;width:10px;font-size:10px;line-height:1}.tab-module .tab-glyph{color:var(--ink-faint);opacity:.7}.tab-topology .tab-glyph{color:var(--accent);font-size:8px}.tab-topology.active .tab-glyph{color:var(--accent)}.tab-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tab.preview .tab-title{font-style:italic}.tab-close{width:14px;height:14px;color:var(--ink-faint);border-radius:3px;justify-content:center;align-items:center;font-size:14px;line-height:1;transition:all .15s;display:flex}.tab-close:hover{background:var(--rule-hi);color:var(--ink)}.explorer{background:var(--paper);flex-direction:column;width:100%;min-width:0;height:100%;min-height:0;display:flex}.explorer-header{border-bottom:1px solid var(--rule);flex-shrink:0;justify-content:space-between;align-items:center;height:28px;padding:0 14px;display:flex}.explorer-project-name{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:500;overflow:hidden}.explorer-project-name.faint{color:var(--ink-faint);font-weight:400}.explorer-close-btn{width:20px;height:20px;color:var(--ink-faint);border-radius:var(--radius);flex-shrink:0;justify-content:center;align-items:center;font-size:14px;line-height:1;transition:all .15s;display:flex}.explorer-close-btn:hover{color:var(--red);background:#ff6b6b1a}.explorer-list{flex:1;padding:8px 0;overflow-y:auto}.explorer-entry{color:var(--ink-mid);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:3px 8px;font-size:12px;transition:background .1s;display:flex}.explorer-entry:hover{background:var(--paper-hi)}.explorer-entry.transformer.run{color:var(--accent)}.explorer-entry.transformer.run:hover,.explorer-entry.transformer.active{background:var(--accent-soft)}.explorer-entry.transformer.active span:last-child{color:var(--accent);font-weight:500}.explorer-entry.module .module-name{color:var(--ink-mid)}.explorer-entry.playing,.explorer-entry.transformer.run.playing{color:var(--accent)}.explorer-entry .chev{text-align:center;width:16px;color:var(--ink-faint);flex-shrink:0;font-size:9px}.explorer-entry.transformer .chev{color:var(--ink-faint);opacity:.5}.explorer-status-dot{background:var(--red);border-radius:50%;flex-shrink:0;width:6px;height:6px;margin-left:auto}.explorer-status-dot+.explorer-run-action{margin-left:6px}.explorer-run-identity{width:16px;color:var(--accent);flex-shrink:0;justify-content:center;align-items:center;font-size:9px;display:inline-flex}.explorer-run-action{width:18px;height:18px;color:var(--accent);border-radius:var(--radius);background:var(--paper-hi);flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;font-size:10px;transition:all .12s;display:flex}.explorer-run-action:hover{background:var(--accent-soft)}.explorer-entry.transformer.run.playing .explorer-run-action{color:var(--accent)}.explorer-play-btn{width:16px;height:16px;color:var(--ink-faint);border-radius:2px;flex-shrink:0;justify-content:center;align-items:center;font-size:9px;transition:all .12s;display:flex}.explorer-entry.transformer.run .explorer-play-btn{color:var(--accent)}.explorer-entry.playing .explorer-play-btn{color:var(--accent);background:var(--accent-soft)}.explorer-play-btn:hover{background:var(--paper-hi)}.explorer-external-btn{width:18px;height:18px;color:var(--ink-faint);opacity:0;border-radius:var(--radius);flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;font-size:11px;transition:all .12s;display:flex}.explorer-entry.module:hover .explorer-external-btn{opacity:1}.explorer-external-btn:hover{color:var(--accent);background:var(--paper-hi)}.explorer-transformer-name{flex:1;align-items:baseline;gap:0;min-width:0;display:inline-flex}.explorer-transformer-sig{font-family:var(--font-mono);color:var(--ink-faint);opacity:.85;text-overflow:ellipsis;white-space:nowrap;margin-left:4px;font-size:9px;overflow:hidden}.explorer-transformer-sig-light{font-family:var(--font-mono);color:var(--ink-faint);opacity:.5;margin-left:2px;font-size:9px}.explorer-transformer-worker{font-family:var(--font-mono);color:var(--ink-faint);opacity:.7;margin-left:6px;font-size:9px}.explorer-section{flex-direction:column;margin-top:12px;padding:0 4px;display:flex}.explorer-section-label{letter-spacing:.9px;text-transform:uppercase;color:var(--ink-faint);border-top:1px dashed var(--rule);margin-top:2px;padding:4px 8px 6px;font-size:9px}.explorer-section-row{color:var(--ink-mid);align-items:center;gap:6px;padding:2px 12px;font-size:11px;display:flex}.explorer-section-icon{text-align:center;width:14px;color:var(--ink-faint);flex-shrink:0;font-size:10px}.explorer-section-name{font-family:var(--font-mono);flex:1;font-size:10px}.explorer-section-val{font-family:var(--font-mono);color:var(--ink-mid);font-size:10px}.explorer-section-val.ok{color:var(--green)}.explorer-section-meta{color:var(--ink-faint);font-size:9px;font-family:var(--font-mono);padding:4px 12px 6px}.explorer-empty-body{flex-direction:column;flex:1;min-height:0;padding:14px;display:flex;overflow-y:auto}.explorer-empty-label{color:var(--ink-faint);margin-bottom:10px;font-size:11px}.explorer-empty-buttons{gap:6px;margin-bottom:4px;display:flex}.explorer-empty-btn{color:var(--ink-mid);background:var(--paper-hi);border:1px solid var(--rule-hi);border-radius:var(--radius);flex:1;padding:6px 10px;font-size:11px;transition:all .12s}.explorer-empty-btn:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.explorer-recent{flex-direction:column;margin-top:16px;display:flex}.explorer-recent-label{letter-spacing:.8px;text-transform:uppercase;color:var(--ink-faint);margin-bottom:2px;padding:4px 0;font-size:9px}.explorer-recent-row{align-items:center;gap:4px;padding:2px 0;display:flex}.explorer-recent-item{border-radius:var(--radius);flex-direction:column;flex:1;align-items:flex-start;gap:1px;min-width:0;padding:4px 6px;transition:background .1s;display:flex}.explorer-recent-item:hover{background:var(--paper-hi)}.explorer-recent-item .recent-name{color:var(--ink-mid);text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:11px;overflow:hidden}.explorer-recent-item:hover .recent-name{color:var(--accent)}.explorer-recent-item .recent-parent{font-size:9px;font-family:var(--font-mono);color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.explorer-recent-remove{width:18px;height:18px;color:var(--ink-faint);border-radius:var(--radius);justify-content:center;align-items:center;font-size:12px;transition:all .12s;display:flex}.explorer-recent-remove:hover{color:var(--red);background:#ff6b6b1a}.topology{background:var(--paper);flex-direction:column;width:100%;height:100%;min-height:0;display:flex}.topology-header{border-bottom:1px solid var(--rule);flex-shrink:0;align-items:center;gap:8px;height:28px;padding:0 14px;display:flex}.topology-label{text-transform:uppercase;letter-spacing:.8px;color:var(--ink-faint);font-size:9px}.topology-module{font-family:var(--font-mono);color:var(--ink-mid);text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.topology-body{flex:1;min-width:0;min-height:0;padding:6px 0;overflow:auto}.topology-hint{color:var(--ink-faint);padding:14px;font-size:11px;font-style:italic}.topology-subhint{color:var(--ink-faint);opacity:.7;padding:8px 16px;font-size:10px;font-style:italic}.topology-tree{font-family:var(--font-mono);color:var(--ink-mid);min-width:max-content;padding:2px 0;font-size:11px}.tt-row{white-space:pre;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:0;padding:1px 10px 1px 8px;line-height:1.55;transition:background .1s;display:flex}.tt-row:hover{background:var(--paper-hi);color:var(--ink)}.tt-row.active{background:var(--accent-soft)}.tt-row.active .tt-name{color:var(--accent);font-weight:500}.tt-row.hovered{background:var(--paper-hi)}.tt-row.hovered .tt-name{color:var(--ink)}.tt-row.projected{background:#d4b45014}.tt-row.projected .tt-name{color:#d4b450;font-weight:500}.tt-row.tt-root .tt-name{color:var(--ink);font-weight:500}.tt-prefix{color:var(--ink-faint);opacity:.6;flex-shrink:0}.tt-state-badge{background:0 0;border-radius:50%;flex-shrink:0;width:6px;height:6px;margin-right:6px;transition:background .15s,box-shadow .15s}.tt-row[data-runtime-state=initializing] .tt-state-badge{background:var(--orange,#f5a623);animation:1.6s ease-in-out infinite tt-state-badge-pulse;box-shadow:0 0 5px #f5a62380}.tt-row[data-runtime-state=initialized-with-flow] .tt-state-badge{background:var(--green,#6bff8f);box-shadow:0 0 5px #6bff8f99}.tt-row[data-runtime-state=errored] .tt-state-badge{background:var(--red);box-shadow:0 0 5px #ff6b6b80}@keyframes tt-state-badge-pulse{0%,to{opacity:.9;transform:scale(1)}50%{opacity:.4;transform:scale(.75)}}.tt-chev{width:14px;height:14px;color:var(--ink-faint);cursor:pointer;border-radius:2px;flex-shrink:0;justify-content:center;align-items:center;margin-right:4px;font-size:9px;transition:all .12s;display:inline-flex}.tt-chev:hover{color:var(--ink);background:var(--paper-hi)}.tt-chev-spacer{flex-shrink:0;width:14px;height:14px;margin-right:4px}.tt-name{color:var(--ink-mid)}.tt-annot{font-family:var(--font-mono);opacity:.85;margin-left:4px}.tt-annot-type{color:var(--ink-faint)}.tt-annot-buf{color:var(--violet);opacity:.75}.tt-annot-live{color:var(--accent);opacity:.9}.tt-row.tt-inlet .tt-name,.tt-row.tt-outlet .tt-name{opacity:.65;font-style:italic}.tt-row.tt-constant .tt-name{opacity:.8}.tt-row.tt-inlet .tt-prefix,.tt-row.tt-outlet .tt-prefix{color:var(--ink-mid);opacity:.8}.tt-row.tt-constant .tt-prefix{color:var(--violet);opacity:.7}.topology-toolbar{font-family:var(--font-mono);border-bottom:1px dashed var(--rule);align-items:center;gap:8px;padding:4px 10px;font-size:10px;display:flex}.topology-follow{border:1px solid var(--rule);color:var(--ink-faint);font-family:var(--font-mono);cursor:pointer;background:0 0;border-radius:2px;padding:2px 8px;font-size:10px}.topology-follow.on{color:var(--accent);border-color:var(--accent)}.topology-follow:hover{background:var(--paper-hi)}.tt-goto{color:var(--ink-faint);font-family:var(--font-mono);cursor:pointer;opacity:0;background:0 0;border:none;flex-shrink:0;margin-left:auto;padding:0 6px;font-size:10px;transition:opacity .1s,color .1s}.tt-row:hover .tt-goto{opacity:.55}.tt-row:hover .tt-goto:hover{opacity:1;color:var(--accent)}.canvas-root{background:var(--bg);outline:none;flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.canvas-stage{background:var(--bg);flex:1;min-width:0;min-height:0;position:relative;overflow:hidden}.canvas-empty{font-family:var(--font-mono);color:var(--ink-faint);pointer-events:none;font-size:12px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.canvas-hint{color:var(--ink-faint);pointer-events:none;letter-spacing:.3px;font-size:10px;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.canvas-viewport{will-change:transform;width:1px;height:1px;position:absolute;top:50%;left:50%;overflow:visible}.canvas-edges{pointer-events:none;position:absolute;top:0;left:0;overflow:visible}.graph-edge{fill:none;stroke:var(--rule);stroke-width:1px}.canvas-nodes{width:0;height:0;position:absolute;top:0;left:0;overflow:visible}.graph-node{box-sizing:border-box;cursor:pointer;justify-content:stretch;align-items:stretch;display:flex;position:absolute}.graph-node:not(:has(.widget-frame)){border:1px solid var(--rule);background:var(--paper);font-family:var(--font-mono);color:var(--ink);border-radius:4px;justify-content:center;align-items:center;padding:8px;font-size:12px;transition:border-color .15s,background .15s,color .15s}:is(.graph-node[data-kind=inlet]:not(:has(.widget-frame)),.graph-node[data-kind=outlet]:not(:has(.widget-frame))){opacity:.55;color:var(--ink-faint);border-style:dashed;border-radius:14px;padding:4px 8px}.graph-node[data-kind=inlet] .graph-node-label,.graph-node[data-kind=outlet] .graph-node-label{font-size:11px;font-style:italic}.graph-node[data-kind=builtin]:not(:has(.widget-frame)){color:var(--ink-mid)}.graph-node-label{font-family:var(--font-mono);text-align:center;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:12px;overflow:hidden}.breadcrumb{font-family:var(--font-mono);color:var(--ink-faint);background:var(--paper);border-top:1px solid var(--rule);-webkit-user-select:none;user-select:none;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:0;padding:6px 14px;font-size:11px;display:flex}.breadcrumb-segment-group{align-items:center;gap:0;display:inline-flex}.breadcrumb-separator{color:var(--ink-faint);opacity:.5;margin:0 8px}.breadcrumb-segment{color:var(--ink-mid);font-family:inherit;font-size:inherit;cursor:pointer;background:0 0;border:none;border-radius:2px;padding:2px 4px;transition:color .12s,background .12s}.breadcrumb-segment:hover{color:var(--accent);background:var(--paper-hi)}.breadcrumb-segment.current{color:var(--ink);cursor:default;font-weight:500}.chat{background:var(--bg);flex-direction:column;width:100%;height:100%;min-height:0;display:flex}.chat-messages{flex-direction:column;flex:1;gap:10px;min-height:0;padding:12px 16px;display:flex;overflow-y:auto}.chat-empty{height:100%;color:var(--ink-faint);justify-content:center;align-items:center;font-size:11px;font-style:italic;display:flex}.chat-msg{border-radius:var(--radius-lg);word-wrap:break-word;max-width:85%;padding:8px 12px;font-size:12px;line-height:1.5}.chat-msg.user{background:var(--accent-soft);color:var(--ink);border:1px solid #6699ff4d;align-self:flex-end}.chat-msg.assistant{background:var(--paper-hi);color:var(--ink-mid);border:1px solid var(--rule);align-self:flex-start}.chat-input-wrap{border-top:1px solid var(--rule);background:var(--paper);flex-shrink:0;padding:10px 12px}.chat-input{background:var(--bg);border:1px solid var(--rule-hi);border-radius:var(--radius);width:100%;color:var(--ink);padding:8px 12px;font-size:12px;transition:border-color .15s}.chat-input:focus{border-color:var(--accent)}.chat-input::placeholder{color:var(--ink-faint)}.chat-permission{background:var(--paper-hi);border:1px solid var(--rule-hi);border-left:3px solid var(--accent);border-radius:var(--radius-lg);max-width:85%;color:var(--ink);flex-direction:column;align-self:flex-start;gap:8px;padding:10px 12px;font-size:12px;display:flex}.chat-permission-prompt{align-items:center;gap:8px;line-height:1.4;display:flex}.chat-permission-glyph{background:var(--accent-soft);width:20px;height:20px;color:var(--accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:10px;display:inline-flex}.chat-permission-target{font-family:var(--font-mono);color:var(--ink);background:var(--paper);border-radius:var(--radius);border:1px solid var(--rule);padding:1px 6px;font-size:11px}.chat-permission-actions{gap:6px;margin-left:28px;display:flex}.chat-btn{border-radius:var(--radius);font-size:11px;font-family:var(--font-ui);border:1px solid var(--rule-hi);background:var(--paper);color:var(--ink-mid);cursor:pointer;letter-spacing:.02em;padding:4px 14px;transition:all .12s}.chat-btn:hover{border-color:var(--accent);color:var(--ink)}.chat-btn.primary{background:var(--accent);color:var(--bg);border-color:var(--accent);font-weight:500}.chat-btn.primary:hover{filter:brightness(1.1)}.chat-btn:active{transform:translateY(1px)}.chat-permission.noop{border-left-color:var(--rule-hi);color:var(--ink-faint);background:var(--paper);font-style:italic}.chat-permission.noop .chat-permission-glyph{background:var(--rule);color:var(--ink-faint)}.chat-permission.resolved{border-left-width:2px;border-color:transparent transparent transparent var(--rule-hi);color:var(--ink-faint);background:0 0;padding:6px 12px;font-size:11px}.chat-permission.resolved.approved{border-left-color:var(--green);color:var(--green)}.chat-permission.resolved.declined{border-left-color:var(--ink-faint)}.chat-error{border:1px solid var(--red);border-radius:var(--radius-lg);max-width:85%;color:var(--red);background:#f7768e14;border-left-width:3px;align-self:flex-start;align-items:flex-start;gap:8px;padding:8px 12px;font-size:12px;line-height:1.4;display:flex}.chat-error-glyph{background:var(--red);width:16px;height:16px;color:var(--bg);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-top:1px;font-size:10px;font-weight:600;display:inline-flex}.chat-tool-call{max-width:85%;font-family:var(--font-mono);background:var(--paper);color:var(--ink-faint);border-radius:var(--radius);border:1px solid var(--rule);align-self:flex-start;padding:4px 10px;font-size:10px}.chat-tool-call summary{cursor:pointer;-webkit-user-select:none;user-select:none;outline:none}.chat-tool-call summary:hover{color:var(--ink-mid)}.chat-tool-call pre{white-space:pre-wrap;word-break:break-word;color:var(--ink-mid);margin-top:6px;font-size:10px}.chat-thinking{background:var(--paper-hi);border:1px solid var(--rule);border-radius:var(--radius-lg);color:var(--ink-faint);align-self:flex-start;align-items:center;gap:6px;padding:8px 12px;font-size:11px;display:flex}.chat-thinking-dot{background:var(--ink-faint);border-radius:50%;width:5px;height:5px;animation:1.2s ease-in-out infinite chat-thinking-bounce}.chat-thinking-dot:first-child{animation-delay:-.32s}.chat-thinking-dot:nth-child(2){animation-delay:-.16s}.chat-thinking-dot:nth-child(3){animation-delay:0s}.chat-thinking-label{margin-left:2px;font-style:italic}@keyframes chat-thinking-bounce{0%,80%,to{opacity:.4;transform:scale(.7)}40%{opacity:1;transform:scale(1)}}.chat-stage-diagnostic{color:var(--ink-faint);align-self:flex-start;padding:0 4px;font-size:10px;font-style:italic}.chat-complete{color:var(--ink-faint);letter-spacing:.08em;text-transform:lowercase;align-self:center;padding:4px 0;font-size:10px}.log-view{background:var(--bg);flex-direction:column;flex:1;min-height:0;display:flex}.log-empty{color:var(--ink-faint);flex:1;justify-content:center;align-items:center;font-size:11px;font-style:italic;display:flex}.widget-frame{background:var(--paper);border:1px solid var(--rule);border-radius:var(--radius-lg);min-width:200px;max-width:320px;font-family:var(--font-mono);color:var(--ink);flex-direction:column;transition:border-color .15s,background .15s,box-shadow .15s;display:flex;position:relative;overflow:hidden}.widget-frame[data-focus=focused]{border-color:var(--accent)}.widget-frame[data-runtime-state=initializing]:after,.widget-frame[data-runtime-state=initialized-with-flow]:after,.widget-frame[data-runtime-state=errored]:after{content:"";border-radius:50%;width:6px;height:6px;position:absolute;top:10px;right:10px}.widget-frame[data-runtime-state=initializing]{border-style:dashed}.widget-frame[data-runtime-state=initializing]:after{background:var(--orange,#f5a623);animation:1.6s ease-in-out infinite widget-frame-initializing-pulse;box-shadow:0 0 6px #f5a62380}@keyframes widget-frame-initializing-pulse{0%,to{opacity:.9;transform:scale(1)}50%{opacity:.4;transform:scale(.75)}}.widget-frame[data-runtime-state=initialized-with-flow]:after{background:var(--green,#6bff8f);box-shadow:0 0 6px #6bff8f99}.widget-frame[data-runtime-state=errored]{border-color:var(--red)}.widget-frame[data-runtime-state=errored]:after{background:var(--red);box-shadow:0 0 6px #ff6b6b80}.widget-frame-title{color:var(--ink-mid);text-transform:uppercase;letter-spacing:.9px;border-bottom:1px solid var(--rule);-webkit-user-select:none;user-select:none;padding:7px 14px 6px;font-size:10px}.widget-frame[data-focus=focused] .widget-frame-title{color:var(--accent);border-bottom-color:#6699ff40}.widget-frame[data-runtime-state=errored] .widget-frame-title{color:var(--red);border-bottom-color:#ff6b6b4d}.widget-frame-body{flex-direction:row;align-items:stretch;min-height:56px;display:flex;position:relative}.widget-frame-ports{flex-direction:column;flex-shrink:0;justify-content:center;gap:12px;width:10px;padding:10px 0;display:flex}.widget-frame-inlets{margin-left:-5px}.widget-frame-outlets{margin-left:auto;margin-right:-5px}.widget-port{background:var(--bg);border:1px solid var(--ink-faint);box-sizing:border-box;cursor:crosshair;border-radius:50%;width:10px;height:10px;transition:all .12s}.widget-port[data-wired=true]{background:var(--accent);border-color:var(--accent)}.widget-port:hover{border-color:var(--accent);transform:scale(1.25)}.widget-frame-grid{flex:1;grid-template-columns:repeat(6,1fr);align-content:start;gap:8px;min-width:0;min-height:36px;padding:8px;display:grid}.row{background:var(--paper-hi);border:1px solid var(--rule);box-sizing:border-box;min-height:52px;font-family:var(--font-mono);border-radius:4px;flex-direction:column;gap:3px;min-width:0;padding:6px 8px;display:flex}.row-head{color:var(--ink-faint);text-transform:uppercase;letter-spacing:.4px;justify-content:space-between;align-items:baseline;gap:6px;min-width:0;font-size:8px;display:flex}.row-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.row-badge{color:var(--accent);opacity:.75;flex-shrink:0}.row-body{flex:1;justify-content:space-between;align-items:center;gap:6px;min-width:0;display:flex}.row-value{color:var(--ink);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:13px;overflow:hidden}.row-icon{flex-shrink:0;align-items:center;display:flex}.row-fill{flex:1;align-items:stretch;min-width:0;display:flex}.row-fill>*{flex:1;min-width:0}.knob{touch-action:none;-webkit-user-select:none;user-select:none;display:block}.knob-track{fill:none;stroke:var(--rule);stroke-width:2.5px;stroke-linecap:round}.knob-fill{fill:none;stroke:var(--accent);stroke-width:2.5px;stroke-linecap:round;transition:stroke .12s}.knob-pip{stroke:var(--ink);stroke-width:1.5px;stroke-linecap:round}.knob[data-disabled=true]{opacity:.4;cursor:not-allowed;pointer-events:none}.knob[data-disabled=true] .knob-fill,.knob[data-disabled=true] .knob-pip{stroke:var(--ink-faint)}.stepper{background:var(--paper-hi);border:1px solid var(--rule);height:22px;font-family:var(--font-mono);color:var(--ink);border-radius:3px;align-items:stretch;font-size:11px;display:inline-flex;overflow:hidden}.stepper-btn{color:var(--ink-faint);cursor:pointer;background:0 0;border:none;width:22px;padding:0;font-family:inherit;font-size:13px;line-height:1;transition:all .12s}.stepper-btn:hover:not(:disabled){color:var(--accent);background:var(--accent-soft)}.stepper-btn:disabled{opacity:.4;cursor:not-allowed}.stepper-value{border-left:1px solid var(--rule);border-right:1px solid var(--rule);font-variant-numeric:tabular-nums;min-width:28px;color:var(--ink);justify-content:center;align-items:center;padding:0 8px;display:inline-flex}.stepper[data-disabled=true]{opacity:.4;pointer-events:none}.stepper[data-disabled=true] .stepper-value,.stepper[data-disabled=true] .stepper-btn{color:var(--ink-faint)}.dropdown{background:var(--paper-hi);border:1px solid var(--rule);height:22px;color:var(--ink);font-family:var(--font-mono);cursor:pointer;appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--ink-faint) 50%), linear-gradient(135deg, var(--ink-faint) 50%, transparent 50%);background-position:calc(100% - 12px),calc(100% - 8px);background-repeat:no-repeat;background-size:4px 4px,4px 4px;border-radius:3px;min-width:72px;padding:0 22px 0 10px;font-size:11px;transition:border-color .12s,color .12s}.dropdown:hover{border-color:var(--rule-hi)}.dropdown:focus{border-color:var(--accent);outline:none}.dropdown option{background:var(--paper);color:var(--ink)}.dropdown:disabled,.dropdown[data-disabled=true]{opacity:.4;cursor:not-allowed;pointer-events:none;color:var(--ink-faint);border-color:var(--rule)}.toggle{background:var(--paper-hi);border:1px solid var(--rule);cursor:pointer;border-radius:10px;align-items:center;width:36px;height:20px;padding:0 2px;transition:all .15s;display:inline-flex;position:relative}.toggle:hover{border-color:var(--rule-hi)}.toggle[data-on=true]{background:var(--accent-soft);border-color:var(--accent);justify-content:flex-end}.toggle[data-on=false]{justify-content:flex-start}.toggle-dot{background:var(--ink-faint);border-radius:50%;width:14px;height:14px;transition:background .15s,transform .15s}.toggle[data-on=true] .toggle-dot{background:var(--accent)}.toggle[data-disabled=true],.toggle:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.toggle[data-disabled=true][data-on=true]{border-color:var(--rule);background:0 0}.toggle[data-disabled=true] .toggle-dot{background:var(--ink-faint)}.text{background:var(--paper-hi);border:1px solid var(--rule);height:22px;color:var(--ink);font-family:var(--font-mono);border-radius:3px;width:100%;min-width:0;padding:0 8px;font-size:11px;transition:border-color .12s}.text:hover{border-color:var(--rule-hi)}.text:focus{border-color:var(--accent);outline:none}.text::placeholder{color:var(--ink-faint)}.text:disabled,.text[data-disabled=true]{opacity:.4;cursor:not-allowed;pointer-events:none;color:var(--ink-faint);border-color:var(--rule)}.thingy-header{font-family:var(--font-mono);letter-spacing:.6px;text-transform:uppercase;color:var(--ink-faint);border-bottom:1px solid var(--rule);grid-column:1/-1;width:100%;padding:2px 0 6px;font-size:9px}.strip{background:var(--bg);grid-column:1/-1;height:36px;overflow:hidden}.strip canvas{width:100%;height:100%;display:block}.strip[data-disabled=true]{opacity:.55}.thumb{aspect-ratio:1;background:var(--bg);background-image:linear-gradient(45deg, var(--paper-hi,#222) 25%, transparent 25%), linear-gradient(-45deg, var(--paper-hi,#222) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--paper-hi,#222) 75%), linear-gradient(-45deg, transparent 75%, var(--paper-hi,#222) 75%);background-position:0 0,0 8px,8px -8px,-8px 0;background-size:16px 16px;grid-column:1/-1;width:100%;overflow:hidden}.thumb canvas{width:100%;height:100%;image-rendering:pixelated;display:block}.thumb[data-disabled=true]{opacity:.4}.ticks{background:var(--bg);grid-column:1/-1;height:24px;overflow:hidden}.ticks canvas{width:100%;height:100%;display:block}.ticks[data-disabled=true]{opacity:.55}.slider{touch-action:none;-webkit-user-select:none;user-select:none;cursor:ew-resize;width:100%;display:block;position:relative}.slider-track{background:var(--rule);border-radius:1.25px;height:2.5px;margin-top:-1.25px;position:absolute;top:50%;left:0;right:0}.slider-fill{background:var(--accent);border-radius:1.25px;height:2.5px;margin-top:-1.25px;transition:background .12s;position:absolute;top:50%;left:0}.slider-thumb{background:var(--ink);pointer-events:none;border-radius:50%;width:12px;height:12px;margin-top:-6px;margin-left:-6px;position:absolute;top:50%}.slider[data-disabled=true]{opacity:.4;cursor:not-allowed;pointer-events:none}.slider[data-disabled=true] .slider-fill,.slider[data-disabled=true] .slider-thumb{background:var(--ink-faint)}.numeric{background:var(--bg);grid-column:1/-1;justify-content:center;align-items:center;height:36px;display:flex}.numeric-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink);letter-spacing:.2px;font-size:18px}.numeric[data-disabled=true] .numeric-value{color:var(--ink-faint)}.numeric[data-disabled=true]{opacity:.85}
