:root{font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;color:#163029;background:#d9e2dc;font-synthesis:none}
*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0}body{overflow:hidden}button,a{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}[hidden]{display:none!important}
#app{position:relative;isolation:isolate;overflow:hidden}#model-stage,#panorama,.aerial-stage{position:absolute;inset:0;width:100%;height:100%}#model-stage canvas{display:block;width:100%;height:100%;touch-action:none}#model-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.topbar{position:absolute;z-index:6;left:24px;right:24px;top:20px;display:flex;align-items:flex-start;justify-content:space-between;gap:20px;pointer-events:none}.topbar>*{pointer-events:auto}.brand{padding:14px 19px 16px;background:rgba(255,255,255,.9);box-shadow:0 10px 34px #18392a22;border:1px solid #fff;border-radius:13px;backdrop-filter:blur(16px)}.eyebrow{font-size:10px;letter-spacing:.18em;font-weight:750;color:#907444}.brand h1{font-size:22px;letter-spacing:.05em;margin:4px 0;line-height:1.3}.brand p{margin:0;font-size:11px;color:#62736d}.topbar nav{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.topbar nav a,.model-tools button,.scene-tools button,.aerial-tools button{background:rgba(255,255,255,.91);border:1px solid #ffffffd6;border-radius:9px;padding:9px 13px;color:#23443a;box-shadow:0 7px 22px #18392a1a;font-size:12px;font-weight:650;white-space:nowrap;backdrop-filter:blur(14px)}.topbar nav a:hover,.model-tools button:hover,.scene-tools button:hover,.aerial-tools button:hover{background:#f3f6f0}
.model-tools,.scene-tools,.aerial-tools{position:absolute;z-index:5;right:24px;bottom:25px;display:flex;gap:7px}.model-tools button,.scene-tools button,.aerial-tools button{padding:11px 14px}.model-tools button:focus-visible,.scene-tools button:focus-visible,.aerial-tools button:focus-visible,.model-label:focus-visible,.building-list button:focus-visible{outline:3px solid #e8ab55;outline-offset:2px}
#view-plan[aria-pressed=true]{background:#174439;color:#fff;border-color:#174439}#view-plan:disabled{cursor:wait;opacity:.7}
.scene-tools button[aria-pressed=true]{background:#173f35;color:#fff;border-color:#173f35}
.model-label,.planning-hotspot .spot{--leader-length:18px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;min-width:42px;height:24px;padding:0 7px;border:1px solid #315c51b8;border-radius:999px;color:#173d32;background:#f9fbf6d9;font-size:11px;font-weight:800;line-height:1;white-space:nowrap;box-shadow:0 2px 9px #102c2a40}
.model-label{position:absolute;top:0;left:0;pointer-events:auto;transition:background .15s,border-color .15s}.model-label.near{min-width:45px;height:26px}.plan-overlay .model-label{--leader-length:4px}
.model-label::before,.planning-hotspot .spot::before{content:"";position:absolute;left:50%;top:100%;width:1px;height:var(--leader-length);transform:translateX(-50%);background:#224b3ee0;pointer-events:none}
.model-label::after,.planning-hotspot .spot::after{content:"";position:absolute;left:50%;top:calc(100% + var(--leader-length));width:6px;height:6px;transform:translate(-50%,-50%);border:1px solid #265344;border-radius:50%;background:#f4f8ed;pointer-events:none}
.model-label:hover,.model-label.selected,.planning-hotspot:hover .spot,.planning-hotspot.selected .spot{background:#f4d89def;border-color:#9b692d;color:#583a17;z-index:3}.model-label.selected::after,.planning-hotspot.selected .spot::after{background:#d18d3f;border-color:#81551f}
.building-panel{position:absolute;z-index:5;left:24px;bottom:25px;width:235px;max-height:min(76vh,650px);overflow:auto;background:rgba(255,255,255,.94);border:1px solid #fff;border-radius:12px;box-shadow:0 10px 35px #18392a24;backdrop-filter:blur(18px)}#panel-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:14px 17px;background:none;border:0;text-align:left;color:#1d4437;font-size:14px;font-weight:750}#panel-toggle span{font-size:10px;font-weight:500;color:#657970}#building-panel-content{display:none;padding:0 15px 15px}.building-panel.open #building-panel-content{display:block}.panel-caption{margin:0 0 11px;color:#667a70;font-size:11px}.building-list{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}.building-list button{background:#edf1ec;border:1px solid #dee9df;color:#345348;border-radius:6px;padding:7px 0;font-size:11px}.building-list button:hover,.building-list button[aria-pressed=true]{background:#1b4c3d;color:#fff}.building-detail{display:flex;flex-direction:column;gap:4px;border-top:1px solid #e0e7de;margin-top:12px;padding:12px 2px 0;min-height:58px;color:#4c6359;font-size:11px}.building-detail strong{font-size:15px;color:#213e33}.building-detail small{font-size:10px;color:#7b8b82;line-height:1.5}
.model-help,.source-note{position:absolute;z-index:2;bottom:11px;left:283px;margin:0;color:#395447;font-size:11px;text-shadow:0 1px 2px #fff}.source-note{left:auto;right:25px;bottom:84px;max-width:370px;text-align:right}.loading{position:absolute;z-index:8;left:50%;top:50%;transform:translate(-50%,-50%);background:#f7f9f4;padding:18px 23px;border:1px solid #fff;border-radius:10px;box-shadow:0 15px 50px #19382b45;font-size:14px;color:#234336}.error{color:#8b392b}
.north-arrow{display:none;position:absolute;z-index:4;right:24px;top:100px;padding:9px 12px;border-radius:8px;background:#fffffff0;color:#1b4b3c;font-weight:800;font-size:14px}.north-up .north-arrow{display:block}
.vr-topbar{top:15px}.vr-topbar .brand{background:#f5f8f4e8}.scene-controls{position:absolute;z-index:5;top:125px;left:24px;display:flex;gap:7px;flex-wrap:wrap;max-width:420px}.scene-controls button{background:#f7f9f1e8;color:#1a4236;border:1px solid #ffffffc0;border-radius:8px;padding:10px 13px;font-size:12px;font-weight:650}.scene-controls button[aria-pressed=true]{background:#173f35;color:white;border-color:#173f35}.pnlm-container{background:#c9d4cf!important}.pnlm-hotspot-base.planning-hotspot{width:0;height:0;overflow:visible;background:none;border:0}.planning-hotspot .spot{position:absolute;left:0;top:0;transform:translate(-50%,calc(-100% - var(--leader-length)));cursor:pointer}.planning-hotspot.selected{z-index:2}.planning-hotspot .spot:focus-visible{outline:3px solid #e8ab55;outline-offset:3px}.pnlm-hotspot-base.site-hotspot{background:none;border:0}.site-hotspot .spot{padding:7px 10px;background:#173f35e8;color:white;border:1px solid white;border-radius:8px;font-size:12px;white-space:nowrap}.vr-note{position:absolute;z-index:5;bottom:20px;left:24px;max-width:min(580px,calc(100% - 48px));padding:10px 13px;background:#fffffff0;color:#2b4b3f;border-radius:8px;font-size:11px;line-height:1.5;box-shadow:0 4px 22px #173b2e2e}.vr-note strong{color:#a35f20}
.labels-hidden .planning-hotspot{display:none!important}
.planning-hotspot.crowded{visibility:hidden!important}
@media(max-width:650px){.model-label,.planning-hotspot .spot{--leader-length:12px;min-width:34px;height:21px;padding:0 5px;font-size:10px}.model-label.near{min-width:37px;height:22px}.plan-overlay .model-label{--leader-length:3px}.model-label::after,.planning-hotspot .spot::after{width:5px;height:5px}.vr-note::after{content:' 手机上可放大查看更多楼号。'}}
@media(max-width:650px){.aerial-page .aerial-info{bottom:165px}}
.aerial-stage{overflow:auto;background:#243530;display:flex}.aerial-map{position:relative;display:block;flex:none;margin:auto;max-width:none;box-shadow:0 18px 55px #071e1a66}.aerial-map img{display:block;width:100%;height:auto}.aerial-marker{position:absolute;transform:translate(-50%,-50%);width:30px;height:30px;border:2px solid #fff;border-radius:50%;background:#194e3f;color:#fff;font-size:11px;font-weight:800;box-shadow:0 2px 9px #102a2888}.aerial-marker:hover,.aerial-marker.selected{background:#b77932;z-index:3}.aerial-footprint{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.aerial-caption{position:absolute;z-index:5;left:24px;bottom:24px;max-width:530px;background:#fffffff0;padding:10px 14px;border-radius:8px;font-size:11px;color:#325247}.aerial-info{position:absolute;z-index:5;right:165px;bottom:24px;background:#fffffff0;padding:10px 14px;border-radius:8px;min-width:180px;font-size:12px;color:#325247}
@media(max-width:650px){.topbar{left:10px;right:10px;top:8px;gap:5px;align-items:flex-start}.brand{padding:9px 10px;border-radius:9px}.brand h1{font-size:16px;margin:2px 0}.brand p{font-size:9px}.eyebrow{font-size:8px}.topbar nav{gap:4px;max-width:47%}.topbar nav a{padding:7px 6px;font-size:10px}.model-tools,.scene-tools,.aerial-tools{bottom:15px;right:10px;gap:4px}.model-tools button,.scene-tools button,.aerial-tools button{padding:9px 8px;font-size:10px}.building-panel{left:10px;bottom:15px;width:128px;max-height:68vh}.building-panel.open{width:220px}#panel-toggle{padding:11px;font-size:11px}.model-help{left:10px;bottom:69px;font-size:10px}.source-note{right:10px;bottom:66px;max-width:150px;font-size:9px}.scene-controls{top:90px;left:10px;right:10px}.scene-controls button{padding:8px 9px;font-size:10px}.vr-note{left:10px;right:10px;bottom:55px;max-width:none;font-size:10px}.aerial-caption{left:10px;bottom:66px;max-width:210px;font-size:10px}.aerial-info{right:10px;bottom:125px;min-width:0;font-size:10px}.aerial-marker{width:24px;height:24px;font-size:9px}}
