@font-face{font-family:LocalSerif;src:local("Noto Serif CJK SC"),local("SimSun");font-display:swap}
:root{font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;color:#233e36;background:#ece7dd;--green:#24483f;--ivory:#fffcf4;--line:rgba(53,72,61,.13)}
*{box-sizing:border-box}body{margin:0;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;-webkit-tap-highlight-color:transparent}button:focus-visible{outline:2px solid #b59150;outline-offset:4px}button:disabled{cursor:wait}button[hidden]{display:none}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}#viewer{position:fixed;inset:0;outline:0;touch-action:none}#viewer canvas{display:block;width:100%;height:100%;touch-action:none}.panel{background:rgba(255,252,244,.93);border:1px solid rgba(255,255,255,.65);box-shadow:0 8px 35px rgba(30,39,32,.1);backdrop-filter:blur(16px)}.brand{position:fixed;top:30px;left:32px;display:flex;gap:16px;padding:20px 26px 21px 21px;border-radius:3px;pointer-events:none;max-width:calc(100vw - 210px)}.brand-seal{align-self:center;border:1px solid #617165;width:44px;height:54px;display:grid;place-items:center;font:28px LocalSerif,serif;color:#3b5b4c;position:relative}.brand-seal:after{content:"";position:absolute;inset:3px;border:1px solid #a5ad9a}.eyebrow{font-size:9px;letter-spacing:2.7px;margin:0;color:#6f7c6d;line-height:1.5}.brand h1{font-family:LocalSerif,"Songti SC",serif;font-size:25px;line-height:1.35;letter-spacing:5px;font-weight:500;margin:3px 0 4px}.brand #subtitle{font-size:10px;letter-spacing:2px;color:#6b776b;margin:0}.utility{position:fixed;right:32px;top:32px;display:flex;padding:7px;border-radius:3px;gap:2px}.utility button{width:42px;height:40px;display:grid;place-items:center;font-size:11px;letter-spacing:1px;border-radius:2px}.utility button:hover{background:#e8eee5}.utility button+button{border-left:1px solid var(--line)}.compass{position:fixed;right:39px;top:112px;width:38px;text-align:center;color:#324a40;filter:drop-shadow(0 1px 2px rgba(255,255,255,.7));font-size:9px}.compass span{display:block;margin-bottom:2px;letter-spacing:1px}.compass svg{width:33px;height:33px;fill:#385e4f;stroke:#fffcf4;stroke-width:.6;transition:transform .12s}.places{position:fixed;left:32px;bottom:105px;width:204px;border-radius:3px;overflow:hidden}.places>#places-toggle{width:100%;padding:15px 16px;display:flex;align-items:center;justify-content:space-between;font-size:11px;letter-spacing:2px}.places-label{display:flex;align-items:center;gap:8px}.green-dot{width:5px;height:5px;background:#345f4d;border-radius:50%;box-shadow:0 0 0 3px #dce5d9}.places svg{width:15px;height:15px;transition:transform .2s}.places.collapsed svg{transform:rotate(180deg)}#viewpoints{display:flex;flex-direction:column;max-height:40vh;overflow:auto;padding:0 8px 8px;gap:3px}.places.collapsed #viewpoints{display:none}#viewpoints button{display:flex;text-align:left;align-items:center;gap:11px;padding:11px 12px;border-radius:2px;font-size:12px;transition:background .2s}#viewpoints button .place-number{font-size:9px;color:#80907e;letter-spacing:1px}#viewpoints button .place-arrow{margin-left:auto;font-size:14px;opacity:0}#viewpoints button:hover{background:#eff1e8}#viewpoints button.active{background:var(--green);color:var(--ivory)}#viewpoints button.active .place-number{color:#b4c7b5}#viewpoints button.active .place-arrow{opacity:1}.bottom-center{position:fixed;left:50%;bottom:31px;transform:translateX(-50%);display:flex;align-items:center;flex-direction:column;gap:13px}.hint{font-size:10px;color:#fffef6;background:rgba(28,44,35,.61);border-radius:30px;padding:8px 17px;letter-spacing:1.2px;white-space:nowrap;transition:opacity .5s}.hint.dim{opacity:0;pointer-events:none}.controls{display:flex;align-items:center;padding:6px;border-radius:4px;gap:5px}.controls button{display:flex;align-items:center;gap:8px;white-space:nowrap;font-size:11px;letter-spacing:1px;padding:12px 17px;border-radius:2px;transition:background .2s,color .2s}.controls button svg{width:19px;height:19px}.controls button:hover{background:#e6ece2}.controls button.active{background:var(--green);color:#fffdf4}.divider{height:25px;width:1px;background:var(--line);margin:0 2px}.location-label{position:fixed;left:34px;bottom:42px;display:flex;gap:12px;align-items:center;color:#fffdf6;text-shadow:0 1px 5px rgba(0,0,0,.5);font-size:10px;letter-spacing:2px;pointer-events:none}.location-label>span:first-child{font-size:12px;letter-spacing:1px}.location-rule{height:12px;width:1px;background:rgba(255,255,255,.5)}.joystick{display:none;position:fixed;bottom:107px;left:26px;width:100px;height:100px;border:1px solid rgba(255,255,255,.8);border-radius:50%;background:rgba(255,252,244,.26);backdrop-filter:blur(8px);touch-action:none;box-shadow:inset 0 0 0 12px rgba(255,255,255,.08)}.joystick span{position:absolute;left:29px;top:29px;width:40px;height:40px;background:rgba(255,252,244,.9);border:1px solid rgba(255,255,255,.8);border-radius:50%;box-shadow:0 3px 10px #203f2c22}.joystick b{position:absolute;bottom:-25px;left:0;width:100%;font-size:9px;font-weight:400;letter-spacing:2px;text-align:center;color:white;text-shadow:0 1px 3px #000}.look-touch-hint{display:none;position:fixed;bottom:135px;right:24px;color:#fffdf6;font-size:10px;letter-spacing:1px;text-shadow:0 1px 4px #000;pointer-events:none}#crosshair{position:fixed;left:50%;top:50%;width:4px;height:4px;border:1px solid #fffc;box-shadow:0 0 3px #0009;border-radius:50%;pointer-events:none;opacity:.35}body.orbit #crosshair{display:none}#toast{position:fixed;left:50%;top:28px;transform:translate(-50%,-20px);opacity:0;pointer-events:none;background:var(--green);color:#fffdf4;border:1px solid #fff3;padding:12px 21px;border-radius:3px;font-size:11px;letter-spacing:1px;transition:opacity .2s,transform .2s;z-index:5}#toast.visible{opacity:1;transform:translate(-50%,0)}.loading{position:fixed;inset:0;z-index:10;background:#f2eee3;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px;text-align:center;transition:opacity .65s,visibility .65s;background-image:radial-gradient(ellipse at 50% 35%,#fffcf5,transparent 65%)}.loading.loaded{opacity:0;visibility:hidden;pointer-events:none}.loading-art{width:87px;height:107px;border:1px solid #82917b;display:grid;place-items:center;position:relative;margin-bottom:34px;color:#3e5d4a}.loading-art:before,.loading-art:after{position:absolute;content:"";inset:5px;border:1px solid #a5af98}.loading-art:after{inset:-8px;border-color:#d8ddcf}.loading-art span{font:50px LocalSerif,serif}.loading h2{font:400 30px LocalSerif,"Songti SC",serif;letter-spacing:5px;margin:15px 0 30px}.loading>p{color:#7e8778;font-size:11px;letter-spacing:2px;line-height:1.8;margin:5px 0}.loading .eyebrow{font-size:8px;letter-spacing:3px}.progress-track{width:230px;height:2px;background:#dce0d2;margin:16px 0 14px;overflow:hidden}#progress{height:100%;width:2%;background:#4e6b53;transition:width .3s}#loading-detail{font-size:9px;letter-spacing:1px;max-width:380px}#retry-button{margin:22px 0 0;background:var(--green);color:var(--ivory);padding:12px 24px;border-radius:2px;font-size:12px}.loading.error .loading-art{color:#9c604a;border-color:#aa7866}dialog{border:1px solid #d9dece;max-width:630px;width:calc(100% - 40px);background:#faf7ee;color:#314c3d;padding:43px 43px 35px;border-radius:4px;box-shadow:0 25px 100px #0c291a55}dialog::backdrop{background:rgba(19,36,27,.4);backdrop-filter:blur(8px)}dialog h2{font-family:LocalSerif,"Songti SC",serif;letter-spacing:2px;font-size:25px;font-weight:400;margin:9px 0 14px}dialog>p:not(.eyebrow){font-size:12px;line-height:1.9;color:#7b8374;margin-bottom:28px}.dialog-close{position:absolute;right:16px;top:11px;font-size:27px;font-weight:200;color:#76846f;padding:3px 7px}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px 35px}.help-grid>div{border-top:1px solid #dde1d3;padding-top:14px}.help-grid span{font-size:9px;letter-spacing:2px;color:#9ba68e}.help-grid h3{font-size:12px;font-weight:500;letter-spacing:1px;margin:8px 0}.help-grid p{font-size:11px;color:#7b8374;line-height:1.9;margin:0}.primary-button{display:flex;justify-content:space-between;width:100%;background:var(--green);color:var(--ivory);padding:15px 20px;font-size:12px;letter-spacing:2px;margin-top:30px;border-radius:2px}.primary-button:hover{background:#365e50}
@media(max-width:700px){.brand{left:17px;top:18px;padding:13px 15px 14px;gap:11px;max-width:calc(100vw - 115px)}.brand-seal{width:32px;height:42px;font-size:23px}.brand .eyebrow{font-size:6px;letter-spacing:1.5px}.brand h1{font-size:20px;letter-spacing:3px}.brand #subtitle{font-size:8px;letter-spacing:1px}.utility{right:16px;top:18px;flex-direction:column;padding:3px}.utility button{width:32px;height:32px;font-size:9px}.utility svg{width:17px;height:17px}.utility button+button{border-left:0;border-top:1px solid var(--line)}.compass{right:16px;top:143px;width:34px}.bottom-center{bottom:23px;max-width:calc(100% - 26px);gap:10px}.controls{padding:5px;gap:2px}.controls button{padding:11px 12px;gap:6px;font-size:10px;letter-spacing:0}.controls button svg{width:17px;height:17px}.hint{font-size:8px;letter-spacing:.6px;padding:7px 11px}.places{left:17px;bottom:auto;top:121px;width:163px;max-height:calc(100vh - 350px)}.places>#places-toggle{padding:12px 13px;font-size:10px}#viewpoints{max-height:23vh;padding:0 5px 5px}#viewpoints button{font-size:10px;padding:10px;gap:7px}.location-label{display:none}.loading h2{font-size:22px;letter-spacing:3px}.loading-art{width:70px;height:90px}.loading-art span{font-size:42px}dialog{padding:34px 24px 25px}.help-grid{gap:22px}dialog h2{font-size:21px}.help-grid p{font-size:10px}}
@media(pointer:coarse){body:not(.orbit) .joystick{display:block}body:not(.orbit) .look-touch-hint{display:block}.hint{display:none}.places{max-height:calc(100vh - 400px)}#viewpoints{max-height:20vh}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
.travel-controls{position:fixed;right:32px;bottom:31px;display:flex;flex-direction:column;padding:4px;border-radius:3px;z-index:2}.travel-controls button{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:2px;width:50px;min-height:48px;border-radius:2px;font-size:10px;touch-action:manipulation}.travel-controls button+button{border-top:1px solid var(--line)}.travel-controls button:hover{background:#e8eee5}.travel-controls button svg{width:19px;height:19px}@media(max-width:700px){.travel-controls{right:16px;bottom:115px;padding:3px}.travel-controls button{width:44px;min-height:46px}.look-touch-hint{bottom:230px;right:17px}}
