@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600&display=swap";:root{--ground:#f3f2ee;--panel:#faf9f6;--card:#fff;--line:#dad8d0;--line2:#eeece6;--ink:#1c1c1a;--muted:#5c5b55;--dark:#1c1c1a;--dark2:#3a3936;--muted-dark:#cfcdc5;--accent:#c1440e;--accent-ink:#8a300a;--accent-tint:#fbefe9;--warn:#fcf1dc;--warn-ink:#7a4f00;--ok:#245a2b;--bad:#b22222;color:var(--ink);background:var(--ground);font-family:IBM Plex Sans,system-ui,sans-serif}*{box-sizing:border-box}body{margin:0}a{color:#a33a0c}a:hover{color:#7e2c09}h1{margin:0;font-size:24px;font-weight:600}h2{margin:0;font-size:16px;font-weight:600}.mono{font-family:IBM Plex Mono,ui-monospace,monospace}.muted{color:var(--muted)}.tiny{font-size:12px}.strong{font-weight:600}.grow{flex:auto}.row{align-items:center;display:flex}.gap{gap:8px}.wrap{flex-wrap:wrap}.baseline{align-items:baseline}.row-between{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.center{flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:60vh;display:flex}.card{background:var(--card);border:1px solid var(--line);border-radius:10px}.alert{color:#8b2323;background:#f6e1e1;border-radius:8px;padding:10px 12px;font-size:14px}.note{color:var(--muted);background:#efede7;border-radius:8px;margin-top:auto;padding:10px 12px;font-size:12px;line-height:1.45}.sec{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:0 0 8px;font-size:12px;font-weight:600}input,select,textarea{font:inherit;color:var(--ink);border:1px solid var(--line);background:#fff;border-radius:6px;min-width:0;min-height:36px;padding:7px 9px;font-size:14px}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px}.field{color:var(--muted);flex-direction:column;gap:4px;min-width:0;font-size:12px;display:flex}.btn{font:inherit;border:1px solid var(--line);min-height:36px;color:var(--ink);cursor:pointer;white-space:nowrap;background:#fff;border-radius:8px;padding:0 14px;font-size:14px}.btn:hover{background:#f6f5f1}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn.primary:hover{background:#a93b0c}.btn.small{min-height:30px;padding:0 10px;font-size:13px}.btn.ghost{background:0 0;border-color:#0000}.btn.danger{color:var(--bad);border-color:#e7c4c4}.btn.ghost-dark{color:#fff;background:0 0;border-color:#5c5b55}.btn.ghost-dark:hover{background:var(--dark2)}.topbar{background:var(--dark);color:#f3f2ee;flex-wrap:wrap;align-items:center;gap:12px;min-height:56px;padding:8px 20px;display:flex}.topbar .back{color:var(--muted-dark);text-decoration:none}.topbar .sep{color:#6b6a63}.brand{align-items:center;gap:10px;font-size:16px;font-weight:600;display:flex}.logo{background:var(--accent);border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;font-size:15px;display:inline-flex}.topnav a{color:#fff;border-radius:6px;padding:8px 12px;font-size:14px;text-decoration:none}.topnav a.active{background:var(--dark2)}.muted-dark{color:var(--muted-dark);font-size:14px}.dark-select{background:var(--dark2);color:#fff;border:0}.pill{background:var(--dark2);color:#cfe8d2;border-radius:6px;padding:3px 8px;font-family:IBM Plex Mono,monospace;font-size:12px}.pill.dirty,.pill.saving{color:#f3c9b4}.pill.conflict,.pill.error{background:var(--bad);color:#fff}.login{justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.login-card{flex-direction:column;gap:14px;width:100%;max-width:380px;padding:28px;display:flex}.page .container{flex-direction:column;gap:16px;max-width:1280px;margin:0 auto;padding:24px;display:flex}.search{min-width:260px;min-height:40px}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%}.table th{color:var(--muted);text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:10px 12px;font-size:12px;font-weight:600}.table td{border-bottom:1px solid var(--line2);padding:10px 12px;font-size:14px}.table.compact td{padding:6px 12px}.table tr.clickable{cursor:pointer}.table tr.clickable:hover{background:var(--accent-tint)}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:12px;padding:20px;display:grid}.span2{grid-column:span 2}.card>h2{margin-bottom:4px}.page .card:not(.table-wrap):not(.form-grid){padding:20px}.editor{flex-direction:column;min-height:100vh;display:flex}.editor-body{flex-wrap:wrap;flex:1;min-height:0;display:flex}.catalog{background:var(--panel);border-right:1px solid var(--line);flex-direction:column;flex:250px;gap:10px;max-width:290px;padding:14px;display:flex}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{font:inherit;border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:12px;padding:4px 10px;font-size:12px}.chip.on{background:var(--ink);border-color:var(--ink);color:#fff}.cat-list{flex-direction:column;gap:6px;max-height:60vh;display:flex;overflow:hidden auto}.cat-item>:nth-child(2){overflow-wrap:anywhere;flex:1;min-width:0}.cat-item{cursor:grab;background:#fff;border:1px solid #e1dfd7;border-radius:8px;align-items:center;gap:10px;padding:7px 8px;font-size:13px;display:flex}.cat-item:hover{border-color:var(--accent)}.cat-shape{background:#fff;border:1px solid #8e8c84;border-radius:2px;flex:none;height:28px}.work{flex-direction:column;flex:999 560px;min-width:0;display:flex}.tabs{border-bottom:1px solid var(--line);background:var(--panel);flex-wrap:wrap;gap:2px;padding:8px 16px 0;display:flex}.tabs button{font:inherit;min-height:40px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:0 14px;font-size:14px}.tabs button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}.editor-tabs{align-items:center}.tabs-user{padding:0 4px 6px}.canvas{background-color:#eceae4;background-image:radial-gradient(#d5d3cb 1px,#0000 1px);background-size:16px 16px;flex-direction:column;flex:1;align-items:center;gap:16px;padding:20px;display:flex;overflow:auto}.canvas-info{color:var(--muted);align-self:stretch;font-size:12px}.frontview{-webkit-user-select:none;user-select:none;touch-action:none;flex:none}.fv-ref{fill:var(--ink);pointer-events:none;font-family:IBM Plex Mono,monospace;font-weight:500}.fv-rating{fill:var(--ink);pointer-events:none;font-size:11px;font-weight:600}.fv-rownum{fill:#3a3936;font-family:IBM Plex Mono,monospace;font-size:12px}.pad{flex:1;padding:20px;overflow:auto}.pad-s{padding:10px 12px}.compact-table{align-self:stretch;width:100%;max-width:none}.table.edit{min-width:980px}.table.edit td{padding:4px 6px}.table.edit td:nth-child(3){min-width:180px}.table.edit td:nth-child(4){min-width:110px}.table.edit td:nth-child(6){min-width:130px}.table.edit .w-cb{width:28px;padding-left:10px}.table.edit .w-cb input{width:16px;min-height:0}.table.grid tr.grp td{background:var(--panel);border-top:1px solid var(--line);cursor:pointer;padding:6px 10px}.table.grid tr.grp.hl td{background:var(--accent-tint)}.grp-head{flex-wrap:wrap;align-items:center;gap:12px;font-size:13px;display:flex}.table.edit .grp-head .phase-sel{width:auto;min-height:28px;padding:2px 6px}.table.grid tr.marked td{background:#fbf1ea}.table.grid .dev-cell{gap:4px;min-width:120px;display:flex}.bulk-bar{background:#fbf1ea;border-radius:6px;flex-wrap:wrap;flex:1;align-items:center;gap:6px;margin:0 12px;padding:2px 8px;font-size:13px;display:flex}.bulk-bar input,.bulk-bar select{width:auto;min-height:28px;padding:2px 6px;font-size:13px}.bulk-bar .w-s{width:90px}.grid-hint{padding:0 12px}.table.edit input,.table.edit select{width:100%;min-height:32px;padding:4px 6px;font-size:13px}.table.edit .w-xs{width:48px}.table.edit .w-s{width:72px}.table.edit tr.hl{background:var(--accent-tint)}.statusbar{border-top:1px solid var(--line);background:var(--panel);min-height:40px;color:var(--muted);flex-wrap:wrap;align-items:center;gap:10px;padding:6px 16px;font-size:12px;display:flex}.grid-forms{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px;display:grid}.side{border-left:1px solid var(--line);background:#fff;flex-direction:column;flex:290px;gap:18px;max-width:340px;padding:16px;display:flex}.props{flex-direction:column;gap:10px;display:flex}.props h2{font-size:18px;font-weight:500}.grid2{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.linked{background:var(--accent-tint);border-radius:8px;padding:8px 10px;font-size:13px}.small-pad{padding:8px 0}.bar-row{align-items:center;gap:8px;margin:4px 0;font-size:13px;display:flex}.bar{background:var(--line2);border-radius:5px;flex:1;height:10px;overflow:hidden}.fill{border-radius:5px;height:10px}.fill.L1{background:#8a5a2b}.fill.L2{background:#1c1c1a}.fill.L3{background:#8e8c84}.num{text-align:right;width:76px}.issue{text-align:left;width:100%;font:inherit;cursor:pointer;border:0;border-radius:8px;margin-bottom:6px;padding:8px 10px;font-size:13px;line-height:1.4;display:block}.issue.warn{background:var(--warn);color:#3d2a00}.issue.info{background:#f1efe9}.banner{background:var(--warn);color:#3d2a00;align-items:center;gap:12px;padding:10px 20px;font-size:14px;display:flex}.toast{background:var(--ink);color:#fff;z-index:20;cursor:pointer;border-radius:8px;max-width:420px;padding:12px 16px;font-size:14px;position:fixed;bottom:20px;right:20px}.menu-wrap{position:relative}.menu{width:340px;color:var(--ink);border:1px solid var(--line);z-index:30;background:#fff;border-radius:10px;padding:8px;position:absolute;top:44px;right:0;box-shadow:0 6px 24px #00000026}.menu-row{border-bottom:1px solid var(--line2);align-items:center;gap:10px;padding:8px;font-size:13px;display:flex}@media (width<=700px){.form-grid,.grid2{grid-template-columns:minmax(0,1fr)}.span2{grid-column:auto}.search{flex:1;min-width:0}}.drawings{flex-direction:column;flex:1;gap:10px;min-height:0;padding:16px 20px;display:flex}.drawings-bar{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.field.inline{min-width:260px}.pdf-frame{border:1px solid var(--line);background:#fff;border-radius:8px;flex:1;width:100%;min-height:640px}.fv-copy{fill:#3e8a4a;font-size:20px;font-weight:700}.fv-tlabel{fill:#1c1c1a;pointer-events:none;paint-order:stroke;stroke:#fff;stroke-width:2.5px;stroke-linejoin:round;font-family:IBM Plex Mono,monospace;font-size:6.5px;font-weight:600}.fv-tgroup{fill:#6b6a63;paint-order:stroke;stroke:#fff;stroke-width:2px;font-style:italic}.fv-tip{fill:#fff;font:500 12px IBM Plex Mono,monospace}.fv-term:hover circle{stroke:#c1440e;stroke-width:2px}.seg{border:1px solid var(--line);border-radius:6px;display:inline-flex;overflow:hidden}.seg button{font:inherit;color:var(--muted);cursor:pointer;background:#fff;border:0;padding:4px 10px;font-size:12px}.seg button.on{background:var(--ink,#1c1c1a);color:#fff}.wire-list{flex-direction:column;gap:2px;max-height:320px;display:flex;overflow:auto}.wire-row{font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:4px;align-items:center;gap:8px;padding:4px 6px;font-size:12px;display:flex}.wire-row:hover{background:var(--accent-tint)}.wire-row .swatch{border-radius:2px;flex:none;width:14px;height:4px}.table.grid .term-cell{white-space:nowrap}.table.grid .term-cell input{width:40px;margin-right:6px}.fv-busbar{fill:#7a4a1e;font-size:8px}.small-check{font-size:13px}.small-check input{width:auto;min-height:0}.table.grid .term-cell .w-gland{width:64px;margin-left:8px}.menu-sep{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-top:1px solid var(--line);padding:8px 12px 4px;font-size:11px}.menu-scroll{max-height:320px;overflow:auto}.menu-row.warn-row{background:var(--warn)}.cp-wrap{align-self:stretch;width:100%}.cp-scroll{padding:0 12px 12px;overflow:auto}.cp{background:#fff;display:block}.cp-line{stroke:#3a3936;stroke-width:1.4px}.cp-sym{stroke:#3a3936;stroke-width:2px}.cp-bus{stroke:#1c1c1a;stroke-width:3px}.cp-coil{fill:#fff;stroke:#1c1c1a;stroke-width:2px}.cp-ext{fill:none;stroke:#8e8c84;stroke-dasharray:3 2}.cp-ref{fill:#1c1c1a;font-size:12px;font-weight:600}.cp-sub,.cp-term{fill:#6b6a63;font-size:9px}.cp-warn{fill:#b22222;font-size:9px;font-weight:600}.cp-hit{fill:#0000}.cp-path{cursor:pointer}.cp-path:hover .cp-hit{fill:#c1440e0d}.cp-path.on .cp-hit{fill:#c1440e1a}.cp-path.on .cp-line,.cp-path.on .cp-coil{stroke:#c1440e}.cp-empty{align-self:stretch;width:100%;padding:14px 16px}.front-split{flex:1;grid-template-columns:minmax(0,1fr);min-height:0;display:grid}.viewport{background-color:#eceae4;background-image:radial-gradient(#d5d3cb 1px,#0000 1px);background-size:16px 16px;min-height:0;position:relative;overflow:auto}.viewport .canvas-info{z-index:2;background:#eceae4d9;padding:6px 12px;position:sticky;top:0;left:0}.vp-content{box-sizing:border-box;text-align:center;min-width:100%;padding:32px;display:inline-block}.vp-content .frontview{display:inline-block}.viewport.pan-ready,.viewport.pan-ready *{cursor:grab!important}.viewport.panning,.viewport.panning *{cursor:grabbing!important}.split-handle{cursor:row-resize;background:var(--line)}.split-handle:hover{background:var(--accent)}.dock{background:var(--panel);min-height:0;padding:8px 12px;overflow:auto}.dock .compact-table,.dock .cp-wrap,.dock .cp-empty{margin:0}.rail{writing-mode:vertical-rl;font:inherit;border:0;border-right:1px solid var(--line);background:var(--panel);color:var(--muted);cursor:pointer;flex:none;padding:12px 6px;font-size:12px;transform:rotate(180deg)}.rail:hover{color:var(--ink);background:var(--accent-tint)}.side{position:relative}.side-close{position:absolute;top:8px;right:8px}@media (width>=900px){.editor{height:100vh;min-height:0}.editor-body{flex-wrap:nowrap}.catalog,.side{overflow:auto}.work{min-width:0;min-height:0}.editor-body{align-items:stretch;min-height:0}}.table.grid .contact-sel{width:auto;min-height:26px;margin-top:3px;font-size:12px}.pill.warn{background:var(--warn);color:var(--warn-ink)}.logo-prev{border:1px solid var(--line);background:#fff;max-width:160px;max-height:40px;padding:2px}.modal-back{z-index:50;background:#1c1c1a73;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{flex-direction:column;gap:12px;width:min(880px,100%);max-height:calc(100vh - 48px);padding:18px 20px;display:flex;overflow:auto}.modal h2{margin:0;font-size:17px}.modal-body{flex-wrap:wrap;align-items:flex-start;gap:18px;display:flex}.modal-photo{object-fit:contain;border:1px solid var(--line);background:#fff;border-radius:6px;width:200px;max-height:220px;padding:6px}.table.kv th{width:38%;color:var(--muted);text-align:left;padding:5px 10px;font-weight:500}.table.kv td{padding:5px 10px;font-size:13px}.modal details summary{cursor:pointer;margin:10px 0 4px}.modal-links{border-top:1px solid var(--line);padding-top:10px}.cat-actions{flex-direction:column;flex:none;gap:4px;display:flex}.cat-actions .btn{justify-content:center;min-width:30px}.bus-page{flex-direction:column;gap:14px;max-width:1200px;display:flex}.bus-card{flex-direction:column;gap:8px;display:flex}.bus-name{min-width:240px;font-weight:600}.bus-params input.w-cable{width:300px}.bus-params input.w-s,.bus-edit input.w-s{width:80px}.bus-edit td{padding:3px 6px}.bus-edit input{width:100%;min-height:30px;padding:3px 6px;font-size:13px}.bus-edit input[type=checkbox]{width:16px;min-height:0}.issues{margin:0;padding:0;list-style:none}.issues .issue{cursor:default}button.link{font:inherit;color:var(--accent-ink);cursor:pointer;text-align:left;background:0 0;border:0;padding:0;text-decoration:underline}.warn-ink{color:var(--warn-ink)}.bad{color:var(--bad)}.w-sn{width:140px}.io-modal{width:min(1100px,100%)}.bus-edit tr.io-focus td{background:var(--accent-tint)}.modal.dialog{width:min(460px,100%)}.modal.dialog p{color:var(--muted);margin:0}.bd-wrap{border:1px solid var(--line2);background:#fbfaf7;border-radius:8px;overflow-x:auto}.bd-wrap svg{display:block}.bd-master{fill:#efede6;stroke:#3a3936}.bd-dev{fill:#fff;stroke:#3a3936}.bd-field{fill:#fff;stroke:#3a3936;stroke-dasharray:4 2}.bd-ref{fill:var(--ink);font:600 13px IBM Plex Mono,monospace}.bd-name{fill:var(--ink);font-size:12px;font-weight:600}.bd-small{fill:#6b6a63;font-size:10.5px}.bd-addr{fill:var(--accent-ink);font:500 11px IBM Plex Mono,monospace}.fv-removed{fill:#b22222;font:600 11px IBM Plex Mono,monospace}.cmp{border:1px solid var(--line);background:#fff;border-radius:8px;flex-direction:column;gap:6px;padding:10px;display:flex}.cmp select{width:auto;min-height:28px;padding:2px 6px;font-size:13px}.cmp-list{flex-direction:column;gap:4px;max-height:45vh;display:flex;overflow:auto}.cmp-item{text-align:left;font:inherit;cursor:pointer;background:#f7f6f2;border:0;border-left:4px solid;border-radius:4px;padding:5px 8px;font-size:12.5px}.cmp-item.added{border-color:#2e7d32}.cmp-item.changed{border-color:#c77700}.cmp-item.removed{border-color:#b22222}.cmp-item ul{color:var(--muted);margin:2px 0 0 14px;padding:0}.cmp-legend span{margin-right:10px}.cmp-legend i{vertical-align:-1px;width:10px;height:10px;margin-right:4px;display:inline-block}.grid-forms .span-all{grid-column:1/-1;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.grid-forms .span-all>h2,.grid-forms .span-all>h3,.grid-forms .span-all>p{grid-column:1/-1}.archive-links{flex-wrap:wrap;align-items:center;gap:4px;display:inline-flex}a.btn{text-decoration:none}.feeder-info{background:var(--panel,#f4f2ec);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;font-size:13px;display:flex}.thermal-sum{margin:8px 0 0;font-size:14px}.ok-ink{color:#2e7d32}.fp-page{flex-direction:column;height:100vh;display:flex}.fp-body{flex:1;grid-template-columns:300px 1fr;min-height:0;display:grid}.fp-side{border-right:1px solid var(--line);background:var(--card);flex-direction:column;gap:6px;padding:12px;display:flex;overflow:auto}.fp-file{text-align:left;white-space:normal;justify-content:space-between}.fp-status{background:var(--panel,#f4f2ec);border-radius:6px;padding:6px 8px}.fp-layers{flex-direction:column;gap:2px;max-height:45vh;display:flex;overflow:auto}.fp-swatch{border:1px solid #0003;width:10px;height:10px;display:inline-block}.fp-canvas{background:#1e1e1e;min-height:0;position:relative;overflow:hidden}.fp-files{flex-direction:column;gap:2px;max-height:42vh;display:flex;overflow:auto}.fp-dir{text-overflow:ellipsis;white-space:nowrap;text-align:left;direction:rtl;margin-top:6px;overflow:hidden}.fp-file{gap:6px;width:100%;display:flex}.plan-canvas{cursor:grab;touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}.floor-page{grid-template-columns:300px 1fr;height:100%;min-height:0;display:grid}.floor-page .fp-canvas.placing .plan-canvas{cursor:crosshair}.floor-palette{grid-template-columns:1fr 1fr;gap:4px;display:grid}.floor-palette .btn{justify-content:flex-start;gap:4px}.floor-overlay{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.floor-item{pointer-events:auto;cursor:move}.floor-label{paint-order:stroke;stroke:#1e1e1e;stroke-width:3px;font:600 11px IBM Plex Mono,monospace}.floor-props{flex-direction:column;gap:6px;display:flex}.room-cell{align-items:center;gap:4px;display:flex}.room-cell input{flex:1}.fi-count{color:#2e7d32;white-space:nowrap;font:600 11px IBM Plex Mono,monospace}.fi-count.none{color:#b07a00}.hub-wrap{flex:1;padding:20px;overflow:auto}.hub{grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:16px;max-width:1400px;margin:0 auto;display:grid}.hub-panel{background:var(--card);border:1px solid var(--line);border-radius:12px;flex-direction:column;gap:12px;padding:18px;display:flex}.hub-wide{grid-column:1/-1}.hub-head{align-items:center;gap:10px;display:flex}.hub-head h2{margin:0;font-size:18px}.hub-icon{background:var(--accent-tint);width:36px;height:36px;color:var(--accent-ink);border-radius:9px;place-items:center;font-size:20px;display:grid}.hub-kv{grid-template-columns:110px 1fr;gap:4px 10px;margin:0;font-size:14px;display:grid}.hub-kv dt{color:var(--muted)}.hub-kv dd{margin:0}.hub-cards{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;display:grid}.hub-card{border:1px solid var(--line);color:inherit;background:#fff;border-radius:10px;flex-direction:column;gap:3px;padding:12px 14px;text-decoration:none;display:flex}.hub-card:hover{border-color:var(--accent);box-shadow:0 2px 8px #0001}.plan-wrap{flex:1;min-height:0;display:flex}.plan-wrap>.floor-page{flex:1}.crumb{color:inherit;text-decoration:none}.crumb:hover{text-decoration:underline}.crumb-now{font-weight:600}.floor-rooms{flex-direction:column;gap:6px;display:flex}.room-list{flex-direction:column;gap:2px;max-height:30vh;display:flex;overflow:auto}.room-row{text-align:left;border:1px solid var(--line2);font:inherit;cursor:pointer;background:#fff;border-radius:6px;padding:4px 8px;font-size:13px}.room-row.sel{border-color:var(--accent);background:var(--accent-tint)}.room polygon{fill:#50a0ff0d;stroke:#50a0ff73;stroke-width:1px}.room.active polygon{fill:#50a0ff1a;stroke:#50a0ffcc;stroke-width:1.5px}.room.sel polygon{fill:#c1440e26;stroke:#c1440e;stroke-width:2px}.room-name{fill:#9cc8ff;paint-order:stroke;stroke:#1e1e1e;stroke-width:3px;font:600 12px IBM Plex Sans,sans-serif}.room-name.missing{fill:#f0a020}.room-draw{fill:#c1440e1a;stroke:#c1440e;stroke-width:2px;stroke-dasharray:5 3}.infl-grid{grid-template-columns:1fr;gap:3px;display:grid}.infl-grid select{flex:1;min-height:28px;padding:2px 4px;font-size:12px}.infl-code{width:24px;font-weight:600}.infl-tag{color:#3b6fb6;margin-left:6px;font:600 10.5px IBM Plex Mono,monospace}.room-edit .room-vtx{fill:#fff;stroke:#c1440e;stroke-width:2px;pointer-events:auto;cursor:move}.room-edit .room-mid{fill:#c1440e;opacity:.6;pointer-events:auto;cursor:copy}.room-ghost{fill:#c1440e1f;stroke:#c1440e;stroke-dasharray:4 3}.floor-overlay .tray{fill:none;stroke:#6b8fb8;stroke-width:4px;stroke-opacity:.35;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.floor-overlay .tray.active{stroke-opacity:.75}.floor-overlay .tray.sel{stroke:#c1440e;stroke-opacity:.9}.floor-overlay .tray-trubka{stroke-width:2.5px;stroke-dasharray:8 4}.floor-overlay .tray-lista{stroke-width:3px;stroke-dasharray:2 3}.floor-overlay .tray-kanal{stroke-width:6px}.floor-overlay .cable-route{fill:none;stroke-width:2.5px;stroke-dasharray:6 3;pointer-events:none}.route-sum{flex-direction:column;gap:3px;display:flex}.w-xs{width:46px}.floor-overlay .snap-guide{stroke:#c1440e;stroke-width:1px;stroke-dasharray:4 4;opacity:.7;pointer-events:none}.floor-overlay .sel-box{fill:#c1440e14;stroke:#c1440e;stroke-dasharray:4 3;pointer-events:none}.clip-box{border-bottom:1px solid var(--line);flex-direction:column;gap:4px;padding:6px 0;display:flex}.gang-list{flex-direction:column;gap:4px;display:flex}.gang-row{border-bottom:1px dashed var(--line);grid-template-columns:14px 1fr auto;align-items:center;gap:3px 4px;padding-bottom:4px;display:grid}.gang-row select{min-width:0;font-size:12px}.gang-row>:nth-child(3){grid-area:2/2}.track-bar{z-index:3;font:11px var(--mono,monospace);align-items:center;gap:4px;display:flex;position:absolute;bottom:10px;left:10px}.track-bar button,.track-bar select{color:#bbb;font:inherit;cursor:pointer;background:#2a2a2a;border:1px solid #444;border-radius:3px;padding:3px 7px}.track-bar button.on{color:#fff;background:#c1440e;border-color:#c1440e}.track-bar button.on .muted{color:#ffd9c7}.floor-overlay .rubber line{stroke:#c1440e;stroke-width:1.5px;stroke-dasharray:5 3}.floor-overlay .rubber .track-ray{stroke:#8fb3ff;stroke-width:1px;stroke-dasharray:2 4;opacity:.6}.floor-overlay .rubber text{fill:#ffd9c7;font:11px var(--mono,monospace);paint-order:stroke;stroke:#1e1e1e;stroke-width:3px}.room-edit .room-vtx.sel{fill:#c1440e;stroke:#fff}.floor-overlay .snap-mark rect,.floor-overlay .snap-mark path{fill:none;stroke:#f0d040;stroke-width:2px;pointer-events:none}.fp-head{z-index:3;background:var(--card);border-bottom:1px solid var(--line);flex-direction:column;gap:8px;margin:-12px -12px 4px;padding:12px 12px 10px;display:flex;position:sticky;top:-12px}.fp-head select{min-width:0}.fp-tabs{background:var(--ground);border-radius:10px;grid-template-columns:repeat(3,1fr);gap:4px;padding:3px;display:grid}.fp-tabs button{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;flex-direction:column;align-items:center;gap:1px;padding:6px 2px 5px;font-size:13px;display:flex;position:relative}.fp-tabs button:hover{color:var(--ink);background:#fff9}.fp-tabs button.on{background:var(--card);color:var(--ink);font-weight:600;box-shadow:0 1px 2px #0000001f}.fp-tabs button.on svg{color:var(--accent)}.fp-tab-n{color:var(--muted);font-family:IBM Plex Mono,monospace;font-size:10px;font-weight:400;position:absolute;top:3px;right:6px}.fold{border:1px solid var(--line);background:var(--card);border-radius:8px}.fold.open{background:var(--panel)}.fold-head{font:inherit;cursor:pointer;text-align:left;width:100%;color:var(--ink);background:0 0;border:0;border-radius:8px;align-items:center;gap:6px;padding:7px 10px;display:flex}.fold-head:hover{background:var(--line2)}.fold-chev{color:var(--muted);flex:none;transition:transform .15s}.fold.open .fold-chev{transform:rotate(90deg)}.fold-title{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);flex:none;font-size:12px;font-weight:600}.fold-sum{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;text-align:right;flex:auto;min-width:0;font-size:12px;overflow:hidden}.fold-badge{background:var(--accent-tint);color:var(--accent-ink);border-radius:10px;flex:none;margin-left:auto;padding:1px 7px;font-size:11px;font-weight:600}.fold-sum+.fold-badge{margin-left:4px}.fold-body{flex-direction:column;gap:6px;padding:2px 10px 10px;display:flex}.fold-body .clip-box{border-bottom:0;padding:0}.fold-sub{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-top:4px;font-size:11px;font-weight:600}.fp-acad{flex-direction:column;gap:4px;display:flex}.fp-acad .btn,.tool-grid .btn{text-align:center;white-space:normal;justify-content:center;width:100%;padding:4px 8px;line-height:1.2}.tool-grid{grid-template-columns:1fr 1fr;gap:4px;display:grid}.tool-grid .btn:first-child:nth-last-child(odd){grid-column:1/-1}.floor-rooms>.room-list{border:1px solid var(--line2);border-radius:8px;max-height:38vh;padding:2px}.floor-item.frozen{pointer-events:none;opacity:.55}.room-row{text-align:left;flex-direction:column;align-items:stretch;gap:1px;display:flex}.room-row-main{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.room-row-meta{flex-wrap:wrap;align-items:center;gap:6px;font-size:11px;display:flex}.room-row-meta:empty{display:none}.floor-rooms>.room-list{max-height:none}.room-nav{align-items:center;gap:4px;margin:-2px -2px 2px;display:flex}.room-name-row{gap:6px;display:flex}.room-name-row .w-num{flex:0 0 72px}.room-name-row .field{min-width:0}.room-name-row input{width:100%}.room-facts{background:var(--panel);border-radius:6px;grid-template-columns:auto 1fr;gap:2px 10px;margin:0;padding:6px 8px;display:grid}.room-facts dt{color:var(--muted)}.room-facts dd{margin:0}.room-detail .fold{background:var(--card)}a.btn{justify-content:center;align-items:center;display:inline-flex}.hub-card{gap:0;padding:0}.hub-card-link{color:inherit;flex-direction:column;flex:auto;gap:3px;padding:12px 14px 10px;text-decoration:none;display:flex}.hub-card .hub-actions{border-top:1px solid var(--line2);padding:8px 10px 10px}.hub-actions{flex-wrap:wrap;gap:6px;margin-top:auto;display:flex}.hub-actions .btn{flex:1 1 0;min-width:0;padding:0 8px}.hub-head .btn{flex:none}.hub-wide .hub-cards{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.fp-layer{border-radius:6px;align-items:center;gap:2px;display:flex}.fp-layer:hover{background:var(--line2)}.fp-layer.off .fp-layer-name{color:var(--muted);text-decoration:line-through}.fp-layer-name{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.fp-layer .btn.small{min-height:22px;padding:0 6px;font-size:11px}.btn.ghost-dark.on{background:var(--dark2)}.admin-card,.acad-guide{flex-direction:column;gap:12px;margin-bottom:16px;display:flex}.admin-add{background:var(--panel);border:1px solid var(--line2);border-radius:8px;grid-template-columns:1.3fr 1.3fr 1fr auto;align-items:end;gap:10px;padding:12px;display:grid}.admin-add .span-all{grid-column:1/-1;margin:0}.admin-users select{font:inherit;font-size:13px}.admin-users tr.off td{color:var(--muted)}.admin-actions{text-align:right;white-space:nowrap}.admin-actions .btn+.btn{margin-left:6px}.state{border-radius:10px;padding:1px 8px;font-size:12px;font-weight:600}.state.on{color:var(--ok);background:#e3f1e5}.state.off{color:var(--bad);background:#f6e1e1}.linkish{font:inherit;color:inherit;cursor:pointer;text-underline-offset:3px;background:0 0;border:0;padding:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.otp{background:var(--warn);color:var(--warn-ink);border-radius:8px;justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 14px;font-size:14px;display:flex}.otp-row{margin-top:6px}.otp-code{color:var(--ink);background:#fff;border-radius:6px;padding:4px 10px;font-size:16px}.acad-tabs{align-self:flex-start}.acad-tabs button{padding:6px 14px;font-size:13px}.acad-cols{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:24px;display:grid}.acad-steps{flex-direction:column;gap:10px;margin:0;padding-left:22px;font-size:14px;line-height:1.45;display:flex}.acad-steps li::marker{color:var(--accent);font-weight:600}.acad-steps .btn{vertical-align:middle;margin-left:6px}.acad-steps .tiny{margin-top:2px}.kbd{background:var(--ground);border:1px solid var(--line2);white-space:nowrap;border-radius:4px;padding:0 4px;font-size:12.5px}.acad-cmds td:first-child{white-space:nowrap;width:1%}.acad-cmds td{vertical-align:top;font-size:13px}.acad-faq{flex-direction:column;gap:6px;padding-left:18px;line-height:1.4;display:flex}.acad-tokens{border-top:1px solid var(--line);flex-direction:column;gap:8px;padding-top:14px;display:flex}@media (width<=900px){.acad-cols,.admin-add{grid-template-columns:1fr}}.manual-page{min-height:100vh}.manual-page .brand{color:inherit;text-decoration:none}.manual{grid-template-columns:280px minmax(0,1fr);gap:0;max-width:1280px;margin:0 auto;display:grid}.manual-toc{border-right:1px solid var(--line);flex-direction:column;align-self:start;gap:10px;max-height:100vh;padding:20px 16px;display:flex;position:sticky;top:0;overflow:auto}.manual-toc .search{width:100%}.manual-toc nav{flex-direction:column;display:flex}.toc-2,.toc-3{width:100%;font:inherit;text-align:left;cursor:pointer;color:var(--ink);background:0 0;border:0;border-radius:6px;padding:4px 8px;display:block}.toc-2{margin-top:6px;font-size:14px;font-weight:600}.toc-3{color:var(--muted);padding-left:18px;font-size:13px}.toc-2:hover,.toc-3:hover{background:var(--line2)}.manual-body{max-width:920px;padding:24px 40px 80px;font-size:15px;line-height:1.6}.manual-body h1{margin-bottom:8px;font-size:28px}.manual-body h2{border-top:1px solid var(--line);margin:36px 0 8px;padding-top:12px;scroll-margin-top:12px;font-size:21px}.manual-body h3{margin:22px 0 6px;scroll-margin-top:12px;font-size:16px}.manual-body p{margin:8px 0}.manual-body ul,.manual-body ol{margin:6px 0;padding-left:24px}.manual-body li{margin:3px 0}.manual-body .table-wrap{border:1px solid var(--line);background:var(--card);border-radius:8px;margin:10px 0}.manual-body .table td{vertical-align:top;font-size:14px}.manual-body mark{background:#ffe58a;border-radius:2px;padding:0 1px}@media (width<=860px){.manual{grid-template-columns:1fr}.manual-toc{border-right:0;border-bottom:1px solid var(--line);max-height:none;position:static}.manual-body{padding:16px}}@media print{.topbar,.manual-toc{display:none}.manual{display:block}.manual-body{max-width:none;padding:0}}.vis-tag{background:var(--line2);color:var(--muted);white-space:nowrap;border-radius:10px;padding:1px 8px;font-size:12px}.vis-tag.private{color:#4a2f7a;background:#ede7f6}.vis-tag.edit{color:var(--ok);background:#e3f1e5}.vis-tag.view{color:#234a78;background:#e6eef8}.access-tag{background:var(--warn);color:var(--warn-ink);white-space:nowrap;border-radius:10px;margin-left:6px;padding:1px 7px;font-size:11px;font-weight:600}.access-tag.owner{background:var(--accent-tint);color:var(--accent-ink)}.access-tag.edit{color:var(--ok);background:#e3f1e5}.vis-choice{flex-direction:column;gap:4px;display:flex}.vis-opt{border:1px solid var(--line2);cursor:pointer;border-radius:8px;grid-template-columns:auto 1fr;align-items:baseline;gap:0 8px;padding:6px 10px;display:grid}.vis-opt.on{border-color:var(--accent);background:var(--accent-tint)}.vis-opt.ro{cursor:default}.sharing select{font:inherit;font-size:13px}.vis-opt .tiny{grid-column:2}.share-group{flex-direction:column;gap:4px;display:flex}.share-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.share-list li{background:var(--panel);border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:3px 8px;font-size:14px;display:flex}.share-actions{flex:none;gap:2px;display:flex}.share-actions .btn.small{min-height:24px;padding:0 6px;font-size:12px}.share-group select{align-self:flex-start}.share-danger{border-top:1px solid var(--line2);flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px;padding-top:10px;display:flex}.fv-tnum{fill:#3a3936;pointer-events:none;font-family:IBM Plex Mono,monospace}.strip-props{border-top:1px solid var(--line2);flex-direction:column;gap:4px;padding:6px 0;display:flex}.fv-test{fill:#5a4a10;pointer-events:none;font-weight:700}
