:root{--accent:#1f6f5c;--accent-2:#e3f1ed;--bg:#f3f4f5;--panel:#fff;--line:#d9dcdf;--text:#1d2125;--muted:#6b737b;--sel:#1a6fe0;--err:#d03030;--warn:#c77700;--ok:#1f8a4c;color:var(--text);font:12px/1.35 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);overflow:hidden}a{color:var(--accent);cursor:pointer;text-decoration:none}a:hover{text-decoration:underline}h2{margin:0;font-size:16px}h3{margin:0 0 8px;font-size:14px}h4{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:12px 0 5px;font-size:10px}h4:first-child{margin-top:2px}small{color:var(--muted);font-size:10.5px}.muted{color:var(--muted)}.grow{flex:1}.center{place-items:center;height:100%;display:grid}button,.btn,select,input,textarea{font:inherit;color:inherit}button,.btn{border:1px solid var(--line);cursor:pointer;white-space:nowrap;background:#fff;border-radius:4px;align-items:center;gap:4px;height:24px;padding:0 9px;display:inline-flex}button:hover:not(:disabled),.btn:hover{background:#f1f3f4;text-decoration:none}button:disabled{opacity:.45;cursor:default}button.primary,.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover:not(:disabled),.btn.primary:hover{background:#185a4a}button.danger,a.danger{color:var(--err)}button.ghost{background:0 0;border:0;padding:0 5px}input,select,textarea{border:1px solid var(--line);background:#fff;border-radius:4px;min-width:0;height:24px;padding:0 6px}textarea{resize:vertical;width:100%;height:auto;padding:4px 6px}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-2);border-color:var(--accent)}input:disabled,select:disabled,textarea:disabled{color:var(--muted);background:#f6f7f8}fieldset{border:0;margin:0;padding:0;display:contents}.logo{color:var(--text);align-items:center;gap:7px;display:inline-flex}.logo b{letter-spacing:-.01em;font-size:14px}.chip{white-space:nowrap;background:#eceef0;border-radius:10px;padding:2px 7px;font-size:11px}.chip.edit{background:var(--accent-2);color:var(--accent);font-weight:600}.chip.lock{color:#8a5a00;background:#fdf0d8}.chip.ro{color:#2a4b9b;background:#e6ecfb}.chip.view{color:#8a5a00;background:#fdf0d8;font-weight:600}.chip svg.lock{vertical-align:-1px;margin-right:4px}.swatch{vertical-align:-1px;border:1px solid #0003;border-radius:2px;width:9px;height:9px;margin-right:5px;display:inline-block}.hint{color:var(--muted);padding:3px 0;font-size:11px}.hint.ok{color:var(--ok)}.link{margin-top:8px;font-size:11px;display:inline-block}.topbar{background:var(--panel);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:5px;height:34px;padding:0 6px;display:flex;overflow:hidden}.topbar .brand{display:flex}.topbar .brand:hover{text-decoration:none}.topbar nav{gap:2px;margin-left:12px;display:flex}.topbar nav a{color:var(--text);border-radius:4px;padding:4px 9px}.topbar nav a.on{background:var(--accent-2);color:var(--accent);font-weight:600}.topbar nav a:hover{background:#f1f3f4;text-decoration:none}.topbar .sep{background:var(--line);flex:none;width:1px;height:18px;margin:0 3px}.topbar .fname{background:0 0;border-color:#0000;width:170px;font-weight:600}.topbar .fname:hover:not(:disabled){border-color:var(--line)}button.ico{background:0 0;border-color:#0000;flex:none;justify-content:center;width:26px;padding:0}button.ico.on,button.tgl.on{background:var(--accent-2);color:var(--accent);border-color:#b9d8d0}button.tgl{color:var(--muted);background:0 0;border-color:#0000;padding:0 7px;font-size:11px}button.tgl.on{font-weight:600}button.drc{border-color:var(--line);color:var(--ok)}button.drc.err{color:#fff;background:var(--err);border-color:var(--err)}button.drc.warn{color:#fff;background:var(--warn);border-color:var(--warn)}.tsel{max-width:130px}.topbar select.mode{flex:none;width:96px;font-weight:600}.avatars{display:flex}.avatar{background:#c9d3dc;border:2px solid #fff;border-radius:50%;place-items:center;width:22px;height:22px;margin-left:-4px;font-size:10px;font-weight:700;display:grid;overflow:hidden}.avatar.editor{border-color:var(--accent)}.avatar img{width:100%;height:100%}.editor{flex-direction:column;height:100%;display:flex}.work{flex:1;min-height:0;display:flex}.stage{flex:1;min-width:0;display:flex;position:relative}.editor.ro .stage{box-shadow:inset 0 0 0 2px #e0b25c}.editor.ro .stage .canvas{margin:2px}.ro-badge{z-index:2;color:#8a5a00;background:#fdf0d8;border:1px solid #e0b25c;border-radius:10px;align-items:center;gap:5px;padding:2px 8px;font-size:11px;font-weight:600;display:flex;position:absolute;top:8px;left:8px}.ro-badge a{color:var(--accent);cursor:pointer;font-weight:600;text-decoration:underline}.editor.ro .panel .item,.editor.ro .tnode[draggable=true],.editor.ro .panel .sub{cursor:not-allowed}.ptree,.panel .item{-webkit-user-select:none;user-select:none}.bottombar{background:var(--panel);border-top:1px solid var(--line);flex:none;align-items:stretch;height:26px;display:flex}.pages{scrollbar-width:none;flex:1;display:flex;overflow-x:auto}.ptab{border-right:1px solid var(--line);cursor:pointer;white-space:nowrap;color:var(--muted);border-width:0 1px 0 0;border-radius:0;align-items:center;gap:6px;height:auto;padding:0 10px;display:flex}.ptab.on{background:var(--bg);color:var(--text);box-shadow:inset 0 2px 0 var(--accent);font-weight:600}.ptab.sig,.pfolder.sig{color:#8a5a00;background:#fff4d6}.ptab.sig.on{background:#ffe9ad}.ptab.off{color:#b4b9c0;cursor:default;font-style:italic}.ptab.drop-before{box-shadow:inset 2px 0 0 var(--accent)}.ptab.drop-after{box-shadow:inset -2px 0 0 var(--accent)}.pfolder{border-right:1px solid var(--line);cursor:pointer;white-space:nowrap;color:var(--text);background:var(--accent-2);-webkit-user-select:none;user-select:none;align-items:center;gap:4px;padding:0 8px 0 6px;font-weight:600;display:flex}.pfolder .caret{color:var(--muted);font-size:10px}.pfolder small{color:var(--muted);font-weight:400}.pfolder.drop-in{box-shadow:inset 0 0 0 2px var(--accent)}.ptab-tools a{color:var(--muted);padding:0 3px;font-weight:400}.ptab-tools a:hover{color:var(--text);text-decoration:none}.search{border-left:1px solid var(--line);align-items:center;padding:0 4px;display:flex;position:relative}.search input{background:var(--bg);border-color:#0000;width:200px;height:20px}.results{border:1px solid var(--line);z-index:20;background:#fff;border-radius:6px;width:300px;max-height:320px;position:absolute;bottom:26px;right:0;overflow:auto;box-shadow:0 6px 24px #0002}.results>div{cursor:pointer;flex-direction:column;padding:5px 9px;display:flex}.results>div:hover{background:var(--accent-2)}.panel{background:var(--panel);flex-direction:column;flex:none;min-height:0;display:flex}.panel.left{border-right:1px solid var(--line);width:204px}.panel.right{border-left:1px solid var(--line);width:248px}.tabs{border-bottom:1px solid var(--line);flex:none;display:flex}.tabs button{height:26px;color:var(--muted);background:0 0;border:0;border-radius:0;flex:1;justify-content:center}.tabs button.on{color:var(--text);box-shadow:inset 0 -2px 0 var(--accent);font-weight:600}.badge{color:#fff;background:var(--warn);border-radius:8px;margin-left:4px;padding:0 5px;font-size:10px;font-style:normal}.badge.err{background:var(--err)}.panel{position:relative}.splitter{cursor:col-resize;z-index:5;width:6px;position:absolute;top:0;bottom:0}.splitter:hover,body.resizing .splitter{background:var(--accent-2)}body.resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}body.resizing *{cursor:col-resize!important}.panel-body{flex:1;padding:7px 8px;overflow:auto}.filter{width:100%;margin-bottom:4px}.group{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:9px 0 3px;font-size:10px}.group.toggle{cursor:pointer;-webkit-user-select:none;user-select:none}.group.toggle em{font-style:normal}.item{border:1px solid var(--line);background:#fff;border-radius:4px;flex-direction:column;margin-bottom:3px;padding:3px 6px;display:flex}.item[draggable=true],.item.grab{cursor:grab}.item[draggable=true]:hover,.item.grab:hover{border-color:var(--accent);background:var(--accent-2)}.item.grab{-webkit-user-select:none;user-select:none;touch-action:none}.tree{margin-bottom:6px}.item{position:relative}.item .edit{color:var(--muted);visibility:hidden;cursor:pointer;border-radius:3px;padding:0 2px;font-size:11px;text-decoration:none;position:absolute;top:2px;right:4px}.item:hover .edit{visibility:visible}.item .edit:hover{color:var(--accent);background:#fff}.fold{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:3px;align-items:center;gap:4px;padding:2px;font-weight:600;display:flex}.fold:hover{background:#f1f3f4}.fold i{width:10px;color:var(--muted);font-size:10px;font-style:normal}.fold small{color:var(--muted);margin-left:auto;font-weight:400}.fold-body{border-left:1px solid var(--line);margin-left:5px;padding-left:10px}.tnode{cursor:pointer;white-space:nowrap;border-radius:3px;align-items:center;gap:3px;padding:1px 4px 1px 2px;display:flex}.tnode:hover{background:#f1f3f4}.tnode.on{background:var(--accent-2);outline:1px solid var(--accent)}.tnode i{width:10px;color:var(--muted);flex:none;font-size:10px;font-style:normal}.tnode span{text-overflow:ellipsis;flex:0 auto;max-width:80%;overflow:hidden}.tnode em{color:var(--muted);font-style:normal}.tnode small{text-align:right;min-width:0;color:var(--muted);text-overflow:ellipsis;flex:1 1 0;padding-left:6px;overflow:hidden}.tnode[draggable=true]{cursor:grab}.tnode.over,.ptree.over{background:var(--accent-2);outline:1px dashed var(--accent)}.tnode b.unplaced{color:var(--warn);font-weight:600}.fold.over,.group.over{background:var(--accent-2);outline:1px dashed var(--accent)}.fold-acts{gap:2px;display:none}.fold:hover .fold-acts{display:inline-flex}.fold-act{color:var(--muted);cursor:pointer;text-transform:none;letter-spacing:0;border-radius:3px;padding:0 3px;font-size:11px;font-weight:400}.fold-act:hover{color:var(--accent);background:#fff}.group .fold-act{float:right}.fold-input{width:100%;min-width:0;height:18px;padding:0 3px;font-size:12px}.fold-new{padding:2px 0 3px 14px}.list tr.grp td{cursor:pointer;-webkit-user-select:none;user-select:none;background:#f6f7f8;font-weight:600}.list tr.grp i{width:12px;color:var(--muted);font-size:10px;font-style:normal;display:inline-block}.sub{border-radius:3px;justify-content:space-between;gap:6px;padding:2px 6px 2px 14px;display:flex}.sub[draggable=true]{cursor:grab;background:#fff8e6;margin-bottom:1px}.sub.placed{cursor:pointer;color:var(--muted)}.sub.placed:hover{background:#f1f3f4}.field{flex-direction:column;gap:2px;margin-bottom:5px;display:flex}.field>span{color:var(--muted);font-size:10.5px}.field input,.field select{width:100%}.row2{grid-template-columns:1fr 1fr;gap:6px;display:grid}.btns{flex-wrap:wrap;gap:5px;margin:6px 0;display:flex}.btns.end{justify-content:flex-end;margin-top:12px}.check{align-items:center;gap:6px;padding:2px 0;display:flex}.check input{height:auto}dl{grid-template-columns:78px 1fr;gap:2px 6px;margin:4px 0;display:grid}dt{color:var(--muted)}dd{overflow-wrap:anywhere;margin:0}table.pins{border-collapse:collapse;width:100%}table.pins td,table.pins th{text-align:left;padding:1px 2px;font-size:11px;font-weight:400}table.pins th{color:var(--muted)}table.pins td.n{width:16px;color:var(--muted);text-align:right}table.pins input,table.pins select{width:100%;height:21px;padding:0 4px}.issue{cursor:pointer;border-radius:4px;gap:6px;padding:4px 5px;font-size:11.5px;display:flex}.issue:hover{background:#f1f3f4}.issue i{background:var(--warn);border-radius:50%;flex:none;width:7px;height:7px;margin-top:4px}.issue.error i{background:var(--err)}.version{border-left:3px solid #0000;border-radius:4px;padding:5px 6px}.version:hover,.version.on{background:#f1f3f4}.version.release{border-left-color:var(--accent)}.v-head{cursor:pointer;flex-direction:column;display:flex}.v-actions{gap:9px;margin-top:1px;font-size:10.5px;display:flex}.canvas{background:#dfe2e5;flex:1;min-width:0;position:relative;overflow:hidden}.canvas svg{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;font-family:Arial,Helvetica,sans-serif;display:block}.canvas.tool-wire svg,.canvas.tool-cable svg,.canvas.tool-ref svg,.canvas.tool-label svg,.canvas.tool-text svg,.canvas.tool-shield svg,.canvas.tool-twist svg,.canvas.tool-wire svg *,.canvas.wiring svg,.canvas.wiring svg *{cursor:crosshair}.canvas-status{color:var(--muted);pointer-events:none;font-variant-numeric:tabular-nums;font-size:10px;position:absolute;bottom:4px;left:6px}.paper{fill:#fff;stroke:#b9bec4;stroke-width:1px}.grid-minor{fill:none;stroke:#edf0f2;stroke-width:.6px}.grid-major{fill:none;stroke:#dde1e5;stroke-width:.8px}.tpl-line{fill:none;stroke:#222;stroke-width:.8px}.tpl-frame{fill:none;stroke:#222;stroke-width:1.4px}.tpl-block{fill:#fff;stroke:#222;stroke-width:1.4px}.tpl-zone{fill:#222}.tpl-label{fill:#555}.tpl-value{fill:#111}.block-body{fill:#fff;stroke:#111;stroke-width:1.2px}.block.sel .block-body{stroke:var(--sel);stroke-width:1.8px}.block-name{fill:#111;font-size:9px}.des{fill:#111;font-size:9px;font-weight:700}.des.big{font-size:11px}.des.small{font-size:7.5px}.pn{fill:#333;font-size:6.5px}.conn-body{fill:#fff;stroke:#111;stroke-width:1px}.conn-bracket{fill:none;stroke:#111;stroke-width:.8px}.mate-preview{opacity:.55;pointer-events:none}.conn.sel .conn-body{stroke:var(--sel);stroke-width:1.8px}.conn.error .conn-body,.block.error .block-body{stroke:var(--err)}.conn.warn .conn-body{stroke:var(--warn)}.pin-no{fill:#111;font-size:8.5px}.pin-name{fill:#111;font-size:9px}.conn>.des{font-size:16px;font-weight:400}.conn>.pn,.conn-des{fill:#111;font-size:12px}.canvas.tool-select [data-h=connPn]{cursor:move}.sym{fill:none;stroke:#111;stroke-width:.9px}.sym-fill{fill:#111}.sym.none{stroke:#b0b5ba}.block,.conn,.note,.junc,.wlabel{cursor:default}.wire .line{fill:none;stroke:#111;stroke-width:1.1px;stroke-linejoin:round}.wire .hit,.cable .hit{fill:none;stroke:#0000;stroke-width:9px}.wire.sel .line{stroke-width:1.8px;stroke:var(--sel)!important}.wire.error .line{stroke:var(--err)}.wire.warn .line{stroke-dasharray:none}.free-end{fill:#fff;stroke:var(--warn);stroke-width:1px}.seg-handle{stroke:#0000;stroke-width:9px}.seg-handle.ns{cursor:ns-resize}.seg-handle.ew{cursor:ew-resize}.free-handle{fill:#0000;cursor:move}.free-handle:hover{fill:#1a73e840}.tap-handle{stroke:#0000;stroke-width:9px;cursor:move}.tap-handle:hover{stroke:#1a73e840}.cable .line{fill:none;stroke:#111;stroke-width:3.2px;stroke-linejoin:round;stroke-linecap:round}.cable.sel .line{stroke:var(--sel)}.cable.error .line{stroke:var(--err)}.cable-end{fill:#fff;stroke:#333;stroke-width:1.4px}.cable.sel .cable-end{stroke:var(--sel);cursor:move}.cable-label{fill:#111;font-size:6.5px}.cable.sel .cable-label{fill:var(--sel);cursor:move;font-weight:700}.shape{fill:none;stroke:#111;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round}.shape.fill{fill:#111}.shape.hatch{fill:none;stroke-width:.5px}.shape-text{fill:#111}.sym-hit{fill:#0000;stroke:none}.sym-value{fill:#111;font-size:8px}.symi.sel .shape,.sref.sel .shape{stroke:var(--sel)}.symi.sel .shape.fill{fill:var(--sel)}.symi.error .shape{stroke:var(--err)}.sref text{fill:#111;font-size:9px}.sref.sel text{fill:var(--sel)}.sref.open text,.sref.warn text{fill:var(--warn)}.junc{fill:#111}.junc.sel{fill:var(--sel)}.wlabel text{fill:#111;font-size:6.5px}.slash{stroke:#111;stroke-width:1px}.wlabel.sel text{fill:var(--sel);font-weight:700}.wlabel.sel .slash{stroke:var(--sel)}.label-preview{opacity:.45}.label-preview .slash{stroke:var(--sel)}.label-preview text{fill:var(--sel)}.note{fill:#111}.note.sel{fill:var(--sel)}.handle{fill:#fff;stroke:var(--sel);stroke-width:1px;cursor:nwse-resize}.preview{fill:none;stroke:var(--sel);stroke-width:1.2px;stroke-dasharray:4 3;pointer-events:none}.preview.cable{stroke-width:5px;opacity:.5;stroke-dasharray:none}.pin-hit{fill:#0000}.pin-hit.ctrl-hi{fill:#1a73e833;stroke:var(--accent);stroke-width:.8px}.conn.ctrl-hi .conn-body,.block.ctrl-hi .block-body{stroke:var(--accent);stroke-width:2px;fill:#e8f0fe}.canvas.ctrl-pick,.canvas.ctrl-pick svg *{cursor:pointer!important}table.pins tr.on td{background:var(--accent-2)}table.pins tr.on td.n{color:var(--accent);font-weight:600}.pin-hi{fill:#1a73e822;stroke:var(--accent);stroke-width:1.5px;pointer-events:none}.seat-slots rect{fill:#b5651d22;stroke:#b5651d;stroke-width:.8px;stroke-dasharray:2 1.5;pointer-events:none}.seat-slots rect.used{fill:none;stroke-dasharray:none;opacity:.6}.snap-ring{fill:#1f8a4c33;stroke:var(--ok);stroke-width:1.2px;pointer-events:none}.snap-ring.bad{fill:#c7770033;stroke:var(--warn)}.snap-dot{fill:var(--sel);pointer-events:none}.marquee{fill:#1a6fe014;stroke:var(--sel);stroke-width:.8px;stroke-dasharray:3 2;vector-effect:non-scaling-stroke}.menu{z-index:30;border:1px solid var(--line);background:#fff;border-radius:6px;flex-direction:column;min-width:170px;padding:4px;display:flex;position:absolute;box-shadow:0 6px 24px #0003}.menu button{border:0;justify-content:flex-start}.menu-title,.menu-empty{color:var(--muted);padding:3px 8px;font-size:10.5px}.shell{flex-direction:column;height:100%;display:flex}.page{flex:1;padding:14px 18px;overflow:auto}.page-head{align-items:center;gap:10px;margin:0 0 10px;display:flex}.page-head:not(:first-child){margin-top:22px}.page-head .filter{width:180px;margin:0 0 0 auto}table.list{border-collapse:collapse;border:1px solid var(--line);background:#fff;border-radius:6px;width:100%}table.list th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--line);padding:6px 10px;font-size:10.5px;font-weight:600}table.list td{border-bottom:1px solid #eef0f2;padding:6px 10px}table.list:not(.plain) tbody tr{cursor:pointer}table.list:not(.plain) tbody tr:hover,table.list tr.on{background:var(--accent-2)}td.actions{text-align:right;white-space:nowrap}td.actions a{margin-left:12px}.empty{text-align:center;color:var(--muted);border:1px dashed var(--line);background:#fff;border-radius:6px;padding:30px}.form.narrow{max-width:320px}.seg{display:flex}.seg button{border-radius:0;margin-left:-1px}.seg button:first-child{border-radius:4px 0 0 4px;margin:0}.seg button:last-child{border-radius:0 4px 4px 0}.seg button.on{background:var(--accent);color:#fff;border-color:var(--accent)}.library{align-items:flex-start;gap:16px;display:flex}.lib-list{flex:1;min-width:0}.lib-form{border:1px solid var(--line);background:#fff;border-radius:6px;flex:none;grid-template-columns:1fr 1fr;gap:2px 10px;width:430px;max-height:calc(100vh - 70px);padding:12px;display:grid;position:sticky;top:0;overflow:auto}.lib-form h3,.lib-form .wide,.lib-form .btns{grid-column:1/-1}.chips{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.chips select{width:auto}.chip-x{background:var(--accent-2);border-radius:10px;padding:2px 4px 2px 8px;font-size:11px}.chip-x a{color:var(--muted);padding:0 4px}table.rows{border-collapse:collapse;width:100%}table.rows th{color:var(--muted);text-align:left;font-size:10px;font-weight:400}table.rows td{padding:1px 2px}table.rows input{width:100%}.cc{border:1px solid var(--line);border-radius:5px;margin-bottom:6px;padding:6px}.cc-head{align-items:center;gap:4px;display:flex}.cc-head .des{flex:none;width:46px}.cc-head input,.cc-head select{flex:1}.cc-pins{grid-template-columns:1fr 1fr;gap:2px 8px;margin-top:5px;display:grid}.cc-pins label{align-items:center;gap:4px;display:flex}.cc-pins span{text-align:right;width:14px;color:var(--muted);font-size:10px}.cc-pins input{flex:1;height:21px}.login{place-items:center;height:100%;display:grid}.login-card{border:1px solid var(--line);text-align:center;background:#fff;border-radius:10px;flex-direction:column;align-items:stretch;gap:10px;width:320px;padding:26px;display:flex}.login-card .logo{justify-content:center}.login-card .logo b{font-size:20px}.login-card p{color:var(--muted);margin:0 0 6px}.login-card .btn{justify-content:center;height:32px}.login-card form{border-top:1px solid var(--line);flex-direction:column;gap:6px;padding-top:10px;display:flex}.modal-bg{z-index:50;background:#0005;place-items:center;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:8px;width:420px;padding:16px;box-shadow:0 10px 40px #0004}.pdf-dlg{width:320px;padding:12px}.pdf-dlg h3{margin:0 0 6px;font-size:13px}.pdf-dlg .row{align-items:center;gap:8px;display:flex}.pdf-dlg .row.end{gap:6px;margin-top:8px}.pdf-dlg .grow{flex:1}.pdf-list{border:1px solid var(--line);-webkit-user-select:none;user-select:none;border-radius:4px;max-height:50vh;margin-top:6px;padding:2px 0;overflow:auto}.pdf-list label{cursor:pointer;align-items:center;gap:6px;padding:1px 8px;display:flex}.pdf-list label:hover{background:#f1f4f7}.pdf-list label.cur{font-weight:600}.pdf-kind{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:3px 8px 1px;font-size:11px}.acl-row{align-items:center;gap:6px;margin-bottom:5px;display:flex}.acl-row span,.acl-row input{text-overflow:ellipsis;flex:1;overflow:hidden}.toasts{z-index:100;pointer-events:none;flex-direction:column;align-items:center;gap:6px;display:flex;position:fixed;bottom:36px;left:50%;transform:translate(-50%)}.toast{color:#fff;background:#23282d;border-radius:5px;max-width:520px;padding:6px 12px;box-shadow:0 4px 16px #0003}.toast.warn{background:#8a5a00}.toast.error{background:var(--err)}.sym-ed svg{aspect-ratio:1;border:1px solid var(--line);touch-action:none;cursor:crosshair;background:#fff;border-radius:4px;width:100%;margin:6px 0 2px;display:block}.sym-ed .sub-slot{fill:none;stroke:#b5651d;stroke-width:.8px;stroke-dasharray:1.5 1}.sym-ed .seat-pt{fill:#b5651d;stroke:none}.sym-ed .axis{stroke:#c5cad0;stroke-width:.5px;fill:none}.sym-ed .term{fill:#fff;stroke:var(--sel);stroke-width:1px}.sym-ed .term-name{fill:var(--sel);font-size:5px}.sym-ed .seg{flex-wrap:wrap;row-gap:2px}.sym-ed .seg button{padding:0 7px;font-size:11px}.sym-ed:focus{outline:none}.sym-ed .picked :not(text){stroke:var(--sel)!important}.sym-ed .picked text{fill:var(--sel)}.sym-ed .ed-handle{fill:#fff;stroke:var(--sel);stroke-width:.5px}.sym-ed .ed-marquee{fill:#1e6edc14;stroke:var(--sel);stroke-width:.4px;stroke-dasharray:2 1}.sym-ed .sym-row{cursor:pointer}.sym-ed .sym-row.on{background:#e8f0fb}.sym-ed .sym-fields{flex-wrap:wrap;align-items:center;gap:4px;display:inline-flex}.sym-ed .sym-fields label{color:var(--muted);align-items:center;gap:2px;display:inline-flex}.sym-ed .sym-fields input{width:42px;padding:0 3px}.sym-ed .sym-fields input.wide{width:120px}.art-bar{align-items:center;gap:8px;display:flex}.art-bar button{padding:1px 7px;font-size:11px}.sym-ed svg{-webkit-user-select:none;user-select:none;max-height:70vh}.sym-ed .housing-guide path{fill:none;stroke:#9aa1a8;stroke-width:.5px;stroke-dasharray:4 2}.sym-ed .housing-guide rect{fill:none;stroke:#9aa1a8;stroke-width:.5px;stroke-dasharray:2 1.5}.sym-ed .housing-guide text{fill:#8a9097;font-size:2.5px}.cglyph .shape{stroke-width:.9px}.art-hit{fill:#0000;stroke:none}.conn.sel .art .shape,.block.sel .art .shape{stroke:var(--sel);stroke-width:1.8px}.conn.error .art .shape,.block.error .art .shape{stroke:var(--err)}.conn.warn .art .shape{stroke:var(--warn)}.cglyph .shape.hatch,.conn.sel .art .shape.hatch,.block.sel .art .shape.hatch{stroke-width:.5px}.conn.ctrl-hi .art-hit,.block.ctrl-hi .art-hit{fill:#e8f0fe}.sym-row{align-items:center;gap:6px;padding:1px 0;font-size:11px;display:flex}.sym-row span{color:var(--muted);flex:1}.sym-row input{width:90px;height:21px}.sym-row small{flex:1}.item .mini{float:right;width:34px;height:20px}.field .check input,.check input{flex:none;width:auto}.crosshair line,.crosshair polygon{stroke:#5f6b75;stroke-width:.75px;stroke-dasharray:5 4;fill:none}.crosshair polygon{stroke-dasharray:3 2}.crosshair.spa path{fill:none;stroke:#5f6b75;stroke-width:.75px;stroke-dasharray:2 1.5}.crosshair.spa .spa-pit{fill:none;stroke:#5f6b75;stroke-width:.75px;stroke-dasharray:1.5 2.5}.spa-flag line,.spa-flag rect{fill:none;stroke:#5f6b75;stroke-width:.75px;stroke-dasharray:1.5 1}.spa-flag rect.on{fill:#5f6b75;fill-opacity:.35}.spa-box{fill:none;stroke:#5f6b75;stroke-width:.6px;stroke-dasharray:1.5 1;font:700 18px Arial,sans-serif}.canvas-tip{border:1px solid var(--line);pointer-events:none;white-space:nowrap;background:#fffbe6;border-radius:4px;padding:2px 8px;font-size:11px;position:absolute;top:6px;left:50%;transform:translate(-50%)}.align-guide{stroke:var(--accent);stroke-width:1px;stroke-dasharray:4 3;vector-effect:non-scaling-stroke;pointer-events:none}.mod-shape{fill:none;stroke:#111;stroke-width:1px}.mod-node{fill:#111}.modi.sel .mod-shape{stroke:var(--sel)}.modi.sel .mod-node,.modi.sel text{fill:var(--sel)}.modi.error .mod-shape,.modi.error text{stroke:var(--err)}.modi.warn .mod-shape{stroke:var(--warn)}.mod-member{fill:none;stroke:var(--sel);stroke-width:5px;stroke-opacity:.18;pointer-events:none}.mod-over{fill:none;stroke:var(--err);stroke-width:5px;stroke-opacity:.18;pointer-events:none}.modi.error text{stroke:none;fill:var(--err)}.mtag{color:#2c4f8a;background:#e8eef9;border-radius:3px;margin-left:4px;padding:0 3px;font-size:10px}.mtag.shield{color:#444;background:#eee;border:1px dashed #888}.canvas.tool-bundle svg,.canvas.tool-bundle svg *,.canvas.tool-dim svg,.canvas.tool-dim svg *{cursor:crosshair}.canvas-tip{pointer-events:none;white-space:nowrap;background:#fffbe6;border:1px solid #e6d9a3;border-radius:4px;padding:2px 8px;font-size:11px;position:absolute;top:6px;left:50%;transform:translate(-50%)}.hcanvas .hit{stroke:#0000;stroke-width:10px;fill:none}.hseg .ln{stroke:#111;stroke-linecap:round;stroke-linejoin:round;fill:none}.hbun .ln{stroke-width:.9px}.hcab .ln{stroke-width:5px}.hseg.sel .ln{stroke:var(--sel)}.hcab.unmatched .ln{stroke:#b06000}.hseg.drop .ln{stroke:var(--accent)}.hcab-t{fill:#111;pointer-events:none;font:8px Arial,sans-serif}.hcab.unmatched .hcab-t{fill:#b06000}.hseg-prev{stroke:var(--sel);stroke-width:2.5px;stroke-dasharray:5 3;stroke-linecap:round;pointer-events:none}.hdrain{fill:none;stroke:#000;stroke-width:.8px}.hdrain-dot{fill:#000}.hrat{stroke:#8a8a8a;stroke-width:1px;stroke-dasharray:6 4;fill:none;pointer-events:none;vector-effect:non-scaling-stroke}.hfan{stroke:#111;stroke-width:.8px;fill:none;pointer-events:none}.hfan-prev{pointer-events:none}.hfan-prev>path{stroke:var(--sel);stroke-width:.8px;stroke-dasharray:2 1.5;fill:none}.hghost{opacity:.35}.canvas g.ghost,.hitem.ghost{opacity:.6;pointer-events:none}.hrat-t{fill:#777;pointer-events:none;font-size:7px}text.txt-drag{cursor:move}text.txt-sel{text-decoration:underline;fill:var(--sel)!important}.hnode{fill:#fff;stroke:var(--sel);stroke-width:1px;vector-effect:non-scaling-stroke}.hnode.sel{fill:var(--sel)}.hitem{cursor:move}.hitem text{fill:#111;font-size:8px}.hv-body{fill:#fff;stroke:#111;stroke-width:1px}.hv-cav{fill:#fff;stroke:#111;stroke-width:.7px}.hv-line{fill:none;stroke:#111;stroke-linejoin:round;stroke-linecap:round}.hitem text.hv-num{font-size:6px}.hitem text.hv-des{font-size:10px;font-weight:700}.hitem text.hv-pn{font-size:7.5px}.htable line,.tbl-box{stroke:#111;stroke-width:.6px;fill:#fff}.tbl-head{fill:#eef0f2;stroke:#111;stroke-width:.6px}.hitem text.tbl-title{font-size:9px;font-weight:700}.hitem text.tbl-h{font-weight:700}.hitem text.muted{fill:#888}.hp-hs{fill:#fff;stroke:#111;stroke-width:1px}.hp-bk{fill:#fff;stroke:none}.hp-sl{fill:#fff;stroke:#111;stroke-width:.8px;stroke-dasharray:3 2}.hp-hatch{stroke:#555;stroke-width:.5px}.hp-tie{fill:#333;stroke:#111;stroke-width:.5px}.hp-lbl{fill:#fff;stroke:#111;stroke-width:.8px}.hitem text.hp-t{font-size:7.5px}.hitem text.hnote-title{font-size:9px;font-weight:700}.hnote{font-size:8px}.hnote-hit{fill:#0000;stroke:none}.hitem.sel .hnote-hit{stroke-width:.5px;stroke-dasharray:2 1.5}.hlead{stroke:#111;stroke-width:.7px;fill:none}.hlead-arrow,.hlead-dot{fill:#111;stroke:none}.hlead-h{cursor:crosshair}.hcab-t.grab{pointer-events:auto;cursor:grab}.hitem.sel :is(rect,path,circle,line){stroke:var(--sel)}.hitem.sel text{fill:var(--sel)}.hdim{cursor:move}.hdim-ext,.hdim-line{stroke:#1d5fbf;stroke-width:.7px;fill:none}.hdim-arrow{fill:#1d5fbf}.hdim-t{fill:#1d5fbf;stroke:#fff;stroke-width:3px;paint-order:stroke;font-size:8.5px}.hdim.sel .hdim-ext,.hdim.sel .hdim-line{stroke:var(--sel);stroke-width:1.2px}.hdim.sel .hdim-t{fill:var(--sel)}.hdim-prev{stroke:#1d5fbf;stroke-width:.8px;stroke-dasharray:3 2;pointer-events:none}.cols{flex-direction:column;gap:1px;display:flex}.col-row{align-items:center;gap:6px;display:flex}.col-row a{cursor:pointer;color:var(--muted);font-size:9px}.hp-handle{fill:#fff;stroke:var(--sel);stroke-width:1.2px;vector-effect:non-scaling-stroke;cursor:ew-resize}table.pins td.grip{width:10px;color:var(--muted);cursor:grab;-webkit-user-select:none;user-select:none;text-align:center;letter-spacing:-3px}table.pins tr.drop-above td{box-shadow:inset 0 2px 0 var(--accent)}table.pins tr.drop-below td{box-shadow:inset 0 -2px 0 var(--accent)}.hdim-s{stroke-width:2px;font-size:6px}.hdim-bg{fill:#fff}.canvas.grab-end svg,.canvas.grab-end svg *{cursor:grab}.canvas.grab-end svg:active,.canvas.grab-end svg:active *{cursor:grabbing}.grab-dot{fill:var(--sel);pointer-events:none}.tcol-h{fill:#0000;stroke:none;cursor:col-resize}.tcol-h:hover{fill:var(--sel);fill-opacity:.25}table.pins label.chk{cursor:pointer;align-items:center;gap:5px;display:flex}table.pins label.chk input{width:auto;height:auto;margin:0}.list tr.grp .fold-acts{margin-left:8px}.list tr.grp:hover .fold-acts{display:inline-flex}.list tr.grp.new td{background:#fff}.list tr.grp .dir-ico{vertical-align:-1px;fill:#e9d9a6;stroke:#a8915a;stroke-width:1px;width:12px;height:10px;margin-right:4px}.list thead tr.over th,.list tr.grp.over td{background:var(--accent-2);outline:1px dashed var(--accent)}.drop-top{color:var(--muted);border:1px dashed #0000;border-radius:4px;flex:1;justify-content:center;align-self:stretch;align-items:center;margin:0 12px;display:flex}.drop-top.on{border-color:var(--line)}.drop-top.over{background:var(--accent-2);border-color:var(--accent);color:var(--accent)}.acl-row.inherited{color:var(--muted)}.hitem.orphan,.hseg.orphan{filter:drop-shadow(0 0 1.5px var(--err))}.hitem.orphan :is(rect,path,circle,line),.hseg.orphan .ln{stroke:var(--err)}.hitem.orphan text,.hseg.orphan text{fill:var(--err)}.hitem.thl,.hseg.thl{filter:drop-shadow(0 0 3px var(--accent)) drop-shadow(0 0 1px var(--accent))}.orphan-banner{white-space:nowrap;border:1px solid var(--err);color:#8a1c1c;z-index:4;background:#fdecec;border-radius:4px;align-items:center;gap:6px;padding:3px 4px 3px 8px;font-size:11px;display:flex;position:absolute;top:6px;right:6px}.orphan-banner button{align-items:center;height:22px;margin:0;padding:0 7px;font-size:11px;display:inline-flex}.orphan-banner .bin{width:26px;color:var(--err);justify-content:center;padding:0;font-size:15px;line-height:1}.sig-ask{z-index:6;border:2px solid var(--warn);background:#fff;border-radius:6px;width:340px;animation:.25s ease-out sig-in;position:absolute;top:40px;left:50%;transform:translate(-50%);box-shadow:0 0 0 4000px #1e1e1e1f,0 6px 24px #0000004d}@keyframes sig-in{0%{opacity:0;transform:translate(-50%,-12px)}}.sig-head{color:#7a4900;background:#fff3dc;border-bottom:1px solid #f0d29a;border-radius:4px 4px 0 0;align-items:center;gap:7px;padding:5px 4px 5px 8px;font-size:12px;font-weight:600;display:flex}.sig-head .x{color:#7a4900;background:0 0;border:none;height:20px;margin-left:auto;padding:0 6px;font-size:15px}.sig-icon{background:var(--warn);color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:17px;height:17px;font-size:12px;font-weight:700;display:inline-flex}.sig-body{flex-direction:column;gap:4px;padding:7px 8px 8px;display:flex}.sig-q{color:var(--muted);margin-bottom:1px;font-size:11px}.sig-opt{border:1px solid var(--line);text-align:left;border-radius:4px;justify-content:flex-start;align-items:baseline;gap:8px;height:auto;min-height:26px;padding:3px 8px;display:flex}.sig-opt b{font-size:12px}.sig-opt small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-left:auto;font-size:10px;overflow:hidden}.sig-opt:hover,.sig-opt:focus-visible{border-color:var(--accent);background:var(--accent-2)}.sig-own{gap:4px;margin-top:2px;display:flex}.sig-own input{flex:1;height:26px}.sig-own button{height:26px}.sig-keep{border:1px dashed var(--line);height:24px;color:var(--muted);justify-content:center}.shparts select{width:100%;margin-top:3px}.shield-pick label{cursor:pointer;color:inherit;align-items:center;gap:6px;margin:0;padding:2px 8px;font-size:12px;display:flex}.shield-pick label input{flex:none;width:auto;height:auto;margin:0}.shield-pick label span{flex:1}.shield-pick label small{color:var(--muted)}.shield-pick .menu-row{gap:4px;padding:4px 4px 2px;display:flex}.shield-pick .menu-row button{border:1px solid var(--line);flex:1;justify-content:center}.shpart{align-items:baseline;gap:4px;padding:1px 0;display:flex}.shpart b{flex:1;font-weight:500}.shpart small{color:var(--muted);white-space:nowrap}.shpart .x{height:18px;padding:0 5px}.lib-form.ai{flex-direction:column;gap:6px;width:520px;display:flex}.lib-form.ai>*{flex-shrink:0}.ai-head{align-items:center;gap:8px;display:flex}.ai-head h3{flex:1;margin:0}.ai-head select{width:170px}.ai-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ai-row label{align-items:center;gap:4px;display:flex}.ai-asked{white-space:pre-wrap;background:#f6f7f8;border-radius:4px;max-height:90px;padding:5px 7px;overflow:auto}.ai-wait{color:var(--muted);flex-direction:column;gap:3px;display:flex}.ai-wait>div:first-child{align-items:center;gap:6px;display:flex}.ai-timeout{border:1px solid var(--warn);color:var(--text);border-radius:3px;flex-wrap:wrap;align-items:center;gap:6px;padding:4px 6px;display:flex}.ai-debug{border-top:1px solid var(--line);padding-top:3px;font-size:11px}.ai-debug summary{cursor:pointer;color:var(--muted)}.ai-debug table{border-collapse:collapse;table-layout:fixed;width:100%;margin:3px 0}.ai-debug th,.ai-debug td{text-align:left;vertical-align:top;word-break:break-word;padding:1px 4px}.ai-debug tbody th{width:80px;color:var(--muted);font-weight:400}.ai-links td:first-child{white-space:nowrap;text-overflow:ellipsis;width:45%;overflow:hidden}.ai-links td.bad{color:var(--err)}.ai-log{max-height:160px;margin:3px 0;padding-left:0;font-family:ui-monospace,monospace;list-style:none;overflow:auto}.ai-log li{text-indent:-52px;padding-left:52px}.ai-log span{text-indent:0;width:52px;color:var(--muted);display:inline-block}a.btn{border:1px solid var(--line);color:inherit;border-radius:3px;align-items:center;padding:2px 8px;text-decoration:none;display:inline-flex}.spin{border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;flex:none;width:12px;height:12px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.ai-err{color:var(--err);font-size:11px}.ai-warn{color:var(--warn);font-size:11px}.ai-links{border:1px solid var(--warn);border-radius:4px;flex-direction:column;gap:4px;padding:6px 8px;display:flex}.ai-links ul{margin:0;padding-left:16px}.ai-links li{flex-direction:column;display:flex}.ai-links .url{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ai-items{flex-direction:column;gap:4px;display:flex}.ai-item{border:1px solid var(--line);opacity:.7;border-radius:4px;padding:4px 6px}.ai-item.on{opacity:1;border-color:var(--accent)}.ai-item.off{opacity:.45}.ai-line{align-items:center;gap:6px;display:flex}.ai-line input{width:auto;height:auto}.conf{background:#eceef0;border-radius:8px;padding:0 5px;font-size:10px}.conf.high{color:var(--ok)}.conf.low{color:#fff;background:var(--warn)}.ai-form{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:2px 10px;margin-top:6px;padding-top:6px;display:grid}.ai-form .wide{grid-column:1/-1}.ai-prompts pre{white-space:pre-wrap;background:#f6f7f8;border-radius:4px;max-height:260px;margin:2px 0 6px;padding:6px;font-size:10.5px;overflow:auto}.ai-prompts summary{cursor:pointer}.cv-views{grid-template-columns:1fr 1fr;gap:6px;display:grid}.cv-card{border:1px solid var(--line);border-radius:4px;min-width:0;padding:4px 6px}.cv-card svg{background:#fff;width:100%;height:130px;margin:3px 0;display:block}.cv-card.numbering svg{cursor:crosshair;outline:1px solid var(--accent)}.cv-card text.hv-num{font-size:6px}.cv-crop{grid-column:1/-1}.cv-crop svg{border:1px solid var(--line);cursor:crosshair;touch-action:none;background:#fff;border-radius:4px;width:100%;height:340px;margin-top:4px;display:block}.cv-crop .dxf{fill:none;stroke:#111;stroke-width:1px;vector-effect:non-scaling-stroke}.cv-crop .sel{fill:#1f6f5414;stroke:var(--accent);stroke-width:1px;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}.cv-bar{flex-wrap:wrap;align-items:center;gap:4px;font-size:11px;display:flex}.cv-bar button{padding:0 5px;font-size:11px}.cv-bar label{white-space:nowrap}.cv-bar input{width:38px;height:20px;margin-left:2px}.cv-bar .grow{flex:1}.cv-dim path,.cv-dim circle,.cv-dim-at{fill:none;stroke:#d0451b;stroke-width:1.2px;vector-effect:non-scaling-stroke;pointer-events:none}.cv-dim-at{stroke:var(--accent);stroke-width:2px}.cv-dim-at.del{stroke:#c00}.hdim-pt{fill:none;stroke:#d0451b;stroke-width:.8px;pointer-events:none}.ai-scope{background:var(--accent-2);border:1px solid var(--accent);border-radius:4px;padding:3px 6px}.ai-scope a{margin-left:4px}.ai-pics{flex-wrap:wrap;gap:8px;margin:3px 0;display:flex}.ai-pic small{color:var(--muted);font-size:10px;display:block}.ai-pic>div{align-items:center;gap:4px;display:flex}.ai-pic span{color:var(--muted)}.ai-pic svg.thumb{border:1px solid var(--line);background:#fff;border-radius:3px;width:96px;height:64px}.zoom{cursor:zoom-in;display:inline-flex}.zoom-big{z-index:1000;pointer-events:none;border:1px solid var(--line);box-sizing:border-box;background:#fff;border-radius:4px;padding:8px;position:fixed;box-shadow:0 6px 24px #0000002e}.zoom-big svg.thumb{width:100%;height:100%}table.list tr.queued td{background:#fff4d6}table.list tr.queued td:first-child{box-shadow:inset 3px 0 0 var(--warn)}.q-count{color:#8a5a00;background:#fff4d6;border-radius:8px;margin-left:6px;padding:0 5px;font-size:10px}.ai-diff{border-collapse:collapse;margin:2px 0;font-size:11px}.ai-diff th{text-align:left;vertical-align:top;padding:0 6px 0 0;font-weight:600}.ai-diff td{vertical-align:top;word-break:break-word;padding:0 4px 0 0}.ai-diff .was{color:var(--muted);text-decoration:line-through}.ai-alerts{z-index:120;flex-direction:column;gap:8px;width:340px;display:flex;position:fixed;top:44px;right:12px}.ai-alert{background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:5px;flex-direction:column;gap:4px;padding:8px 10px;animation:.25s ease-out ai-pop;display:flex;box-shadow:0 6px 24px #0004}.ai-alert.time{border-left-color:var(--warn)}.ai-alert.failed{border-left-color:var(--err)}.ai-alert-head{justify-content:space-between;align-items:center;display:flex}.ai-alert-head a{color:var(--muted);cursor:pointer;font-size:16px;line-height:1}.ai-alert .muted{overflow-wrap:anywhere;font-size:11px}@keyframes ai-pop{0%{opacity:0;transform:translate(24px)}}.ai-thread{font-size:11px}.ai-thread>div{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ai-q{border-left:3px solid var(--warn);background:#fff8ec;margin:4px 0;padding:4px 8px}.ai-q ol{margin:2px 0 0;padding-left:18px}.ai-follow{border-top:1px solid var(--line);margin-top:6px;padding-top:6px}.ai-follow textarea{box-sizing:border-box;width:100%}.ai-dup{float:right;margin:-2px 0 2px 8px;padding:1px 8px}.meta{flex-direction:column;gap:3px;display:flex}.meta-row{align-items:center;gap:4px;display:flex}.meta-row .mk{flex:none;width:130px;font-family:monospace}.meta-row .mk.bad{border-color:var(--err,#c33)}.meta-row .mv{flex:1}.col-row input{width:120px}.col-row a.off{opacity:.4;pointer-events:none}.hint.keys{margin:-2px 0 4px;font-family:monospace;font-size:11px}.col-row input+a{font-size:11px}.meta>a,.meta-row a{cursor:pointer;color:var(--muted)}table.list td.tick,table.list thead td.tick{width:22px;padding:0 0 0 8px}table.list td.tick input{vertical-align:middle;cursor:pointer;margin:0}.junc-label{fill:#111;pointer-events:none;font:6.5px Arial,sans-serif}.seat-row{align-items:center;gap:4px;padding:2px 0;display:flex}.seat-row button{margin-left:auto}.sym-ed .term-wires{align-items:center;gap:4px;display:inline-flex}.sym-ed .term-wires small{color:var(--muted)}.sym-ed .term-wires select{padding:0 2px;font-size:11px}
