*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden;overscroll-behavior:none;touch-action:none;background:#05070a;color:#eef7ff;font-family:Segoe UI,Microsoft YaHei,Arial,sans-serif;user-select:none;-webkit-touch-callout:none;-webkit-user-select:none}#scene,.debug-collision-canvas{display:block;width:100vw;height:100vh;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}.annotation-layer{position:fixed;inset:0;z-index:6;pointer-events:none}.is-cruise-active .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__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(680px,calc(100vw - 36px))}.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(100vw - 42px));height:100dvh;max-height:100dvh;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}}.annotation-dialog__header{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-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;padding:16px 18px}.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-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;padding:14px}.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}.person-detail-dialog{position:relative;width:min(720px,calc(100vw - 36px));max-height:min(760px,calc(100vh - 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}.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,100vh - 36px) - 52px);overflow:auto;padding:26px 34px 30px}.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(100vw - 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 .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,.is-lod-loading-lock .orientation-overlay{opacity:0;visibility:hidden;pointer-events:none}.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(100vw - 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;inset:0;z-index:20;display:grid;place-items:center;padding:24px;background:#03060adb;color:#eef7ff;text-align:center}.orientation-overlay[hidden]{display:none}.orientation-overlay__panel{display:grid;gap:10px;max-width:320px;padding:22px 24px;border:1px solid rgba(122,185,255,.26);border-radius:8px;background:#070e18e6;box-shadow:0 16px 60px #00000057}.orientation-overlay__panel strong{font-size:18px}.orientation-overlay__panel span{color:#dceefac2;font-size:13px}.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;padding:0}.is-mobile-mode .annotation-dialog{width:min(92vw,760px);height:100dvh;max-height:100dvh}.is-mobile-mode .annotation-dialog__header{padding:8px 12px}.is-mobile-mode .annotation-form__body{grid-template-columns:1fr;gap:12px;padding:12px}.is-mobile-mode .annotation-detail{grid-template-columns:1fr}.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 12px}.is-mobile-mode .person-detail-content{grid-template-columns:1fr;padding:22px 20px 24px}.is-mobile-mode .person-detail-photo{order:-1}.is-mobile-mode .person-detail-line{grid-template-columns:82px minmax(0,1fr)}@media(max-width:720px){.hud--status{top:12px;left:12px;width:calc(100vw - 24px);max-width:calc(100vw - 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(100vw - 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;padding:0}.annotation-dialog{width:min(94vw,720px);height:100dvh;max-height:100dvh}.annotation-dialog__header{padding:8px 12px}.annotation-form__body{grid-template-columns:1fr;gap:12px;padding:12px}.annotation-detail{grid-template-columns:1fr}.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 12px}.person-detail-content{grid-template-columns:1fr;padding:22px 20px 24px}.person-detail-photo{order:-1}.person-detail-line{grid-template-columns:82px minmax(0,1fr)}}
