:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#20363d;background:#e8edf0;font-synthesis:none;font-size:16px}*{box-sizing:border-box}body{margin:0;overflow:hidden}button{font:inherit;cursor:pointer;color:inherit;touch-action:manipulation}button:focus-visible,#viewport:focus-visible{outline:2px solid #087c78;outline-offset:4px}button svg{width:21px;height:21px;flex:none;stroke-linecap:round;stroke-linejoin:round}#app{width:100%;height:100dvh;min-height:400px;position:relative;overflow:hidden}#viewport{position:absolute;inset:0;outline:none;cursor:grab;touch-action:none}#viewport:active{cursor:grabbing}#viewport canvas{display:block;width:100%;height:100%}.vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(238,243,246,.83),transparent 24%,transparent 78%,rgba(233,239,242,.65));z-index:1}.header{position:absolute;z-index:3;top:30px;left:34px;right:34px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.identity{display:flex;align-items:center;gap:14px}.brand{width:46px;height:50px;color:#286567}.brand svg{width:100%;height:100%}.eyebrow{margin:0 0 6px;font-size:11px;letter-spacing:.19em;color:#667b81;font-weight:650}h1{margin:0;font-size:24px;letter-spacing:.035em;font-weight:650;display:flex;align-items:center;gap:13px}h1 span{font-size:12px;letter-spacing:0;border:1px solid #b2c7c9;border-radius:5px;color:#2e696b;padding:3px 5px;font-weight:600}.reference-button{border:1px solid #ffffffb3;background:#ffffffb0;backdrop-filter:blur(14px);border-radius:10px;padding:6px 12px 6px 6px;display:flex;align-items:center;gap:11px;box-shadow:0 5px 24px #2a4a5510;pointer-events:auto;font-size:13px}.reference-button img{height:43px;width:70px;object-fit:cover;border-radius:5px}.reference-button svg{width:14px;height:14px}.places{position:absolute;top:150px;left:34px;width:180px;z-index:3}.section-label{font-size:12px;letter-spacing:.12em;color:#6c8188;margin:0 0 14px 12px}.place{display:flex;align-items:center;gap:10px;width:100%;border:1px solid transparent;border-radius:9px;padding:13px 12px;background:transparent;font-size:14px;text-align:left;margin-bottom:5px;transition:background .2s,color .2s,box-shadow .2s}.place:hover{background:#ffffff8c}.place.active{background:#fff;color:#165d60;border-color:#ffffff;box-shadow:0 5px 22px #294e5610}.place-number{font-family:ui-monospace,SFMono-Regular,monospace;font-size:11px;opacity:.52}.place-arrow{margin-left:auto;opacity:0}.place.active .place-arrow{opacity:1}.current-note{display:flex;gap:9px;margin:17px 12px;font-size:12px;color:#73858a;line-height:1.7}.small-rule{height:22px;width:2px;background:#98b0b3;flex:none;margin-top:3px}.footer{position:absolute;z-index:4;bottom:42px;left:50%;transform:translateX(-50%);display:flex;align-items:center;flex-direction:column;gap:16px;white-space:nowrap}.toolbar{display:flex;align-items:center;gap:3px;padding:7px;border:1px solid #ffffffc9;background:#fffffff0;backdrop-filter:blur(18px);border-radius:14px;box-shadow:0 8px 35px #304d5920}.tool{display:flex;align-items:center;justify-content:center;gap:8px;border:0;background:transparent;border-radius:8px;min-height:43px;min-width:43px;padding:0 13px;font-size:14px;transition:background .18s,color .18s}.tool:hover{background:#edf3f3}.tool[aria-pressed=true]{background:#e0eeeb;color:#086e68}.tool.icon-only{padding:0;width:41px}.divider{width:1px;height:23px;background:#e1e8e9;margin:0 5px}.help{font-size:12px;color:#667d84;text-shadow:0 1px 3px #fff}.help span span{margin:0 12px;opacity:.6}.touch-help{display:none}.model-note{position:absolute;left:34px;bottom:20px;font-size:11px;color:#7b8e93;margin:0;z-index:2}.orientation{position:absolute;right:36px;bottom:105px;width:64px;display:flex;align-items:center;flex-direction:column;gap:1px;z-index:3;color:#497477}.orientation svg{width:64px;height:64px}.orientation span{font:11px ui-monospace,monospace;color:#769095}.loading{position:absolute;inset:0;z-index:8;background:#e8edf0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:18px;color:#69818a;font-size:14px;transition:opacity .5s}.loading-spinner{width:32px;height:32px;border:2px solid #b6cacc;border-top-color:#247876;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.hidden{display:none!important}#labels{position:absolute;inset:0;pointer-events:none;z-index:2;overflow:hidden}.landmark-label{position:absolute;left:0;top:0;display:flex;align-items:center;gap:7px;border:1px solid #ffffffc0;background:#ffffffe5;backdrop-filter:blur(5px);border-radius:6px;padding:6px 9px;font-size:12px;color:#2a595e;white-space:nowrap;box-shadow:0 2px 10px #283e4715;transform:translate(-50%,-100%)}.landmark-label:before{content:"";width:5px;height:5px;background:#338985;border-radius:50%}.toast{position:absolute;z-index:15;left:50%;bottom:150px;transform:translate(-50%,10px);background:#1d444ae8;color:white;padding:10px 16px;border-radius:8px;font-size:13px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}.toast.visible{opacity:1;transform:translate(-50%,0)}dialog{padding:0;max-width:min(1100px,92vw);max-height:90dvh;border:1px solid #ffffff80;border-radius:14px;overflow:hidden;background:#f6f9fa;box-shadow:0 30px 100px #16313950}dialog::backdrop{background:#16313970;backdrop-filter:blur(8px)}dialog img{display:block;width:100%;max-height:78dvh;object-fit:contain}dialog p{font-size:13px;margin:14px 20px;color:#71848a}.dialog-close{position:absolute;right:12px;top:12px;width:35px;height:35px;border-radius:50%;border:1px solid #fff;background:#ffffffed;font-size:25px;line-height:1}.error{position:absolute;inset:0;z-index:10;background:#e8edf0;display:flex;align-items:center;justify-content:center;gap:35px;padding:40px}.error img{width:45%;max-width:700px;border-radius:12px}.error h2{font-size:21px}.error p{font-size:15px;line-height:1.7;max-width:330px}.error button{border:0;background:#23676b;color:#fff;border-radius:8px;padding:12px 20px}@media(max-width:1050px){.header{left:24px;right:24px;top:24px}.places{left:24px;width:150px;top:133px}.place{font-size:13px;padding:11px 9px}.reference-button span{display:none}.model-note{left:24px;font-size:10px}.orientation{right:24px}}@media(max-width:680px){.header{top:20px;left:18px;right:18px}.brand{width:31px;height:37px}.identity{gap:9px}.eyebrow{font-size:9px;margin-bottom:5px}h1{font-size:18px;gap:7px}h1 span{font-size:10px}.reference-button{padding:4px;gap:0;border-radius:7px}.reference-button img{width:48px;height:34px}.reference-button svg{display:none}.places{top:103px;left:0;width:100%;display:flex;gap:5px;overflow-x:auto;scrollbar-width:none;padding:0 18px;pointer-events:auto}.places .section-label,.current-note{display:none}#place-list{display:flex;gap:5px}.place{width:auto;flex:none;padding:10px 13px;font-size:12px;gap:6px;background:#ffffff65;margin:0;white-space:nowrap;border-radius:8px}.place-number{font-size:10px}.place-arrow{display:none}.footer{bottom:46px;width:calc(100% - 28px);gap:13px}.toolbar{padding:5px;gap:0;border-radius:12px;justify-content:center;width:fit-content;max-width:100%}.tool{min-width:35px;min-height:41px;padding:0 9px;gap:5px;font-size:12px}.tool svg{width:18px;height:18px}.tool.icon-only{width:34px;min-width:34px}.divider{margin:0 3px}.last-divider{display:none}.help{font-size:11px}.model-note{font-size:9px;bottom:15px;left:0;width:100%;text-align:center}.orientation{right:15px;bottom:141px;width:48px}.orientation svg{width:48px;height:48px}.landmark-label{font-size:10px;padding:4px 6px}.error{flex-direction:column;padding:24px;gap:16px}.error img{width:100%}.error h2{font-size:18px}.error p{font-size:14px}.toast{bottom:163px}}@media(pointer:coarse){.desktop-help{display:none}.touch-help{display:inline}}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}@media(max-height:550px) and (min-width:681px){.header{top:16px}.places{top:105px}.place{padding:6px 9px}.current-note{display:none}.footer{bottom:25px}.model-note{bottom:8px}.help{display:none}}
@media(max-width:400px){#auto svg,#reset span{display:none}.tool{padding-left:7px;padding-right:7px}.tool.icon-only{width:33px;min-width:33px}.divider{margin:0 2px}}
