.campus-mode-choice-mask[data-v-69cace66]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;background:#070b106b;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.campus-mode-choice-dialog[data-v-69cace66]{position:relative;width:min(520px,100%);padding:22px;border:1px solid rgba(255,255,255,.18);border-radius:8px;color:#edf3f8;background:#12181ef5;box-shadow:0 28px 80px #0000005c}.campus-mode-choice-pano[data-v-69cace66]{position:absolute;top:16px;right:16px;padding:6px 10px;border:1px solid rgba(255,255,255,.18);border-radius:999px;color:#edf3f8d6;background:#ffffff14;font:inherit;font-size:12px;line-height:1.2;cursor:pointer;transition:border-color .16s ease,color .16s ease,background .16s ease,transform .16s ease}.campus-mode-choice-pano[data-v-69cace66]:hover{border-color:#71a7e3b8;color:#fff;background:#2f80ed2e;transform:translateY(-1px)}.campus-mode-choice-title[data-v-69cace66]{display:block;font-size:20px;line-height:1.25}.campus-mode-choice-text[data-v-69cace66]{margin:10px 0 18px;color:#edf3f8c2;font-size:14px;line-height:1.65}.campus-mode-choice-options[data-v-69cace66]{display:grid;gap:12px}.campus-mode-choice-option[data-v-69cace66]{display:grid;gap:7px;width:100%;min-height:84px;padding:15px 16px;border:1px solid rgba(255,255,255,.14);border-radius:8px;color:#edf3f8;background:#ffffff12;font:inherit;text-align:left;cursor:pointer;transition:border-color .16s ease,background .16s ease,transform .16s ease}.campus-mode-choice-option[data-v-69cace66]:hover{border-color:#ff8a65ad;background:#ffffff1c;transform:translateY(-1px)}.campus-mode-choice-option.primary[data-v-69cace66]{border-color:#2f80ed9e}.campus-mode-choice-option span[data-v-69cace66]{font-size:16px;font-weight:700;line-height:1.2}.campus-mode-choice-option em[data-v-69cace66]{color:#edf3f8b8;font-size:13px;font-style:normal;line-height:1.55}.campus-mode-choice-enter-from[data-v-69cace66],.campus-mode-choice-leave-to[data-v-69cace66]{opacity:0}.campus-mode-choice-enter-active[data-v-69cace66],.campus-mode-choice-leave-active[data-v-69cace66]{transition:opacity .18s ease}@media(max-width:560px){.campus-mode-choice-mask[data-v-69cace66]{align-items:flex-end;padding:14px}.campus-mode-choice-dialog[data-v-69cace66]{padding:18px}}.scan-login-mask[data-v-69cace66]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;display:flex;align-items:center;justify-content:center;padding:24px;background:#070b1094;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.scan-login-dialog[data-v-69cace66]{position:relative;width:min(460px,100%);padding:22px 22px 20px;border:1px solid rgba(255,255,255,.16);border-radius:10px;color:#edf3f8;background:#12181efa;box-shadow:0 28px 80px #0006}.scan-login-close[data-v-69cace66]{position:absolute;top:14px;right:14px;width:32px;height:32px;border:0;border-radius:8px;color:#edf3f8c7;background:#ffffff14;font:inherit;font-size:20px;line-height:1;cursor:pointer}.scan-login-kicker[data-v-69cace66]{display:block;margin-bottom:10px;color:#99f6e4;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.scan-login-title[data-v-69cace66]{display:block;font-size:22px;line-height:1.25}.scan-login-text[data-v-69cace66]{margin:10px 0 0;color:#edf3f8c2;font-size:14px;line-height:1.65}.scan-login-qrcode-box[data-v-69cace66]{display:flex;justify-content:center;margin-top:20px}.scan-login-qrcode-stage[data-v-69cace66]{position:relative;width:220px;height:220px}.scan-login-qrcode[data-v-69cace66]{width:220px;height:220px;padding:12px;border-radius:10px;background:#fff;object-fit:contain}.scan-login-qrcode--placeholder[data-v-69cace66]{display:grid;place-items:center;color:#4f5b68;font-size:14px;font-weight:700}.scan-login-qrcode-overlay[data-v-69cace66]{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;gap:8px;border:0;border-radius:10px;color:#f8fafc;background:#070b10bd;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);text-align:center;cursor:pointer}.scan-login-qrcode-overlay strong[data-v-69cace66]{font-size:20px;line-height:1.2}.scan-login-qrcode-overlay span[data-v-69cace66]{color:#f8fafccc;font-size:13px;line-height:1.5}.scan-login-status[data-v-69cace66]{margin:16px 0 0;text-align:center;font-size:14px;line-height:1.6;color:#edf3f8d6}.scan-login-status.is-scanned[data-v-69cace66],.scan-login-status.is-confirming[data-v-69cace66]{color:#99f6e4}.scan-login-status.is-success[data-v-69cace66]{color:#86efac}.scan-login-status.is-error[data-v-69cace66],.scan-login-status.is-expired[data-v-69cace66]{color:#fda4af}.scan-login-error[data-v-69cace66]{margin:10px 0 0;text-align:center;color:#fda4af;font-size:13px;line-height:1.6}.scan-login-mobile-hint[data-v-69cace66]{display:grid;gap:4px;margin-top:12px;padding:12px 14px;border:1px solid rgba(153,246,228,.18);border-radius:10px;background:#99f6e414}.scan-login-mobile-hint strong[data-v-69cace66]{color:#ccfbf1;font-size:13px;line-height:1.45}.scan-login-mobile-hint span[data-v-69cace66]{color:#edf3f8c2;font-size:12px;line-height:1.6}.scan-login-actions[data-v-69cace66]{display:flex;gap:12px;margin-top:18px}.scan-login-mobile-open[data-v-69cace66],.scan-login-primary[data-v-69cace66],.scan-login-secondary[data-v-69cace66]{flex:1;min-height:42px;border:0;border-radius:8px;font:inherit;font-size:14px;font-weight:700;cursor:pointer}.scan-login-mobile-open[data-v-69cace66]{color:#08131f;background:#99f6e4}.scan-login-primary[data-v-69cace66]{color:#08131f;background:#f8fafc}.scan-login-primary[data-v-69cace66]:disabled{cursor:not-allowed;opacity:.72}.scan-login-secondary[data-v-69cace66]{color:#edf3f8;background:#ffffff14}.scan-login-dialog-enter-from[data-v-69cace66],.scan-login-dialog-leave-to[data-v-69cace66]{opacity:0}.scan-login-dialog-enter-active[data-v-69cace66],.scan-login-dialog-leave-active[data-v-69cace66]{transition:opacity .18s ease}@media(max-width:560px){.scan-login-mask[data-v-69cace66]{padding:14px}.scan-login-dialog[data-v-69cace66]{padding:20px 18px 18px}.scan-login-qrcode[data-v-69cace66],.scan-login-qrcode-stage[data-v-69cace66]{width:min(220px,calc(100vw - 96px));height:min(220px,calc(100vw - 96px))}}.login-user-anchor[data-v-69cace66]{position:fixed;left:24px;bottom:24px;z-index:130}.login-user-trigger[data-v-69cace66]{display:flex;align-items:center;gap:10px;min-width:56px;min-height:56px;padding:8px 14px 8px 8px;border:1px solid rgba(255,255,255,.16);border-radius:999px;background:#12181edb;box-shadow:0 18px 48px #0000004d;cursor:pointer}.login-user-avatar[data-v-69cace66],.login-user-menu-avatar[data-v-69cace66]{width:40px;height:40px;border-radius:50%;object-fit:cover}.login-user-avatar--fallback[data-v-69cace66]{display:grid;place-items:center;width:100%;height:100%;color:#edf3f8;background:linear-gradient(135deg,#4d7cfe,#7b5cff);font-weight:700}.login-user-menu-avatar[data-v-69cace66]{width:42px;height:42px;flex:0 0 42px}.login-user-trigger-text[data-v-69cace66]{display:flex;flex-direction:column;align-items:flex-start;min-width:0;text-align:left}.login-user-trigger-text strong[data-v-69cace66]{max-width:132px;overflow:hidden;color:#edf3f8;font-size:14px;line-height:1.25;white-space:nowrap;text-overflow:ellipsis}.login-user-trigger-text em[data-v-69cace66]{color:#edf3f89e;font-size:12px;font-style:normal;line-height:1.2}.login-user-menu[data-v-69cace66]{position:absolute;left:0;bottom:68px;min-width:198px;padding:10px;border:1px solid rgba(255,255,255,.12);border-radius:12px;color:#edf3f8;background:#12181ef5;box-shadow:0 24px 64px #00000057}.login-user-meta[data-v-69cace66]{display:flex;align-items:center;gap:10px;padding:6px 6px 10px}.login-user-meta-text[data-v-69cace66]{display:flex;flex-direction:column;gap:2px;min-width:0}.login-user-meta-text strong[data-v-69cace66]{font-size:14px;line-height:1.35}.login-user-meta-text span[data-v-69cace66]{color:#edf3f89e;font-size:12px}.login-user-menu-item[data-v-69cace66]{width:100%;min-height:40px;border:0;border-radius:8px;color:#edf3f8;background:#ffffff14;font:inherit;font-size:14px;font-weight:700;cursor:pointer}.user-menu-fade-enter-from[data-v-69cace66],.user-menu-fade-leave-to[data-v-69cace66]{opacity:0;transform:translateY(8px)}.user-menu-fade-enter-active[data-v-69cace66],.user-menu-fade-leave-active[data-v-69cace66]{transition:opacity .16s ease,transform .16s ease}@media(max-width:560px){.login-user-anchor[data-v-69cace66]{left:14px;bottom:14px}.login-user-trigger[data-v-69cace66]{min-height:52px;padding:7px 12px 7px 7px}.login-user-avatar[data-v-69cace66]{width:38px;height:38px}.login-user-trigger-text strong[data-v-69cace66]{max-width:108px}}:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:#eef2f3;background:#111315}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}.app-shell{display:grid;grid-template-columns:minmax(0,1fr) 320px;min-height:100vh;background:linear-gradient(90deg,#1113150d,#111315c7),#111315}.viewer-stage{min-width:0;min-height:100vh}.sog-viewer{position:relative;width:100%;height:100vh;overflow:hidden;background:#090a0b}.sog-canvas{position:relative;z-index:1;display:block;width:100%;height:100%;touch-action:none;cursor:grab}.sog-canvas:active{cursor:grabbing}.hotspot-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;pointer-events:none}.view-hotspot{position:absolute;display:inline-flex;align-items:center;gap:5px;min-height:22px;padding:3px 8px 3px 5px;border:1px solid rgba(255,255,255,.24);border-radius:999px;color:#f7fbff;background:#0a1012ad;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font:inherit;font-size:11px;line-height:1;cursor:pointer;will-change:left,top;pointer-events:auto;transform:translate(-50%,-50%);transform-origin:center;animation:hotspot-pop-in .52s cubic-bezier(.18,.92,.24,1.12) var(--hotspot-delay, 0ms) both}.view-hotspot:before{position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px;border:1px solid rgba(143,199,255,.36);border-radius:999px;content:"";opacity:0;transform:scale(.86);animation:hotspot-ring-in .76s ease-out var(--hotspot-delay, 0ms) both;transition:opacity .16s ease,transform .16s ease}.view-hotspot:hover:before{opacity:1;transform:scale(1)}.view-hotspot__dot{width:7px;height:7px;border:1px solid #ffffff;border-radius:999px;background:#58d68d;box-shadow:0 0 0 3px #58d68d24,0 0 10px #58d68d8f;animation:hotspot-dot-pulse 1.3s ease-in-out calc(var(--hotspot-delay, 0ms) + .42s) infinite}.view-hotspot__label{white-space:nowrap}.building-label-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;pointer-events:none}.building-label{position:absolute;display:inline-flex;align-items:center;gap:6px;min-height:24px;max-width:180px;padding:4px 9px 4px 6px;border:1px solid rgba(255,255,255,.42);border-radius:999px;color:#17212b;background:#ffffffdb;box-shadow:0 10px 26px #121c2629;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font:inherit;font-size:12px;line-height:1;pointer-events:auto;cursor:help;transform:translate(-50%,-50%) translateY(4px);opacity:0;animation:building-label-in .32s ease-out var(--label-delay, 0ms) forwards}.building-label:hover{border-color:#2f80ed94;background:#fffffff5;transform:translate(-50%,-50%) translateY(0)}.building-label__pin{flex:0 0 auto;width:8px;height:8px;border:1px solid #ffffff;border-radius:999px;background:#2f80ed;box-shadow:0 0 0 3px #2f80ed24,0 0 10px #2f80ed57}.building-label__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.building-info-card{position:absolute;width:min(260px,calc(100vw - 36px));padding:13px 14px 12px;border:1px solid rgba(255,255,255,.36);border-radius:8px;color:#17212b;background:#ffffffeb;box-shadow:0 18px 46px #121c2638;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);pointer-events:none;transform:translate(-50%,calc(-100% - 22px))}.building-info-card:after{position:absolute;left:50%;bottom:-7px;width:12px;height:12px;background:#ffffffeb;border-right:1px solid rgba(255,255,255,.36);border-bottom:1px solid rgba(255,255,255,.36);content:"";transform:translate(-50%) rotate(45deg)}.building-info-card__meta{display:block;margin-bottom:6px;color:#2f80ed;font-size:11px;font-weight:700;line-height:1.2}.building-info-card strong{display:block;font-size:16px;line-height:1.25}.building-info-card p{margin:8px 0 0;color:#4a5663;font-size:12px;line-height:1.55}@keyframes building-label-in{to{opacity:1;transform:translate(-50%,-50%) translateY(0)}}.navigation-node-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;pointer-events:none}.navigation-node-marker{position:absolute;display:grid;place-items:center;width:26px;height:26px;border:2px solid rgba(255,255,255,.92);border-radius:999px;color:#fff;background:#ff7a52eb;box-shadow:0 0 0 4px #ff7a522e,0 6px 16px #191e233d;font-size:12px;font-weight:800;line-height:1;transform:translate(-50%,-50%);-webkit-user-select:none;user-select:none}@keyframes hotspot-pop-in{0%{opacity:0;transform:translate(-50%,calc(-50% + 10px)) scale(.72)}62%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes hotspot-ring-in{0%{opacity:0;transform:scale(.58)}34%{opacity:.8}to{opacity:0;transform:scale(1.38)}}@keyframes hotspot-dot-pulse{0%,to{box-shadow:0 0 0 3px #58d68d24,0 0 10px #58d68d8f}50%{box-shadow:0 0 0 6px #58d68d14,0 0 16px #58d68dbd}}.viewer-overlay{position:absolute;z-index:3;left:24px;bottom:24px;max-width:min(460px,calc(100% - 48px));padding:12px 14px;border:1px solid rgba(255,255,255,.16);border-radius:8px;color:#f5f7f7;background:#121416d1;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);font-size:14px;line-height:1.5}.viewer-overlay.error{color:#ffd4cf;border-color:#ff786e6b}.viewer-controls{position:absolute;z-index:4;right:18px;bottom:18px;display:grid;grid-template-columns:repeat(3,44px);gap:8px;pointer-events:auto}.viewer-controls button{position:relative;z-index:5;min-width:44px;height:38px;border:1px solid rgba(255,255,255,.16);border-radius:8px;color:#f5f7f7;background:#121416d6;font:inherit;font-size:14px;cursor:pointer;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.viewer-controls button:hover{background:#2d3438eb}.viewer-controls button:nth-last-child(-n+2){grid-column:span 3;width:100%}.viewer-info{position:absolute;z-index:3;left:24px;top:24px;max-width:min(520px,calc(100% - 48px));padding:10px 12px;border:1px solid rgba(255,255,255,.14);border-radius:8px;color:#d9e3e7;background:#121416b8;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);font-size:12px;line-height:1.45}.detail-status{position:absolute;z-index:3;left:24px;top:70px;max-width:min(360px,calc(100% - 48px));padding:8px 10px;border:1px solid rgba(88,214,141,.28);border-radius:8px;color:#dfffee;background:#0a1c14b3;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);font-size:12px;line-height:1.35}.camera-axis-gizmo{position:absolute;z-index:6;top:18px;right:24px;width:92px;height:92px;border:1px solid rgba(255,255,255,.14);border-radius:8px;background:#0c0f1194;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 12px 34px #00000042;pointer-events:auto}.camera-axis-gizmo__lines{position:absolute;top:0;right:0;bottom:0;left:0;overflow:visible}.camera-axis-gizmo__ring{fill:#ffffff09;stroke:#ffffff1f;stroke-width:1}.camera-axis-gizmo__line{stroke-linecap:round;stroke-width:3;filter:drop-shadow(0 0 8px rgba(255,255,255,.18))}.camera-axis-gizmo__line--x{stroke:#ff6b6b}.camera-axis-gizmo__line--y{stroke:#73e28f}.camera-axis-gizmo__line--z{stroke:#57a6ff}.camera-axis-gizmo__tip,.camera-axis-gizmo__center{position:absolute;display:grid;place-items:center;border:1px solid rgba(255,255,255,.26);border-radius:999px;color:#fff;background:#0d1113cc;font:inherit;font-size:11px;font-weight:800;line-height:1;cursor:pointer;transform:translate(-50%,-50%);transition:transform .14s ease,background .14s ease,border-color .14s ease}.camera-axis-gizmo__tip{width:24px;height:24px}.camera-axis-gizmo__center{left:50%;top:50%;width:18px;height:18px;padding:0}.camera-axis-gizmo__center:before,.camera-axis-gizmo__center:after{position:absolute;width:8px;height:2px;border-radius:2px;background:#fff;content:""}.camera-axis-gizmo__center:after{transform:rotate(90deg)}.camera-axis-gizmo__tip:hover,.camera-axis-gizmo__center:hover{border-color:#ffffff85;background:#2b3438eb;transform:translate(-50%,-50%) scale(1.08)}.camera-axis-gizmo__tip--x{background:#601c1fe0}.camera-axis-gizmo__tip--y{background:#20582fe0}.camera-axis-gizmo__tip--z{background:#1d3e6de0}.detail-debug-panel{position:absolute;z-index:5;top:18px;right:18px;display:grid;gap:12px;width:min(340px,calc(100% - 36px));max-height:calc(100vh - 36px);overflow:auto;padding:12px;border:1px solid rgba(255,255,255,.16);border-radius:8px;color:#edf7f4;background:#0e1112d6;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 16px 48px #00000042;font-size:12px}.area-model-status{top:108px;border-color:#2f80ed4d;color:#e8f1ff;background:#081626ad}@media(max-width:1180px){.camera-axis-gizmo{right:18px;top:18px}.detail-debug-panel{top:124px}}.detail-debug-panel__header{display:flex;align-items:center;justify-content:space-between;gap:10px}.detail-debug-panel__header strong{min-width:0;overflow:hidden;color:#fff;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.detail-debug-panel button{height:28px;border:1px solid rgba(255,255,255,.16);border-radius:6px;color:#f7fbff;background:#22282adb;font:inherit;cursor:pointer}.detail-debug-panel button:hover{background:#363f42eb}.detail-debug-panel__header button{min-width:58px}.detail-debug-group{display:grid;gap:7px}.detail-debug-group__title{color:#8fc7ff;font-size:11px;font-weight:700;letter-spacing:0;text-transform:uppercase}.detail-debug-group label{display:grid;grid-template-columns:18px 30px minmax(0,1fr) 30px;align-items:center;gap:6px}.detail-debug-group span{color:#aeb9bd;font-weight:700}.detail-debug-group input{min-width:0;height:28px;border:1px solid rgba(255,255,255,.14);border-radius:6px;color:#fff;background:#ffffff14;font:inherit;font-variant-numeric:tabular-nums;outline:0;padding:0 8px}.detail-debug-group input:focus{border-color:#8fc7ff99}.detail-debug-select{width:100%;height:30px;border:1px solid rgba(255,255,255,.14);border-radius:6px;color:#fff;background:#ffffff14;font:inherit;outline:0;padding:0 8px}.detail-debug-select:focus{border-color:#8fc7ff99}.detail-debug-select option{color:#111315}.detail-debug-group .detail-debug-toggle{display:inline-flex;grid-template-columns:none;align-items:center;justify-content:flex-start;gap:8px;width:max-content;min-height:26px}.detail-debug-toggle input{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto;width:15px;min-width:15px;height:15px;border:0;padding:0;background:transparent;accent-color:#39bfff}.detail-debug-toggle span{color:#d9f4ff;font-weight:700}.coarse-mode-control{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.coarse-mode-control button.active{border-color:#58d68d9e;color:#fff;background:#2e8a59b3}.detail-debug-code{margin:0;padding:10px;border:1px solid rgba(255,255,255,.12);border-radius:6px;color:#dfffee;background:#00000047;font-family:Cascadia Mono,Consolas,monospace;font-size:11px;line-height:1.45;overflow:auto;white-space:pre-wrap}.map-panel{display:flex;flex-direction:column;justify-content:space-between;gap:32px;padding:28px;min-height:100vh;border-left:1px solid rgba(255,255,255,.1);background:#111315b3;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.eyebrow{margin:0 0 10px;color:#8fc7ff;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:0}h1{margin:0;font-size:30px;line-height:1.15}.status-list{display:grid;gap:14px}.status-list div{display:grid;gap:6px;padding-top:14px;border-top:1px solid rgba(255,255,255,.12)}.status-list span{color:#aab4b8;font-size:13px}.status-list strong{color:#fff;font-size:14px;font-weight:650;overflow-wrap:anywhere}@media(max-width:860px){.app-shell{grid-template-columns:1fr}.viewer-stage,.sog-viewer{min-height:70vh;height:70vh}.map-panel{min-height:auto;border-left:0;border-top:1px solid rgba(255,255,255,.1)}.detail-debug-panel{top:auto;right:12px;bottom:12px;width:min(340px,calc(100% - 24px));max-height:min(440px,calc(100% - 24px))}}
