:root{--ink:#233540;--muted:#8b99a4;--line:#e5eaed;--primary:#1c7461;--soft:#f5f7f8;--font:Inter,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}*{box-sizing:border-box}body{margin:0;font:13px var(--font);color:var(--ink);background:#f1f4f6;height:100dvh;overflow:hidden}button,input,select,textarea{font:inherit}button{cursor:pointer;color:inherit}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #1c7461;outline-offset:3px}button{transition:background .15s,border-color .15s}button:hover{background:#f0f4f3}.app-header{height:77px;padding:0 27px;display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid var(--line);gap:24px}.brand{text-decoration:none;color:var(--ink);display:flex;align-items:center;gap:11px;white-space:nowrap}.brand-mark{display:grid;place-items:center;background:#174c40;color:#d0ecdd;width:42px;height:42px;border-radius:11px}.brand-mark svg{width:32px;height:32px}.brand strong{font-size:24px;letter-spacing:1px;font-weight:650;display:block;line-height:1.15}.brand small{display:block;font-size:10px;letter-spacing:1.2px;color:#89978e;margin-top:4px}.version{font-size:9px;letter-spacing:.6px;color:#6f8e82;background:#edf4f0;padding:3px 5px;border:1px solid #e1ebe5;border-radius:4px;align-self:flex-start;margin-top:2px}nav{display:flex;align-items:center;gap:33px;margin-right:auto;margin-left:40px;height:100%}nav span.nav-active{height:100%;display:flex;align-items:center;border-bottom:3px solid #246f5e;font-weight:600}nav button{border:0;background:none;color:#87939b;padding:6px 0}nav button span{padding-left:6px}.header-actions{display:flex;align-items:center;gap:17px}.text-button{border:0;background:none;font-size:12px;padding:8px 2px;color:#65747f}.button{border:1px solid #dce3e7;background:#fff;padding:10px 15px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;gap:9px;font-size:12px;line-height:1.2;white-space:nowrap}.button.primary{color:white;background:var(--primary);border-color:var(--primary)}.button.primary:hover{background:#185f50}.save-button{background:#f6f8f8;font-weight:500}.save-button>span{font-size:17px}.command-bar{height:67px;display:flex;align-items:center;justify-content:space-between;padding:0 26px;background:#fbfcfc;border-bottom:1px solid var(--line);gap:16px}.project-heading{display:flex;align-items:center;gap:11px;min-width:0}.project-symbol{font-size:26px;color:#7f9694}.project-heading strong{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:290px;font-weight:600}.tag{border:1px solid #dfe6e8;padding:4px 7px;border-radius:4px;color:#84939c;font-size:10px;white-space:nowrap}.saved-status{font-size:10px;color:#92a19b;white-space:nowrap;margin-left:8px}.saved-status i,.canvas-badge i,.tiny-dot{display:inline-block;width:5px;height:5px;background:#76a88d;border-radius:50%;margin-right:5px}.command-actions{display:flex;align-items:center;gap:10px}.history-buttons{display:flex;gap:5px;border-right:1px solid #e2e7e8;padding-right:15px;margin-right:4px}.history-buttons button{background:none;border:0;font-size:23px;color:#778892;padding:0 7px}.file-icon{font:7px var(--font);border:1px solid currentColor;padding:3px 2px;border-radius:2px;opacity:.8}.editor{height:calc(100dvh - 144px);display:grid;grid-template-columns:250px minmax(300px,1fr) 278px}.left-panel,.right-panel{background:white;min-height:0;display:flex;flex-direction:column}.left-panel{border-right:1px solid var(--line)}.right-panel{border-left:1px solid var(--line)}.panel-tabs{height:54px;display:flex;align-items:center;justify-content:space-around;padding:0 17px;border-bottom:1px solid var(--line);flex-shrink:0}.panel-tabs button{font-size:12px;border:0;background:none;padding:17px 16px;color:#85949d;position:relative}.panel-tabs button.active{font-weight:600;color:var(--primary)}.panel-tabs button.active:after{content:"";position:absolute;height:2px;background:var(--primary);bottom:0;left:18px;right:18px}.panel-content{overflow:auto;padding:22px 18px;flex:1;scrollbar-width:thin}.section-title{font-size:12px;font-weight:600;margin:0 0 16px;display:flex;align-items:center;justify-content:space-between}.section-title small{font-size:10px;font-weight:400;color:var(--muted)}.section-divider{height:1px;background:var(--line);margin:23px 0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}label{display:block;color:#7a8994;font-size:11px;line-height:1.5}input:not([type=checkbox]),select,textarea{width:100%;color:#314854;border:1px solid #dde5e9;border-radius:6px;background:#fff;padding:9px 10px;margin-top:6px;font-size:12px;height:35px;outline:none}textarea{resize:vertical;height:70px;line-height:1.6}input:focus,select:focus,textarea:focus{border-color:#80ad9e;box-shadow:0 0 0 2px #edf5f1}.input-unit{position:relative}.input-unit input{padding-right:28px}.input-unit>span{position:absolute;right:10px;bottom:8px;font-size:11px;color:#a0acb4}.subtle-button{border:1px dashed #d9e3e6;background:#fafcfc;color:#83949d;padding:8px;width:100%;border-radius:5px;font-size:10px;margin-top:12px}.template-list{display:flex;gap:8px}.template-card{width:50%;background:#fafcfc;border:1px solid #e3e9ec;border-radius:6px;text-align:center;padding:9px 3px 8px}.template-card.active{border-color:#649f8b;background:#f2f9f5}.template-card svg{display:block;width:68px;height:36px;margin:auto auto 7px}.template-card span{font-size:10px;color:#7e8e96}.template-card.active span{color:#28775e;font-weight:500}.layout-fields{margin-top:16px;display:flex;flex-direction:column;gap:12px}.check-label{display:flex;gap:6px;align-items:center;margin-top:14px;color:#71828c;font-size:11px}.check-label input{accent-color:#297f67;width:13px;height:13px}.generate-button{width:100%;margin-top:17px;font-size:12px;padding:12px;justify-content:space-between}.muted{color:#93a1aa;font-size:10px;line-height:1.8}.panel-footer{border-top:1px solid var(--line);padding:14px 18px;color:#99a5ae;font-size:9px;flex-shrink:0}.device-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.device-card{background:white;border:1px solid #e1e7ea;border-radius:7px;min-height:92px;padding:10px 5px;text-align:center}.device-card:hover{border-color:#79ae9a;background:#f4faf7}.device-card svg{width:40px;height:32px;display:block;margin:0 auto 8px}.device-card strong{font-size:11px;display:block;font-weight:500}.device-card small{font-size:9px;color:#9aa6ad;display:block;margin-top:5px}.layer-row{display:flex;align-items:center;padding:11px 0;gap:9px;border-bottom:1px solid #f0f3f4;color:#566d79;font-size:12px}.layer-row input{accent-color:var(--primary)}.layer-row span{margin-left:auto;font-size:10px;color:#a6b0b7}.canvas-panel{min-width:0;display:flex;flex-direction:column;min-height:0}.canvas-info{height:68px;padding:0 25px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.eyebrow{font-size:9px;letter-spacing:1.5px;color:#92a19c;font-weight:600}.canvas-info>div:first-child{display:flex;align-items:center;gap:12px}.canvas-title{font-size:12px;color:#657b85}.drawing-stats{display:flex;gap:20px}.drawing-stats span{font-size:10px;color:#8e9ea6}.drawing-stats b{font-size:20px;color:#425c68;font-weight:500;margin-right:5px;font-variant-numeric:tabular-nums}.workspace{flex:1;min-height:0;margin:0 18px 17px;background:#fff;border:1px solid #e0e7ea;border-radius:10px;box-shadow:0 2px 8px #213c4503;position:relative;overflow:hidden}.workspace svg#drawing{width:100%;height:100%;display:block;touch-action:none;cursor:default;outline:none}.workspace[data-tool=pan] svg#drawing{cursor:grab}.workspace[data-tool=dimension] svg#drawing,.workspace[data-tool=cable] svg#drawing,.workspace[data-tool=boundary] svg#drawing{cursor:crosshair}.drawing-tools{position:absolute;top:15px;left:15px;display:flex;align-items:center;background:white;box-shadow:0 2px 9px #143e4812;border:1px solid #e4eaed;border-radius:7px;padding:4px;z-index:3;gap:3px}.drawing-tools button{background:none;border:0;border-radius:4px;width:31px;height:31px;display:grid;place-items:center;color:#879aa6}.drawing-tools button.active{background:#eaf3ee;color:#276e55}.drawing-tools svg,.view-tools svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.tool-separator{height:20px;width:1px;background:#e6ebed;display:block;margin:0 3px}.canvas-badge{position:absolute;right:17px;top:23px;font-size:10px;color:#8ea298;background:#fffffff2;padding:4px 6px;pointer-events:none}.canvas-hint{position:absolute;bottom:23px;left:20px;font-size:9px;color:#99a7af;pointer-events:none;background:#ffffffdb;padding:3px;border-radius:3px}.view-tools{position:absolute;bottom:15px;right:15px;display:flex;align-items:center;background:#fff;box-shadow:0 2px 9px #143e480d;border:1px solid #e6ebed;border-radius:6px;padding:4px;gap:2px}.view-tools>button{border:0;background:none;width:28px;height:27px;font-size:17px;color:#6c8190}.view-tools>span#zoom-level{font-size:10px;color:#78909c;min-width:35px;text-align:center}.snap-label{font-size:9px;display:flex;align-items:center;gap:3px;padding:0 6px;color:#7d928b}.snap-label input{accent-color:#397f69;width:12px;height:12px}.canvas-bottom{height:34px;flex-shrink:0;display:flex;align-items:center;padding:0 22px 12px;gap:15px;font-size:9px;color:#9aa6ae}.legend{display:flex;gap:12px;margin-right:auto}.legend span{display:flex;align-items:center;gap:5px}.legend i{width:5px;height:5px;border-radius:1px}.canvas-bottom button{border:0;background:none;color:#6d937d;font-size:9px;padding:0}.canvas-bottom button.has-warnings{color:#b28a49}.inspector-heading{height:54px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 19px;flex-shrink:0}.inspector-heading strong{font-size:12px;font-weight:600}.inspector-heading span{font-size:9px;color:#9eabb3}.inspector{overflow:auto;padding:22px 19px;scrollbar-width:thin}.property-top{display:flex;gap:10px;align-items:center;margin-bottom:17px}.property-icon{width:36px;height:36px;border:1px solid #d9eae1;color:#3d9472;border-radius:8px;display:grid;place-items:center;background:#f3f9f5;font-size:19px}.property-top strong{font-size:12px;font-weight:500;display:block}.property-top small{color:#9ba7ae;font-size:9px;display:block;margin-top:5px}.inspector label{margin-bottom:11px}.inspector .form-grid label{margin-bottom:0}.inspector .form-grid{margin-bottom:13px}.property-actions{display:flex;gap:7px;margin:15px 0}.property-actions button{flex:1;padding:8px 3px;font-size:10px}.danger-button{color:#b47870}.empty-selection{color:#8e9faa;line-height:1.8;font-size:11px;margin-bottom:20px;padding:13px;background:#f7f9fa;border:1px dashed #e0e8eb;border-radius:6px}.mini-summary{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:7px;margin:14px 0}.mini-summary>div{padding:11px 9px;border-bottom:1px solid var(--line)}.mini-summary>div:nth-last-child(-n+2){border-bottom:none}.mini-summary>div:nth-child(odd){border-right:1px solid var(--line)}.mini-summary span{display:block;font-size:9px;color:#8e9ba5}.mini-summary strong{font-size:17px;font-weight:500;display:block;margin-top:5px;color:#526b76}.mini-summary small{font-size:9px;margin-left:3px;color:#9aa7af}.check-list{margin-top:12px}.check-item{display:block;text-align:left;border:1px solid #eee5d7;background:#fffcf7;color:#ad894e;border-radius:5px;padding:9px 10px;margin-bottom:7px;font-size:10px;line-height:1.6;width:100%}.check-item.info{background:#f7fafb;border-color:#e5ecef;color:#8399a7}.check-ok{color:#67917a;background:#f3f8f5;border:1px solid #e4eee7;padding:12px;border-radius:6px;font-size:10px;line-height:1.7}.assignment{max-height:105px;overflow:auto;border:1px solid var(--line);padding:5px 8px;border-radius:5px;margin:7px 0 13px;display:grid;grid-template-columns:1fr 1fr}.assignment label{display:flex;align-items:center;gap:3px;margin:3px 0;font-size:10px}.assignment input{width:12px;height:12px;accent-color:var(--primary)}.object-list{display:flex;flex-direction:column;gap:5px;max-height:200px;overflow:auto}.object-list button{font-size:10px;border:1px solid var(--line);background:#fafcfc;text-align:left;padding:8px;border-radius:4px}.object-list span{float:right;color:#9ba9b0}dialog{border:1px solid #e2e7e6;border-radius:13px;padding:0;width:460px;max-width:calc(100vw - 30px);max-height:90dvh;box-shadow:0 20px 80px #18343833;color:var(--ink)}dialog::backdrop{background:#18343866;backdrop-filter:blur(3px)}.dialog-head{padding:23px 25px 18px;display:flex;align-items:center;justify-content:space-between}.dialog-head h2{font-size:18px;font-weight:600;margin:7px 0 0}.icon-button{border:0;background:none;font-size:25px;color:#8f9b9f;padding:0 5px}.dialog-body{padding:20px 25px}.dialog-foot{padding:17px 25px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:9px}.export-preview{margin:0 25px;background:#f6f9f8;border:1px solid #e2ebe6;border-radius:7px;padding:10px;text-align:center}.export-preview svg{width:100%;height:140px}.export-preview span{color:#92a19a;font-size:9px}.inline-error{color:#b36657;font-size:11px;line-height:1.6}.help-content{padding-top:0}.help-content ol{list-style:none;margin:0;padding:0;counter-reset:steps}.help-content li{counter-increment:steps;padding-left:33px;position:relative;margin:15px 0}.help-content li:before{content:counter(steps);position:absolute;left:0;top:0;color:#2c7862;background:#eff6f1;border-radius:50%;width:23px;height:23px;display:grid;place-items:center;font-size:11px}.help-content li strong{font-size:12px}.help-content li p{font-size:11px;line-height:1.9;color:#84959d;margin:5px 0}.shortcut-list{display:flex;flex-wrap:wrap;gap:12px;font-size:9px;color:#84959d;padding:16px 0;border-top:1px solid var(--line)}kbd{background:#f1f4f5;padding:3px 5px;border-radius:3px;font-size:9px;color:#658176}#toast{position:fixed;bottom:30px;left:50%;transform:translate(-50%,15px);background:#274c40;color:white;padding:12px 20px;border-radius:7px;box-shadow:0 4px 20px #17393122;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:50;font-size:12px;max-width:80vw;line-height:1.6}#toast.show{opacity:1;transform:translate(-50%,0)}.selected-outline{fill:none;stroke:#237bdf;stroke-width:28;stroke-dasharray:140 90;pointer-events:none}.vertex-handle{fill:#fff;stroke:#237bdf;stroke-width:25;cursor:move}.drawing-hit{cursor:move}#drawing text{font-family:var(--font);user-select:none;pointer-events:none}.draw-preview{pointer-events:none}#drawing .boundary-hit{cursor:pointer}@media(min-width:1650px){.editor{grid-template-columns:270px minmax(300px,1fr) 300px}.panel-content{padding:25px 22px}}@media(max-width:1200px){.editor{grid-template-columns:225px minmax(300px,1fr) 245px}.app-header{padding:0 18px}nav{margin-left:15px;gap:20px}.saved-status{display:none}.drawing-stats{gap:10px}.canvas-info{padding:0 20px}.canvas-info .eyebrow{display:none}.canvas-bottom #coordinate{display:none}.header-actions{gap:10px}.canvas-badge{display:none}.canvas-hint{bottom:62px}.project-heading .tag{display:none}.panel-content{padding:19px 15px}}@media(max-width:920px){body{min-width:720px}.editor{grid-template-columns:190px minmax(300px,1fr) 220px}.app-header{height:68px;gap:10px}.brand strong{font-size:20px}.brand-mark{width:36px;height:36px}.brand small{font-size:9px}.version,nav{display:none}.command-bar{height:60px;padding:0 15px}.editor{height:calc(100dvh - 128px)}.command-actions{gap:6px}.command-actions .button{padding:9px}.history-buttons{padding-right:6px;margin-right:0}.project-heading strong{max-width:180px;font-size:12px}.drawing-stats span:last-child{display:none}.drawing-stats b{font-size:17px}.canvas-title{font-size:11px}.canvas-info{height:55px;padding:0 13px}.workspace{margin:0 10px 13px}.canvas-bottom{padding:0 12px 10px}.legend{gap:6px;font-size:8px}.canvas-hint{font-size:8px;left:10px}.drawing-tools{left:8px;top:10px}.drawing-tools button{width:27px}.view-tools{right:8px;bottom:10px}.panel-content{padding:18px 12px}.panel-tabs{padding:0 5px}.inspector{padding:18px 13px}.inspector-heading{padding:0 13px}.form-grid{gap:8px}.template-card svg{width:58px}}
.inline-link{border:0;background:none;padding:0;color:#398a71;font-size:9px;font-weight:400;text-align:left}.inline-link:hover{text-decoration:underline;background:none}.vehicle-advice{margin-top:11px;background:#f3f8f5;border:1px solid #e0ece4;border-radius:7px;padding:12px 11px}.vehicle-advice>strong{display:block;font-size:11px;color:#4c7863;margin-bottom:10px;font-weight:550}.vehicle-advice>div:not(.advice-actions){display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:7px;font-size:10px}.vehicle-advice span{color:#8a9d92}.vehicle-advice b{font-size:11px;font-weight:550;color:#477663;font-variant-numeric:tabular-nums}.vehicle-advice details{margin-top:11px;color:#869e8f;font-size:9px;line-height:1.8}.vehicle-advice summary{cursor:pointer}.vehicle-advice details p{margin:7px 0}.advice-actions{display:flex;justify-content:space-between;gap:8px;border-top:1px solid #e0ece4;padding-top:10px;margin-top:10px}.compact-templates{gap:5px}.compact-templates .template-card{width:33.33%;padding:10px 2px}.through-template{width:100%;margin-top:8px;border:1px solid #e0e8e7;border-radius:6px;padding:9px;background:#fafcfc;text-align:left;font-size:11px;color:#7f9490}.through-template small{display:block;margin-top:5px;font-size:9px;color:#97a8a2}.through-template.active{background:#edf7f0;border-color:#75a58e;color:#397354}.capacity-note{font-size:10px;margin-top:10px;padding:9px;background:#f7f9fa;border:1px solid #e5eaec;color:#7e9691;border-radius:5px;line-height:1.6}.capacity-note.cannot-fit{color:#ac874f;background:#fffbf3;border-color:#efe4cf}.panel-footer #generate-fixed{margin:0 0 12px;padding:11px 12px}.panel-footer #generate-fixed[hidden]{display:none}.vehicle-dialog{width:820px}.guide-intro{font-size:12px;line-height:1.9;color:#7b8e97;margin:0 0 19px}.guide-intro strong{color:#497365}.guide-table-wrap{overflow-x:auto}.guide-table{width:100%;border-collapse:collapse;font-size:11px;line-height:1.6;white-space:nowrap}.guide-table th{background:#f4f7f6;text-align:left;padding:10px 9px;color:#738d7f;font-weight:500;border-bottom:1px solid #dfe8e2}.guide-table td{padding:10px 9px;border-bottom:1px solid #edf0ee;color:#537263}.guide-table td:first-child{font-weight:550}.guide-table small{display:block;color:#98a79f;font-size:9px;margin-top:4px}.guide-table tr.current{background:#f4faf5}.guide-cautions{background:#f6f8f8;border:1px solid #e5eae8;border-radius:6px;padding:14px;margin-top:20px;font-size:11px;line-height:1.9;color:#8c9c95}.guide-cautions strong{color:#5d8170;font-weight:550}.guide-cautions p{margin:7px 0}.guide-sources{margin-top:18px;font-size:10px;line-height:1.9;color:#96a49c}.guide-sources summary{cursor:pointer;color:#6c8a7b}.guide-sources li{margin:8px 0}.guide-sources a{color:#58816f}.guide-sources ul{padding-left:18px}
.selected-outline{vector-effect:non-scaling-stroke;stroke-width:1.3;stroke-dasharray:5 4}
.gate-pickers{display:grid;grid-template-columns:1fr;gap:8px}.gate-picker{border:1px solid #dce8e1;border-radius:6px;background:#fafcfb;padding:10px 11px;text-align:left}.gate-picker span{font-size:11px;color:#397963;display:block}.gate-picker small{font-size:9px;color:#8c9e94;display:block;margin-top:5px;line-height:1.5}.gate-picker.active{background:#edf7f0;border-color:#579b7d;box-shadow:0 0 0 2px #edf7f0}.gate-preview{fill:#bfe8d7;fill-opacity:.6;stroke:#238369;stroke-width:1.5;vector-effect:non-scaling-stroke;pointer-events:none}.gate-preview-point{fill:#fff;stroke:#238369;stroke-width:1.5;vector-effect:non-scaling-stroke;pointer-events:none}.workspace[data-tool^="gate-"] svg#drawing{cursor:crosshair}.capacity-help{margin:6px 0 0}.gate-pickers+.muted{margin-bottom:12px}

.facing-label{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#738780;margin-top:17px;margin-bottom:8px}.facing-label small{font-size:9px;color:#9aaba1}.facing-options{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.facing-option{border:1px solid #e0e8e3;border-radius:6px;background:#fafcfb;padding:9px 2px;font-size:10px;color:#7c9188}.facing-option span{display:block;font-size:20px;line-height:1;margin-bottom:6px}.facing-option.active{border-color:#64a28a;background:#edf7f0;color:#26765b}.facing-option:focus-visible{outline-offset:2px}

.main-config{background:#f5f9f6;border:1px solid #e0ebe3;padding:11px;border-radius:7px;margin-bottom:10px}.main-config .device-card{display:flex;align-items:center;flex-wrap:wrap;width:100%;margin-top:10px;min-height:60px;gap:8px;text-align:left;padding:10px}.main-config .device-card svg{width:30px;height:30px;margin:0}.main-config .device-card strong{flex:1}.main-config .device-card small{width:100%;margin-left:38px;margin-top:-5px}

.terminal-palette{position:absolute;z-index:8;left:18px;top:65px;width:275px;max-width:calc(100% - 24px);background:#fff;border:1px solid #c9ddd2;border-radius:9px;box-shadow:0 9px 28px #1e4f4126;max-height:calc(100% - 85px);overflow:auto;scrollbar-width:thin}.terminal-palette[hidden]{display:none}.terminal-palette-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:#f1f7f3;border-bottom:1px solid #e0eae3;cursor:move;touch-action:none;position:sticky;top:0;z-index:1}.terminal-palette-head strong{font-size:12px}.terminal-palette-head button{border:0;background:none;font-size:20px;color:#758c7e;line-height:1}.terminal-palette-body{padding:12px 14px}.terminal-palette-body label{margin-bottom:10px}.terminal-palette-body>.button{width:100%;margin-top:2px}.terminal-stop{background:#fff9ed;border-color:#dcc49b;color:#9b702c}.terminal-bay-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;max-height:132px;overflow:auto;padding:2px}.terminal-bay{border:1px solid #dfe7e2;border-radius:4px;background:#fafcfb;font-size:10px;padding:7px 3px;overflow:hidden;text-overflow:ellipsis}.terminal-bay.covered{border-color:#76b39b;color:#32795e;background:#edf8f1}.terminal-coverage-outline{fill:#6eb99c;fill-opacity:.09;stroke:#269273;stroke-width:1.5;vector-effect:non-scaling-stroke;pointer-events:none}.workspace[data-tool=terminal-brush] svg#drawing{cursor:crosshair}

.selection-step-title{display:flex;align-items:center;gap:9px;font-size:12px;font-weight:550;margin:17px 0 13px}.selection-step-title b{display:grid;place-items:center;background:#ecf5ef;color:#3b8168;border-radius:50%;width:23px;height:23px;font-size:12px;font-weight:500}.supply-options{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:12px}.supply-options button{border:1px solid #e0e8e3;background:#fafcfb;border-radius:6px;font-size:10px;padding:10px 3px;color:#7d9187}.supply-options button.active{border-color:#73aa92;background:#eef8f1;color:#2f785e}.selection-group{border:1px solid #dde8e1;border-radius:7px;padding:12px 10px;margin-top:11px;background:#fafcfb}.selection-group label{margin-bottom:10px}.selection-group-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;font-size:11px}.selection-group-head strong{font-weight:550;color:#4a7662}.selection-terminal-title{font-size:10px;display:flex;justify-content:space-between;margin:15px 0 8px;color:#708a7b}.selection-terminal-title small{font-size:9px;color:#96a89d}.selection-terminal-row{border:1px solid #e3ebe5;border-radius:5px;padding:6px;background:#fff;margin-bottom:7px}.selection-terminal-row select{margin:0;font-size:10px;padding:7px;height:32px}.selection-terminal-count{display:flex;gap:7px;align-items:center}.selection-terminal-count input{width:74px;height:30px;margin-top:5px;padding:6px}.selection-terminal-count span{color:#94a59a;font-size:10px;margin-top:5px}.selection-terminal-count button{margin-left:auto;font-size:16px;padding:5px}.selection-dimensions{font-size:10px;color:#869d90;margin-top:12px;line-height:1.8}.selection-dimensions summary{cursor:pointer}.selection-dimensions .form-grid{margin-top:8px}.selection-summary{border:1px solid #e1ebe5;border-radius:7px;background:#f4f9f5;padding:12px}.selection-summary>div{display:flex;align-items:center;justify-content:space-between;gap:5px;margin:7px 0;font-size:10px}.selection-summary span{color:#8a9f91}.selection-summary b{font-weight:550;color:#4b7e65;font-size:10px}.selection-fixed-model{font-size:11px;color:#58836b;padding:6px 0}.manual-equipment>summary{cursor:pointer;font-size:11px;color:#709480;margin-bottom:17px}.manual-equipment[open]>summary{margin-bottom:20px}

.add-supply{margin-top:11px}.supply-group .selection-group-head button:disabled{opacity:.35;cursor:default}

.compact-templates .template-card{width:25%}.row-presets{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin:10px 0 13px}.row-presets button{border:1px solid #dfe8e3;border-radius:5px;background:#fafcfb;color:#748c80;padding:9px 2px;font-size:10px}.row-presets button.active{background:#edf7f0;border-color:#69a38a;color:#2e765b}

.plan-status{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 18px 10px;padding:9px 12px;background:#fff7e8;border:1px solid #eedbb4;border-radius:6px;color:#94723c;font-size:11px;flex-shrink:0}.plan-status[hidden]{display:none}.plan-status button{white-space:nowrap}.export-checks{font-size:11px;color:#397f68;line-height:1.7}.export-checks.has-warnings{color:#a67d3f}
.catalog-banner{padding:12px;background:#edf6f2;border-radius:7px;margin-bottom:18px;color:#285d50;font-size:12px;line-height:1.7}.catalog-banner p{margin:7px 0 0}.catalog-info{font-size:11px;line-height:1.65;padding:8px 0 10px;color:#617885;overflow-wrap:anywhere}.catalog-info strong{display:block;color:#356e60;font-size:11px}.catalog-info small{display:block;font-size:10px}.catalog-info details p{margin:5px 0}.selection-terminal-row>.catalog-info{grid-column:1/-1;padding-top:0}.selection-group select{max-width:100%}.device-card strong{overflow-wrap:anywhere}.device-card small{white-space:normal}

/* Simple site outline editing: direct handles and one visible completion action. */
.boundary-entry{display:flex;align-items:center;gap:10px;width:100%;margin-top:12px;padding:11px 10px;border:1px solid #d6e6de;border-radius:7px;background:#f5faf7;text-align:left;color:#216751}.boundary-entry svg{width:30px;height:26px;flex:none;fill:white;stroke:currentColor;stroke-width:1.4}.boundary-entry span{flex:1}.boundary-entry strong{display:block;font-size:12px;font-weight:550}.boundary-entry small{display:block;font-size:9px;color:#8a9d94;margin-top:5px}.boundary-entry b{font-size:20px;font-weight:400}.boundary-rectangle{display:block;margin:8px 0 0 auto;font-size:10px}
.boundary-controls{position:absolute;z-index:5;bottom:17px;left:16px;right:16px;max-width:600px;margin:auto;padding:14px 16px;background:#fffffff5;border:1px solid #c8dfd2;border-radius:9px;box-shadow:0 4px 20px #214d3e14}.boundary-controls[hidden]{display:none}.boundary-guide strong{font-size:13px;font-weight:600}.boundary-guide>span{float:right;color:#7d9689;font-size:10px}.boundary-guide p{margin:7px 0 0;color:#7c8b83;font-size:11px;line-height:1.5}.boundary-guide .boundary-error{color:#b34d45}.boundary-actions{display:flex;align-items:center;gap:14px;margin-top:12px}.boundary-actions>span{flex:1}.boundary-actions .button{padding:8px 16px}.boundary-actions .inline-link{font-size:11px}.boundary-vertex{cursor:grab}.boundary-vertex:active{cursor:grabbing}.boundary-edge,.boundary-add{cursor:copy}.workspace[data-tool=boundary] #world [data-id]{opacity:.22;pointer-events:none}.workspace[data-tool=boundary] #world image[data-id=background]{opacity:.65}.workspace[data-tool=boundary] .canvas-hint{display:none}.workspace[data-tool=boundary] .view-tools{bottom:153px}.workspace[data-tool=boundary] .boundary-draft{pointer-events:auto}
@media(max-width:1050px){.boundary-controls{left:9px;right:9px;padding:12px}.boundary-actions{gap:10px}.boundary-guide p{font-size:10px}}

.custom-vehicle>.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px}.custom-vehicle .input-unit input{background:white}.custom-vehicle .muted{margin-bottom:0;line-height:1.6}

.layout-modes{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:12px}.layout-modes button{padding:12px 4px;background:white;border:1px solid #dde6e3;border-radius:7px;text-align:center}.layout-modes button.active{border-color:#43947a;background:#edf7f1;color:#1c7461}.layout-modes strong{display:block;font-size:12px;font-weight:550}.layout-modes small{display:block;font-size:9px;color:#8b9b93;margin-top:6px}.auto-layout-details,.row-defaults{margin-top:16px}.auto-layout-details>summary,.row-defaults>summary{font-size:11px;color:#6e897b;cursor:pointer;padding:7px 0}.auto-layout-details[open]>summary{margin-bottom:10px}.parking-row-list{display:grid;gap:8px}.parking-row-card{display:flex;align-items:center;gap:9px;width:100%;padding:12px 9px;border:1px solid #dde8e1;border-radius:7px;text-align:left;background:white}.parking-row-card:hover{border-color:#6aab8d;background:#f7fbf8}.parking-row-icon{width:26px;height:31px;background:#edf6f0;border-radius:4px;color:#32795c;font-size:19px;display:grid;place-items:center}.parking-row-card>span:nth-child(2){flex:1}.parking-row-card strong{display:block;font-size:11px;font-weight:500}.parking-row-card b{margin-left:6px;color:#1c7461;font-weight:600}.parking-row-card small{display:block;color:#899b91;font-size:9px;margin-top:6px}.parking-row-card em{font-style:normal;font-size:10px;color:#688978}.row-add{width:100%;margin-top:11px;border-style:dashed;color:#1c7461}.row-clear{display:block;font-size:10px;margin:11px 0 0 auto}.empty-rows{padding:22px 10px;text-align:center;color:#97a69d;line-height:1.8;border:1px dashed #dce7e0;border-radius:7px;font-size:11px}.canvas-row-label{cursor:pointer;paint-order:stroke;stroke:white;stroke-width:70px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.canvas-row-label{stroke-width:3px}
.row-editor{position:absolute;z-index:6;left:15px;right:15px;bottom:16px;max-width:630px;margin:auto;background:#fffffff7;border:1px solid #bfdcc9;border-radius:9px;padding:15px 17px;box-shadow:0 4px 20px #214d3e14}.row-editor[hidden]{display:none}.row-editor-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.row-editor-heading strong{font-size:13px}.row-editor-heading span{font-size:10px;color:#8a9e90}.row-editor-main{display:grid;grid-template-columns:115px 1fr;gap:20px;margin-top:12px}.row-editor-main label{display:block;font-size:10px;color:#74867c;margin:0 0 6px}.row-editor-main input,.row-editor-extra input,.row-editor-extra select{width:100%;min-width:0;padding:8px;border:1px solid #dae6df;border-radius:5px;background:white;color:#2f493c;font-size:12px}.row-editor-facings{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.row-editor-facings button{border:1px solid #dce7df;background:white;padding:8px;border-radius:5px;font-size:12px}.row-editor-facings button.active{background:#edf7f1;border-color:#448d6c;color:#1c7461}.row-editor details{margin:8px 0 0}.row-editor summary{font-size:10px;color:#8ca294;cursor:pointer}.row-editor-extra{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:10px}.row-editor-extra label{font-size:10px;color:#82988a}.row-editor-extra input,.row-editor-extra select{display:block;margin-top:5px}.row-editor-error{font-size:11px;line-height:1.6;color:#b15449;margin:9px 0}.row-editor-error[data-status=warning]{color:#94611c;background:#fff8e9;border:1px solid #ecd7ad;border-radius:5px;padding:7px 9px}.row-editor-actions{display:flex;align-items:center;gap:10px;margin-top:12px}.row-editor-actions>span{flex:1;font-size:10px;color:#8b9e92}.row-editor-actions .button{padding:8px 14px}.row-editor-actions .inline-link{font-size:10px}.workspace[data-tool=parking-row] .canvas-hint{display:none}.workspace[data-tool=parking-row] .view-tools{bottom:235px}.row-placement-preview{cursor:move}.workspace[data-tool=parking-row] svg#drawing{cursor:crosshair}
@media(max-width:1050px){.row-editor{left:9px;right:9px;padding:12px}.row-editor-main{gap:10px;grid-template-columns:95px 1fr}.row-editor-facings{gap:4px}.row-editor-facings button{padding:8px 4px}.row-editor-actions>span{font-size:9px}.row-editor-heading span{font-size:9px}}

.workspace[data-tool=parking-row] .row-being-edited{opacity:.13;pointer-events:none}

.row-editor [hidden]{display:none}

.parking-demand{padding:13px 11px;border:1px solid #c9dfd3;border-radius:7px;background:#f5faf7;margin-bottom:14px}.parking-demand label{margin:0 0 9px}.parking-demand .input-unit input{background:white;font-size:15px;font-weight:550}.parking-demand .inline-link{font-size:10px;line-height:1.7;text-align:left;margin:3px 0 10px}.parking-demand .muted{margin:7px 0 10px}.demand-total{padding-top:10px;border-top:1px solid #dce9e0;font-size:11px;color:#356a54}.demand-total strong{font-size:18px;margin:0 3px}.demand-total span{display:block;font-size:10px;color:#82988a;margin-top:6px}.parking-demand .demand-progress{font-size:10px;margin-bottom:0}.row-use-label{display:block;font-size:10px;color:#74867c;margin-top:10px}.row-use-label select{margin-left:8px;padding:6px 8px;font-size:11px;border:1px solid #dae6df;border-radius:5px;background:white;color:#2f493c}
.demand-modes{display:grid;grid-template-columns:1fr 1.2fr;gap:5px;margin-bottom:13px}.demand-modes button{border:1px solid #d7e4dc;border-radius:5px;padding:8px 3px;background:white;font-size:10px;color:#7e9187}.demand-modes button.active{color:#1c7461;background:#e8f5ed;border-color:#75ac91}.estimate-intro strong{font-size:11px;font-weight:550;color:#376c55}.estimate-intro{padding:2px 0}.auto-facing{margin-top:14px;font-size:10px}
.layout-constraint{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 8px;margin:8px 0;background:#f7f9f8;border:1px solid #e0e8e4;border-radius:5px;font-size:10px;color:#6e8879}.layout-constraint button{font-size:10px}

.canvas-bottom{height:auto;min-height:49px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px 12px;align-items:center}.canvas-bottom .legend{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:7px 14px;align-items:center;min-width:0}.legend strong{font-size:10px;font-weight:550;color:#73848d}.legend span{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;font-size:10px}.legend svg{display:block;width:23px;height:19px;flex:none}.canvas-bottom #check-status{grid-column:2;justify-self:end}.canvas-bottom #coordinate{font-size:9px}

.canvas-bottom .legend{border:1px solid #dce4e8;border-radius:4px;padding:7px 9px;background:#fff;width:100%}

/* Size-first modules share one concise placement flow. */
.module-entry-list{display:flex;flex-direction:column;gap:9px}.module-entry{display:flex;align-items:center;gap:10px;text-align:left;width:100%;padding:12px 10px;border:1px solid #dce7e3;border-radius:7px;background:#fafdfb;color:#2b6e5b}.module-entry:hover{border-color:#80af9d;background:#f1f8f4}.module-entry svg{width:34px;height:30px;flex-shrink:0}.module-entry span{flex:1;min-width:0}.module-entry strong{display:block;font-size:12px;font-weight:550}.module-entry small{display:block;color:#869b92;font-size:10px;margin-top:4px;line-height:1.5}.module-entry b{font-size:18px;font-weight:400;color:#6d9a88}.module-dialog{max-width:440px}.module-dialog .dialog-body>label{margin-bottom:14px}.module-dialog .form-grid{margin-bottom:14px}.module-dialog [hidden]{display:none}.module-unit-note{font-size:11px;line-height:1.7;color:#648274;padding:9px 11px;background:#f1f7f3;border-radius:6px}.module-placement-preview{pointer-events:none}

.workspace[data-tool=box-select] svg#drawing{cursor:crosshair}.selection-rectangle{fill:#2d86c51a;stroke:#237bdf;pointer-events:none}.module-lane-message{font-size:12px;line-height:1.9;color:#657b83}

/* Keep help, focus and small-screen handoff usable without changing the drawing frame. */
#help-dialog{width:700px}#help-dialog .dialog-head,#vehicle-dialog .dialog-head{position:sticky;top:0;background:white;z-index:1;border-bottom:1px solid var(--line)}.help-content li p{font-size:12px;color:#61757e}.help-content li strong{font-size:13px}.help-content .muted{color:#758890}.help-content .shortcut-list{font-size:10px;line-height:1.7}.help-content kbd{font-size:10px}.small-screen-note{display:none}
@media(max-width:920px) and (min-width:720px){nav{display:flex;margin:0;gap:0}nav .nav-active{display:none}nav button{font-size:11px}.app-header{gap:12px}}
@media(max-width:719px){body{min-width:0;overflow:auto}.command-bar,.editor{display:none}.app-header{position:absolute;top:0;left:0;right:0;height:auto;display:grid;grid-template-columns:1fr auto;padding:18px 24px;gap:14px;background:#fff}.header-actions .text-button{display:none}.app-header nav{display:block;grid-column:1/-1;height:auto;margin:0}.app-header nav .nav-active{display:none}.app-header nav button{font-size:12px}.brand small,.brand-mark{display:none}.brand strong{font-size:21px}.header-actions{gap:0;grid-column:2;grid-row:1}.small-screen-note{display:flex;min-height:100dvh;padding:145px 24px 36px;flex-direction:column;justify-content:center;align-items:flex-start;max-width:540px;margin:auto;background:#f5f8f7}.small-screen-brand{font-size:16px;letter-spacing:1px;color:#1c7461;font-weight:650}.small-screen-note h1{font-size:23px;line-height:1.5;margin:17px 0 12px}.small-screen-note p{font-size:13px;line-height:1.9;color:#6b8178;margin:0 0 13px}.small-screen-note>div{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}dialog{max-width:calc(100vw - 24px);max-height:90dvh}.dialog-head{padding:18px}.dialog-head h2{font-size:17px}.dialog-body{padding:18px}.help-content{padding-top:0}.help-content li{padding-left:30px}.dialog-foot{padding:14px 18px}.module-dialog .dialog-foot{flex-wrap:wrap}#toast{max-width:calc(100vw - 24px);width:max-content}}

.command-actions{flex-shrink:0}
:root .app-header nav .tool-home-link{display:inline-flex;align-items:center;gap:5px;color:var(--muted,#7b8b94);font-size:12px;text-decoration:none;white-space:nowrap}
:root .app-header nav .tool-home-link:hover{color:var(--green,#1c7461)}
:root .app-header nav .tool-home-link:focus-visible{outline:2px solid #1c7461;outline-offset:5px;border-radius:2px}
