*{box-sizing:border-box}:root{--app-width: 100vw;--app-height: 100vh}html,body{width:100%;height:100%;margin:0;overflow:hidden;overscroll-behavior:none;touch-action:manipulation;background:#05070a;color:#eef7ff;font-family:Segoe UI,Microsoft YaHei,Arial,sans-serif;user-select:none;-webkit-touch-callout:none;-webkit-user-select:none}.app-viewport{position:fixed;left:0;top:0;width:var(--app-width);height:var(--app-height);overflow:hidden;transform-origin:left top}.is-virtual-landscape .app-viewport{transform:translate(100vw) rotate(90deg)}.is-virtual-landscape .annotation-modal,.is-virtual-landscape .person-detail-overlay,.is-virtual-landscape .highlight-region-panel,.is-virtual-landscape .cruise-toolbar,.is-virtual-landscape .mobile-console{touch-action:none}#scene,.debug-collision-canvas{display:block;width:100%;height:100%;touch-action:none;user-select:none;-webkit-user-select:none}#scene{cursor:grab}.debug-collision-canvas{position:fixed;inset:0;z-index:4;pointer-events:none}.mobile-console{position:fixed;right:8px;bottom:8px;z-index:80;width:min(520px,calc(var(--app-width) - 16px));max-height:min(calc(var(--app-height) * .52),360px);display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;border:1px solid rgba(110,232,255,.45);border-radius:8px;background:#01070ce6;box-shadow:0 12px 50px #00000073;color:#dffbff;pointer-events:auto}.mobile-console header{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid rgba(110,232,255,.24);background:#081722f0}.mobile-console header strong{flex:1;font-size:13px}.mobile-console button{min-width:44px;height:28px;border:1px solid rgba(110,232,255,.35);border-radius:6px;background:#0c2230eb;color:#eefbff;font:inherit}.mobile-console pre{min-height:84px;max-height:inherit;margin:0;padding:9px 10px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;font:11px/1.45 Consolas,SFMono-Regular,monospace;user-select:text;-webkit-user-select:text}.mobile-console.is-minimized{width:auto;grid-template-rows:auto}.mobile-console.is-minimized pre{display:none}.annotation-layer{position:fixed;inset:0;z-index:6;pointer-events:none}.highlight-draft-overlay{position:fixed;inset:0;z-index:7;width:100%;height:100%;overflow:visible;pointer-events:none}.highlight-draft-overlay line,.highlight-draft-overlay polyline,.highlight-draft-overlay polygon{fill:#1fd7ff14;stroke:#65eaff;stroke-width:2;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 5px rgba(25,220,255,.9))}.highlight-draft-overlay circle{fill:#fff;stroke:#19dfff;stroke-width:3;vector-effect:non-scaling-stroke}.highlight-draft-overlay text{fill:#fff;font:700 12px/1 sans-serif;paint-order:stroke;stroke:#00101cf2;stroke-width:4px;stroke-linejoin:round}.is-scene-input-locked .annotation-layer{display:none}.annotation-marker{position:absolute;display:grid;grid-template-columns:38px minmax(120px,220px);gap:2px;align-items:start;transform:translate(-19px,-12px);pointer-events:none}.is-edit-mode .annotation-marker,.is-showcase-mode .annotation-marker,.is-mobile-mode .annotation-marker{pointer-events:auto}.annotation-marker[hidden]{display:none}.annotation-marker__pin{width:38px;height:38px;background:var(--annotation-pin-url) center / contain no-repeat;filter:drop-shadow(0 0 12px rgba(7,106,90,.45));transform-origin:50% 31%}.annotation-marker__card{display:grid;gap:5px;padding:8px 10px;border:1px solid rgba(52,211,255,.58);border-radius:8px;background:#040f1cc7;color:#effbff;font-size:12px;line-height:1.35;box-shadow:0 10px 28px #00000047,inset 0 0 18px #08bff714;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer}.annotation-marker.is-aimed{z-index:8}.annotation-marker.is-aimed .annotation-marker__pin{filter:brightness(1.18) drop-shadow(0 0 16px rgba(245,245,245,.72)) drop-shadow(0 0 20px rgba(7,106,90,.52));transform:scale(1.18)}.annotation-marker.is-aimed .annotation-marker__card{border-color:#8df4fff2;background:#051c2eeb;box-shadow:0 0 0 1px #8df4ff57,0 0 32px #36f2ff6b,0 14px 34px #0000005c;transform:translateY(-2px)}.annotation-marker--switch .annotation-marker__pin{filter:brightness(1.18) drop-shadow(0 0 14px rgba(255,211,112,.72))}.annotation-marker--switch .annotation-marker__card{border-color:#ffd370b8;background:#301c07e6;box-shadow:0 10px 28px #0000005c,0 0 0 1px #ffd3702e,0 0 28px #ffb54857}.annotation-marker--switch .annotation-marker__title{color:#fff5ce}.annotation-marker--switch .annotation-marker__stats{display:none}.annotation-marker--road-switch .annotation-marker__pin{filter:brightness(1.25) hue-rotate(70deg) drop-shadow(0 0 16px rgba(53,255,103,.9))}.annotation-marker--road-switch .annotation-marker__card{border-color:#35ff67db;background:#05391ee6;box-shadow:0 0 0 1px #35ff672e,0 0 26px #35ff6747,0 12px 30px #0000005c}.annotation-marker--road-switch .annotation-marker__title{color:#ddffe7}.annotation-marker--road-switch .annotation-marker__meta:empty{display:none}.annotation-marker--highlight-region .annotation-marker__pin{filter:brightness(1.22) hue-rotate(125deg) drop-shadow(0 0 16px rgba(31,224,255,.9))}.annotation-marker--highlight-region .annotation-marker__card{border-color:#1fe0ffe0;background:#032a3ae6;box-shadow:0 0 0 1px #1fe0ff33,0 0 28px #1fe0ff4d,0 12px 30px #0000005c}.annotation-marker--highlight-region .annotation-marker__title{color:#d9fbff}.annotation-marker--highlight-region .annotation-marker__meta:empty{display:none}.annotation-marker__title{overflow:hidden;color:#fff;font-size:13px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.annotation-marker__meta{color:#d2ecf8c2}.annotation-marker__stats{display:flex;flex-wrap:wrap;gap:5px}.annotation-marker__stats span{padding:2px 6px;border:1px solid rgba(82,212,255,.28);border-radius:6px;background:#14506e5c}.edit-toolbar{position:fixed;right:18px;top:18px;z-index:8;display:flex;gap:8px}.cruise-toolbar{position:fixed;right:18px;top:18px;z-index:9;display:flex;flex-wrap:wrap;gap:8px;align-items:center;max-width:min(980px,calc(var(--app-width) - 36px))}.air-tool-tabs,.air-tool-controls{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.air-tool-tabs[hidden],.air-tool-controls[hidden]{display:none}.air-tool-tabs{padding:3px;border:1px solid rgba(82,212,255,.28);border-radius:9px;background:#030c16d1}.air-tool-tabs button.is-active{border-color:#5ee6ffe6;background:#147ea4d1;color:#fff}.region-tool-controls label{display:flex;gap:5px;align-items:center;color:#e4f7ffeb;font-size:12px}.region-tool-controls input,.region-tool-controls select{width:92px;min-width:0;padding:7px 8px;border:1px solid rgba(82,212,255,.32);border-radius:7px;outline:none;background:#030c16e0;color:#fff}.region-tool-controls select{width:190px}#region-name-input{width:122px}.building-draft-point-list{flex:1 0 100%;min-width:min(720px,calc(var(--app-width) - 72px));max-height:min(280px,calc(var(--app-height) - 170px));padding:9px;overflow:auto;border:1px solid rgba(82,212,255,.25);border-radius:9px;background:#030c16d1}.building-draft-point-list[hidden]{display:none}.building-draft-point-list__title{margin-bottom:7px;color:#fff;font-size:12px;font-weight:700}.building-draft-point-list__rows{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.building-draft-point-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:7px;align-items:center;padding:7px;border:1px solid rgba(82,212,255,.16);border-radius:7px;background:#041422ad}.building-draft-point-row.is-next-pair{border-color:#ffca4ac7;background:#472d05a6;box-shadow:inset 0 0 18px #ffb32214}.building-draft-point-row strong{color:#79eaff;font-size:12px;white-space:nowrap}.building-draft-point-row code{overflow:hidden;color:#def2fac7;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.building-draft-point-row span{grid-column:1 / 3;color:#ffd878;font-size:11px}.building-draft-point-row button{grid-column:3;grid-row:1;padding:6px 9px;border:1px solid rgba(82,212,255,.35);border-radius:6px;background:#105876c2;color:#fff;cursor:pointer;white-space:nowrap}.building-draft-point-row.is-next-pair button{grid-row:1 / span 2;border-color:#ffcd5999;background:#7e4d04e6}.building-draft-point-list__empty{color:#d2ecf89e;font-size:12px;text-align:center}@media(max-width:760px){.building-draft-point-list{min-width:calc(var(--app-width) - 72px)}.building-draft-point-list__rows{grid-template-columns:1fr}}.highlight-region-panel{position:fixed;top:104px;right:18px;z-index:9;display:grid;gap:9px;width:min(330px,calc(var(--app-width) - 36px));max-height:calc(var(--app-height) - 132px);padding:12px;border:1px solid rgba(82,212,255,.3);border-radius:12px;background:#040f1cdb;box-shadow:0 14px 38px #00000057;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.highlight-region-panel[hidden]{display:none}.highlight-region-panel>header,.highlight-region-row{display:flex;gap:8px;align-items:center}.highlight-region-panel>header{justify-content:space-between;color:#fff}.highlight-region-list{display:grid;gap:7px;overflow:auto}.highlight-region-row{padding:7px;border:1px solid rgba(82,212,255,.18);border-radius:8px;background:#030a1385}.highlight-region-row span{flex:0 0 auto;color:#7be8ff;font-size:12px}.highlight-region-row input{min-width:0;flex:1;padding:6px;border:1px solid rgba(82,212,255,.25);border-radius:6px;background:#040f1cdb;color:#fff}.highlight-region-binding{display:flex;flex:1 0 100%;gap:7px;align-items:center;color:#d2ecf8c7;font-size:12px}.highlight-region-binding select{min-width:0;flex:1;padding:6px;border:1px solid rgba(82,212,255,.25);border-radius:6px;background:#040f1cdb;color:#fff}.highlight-region-row button,.highlight-region-panel>button{padding:7px 9px;border:1px solid rgba(82,212,255,.3);border-radius:7px;background:#0b364cc7;color:#effbff;cursor:pointer}.highlight-region-empty{padding:10px;color:#d2ecf8a8;text-align:center}.edit-toolbar[hidden],.cruise-toolbar[hidden]{display:none}.cruise-toolbar__status{min-height:36px;padding:9px 12px;border:1px solid rgba(82,212,255,.32);border-radius:8px;background:#040f1cc7;color:#ebf7ffeb;font-size:13px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.edit-toolbar button,.cruise-toolbar button,.annotation-button{height:36px;padding:0 14px;border:1px solid rgba(160,215,255,.28);border-radius:8px;background:#050a12b8;color:#ebf7ffeb;font:inherit;font-size:13px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer;touch-action:none}.edit-toolbar button:hover,.cruise-toolbar button:hover,.annotation-button:hover{background:#1c3a58db}.cruise-toolbar button:disabled{cursor:default;opacity:.46}.cruise-transition{position:fixed;inset:0;z-index:30;display:grid;place-items:center;background:#000;color:#fff;font-size:15px;letter-spacing:0;opacity:0;transition:opacity .65s ease;pointer-events:none}.cruise-transition.is-visible{opacity:1}.cruise-transition[hidden]{display:none}.annotation-button--primary{border-color:#3edaffa3;background:#127096d1;color:#fff}.annotation-button--danger{margin-right:auto;border-color:#ff78786b;color:#ffd3d3}.annotation-modal{position:fixed;inset:0;z-index:40;display:flex;align-items:stretch;justify-content:flex-start;padding:0;background:#02080e57}.annotation-modal[hidden]{display:none}.annotation-dialog{display:grid;grid-template-rows:auto minmax(0,1fr);width:min(880px,calc(var(--app-width) - 42px));height:var(--app-height);max-height:var(--app-height);overflow:hidden;border:0;border-right:1px solid rgba(52,211,255,.52);border-radius:0 8px 8px 0;background:#050e1af0;color:#eef8ff;box-shadow:18px 0 60px #00000075,inset 0 0 26px #08bff714;animation:annotation-drawer-in .18s ease-out}@keyframes annotation-drawer-in{0%{transform:translate(-18px);opacity:.72}to{transform:translate(0);opacity:1}}@keyframes annotation-mobile-sheet-in{0%{transform:translateY(18px);opacity:.78}to{transform:translateY(0);opacity:1}}@keyframes annotation-mobile-drawer-in{0%{transform:translate(22px);opacity:.78}to{transform:translate(0);opacity:1}}.annotation-dialog__header{position:relative;display:flex;justify-content:flex-end;gap:16px;align-items:center;padding:10px 18px;border-bottom:1px solid rgba(82,212,255,.24)}.annotation-dialog__header div{display:grid;gap:4px}.annotation-dialog__header strong{font-size:17px}.annotation-dialog__header span{color:#d2ecf8b8;font-size:12px}#annotation-close-button{width:36px;height:36px;padding:0;border:1px solid rgba(160,215,255,.26);border-radius:8px;background:#122334c7;color:#fff;font:inherit;font-size:22px;line-height:1;cursor:pointer}#annotation-ground-entry-button{height:36px;margin-right:auto;padding:0 14px;border:1px solid rgba(61,221,255,.62);border-radius:8px;background:#095b79d1;color:#e9fbff;font:inherit;font-size:13px;font-weight:700;cursor:pointer}#annotation-ground-entry-button:hover{background:#127ea4eb}#annotation-ground-entry-button[hidden]{display:none}.annotation-form{display:grid;grid-template-rows:minmax(0,1fr) auto;min-height:0}.annotation-form__body{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.9fr);gap:16px;min-height:0;overflow:auto;overscroll-behavior:contain;padding:16px 18px;touch-action:pan-y;-webkit-overflow-scrolling:touch}.annotation-section{display:grid;gap:12px;align-content:start;padding:14px;border:1px solid rgba(82,212,255,.18);border-radius:8px;background:#0816249e}.annotation-section h3{margin:0;color:#dff8ff;font-size:14px}.annotation-section--wide{grid-column:1 / -1}.annotation-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.annotation-field{display:grid;gap:5px}.annotation-field--wide{grid-column:1 / -1}.annotation-field label,.annotation-list-label{color:#d2ecf8c2;font-size:12px}.annotation-field input,.annotation-field select,.annotation-field textarea{min-width:0;border:1px solid rgba(160,215,255,.22);border-radius:6px;background:#030911b8;color:#fff;font:inherit;font-size:13px}.annotation-field input,.annotation-field select{height:34px;padding:0 9px}.annotation-field textarea{min-height:70px;padding:8px 9px;resize:vertical}.annotation-checks{display:flex;flex-wrap:wrap;gap:8px}.annotation-checks label{display:inline-flex;gap:5px;align-items:center;padding:5px 8px;border:1px solid rgba(160,215,255,.18);border-radius:6px;background:#0309117a}.annotation-list{display:grid;gap:8px}.annotation-list__header{display:flex;justify-content:space-between;gap:8px;align-items:center}.annotation-small-button{height:28px;padding:0 10px;border:1px solid rgba(82,212,255,.32);border-radius:6px;background:#12709670;color:#fff;font:inherit;font-size:12px;cursor:pointer}.annotation-repeat-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) 92px auto;gap:8px;align-items:center;padding:8px;border:1px solid rgba(160,215,255,.14);border-radius:8px;background:#0309116b}.annotation-repeat-row--media{grid-template-columns:minmax(100px,.8fr) minmax(120px,1fr) minmax(120px,1fr) auto}.annotation-repeat-row--house-person{grid-template-columns:repeat(4,minmax(120px,1fr)) auto;align-items:start}.annotation-repeat-row input,.annotation-repeat-row select,.annotation-repeat-row textarea{min-width:0;padding:0 8px;border:1px solid rgba(160,215,255,.18);border-radius:6px;background:#030911b8;color:#fff;font:inherit;font-size:12px}.annotation-repeat-row input,.annotation-repeat-row select{height:32px}.annotation-repeat-row textarea{grid-column:span 2;min-height:64px;padding:7px 8px;resize:vertical}.annotation-repeat-row textarea[readonly]{color:#e6f7ffd1;resize:none;cursor:default}.annotation-repeat-row input[type=file]{height:auto;padding:5px 6px}.annotation-remove-button{width:30px;height:30px;border:1px solid rgba(255,120,120,.32);border-radius:6px;background:#460a0e75;color:#ffd6d6;cursor:pointer}.annotation-form__footer{display:flex;gap:10px;align-items:center;padding:14px 18px;border-top:1px solid rgba(82,212,255,.22);background:#030911c7}.annotation-readonly input,.annotation-readonly select,.annotation-readonly textarea,.annotation-readonly .annotation-small-button,.annotation-readonly .annotation-remove-button{pointer-events:none;opacity:.72}.annotation-detail-mode .annotation-form__body{display:block}.annotation-detail{display:grid;grid-template-columns:minmax(320px,.78fr) minmax(420px,1.22fr);gap:16px;min-height:0}@media(max-width:980px){.annotation-detail{grid-template-columns:1fr}}.annotation-detail__left,.annotation-detail__right{min-width:0;border:1px solid rgba(82,212,255,.2);border-radius:8px;background:#08162494}.annotation-detail__left{display:grid;gap:12px;align-content:start;padding:14px}.annotation-detail__right{display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden}.annotation-detail-title{display:grid;gap:5px;padding-bottom:12px;border-bottom:1px solid rgba(82,212,255,.18)}.annotation-detail-title span,.annotation-detail-title small,.annotation-detail-row span,.annotation-detail-stat span{color:#d2ecf8b8;font-size:12px}.annotation-detail-title strong{color:#fff;font-size:18px}.annotation-demo-notice{padding:8px 10px;border:1px solid rgba(255,199,87,.38);border-radius:6px;background:#784e0c2e;color:#ffebb4f0;font-size:12px;font-weight:700}.annotation-media-grid .annotation-demo-notice,.annotation-person-list .annotation-demo-notice{margin-top:8px}.annotation-detail-group{display:grid;gap:8px}.annotation-detail-group h3{margin:0;color:#dff8ff;font-size:14px}.annotation-detail-row{display:grid;grid-template-columns:92px minmax(0,1fr) auto;gap:8px;align-items:center;min-height:34px;padding:7px 9px;border:1px solid rgba(160,215,255,.13);border-radius:6px;background:#03091161}.annotation-detail-row strong{min-width:0;overflow-wrap:anywhere;color:#f6fdff;font-size:13px;font-weight:600}.annotation-inline-button,.annotation-detail-tabs button{border:1px solid rgba(82,212,255,.38);border-radius:6px;background:#12709675;color:#fff;font:inherit;cursor:pointer}.annotation-inline-button{min-width:34px;height:26px;padding:0 8px;font-size:12px}.annotation-detail-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.annotation-detail-stat{display:grid;gap:4px;min-height:56px;padding:9px;border:1px solid rgba(82,212,255,.18);border-radius:6px;background:#14506e40}.annotation-detail-stat strong{color:#fff;font-size:17px}.annotation-detail-tabs{display:flex;gap:8px;padding:12px;border-bottom:1px solid rgba(82,212,255,.18)}.annotation-detail-tabs button{height:32px;padding:0 12px;font-size:13px}.annotation-detail-tabs button.is-active{border-color:#3edaffb8;background:#127096e0}.annotation-detail-panel{min-height:0;overflow:auto;overscroll-behavior:contain;padding:14px;touch-action:pan-y;-webkit-overflow-scrolling:touch}.annotation-detail-panel[hidden]{display:none}.annotation-empty{display:grid;place-items:center;min-height:180px;border:1px dashed rgba(160,215,255,.22);border-radius:8px;color:#d2ecf8b8}.annotation-media-grid{display:grid;grid-template-columns:1fr;gap:12px}.annotation-media-card{display:grid;gap:8px;padding:10px;border:1px solid rgba(160,215,255,.16);border-radius:8px;background:#0309116b}.annotation-media-card img,.annotation-media-card__placeholder{width:100%;border-radius:6px;background:#030911bd}.annotation-media-card img{display:block;height:auto;object-fit:contain}.annotation-media-card__placeholder{display:grid;place-items:center;min-height:220px;color:#d2ecf894}.annotation-media-card div{display:grid;gap:4px}.annotation-media-card span{color:#d2ecf8b3;font-size:12px}.annotation-person-list{display:grid;gap:10px}.annotation-person-card{display:grid;grid-template-columns:86px minmax(0,1fr);gap:12px;padding:10px;border:1px solid rgba(160,215,255,.16);border-radius:8px;background:#0309116b}.annotation-person-card.is-owner{border-color:#3edaff80}.annotation-person-card.is-risk-person{border-color:#ff585894;background:#37080c57;box-shadow:0 0 0 1px #ff585829,inset 0 0 22px #ff44440f}.annotation-person-card.is-highlighted{box-shadow:0 0 0 2px #3edaff5c,0 0 24px #3edaff2e}.annotation-person-card img,.annotation-person-card__avatar{width:86px;height:104px;border-radius:6px;object-fit:cover;background:#030911bd}.annotation-person-card__avatar{display:grid;place-items:center;padding:8px;color:#d2ecf894;font-size:12px;text-align:center}.annotation-person-card header{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:8px}.annotation-person-card header strong{margin-right:auto;color:#fff;font-size:15px}.annotation-person-card header span{padding:2px 7px;border:1px solid rgba(82,212,255,.22);border-radius:999px;color:#e1f5ffdb;font-size:12px}.annotation-person-card__status{border-color:#49de8061!important;background:#1665343d}.annotation-person-card.is-risk-person .annotation-person-card__risk{border-color:#ff5959b8;background:#7f1d1d7a;color:#ffd7d7}.annotation-person-card dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 10px;margin:0}.annotation-person-card dl div{min-width:0}.annotation-person-card dt{color:#d2ecf899;font-size:12px}.annotation-person-card dd{margin:2px 0 0;overflow-wrap:anywhere;color:#f5fcffeb;font-size:13px}.person-detail-overlay{position:fixed;inset:0;z-index:55;display:grid;place-items:center;padding:22px;background:#00081052;touch-action:pan-y}.person-detail-dialog{position:relative;width:min(720px,calc(var(--app-width) - 36px));max-height:min(760px,calc(var(--app-height) - 36px));overflow:hidden;border:1px solid rgba(31,213,255,.86);border-radius:10px;background:linear-gradient(135deg,#05111ef5,#051526e6);color:#f4fbff;box-shadow:0 0 0 1px #1fd5ff52,0 0 34px #12bfff57,0 24px 80px #00000094;touch-action:pan-y}.person-detail-dialog:before,.person-detail-dialog:after{position:absolute;width:42px;height:42px;border-color:#56dfffe0;content:"";pointer-events:none}.person-detail-dialog:before{top:-1px;left:-1px;border-top:3px solid;border-left:3px solid}.person-detail-dialog:after{right:-1px;bottom:-1px;border-right:3px solid;border-bottom:3px solid}.person-detail-dialog header{display:flex;justify-content:center;align-items:center;min-height:52px;border-bottom:1px solid rgba(86,223,255,.3);background:linear-gradient(90deg,transparent,rgba(30,177,232,.28),transparent)}.person-detail-dialog header strong{color:#fff;font-size:20px;letter-spacing:0}.person-detail-dialog header button{position:absolute;top:10px;right:12px;width:32px;height:32px;border:0;background:transparent;color:#fff;font:inherit;font-size:28px;line-height:1;cursor:pointer}.person-detail-content{display:grid;grid-template-columns:minmax(0,1fr) 148px;gap:22px;max-height:calc(min(760px,var(--app-height) - 36px) - 52px);overflow:auto;overscroll-behavior:contain;padding:26px 34px 30px;touch-action:pan-y;-webkit-overflow-scrolling:touch}.person-detail-fields{display:grid;gap:12px}.person-detail-name{display:flex;gap:10px;align-items:center;color:#fff;font-size:18px}.person-detail-icon{color:#10d9ff;text-shadow:0 0 14px rgba(16,217,255,.75)}.person-detail-line{display:grid;grid-template-columns:100px minmax(0,1fr);gap:14px;align-items:start;min-height:24px}.person-detail-line span{color:#bbe6f8c2;text-align:right}.person-detail-line strong{overflow-wrap:anywhere;color:#fff;font-weight:700}.person-access-records{display:grid;gap:9px;padding-top:6px}.person-access-records h3{margin:0;color:#bbe6f8c2;font-size:14px;font-weight:500}.person-access-record{position:relative;display:grid;gap:4px;padding:9px 12px 9px 18px;border:1px solid rgba(86,223,255,.18);border-radius:6px;background:#040e1b7a}.person-access-record:before{position:absolute;top:14px;left:7px;width:5px;height:5px;border-radius:50%;background:#10d9ff;box-shadow:0 0 12px #10d9ffb3;content:""}.person-access-record strong{color:#fff;font-size:13px}.person-access-record span,.person-access-record small{color:#e5f6ffdb}.person-access-record small{font-size:12px}.person-detail-photo img,.person-detail-photo div{width:132px;height:164px;border:1px solid rgba(160,215,255,.4);border-radius:6px;object-fit:cover;background:#dcecf2e6}.person-detail-photo div{display:grid;place-items:center;padding:12px;color:#081624b8;text-align:center}.is-lod-loading-lock #scene{opacity:0;pointer-events:none}.is-pointer-locked #scene{cursor:none}.is-pointer-locked:before,.is-pointer-locked:after{position:fixed;left:50%;top:50%;z-index:12;pointer-events:none;content:""}.is-pointer-locked:before{width:22px;height:22px;border:1px solid rgba(235,250,255,.62);border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 12px #08bff747}.is-pointer-locked:after{width:4px;height:4px;border-radius:50%;background:#ebfaffbd;transform:translate(-50%,-50%)}.is-pointer-locked.is-annotation-aimed:before{border-color:#36f2fffa;box-shadow:0 0 0 5px #36f2ff1f,0 0 22px #36f2ffd1}.is-pointer-locked.is-annotation-aimed:after{background:#36f2ff;box-shadow:0 0 12px #36f2ffe6}.hud{position:fixed;z-index:5;color:#eaf7ff;pointer-events:none;text-shadow:0 1px 12px rgba(10,25,45,.7)}.hud--status{top:18px;left:18px;width:min(360px,calc(var(--app-width) - 36px));padding:14px 16px;border:1px solid rgba(120,185,255,.22);border-radius:8px;background:#050a129e;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.is-showcase-hud-hidden .hud--status{display:none}.hud__title{margin-bottom:10px;font-size:16px;font-weight:700;letter-spacing:0}.stats{display:grid;gap:8px;margin:0}.stats div{display:grid;grid-template-columns:54px minmax(0,1fr);gap:10px;align-items:baseline}.stats dt{color:#bedcf0b3;font-size:12px}.stats dd{margin:0;min-width:0;color:#fff;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.is-lod-loading-lock .hud,.is-lod-loading-lock .annotation-layer,.is-lod-loading-lock .highlight-draft-overlay,.is-lod-loading-lock .highlight-region-panel,.is-lod-loading-lock .view-annotation-button,.is-lod-loading-lock .edit-toolbar,.is-lod-loading-lock .mode-switch-button,.is-lod-loading-lock .start-drone-cruise-button,.is-lod-loading-lock .control-guide,.is-lod-loading-lock .reset-view-button,.is-lod-loading-lock .zoom-controls,.is-lod-loading-lock .joystick-zone{opacity:0;visibility:hidden;pointer-events:none}.is-lod-loading-lock.is-ground-loading-switchable .mode-switch-button{z-index:31;opacity:1;visibility:visible;pointer-events:auto}.control-guide{position:fixed;left:22px;bottom:22px;z-index:6;width:224px;padding:18px 18px 16px;border:1px solid rgba(64,138,158,.44);border-radius:3px;background:linear-gradient(145deg,#081923db,#08121cc2);color:#e6f9fff0;box-shadow:0 14px 38px #00000052,inset 0 0 28px #2cb5d614;text-align:center;text-shadow:0 0 12px rgba(126,224,255,.28);pointer-events:none}.control-guide[hidden],.is-mobile-mode .control-guide,.is-scene-input-locked .control-guide,.is-annotation-panel-open .control-guide{display:none}.control-guide:before,.control-guide:after{position:absolute;width:16px;height:16px;border-color:#84dff447;content:""}.control-guide:before{top:4px;right:4px;border-top:1px solid;border-right:1px solid}.control-guide:after{left:4px;bottom:4px;border-bottom:1px solid;border-left:1px solid}.control-guide__title{margin-bottom:14px;color:#e9fbff;font-size:18px;font-weight:700}.control-guide__section{display:grid;justify-items:center;gap:8px;margin-top:10px}.control-guide__section>span,.control-guide__row span:last-child,.control-guide__keys small{color:#e5f7ffdb;font-size:12px;font-weight:600}.control-guide__wasd{display:grid;grid-template-columns:repeat(3,28px);gap:5px;justify-content:center}.control-guide__keys,.control-guide__row{display:flex;justify-content:center;align-items:center;gap:7px}.control-guide kbd{display:grid;place-items:center;min-width:28px;height:28px;padding:0 7px;border:1px solid rgba(203,243,255,.58);border-radius:4px;background:#0f212dc7;color:#eefbff;font:inherit;font-size:14px;font-weight:700;line-height:1;box-shadow:inset 0 0 10px #9ae6ff1a}.control-guide__mouse{position:relative;width:16px;height:24px;border:1px solid rgba(203,243,255,.72);border-radius:9px}.control-guide__mouse:before{position:absolute;left:50%;top:4px;width:1px;height:7px;background:#cbf3ffb8;content:""}.control-guide__mouse:after{position:absolute;left:50%;top:4px;width:4px;height:7px;border-radius:4px;background:#3dddffb8;content:"";transform:translate(-50%)}.view-annotation-button{position:fixed;left:50%;bottom:max(24px,calc(env(safe-area-inset-bottom,0px) + 20px));z-index:8;display:none;height:40px;padding:0 16px;border:1px solid rgba(96,229,255,.52);border-radius:8px;background:#051422d1;color:#f3fdff;font:inherit;font-size:14px;box-shadow:0 0 0 1px #60e5ff1f,0 10px 28px #00000057;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer;transform:translate(-50%);touch-action:none}.is-mobile-mode .view-annotation-button:not([hidden]){display:block}.is-cruise-active .view-annotation-button,.is-annotation-panel-open .view-annotation-button{display:none}.mode-switch-button,.start-drone-cruise-button{position:fixed;right:18px;z-index:7;height:38px;padding:0 15px;border:1px solid rgba(160,215,255,.28);border-radius:8px;background:#050a12b8;color:#ebf7fff0;font:inherit;font-size:13px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer;touch-action:none}.mode-switch-button{top:18px}.start-drone-cruise-button{left:50%;top:max(18px,calc(env(safe-area-inset-top,0px) + 16px));right:auto;z-index:8;height:54px;padding:0 28px;border-color:#60e5ff9e;background:#051422d6;font-size:16px;font-weight:700;box-shadow:0 0 0 1px #60e5ff29,0 14px 38px #00000061,0 0 28px #3cd5ff38;transform:translate(-50%)}.mode-switch-button:hover,.start-drone-cruise-button:hover{background:#1c3a58db}.start-drone-cruise-button.is-stop-mode{border-color:#ff8e70b8;background:#581c12d6;box-shadow:0 0 0 1px #ff8e7029,0 14px 38px #00000061,0 0 28px #ff68463d}.start-drone-cruise-button.is-stop-mode:hover{background:#782618e6}.mode-switch-button:disabled,.start-drone-cruise-button:disabled{cursor:default;opacity:.46}.reset-view-button{position:fixed;right:18px;bottom:18px;z-index:7;height:36px;padding:0 14px;border:1px solid rgba(160,215,255,.24);border-radius:8px;background:#050a12ad;color:#ebf7ffe6;font:inherit;font-size:13px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer;touch-action:none}.reset-view-button:hover{background:#1c3a58d1}.reset-view-button:active{transform:translateY(1px)}.zoom-controls{position:fixed;right:18px;bottom:66px;z-index:7;display:none;flex-direction:column;gap:8px;touch-action:none}.is-mobile-mode .zoom-controls{display:flex}.zoom-controls button{width:42px;height:42px;padding:0;border:1px solid rgba(160,215,255,.28);border-radius:8px;background:#050a12ad;color:#ebf7fff0;font:inherit;font-size:24px;line-height:1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer;touch-action:none}.zoom-controls button:active{transform:translateY(1px)}.loading{position:fixed;inset:0;z-index:10;display:grid;place-items:center;background:#03060ab8;transition:opacity .25s ease,visibility .25s ease}.is-lod-loading-lock .loading{z-index:30;background:#000}.loading--hidden{opacity:0;visibility:hidden;pointer-events:none}.loading__panel{display:grid;gap:10px;min-width:min(360px,calc(var(--app-width) - 48px));padding:22px 24px;border:1px solid rgba(122,185,255,.24);border-radius:8px;background:#070e18e0;text-align:center;box-shadow:0 16px 60px #00000057}.loading__panel strong{font-size:17px}.loading__panel span{color:#dceefabd;font-size:13px}.loading__progress{width:100%;height:7px;overflow:hidden;border-radius:999px;background:#78b9ff29}.loading__progress[hidden]{display:none}.loading__progress-bar{width:0%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#62daff,#b8f3ff);transition:width .18s ease}.loading__progress--indeterminate .loading__progress-bar{width:38%;animation:loading-progress 1.1s ease-in-out infinite}@keyframes loading-progress{0%{transform:translate(-110%)}to{transform:translate(280%)}}.orientation-overlay{position:fixed;left:50%;top:max(12px,calc(env(safe-area-inset-top,0px) + 10px));z-index:40;display:block;padding:0;color:#eef7ff;text-align:center;pointer-events:none;transform:translate(-50%)}.orientation-overlay[hidden]{display:none}.orientation-overlay__panel{display:grid;gap:2px;min-width:190px;padding:9px 16px 8px;border:1px solid rgba(122,213,255,.34);border-radius:999px;background:#07121cd1;box-shadow:0 8px 26px #00000047;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.orientation-overlay__panel strong{font-size:14px}.orientation-overlay__panel span{color:#dceefac2;font-size:10px}.joystick-zone{position:fixed;left:82px;bottom:62px;z-index:6;display:none;width:102px;height:102px;touch-action:none;user-select:none;-webkit-user-select:none}.is-mobile-mode .joystick-zone{display:block}.is-annotation-panel-open .joystick-zone{display:none}.joystick-base{position:relative;width:100%;height:100%;border:1px solid rgba(230,245,255,.28);border-radius:50%;background:radial-gradient(circle,#e6f5ff1a,#050a1233);box-shadow:inset 0 0 22px #ffffff12,0 10px 28px #00000042;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.joystick-knob{position:absolute;left:50%;top:50%;width:54px;height:54px;border:1px solid rgba(255,255,255,.48);border-radius:50%;background:#f0f8ff47;box-shadow:0 6px 22px #00000042;transform:translate(-50%,-50%);transition:transform .08s ease-out}.joystick-zone:active .joystick-knob{transition:none}.is-mobile-mode .mode-switch-button{top:max(12px,calc(env(safe-area-inset-top,0px) + 10px));right:max(14px,calc(env(safe-area-inset-right,0px) + 12px))}.is-mobile-mode .start-drone-cruise-button{left:50%;top:max(18px,calc(env(safe-area-inset-top,0px) + 16px));right:auto;height:52px;padding:0 24px;transform:translate(-50%)}.is-mobile-mode .reset-view-button{right:max(14px,calc(env(safe-area-inset-right,0px) + 12px));bottom:max(18px,calc(env(safe-area-inset-bottom,0px) + 16px))}.is-mobile-mode .zoom-controls{right:max(14px,calc(env(safe-area-inset-right,0px) + 12px));bottom:max(64px,calc(env(safe-area-inset-bottom,0px) + 62px))}.is-mobile-mode .edit-toolbar{top:max(12px,calc(env(safe-area-inset-top,0px) + 10px));right:max(12px,calc(env(safe-area-inset-right,0px) + 10px))}.is-mobile-mode .annotation-marker{grid-template-columns:32px minmax(96px,172px);gap:2px;transform:translate(-16px,-10px)}.is-mobile-mode .annotation-marker__pin{width:32px;height:32px}.is-mobile-mode .annotation-marker__card{gap:4px;padding:7px 8px;font-size:11px}.is-mobile-mode .annotation-marker__title{font-size:12px}.is-mobile-mode .annotation-marker__stats span{padding:1px 5px}.is-mobile-mode .annotation-modal{align-items:stretch;justify-content:flex-end;padding:0;background:linear-gradient(90deg,#02080e0f,#02080e8a);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.is-mobile-mode .annotation-dialog{width:min(420px,calc(var(--app-width) * .58));height:var(--app-height);max-height:var(--app-height);border:1px solid rgba(74,210,255,.38);border-right:0;border-radius:14px 0 0 14px;background:#040d18f5;box-shadow:-18px 0 54px #00000085,inset 1px 0 #a0e1ff1f;animation:annotation-mobile-drawer-in .2s ease-out}.is-mobile-mode .annotation-dialog__header{min-height:44px;padding:max(6px,env(safe-area-inset-top,0px)) max(14px,env(safe-area-inset-right,0px)) 6px 14px;border-bottom-color:#52d4ff24;background:#040d18b8}.is-mobile-mode .annotation-dialog__header:before{position:absolute;left:8px;top:50%;width:3px;height:34px;border-radius:999px;background:#dceefa57;content:"";transform:translateY(-50%)}.is-mobile-mode #annotation-close-button{width:36px;height:34px;border-radius:8px;background:#0f212ddb;font-size:20px}.is-mobile-mode .annotation-form__body{grid-template-columns:1fr;gap:10px;padding:10px max(12px,env(safe-area-inset-right,0px)) 14px max(12px,env(safe-area-inset-left,0px))}.is-mobile-mode .annotation-section,.is-mobile-mode .annotation-detail__left,.is-mobile-mode .annotation-detail__right{border-radius:8px;background:#071422b8}.is-mobile-mode .annotation-detail{grid-template-columns:1fr;gap:10px}.is-mobile-mode .annotation-detail__left{gap:9px;padding:12px}.is-mobile-mode .annotation-detail-title{gap:3px;padding-bottom:10px}.is-mobile-mode .annotation-detail-title strong{font-size:18px}.is-mobile-mode .annotation-detail-row{grid-template-columns:88px minmax(0,1fr) auto;min-height:32px;padding:6px 8px}.is-mobile-mode .annotation-detail-tabs{gap:6px;padding:8px;overflow-x:auto}.is-mobile-mode .annotation-detail-tabs button{flex:0 0 auto;height:30px;padding:0 10px}.is-mobile-mode .annotation-detail-panel{padding:10px}.is-mobile-mode .annotation-detail-stats,.is-mobile-mode .annotation-person-card dl{grid-template-columns:repeat(2,minmax(0,1fr))}.is-mobile-mode .annotation-grid,.is-mobile-mode .annotation-repeat-row,.is-mobile-mode .annotation-repeat-row--media,.is-mobile-mode .annotation-repeat-row--house-person{grid-template-columns:1fr}.is-mobile-mode .annotation-repeat-row textarea{grid-column:auto}.is-mobile-mode .annotation-repeat-row input[type=file]{max-width:100%}.is-mobile-mode .annotation-form__footer{padding:10px max(12px,env(safe-area-inset-right,0px)) max(10px,env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px));border-top-color:#52d4ff29;background:#030911f0}.is-mobile-mode .annotation-button{min-width:64px;height:36px;border-radius:8px}.is-mobile-mode .person-detail-content{grid-template-columns:minmax(0,1fr) 96px;gap:14px;max-height:calc(var(--app-height) - 78px);padding:14px 16px 18px}.is-mobile-mode .person-detail-photo{order:initial}.is-mobile-mode .person-detail-line{grid-template-columns:76px minmax(0,1fr);gap:9px;min-height:22px}.is-mobile-mode .person-detail-overlay{justify-items:end;padding:14px max(10px,env(safe-area-inset-right,0px)) 14px 10px}.is-mobile-mode .person-detail-dialog{width:min(360px,calc(var(--app-width) * .48));max-height:calc(var(--app-height) - 28px)}.is-mobile-mode .person-detail-dialog header{min-height:44px}.is-mobile-mode .person-detail-dialog header strong{font-size:18px}.is-mobile-mode .person-detail-fields{gap:9px}.is-mobile-mode .person-detail-photo img,.is-mobile-mode .person-detail-photo div{width:96px;height:120px}@media(max-width:720px){.hud--status{top:12px;left:12px;width:calc(var(--app-width) - 24px);max-width:calc(var(--app-width) - 24px)}.mode-switch-button{top:max(12px,calc(env(safe-area-inset-top,0px) + 10px));right:max(14px,calc(env(safe-area-inset-right,0px) + 12px))}.start-drone-cruise-button{left:50%;top:max(18px,calc(env(safe-area-inset-top,0px) + 16px));right:auto;height:52px;padding:0 24px;transform:translate(-50%)}.reset-view-button{right:max(14px,calc(env(safe-area-inset-right,0px) + 12px));bottom:max(18px,calc(env(safe-area-inset-bottom,0px) + 16px))}.zoom-controls{right:max(14px,calc(env(safe-area-inset-right,0px) + 12px));bottom:max(64px,calc(env(safe-area-inset-bottom,0px) + 62px))}.joystick-zone{left:max(44px,calc(env(safe-area-inset-left,0px) + 32px));bottom:max(24px,calc(env(safe-area-inset-bottom,0px) + 20px));width:118px;height:118px}.view-annotation-button{bottom:max(20px,calc(env(safe-area-inset-bottom,0px) + 18px));max-width:calc(var(--app-width) - 190px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.edit-toolbar{top:max(12px,calc(env(safe-area-inset-top,0px) + 10px));right:max(12px,calc(env(safe-area-inset-right,0px) + 10px))}.annotation-marker{grid-template-columns:32px minmax(96px,172px);gap:2px;transform:translate(-16px,-10px)}.annotation-marker__pin{width:32px;height:32px}.annotation-marker__card{gap:4px;padding:7px 8px;font-size:11px}.annotation-marker__title{font-size:12px}.annotation-marker__stats span{padding:1px 5px}.annotation-modal{align-items:stretch;justify-content:flex-end;padding:0;background:linear-gradient(90deg,#02080e0f,#02080e8a);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.annotation-dialog{width:min(calc(var(--app-width) * .92),420px);height:var(--app-height);max-height:var(--app-height);border:1px solid rgba(74,210,255,.38);border-right:0;border-radius:14px 0 0 14px;background:#040d18f5;box-shadow:-18px 0 54px #00000085,inset 1px 0 #a0e1ff1f;animation:annotation-mobile-drawer-in .2s ease-out}.annotation-dialog__header{min-height:44px;padding:max(6px,env(safe-area-inset-top,0px)) max(14px,env(safe-area-inset-right,0px)) 6px 14px;border-bottom-color:#52d4ff24;background:#040d18b8}.annotation-dialog__header:before{position:absolute;left:8px;top:50%;width:3px;height:34px;border-radius:999px;background:#dceefa57;content:"";transform:translateY(-50%)}#annotation-close-button{width:36px;height:34px;border-radius:8px;background:#0f212ddb;font-size:20px}.annotation-form__body{grid-template-columns:1fr;gap:10px;padding:10px max(12px,env(safe-area-inset-right,0px)) 14px max(12px,env(safe-area-inset-left,0px))}.annotation-section,.annotation-detail__left,.annotation-detail__right{border-radius:8px;background:#071422b8}.annotation-detail{grid-template-columns:1fr;gap:10px}.annotation-detail__left{gap:9px;padding:12px}.annotation-detail-title{gap:3px;padding-bottom:10px}.annotation-detail-title strong{font-size:18px}.annotation-detail-row{grid-template-columns:88px minmax(0,1fr) auto;min-height:32px;padding:6px 8px}.annotation-detail-tabs{gap:6px;padding:8px;overflow-x:auto}.annotation-detail-tabs button{flex:0 0 auto;height:30px;padding:0 10px}.annotation-detail-panel{padding:10px}.annotation-detail-stats,.annotation-person-card dl{grid-template-columns:repeat(2,minmax(0,1fr))}.annotation-grid,.annotation-repeat-row,.annotation-repeat-row--media,.annotation-repeat-row--house-person{grid-template-columns:1fr}.annotation-repeat-row textarea{grid-column:auto}.annotation-repeat-row input[type=file]{max-width:100%}.annotation-form__footer{padding:10px max(12px,env(safe-area-inset-right,0px)) max(10px,env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px));border-top-color:#52d4ff29;background:#030911f0}.annotation-button{min-width:64px;height:36px;border-radius:8px}.person-detail-content{grid-template-columns:minmax(0,1fr) 86px;gap:12px;max-height:calc(var(--app-height) - 76px);padding:14px 14px 18px}.person-detail-photo{order:initial}.person-detail-line{grid-template-columns:72px minmax(0,1fr);gap:8px;min-height:22px}.person-detail-overlay{justify-items:end;padding:12px max(8px,env(safe-area-inset-right,0px)) 12px 8px}.person-detail-dialog{width:min(calc(var(--app-width) * .88),360px);max-height:calc(var(--app-height) - 24px)}.person-detail-dialog header{min-height:42px}.person-detail-dialog header strong{font-size:17px}.person-detail-fields{gap:8px}.person-detail-photo img,.person-detail-photo div{width:86px;height:108px}}
