: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}.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:square;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:58px;stroke-linecap:butt;stroke-linejoin:round}.plan-walkway-fill{stroke:transparent;stroke-width:44px;stroke-linecap:butt;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:46px;stroke-dasharray:14 12;stroke-linecap:butt;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}.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}.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-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-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-service-floor-fill{fill:#ebb923;stroke:#ffffff2e;stroke-width:.22;opacity:.98}.iso-service-elbow-fill{display:none}.iso-service-floor-edge{stroke:#b58016f5;stroke-width:1.6;stroke-linecap:square;stroke-linejoin:miter;vector-effect:non-scaling-stroke}.iso-service-floor-edge-hazard{stroke:#111827b8;stroke-width:1.1;stroke-dasharray:8 13;stroke-linecap:butt;stroke-linejoin:miter;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{fill:#459c58}.iso-route.service.walkway-fill-blue .iso-service-floor-fill{fill:#3e8bcd}.iso-route.service.walkway-fill-yellow .iso-service-floor-fill{fill:#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,.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}@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}}
