:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-0:#080b0f;--bg-1:#10161d;--bg-2:#151d25;--glass:#080c1094;--glass-strong:#0a0f14d6;--surface:#ffffff0b;--surface-hover:#56b8c81f;--panel:#0f161de0;--panel-strong:#0c1117f5;--line:#ffffff1c;--line-strong:#ffffff2e;--ring:#56b8c86b;--text:#f2f6f8;--muted:#9eacb7;--soft:#667684;--heritage:#c6a15b;--heritage-strong:#e1c27a;--cyan:#56b8c8;--danger:#e05f5f;--shadow-1:0 18px 54px #00000057;--shadow-2:0 24px 90px #00000070;--radius:8px;--radius-sm:6px;--control-size:36px;--ease-out:cubic-bezier(.16, 1, .3, 1);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;font-family:Avenir Next,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;min-width:320px;height:100%;margin:0}body{background:var(--bg-0);color:var(--text);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.5;overflow:hidden}button,input,select,textarea{font:inherit}button{cursor:pointer}h1,h2,h3,p{text-wrap:pretty}a{color:inherit}:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}.app-root{background:var(--bg-0);width:100%;height:100%}.text-muted{color:var(--muted)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.map-page{background:#080b0f;width:100%;height:100%;min-height:100%;position:relative;overflow:hidden}.map-page:after{content:"";pointer-events:none;background:linear-gradient(90deg,#080b0f47,#0000 22% 72%,#080b0f57),linear-gradient(#080b0f3d,#0000 28%,#080b0f38);position:absolute;inset:0}.map-canvas{width:100%;height:100%;position:absolute;inset:0}.map-canvas .maplibregl-canvas{outline:none}.map-canvas .maplibregl-canvas:focus-visible{outline:2px solid var(--cyan);outline-offset:-4px}.map-panel__top span,.map-card span{color:var(--heritage-strong);letter-spacing:0;font-size:11px;font-weight:760;display:block}.map-panel{top:var(--space-6);right:var(--space-6);z-index:2;border:1px solid var(--line);border-radius:var(--radius);background:var(--glass-strong);width:min(304px,100% - 48px);max-height:calc(100% - 48px);box-shadow:var(--shadow-1);-webkit-backdrop-filter:blur(18px)saturate(1.08);backdrop-filter:blur(18px)saturate(1.08);transition:border-color .18s var(--ease-out), background .18s var(--ease-out);padding:12px;position:absolute;overflow:hidden}.map-panel:hover{border-color:var(--line-strong);background:#0a0f14e6}.map-panel__top{justify-content:space-between;align-items:center;gap:var(--space-4);border-bottom:1px solid var(--line);padding:2px 2px 11px;display:flex}.map-panel__top strong{color:var(--text);font-size:22px;line-height:1}.scene-list{gap:8px;max-height:min(420px,100vh - 142px);padding-top:11px;display:grid;overflow:auto}.scene-list__item{width:100%;min-height:78px;color:var(--text);text-align:left;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);transition:border-color .18s var(--ease-out), background .18s var(--ease-out), transform .18s var(--ease-out);grid-template-columns:66px minmax(0,1fr);align-items:center;gap:11px;padding:8px;display:grid}.scene-list__item:hover,.scene-list__item:focus-visible,.scene-list__item.active{background:var(--surface-hover);border-color:#56b8c8ad;transform:translateY(-1px)}.scene-list__item img{object-fit:cover;border-radius:var(--radius-sm);background:var(--bg-1);width:66px;height:62px;box-shadow:inset 0 0 0 1px var(--line)}.scene-list__item span{gap:7px;min-width:0;display:grid}.scene-list__item strong{text-overflow:ellipsis;white-space:nowrap;font-size:15px;line-height:1.2;overflow:hidden}.scene-list__item small{color:var(--muted);font-size:12px}.map-card{left:var(--space-6);bottom:var(--space-6);z-index:2;border:1px solid var(--line);border-radius:var(--radius);background:var(--glass-strong);width:min(492px,100% - 48px);box-shadow:var(--shadow-1);-webkit-backdrop-filter:blur(18px)saturate(1.08);backdrop-filter:blur(18px)saturate(1.08);animation:map-card-in .22s var(--ease-out);grid-template-columns:132px minmax(0,1fr);gap:14px;padding:14px;display:grid;position:absolute}.map-card>img{object-fit:cover;border-radius:var(--radius-sm);background:var(--bg-1);width:132px;height:100%;min-height:112px;box-shadow:inset 0 0 0 1px var(--line)}.map-card h2{margin:2px 0 9px;font-size:24px;line-height:1.12}.map-card p{color:var(--muted);margin:0;font-size:14px;line-height:1.6}.map-card__facts{grid-template-columns:1fr 1fr;gap:7px;margin:10px 0 12px;display:grid}.map-card__facts div{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);min-width:0;padding:8px 9px}.map-card__facts dt{color:var(--soft);margin:0 0 4px;font-size:11px}.map-card__facts dd{color:var(--text);margin:0;font-size:13px;font-weight:760}.map-card button,.loading-state button{min-height:38px;margin-top:var(--space-3);color:#071014;border-radius:var(--radius-sm);background:var(--heritage-strong);transition:transform .16s var(--ease-out), filter .16s var(--ease-out);border:0;padding:0 16px;font-weight:700}.map-card button:hover,.loading-state button:hover{filter:brightness(1.06);transform:translateY(-1px)}.map-status{z-index:3;padding:var(--space-6);pointer-events:none;background:radial-gradient(circle,#080b0f47,#080b0fb8);place-items:center;display:grid;position:absolute;inset:0}.loading-state{justify-items:center;gap:var(--space-4);width:min(360px,100%);padding:var(--space-6);text-align:center;border:1px solid var(--line);border-radius:var(--radius);background:var(--glass-strong);box-shadow:var(--shadow-2);pointer-events:auto;-webkit-backdrop-filter:blur(18px)saturate(1.08);backdrop-filter:blur(18px)saturate(1.08);display:grid}.loading-state__mark{border:3px solid #ffffff2e;border-top-color:var(--cyan);border-radius:50%;width:42px;height:42px;animation:.9s linear infinite map-spin}.loading-state strong{font-size:18px;display:block}.loading-state p{margin:var(--space-2) 0 0;color:var(--muted);line-height:1.5}.maplibregl-ctrl-group,.maplibregl-ctrl-attrib{color:var(--text);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--glass-strong);box-shadow:var(--shadow-1);-webkit-backdrop-filter:blur(14px)saturate(1.08);backdrop-filter:blur(14px)saturate(1.08)}.maplibregl-ctrl-group button{color:var(--text)}.maplibregl-ctrl-group button:hover{background-color:#56b8c829}.maplibregl-ctrl-attrib a{color:var(--cyan)}.map-view-mode-control__button{width:29px;height:29px;color:var(--text);letter-spacing:0;place-items:center;padding:0;font-size:11px;font-weight:800;line-height:1;display:grid}.maplibregl-ctrl.maplibregl-ctrl-group button.map-view-mode-control__button:hover,.maplibregl-ctrl.maplibregl-ctrl-group button.map-view-mode-control__button:active{color:var(--text);background-color:#56b8c833}.map-view-mode-control__button:focus-visible{outline:2px solid var(--cyan);outline-offset:-2px}.map-marker{color:#5f6269;transform-origin:bottom;width:64px;height:70px;transition:border-color .16s var(--ease-out), box-shadow .16s var(--ease-out), transform .16s var(--ease-out);background:#fffffff0;border:1px solid #080b0f2e;border-radius:17px;align-content:center;place-items:center;gap:5px;padding:0;display:grid;position:relative;box-shadow:0 18px 40px #00000047,inset 0 0 0 1px #ffffffb8}.map-marker:before{z-index:-1;content:"";opacity:0;transition:opacity .16s var(--ease-out);border:1px dashed #0f172a70;border-radius:17px;position:absolute;inset:5px -5px -5px 5px}.map-marker:after{content:"";background:#fffffff0;border-radius:2px 0;width:11px;height:11px;margin:auto;position:absolute;bottom:-7px;left:0;right:0;transform:rotate(45deg);box-shadow:8px 8px 18px #0000002e}.map-marker__icon{z-index:1;object-fit:contain;width:23px;height:23px;display:block;position:relative}.map-marker__name{z-index:1;color:#3f434a;letter-spacing:0;text-overflow:ellipsis;white-space:nowrap;background:#fffffff5;border:1px solid #080b0f1f;border-radius:999px;max-width:min(160px,42vw);padding:5px 11px 6px;font-size:12px;font-weight:760;line-height:1;display:block;position:absolute;bottom:calc(100% + 8px);left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 10px 24px #0003,inset 0 0 0 1px #ffffffb3}.map-marker__label{z-index:1;color:#63666d;letter-spacing:0;font-size:12px;font-weight:760;line-height:1;display:block;position:relative}.map-marker.active{border-color:#56b8c87a;box-shadow:0 20px 46px #00000057,0 0 0 1px #56b8c847,0 0 30px #56b8c833}.map-marker.active:before{opacity:1}.map-marker:hover{border-color:#56b8c875;transform:translateY(-3px);box-shadow:0 22px 48px #00000057,0 0 0 1px #56b8c838}.map-marker:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}@keyframes map-card-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes map-spin{to{transform:rotate(360deg)}}@media (width<=760px){.map-panel{top:auto;right:var(--space-4);bottom:var(--space-4);left:var(--space-4);width:auto;max-height:34%}.scene-list{grid-auto-columns:minmax(230px,1fr);grid-auto-flow:column;max-height:none;overflow:auto hidden}.scene-list__item{grid-template-columns:64px minmax(0,1fr);min-height:80px}.scene-list__item img{width:64px;height:64px}.map-card{left:var(--space-4);right:var(--space-4);grid-template-columns:96px minmax(0,1fr);width:auto;bottom:calc(34% + 32px)}.map-card>img{width:96px;height:96px}.map-card h2{font-size:22px}.map-card p{font-size:13px}}@media (height<=680px){.map-panel{display:none}}.scene-page{--hud-bg:#16171ce0;--hud-bg-strong:#14151af0;--hud-border:#ffffff1a;--hud-text:#f6f8fcf0;--hud-muted:#ccd3e0a8;--hud-active:#2f7df6;touch-action:none;background:#080b0f;width:100%;height:100%;position:relative;overflow:hidden}.lcc-canvas-host{position:absolute;inset:0}.scene-measure-label-layer{z-index:3;pointer-events:none;position:absolute;inset:0;overflow:hidden}.scene-measure-label{color:#fff;text-align:center;text-shadow:0 1px 1px #000000a6;white-space:nowrap;will-change:transform, opacity;background:#000000e0;border:1px solid #ffffff29;border-radius:999px;min-width:48px;padding:4px 8px;font-size:12px;font-weight:760;line-height:1;position:absolute;box-shadow:0 6px 16px #0000003d}.scene-measure-label--area{color:#6fd4ff;border-color:#6fd4ff4d}.lcc-canvas-host canvas{touch-action:none;outline:none;width:100%;height:100%;display:block}.lcc-canvas-host.measurement-active canvas{cursor:crosshair}.lcc-canvas-host.click-move-enabled canvas{cursor:pointer}.scene-toolbar{z-index:6;pointer-events:none;align-items:center;display:flex;position:absolute;top:18px;left:18px}.scene-toolbar__group{border:1px solid var(--hud-border);background:var(--hud-bg);-webkit-backdrop-filter:blur(16px)saturate(1.04);backdrop-filter:blur(16px)saturate(1.04);pointer-events:auto;border-radius:10px;align-items:center;gap:4px;padding:4px;display:flex;box-shadow:0 10px 28px #00000038}.scene-toolbar button,.scene-popover button{color:var(--hud-text);transition:background .16s var(--ease-out), color .16s var(--ease-out);background:0 0;border:0}.scene-toolbar button{border-radius:8px;place-items:center;width:36px;height:36px;display:grid;position:relative}.scene-toolbar button:hover,.scene-toolbar button.active,.scene-popover button:hover,.scene-popover button.active{color:#fff;background:#2f7df62e}.scene-toolbar button.active{color:var(--hud-active)}.scene-toolbar button:after{z-index:8;border:1px solid var(--hud-border);background:var(--hud-bg-strong);width:max-content;max-width:112px;color:var(--hud-text);content:attr(data-tooltip);opacity:0;pointer-events:none;transition:opacity .14s var(--ease-out), transform .14s var(--ease-out);white-space:nowrap;border-radius:6px;padding:5px 8px;font-size:12px;line-height:1.2;position:absolute;top:calc(100% + 9px);left:50%;transform:translate(-50%,-4px)}.scene-toolbar button:hover:after,.scene-toolbar button:focus-visible:after{opacity:1;transform:translate(-50%)}.scene-popover{z-index:5;border:1px solid var(--hud-border);background:var(--hud-bg-strong);color:var(--hud-text);-webkit-backdrop-filter:blur(16px)saturate(1.04);backdrop-filter:blur(16px)saturate(1.04);border-radius:10px;position:absolute;top:68px;left:18px;box-shadow:0 14px 36px #00000042}.scene-measure-panel{align-items:center;gap:8px;width:max-content;min-height:44px;padding:5px;display:flex;left:58px}.scene-measure-panel__modes,.scene-measure-panel__actions{align-items:center;gap:4px;display:flex}.scene-measure-panel button{width:34px;min-height:34px;color:var(--hud-muted);border-radius:7px;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.scene-measure-panel button[data-tooltip]:after{z-index:9;border:1px solid var(--hud-border);background:var(--hud-bg-strong);width:max-content;max-width:96px;color:var(--hud-text);content:attr(data-tooltip);opacity:0;pointer-events:none;transition:opacity .14s var(--ease-out), transform .14s var(--ease-out);white-space:nowrap;border-radius:6px;padding:5px 8px;font-size:12px;font-weight:700;line-height:1.2;position:absolute;top:calc(100% + 9px);left:50%;transform:translate(-50%,-4px)}.scene-measure-panel button[data-tooltip]:hover:after,.scene-measure-panel button[data-tooltip]:focus-visible:after{opacity:1;transform:translate(-50%)}.scene-measure-panel button.active{color:#fff;background:var(--hud-active)}.scene-measure-panel button:disabled{cursor:not-allowed;opacity:.38}.scene-measure-panel button:disabled:hover{color:var(--hud-muted);background:0 0}.scene-help-panel,.scene-measure-help{color:var(--hud-text);gap:10px;padding:12px;display:grid}.scene-help-panel{width:220px}.scene-help-panel div,.scene-measure-help div{grid-template-columns:78px 1fr;align-items:center;gap:10px;display:grid}.scene-help-panel kbd,.scene-measure-help kbd{color:#fff;text-align:center;background:#ffffff12;border:1px solid #ffffff1f;border-radius:6px;min-width:0;padding:4px 7px;font-family:inherit;font-size:11px;font-weight:760}.scene-help-panel span,.scene-measure-help span{min-width:0;color:var(--hud-muted);font-size:12px;font-weight:680}.scene-measure-help{z-index:5;border:1px solid var(--hud-border);-webkit-backdrop-filter:blur(16px)saturate(1.04);backdrop-filter:blur(16px)saturate(1.04);background:#14151ad6;border-radius:10px;width:228px;position:absolute;bottom:18px;left:42px;box-shadow:0 14px 36px #00000038}.scene-measure-help:before{color:#ffffffbd;content:"›";background:#14151ac7;border-radius:999px;place-items:center;width:28px;height:28px;font-size:22px;line-height:1;display:grid;position:absolute;top:8px;left:-20px}.scene-measure-help div{display:block}.scene-measure-help span{color:#ffffffe6;font-size:13px;font-weight:740}.scene-status{z-index:7;pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.scene-onboarding{z-index:20;color:#fff;pointer-events:auto;background:#030508b8;place-items:center;padding:96px 24px 132px;display:grid;position:absolute;inset:0}.scene-onboarding__close{z-index:2;color:#fff;min-width:86px;min-height:34px;transition:background .16s var(--ease-out), border-color .16s var(--ease-out);background:#0c0d11c2;border:1px solid #ffffff42;border-radius:6px;padding:0 12px;font-size:14px;font-weight:740;position:absolute;top:20px;right:20px}.scene-onboarding__close:hover{background:#1e2027e6;border-color:#ffffff7a}.scene-onboarding__stage{z-index:1;text-align:center;justify-items:center;gap:34px;width:min(760px,100%);display:grid;position:relative}.scene-onboarding__stage--complete{gap:16px}.scene-onboarding__heading{gap:10px;display:grid}.scene-onboarding__heading h2{color:#fff;letter-spacing:0;text-shadow:0 2px 12px #00000080;margin:0;font-size:42px;font-weight:820;line-height:1.08}.scene-onboarding__heading p{color:#ffffffe6;text-shadow:0 1px 10px #0000006b;margin:0;font-size:18px;font-weight:760;line-height:1.35}.scene-onboarding__controls{background:#0405073d;border:3px solid #ff492ceb;grid-template-columns:repeat(4,minmax(122px,1fr));gap:14px;width:min(720px,100%);padding:24px;display:grid;box-shadow:inset 0 0 0 1px #ffffff14,0 18px 54px #0000004d}.scene-onboarding__control{align-content:center;justify-items:center;gap:14px;min-width:0;min-height:132px;display:grid}.scene-onboarding__control>span{color:#ffffffeb;font-size:15px;font-weight:760;line-height:1.25}.scene-onboarding__keys{justify-content:center;align-items:center;gap:6px;min-height:54px;display:flex}.scene-onboarding__keys--wasd{grid-template-rows:repeat(2,28px);grid-template-columns:repeat(3,28px);gap:4px;width:92px;display:grid}.scene-onboarding__keys--wasd kbd:first-child{grid-column:2}.scene-onboarding__keys--wasd kbd:nth-child(2){grid-column:1}.scene-onboarding__keys--wasd kbd:nth-child(3){grid-column:2}.scene-onboarding__keys--wasd kbd:nth-child(4){grid-column:3}.scene-onboarding__keys kbd{color:#fff;background:#0d0e12bd;border:1px solid #ffffff73;border-radius:6px;place-items:center;width:34px;height:28px;font-family:inherit;font-size:13px;font-weight:820;line-height:1;display:grid;box-shadow:inset 0 -2px #ffffff14,0 6px 14px #00000047}.scene-onboarding__mouse{background:#0d0e126b;border:2px solid #ffffffc7;border-radius:999px;width:44px;height:62px;position:relative}.scene-onboarding__mouse:before{content:"";background:#ffffff9e;width:2px;height:18px;position:absolute;top:6px;left:50%;transform:translate(-50%)}.scene-onboarding__mouse span{background:#ffffffdb;border-radius:999px 0 0 999px;width:10px;height:18px;position:absolute;top:9px;left:9px}.scene-onboarding__check{color:#14161b;background:#fff;border-radius:999px;place-items:center;width:48px;height:48px;font-size:34px;font-weight:860;line-height:1;display:grid;box-shadow:0 14px 34px #00000052}.scene-onboarding__footer{z-index:2;justify-items:center;gap:58px;padding:0 20px;display:grid;position:absolute;bottom:34px;left:0;right:0}.scene-onboarding__actions{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.scene-onboarding__button{color:#1b2029;min-width:158px;min-height:36px;transition:background .16s var(--ease-out), border-color .16s var(--ease-out), color .16s var(--ease-out);background:#fffffff0;border:1px solid #ffffffdb;border-radius:6px;padding:0 22px;font-size:14px;font-weight:780}.scene-onboarding__button:hover{background:#fff;border-color:#fff}.scene-onboarding__button--ghost{color:#fff;background:#06070a47}.scene-onboarding__button--ghost:hover{background:#ffffff1f}.scene-onboarding__progress{color:#ffffffb8;font-size:18px;font-weight:720;line-height:1}.mobile-move-joystick{z-index:5;pointer-events:auto;touch-action:none;width:116px;height:116px;transition:opacity .16s var(--ease-out), transform .16s var(--ease-out);-webkit-user-select:none;user-select:none;border:0;border-radius:999px;place-items:center;display:none;position:absolute;bottom:22px;left:18px}.mobile-move-joystick__ring{-webkit-backdrop-filter:blur(16px)saturate(1.04);backdrop-filter:blur(16px)saturate(1.04);background:radial-gradient(circle,#ffffff14 0 30%,#0000 31%),#14151a9e;border:1px solid #ffffff24;border-radius:999px;place-items:center;width:96px;height:96px;display:grid;position:relative;box-shadow:inset 0 0 0 1px #ffffff0a,0 14px 34px #00000042}.mobile-move-joystick__ring:before,.mobile-move-joystick__ring:after{border-radius:inherit;content:"";pointer-events:none;position:absolute;inset:14px}.mobile-move-joystick__ring:before{border-top:1px solid #ffffff2e;border-bottom:1px solid #ffffff2e}.mobile-move-joystick__ring:after{border-left:1px solid #ffffff24;border-right:1px solid #ffffff24}.mobile-move-joystick__knob{width:42px;height:42px;transition:background .14s var(--ease-out), box-shadow .14s var(--ease-out);will-change:transform;background:#f6f8fce0;border:1px solid #ffffff2e;border-radius:999px;box-shadow:0 10px 24px #0000004d,inset 0 -2px 4px #0000002e}.mobile-move-joystick__knob.active{background:#2f7df6;box-shadow:0 12px 28px #2f7df65c,inset 0 -2px 4px #0000002e}.mobile-move-joystick--disabled{opacity:0;pointer-events:none;transform:scale(.96)}@media (hover:none),(pointer:coarse),(width<=860px){.mobile-move-joystick{display:grid}}@media (width<=640px){.scene-toolbar{top:12px;left:12px}.scene-toolbar__group{border-radius:9px}.scene-toolbar button{width:34px;height:34px}.scene-popover{inset:auto 12px 12px}.scene-measure-panel{justify-content:space-between;gap:8px;width:auto}.scene-measure-panel__modes,.scene-measure-panel__actions{width:100%}.scene-measure-panel__modes button,.scene-measure-panel__actions button{flex:1 1 0}.scene-measure-panel__actions button,.scene-help-panel{width:auto}.scene-measure-help{display:none}.scene-onboarding{padding:76px 14px 108px}.scene-onboarding__close{top:14px;right:14px}.scene-onboarding__stage{gap:22px}.scene-onboarding__heading h2{font-size:32px}.scene-onboarding__heading p{font-size:15px}.scene-onboarding__controls{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:16px}.scene-onboarding__control{min-height:112px}.scene-onboarding__footer{gap:34px;bottom:18px}.scene-onboarding__button{min-width:132px}.mobile-move-joystick{bottom:18px;left:12px}.mobile-move-joystick__ring{width:88px;height:88px}.mobile-move-joystick__knob{width:40px;height:40px}}@media (width<=420px){.scene-onboarding{padding-bottom:96px}.scene-onboarding__controls{grid-template-columns:1fr;max-height:min(460px,58vh);overflow-y:auto}.scene-onboarding__control{min-height:92px}.scene-onboarding__actions{width:min(100%,300px)}.scene-onboarding__button{flex:130px}}
