:root{--bg: #eef1f3;--panel: #ffffff;--ink: #172026;--muted: #66737b;--line: #d8dee2;--teal: #0f766e;--teal-dark: #0b4f4a;--amber: #ca8a04;--danger: #dc2626;--warning: #f59e0b;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink)}button,input,select,textarea{font:inherit}button{min-height:34px;padding:0 10px;color:var(--ink);background:#f7f8f9;border:1px solid var(--line);border-radius:7px;cursor:pointer}button:hover{border-color:var(--teal)}button:disabled{cursor:not-allowed}input,select,textarea{width:100%;padding:8px 9px;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:7px}label{display:grid;gap:5px;color:var(--muted);font-size:.82rem;font-weight:700}.app-shell{min-height:100vh;padding:22px}.app-header{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:18px;padding:20px 22px;background:var(--panel);border:1px solid var(--line);border-radius:8px}.app-header h1{margin:0;font-size:clamp(1.8rem,4vw,3.6rem);line-height:.95;letter-spacing:0}.eyebrow{margin:0 0 6px;color:var(--teal);font-size:.78rem;font-weight:800;letter-spacing:0;text-transform:uppercase}.header-meta{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.header-meta span,.route-stats span,.inline-list span{padding:6px 8px;background:#eef7f6;border:1px solid #cfe6e3;border-radius:7px;color:var(--teal-dark);font-size:.78rem;font-weight:800}.workspace{display:grid;grid-template-columns:minmax(250px,310px) minmax(460px,1fr) minmax(250px,330px);gap:16px;align-items:start}.sidebar,.canvas-column{display:grid;gap:16px}.panel,.canvas-panel{background:var(--panel);border:1px solid var(--line);border-radius:8px}.panel{display:grid;gap:12px;padding:16px}.panel h2,.canvas-toolbar h2{margin:0;font-size:1rem}.panel p,.canvas-toolbar p,.muted{margin:0;color:var(--muted);font-size:.88rem}.muted-panel{background:#f8fafb}.panel-title-row,.canvas-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px}.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.button-grid,.segmented,.route-actions{display:flex;flex-wrap:wrap;gap:7px}.segmented button.active,.list-item.active,.route-card.active,.primary-button{color:#fff;background:var(--teal);border-color:var(--teal)}.check-row{display:flex;align-items:center;gap:8px;color:var(--ink)}.check-row input{width:auto}.canvas-panel{overflow:hidden}.canvas-toolbar{padding:16px;border-bottom:1px solid var(--line)}.canvas-scroll{width:100%;overflow:auto;padding:16px}.room-canvas{position:relative;overflow:hidden;border:2px solid #1f2933;background-image:linear-gradient(#dfe5e8 1px,transparent 1px),linear-gradient(90deg,#dfe5e8 1px,transparent 1px);-webkit-user-select:none;user-select:none}.route-svg{position:absolute;inset:0;z-index:12;pointer-events:auto}.route-line{cursor:pointer;opacity:.95}.clearance-zone,.equipment-block,.port-dot,.node-dot,.node-label,.dim-line,.dim-label{position:absolute}.clearance-zone{z-index:5;pointer-events:none;background:#1d4ed814;border:1px dashed rgba(29,78,216,.45)}.clearance-zone.warning{background:#f59e0b24;border-color:#f59e0bb3}.equipment-block{z-index:30;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:4px;text-align:center;background:#dde3e6;border:1px solid #222;cursor:grab}.equipment-block.selected{background:#ffd08a;border:2px solid #111}.equipment-block.danger{border:2px solid var(--danger)}.equipment-block.warning{border:2px solid var(--warning)}.equipment-block strong,.equipment-block span,.equipment-block small{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px}.port-dot,.node-dot{z-index:80;width:12px;height:12px;min-height:0;padding:0;display:block;border:2px solid #fff;border-radius:999px;box-shadow:0 0 0 1px #17202659}.port-dot.inactive,.node-dot.inactive{opacity:.16;filter:grayscale(1);pointer-events:none}.node-dot{z-index:90;width:16px;height:16px;min-height:0;background:#fff}.node-dot.selected,.node-dot.tee{background:#111}.node-dot.z-node{background:#fff;box-shadow:0 0 0 3px #0f766e33}.iso-preview{height:min(68vh,720px);min-height:430px;padding:16px;background:radial-gradient(circle at 16px 16px,rgba(23,32,38,.06) 1px,transparent 1.5px) 0 0 / 28px 28px,#f8fafb}.iso-preview svg{width:100%;height:100%;display:block}.iso-floor-surface{fill:#ffffffd6;stroke:#17202652;stroke-width:2}.iso-equipment-side{stroke:#17202659;stroke-width:1.3}.iso-equipment-side.side-a{fill:#cfd8dd}.iso-equipment-side.side-b{fill:#b9c5cb}.iso-equipment-top{fill:#f6c873;stroke:#172026;stroke-width:1.4}.iso-equipment text,.iso-route text,.iso-node text{font-size:11px;font-weight:800;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round}.iso-port{stroke:#fff;stroke-width:2}.iso-port.inactive,.iso-node.inactive{opacity:.16}.node-label{z-index:95;color:#111;font-size:10px;pointer-events:none;white-space:nowrap}.dim-line{z-index:60;background:#111;pointer-events:none}.dim-label{z-index:70;transform:translate(-50%,-50%);padding:2px 5px;background:#fff;border:1px solid #333;font-size:10px;white-space:nowrap;pointer-events:none}.stack-list{display:grid;gap:8px}.list-item{display:grid;gap:3px;height:auto;min-height:56px;justify-items:start;text-align:left}.list-item span{color:var(--muted);font-size:.78rem}.route-list-panel{overflow:hidden}.route-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}.route-card{display:grid;gap:9px;padding:12px;border:1px solid var(--line);border-radius:8px}.route-card.active p,.route-card.active label{color:#ffffffd6}.route-card-head{display:flex;justify-content:space-between;border:0;background:transparent;padding:0;min-height:0}.route-card p{margin:0;color:var(--muted);font-size:.82rem}.route-stats,.inline-list,.result-grid{display:flex;flex-wrap:wrap;gap:7px}.inline-list span{display:inline-flex;align-items:center;gap:6px}.inline-list button{width:20px;min-height:20px;padding:0}.result-grid{margin-top:4px}.result-grid span{color:var(--muted)}.result-grid strong{margin-right:10px}.result-grid p{flex-basis:100%;margin-top:8px}@media(max-width:1180px){.workspace{grid-template-columns:1fr}.sidebar{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}}@media(max-width:680px){.app-shell{padding:12px}.app-header,.canvas-toolbar,.panel-title-row{align-items:flex-start;flex-direction:column}.field-grid{grid-template-columns:1fr}}
