:root{color-scheme:light;--ink:#263342;--muted:#7b8793;--line:#e2e7eb;--p:#c94052;--w:#008493;--k:#37835c;--l:#8158b4;--b:#536475;font-family:Inter,"Segoe UI","Microsoft YaHei",system-ui,sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:#f4f5f7;color:var(--ink);overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button:focus-visible{outline:3px solid #1a7dcc;outline-offset:3px}[hidden]{display:none!important}
.toolbar{height:78px;padding:0 28px;display:flex;align-items:center;gap:36px;background:#fff;border-bottom:1px solid var(--line);position:relative;z-index:10}h1{font-size:18px;letter-spacing:.02em;display:flex;align-items:center;gap:9px;margin:0;white-space:nowrap}h1 svg{width:24px;height:24px;fill:none;stroke:var(--ink);stroke-width:1.6;stroke-linejoin:round}.segmented{display:flex;align-items:center;gap:3px;background:#f0f2f4;padding:4px;border-radius:9px}.segmented button{border:0;background:transparent;border-radius:6px;padding:10px 18px;min-height:38px;font-size:13px;font-weight:600;color:#7a8590;transition:background .15s,color .15s,box-shadow .15s}.segmented button:hover{color:var(--ink);background:#e7ebef}.segmented button[aria-pressed=true]{background:#fff;color:var(--ink);box-shadow:0 1px 4px #283b4a18}.modes{margin-left:auto}.modes button[aria-pressed=true]{background:#293b4d;color:#fff;box-shadow:none}
#workspace{height:calc(100dvh - 78px);display:flex;position:relative}.map{position:relative;flex:1;min-width:0;overflow:hidden;isolation:isolate}#drawing{display:block;width:100%;height:100%;touch-action:none;cursor:grab;user-select:none}#drawing.dragging{cursor:grabbing}.map-caption{position:absolute;top:26px;left:30px;display:flex;gap:17px;align-items:center;pointer-events:none;z-index:2}.map-caption strong{font-size:18px}.map-caption span{font-size:12px;color:#7c8792;letter-spacing:.01em}.map-bottom{position:absolute;left:30px;right:24px;bottom:max(22px,env(safe-area-inset-bottom));display:flex;justify-content:space-between;align-items:flex-end;gap:15px;pointer-events:none;z-index:2}.map-info{border:1px solid #e3e8ed;background:#ffffffed;border-radius:8px;padding:12px 15px;box-shadow:0 2px 8px #26334204;max-width:calc(100% - 220px)}.legend{display:flex;flex-wrap:wrap;gap:15px;font-size:11px;color:#687583}.legend span{display:flex;align-items:center;gap:6px;white-space:nowrap}.legend span:before{content:"";width:7px;height:7px;background:currentColor;display:inline-block}.legend-p:before{color:var(--p)}.legend-w:before{color:var(--w);transform:rotate(45deg)}.legend-k:before{color:var(--k);border-radius:50%}.legend-l:before{color:var(--l);border-radius:50%;background:none!important;border:1px solid currentColor}.legend-b:before{color:var(--b)}#wiring-note{font-size:10px;color:#87919b;margin:9px 0 0}.zoom{display:flex;align-items:center;background:#fff;border:1px solid var(--line);border-radius:8px;padding:4px;box-shadow:0 2px 8px #26334204;pointer-events:auto}.zoom button{border:0;background:transparent;width:34px;height:34px;border-radius:5px;font-size:22px;font-weight:400}.zoom button:hover{background:#f0f3f6}.zoom span{font-size:11px;min-width:46px;text-align:center;font-variant-numeric:tabular-nums;color:#657485}.zoom #zoom-fit{border-left:1px solid var(--line);border-radius:0;margin-left:4px;width:40px}.zoom svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6}
.point{cursor:pointer;outline:none}.point .hit{fill:transparent;stroke:none;pointer-events:none}.point .halo{fill:#fff;stroke:none;opacity:.9;pointer-events:none}.point .shape{fill:#fff;stroke-width:1.7}.point .inner{fill:none;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}.point:hover .halo,.point:focus-visible .halo{fill:#d7eaff;opacity:1}.point.selected .halo{fill:#dae9ff;opacity:1}.point.related .halo{fill:#e7e3fa;opacity:1}.point.selected .shape{stroke-width:2.3}.point:focus-visible .shape{stroke:#086bb6!important;stroke-width:2.5}#hover-label{position:absolute;pointer-events:none;padding:7px 10px;border-radius:5px;color:#fff;background:#263342;font-size:11px;z-index:3;box-shadow:0 3px 10px #2633421a;white-space:nowrap}
.details{position:absolute;left:12px;top:12px;width:294px;max-width:calc(100% - 24px);background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;box-shadow:0 10px 40px #26334220,0 2px 6px #2633420a;z-index:6}.detail-heading{display:flex;justify-content:space-between;align-items:flex-start}.eyebrow{display:block;color:var(--muted);font-size:11px;letter-spacing:.07em;margin-bottom:7px}h2{font-size:29px;letter-spacing:-.04em;margin:0;font-weight:650}.close{background:#f2f4f6;border:0;border-radius:50%;height:30px;width:30px;font-size:22px;line-height:1;color:#80909d}.close:hover{background:#e4eaf0;color:var(--ink)}#detail-kind{font-size:14px;margin:8px 0 27px}.height-grid{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:8px}.height-grid>div{padding:16px 14px}.height-grid>div+div{border-left:1px solid var(--line)}.height-grid span{display:block;font-size:11px;color:#82909d;margin-bottom:9px}.height-grid strong{font-size:23px;font-weight:600;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.height-grid small{font-size:10px;color:#8c97a1;margin-left:4px}.height-reference{font-size:10px;color:#98a1a9;margin:8px 0 21px}.properties{margin:0}.properties>div{padding:12px 0;display:flex;gap:16px;border-top:1px solid #eef1f4;font-size:12px}.properties dt{color:#89959f;min-width:42px}.properties dd{margin:0;line-height:1.7;flex:1;text-align:right}.detail-section{margin-top:23px}.detail-section h3,.model-position h3{font-size:11px;font-weight:500;color:#85929e;margin:0 0 10px}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{border:1px solid #dce5ed;background:#f9fbfc;border-radius:5px;font-size:11px;padding:7px 10px;line-height:1;min-height:30px}.chip:hover,.chip.active{background:#263d53;color:white;border-color:#263d53}.control-group+.control-group{margin-top:17px}.control-group p{font-size:11px;line-height:1.6;color:#687887;margin:0 0 8px}.point-note{font-size:11px;color:#8b7853;line-height:1.8;border:1px solid #f1e6cf;background:#fffdf7;border-radius:6px;padding:11px;margin-top:22px}.model-position{margin-top:28px;padding-top:18px;border-top:1px solid #eef1f4}.model-position h3 span{float:right;color:#b0b8c0;font-size:10px}.model-position dl{margin:0;display:flex;gap:20px}.model-position dl div{display:flex;gap:8px;font-size:11px}.model-position dt{color:#8e9ba7}.model-position dd{margin:0;font-variant-numeric:tabular-nums}.model-position>span{display:block;color:#adb5bd;font-size:10px;margin-top:13px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(min-width:1600px){.details{width:310px}.toolbar{gap:48px}}
@media(max-width:760px){.toolbar{height:115px;padding:13px 16px 12px;gap:8px;flex-wrap:wrap;justify-content:space-between;align-content:space-between}h1{font-size:15px;gap:5px}h1 svg{width:20px;height:20px}.modes{order:1;margin-left:0;padding:3px}.modes button{padding:8px 11px;min-height:32px;font-size:11px}.floors{order:2;width:100%;padding:3px}.floors button{flex:1;padding:8px 10px;min-height:32px;font-size:12px}#workspace{height:calc(100dvh - 115px)}.map-caption{top:18px;left:18px;gap:10px}.map-caption strong{font-size:15px}.map-caption span{font-size:10px}.map-bottom{left:12px;right:12px;bottom:max(13px,env(safe-area-inset-bottom));gap:8px;align-items:flex-end}.map-info{max-width:calc(100% - 150px);padding:10px 11px}.legend{font-size:9px;gap:8px 11px}.legend span{gap:5px}.legend span:before{height:6px;width:6px}.zoom button{width:27px;height:32px}.zoom span{min-width:37px;font-size:10px}.zoom #zoom-fit{width:31px;margin-left:2px}.zoom{padding:2px}.zoom svg{width:15px;height:15px}#wiring-note{font-size:9px;line-height:1.7;margin-top:7px}.details{width:290px;max-width:calc(100% - 24px);padding:18px;border-radius:12px}.detail-heading h2{font-size:24px}.eyebrow{margin-bottom:3px}#detail-kind{font-size:12px;margin:5px 0 17px}.height-grid{max-width:340px}.height-grid>div{padding:10px 14px}.height-grid span{margin-bottom:5px}.height-grid strong{font-size:21px}.height-reference{margin-bottom:14px}.detail-section{margin-top:19px}.point-note{margin-top:17px}.model-position{margin-top:21px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.point .shape,.point .inner{vector-effect:non-scaling-stroke}
