:root{color-scheme:light;--bg:#f2f7fd;--surface:#fff;--text:#162e4c;--muted:#647c97;--quiet:#8399b0;--blue:#327ce5;--blue-hover:#246ad0;--edge:#dce7f3;--input:#f6f9fe;--halo:#e5efff;--panel-shadow:0 24px 64px -24px #456b9e35,0 2px 8px #456b9e06;--map-top:#edf5ff;--map-bottom:#e2edfc;--map-edge:#cddcf1;--map-line:#bdcfe7;--building-top:#f8fbff;--building-side:#d0e0f5;--building-line:#87a8d0;--scan-color:#3488ee;--error:#b34353;font-family:"Segoe UI","Microsoft YaHei",system-ui,sans-serif}
:root[data-theme="dark"]{color-scheme:dark;--bg:#0e1623;--surface:#162234;--text:#e4edfa;--muted:#9caec5;--quiet:#8396b0;--blue:#6aa5ff;--blue-hover:#82b4ff;--edge:#29394f;--input:#101c2e;--halo:#172944;--panel-shadow:0 24px 64px -24px #0009,0 2px 8px #0003;--map-top:#1a2b43;--map-bottom:#142237;--map-edge:#2a4160;--map-line:#354e6e;--building-top:#354f72;--building-side:#213957;--building-line:#5c83b4;--scan-color:#7db0ff;--error:#f497a5}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;min-width:320px;min-height:100svh;background-image:radial-gradient(ellipse at 25% 38%,var(--halo),transparent 56%)}button,input,a,summary{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button,a,summary{touch-action:manipulation}svg{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.symbols{position:absolute;width:0;height:0;overflow:hidden}a{color:inherit;text-decoration:none}button{cursor:pointer}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--blue);outline-offset:5px;border-radius:7px}.page-shell{max-width:1344px;padding:0 52px;margin:auto}.site-header{height:108px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--edge)}.brand{display:flex;align-items:center;gap:11px;font-size:24px;font-weight:800;letter-spacing:-.8px}.brand-mark{width:36px;height:36px;background:var(--blue);border-radius:11px;display:grid;place-items:center;color:#fff;box-shadow:0 4px 10px #327ce525}.brand-mark svg{width:25px;height:25px;stroke-width:1.6}.brand-name{font-size:14px;font-weight:500;letter-spacing:2px;margin-left:9px}.edition{font-size:9px;font-weight:600;letter-spacing:1.4px;border:1px solid var(--edge);border-radius:5px;padding:5px 7px;margin-left:7px;color:var(--quiet)}.header-actions{display:flex;align-items:center;gap:22px;font-size:12px;color:var(--muted)}.guide-link span{margin-left:7px}.guide-link:hover{color:var(--blue)}.header-divider{height:17px;width:1px;background:var(--edge)}.theme-toggle{display:flex;align-items:center;gap:9px;border:0;background:transparent;color:var(--text);font-size:12px;padding:9px 0 9px 8px}.theme-toggle svg{width:17px;height:17px}.theme-toggle:hover{color:var(--blue)}.theme-toggle .sun{display:none}[data-theme="dark"] .theme-toggle .sun{display:block}[data-theme="dark"] .theme-toggle .moon{display:none}
.hero{display:grid;grid-template-columns:minmax(0,1fr) 418px;grid-template-areas:"intro access" "scene access";column-gap:66px;padding:65px 0 35px;align-items:center}.intro{grid-area:intro}.eyebrow{display:flex;align-items:center;gap:9px;font-size:10px;letter-spacing:2px;color:var(--blue);font-weight:650;margin:0 0 22px}.eyebrow>span{width:5px;height:5px;background:var(--blue);border-radius:50%;box-shadow:0 0 0 4px #327ce50d}h1{font-size:clamp(42px,4vw,60px);font-weight:740;letter-spacing:-2px;line-height:1.22;margin:0}h1>span{color:var(--blue)}.hero-copy{color:var(--muted);font-size:14px;line-height:1.9;margin:21px 0 18px;letter-spacing:.3px}.view-types{display:flex;align-items:center;gap:15px;color:var(--muted);font-size:11px}.view-types b{font:600 11px "Segoe UI",sans-serif;color:var(--text);margin-right:7px}.view-types i{height:11px;width:1px;background:var(--edge)}
.scene{grid-area:scene;position:relative;margin:23px -22px 0 -24px;min-width:0}.scene-label{display:flex;align-items:center;gap:8px;font:9px "Segoe UI",sans-serif;letter-spacing:1.5px;color:var(--quiet);padding:0 24px}.cross{font-size:18px;font-weight:300;color:var(--blue)}.scene-caption{margin-left:auto;letter-spacing:1px;font-size:10px}.terrain{display:block;width:100%;height:auto;max-height:280px;overflow:visible}.map-shadow{fill:#608abb0b;stroke:none;transform:translateY(10px)}.floor{fill:url(#floor-fill);stroke:var(--map-line)}.floor-edge{fill:var(--map-edge);stroke:var(--map-line);stroke-width:.7}.map-grid{stroke:var(--map-line);stroke-width:.75;opacity:.6}.contours{stroke:var(--map-line);stroke-width:.8;opacity:.75}.road{stroke:var(--surface);stroke-width:7;opacity:.8}.building-side{fill:var(--building-side);stroke:var(--building-line);stroke-width:.9}.building-top{fill:var(--building-top);stroke:var(--building-line);stroke-width:.9}.building-lines{stroke:var(--building-line);stroke-width:1;opacity:.6}.radar-ring{stroke:var(--blue);opacity:.28;stroke-width:1;stroke-dasharray:3 6}.scan-sector{fill:url(#scan-fill);stroke:none}.map-beacon{stroke:var(--blue);stroke-width:1}.map-beacon circle{fill:var(--blue);stroke:var(--surface);stroke-width:2}.map-beacon ellipse{fill:var(--blue);fill-opacity:.1;stroke-opacity:.3}.map-beacon .beacon-halo{fill:none;stroke:var(--blue);stroke-width:1;opacity:.3;animation:beacon 4s ease-in-out infinite}.map-beacon.secondary{opacity:.55}.north-mark{stroke:var(--quiet);stroke-width:1}.terrain text{font-size:9px;fill:var(--quiet);stroke:none;letter-spacing:2px}.scene figcaption{display:flex;align-items:center;gap:8px;padding:0 24px;color:var(--quiet);font-size:10px;letter-spacing:.5px;margin-top:-5px}.tiny-square{width:5px;height:5px;border:1px solid var(--quiet)}.scene-index{margin-left:auto;font-size:9px;letter-spacing:1.4px}
.access-panel{grid-area:access;position:relative;border:1px solid var(--edge);border-radius:22px;background:var(--surface);padding:29px 30px 0;box-shadow:var(--panel-shadow);overflow:hidden;align-self:center}.access-panel::before{content:"";position:absolute;top:0;left:30px;width:45px;height:3px;background:var(--blue);border-radius:0 0 4px 4px}.access-top{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:8px;letter-spacing:1.25px;color:var(--quiet);padding-bottom:30px}.panel-index{font-variant-numeric:tabular-nums;color:var(--blue)}.access-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}h2{font-size:23px;letter-spacing:-.7px;margin:0;font-weight:650}.access-heading p{font-size:12px;color:var(--muted);line-height:1.7;margin:9px 0 0}.access-icon{width:29px;height:29px;color:var(--blue);margin-top:2px;flex:none}form{margin-top:32px}fieldset{border:0;padding:0;margin:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:12px;font-size:12px;font-weight:600}legend span{float:right;font-size:10px;font-weight:400;color:var(--quiet);padding-top:2px}.digits{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.digits input{width:100%;min-width:0;height:72px;outline:none;border:1px solid var(--edge);border-radius:10px;background:var(--input);color:var(--text);font:500 29px "Segoe UI",sans-serif;text-align:center;caret-color:var(--blue);transition:border-color .16s,box-shadow .16s,background .16s}.digits input::placeholder{color:var(--quiet);opacity:.65;font-size:26px}.digits input:hover{border-color:var(--quiet)}.digits input:focus{background:var(--surface);border-color:var(--blue);box-shadow:0 0 0 3px #327ce512}.digits.invalid input{border-color:var(--error)}.message{min-height:37px;padding:8px 0;color:var(--error);font-size:11px;line-height:1.7}.message.neutral{color:var(--muted)}#join-button{display:flex;justify-content:space-between;align-items:center;width:100%;height:49px;padding:0 19px;border:0;border-radius:9px;background:var(--blue);color:#fff;font-size:13px;font-weight:600;box-shadow:0 5px 13px #327ce51a;transition:background .15s,transform .15s}#join-button svg{width:20px;height:20px}#join-button:hover{background:var(--blue-hover)}#join-button:active{transform:translateY(1px)}#join-button:disabled{cursor:wait;opacity:.65}[data-theme="dark"] #join-button{color:#101f35}.access-note{display:flex;align-items:center;gap:7px;font-size:10px;color:var(--quiet);margin:17px 0 25px}.status-dot{width:5px;height:5px;background:var(--quiet);border-radius:50%;flex:none}.key-hint{margin-left:auto;font:9px "Segoe UI",sans-serif;border:1px solid var(--edge);border-radius:4px;padding:2px 4px}details{border-top:1px solid var(--edge);margin:0 -30px;padding:0 30px;background:var(--input)}summary{list-style:none;display:flex;align-items:center;justify-content:space-between;cursor:pointer;padding:17px 0;color:var(--muted);font-size:11px}summary::-webkit-details-marker{display:none}summary>span{font:18px "Segoe UI",sans-serif;line-height:1;color:var(--quiet);transition:transform .2s}details[open] summary>span{transform:rotate(45deg)}details p{font-size:12px;color:var(--muted);line-height:1.85;margin:0;padding:0 0 20px}
.journey{display:flex;align-items:center;justify-content:space-between;gap:28px;padding:26px 0 30px;border-top:1px solid var(--edge);margin-top:1px}.journey>div{display:flex;gap:17px;align-items:center}.step-index{font-size:25px;letter-spacing:-1px;font-weight:300;color:var(--quiet);opacity:.7}.journey p{display:flex;flex-direction:column;gap:6px;margin:0}.journey strong{font-size:12px;font-weight:600}.journey p>span{font-size:11px;color:var(--muted)}.step-arrow{width:18px;height:18px;color:var(--quiet);opacity:.55}footer{border-top:1px solid var(--edge);display:flex;align-items:center;justify-content:space-between;gap:15px;min-height:69px;color:var(--quiet);font-size:10px}footer>span:first-child{letter-spacing:1px;color:var(--muted)}footer i{font-style:normal;letter-spacing:0;margin-left:11px;color:var(--quiet)}.footer-tag{font-size:8px;letter-spacing:1.5px}.footer-tag span{margin-left:13px;color:var(--blue)}
@keyframes beacon{0%,100%{opacity:.2}50%{opacity:.6}}
@media(min-width:1500px){.hero{padding-top:72px;padding-bottom:44px}.terrain{max-height:285px}}
@media(max-width:1100px){.page-shell{padding:0 35px}.hero{grid-template-columns:minmax(0,1fr) 370px;gap:15px 40px}.access-panel{padding-left:25px;padding-right:25px}.access-top{font-size:7px}details{margin-left:-25px;margin-right:-25px;padding-left:25px;padding-right:25px}h2{font-size:21px}.scene{margin-left:-15px;margin-right:-20px}.journey{gap:16px}.journey>div{gap:12px}}
@media(max-width:800px){.page-shell{padding:0 24px}.site-header{height:84px}.edition{display:none}.header-actions{gap:15px}.header-divider{display:none}.brand{font-size:23px}.brand-name{font-size:12px}.hero{grid-template-columns:1fr;grid-template-areas:"intro" "access" "scene";padding-top:40px;gap:0;max-width:560px;margin:auto}.intro{text-align:center}.eyebrow{justify-content:center;font-size:8px;letter-spacing:1.6px;margin-bottom:18px}h1{font-size:44px}.hero-copy{font-size:13px;margin-top:18px}.view-types{justify-content:center}.access-panel{width:100%;margin-top:31px;padding-top:24px;max-width:418px;justify-self:center}.access-top{padding-bottom:23px;font-size:8px}form{margin-top:25px}.scene{width:100%;margin:29px 0 0}.terrain{max-height:250px}.scene-label,.scene figcaption{padding-left:0;padding-right:0}.journey{max-width:560px;margin:auto;padding:25px 0;gap:15px;align-items:flex-start}.journey>div{flex:1;flex-direction:column;align-items:flex-start;gap:10px}.step-index{font-size:21px}.journey strong{font-size:11px}.journey p>span{font-size:10px;line-height:1.7;max-width:105px}.step-arrow{display:none}.journey p{gap:7px}footer{min-height:85px;flex-wrap:wrap;gap:7px;padding:21px 0}.footer-tag{display:none}footer>span:nth-child(2){font-size:9px}}
@media(max-width:390px){.page-shell{padding:0 20px}.brand-name{margin-left:7px;font-size:10px}.brand-mark{width:31px;height:31px}.header-actions{gap:12px}.guide-link{font-size:11px}.theme-toggle{padding-left:0}.theme-toggle>span{display:none}.hero{padding-top:32px}h1{font-size:40px}.access-panel{padding-left:22px;padding-right:22px}details{margin-left:-22px;margin-right:-22px;padding-left:22px;padding-right:22px}.digits input{height:64px}.access-icon{width:24px;height:24px}h2{font-size:21px}.access-note{font-size:9px}.key-hint{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}