:root,:root[data-theme=dark]{--bg: #171717;--surface: #1e1e1e;--surface-2: #242424;--surface-3: #2e2e2e;--line: #3c3c3c;--line-strong: #4f4f4f;--text: #e3e3e3;--text-dim: #a4a4a4;--text-faint: #7d7d7d;--wordmark: #ffffff;--accent: #7aa2f7;--accent-text: #121212;--error: #f07178;--warn: #e0af68;--presence: #9ece6a;--node-fill: #2a2a2a;--node-stroke: #646464;--edge: #888888;--edge-lit: #d0d0d0;--fill-1: #2c2c2c;--fill-2: #373737;--fill-3: #1f3535;--fill-4: #24352a;--fill-5: #3a3326;--fill-6: #3b2b27;--fill-7: #332a3a;--fill-8: #303030;--stroke-1: #9aa4b2;--stroke-2: #7aa2f7;--stroke-3: #56b6c2;--stroke-4: #9ece6a;--stroke-5: #e0af68;--stroke-6: #f07178;--stroke-7: #c39ae0;--select-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E%3Cpath d='M2 4l3 3 3-3' fill='none' stroke='%23a4a4a4' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}:root[data-theme=light]{--bg: #eeeeee;--surface: #f8f8f8;--surface-2: #f0f0f0;--surface-3: #e6e6e6;--line: #cecece;--line-strong: #b0b0b0;--wordmark: #000000;--text: #202020;--text-dim: #5d5d5d;--text-faint: #808080;--accent: #2f5fd0;--accent-text: #ffffff;--error: #b3261e;--warn: #8a5a00;--presence: #2e6b34;--node-fill: #ffffff;--node-stroke: #949494;--edge: #767676;--edge-lit: #3b3b3b;--fill-1: #c2ccda;--fill-2: #aac2e2;--fill-3: #a5d3d3;--fill-4: #aac8aa;--fill-5: #d7cda3;--fill-6: #e3b7b1;--fill-7: #d5c4e4;--fill-8: #bfbfbf;--stroke-1: #5c6672;--stroke-2: #2f5fd0;--stroke-3: #10707c;--stroke-4: #2e6b34;--stroke-5: #8a5a00;--stroke-6: #b3261e;--stroke-7: #6b3f91;--select-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E%3Cpath d='M2 4l3 3 3-3' fill='none' stroke='%235d5d5d' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}@font-face{font-family:Michroma;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/michroma-latin-4gS0VCia.woff2) format("woff2")}:root{--font: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--ui-font-size: 12px;--node-font-size: 12px;--edge-font-size: 10px;--attr-font: var(--font);--h-menubar: calc(var(--ui-font-size) + 12px);--h-toolbar: calc(var(--ui-font-size) + 16px);--h-status: calc(var(--ui-font-size) + 10px);--h-row: calc(var(--ui-font-size) + 10px);--h-control: calc(var(--ui-font-size) + 8px);--ui-font-small: calc(var(--ui-font-size) - 1px);--select-arrow-size: calc(var(--ui-font-size) * .8)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:var(--ui-font-size)/1.45 var(--font);overflow:hidden;-webkit-font-smoothing:antialiased}@media(prefers-reduced-motion:reduce){*{transition:none!important}}button,input,select{font:inherit;color:inherit}button{background:none;border:none;padding:0;cursor:pointer;color:inherit}button:disabled{cursor:default}:focus-visible{outline:1px solid var(--accent);outline-offset:1px}input,select{background:var(--bg);border:1px solid var(--line);border-radius:2px;padding:2px 5px;height:var(--h-control);min-width:0}input:focus,select:focus{outline:none;border-color:var(--accent)}select{appearance:none;-webkit-appearance:none;padding-block:0;padding-right:calc(var(--select-arrow-size) + 10px);background-image:var(--select-arrow);background-repeat:no-repeat;background-position:right 5px center;background-size:var(--select-arrow-size)}select:disabled{color:var(--text-faint);opacity:.7}option{background:var(--bg);color:var(--text)}kbd{font:var(--ui-font-small) var(--mono);background:var(--surface-3);border:1px solid var(--line);border-radius:2px;padding:0 4px;white-space:nowrap}.mono{font-family:var(--mono)}.app{display:flex;flex-direction:column;height:100%}.middle{flex:1 1 auto;display:flex;min-height:0}.stage{position:relative;flex:1 1 auto;min-width:0;background:var(--bg);display:flex;flex-direction:column}.canvas-tabs{display:flex;align-items:stretch;height:var(--h-row);flex:0 0 var(--h-row);background:var(--surface-2);border-bottom:1px solid var(--line);overflow-x:auto}.canvas-tab{display:flex;align-items:center;border-right:1px solid var(--line);max-width:200px}.canvas-tab.active{background:var(--bg);box-shadow:inset 0 -1px 0 var(--accent)}.canvas-tab-name{padding:0 4px 0 9px;font-size:var(--ui-font-small);color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.canvas-tab.active .canvas-tab-name{color:var(--text)}.canvas-tab-close{padding:0 7px;color:var(--text-faint)}.canvas-tab-close:hover{color:var(--error)}.canvas-tab-new{padding:0 10px;color:var(--text-dim)}.canvas-tab-new:hover{color:var(--accent)}.truncation{display:flex;align-items:center;gap:12px;padding:2px 10px;background:var(--surface-2);border-bottom:1px solid var(--line);color:var(--text-dim);font-size:var(--ui-font-small);flex:0 0 auto}.truncation button{border:none;padding:0;background:none;color:var(--accent);text-decoration:underline}.canvas{width:100%;height:100%;display:block}.boot{height:100%;display:grid;place-items:center;color:var(--text-dim)}.menubar{display:flex;align-items:stretch;height:var(--h-menubar);flex:0 0 var(--h-menubar);background:var(--surface);border-bottom:1px solid var(--line);position:relative;z-index:40}.menubar-item-wrap{position:relative;display:flex}.menubar-item{padding:0 9px;color:var(--text)}.menubar-item:hover,.menubar-item.open{background:var(--surface-3)}.menubar-mark{margin-left:auto;padding:0 10px;align-self:center;font-family:"Michroma",var(--font);font-size:var(--ui-font-small);letter-spacing:.12em;color:var(--wordmark);-webkit-user-select:none;user-select:none}.menu-panel{position:absolute;top:100%;left:0;min-width:220px;background:var(--surface);border:1px solid var(--line-strong);padding:3px 0;z-index:50}.menu-panel.nested{top:-4px;left:100%}.menu-row-wrap{position:relative}.menu-row{display:grid;grid-template-columns:16px 1fr auto 12px;align-items:center;gap:6px;width:100%;height:var(--h-row);padding:0 8px 0 4px;text-align:left;white-space:nowrap}.menu-row:hover:not(.disabled){background:var(--accent);color:var(--accent-text)}.menu-row.disabled{color:var(--text-faint);cursor:default}.menu-check,.menu-arrow{font-size:10px;text-align:center}.menu-accel{font:var(--ui-font-small) var(--mono);color:var(--text-dim)}.menu-row:hover:not(.disabled) .menu-accel{color:var(--accent-text)}.menu-sep{height:1px;background:var(--line);margin:3px 0}.context-menu{position:fixed;z-index:60}.context-menu>.menu-panel{position:static}.toolbar{display:flex;align-items:center;gap:1px;height:var(--h-toolbar);flex:0 0 var(--h-toolbar);padding:0 4px;background:var(--surface-2);border-bottom:1px solid var(--line)}.toolbar-btn{display:grid;place-items:center;width:calc(var(--ui-font-size) + 12px);height:var(--h-control);color:var(--text-dim);border-radius:2px}.toolbar-btn:hover:not(:disabled){background:var(--surface-3);color:var(--text)}.toolbar-btn:disabled{color:var(--text-faint);opacity:.5}.toolbar-sep{width:1px;height:16px;background:var(--line);margin:0 5px}.toolbar-defaults{margin-left:auto;display:flex;gap:10px}.toolbar-field{display:flex;align-items:center;gap:4px}.toolbar-field>span{color:var(--text-dim);font-size:var(--ui-font-small)}.toolbar-field select{max-width:132px}.toolbar-check{cursor:pointer}.toolbar-check input{margin:0}.dock{display:flex;flex-direction:column;min-height:0;background:var(--surface);position:relative;flex:none}.left-dock{border-right:1px solid var(--line)}.right-dock{border-left:1px solid var(--line)}.dock-tabs{display:flex;align-items:stretch;height:var(--h-row);flex:0 0 var(--h-row);background:var(--surface-2);border-bottom:1px solid var(--line)}.dock-tab{padding:0 9px;font-size:var(--ui-font-small);color:var(--text-dim);border-right:1px solid var(--line)}.dock-tab:hover{color:var(--text)}.dock-tab.active{background:var(--surface);color:var(--text);box-shadow:inset 0 -1px 0 var(--accent)}.dock-tab.static{cursor:default}.dock-close{padding:0 8px;font-size:var(--ui-font-small);color:var(--text-dim)}.dock-close:hover{color:var(--text)}.dock-strip{display:flex;align-items:center;gap:6px;padding:3px 5px;border-bottom:1px solid var(--line);flex:0 0 auto}.dock-filter{flex:1 1 auto}.dock-toggle{display:flex;align-items:center;gap:3px;color:var(--text-dim);font-size:var(--ui-font-small)}.dock-body{flex:1 1 auto;overflow:auto;min-height:0}.dock-none{padding:10px;color:var(--text-dim)}.dock-resize-v{position:absolute;top:0;bottom:0;right:-3px;width:6px;cursor:col-resize;z-index:5}.dock-resize-v.left{right:auto;left:-3px}.dock-resize-h{position:absolute;top:-3px;left:0;right:0;height:6px;cursor:row-resize;z-index:5}.bottom-dock{position:relative;display:flex;flex-direction:column;background:var(--surface);border-top:1px solid var(--line);flex:none}.panel{display:flex;flex-direction:column;height:100%;min-height:0}.panel-strip{display:flex;align-items:center;gap:10px;padding:4px 8px;border-bottom:1px solid var(--line);flex:0 0 auto}.panel-search{flex:1 1 auto;max-width:420px}.panel .dock-table,.panel .dock-none{overflow:auto}.panel>.dock-table{display:table}.result-row{cursor:default}.result-row:hover{background:var(--surface-2)}.res-kind{color:var(--text-dim);white-space:nowrap;width:1%}.res-name{white-space:nowrap}.res-class{color:var(--text-dim);white-space:nowrap}.res-why{color:var(--text-dim);font:10px var(--mono);white-space:nowrap;width:1%}.res-path{color:var(--text-dim);white-space:nowrap}.sev{text-transform:uppercase;font-size:10px;letter-spacing:.06em}.sev-error{color:var(--error)}.sev-warning{color:var(--warn)}.sev-info{color:var(--text-dim)}.dock-table{width:100%;border-collapse:collapse;font-size:var(--ui-font-small)}.dock-table td{padding:2px 8px;border-bottom:1px solid var(--line);vertical-align:top}.log-time,.log-level{font-family:var(--mono);color:var(--text-dim);white-space:nowrap}.log-error td{color:var(--error)}.log-warn td{color:var(--warn)}.tree{padding:2px 0}.tree-section{padding:4px 8px 2px;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim)}.tree-row{display:flex;align-items:center;gap:4px;height:var(--h-row);padding-right:6px;cursor:default;-webkit-user-select:none;user-select:none}.tree-row:hover{background:var(--surface-2)}.tree-row.sel{background:var(--accent);color:var(--accent-text)}.tree-row.sel .tree-stereo,.tree-row.sel .tree-badge{color:var(--accent-text)}.tree-row.muted-row .tree-label{color:var(--text-dim);font-style:italic}.tree-twisty{width:12px;font-size:9px;color:var(--text-dim);flex:none}.tree-icon{flex:none;color:var(--text-dim)}.tree-row.sel .tree-icon{color:var(--accent-text)}.tree-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-stereo{font-size:10px;color:var(--text-dim);flex:none}.tree-badge{margin-left:auto;font:10px var(--mono);color:var(--text-dim);flex:none}.tree-scroll{position:relative}.tree-row.active{box-shadow:inset 2px 0 0 var(--accent)}.tree-row.tree-header{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);cursor:default}.tree-row.tree-header:hover{background:none}.tree-row.tree-more{color:var(--accent);font-size:var(--ui-font-small)}.tree-row[draggable=true]{cursor:grab}.tree-edit{flex:1 1 auto;height:calc(var(--h-row) - 4px);border-color:var(--accent);min-width:0;background:var(--bg);color:var(--text)}.dock-busy{color:var(--text-dim)}.canvas.dropping{outline:1px dashed var(--accent);outline-offset:-2px}.right-dock .dock-body{font-size:var(--ui-font-small)}.right-dock .field,.right-dock .kv,.attr-row,.link-row{min-height:var(--h-row);margin:0}.right-dock .field:not(.check),.right-dock .kv{grid-template-columns:calc(var(--ui-font-size) * 7.5) 1fr}.prop-section{border-bottom:1px solid var(--line);padding:6px 8px 8px}.prop-section .dock-none{padding:0;line-height:var(--h-row)}.prop-section h4{margin:0 0 5px;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);font-weight:600;display:flex;align-items:center;justify-content:space-between;gap:6px}.prop-section h4 .attr-remove{text-transform:none;letter-spacing:normal}.field{display:grid;grid-template-columns:calc(var(--ui-font-size) * 6.2) 1fr;align-items:center;gap:6px;margin-bottom:4px}.field>span{color:var(--text-dim)}.field input,.field select{width:100%}.field.check{grid-template-columns:1fr auto}.field.check input[type=checkbox]{width:13px;height:13px;justify-self:end;margin:0}.swatch-field{align-items:start}.swatches{display:flex;flex-wrap:wrap;align-items:center;gap:3px}.swatch{position:relative;flex:none;width:15px;height:15px;padding:0;border:1px solid var(--line-strong);border-radius:2px}.swatch:hover{border-color:var(--text-dim)}.swatch.none{background:var(--surface)}.swatch.none:before{content:"";position:absolute;left:-1px;right:-1px;top:50%;height:1px;background:var(--line-strong);transform:rotate(-45deg)}.swatch.line{background:var(--surface-2)}.swatch.line:before{content:"";position:absolute;left:1px;right:1px;top:50%;height:2px;margin-top:-1px;background:var(--sw)}.swatch.on{outline:1px solid var(--accent);outline-offset:1px}.swatch.on:after{content:"";position:absolute;left:5px;top:2px;width:3px;height:7px;border:solid var(--text);border-width:0 1.5px 1.5px 0;transform:rotate(40deg)}.swatch-name{color:var(--text-dim);margin-left:3px}.kv{display:grid;grid-template-columns:calc(var(--ui-font-size) * 6.2) 1fr;gap:6px;align-items:center;min-height:18px}.kv>span:first-child{color:var(--text-dim)}.path{overflow-wrap:anywhere}.id-value{display:flex;gap:6px;align-items:center;overflow-wrap:anywhere}.ref{color:var(--accent);text-decoration:underline;font-size:var(--ui-font-small)}.icon-btn{display:grid;place-items:center;color:var(--text-dim);width:18px;height:18px;border-radius:2px;flex:none}.icon-btn:hover{color:var(--accent);background:var(--surface-3)}.icon-btn:disabled{opacity:.35}.icon-btn:disabled:hover{color:var(--text-dim);background:none}.endpoints{display:flex;gap:5px;align-items:center;flex-wrap:wrap}.link-row{display:grid;grid-template-columns:calc(var(--ui-font-size) * 7.5) 1fr auto;gap:6px;align-items:center}.link-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.attr-remove:disabled{color:var(--text-dim);text-decoration:none}.attr-row{display:grid;grid-template-columns:calc(var(--ui-font-size) * 7.5) 1fr auto;gap:6px;align-items:center}.attr-key{color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attr-key.ad-hoc{font-style:italic}.attr-key.attr-missing{color:var(--error)}.attr-key abbr{text-decoration:none;color:var(--error)}.bool-cell{display:flex;align-items:center;gap:6px}.end-block{border-left:2px solid var(--line);padding-left:8px;margin-bottom:8px}.end-title{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);margin-bottom:3px}.attr-divider{margin:6px 0 2px;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);border-top:1px solid var(--line);padding-top:4px}.attr-remove{font-size:10px;color:var(--text-dim);text-decoration:underline}.attr-remove:hover{color:var(--error)}.attr-slot{width:0}.attr-new{margin-top:5px}.attr-new input{width:100%}.disclose{color:var(--text-dim);font-size:10px;text-transform:uppercase;letter-spacing:.08em;font-weight:600}.node{cursor:default}.node text{pointer-events:none;-webkit-user-select:none;user-select:none}.node-label{font:500 var(--node-font-size) var(--font)}.node-stereotype{font:calc(var(--node-font-size) - 2px) var(--font)}.node-rule{stroke:var(--node-stroke)}.node.group .node-label{font-style:italic}.sel-outline{fill:none;stroke:var(--accent);stroke-width:1}.hover-outline{fill:none;stroke:var(--line-strong);stroke-width:1}.link-band{fill:none;stroke:var(--accent);stroke-width:7;stroke-opacity:.16;pointer-events:none}.attr{font:calc(var(--node-font-size) - 1px) var(--attr-font)}.attr-k,.attr-v{fill:currentColor}.edge{cursor:default;opacity:var(--edge-alpha, .62);color:var(--edge-color, var(--edge))}.edge.lit,.edge.sel{opacity:1}.edge.lit{color:var(--edge-color, var(--edge-lit))}.edge.sel{color:var(--accent)}.edge text{pointer-events:none;-webkit-user-select:none;user-select:none}.edge-line{stroke:currentColor;stroke-width:1}.edge.sel .edge-line{stroke:var(--accent);stroke-width:2}.edge-label{font:var(--edge-font-size) var(--font);fill:var(--edge-color, var(--text-dim))}.edge-label-bg{paint-order:stroke;stroke:var(--bg);stroke-width:3px;stroke-linejoin:round}.edge.sel .edge-label{fill:var(--accent)}.link-preview{color:var(--accent)}.link-preview>path{stroke:var(--accent);stroke-width:1.5;fill:none;stroke-dasharray:4 3;color:var(--accent)}.marquee{fill:var(--accent);fill-opacity:.08;stroke:var(--accent);stroke-width:1;stroke-dasharray:3 2}.inline-edit{width:100%;height:22px;background:var(--bg);border:1px solid var(--accent);border-radius:1px;padding:0 3px;font:500 var(--node-font-size) var(--font)}.statusbar{display:flex;align-items:center;gap:6px;padding:0 8px;height:var(--h-status);flex:0 0 var(--h-status);background:var(--surface-2);border-top:1px solid var(--line);color:var(--text-dim);font-size:var(--ui-font-small);white-space:nowrap}.status-dot{color:var(--text-faint)}.status-sel{overflow:hidden;text-overflow:ellipsis;max-width:38ch}.status-spacer{flex:1 1 auto}.status-msg{color:var(--text);overflow:hidden;text-overflow:ellipsis;max-width:50ch}.status-busy{color:var(--text-dim);font-style:italic}.status-cancel{border:none;background:none;padding:0 2px;color:var(--accent);text-decoration:underline}.status-ok{color:var(--presence)}.status-bad{color:var(--error)}.modal-backdrop{position:fixed;inset:0;background:#00000073;display:grid;place-items:center;z-index:100}.modal-backdrop.asking{z-index:110}.modal{background:var(--surface);border:1px solid var(--line-strong);min-width:min(calc(var(--ui-font-size) * 320 / 12),calc(100vw - 32px));max-width:min(calc(var(--ui-font-size) * 560 / 12),calc(100vw - 32px))}.modal.wide{max-width:min(calc(var(--ui-font-size) * 820 / 12),calc(100vw - 32px))}.modal-title{height:var(--h-row);display:flex;align-items:center;padding:0 10px;background:var(--surface-2);border-bottom:1px solid var(--line);font-size:var(--ui-font-small);text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim)}.modal-body{padding:12px 10px;max-height:70vh;overflow:auto}.modal-text{margin:0}.modal-actions{display:flex;justify-content:flex-end;gap:6px;padding:8px 10px;border-top:1px solid var(--line)}.modal-actions button{border:1px solid var(--line-strong);border-radius:2px;padding:2px 12px;height:calc(var(--h-control) + 2px);background:var(--surface-3)}.modal-actions button:hover{border-color:var(--accent)}.modal-actions .primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.modal-actions.inline{border-top:none;padding:4px 0 0}.modal-actions .danger{background:var(--error);color:#fff;border-color:var(--error)}.help-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}.help-grid h3{margin:0 0 5px;font-size:max(8px,calc(var(--ui-font-size) - 2px));text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);font-weight:600}.help-row{display:grid;grid-template-columns:calc(var(--ui-font-size) * 11) 1fr;gap:8px;align-items:baseline;margin-bottom:3px}.help-row kbd{justify-self:start}.stepper{display:flex;align-items:stretch;width:100%;height:var(--h-control);border:1px solid var(--line);border-radius:2px;overflow:hidden}.stepper button{flex:none;width:var(--h-control);display:grid;place-items:center;color:var(--text-dim)}.stepper button:hover:not(:disabled){color:var(--accent);background:var(--surface-3)}.stepper button:disabled{opacity:.35}.stepper input{flex:1 1 auto;min-width:0;width:auto;text-align:center;background:none;border:none;border-radius:0;border-left:1px solid var(--line);border-right:1px solid var(--line);font:var(--ui-font-small) var(--mono);height:auto;padding:0}.stepper input:focus{outline:none;background:var(--surface-2);border-color:var(--line)}.login-wrap{height:100%;display:grid;place-items:center}.login{display:flex;flex-direction:column;gap:13px;width:320px;background:var(--surface);border:1px solid var(--line-strong);padding:30px 28px 26px}.login h1{margin:0;font-family:"Michroma",var(--font);font-size:22px;font-weight:400;letter-spacing:.14em;color:var(--wordmark)}.login .tagline{margin:-6px 0 8px;color:var(--text-dim)}.login input{height:calc(var(--h-control) + 8px);padding:2px 8px}.login button[type=submit]{background:var(--accent);color:var(--accent-text);border:1px solid var(--accent);border-radius:2px;height:calc(var(--h-control) + 10px);margin-top:3px}.login .link{color:var(--text-dim);text-decoration:underline;padding:2px 0}.login .error,.login .notice,.login .small{margin:-4px 0 0}.error{color:var(--error);margin:0}.muted{color:var(--text-dim)}table.users{width:100%;border-collapse:collapse}table.users th{text-align:left;font-weight:500;color:var(--text-dim);padding:0;border-bottom:1px solid var(--line)}table.users th .col-sort{width:100%;text-align:left;background:none;border:0;font:inherit;color:inherit;letter-spacing:.03em;text-transform:uppercase;font-size:var(--ui-font-small);padding:3px 8px;cursor:pointer}table.users th .col-sort:hover{color:var(--text)}table.users td{padding:0 8px;height:var(--h-row);border-bottom:1px solid var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}table.users td.num{font-family:var(--mono)}table.users tr.is-pending{background:color-mix(in srgb,var(--accent) 8%,transparent)}table.users tr.is-selected{box-shadow:inset 0 0 0 1px var(--accent)}table.users tr:focus{outline:none}table.users tr:focus-visible{box-shadow:inset 0 0 0 1px var(--accent)}.modal .strip{display:flex;align-items:center;gap:8px;padding:4px 10px;border-bottom:1px solid var(--line)}.modal .strip-filter{flex:1;min-width:0;height:var(--h-control)}.modal .strip-label{display:flex;align-items:center;gap:4px;font-size:var(--ui-font-small);text-transform:uppercase;letter-spacing:.03em;color:var(--text-dim)}.modal .strip-label select{height:var(--h-control);font-size:var(--ui-font-size)}.modal .strip-count{font:var(--ui-font-small) var(--mono);color:var(--text-dim);min-width:9ch;text-align:right}.modal-actions.split{justify-content:space-between}.modal-actions .act-group{display:flex;gap:6px;flex-wrap:wrap}.modal-actions button:disabled{opacity:.4;cursor:default}.modal-actions .danger:disabled{background:var(--surface-3);color:var(--text-dim);border-color:var(--line-strong)}.modal-actions button:disabled:hover{border-color:var(--line-strong)}.modal .kv,.modal .field{display:grid;grid-template-columns:calc(var(--ui-font-size) * 9) 1fr;gap:8px;align-items:center;min-height:var(--h-row);margin:0 0 4px}.modal .field>span:first-child{color:var(--text-dim)}.modal .field input,.modal .field select{width:100%}.modal .prop-section h4{font-size:max(8px,calc(var(--ui-font-size) - 2px))}.modal .subject{margin:0 0 10px;font-family:var(--mono)}.modal .radio-row{display:flex;flex-direction:column;gap:5px;margin-bottom:10px}.modal .radio-row label,.modal .check{display:flex;align-items:center;gap:6px}.modal .check{margin-top:8px}.pw-result{display:flex;align-items:center;gap:8px}.pw-result .field{flex:1;margin:0}.pw-value{font-family:var(--mono);font-size:calc(var(--ui-font-size) + 1px);letter-spacing:.04em;padding:3px 8px;border:1px solid var(--line-strong);border-radius:2px;background:var(--surface-2);-webkit-user-select:all;user-select:all}.modal-backdrop.nested{background:color-mix(in srgb,#000 35%,transparent)}.pill{display:inline-block;padding:1px 7px;border-radius:9px;font-size:var(--ui-font-small);text-transform:uppercase;letter-spacing:.03em;border:1px solid var(--line)}.pill-active{color:var(--text);border-color:var(--line-strong)}.pill-pending{color:var(--text);border-color:var(--text);font-weight:600}.pill-disabled{color:var(--text-dim);border-color:var(--line)}.badge{margin-left:8px;padding:1px 7px;border-radius:9px;font-size:var(--ui-font-small);background:var(--accent);color:var(--accent-text)}.notice{margin:0;padding:6px 8px;border-radius:4px;font-size:calc(var(--ui-font-size) + 1px);color:var(--presence);background:color-mix(in srgb,var(--presence) 12%,transparent)}.small{font-size:var(--ui-font-size)}table.colmap,table.preview{width:100%;border-collapse:collapse}table.colmap th,table.preview th{text-align:left;font-weight:500;color:var(--text-dim);padding:3px 6px;border-bottom:1px solid var(--line);white-space:nowrap}table.colmap td,table.preview td{padding:3px 6px;border-bottom:1px solid var(--line)}table.colmap input[type=text],table.colmap input:not([type]){width:100%}table.colmap tr.is-skipped td:not(:first-child){opacity:.45}table.colmap .sample{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-scroll{max-height:190px;overflow:auto;border:1px solid var(--line)}table.preview td{white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis}table.preview th.is-name{color:var(--accent)}table.preview th.is-skipped,table.preview td.is-skipped{opacity:.35;text-decoration:line-through}table.api-keys{margin-bottom:8px;table-layout:auto}table.api-keys th{padding:3px 8px;font-weight:400}table.api-keys td{overflow:visible;text-overflow:clip}table.api-keys td:first-child{max-width:14ch;overflow:hidden;text-overflow:ellipsis}table.api-keys tr.is-expired td{color:var(--text-dim)}.key-section .field select{flex:1;height:var(--h-control)}.key-result{margin-bottom:8px}.key-result .pw-value{font-size:inherit;letter-spacing:0;word-break:break-all}.share-add{display:flex;gap:6px;margin:8px 0}.share-add input[type=email]{flex:1 1 auto}.tree-lock{color:var(--text-faint);margin-right:3px;font-size:10px}.doc-attr{display:flex;align-items:center;gap:6px;min-width:0}.doc-attr-open,.doc-attr-new{display:flex;align-items:center;gap:5px;min-width:0;font-size:var(--ui-font-small);color:var(--text);border:1px solid var(--line);border-radius:2px;height:var(--h-control);padding:0 6px;background:var(--surface-2)}.doc-attr-open:hover,.doc-attr-new:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.doc-attr-new{color:var(--text-dim)}.doc-attr-new:disabled{opacity:.5}.doc-attr-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.doc-icon{flex:none}.attr-hint{font-size:10px;color:var(--text-faint);line-height:1.35}.canvas-tab.document .canvas-tab-name{font-style:italic}.tab-glyph{margin-right:5px;color:var(--text-faint);font-style:normal}.canvas-tab.active .tab-glyph{color:var(--text-dim)}.doc-editor{flex:1 1 auto;display:flex;flex-direction:column;min-height:0}.doc-head{display:flex;align-items:center;gap:8px;padding:0 8px;height:var(--h-toolbar);flex:0 0 auto;background:var(--surface-2);border-bottom:1px solid var(--line)}.doc-title{flex:1 1 320px;max-width:480px;min-width:120px;background:none;border:1px solid transparent;font-size:var(--ui-font-size);color:var(--text);font-weight:600}.doc-title:hover{border-color:var(--line)}.doc-state,.doc-count{font-size:10px;color:var(--text-dim);white-space:nowrap}.doc-modes{display:flex;border:1px solid var(--line);border-radius:2px}.doc-mode{font-size:10px;padding:0 7px;height:calc(var(--h-control) - 2px);color:var(--text-dim);border-right:1px solid var(--line)}.doc-modes .doc-mode:last-child{border-right:none}.doc-mode.active{background:var(--surface-3);color:var(--text)}.doc-delete{font-size:10px;color:var(--text-dim);text-decoration:underline}.doc-delete:hover{color:var(--error)}.doc-toolbar{display:flex;align-items:center;gap:1px;padding:0 6px;height:var(--h-row);flex:0 0 auto;background:var(--surface);border-bottom:1px solid var(--line)}.doc-tool{min-width:22px;height:calc(var(--h-row) - 4px);padding:0 5px;color:var(--text-dim);font-size:var(--ui-font-small);border-radius:2px}.doc-tool:hover{background:var(--surface-3);color:var(--text)}.doc-tool.bold{font-weight:700}.doc-tool.italic{font-style:italic}.doc-tool.strike{text-decoration:line-through}.doc-sep{width:1px;height:14px;background:var(--line);margin:0 5px}.doc-body{flex:1 1 auto;display:flex;min-height:0}.doc-body.mode-split .doc-source,.doc-body.mode-split .doc-preview{flex:1 1 50%;min-width:0}.doc-body.mode-write .doc-source,.doc-body.mode-read .doc-preview{flex:1 1 100%}.doc-source{border:none;border-right:1px solid var(--line);border-radius:0;resize:none;padding:10px 12px;background:var(--bg);color:var(--text);font:var(--ui-font-size)/1.6 var(--mono);tab-size:2}.doc-source:focus{outline:none;border-color:var(--line)}.doc-preview{overflow:auto;padding:10px 16px;background:var(--bg)}.markdown{font-size:calc(var(--ui-font-size) + 1px);line-height:1.6;color:var(--text);max-width:68ch}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{margin:1.2em 0 .45em;line-height:1.25;font-weight:600}.markdown>:first-child{margin-top:0}.markdown h1{font-size:1.5em;border-bottom:1px solid var(--line);padding-bottom:.2em}.markdown h2{font-size:1.25em;border-bottom:1px solid var(--line);padding-bottom:.15em}.markdown h3{font-size:1.1em}.markdown h4,.markdown h5,.markdown h6{font-size:1em;color:var(--text-dim)}.markdown p{margin:0 0 .8em}.markdown ul,.markdown ol{margin:0 0 .8em;padding-left:1.5em}.markdown li{margin:.15em 0}.markdown a{color:var(--accent);text-decoration:underline}.markdown code{font:var(--ui-font-small) var(--mono);background:var(--surface-2);border:1px solid var(--line);border-radius:2px;padding:0 3px}.markdown pre{background:var(--surface);border:1px solid var(--line);border-radius:2px;padding:8px 10px;overflow-x:auto;margin:0 0 .8em}.markdown pre code{background:none;border:none;padding:0}.markdown blockquote{margin:0 0 .8em;padding:0 0 0 10px;border-left:2px solid var(--line-strong);color:var(--text-dim)}.markdown hr{border:none;border-top:1px solid var(--line);margin:1.2em 0}.markdown table{border-collapse:collapse;margin:0 0 .8em;font-size:var(--ui-font-small)}.markdown th,.markdown td{border:1px solid var(--line);padding:3px 7px;text-align:left}.markdown th{background:var(--surface-2);font-weight:600}.markdown del{color:var(--text-dim)}.chat-dock{border-right:1px solid var(--line)}.chat-dock.dropping{box-shadow:inset 0 0 0 1px var(--accent)}body.ref-dragging,body.ref-dragging *{-webkit-user-select:none!important;user-select:none!important}.chat-head{align-items:center;gap:2px;padding:0 2px}.chat-head-btn{display:grid;place-items:center;width:calc(var(--h-row) - 4px);height:calc(var(--h-row) - 4px);color:var(--text-dim);border-radius:2px;flex:none}.chat-head-btn:hover:not(:disabled){color:var(--text);background:var(--surface-3)}.chat-head-btn.on{color:var(--accent)}.chat-head-btn:disabled{opacity:.4}.chat-title{flex:1 1 auto;min-width:0;padding:0 4px;font-size:var(--ui-font-small);color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-history{display:flex;flex-direction:column;flex:0 1 auto;max-height:45%;min-height:0;border-bottom:1px solid var(--line);background:var(--surface)}.chat-history-list{overflow:auto;min-height:0}.chat-history-row{position:relative;display:flex;align-items:center;gap:6px;height:var(--h-row);padding:0 8px;cursor:default}.chat-history-row .tree-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-when{flex:none;font:var(--ui-font-small) var(--mono);color:var(--text-dim)}.chat-log{flex:1 1 auto;overflow-y:auto;min-height:0;padding:8px 8px 4px;display:flex;flex-direction:column;gap:6px;background:var(--bg)}.chat-empty{margin:auto}.chat-link-btn{padding:3px 10px;border:1px solid var(--line-strong);border-radius:2px;color:var(--text);background:var(--surface-2)}.chat-link-btn:hover{border-color:var(--accent)}.chat-msg{display:flex;flex-direction:column;min-width:0;position:relative}.chat-msg.user{align-items:flex-end}.chat-msg.assistant{align-items:stretch}.chat-bubble{position:relative;border:1px solid var(--line);border-radius:2px;padding:5px 8px;min-width:0;max-width:100%}.chat-msg.user .chat-bubble{background:var(--surface-3);max-width:88%}.chat-msg.assistant .chat-bubble{background:var(--surface)}.chat-user-text{white-space:pre-wrap;overflow-wrap:anywhere}.markdown.chat-md{font-size:var(--ui-font-size);line-height:1.5;max-width:none;overflow-wrap:anywhere}.markdown.chat-md h1,.markdown.chat-md h2{font-size:1.15em}.markdown.chat-md h3{font-size:1.05em}.markdown.chat-md p:last-child,.markdown.chat-md ul:last-child,.markdown.chat-md ol:last-child{margin-bottom:0}.markdown.chat-md pre{font-size:var(--ui-font-small)}.markdown.chat-md table{display:block;overflow-x:auto}.chat-actions{display:flex;gap:1px;opacity:0;transition:opacity .1s}.chat-msg.user>.chat-actions{margin-top:2px}.chat-bubble>.chat-actions{position:absolute;right:2px;bottom:2px;background:var(--surface)}.chat-msg:hover .chat-actions,.chat-actions:focus-within{opacity:1}.chat-actions button{display:grid;place-items:center;width:20px;height:18px;color:var(--text-dim);border-radius:2px}.chat-actions button:hover:not(:disabled){color:var(--text);background:var(--surface-3)}.chat-actions button:disabled{opacity:.35}.chat-thought{display:flex;align-items:center;gap:4px;align-self:flex-start;font-size:var(--ui-font-small);color:var(--text-dim);padding:1px 2px}.chat-thought:hover{color:var(--text)}.chat-thinking-text{margin:2px 0 4px;padding:4px 8px;border-left:2px solid var(--line-strong);color:var(--text-dim);font-size:var(--ui-font-small);white-space:pre-wrap;overflow-wrap:anywhere;max-height:320px;overflow:auto}.chat-tool{border:1px solid var(--line);border-radius:2px;background:var(--surface)}.chat-tool.error{border-color:var(--error)}.chat-tool-head{display:flex;align-items:center;gap:6px;width:100%;min-width:0;height:var(--h-row);padding:0 6px;text-align:left}.chat-tool-head:disabled{cursor:default}.chat-tool-head:hover:not(:disabled){background:var(--surface-2)}.chat-tool-state{display:grid;place-items:center;flex:none;color:var(--text-dim)}.chat-tool.done .chat-tool-state{color:var(--text)}.chat-tool.error .chat-tool-state{color:var(--error)}.chat-tool-name{flex:none;font:var(--ui-font-small) var(--mono);color:var(--text)}.chat-tool-sum{flex:1 1 auto;min-width:0;font-size:var(--ui-font-small);color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-tool.error .chat-tool-sum{color:var(--error)}.chat-tool-body{border-top:1px solid var(--line);padding:3px 0;max-height:260px;overflow:auto;font:var(--ui-font-small)/1.5 var(--mono)}.chat-tool-args{padding:0 8px 2px;color:var(--text-dim);overflow-wrap:anywhere}.chat-tool-err{padding:0 8px;color:var(--error);white-space:pre-wrap;overflow-wrap:anywhere}.chat-tool-line{padding:0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:default}.chat-tool-line:hover{background:var(--surface-2)}.chat-notice{font-size:var(--ui-font-small);color:var(--text-dim);padding:0 2px}.chat-notice.error{color:var(--error);white-space:pre-wrap;overflow-wrap:anywhere}.chat-live{flex:0 0 auto;border-top:1px solid var(--line);background:var(--surface);padding:4px 8px 5px;display:flex;flex-direction:column;gap:3px}.chat-live-head{display:flex;align-items:center;gap:8px;font-size:var(--ui-font-small);color:var(--text-dim)}.chat-live-phase{flex:1 1 auto;color:var(--text)}.chat-live-time{font-family:var(--mono)}.chat-live-for{margin-left:8px;font-family:var(--mono);color:var(--text-dim)}.chat-live.idle .chat-live-phase{color:var(--text-dim)}.chat-live-thinking{max-height:96px;overflow:hidden auto;white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--ui-font-small);line-height:1.45;color:var(--text-dim);border-left:2px solid var(--line-strong);padding-left:6px}.chat-live-text{max-height:120px;overflow:hidden auto;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text);padding-left:8px}.chat-composer{flex:0 0 auto;border-top:1px solid var(--line);background:var(--surface);padding:6px;display:flex;flex-direction:column;gap:4px}.chat-refs{display:flex;flex-wrap:wrap;gap:3px}.chat-bubble .chat-refs{margin-bottom:3px}.chat-ref{display:inline-flex;align-items:center;gap:3px;max-width:100%;border:1px solid var(--line-strong);border-radius:2px;padding:0 2px 0 5px;height:18px;font:var(--ui-font-small) var(--mono);color:var(--text);background:var(--surface-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-bubble .chat-ref{padding-right:5px}.chat-ref.editing{font-family:var(--font);color:var(--accent);border-color:var(--accent)}.chat-ref button{display:grid;place-items:center;width:14px;height:14px;color:var(--text-dim);flex:none}.chat-ref button:hover{color:var(--text)}.chat-input{width:100%;resize:none;min-height:44px;padding:5px 7px;font:var(--ui-font-size)/1.45 var(--font);color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:2px}.chat-input:focus{outline:none;border-color:var(--accent)}.chat-foot{display:flex;align-items:center;gap:8px;min-width:0}.chat-model{flex:0 1 auto;min-width:0;font:var(--ui-font-small) var(--mono);color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:1px 2px;border-radius:2px}select.chat-model{appearance:none;border:0;background:transparent;cursor:pointer;height:auto;max-width:60%}select.chat-model:hover,select.chat-model:focus-visible{color:var(--text);background:var(--surface-3);outline:none}select.chat-model option{color:var(--text);background:var(--surface)}.chat-usage{flex:none;font:var(--ui-font-small) var(--mono);color:var(--text-dim)}.chat-send{margin-left:auto;flex:none;display:grid;place-items:center;width:26px;height:22px;border-radius:2px;color:var(--accent-text);background:var(--accent)}.chat-send:disabled{background:var(--surface-3);color:var(--text-faint)}.chat-send.stop{background:var(--text);color:var(--surface)}.chat-ghost{position:fixed;z-index:50;pointer-events:none;padding:1px 6px;font:var(--ui-font-small) var(--mono);color:var(--accent-text);background:var(--accent);border-radius:2px;white-space:nowrap}.field-row{display:flex;align-items:center;gap:4px;min-width:0}.field-row>input,.field-row>select{flex:1 1 0;min-width:0;width:auto}.modal.options{min-width:min(calc(var(--ui-font-size) * 440 / 12),calc(100vw - 32px))}.field-btn{flex:none;padding:0 6px;height:var(--h-control);color:var(--text-dim);border:1px solid var(--line);border-radius:2px}.field-btn:hover{color:var(--text);border-color:var(--line-strong)}.field-icon{flex:none;width:var(--h-control);height:var(--h-control);border:1px solid var(--line);border-radius:2px}.field-note{font-size:var(--ui-font-small);color:var(--text-dim);padding-left:calc(var(--ui-font-size) * 9 + 8px)}.range-value{flex:none;width:4.5em;text-align:right;font:var(--ui-font-small) var(--mono);color:var(--text)}input[type=range].range{-webkit-appearance:none;appearance:none;height:2px;padding:0;border:none;background:var(--line-strong);border-radius:0;margin:0 2px}input[type=range].range::-webkit-slider-thumb{-webkit-appearance:none;width:10px;height:14px;border-radius:1px;background:var(--text);border:none;cursor:pointer}input[type=range].range::-moz-range-thumb{width:10px;height:14px;border-radius:1px;background:var(--text);border:none;cursor:pointer}input[type=range].range:focus-visible::-webkit-slider-thumb{background:var(--accent)}
