@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}}

/* Native rendered views share the same quiet frame as the live space. */
.panel{border-radius:7px}.brand{padding:17px 24px 18px 19px}.brand h1{letter-spacing:4px}.brand-seal{border-color:#8b947b}.utility{gap:3px}.utility button{border-radius:4px;min-height:40px}.utility button[hidden]{display:none}.utility button:hover{background:#e7ebdf}.places>#places-toggle{min-height:46px}.places{border-radius:7px}.controls{border-radius:8px}.controls button{border-radius:4px}.travel-controls{border-radius:7px}.loading{isolation:isolate}.loading>*{position:relative}.loading-backdrop{position:absolute;inset:0;z-index:-1;background-size:cover;background-position:center;opacity:0;transition:opacity .6s}.loading-backdrop:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(248,245,236,.93),rgba(248,245,236,.82) 50%,rgba(248,245,236,.93))}.loading.with-cover .loading-backdrop{opacity:1}.progress-row{display:flex;align-items:center;gap:13px;margin:15px 0 12px}.progress-row .progress-track{margin:0;width:230px;height:3px;border-radius:4px}.progress-row #progress-number{font:10px ui-monospace,Consolas,monospace;color:#53694e;min-width:32px;text-align:left}.loading-gallery-button{margin-top:24px;padding:11px 17px;border:1px solid #526e4d55;border-radius:4px;font-size:11px;letter-spacing:1.2px;display:flex;gap:25px;align-items:center;background:#fffaf080}.loading-gallery-button:hover{background:#fffcf3}.loading-gallery-button[hidden]{display:none}
#gallery-dialog{width:min(1040px,calc(100% - 52px));max-width:none;max-height:92dvh;overflow:auto;padding:25px 28px 22px;border-radius:10px;background:#f9f6ee}#gallery-dialog::backdrop{background:#142b21c9;backdrop-filter:blur(12px)}#gallery-dialog .dialog-close{right:18px;top:17px;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-size:26px;padding:0}#gallery-dialog .dialog-close:hover{background:#e8ecdf}.gallery-header{display:flex;align-items:center;justify-content:space-between;padding-right:50px;margin-bottom:18px}.gallery-header h2{margin:4px 0 0;font-size:24px;letter-spacing:3px}.gallery-header .eyebrow{font-size:8px}.gallery-header #gallery-count{font:11px ui-monospace,Consolas,monospace;color:#7c8976;letter-spacing:1px}.gallery-stage{position:relative;display:grid;place-items:center;min-height:170px;background:#e4e4d9;border-radius:5px;overflow:hidden}.gallery-stage>img{display:block;width:100%;max-height:58dvh;object-fit:contain}.gallery-arrow{position:absolute;top:50%;transform:translateY(-50%);width:40px;height:44px;background:#fffcf1dd;color:#24483f;border:1px solid #ffffff80;border-radius:4px;font-size:21px;backdrop-filter:blur(12px)}.gallery-arrow:hover{background:#fffaf0}.gallery-arrow.previous{left:14px}.gallery-arrow.next{right:14px}.gallery-caption{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:15px}.gallery-caption h3{font-size:14px;font-weight:500;letter-spacing:1.5px;margin:0}.gallery-caption p{font-size:11px;line-height:1.7;color:#7b8374;margin:7px 0 0}.gallery-explore{display:flex;gap:22px;align-items:center;white-space:nowrap;border:1px solid #c4ceba;border-radius:4px;padding:10px 13px;font-size:11px}.gallery-explore:hover{background:#e8eddf}.gallery-thumbnails{display:flex;gap:8px;margin-top:16px;overflow-x:auto;padding:3px 1px 2px}.gallery-thumbnails button{padding:2px;border:1px solid transparent;border-radius:4px;opacity:.6;flex:0 0 91px;height:59px}.gallery-thumbnails button:hover,.gallery-thumbnails button.active{opacity:1}.gallery-thumbnails button.active{border-color:#345b43}.gallery-thumbnails img{display:block;width:100%;height:100%;object-fit:cover;border-radius:2px}
@media(max-width:700px){.brand{left:15px;top:max(16px,env(safe-area-inset-top));padding:12px 14px;gap:10px}.brand h1{font-size:19px;letter-spacing:2px}.brand-seal{width:31px;height:40px}.brand #subtitle{font-size:8px;letter-spacing:.4px}.utility{right:14px;top:max(16px,env(safe-area-inset-top));padding:4px;gap:0}.utility button{min-height:34px;width:34px}.compass{top:183px;right:14px}.places{top:118px;left:15px}.bottom-center{bottom:max(21px,env(safe-area-inset-bottom))}.controls button{min-height:42px}.travel-controls{right:14px;bottom:116px}.loading h2{font-size:23px;letter-spacing:2px}.progress-row .progress-track{width:205px}.loading-backdrop:after{background:#f7f2e6e6}#gallery-dialog{width:calc(100% - 22px);max-height:94dvh;padding:20px 13px 15px;border-radius:8px}#gallery-dialog .dialog-close{right:9px;top:12px}.gallery-header{padding:0 36px 0 4px;margin-bottom:15px}.gallery-header h2{font-size:20px;letter-spacing:2px}.gallery-header #gallery-count{font-size:10px}.gallery-stage>img{max-height:53dvh}.gallery-arrow{width:34px;height:38px;font-size:18px}.gallery-arrow.previous{left:7px}.gallery-arrow.next{right:7px}.gallery-caption{padding:14px 3px 0;gap:12px}.gallery-caption h3{font-size:12px}.gallery-caption p{font-size:10px}.gallery-explore{padding:9px;font-size:10px;gap:7px}.gallery-thumbnails{margin-top:13px}.gallery-thumbnails button{flex-basis:75px;height:49px}}
@media(max-height:550px) and (orientation:landscape){.brand{transform:scale(.78);transform-origin:top left}.places{bottom:81px;top:102px;width:170px;max-height:calc(100vh - 190px)}.places.collapsed{bottom:auto;height:auto}.places:not(.collapsed)~.joystick{display:none}#viewpoints{max-height:calc(100vh - 235px)}.bottom-center{bottom:13px}.hint{display:none}.utility{top:16px;right:16px;flex-direction:row}.utility button+button{border-top:0;border-left:1px solid var(--line)}.compass{display:none}.travel-controls{bottom:80px}.joystick{width:80px;height:80px;bottom:91px}.joystick span{left:19px;top:19px}.look-touch-hint{display:none!important}.gallery-header{margin-bottom:10px}.gallery-header h2{font-size:18px}.gallery-stage>img{max-height:48dvh}.gallery-thumbnails{display:none}.gallery-caption{padding-top:10px}}
