: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}.group-list{display:grid;gap:6px;margin:8px 0 4px}.group-list button{justify-content:flex-start;padding:7px 9px;font-size:.82rem}.segmented button.active,.group-list button.active,.list-item.active,.route-card.active,.primary-button{color:#fff;background:var(--teal);border-color:var(--teal)}.list-item.group-item{border-style:dashed;background:#f7fbfa}.list-item.hidden-item{opacity:.52}.wide-action{width:100%;justify-content:center;margin-top:2px}.secondary-link-button{width:100%;justify-content:center;color:var(--teal-dark);background:#eef7f6;border-color:#cfe6e3;font-weight:800}.component-layout{display:grid;grid-template-columns:minmax(280px,340px) minmax(520px,1fr) minmax(280px,340px);gap:16px;align-items:start}.component-net-panel{overflow:auto}.component-net-viewport{overflow:hidden;min-height:620px;cursor:grab;background:#f8fafb}.component-net-viewport:active{cursor:grabbing}.component-net{display:grid;gap:0;justify-content:center;padding:22px;min-height:560px;background:#f8fafb;transition:transform .08s ease}.net-row{display:grid;grid-template-columns:var(--net-side) var(--net-front) var(--net-side) var(--net-front)}.net-face{position:relative;overflow:hidden;min-width:0;min-height:0;background:#d9e0e3;border:1px solid #87939a}.net-face.drawing,.bottom-service-draw-layer.drawing{cursor:crosshair;box-shadow:inset 0 0 0 2px #0f766e73}.face-top,.face-bottom{width:var(--net-front);height:var(--net-side);margin-left:var(--net-side)}.net-row .face-left,.net-row .face-right{width:var(--net-side);height:var(--net-height)}.net-row .face-front,.net-row .face-back{width:var(--net-front);height:var(--net-height)}.net-face img,.net-face-empty{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.net-face img{cursor:grab}.net-face img.stretch{object-fit:fill;cursor:default}.net-face-empty{background:linear-gradient(135deg,rgba(255,255,255,.28),transparent),#d8dee2}.net-face>span{position:absolute;left:8px;top:7px;z-index:3;padding:3px 6px;color:#172026;background:#ffffffc7;border-radius:5px;font-size:.72rem;font-weight:900}.net-zone,.net-service-zone{position:absolute;z-index:2;border:2px solid;cursor:move}.net-draw-preview{z-index:4;pointer-events:none;border-style:dashed}.net-service-zone{border-style:dashed}.net-zone.selected,.net-service-zone.selected{outline:2px solid rgba(15,118,110,.92);outline-offset:2px}.net-zone i,.net-service-zone i{position:absolute;right:-5px;bottom:-5px;width:11px;height:11px;background:#fff;border:2px solid currentColor;cursor:nwse-resize}.net-port{position:absolute;z-index:4;width:16px;height:16px;min-height:16px;padding:0;border:2px solid #fff;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 1px 4px #00000047;cursor:grab}.net-port.selected{outline:3px solid rgba(15,118,110,.75);outline-offset:2px}.port-air{background:#1d4ed8}.port-drain{background:#555}.port-water{background:#0891b2}.port-electric{background:#ca8a04}.dimension-tag{position:absolute;z-index:30;pointer-events:auto;display:inline-flex;align-items:center;justify-content:center;min-height:24px;min-width:54px;padding:2px 6px;color:#172026;background:#ffffffe0;border-color:#0f766e47;font-size:.68rem;font-weight:900;cursor:text}.dimension-tag input{width:62px;min-height:18px;padding:0 3px;border:0;background:transparent;color:inherit;font:inherit;text-align:center;outline:1px solid rgba(15,118,110,.42)}.dimension-line{position:absolute;z-index:4;pointer-events:none;border-color:#0f766e9e}.dimension-line:before,.dimension-line:after{content:"";position:absolute;background:#0f766eb8}.dimension-line.horizontal{left:10%;right:10%;border-top:1px solid rgba(15,118,110,.62)}.dimension-line.horizontal:before,.dimension-line.horizontal:after{top:-5px;width:1px;height:10px}.dimension-line.horizontal:before{left:0}.dimension-line.horizontal:after{right:0}.dimension-line.vertical{top:10%;bottom:10%;border-left:1px solid rgba(15,118,110,.62)}.dimension-line.vertical:before,.dimension-line.vertical:after{left:-5px;width:10px;height:1px}.dimension-line.vertical:before{top:0}.dimension-line.vertical:after{bottom:0}.dimension-line.top-line,.dimension-line.bottom-line{bottom:auto}.dimension-line.left-line,.dimension-line.right-line{right:auto}.dimension-line.width-line{right:auto;border-top-width:2px}.dimension-line.height-line{bottom:auto;border-left-width:2px}.dimension-tag.top{left:50%;top:6px;bottom:auto;transform:translate(-50%,-50%)}.dimension-tag.bottom{left:50%;top:auto;bottom:auto;transform:translate(-50%,-50%)}.dimension-tag.left{left:6px;right:auto;top:50%;transform:translate(-50%,-50%)}.dimension-tag.right{left:auto;right:auto;top:50%;transform:translate(-50%,-50%)}.dimension-tag.width,.dimension-tag.height{transform:translate(-50%,-50%)}.bottom-service-wrap{position:relative;width:fit-content;margin-left:var(--net-side);background:#f59e0b14;border:2px dashed rgba(181,128,22,.55)}.bottom-service-draw-layer{position:absolute;inset:0;z-index:1;pointer-events:none}.bottom-service-draw-layer.drawing{pointer-events:auto}.bottom-service-wrap .face-bottom{margin-left:0}.bottom-service-wrap>.net-zone{z-index:3}.service-bound-handle{position:absolute;z-index:6;min-height:22px;padding:2px 6px;color:#7c4a03;background:#ffffffe6;border-color:#b5801680;font-size:.68rem;font-weight:900}.service-bound-handle.left{left:4px;top:50%;transform:translateY(-50%);cursor:ew-resize}.service-bound-handle.right{right:4px;top:50%;transform:translateY(-50%);cursor:ew-resize}.service-bound-handle.back{top:4px;left:50%;transform:translate(-50%);cursor:ns-resize}.service-bound-handle.front{bottom:4px;left:50%;transform:translate(-50%);cursor:ns-resize}.face-upload-grid,.face-image-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.face-image-card{display:grid;align-content:start;gap:8px;padding:10px;background:#f8fafb;border:1px solid rgba(135,147,154,.32);border-radius:8px}.face-image-controls{display:grid;gap:7px}.face-image-controls button{justify-content:center;min-height:28px;font-size:.78rem}.face-image-controls label{gap:4px;font-size:.72rem}.face-image-controls input[type=range]{width:100%}.component-subpanel{gap:10px}.component-pill-list{display:grid;gap:6px}.component-pill-list button{display:flex;align-items:center;justify-content:flex-start;gap:8px;font-size:.8rem}.component-pill-list span{width:12px;height:12px;border-radius:3px}.component-pill-list .range-value{width:auto;height:auto;min-width:48px;border-radius:0;color:var(--muted);font-size:.75rem}.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}.canvas-scroll.panning,.canvas-scroll.panning .room-canvas{cursor:grabbing}.zoom-controls{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--line);background:#fbfcfd}.zoom-controls span{min-width:48px;color:var(--muted);font-size:.84rem;font-weight:800;text-align:center}.zoom-controls button.active{color:#fff;background:var(--teal);border-color:var(--teal)}.room-canvas{position:relative;overflow:hidden;border:2px solid #1f2933;background-image:radial-gradient(circle at 18px 22px,rgba(31,41,55,.035) 0 1px,transparent 1.4px),radial-gradient(circle at 42px 44px,rgba(255,255,255,.5) 0 1px,transparent 1.6px),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}.route-line.service-route-strip{stroke-width:46px;stroke-linecap:round;stroke-linejoin:round;opacity:.5;pointer-events:stroke}.route-line.service-route-strip.walkway-fill-none{stroke:transparent}.route-line.service-route-strip.walkway-fill-yellow{stroke:#f5c430b8;filter:drop-shadow(0 1px 0 rgba(181,128,22,.42))}.route-line.service-route-strip.walkway-fill-green{stroke:#379156a8}.route-line.service-route-strip.walkway-fill-blue{stroke:#3784c4a8}.plan-walkway{cursor:pointer}.plan-walkway-border{stroke:#b58016e0;stroke-width:var(--walkway-border-width, 58px);stroke-linecap:round;stroke-linejoin:round}.plan-walkway.access-route .plan-walkway-border{stroke:#f97316d1}.plan-walkway.access-route .plan-walkway-fill{stroke:#ffedd594}.plan-walkway.access-route .plan-walkway-hazard{stroke:#7c2d129e}.plan-walkway-fill{stroke:transparent;stroke-width:var(--walkway-fill-width, 44px);stroke-linecap:round;stroke-linejoin:round}.plan-walkway.walkway-fill-yellow .plan-walkway-fill{stroke:#f5c430b8}.plan-walkway.walkway-fill-green .plan-walkway-fill{stroke:#379156b8}.plan-walkway.walkway-fill-blue .plan-walkway-fill{stroke:#3784c4b8}.plan-walkway-hazard{stroke:#18181bb3;stroke-width:var(--walkway-hazard-width, 46px);stroke-dasharray:14 12;stroke-linecap:round;stroke-linejoin:round;opacity:.42}.plan-service-zones{pointer-events:none}.plan-service-corners{fill:none;stroke:#b58016db;stroke-width:5px;stroke-linecap:square;stroke-linejoin:round}.plan-service-corners.custom-bounds{stroke:#b580169e;stroke-width:4px}.plan-service-corners.custom-area{stroke-width:4px;stroke-dasharray:none}.plan-service-mat{stroke:#945e08a3;stroke-width:1.5}.plan-service-mat.walkway-fill-none{fill:transparent}.plan-service-mat.walkway-fill-yellow{fill:#f5c430b8}.plan-service-mat.walkway-fill-green{fill:#379156a3}.plan-service-mat.walkway-fill-blue{fill:#3784c4a3}.plan-service-mat.walkway-line-hazard{stroke-dasharray:8 5}.segment-label.editable{cursor:pointer;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round}.clearance-zone,.equipment-block,.port-dot,.riser-marker,.node-dot,.node-label,.dim-line,.dim-label{position:absolute}.guide-line{position:absolute;z-index:65;pointer-events:none;background:#0f766e94}.guide-line.snapped{background:repeating-linear-gradient(45deg,var(--guide-color, rgba(13, 148, 136, .85)) 0 6px,transparent 6px 12px)}.guide-line.vertical{top:0;bottom:0;width:1px}.guide-line.horizontal{left:0;right:0;height:1px}.group-selection-box{position:absolute;z-index:90;pointer-events:none;border:1px dashed rgba(13,148,136,.95);background:#0d948814}.active-group-frame{position:absolute;z-index:64;pointer-events:none;border:1.5px dotted rgba(15,118,110,.9);background:#0f766e09;box-shadow:0 0 0 3px #0f766e0d}.iso-equipment.faded,.iso-route.faded,.iso-node.faded,.iso-riser.faded{opacity:.18}.iso-equipment.selected .iso-equipment-edge,.iso-equipment.selected .iso-equipment-top,.iso-route.selected line,.iso-route.selected polygon,.iso-riser.selected line{filter:drop-shadow(0 0 5px rgba(15,118,110,.6))}.iso-route.selected polygon{opacity:1}.iso-flow-pulse{stroke-dasharray:5 13;animation:flowPulse 1.1s linear infinite;opacity:.88;pointer-events:none}.iso-electric-pulse{stroke-dasharray:1.5 9;animation:electricPulse .85s linear infinite;opacity:.9;pointer-events:none}.iso-control-panel{fill:#0f766e;stroke:#14532d;stroke-width:1.8;filter:drop-shadow(0 0 5px rgba(20,184,166,.55))}.iso-cooling-hole{fill:#263238;stroke:#0f172a;stroke-width:1.4}.iso-cooling-flow{stroke:#67e8f952;stroke-width:2.2;stroke-linecap:round;stroke-dasharray:2 10;animation:coolingFlow 2.8s linear infinite;opacity:.42;filter:blur(.2px)}.iso-cooling-flow.reverse{stroke:#7dd3fc42;stroke-width:2.6}.iso-loss-marker{pointer-events:none}.iso-loss-marker circle{fill:#f59e0b29;stroke:#d97706d1;stroke-width:2;stroke-dasharray:3 3}.iso-loss-marker text{fill:#b45309;font-size:9px;font-weight:900;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round}.iso-loss-marker.tee-loss circle{fill:#dc262621;stroke:#dc2626c7}.iso-inline-box{pointer-events:none;filter:drop-shadow(0 2px 1.8px rgba(15,23,42,.2))}.iso-inline-box-face{fill:#20272c;stroke:#0b1115;stroke-width:1.15;stroke-linejoin:round}.iso-inline-box-face.side-b,.iso-inline-box-face.side-c{fill:#151a1e}.iso-inline-box-face.top{fill:#30363b}.iso-inline-face{opacity:1}@keyframes flowPulse{to{stroke-dashoffset:-19}}@keyframes electricPulse{to{stroke-dashoffset:-12}}@keyframes coolingFlow{to{stroke-dashoffset:-23}}.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}.forklift-clearance-layer{position:absolute;inset:0;pointer-events:none;z-index:6}.forklift-turning-radius{position:absolute;border:2px dashed rgba(14,116,144,.52);background:#0ea5e914;border-radius:50%}.forklift-aisle-guide{position:absolute;display:grid;place-items:center;border:2px solid rgba(245,158,11,.62);background:#fbbf241a}.forklift-aisle-guide span{border:1px solid rgba(146,64,14,.3);background:#fffbebeb;color:#78350f;font-size:.72rem;font-weight:900;padding:2px 6px;border-radius:3px}.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.group-selected,.node-dot.group-selected{box-shadow:0 0 0 3px #0d948842;outline:1px dashed rgba(13,148,136,.82);outline-offset:3px}.node-dot.door-node{width:40px;height:10px;border-radius:2px;background:#4b5563;border-width:2px;box-shadow:0 1px #0f172a1f}.node-dot.access-door-node{height:14px;background:linear-gradient(180deg,#fed7aa,#fb923c);border-color:#f97316}.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}.riser-marker{z-index:88;width:26px;height:26px;min-height:0;padding:0;display:grid;place-items:center;background:#fff;border:3px solid currentColor;border-radius:999px;box-shadow:0 4px 12px #17202629;font-size:11px;font-weight:900}.riser-marker.active{background:#172026;color:#fff!important}.riser-marker.inactive{opacity:.35}.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{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;height:min(68vh,720px);min-height:430px;padding:16px;background:radial-gradient(circle at 12px 10px,rgba(23,32,38,.028) 0 .8px,transparent 1.2px) 0 0 / 19px 23px,radial-gradient(circle at 2px 2px,rgba(255,255,255,.56) 0 .9px,transparent 1.35px) 0 0 / 27px 31px,radial-gradient(circle at 18px 18px,rgba(23,32,38,.035) 1px,transparent 1.5px) 0 0 / 32px 32px,linear-gradient(135deg,#ffffffb8,#e7ecef61),#eef3f4}.iso-preview.panning{cursor:grabbing}.iso-preview.rotating{cursor:ew-resize}.iso-preview svg{width:100%;height:100%;display:block}.iso-floor-surface{fill:#eff3f4;stroke:#27313757;stroke-width:1.45}.iso-room-shell{pointer-events:none}.iso-room-wall{cursor:pointer;pointer-events:auto}.iso-room-wall>polygon{stroke:#4d5f6a8a;stroke-width:1.1}.iso-room-wall>polyline{fill:none;stroke:#2331394d;stroke-width:1.2}.iso-room-wall.selected>polygon{stroke:#2563ebe6;stroke-width:2.2}.iso-room-wall.drawing>polygon{cursor:crosshair;filter:drop-shadow(0 0 6px rgba(37,99,235,.28))}.iso-room-ceiling{pointer-events:none;stroke:#5f737e38;stroke-width:1;stroke-dasharray:6 5}.iso-wall-label{fill:#1f2937;font-size:9px;font-weight:900;text-anchor:middle;paint-order:stroke;stroke:#ffffffdb;stroke-width:4px}.iso-wall-vent{pointer-events:auto;cursor:grab}.iso-wall-vent:active{cursor:grabbing}.iso-wall-vent .vent-soft-shadow{fill:#0f172a24;stroke:none}.iso-wall-vent .vent-frame{fill:#94a3b8;stroke:#334155d1;stroke-width:1.55}.iso-wall-vent .louver-face-panel{fill:#d9e4ec!important;stroke:#47556985;stroke-width:.75}.iso-wall-vent .vent-cutout{fill:#94a3b8;stroke:#1e293b94;stroke-width:.9}.iso-wall-vent .vent-recess{fill:#64748b;stroke:#94a3b857;stroke-width:.9;opacity:.78}.iso-wall-vent .louver-cavity{fill:#64748b6b;stroke:#cbd5e16b;stroke-width:.9}.iso-wall-vent .vent-inner-frame,.iso-wall-vent .duct-flange{fill:#94a3b86b;stroke:#cbd5e180;stroke-width:.8}.iso-wall-vent .duct-collar{fill:#64748bc7;stroke:#cbd5e173;stroke-width:.85}.iso-wall-vent .duct-mouth{fill:#475569;stroke:#e2e8f047;stroke-width:.7}.iso-wall-vent line,.iso-wall-vent path{fill:none;stroke:#162b38db;stroke-width:1.35;stroke-linecap:round}.iso-wall-vent circle{fill:#c4d5de8f;stroke:#1f3d4cd1;stroke-width:1.15}.iso-wall-vent.selected .vent-frame{stroke:#2563eb;stroke-width:2.15}.iso-wall-vent.face-wall .vent-frame{filter:drop-shadow(2px 3px 2px rgba(15,23,42,.18))}.iso-wall-vent.side-wall .vent-frame,.iso-wall-vent.side-wall .vent-recess,.iso-wall-vent.side-wall .louver-cavity,.iso-wall-vent.side-wall .vent-inner-frame{filter:saturate(.96) brightness(.94)}.iso-wall-vent.acousticLouver .vent-frame{fill:#64748b;stroke-width:2.05}.iso-wall-vent.acousticLouver .vent-recess{fill:#475569;opacity:.84}.iso-wall-vent.acousticLouver .louver-cavity{fill:#47556985}.iso-wall-vent .acoustic-depth{fill:none;stroke:#0f172a80;stroke-width:1.6}.iso-wall-vent .louver-slat{fill:none;stroke:#64748b;stroke-width:1;stroke-linecap:round}.iso-wall-vent.acousticLouver .louver-slat{stroke:#64748b;stroke-width:1.25}.iso-wall-vent .louver-slat-shadow{fill:none;stroke:#0f172a2e;stroke-width:1;stroke-linecap:round}.iso-wall-vent .louver-highlight,.iso-wall-vent .vent-frame-highlight{stroke:#ffffffb8;stroke-width:.75}.iso-wall-vent .duct-bolt{fill:#334155;stroke:#e2e8f06b;stroke-width:.45}.iso-wall-vent .fan-ring{fill:#1f2937c7;stroke:#94a3b8b3;stroke-width:1.45}.iso-wall-vent .fan-grille-ring{fill:none;stroke:#cbd5e18c;stroke-width:.75}.iso-wall-vent .fan-spoke{stroke:#cbd5e17a;stroke-width:.65}.iso-wall-vent .fan-hub{fill:#334155;stroke:#fff6}.iso-wall-vent .fan-blade{fill:#64748bdb;stroke:#cbd5e159;stroke-width:.65}.iso-wall-vent .vent-airflow{fill:none;stroke-width:1.1;stroke-dasharray:3 3;opacity:.42}.iso-wall-vent .vent-airflow-intake{stroke:#38bdf8}.iso-wall-vent .vent-airflow-exhaust{stroke:#f59e0b}.iso-wall-vent .vent-label{fill:#1f2937;font-size:8px;font-weight:900;text-anchor:middle;paint-order:stroke;stroke:#ffffffdb;stroke-width:4px}.iso-wall-dimensions{pointer-events:auto}.iso-wall-dimension-line line,.iso-wall-extension-line{stroke:#0c495be0;stroke-width:.9}.iso-wall-extension-line{stroke:#0c495b85;stroke-dasharray:4 3;pointer-events:none}.iso-wall-dimension-line line{pointer-events:none}.iso-wall-dimension-tag{cursor:pointer;pointer-events:all}.iso-wall-dimension-tag .hitbox{fill:transparent;stroke:transparent;pointer-events:all}.iso-wall-dimension-tag rect{fill:#fffffff0;stroke:#0c495b94;stroke-width:.8}.iso-wall-dimension-tag text{fill:#0f2f3c;font-size:7px;font-weight:900;text-anchor:middle}.iso-wall-dimension-editor{pointer-events:all}.iso-wall-dimension-editor input{width:100%;height:22px;box-sizing:border-box;border:1px solid rgba(12,73,91,.65);border-radius:4px;background:#fffffff5;color:#0f2f3c;font-size:10px;font-weight:800;text-align:center;outline:none;box-shadow:0 2px 8px #0f2d3c1f}.iso-floor-tiles{pointer-events:auto}.iso-floor-tile{cursor:pointer}.iso-floor-tile-base{fill:#b8b8b2}.iso-floor-tile-texture{opacity:1}.iso-floor-tile-color-tint{opacity:.16;mix-blend-mode:multiply;pointer-events:none}.iso-floor-tile-epoxy-sheen{fill:url(#isoEpoxyTileSheen);opacity:.92;pointer-events:none}.iso-floor-tile-grip-dots{fill:url(#isoGripDotPattern);opacity:.62;mix-blend-mode:multiply;pointer-events:none}.iso-floor-tile-stroke{fill:none;stroke:transparent;stroke-width:0}.iso-floor-tile.selected .iso-floor-tile-stroke{stroke:#b58016e6;stroke-width:1.05}.iso-floor-large-texture{pointer-events:none}.iso-floor-large-base{fill:#b8b8b2}.iso-floor-large-image{opacity:.82}.iso-floor-large-soften{fill:#f8fafc1a}.iso-floor-grid{display:none;pointer-events:none}.iso-floor-grid>line{stroke:#4b555b03;stroke-width:.12}.iso-floor-plus line{stroke:#4b555b21;stroke-width:.7;stroke-linecap:round}.iso-anchor-marks{pointer-events:none}.iso-anchor-marks circle{fill:#4650562e;stroke:#ffffff75;stroke-width:.45}.iso-route-guides{pointer-events:none}.iso-route-guide{fill:none;stroke:#46505621;stroke-width:.7;stroke-dasharray:9 7;stroke-linecap:round;stroke-linejoin:round}.iso-route-guide.air{stroke:#1d4ed821}.iso-route-guide.electric{stroke:#ca8a0424}.iso-route-guide.water{stroke:#0891b21f}.iso-route.service .iso-service-fill{stroke:#eef2f375;opacity:.86}.iso-route.service .iso-service-edge{stroke:#b58016b8;opacity:.74}.iso-route.service .iso-service-centerline{stroke:#744d07ad;stroke-dasharray:6 6;opacity:.75;pointer-events:stroke}.iso-route.service.walkway-fill-green .iso-service-fill{stroke:#57875b80}.iso-route.service.walkway-fill-blue .iso-service-fill{stroke:#457ca87a}.iso-route.service.walkway-fill-yellow .iso-service-fill{stroke:#facc1585}.iso-route.service.walkway-line-hazard .iso-service-centerline{stroke:#111827b3;stroke-dasharray:7 5}.iso-route.service.floor-walkway{cursor:pointer}.iso-route.service.access-route .iso-service-floor-fill{stroke:#ffedd5d1}.iso-route.service.access-route .iso-service-floor-edge{stroke:#f97316f2;stroke-width:2.1}.iso-route.service.access-route .iso-service-floor-edge-hazard{stroke:#7c2d12b3}.iso-service-floor-fill{fill:none;stroke:#ebb923;stroke-width:var(--iso-service-width, 50px);stroke-linecap:round;stroke-linejoin:round;opacity:.98}.iso-service-elbow-fill{display:none}.iso-service-floor-edge{stroke:#b58016f5;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.iso-service-floor-edge-hazard{stroke:#111827b8;stroke-width:1.1;stroke-dasharray:8 13;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.iso-service-floor-joint{display:none}.iso-route.service.walkway-fill-none .iso-service-floor-fill{fill:transparent;stroke:transparent;opacity:1}.iso-route.service.walkway-fill-green .iso-service-floor-fill{stroke:#459c58}.iso-route.service.walkway-fill-blue .iso-service-floor-fill{stroke:#3e8bcd}.iso-route.service.walkway-fill-yellow .iso-service-floor-fill{stroke:#f7c92a}.iso-platform-shadow{fill:#1f292f21;stroke:none;filter:url(#isoPlatformShadow)}.iso-platform-surface{fill:#d0d8dc57;stroke:#4b555b38;stroke-width:.75}.iso-service-boundaries{pointer-events:none}.iso-service-boundary{fill:none;stroke:#b58016d1;stroke-width:1.7;stroke-linecap:square;stroke-linejoin:round}.iso-service-boundary.custom-area{stroke:#b58016eb;stroke-width:1.9;stroke-dasharray:none}.iso-service-mat{stroke:#945e0894;stroke-width:.75}.iso-service-mat.walkway-fill-none{fill:transparent}.iso-service-mat.walkway-fill-yellow{fill:#f5c430b8}.iso-service-mat.walkway-fill-green{fill:#379156ad}.iso-service-mat.walkway-fill-blue{fill:#3784c4ad}.iso-service-mat.walkway-line-hazard{stroke-dasharray:4 3}.iso-custom-service-area{stroke-width:1.1;stroke-dasharray:5 3;vector-effect:non-scaling-stroke}.iso-service-front-zone{fill:#b5801606;stroke:#b58016d6;stroke-width:1.05;stroke-dasharray:7 5}.iso-service-text{fill:#744d07c2;font-size:4.8px;font-weight:900;letter-spacing:.18px;paint-order:stroke;stroke:#eef2f3e6;stroke-width:1.7px;stroke-linejoin:round}.iso-equipment-side{stroke:#1f2a30;stroke-width:1.3}.iso-equipment-side.side-a{fill:url(#isoFaceLightGradient)}.iso-equipment-side.side-b{fill:url(#isoFaceDarkGradient)}.iso-equipment-side.side-c{fill:url(#isoFaceDarkGradient)}.iso-equipment-side.side-d{fill:url(#isoFaceMidGradient)}.iso-equipment-top{fill:url(#isoBoxTopGradient);stroke:#172026;stroke-width:1.4}.iso-equipment-edge{stroke:#141d23c7;stroke-width:1.15;stroke-linecap:round;stroke-linejoin:round}.iso-photo-faces{pointer-events:none}.iso-photo-face{opacity:1;filter:saturate(1.02) contrast(1.02)}.iso-equipment-sprite{pointer-events:none}.iso-equipment-sprite-shadow{opacity:.22;filter:url(#isoSoftShadow)}.iso-equipment-sprite-base{opacity:1;filter:saturate(1.03) contrast(1.02)}.iso-sprite-label{filter:url(#isoLabelShadow)}.iso-contact-shadow{fill:#1f292f25;stroke:none;filter:url(#isoSoftShadow)}.iso-contact-shadow.compressor{fill:#1f292f2e}.iso-contact-shadow.tank{fill:#1f292f21}.iso-foot-shadow{fill:#1f292f30;stroke:none;filter:url(#isoSoftShadow)}.iso-collector-shadow{stroke:#1f292f21;filter:url(#isoSoftShadow)}.iso-equipment-decals{pointer-events:none}.iso-decal.dryer-shell{fill:#e8f3f7;stroke:#245266}.iso-decal.dryer-top{fill:#dbeef5;stroke:#245266}.iso-decal.dryer-blue-cap,.iso-decal.dryer-blue-column{fill:#1f7a8c;stroke:#123f4a}.iso-decal.dryer-roof-vent,.iso-decal.dryer-vent{fill:#263943;stroke:#0f2d3b}.iso-decal.dryer-display{fill:#101820;stroke:#245266}.iso-decal.panel-top,.iso-decal.panel-door{fill:#2f3a40;stroke:#111827}.iso-decal.panel-meter{fill:#111827;stroke:#6b7280}.iso-decal.panel-breaker-strip{fill:#d7dee3;stroke:#4b5563}.iso-tank-body-panel,.iso-tank-dome{stroke:none}.iso-tank-highlight{stroke:#ffffffad;stroke-width:2.4;stroke-linecap:round}.iso-tank-rim{fill:none;stroke:#263238d1;stroke-width:.95}.iso-tank-rim.outer{stroke-width:1.25}.iso-tank-top-gradient{fill:url(#isoTankTopGradient);stroke:none;opacity:.82}.iso-tank-nozzle{fill:#edf7fa;stroke:#263238;stroke-width:.95}.iso-tank-plate-leg{fill:#263238;stroke:#101820;stroke-width:.8}.iso-technician-prism{display:none;pointer-events:none}.iso-prism-panel{fill:#e5eaed1a;stroke:none}.iso-prism-panel.side-b,.iso-prism-panel.side-c{fill:#c6cdd21f}.iso-prism-panel.top{fill:#eef1f329}.iso-prism-face{opacity:1;mix-blend-mode:multiply}.iso-prism-edge{display:none}.iso-technician-shadow{fill:#0f172a21;stroke:none;filter:url(#isoSoftShadow)}.iso-face-decals{pointer-events:none}.iso-decal{stroke:#263238;stroke-width:.85}.iso-decal.top-band{fill:#e8b85f}.iso-decal.yellow-shell{fill:#f6bd12;stroke:#7c4a03;stroke-width:.8}.iso-decal.yellow-door{fill:#ffc400;stroke:#7c4a03;stroke-width:.95}.iso-decal.left-door{fill:#ffc20a}.iso-decal.center-door{fill:#ffcf28}.iso-decal.top-shadow-band{fill:#e0a900;stroke:#9a6600}.iso-decal.recessed-yellow{fill:#f7c342;stroke:#7c4a03}.iso-decal.roof-service{fill:#ffe09b}.iso-decal.roof-vent{fill:#5d6d60}.iso-decal.warning-label{fill:#facc15;stroke:#92400e}.iso-decal.model-label{fill:#0f172a;stroke:#0f172a}.iso-decal.louver-frame{fill:#415158}.iso-decal.dark-control-column,.iso-decal.dark-service-strip{fill:#25323a;stroke:#111827;stroke-width:1.05}.iso-decal.display-panel{fill:#101820;stroke:#d1d5db;stroke-width:.8}.iso-decal.vent-panel{fill:#33444d;stroke:#111827}.iso-decal.black-wordmark{fill:#111827;stroke:#111827}.iso-decal.access-panel{fill:#edf4f6}.iso-decal.badge-panel{fill:#f6c873}.iso-decal.latch-panel{fill:#0f766e}.iso-decal-fastener{fill:#263238;stroke:#f8fafc;stroke-width:.7}.iso-decal-button.red{fill:#dc2626;stroke:#7f1d1d;stroke-width:.7}.iso-decal-button.green{fill:#16a34a;stroke:#14532d;stroke-width:.7}.iso-decal-text{fill:#facc15;font-weight:900;stroke:none;paint-order:normal;pointer-events:none}.iso-decal-text.small{font-size:3px}.iso-decal-line{stroke:#263238;stroke-width:1.05;stroke-linecap:round}.iso-decal-line.soft{stroke:#647278}.iso-decal-line.panel-joint{stroke:#a16207;stroke-width:.9}.iso-decal-line.yellow-groove{stroke:#8a5a00;stroke-width:1}.iso-decal-line.light{stroke:#dce3e7}.iso-decal-line.louver{stroke:#dce3e7;stroke-width:1.35}.iso-equipment text,.iso-route text,.iso-node text,.iso-inline-component text{font-size:6px;font-weight:800;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round}.iso-object-label{pointer-events:none;filter:url(#isoLabelShadow)}.iso-object-label rect,.iso-object-label path{fill:#fffffff5;stroke:#d1d8dceb;stroke-width:.7}.iso-object-label text{fill:#111820;font-size:5.7px;font-weight:900;letter-spacing:0;paint-order:normal;stroke:none}.iso-port{stroke:#fff;stroke-width:2;cursor:pointer}.iso-node{cursor:pointer}.iso-door-node{pointer-events:none}.iso-door-shadow{fill:#0f172a29;filter:url(#isoSoftShadow)}.iso-door-panel{fill:#e5ebeff0;stroke:#475569db;stroke-width:1.2;vector-effect:non-scaling-stroke}.iso-door-node.service-door .iso-door-panel{fill:#d6e0e6f5}.iso-door-node.access-door .iso-door-panel{fill:#cbd5e1f5}.iso-door-frame,.iso-door-track{stroke:#1e293bd1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.iso-door-slat{stroke:#64748bd1;stroke-width:.9;vector-effect:non-scaling-stroke}.iso-door-roll{fill:#334155eb;stroke:#0f172ae6;stroke-width:1.1;vector-effect:non-scaling-stroke}.iso-riser{cursor:pointer}.iso-riser line{paint-order:stroke;stroke-width:7}.iso-riser text{font-size:6px;font-weight:900;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round}.iso-collector-hit{stroke:transparent;cursor:pointer}.iso-collector-hit.compatible:hover{stroke:#1d4ed82e}.iso-port.inactive,.iso-node.inactive{opacity:.16;cursor:not-allowed}.iso-axis-gizmo{pointer-events:none}.iso-axis-gizmo line{stroke-width:2.2;stroke-linecap:round}.iso-axis-gizmo circle{fill:#172026}.iso-axis-gizmo text{font-size:7px;font-weight:900;dominant-baseline:middle;text-anchor:middle;paint-order:stroke;stroke:#fff;stroke-width:3px}.riser-section{display:grid;gap:14px;padding:16px;border-top:1px solid var(--line);background:#fbfcfd}.riser-section h2,.riser-section h3{margin:0}.riser-section p{margin:4px 0 0;color:var(--muted);font-size:.86rem}.riser-section-body{display:grid;grid-template-columns:minmax(220px,280px) minmax(260px,1fr);gap:16px;align-items:stretch}.riser-z-fields{display:grid;grid-template-columns:repeat(2,minmax(90px,140px));gap:10px;margin-top:10px}.riser-elevation{width:100%;min-height:260px;background:linear-gradient(#e7ecef 1px,transparent 1px) 0 0 / 100% 34px,#fff;border:1px solid var(--line);border-radius:8px}.riser-elevation text{fill:#172026;font-size:11px;font-weight:800}.riser-tap-list{display:grid;align-content:start;gap:10px}.riser-tap-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px;background:#fff;border:1px solid var(--line);border-radius:8px}.riser-tap-row div{display:grid;gap:2px}.riser-tap-row span{color:var(--muted);font-size:.8rem}.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}:root{--bg: #f5f7fa;--panel: #fbfcfe;--ink: #172033;--muted: #64748b;--line: #d7dee8;--teal: #2563eb;--teal-dark: #1d4ed8;--amber: #f6c343;--danger: #bd2e2e;--warning: #e6a51a;--chrome-dark: #263342;--chrome-mid: #e7ebef;--chrome-light: #fbfcfd;--command-blue: #d8e8f7;--selection: #f5c84c}body{background:linear-gradient(180deg,#e3e8ed 0,#ccd4dd 220px,#c3ccd6)}button,input,select,textarea{border-radius:3px}button{min-height:30px;padding:0 9px;background:linear-gradient(#fff,#e2e7ec);border-color:#9da9b5;box-shadow:inset 0 1px #ffffffe6;color:#1d2a35;font-size:.82rem;font-weight:700}button:hover{background:linear-gradient(#fff,#d4e7f8);border-color:#3979ad}button:active,button.active,.segmented button.active,.group-list button.active,.primary-button{color:#102335;background:linear-gradient(#ffe59b,#f5c84c);border-color:#b98710}button:disabled{opacity:.55}input,select,textarea{padding:6px 8px;background:#fff;border-color:#aab5c0;box-shadow:inset 0 1px 2px #16212c14;font-size:.84rem}label{gap:4px;color:#4c5d6d;font-size:.76rem}.app-shell{display:grid;grid-template-rows:auto auto 1fr;gap:0;min-height:100vh;padding:0}.app-header{align-items:center;margin:0;padding:8px 14px;color:#eef5fb;background:linear-gradient(180deg,#344558 0,#202c39);border:0;border-bottom:1px solid #111923;border-radius:0;box-shadow:inset 0 1px #ffffff24}.app-header h1{font-size:1.08rem;line-height:1.1;font-weight:800}.eyebrow{margin-bottom:2px;color:#93c5fd;font-size:.66rem}.header-meta span,.route-stats span,.inline-list span{padding:4px 7px;color:#14324a;background:#e8f1fa;border-color:#acc7df;border-radius:3px;font-size:.72rem}.command-ribbon{background:linear-gradient(180deg,#f8fafc 0,#dce3eb);border-bottom:1px solid #8f9dab;box-shadow:0 1px #fff inset,0 2px 7px #1b273324}.ribbon-tabs{display:flex;gap:1px;padding:4px 10px 0;background:#eef2f6;border-bottom:1px solid #b7c2cd}.ribbon-tabs button{min-height:26px;padding:0 14px;background:transparent;border:1px solid transparent;border-bottom:0;box-shadow:none;color:#293847}.ribbon-tabs button.active{background:linear-gradient(#fff,#edf2f7);border-color:#aeb8c3;color:#173b59}.ribbon-groups{display:flex;flex-wrap:wrap;gap:0;padding:7px 10px 8px}.ribbon-group{display:grid;align-content:start;gap:5px;min-height:66px;padding:0 12px;border-right:1px solid #b7c2cd}.ribbon-group:first-child{padding-left:2px}.ribbon-group span{color:#536577;font-size:.68rem;font-weight:800;text-align:center;text-transform:uppercase}.ribbon-buttons{display:flex;flex-wrap:wrap;gap:5px;max-width:320px}.ribbon-buttons button{min-width:62px}.workspace{grid-template-columns:minmax(280px,326px) minmax(560px,1fr) minmax(285px,344px);gap:8px;align-items:stretch;min-height:0;padding:8px}.sidebar,.canvas-column{gap:8px;min-height:0}.feature-manager,.property-manager{align-content:start}.feature-manager.is-collapsed{width:52px}.design-tree-rail{display:grid;gap:7px;justify-items:center;padding:7px 4px;background:linear-gradient(180deg,#fff,#edf3f8);border:1px solid #b8c4cf;border-radius:3px;box-shadow:0 1px 2px #2e3e4e1f}.rail-button,.tree-collapse-button{position:relative}.rail-button{display:grid;place-items:center;width:40px;min-width:40px;height:40px;min-height:40px;padding:0;background:linear-gradient(#fff,#e6eef6);border:1px solid #aebdca;border-radius:4px;box-shadow:inset 0 1px #fff,0 1px 1px #27344124}.rail-button span{display:grid;place-items:center;width:24px;height:24px;color:#1b5f91;background:linear-gradient(#eaf7ff,#bcdcf2);border:1px solid #7fb2d4;border-radius:3px;font-size:.68rem;font-weight:900;line-height:1}.rail-expand span{color:#27323e;background:linear-gradient(#fff3bd,#f4c84e);border-color:#c89415}.rail-button:hover{background:linear-gradient(#fff,#dff1ff);border-color:#73add5}.tree-collapse-button{justify-content:center;width:100%;min-height:28px;color:#31566f;background:linear-gradient(#fff,#e5eef6);border-color:#b8c4cf;font-size:.72rem;text-transform:uppercase}.panel,.canvas-panel{background:var(--panel);border-color:#aeb8c3;border-radius:4px;box-shadow:0 1px 1px #16202b1f,inset 0 1px #fff}.panel{gap:10px;padding:10px}.panel h2,.canvas-toolbar h2{color:#203142;font-size:.86rem;font-weight:900}.panel>h2,.panel-title-row,.canvas-toolbar{margin:4px -10px 2px;padding:8px 10px;background:linear-gradient(180deg,#fdfefe,#dfe6ee);border-bottom:1px solid #b7c2cd}.panel>h2:first-child,.panel>.panel-title-row:first-child,.canvas-toolbar{margin-top:-10px}.panel-title-row h2,.canvas-toolbar h2{text-transform:none}.panel p,.canvas-toolbar p,.muted{color:#5f6f7f;font-size:.8rem}.muted-panel{background:#edf2f6}.field-grid{gap:7px}.button-grid,.segmented,.route-actions{gap:5px}.secondary-link-button{color:#173b59;background:linear-gradient(#f8fbff,#d8e8f7);border-color:#93b7d7}.graphics-area{min-width:0}.canvas-panel{overflow:hidden;background:#e7ebef}.graphics-area>.canvas-panel:first-child{display:grid;grid-template-rows:auto minmax(0,1fr);height:clamp(430px,calc(100vh - 210px),720px);min-height:0}.graphics-area>.canvas-panel:first-child .canvas-scroll{min-height:0;height:100%}.graphics-area>.canvas-panel:first-child .iso-preview{height:100%;min-height:0}.canvas-toolbar{margin:0;background:linear-gradient(#fdfefe,#d7e0ea)}.zoom-controls{padding:3px;background:#eef3f7;border:1px solid #b7c2cd;border-radius:3px}.zoom-controls button{min-width:32px;min-height:28px;padding:0 8px}.room-canvas{border:8px solid #2a3542;border-radius:0;background:linear-gradient(rgba(33,47,60,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(33,47,60,.08) 1px,transparent 1px),#eef2f5;background-size:24px 24px;box-shadow:inset 0 0 0 1px #111923,inset 0 0 26px #121c2624}.equipment-block{border-radius:4px;box-shadow:0 2px 8px #111c282e}.equipment-block.selected{outline:2px solid var(--selection);outline-offset:2px}.list-item,.route-card{background:#fbfcfd;border-color:#b9c3cd;border-radius:4px}.list-item.active,.route-card.active{color:#102335;background:linear-gradient(#ffe69e,#f5c84c);border-color:#b98710}.route-card.active p,.route-card.active label,.list-item.active span{color:#102335c7}.route-card-head{color:inherit}.component-layout{gap:8px;padding:8px}.component-net-viewport{background:linear-gradient(rgba(45,63,82,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(45,63,82,.07) 1px,transparent 1px),#eef2f5;background-size:22px 22px}:root{--bg: #edf1f5;--panel: #f8fafc;--ink: #1f2933;--muted: #657484;--line: #c6d0da;--teal: #2378b7;--teal-dark: #14547f;--amber: #f2c14e;--chrome-dark: #44515f;--chrome-mid: #edf2f6;--chrome-light: #ffffff;--command-blue: #dff0ff;--selection: #f7c948}body{background:radial-gradient(circle at 50% 0,rgba(255,255,255,.96),transparent 42%),linear-gradient(180deg,#f8fafc 0,#edf2f7)}.app-shell{background:#f5f7fa}.app-header{display:grid;grid-template-columns:minmax(260px,auto) 1fr auto;align-items:center;gap:12px;min-height:42px;padding:6px 12px;color:#172033;background:linear-gradient(180deg,#fff,#f3f6fa);border-bottom:1px solid #d7dee8;box-shadow:inset 0 -1px #fefefe}.app-header h1{color:#172033;font-size:1rem;font-weight:800}.eyebrow{color:#64748b;font-size:.68rem;font-weight:800;letter-spacing:0;text-transform:none}.view-switcher{display:flex;align-items:center;justify-self:center;gap:4px;min-width:0;padding:3px;background:#eef3f8;border:1px solid #d7dee8;border-radius:5px}.view-switcher span{padding:0 7px;color:#64748b;font-size:.72rem;font-weight:900}.view-switcher button{display:inline-grid;place-items:center;min-width:42px;min-height:24px;padding:0 9px;color:#334155;background:transparent;border-color:transparent;border-radius:3px;box-shadow:none;font-size:.72rem;font-weight:900}.view-switcher button.active{color:#fff;background:#2563eb;border-color:#2563eb}.header-meta{gap:5px}.header-meta span{color:#3b4a58;background:#fff;border-color:#d4dce4;box-shadow:0 1px #ffffffd9}.command-ribbon{background:linear-gradient(180deg,#fff 0,#f0f4f8);border-bottom-color:#d7dee8;box-shadow:0 1px #fff inset,0 1px 6px #323f4c1a}.ribbon-tabs{padding:3px 10px 0;background:#f7f9fb;border-bottom-color:#d1d9e1}.ribbon-tabs button{min-height:24px;padding:0 13px;color:#465666;font-size:.76rem}.ribbon-tabs button.active{color:#1d4ed8;background:#fff;border-color:#c2ccd6;box-shadow:inset 0 -2px #2563eb}.ribbon-groups{align-items:stretch;padding:5px 9px 6px}.ribbon-group{min-height:68px;gap:4px;padding:0 9px;border-right-color:#d2dae2}.ribbon-group.wide{min-width:190px}.ribbon-group span{order:2;color:#6b7784;font-size:.64rem;font-weight:800;text-transform:none}.ribbon-buttons{align-items:flex-start;gap:4px}.ribbon-buttons button{position:relative;display:inline-grid;align-content:end;justify-items:center;min-width:66px;min-height:50px;padding:25px 6px 5px;color:#172033;background:transparent;border-color:transparent;box-shadow:none;font-size:.7rem;line-height:1.05}.ribbon-buttons button:before{content:"";position:absolute;top:6px;left:50%;width:20px;height:18px;transform:translate(-50%);border:1px solid #5d8db4;border-radius:3px;background:linear-gradient(135deg,rgba(255,255,255,.9) 0 45%,transparent 46%),linear-gradient(180deg,#7ec8f5,#2b85bd);box-shadow:5px 4px 0 -2px #27527173}.ribbon-buttons button:hover{background:#eef6ff;border-color:#9dc7e6}.ribbon-buttons button.active,.ribbon-buttons button:active{background:#fff8df;border-color:#f6c343}.compact-buttons button{min-width:44px;min-height:34px;padding-top:18px;font-size:.68rem}.compact-buttons button:before{width:14px;height:12px;top:4px}.ribbon-fields{display:grid;grid-template-columns:repeat(2,minmax(74px,1fr));gap:5px;min-width:180px;max-width:290px}.ribbon-fields label{gap:2px;color:#546575;font-size:.66rem;font-weight:800}.ribbon-fields input,.ribbon-fields select{min-height:25px;padding:3px 5px;font-size:.72rem}.ribbon-fields input[type=color]{padding:1px}.ribbon-check-grid{display:grid;grid-template-columns:repeat(2,minmax(88px,1fr));gap:4px 8px;min-width:190px}.ribbon-check{display:flex;align-items:center;gap:5px;color:#465666;font-size:.72rem;font-weight:800}.ribbon-check input{width:auto;min-height:auto}.workspace{grid-template-columns:minmax(270px,318px) minmax(620px,1fr) minmax(280px,338px);gap:6px;padding:6px;background:#edf2f7}.workspace.has-collapsed-tree{grid-template-columns:52px minmax(620px,1fr) minmax(280px,338px)}.panel,.canvas-panel{background:#fbfcfe;border-color:#d7dee8;border-radius:3px;box-shadow:0 1px 2px #2e3e4e1f}.panel{padding:9px}.panel>h2,.panel-title-row,.canvas-toolbar{margin:5px -9px 2px;padding:7px 9px;background:#edf2f7;border-bottom-color:#d7dee8}.panel>h2:first-child,.panel>.panel-title-row:first-child,.canvas-toolbar{margin-top:-9px}.feature-manager .panel:first-of-type:before,.property-manager .panel:first-child:before,.property-manager .property-manager-content .panel:first-child:before{display:block;margin:-9px -9px 8px;padding:6px 9px;color:#334155;background:#edf2f7;border-bottom:1px solid #d7dee8;font-size:.72rem;font-weight:900}.feature-manager .panel:first-of-type:before{content:"FeatureManager Design Tree"}.property-manager .property-manager-content .panel:first-child:before{content:"PropertyManager"}.mode-toggle{min-height:24px;padding:0 10px;color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe;font-size:.72rem;font-weight:900}.presentation-mode .workspace-no-tree{grid-template-columns:minmax(720px,1fr)}.presentation-mode .canvas-column{max-width:1320px;width:100%;justify-self:center}.presentation-summary{display:flex;align-items:center;justify-content:space-between;gap:14px}.presentation-metrics{display:flex;flex-wrap:wrap;gap:7px}.presentation-metrics span{padding:5px 8px;color:#172033;background:#f8fafc;border:1px solid #d7dee8;border-radius:4px;font-size:.76rem;font-weight:900}.canvas-panel,.canvas-scroll{position:relative}.iso-floor-surface{filter:url(#isoFloorTexture);stroke:#47556942;stroke-width:1.2}.iso-floor-grid{display:block}.iso-floor-grid>line{stroke:#4755690e;stroke-width:.32}.iso-floor-plus line{stroke:#4755691f}.iso-service-boundary,.iso-service-floor-edge{stroke:#f6c343eb;filter:drop-shadow(0 1px 1px rgba(120,76,0,.18))}.iso-service-floor-fill{opacity:.78}.iso-route.type-air polygon{fill:#60a5fa61;stroke:#2563eb47;stroke-width:.35}.iso-route.type-air line:not(.iso-flow-pulse){opacity:.76}.iso-route.selected line,.iso-route.selected polygon{filter:drop-shadow(0 0 6px rgba(37,99,235,.72))}.iso-pipe-fitting circle{fill:#fff;stroke:#2563ebd1;stroke-width:2;filter:drop-shadow(0 1px 1px rgba(15,23,42,.18))}.iso-route-end circle{fill:#fff;stroke:#2563ebf2;stroke-width:2.4;filter:drop-shadow(0 1px 2px rgba(15,23,42,.18))}.iso-route-end .core{fill:#2563ebdb;stroke:none;filter:none}.iso-port:not(.inactive),.iso-node:not(.inactive) circle{animation:nodePulse 1.65s ease-out infinite}.mini-map{position:absolute;right:12px;top:58px;bottom:auto;z-index:90;width:142px;padding:6px;background:#f8fafceb;border:1px solid rgba(148,163,184,.55);border-radius:6px;box-shadow:0 8px 24px #0f172a24;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:move;pointer-events:auto;-webkit-user-select:none;user-select:none}.mini-map:active{cursor:move}.mini-map-close{position:absolute;right:5px;top:4px;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:0;background:transparent;color:#64748b;cursor:pointer;font-size:.65rem;font-weight:900;line-height:1}.mini-map-grip{position:absolute;right:6px;top:25px;width:14px;height:14px;background-image:radial-gradient(circle,rgba(71,85,105,.72) 1px,transparent 1.5px);background-size:5px 5px;cursor:move}.mini-map-close:hover{color:#0f172a}.mini-map svg{display:block;width:100%;height:82px;cursor:crosshair}.mini-map-room{fill:#fff;stroke:#94a3b8;stroke-width:.05}.mini-map-equipment{fill:#2563eb38;stroke:#1e40af80;stroke-width:.04}.mini-map-route{fill:none;stroke:#2563eb;stroke-width:.055;stroke-linecap:round;stroke-linejoin:round}.mini-map-route.type-electric{stroke:#ca8a04}.mini-map-route.type-water{stroke:#0891b2}.mini-map-route.type-drain{stroke:#92400e}.mini-map-route.type-service{stroke:#7c3aed;stroke-dasharray:.18 .12}.mini-map-route.type-access{stroke:#f97316;stroke-dasharray:.2 .08}.mini-map-viewport{fill:#2563eb0f;stroke:#1d4ed8f2;stroke-width:1.7;stroke-dasharray:5 3;vector-effect:non-scaling-stroke;cursor:grab}.plan-flex-route-core{stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.plan-flex-route-shadow{stroke:#0f172a4d;stroke-width:8;stroke-linecap:round;stroke-linejoin:round}.plan-flex-route-flow{stroke:#ffffffbd;stroke-width:1.6;stroke-linecap:round;stroke-dasharray:5 13;animation:flowPulse 1.2s linear infinite}.plan-flex-route-hit{stroke:transparent;stroke-width:16;stroke-linecap:round;stroke-linejoin:round}.iso-flex-route-shadow{stroke-width:8;stroke-linecap:round;stroke-linejoin:round;opacity:.92}.iso-flex-route-core{stroke-width:4.8;stroke-linecap:round;stroke-linejoin:round}.iso-flex-route-highlight{stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;opacity:.9}.iso-flex-route-flow{stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:5 13;animation:flowPulse 1.2s linear infinite}.iso-flex-route-flow.electric{stroke-dasharray:1.5 9;animation:electricPulse .95s linear infinite}.iso-flex-route-hit{stroke:transparent;stroke-width:18;stroke-linecap:round;stroke-linejoin:round}.quick-nav-cluster{position:absolute;right:14px;bottom:14px;z-index:95;display:grid;justify-items:end;gap:8px;pointer-events:none}.view-cube{position:relative;width:78px;height:70px;pointer-events:auto;filter:drop-shadow(0 10px 18px rgba(15,23,42,.16))}.view-cube svg{display:block;width:100%;height:100%;overflow:visible}.cube-svg-top{fill:#f8fbff}.cube-svg-left{fill:#e5edf7}.cube-svg-right{fill:#d3e0ef}.cube-svg-edge{fill:none;stroke:#475569d1;stroke-width:1.4;stroke-linejoin:round}.view-cube text{fill:#27415f;font-size:8px;font-weight:900;pointer-events:none}.cube-hotspot{position:absolute;min-width:0;min-height:0;padding:0;background:transparent;border:0;border-radius:2px;box-shadow:none;z-index:2}.cube-hotspot:hover{background:transparent;outline:0}.cube-hotspot-top{left:25px;top:4px;width:28px;height:22px}.cube-hotspot-left{left:17px;top:28px;width:27px;height:30px}.cube-hotspot-right{left:44px;top:28px;width:27px;height:30px}.cube-hotspot-center{left:38px;top:31px;width:12px;height:10px}.cube-hotspot-front{left:28px;top:55px;width:34px;height:14px}.cube-hotspot-back{left:28px;top:0;width:34px;height:12px}.quick-view-switch{display:inline-flex;gap:2px;padding:3px;background:#ffffffeb;border:1px solid rgba(148,163,184,.55);border-radius:5px;box-shadow:0 8px 24px #0f172a21;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:auto}.quick-view-switch button{min-width:40px;min-height:28px;padding:0 9px;color:#475569;background:transparent;border:0;box-shadow:none;font-size:.76rem;font-weight:900}.quick-view-switch button.active{color:#fff;background:#2563eb;border-radius:3px}.library-overlay{position:absolute;inset:44px 18px 18px;z-index:120;display:grid;place-items:center;pointer-events:none}.library-modal{display:grid;grid-template-rows:auto auto auto minmax(260px,1fr) auto;width:min(880px,92%);max-height:min(650px,92%);overflow:hidden;pointer-events:auto;background:#fffffff7;border:1px solid #cbd5e1;border-radius:7px;box-shadow:0 20px 55px #0f172a2e}.library-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px 14px;border-bottom:1px solid #e2e8f0}.library-header h3{margin:0;color:#172033;font-size:1rem;font-weight:900}.library-header p{margin:4px 0 0;color:#64748b;font-size:.78rem;font-weight:700}.library-close{min-width:26px;min-height:26px;padding:0;color:#64748b;background:transparent;border:0;box-shadow:none;font-size:1.1rem}.library-filters{display:grid;grid-template-columns:minmax(210px,1fr) 120px 120px 140px 70px;gap:9px;align-items:end;padding:10px 20px 12px;background:#fff;border-bottom:1px solid #e2e8f0}.library-kind-tabs{display:flex;align-items:end;gap:0;padding:10px 20px 0;background:#f8fafc;border-bottom:1px solid #cbd5e1}.library-kind-tabs button{min-height:32px;margin:0 4px -1px 0;padding:0 16px;color:#475569;background:#edf2f7;border-color:#cbd5e1;border-bottom-color:#cbd5e1;border-radius:6px 6px 0 0;box-shadow:none;font-size:.76rem;font-weight:900}.library-kind-tabs button.active{color:#0f513f;background:#fff;border-color:#0f766e;border-bottom-color:#fff;box-shadow:inset 0 3px #0f8f7c}.library-filters label{display:grid;gap:4px;color:#64748b;font-size:.65rem;font-weight:900}.library-filters input,.library-filters select,.library-filters button{box-sizing:border-box;width:100%;min-height:32px;height:32px;padding:0 10px;font-size:.76rem;line-height:30px}.library-filters input{padding-left:12px}.library-filters button{display:inline-flex;align-items:center;justify-content:center}.library-table-wrap{overflow:auto;padding:0 20px}.library-table{width:100%;border-collapse:collapse;color:#273549;font-size:.75rem}.library-table th,.library-table td{padding:10px 12px;border-bottom:1px solid #e2e8f0;border-right:1px solid #edf2f7;text-align:left;white-space:nowrap}.library-table th{position:sticky;top:0;z-index:1;color:#475569;background:#f8fafc;font-size:.68rem;font-weight:900}.library-group-row td{padding:0;background:#eef6f4;border-bottom-color:#d5e7e2}.library-group-row button{display:flex;align-items:center;gap:9px;width:100%;min-height:38px;padding:0 12px;color:#0f513f;background:transparent;border:0;box-shadow:none;font-weight:900;text-align:left}.library-group-row span{display:inline-grid;place-items:center;width:18px;color:#0f766e}.library-family-row td{padding:0;background:#f8fafc}.library-family-row button{display:flex;align-items:center;gap:10px;width:100%;min-height:36px;padding:0 12px 0 30px;color:#273549;background:transparent;border:0;box-shadow:none;font-weight:900;text-align:left}.library-family-row small{color:#64748b;font-size:.7rem;font-weight:800}.library-check-cell{text-align:center}.library-check-cell input{width:auto;min-height:auto}.library-select-head{width:54px;text-align:center}.library-table tbody tr:not(.library-group-row){cursor:pointer}.library-table tbody tr:not(.library-group-row):hover{background:#f8fbff}.library-table tbody tr.selected{background:#dff5f1;box-shadow:inset 3px 0 #0f8f7c}.library-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 20px;border-top:1px solid #e2e8f0}.library-footer span{color:#64748b;font-size:.75rem;font-weight:800}.library-footer div{display:flex;gap:8px}.library-palette-ribbon{border-left:1px solid #cbd5e1;padding-left:14px}.library-palette-ribbon .ribbon-buttons button{min-width:92px}.library-palette-ribbon small{display:block;margin-top:2px;color:#64748b;font-size:.62rem;font-weight:900}.canvas-toolbar>div:first-child{display:flex;align-items:baseline;gap:14px;min-width:0;width:100%}.canvas-toolbar .canvas-tip{display:flex;align-items:baseline;flex:1 1 auto;gap:8px;width:auto;max-width:none;height:auto;min-height:0;margin:0;color:#475569;line-height:1.1;overflow:hidden;white-space:nowrap}.tip-icon{display:inline-grid;place-items:center;align-self:center;flex:0 0 auto;min-width:19px;min-height:19px;width:19px;height:19px;padding:0;color:#b7791f;background:transparent;border:0;border-radius:0;box-shadow:none;line-height:1}.tip-icon:hover{color:#92400e;background:transparent;border:0}.tip-icon svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}.tip-text-track{position:relative;flex:1 1 auto;min-width:0;width:auto;height:1.1em;overflow:hidden}.tip-text{display:block;overflow:hidden;text-overflow:ellipsis}.canvas-toolbar{align-items:center;min-height:38px;max-height:46px;overflow:hidden}.canvas-toolbar h2{flex:0 0 auto;white-space:nowrap}@keyframes nodePulse{0%{filter:drop-shadow(0 0 0 rgba(37,99,235,0))}50%{filter:drop-shadow(0 0 5px rgba(37,99,235,.42))}to{filter:drop-shadow(0 0 0 rgba(37,99,235,0))}}.panel h2,.canvas-toolbar h2{color:#2b3947;font-size:.82rem}button{background:linear-gradient(#fff,#edf2f6);border-color:#b8c4cf;border-radius:3px;color:#26323f}button:hover{background:linear-gradient(#fff,#e5f3ff);border-color:#7fb6dc}button.active,.segmented button.active,.group-list button.active,.primary-button{color:#1f2933;background:linear-gradient(#fff4bd,#f6ca51);border-color:#c89415}input,select,textarea{border-color:#bac5d0;border-radius:3px}.secondary-link-button{background:linear-gradient(#fff,#e1f0fb);border-color:#9fc4df}.canvas-panel{background:#f1f4f7}.canvas-toolbar{margin:0}.room-canvas{border:2px solid #bfdbfe;border-top-width:3px;background:linear-gradient(rgba(26,84,127,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(26,84,127,.035) 1px,transparent 1px),radial-gradient(circle at 55% 18%,#fff 0,#f8fafc 44%,#eef3f8);background-size:28px 28px,28px 28px,auto;box-shadow:inset 0 0 0 1px #fff,0 1px 2px #2734412e}.zoom-controls{background:#fff;border-color:#c5d0da}.list-item,.route-card{background:#fff;border-color:#c6d0da}.component-net-viewport{background:linear-gradient(rgba(26,84,127,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(26,84,127,.035) 1px,transparent 1px),#fbfcfd;background-size:24px 24px}.workspace-no-tree{grid-template-columns:minmax(720px,1fr) minmax(320px,var(--right-panel-width, 380px))}.sidebar,.canvas-column{display:grid;gap:8px;min-height:0;background:transparent;box-shadow:none}.property-manager-content{display:grid;gap:8px}.right-panel-dock{position:relative;grid-template-columns:34px 1fr;align-content:start;align-items:start;gap:0}.right-panel-resize-handle{position:absolute;top:0;bottom:0;left:-5px;z-index:90;width:10px;min-height:0;padding:0;background:transparent;border:0;border-radius:0;cursor:col-resize}.right-panel-resize-handle:after{content:"";position:absolute;top:10px;bottom:10px;left:4px;width:2px;background:transparent;border-radius:999px}.right-panel-resize-handle:hover:after{background:#94a3b8}.right-panel-tabs{display:grid;gap:6px;justify-items:stretch;width:34px}.right-panel-tab{display:grid;align-content:center;justify-items:center;width:34px;min-height:174px;padding:6px 0;color:#475569;background:linear-gradient(180deg,#f8fafc,#e8eef5);border:1px solid #b7c2cd;border-right:0;border-radius:5px 0 0 5px;box-shadow:-2px 3px 10px #0f172a0f}.right-panel-tab.active{color:#172033;background:#fff;border-color:#94a3b8;box-shadow:-3px 4px 12px #0f172a1a}.right-panel-tab strong{font-size:.62rem;font-weight:900;letter-spacing:0;line-height:1;writing-mode:vertical-rl}.right-panel-content{min-width:0;padding-left:7px}.customer-needs-panel{gap:10px}.customer-needs-panel .panel-title-row{align-items:center}.customer-needs-panel .panel-title-row h2{font-size:.88rem}.customer-needs-panel .panel-title-row button,.customer-actions button{min-height:27px;padding:0 8px;font-size:.72rem}.compact-customer-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.compact-customer-fields label{gap:3px;font-size:.68rem}.compact-customer-fields input,.compact-customer-fields select{min-height:28px;padding:5px 7px;font-size:.74rem}.customer-check{align-content:end;grid-template-columns:1fr auto;align-items:center}.customer-check input{width:auto}.customer-actions{display:flex;justify-content:flex-end}.customer-subsection{margin-top:6px;border:1px solid #d7dee8;border-radius:5px;overflow:hidden}.customer-subsection>summary{padding:6px 8px;background:#f8fafc;color:#334155;font-size:.72rem;font-weight:900;cursor:pointer}.analysis-stack{display:grid;gap:9px}.analysis-card{display:grid;gap:7px;padding:9px;background:#fff;border:1px solid #d7dee8;border-left:4px solid #94a3b8;border-radius:6px}.analysis-card h3{margin:0;color:#172033;font-size:.8rem}.analysis-card p{margin:0;font-size:.72rem;line-height:1.35}.coverage-row{display:grid;gap:4px;padding:7px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:5px}.coverage-head,.coverage-meta{display:flex;justify-content:space-between;gap:8px}.coverage-head{color:#172033;font-size:.74rem}.coverage-meta{color:#64748b;font-size:.66rem}.coverage-track{height:7px;background:#e2e8f0;border-radius:999px;overflow:hidden}.coverage-track i{display:block;height:100%;background:#64748b;border-radius:inherit}.status-ok{border-left-color:#22c55e}.status-ok .coverage-track i,.status-pill.status-ok{background:#22c55e}.status-warning{border-left-color:#f59e0b}.status-warning .coverage-track i,.status-pill.status-warning{background:#f59e0b}.status-fail{border-left-color:#dc2626}.status-fail .coverage-track i,.status-pill.status-fail{background:#dc2626}.status-oversized{border-left-color:#6366f1}.status-oversized .coverage-track i{background:#6366f1}.status-pill.status-unknown{background:#94a3b8}.metric-grid{display:grid;grid-template-columns:1fr;gap:5px;color:#475569;font-size:.7rem}.metric-grid span{display:flex;justify-content:space-between;gap:8px;padding-bottom:4px;border-bottom:1px solid #eef2f7}.metric-grid strong{color:#172033;white-space:nowrap}.compliance-list{display:flex;flex-wrap:wrap;gap:5px}.status-pill{padding:4px 6px;color:#fff;border-radius:999px;font-size:.64rem;font-weight:900}.overall-card{background:linear-gradient(180deg,#fff,#f8fafc)}.overall-score{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.overall-score strong{color:#172033;font-size:1.9rem;line-height:1}.overall-score span{font-size:.8rem;font-weight:900}.customer-note{margin:0;padding:8px;color:#64748b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:5px;font-size:.68rem;line-height:1.35}.ribbon-buttons{max-width:none}.ribbon-buttons button{align-content:center;min-height:32px;padding:5px 9px}.ribbon-buttons button[data-icon]{display:grid;grid-template-rows:24px minmax(20px,auto);place-items:center;align-content:center;gap:5px;min-width:72px;min-height:64px;padding:6px 8px;line-height:1.12;text-align:center;white-space:normal;overflow-wrap:anywhere}.ribbon-buttons button[data-icon]:before{content:attr(data-icon);position:static;display:grid;place-items:center;width:24px;height:20px;transform:none;color:#176092;background:linear-gradient(135deg,#ffffffeb,#fff3),linear-gradient(180deg,#eaf7ff,#c8dfef);border:1px solid #8fb8d5;border-radius:3px;box-shadow:inset 0 1px #fff,0 1px 1px #2734411f;font-size:.95rem;font-weight:900}.ribbon-buttons button[data-icon]:hover:before{color:#0f4f79;background:linear-gradient(135deg,#fffffff2,#ffffff59),linear-gradient(180deg,#f4fbff,#bfe4fb);border-color:#68a8cf}.ribbon-buttons button[data-icon].active:before,.ribbon-buttons button[data-icon]:active:before{color:#7a4d00;background:linear-gradient(#fff5cb,#f4c84e);border-color:#c89415}.compact-buttons button,.compact-buttons button[data-icon]{min-width:44px;min-height:52px;padding:5px 7px}.compact-buttons button[data-icon]{grid-template-rows:17px minmax(16px,auto);gap:4px}.compact-buttons button[data-icon]:before{position:static;width:18px;height:15px;transform:none;font-size:.72rem}.ribbon-buttons button[data-image-icon]{display:grid;grid-template-rows:34px minmax(16px,auto);place-items:center;align-content:center;gap:6px;min-width:66px;min-height:62px;padding:5px 7px;line-height:1.12;text-align:center;white-space:normal;overflow-wrap:anywhere}.ribbon-buttons button[data-image-icon]:before{content:"";position:static;display:block;width:43px;height:31px;transform:none;background-color:transparent;background-image:var(--ribbon-icon);background-position:center;background-repeat:no-repeat;background-size:contain;border:0;border-radius:0;box-shadow:none}.compact-buttons button[data-image-icon]{grid-template-rows:20px minmax(15px,auto);gap:4px;min-width:50px;min-height:46px;padding:5px 7px}.compact-buttons button[data-image-icon]:before{width:34px;height:19px}.accordion-stack{display:grid;gap:7px}.property-accordion{background:#fff;border:1px solid #d7dee8;border-radius:4px;overflow:hidden}.property-accordion summary{cursor:pointer;padding:7px 9px;color:#172033;background:#edf2f7;font-size:.78rem;font-weight:900}.property-accordion .field-grid,.property-accordion label{padding:8px}.property-accordion .field-grid label{padding:0}.technical-object-root,.technical-object-nested,.technical-array{display:grid;gap:6px;padding:8px}.technical-object-root>label,.technical-object-nested>label,.technical-array>label{padding:0}.nested-technical{border-color:#e2e8f0;border-radius:3px}.wall-vent-list{display:grid;gap:8px;padding:8px}.wall-vent-card{display:grid;gap:8px;padding:8px;background:#f8fafc;border:1px solid #d7dee8;border-radius:4px}.nested-technical summary{padding:6px 8px;background:#f8fafc;font-size:.72rem}.technical-checkbox{display:flex;flex-direction:row;align-items:center;gap:7px;min-height:30px;color:#334155;font-size:.76rem;font-weight:800}.technical-checkbox input{width:14px;height:14px;margin:0}.property-manager .panel:first-child:before{content:"PropertyManager"}@media(max-width:1180px){.workspace{grid-template-columns:1fr;align-items:start}.sidebar{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.ribbon-group{min-height:auto}}@media(max-width:680px){.app-shell{padding:0}.app-header,.canvas-toolbar,.panel-title-row{align-items:flex-start;flex-direction:column}.field-grid{grid-template-columns:1fr}.workspace,.component-layout,.ribbon-groups{padding:6px}.ribbon-group{width:100%;padding:6px 0;border-right:0;border-bottom:1px solid #b7c2cd}}
