@font-face{font-family:LocalSong;src:local("Songti SC"),local("STSong"),local("Noto Serif CJK SC")}*{box-sizing:border-box}body{margin:0;background:#8ca89d;color:#f5f0df;font-family:"PingFang SC","Microsoft YaHei",sans-serif;font-size:13px;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}button:focus-visible,a:focus-visible,g:focus-visible{outline:2px solid #e6ba72;outline-offset:5px}button{transition:background .25s,opacity .25s,transform .25s}button:hover{color:#fff}button:active{transform:translateY(1px)}[hidden]{display:none!important}#scene,.veil{position:fixed;inset:0}#scene canvas{display:block;width:100%;height:100%;touch-action:none}.veil{pointer-events:none;background:linear-gradient(90deg,rgba(12,34,31,.63),transparent 43%),linear-gradient(0deg,rgba(12,30,28,.92),transparent 28%,transparent 82%,rgba(19,39,37,.68));z-index:1}header,footer,aside,.right-tools,.map,.place-card,.scene-status,#labels,#tour-bar,#walk-controls{position:fixed;z-index:3}header{top:0;left:0;width:100%;display:flex;align-items:center;padding:29px 42px;gap:33px}.brand{display:flex;align-items:center;gap:13px;text-decoration:none;color:inherit;font-family:LocalSong,serif;font-size:23px;letter-spacing:6px}.brand small{display:block;font:8px/1.8 Georgia,serif;letter-spacing:3px}.seal{display:grid;place-items:center;background:#a8543e;border:1px solid #c9836b;outline:1px solid #a8543e;outline-offset:3px;font-family:LocalSong,serif;width:37px;height:43px;font-size:28px;letter-spacing:0}.header-note{font-size:11px;letter-spacing:3px;opacity:.65;border-left:1px solid #ffffff30;padding-left:28px}.header-note span{margin:0 9px}.top-actions{margin-left:auto;display:flex;align-items:center;gap:13px}.times{display:flex;gap:4px;border:1px solid #ffffff22;border-radius:30px;padding:4px;background:#14393425}.times button{padding:8px 17px;border-radius:20px;font-size:11px;letter-spacing:2px;color:#ebeddfa0}.times .active{background:#efe9d9;color:#264c45}.icon{font-family:Georgia,serif;font-size:23px;width:35px;height:35px;opacity:.8}.icon:hover{opacity:1;background:#ffffff12;border-radius:50%}.intro{top:24%;left:4.7%;width:330px;transition:opacity .4s,transform .4s}.eyebrow{font-size:10px;letter-spacing:3px;color:#d3c5a7;display:flex;gap:11px;align-items:center}.live-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#c4cfa5;box-shadow:0 0 10px #d8e5b275}h1{font-family:LocalSong,serif;font-size:clamp(43px,4.2vw,66px);font-weight:400;line-height:1.4;letter-spacing:9px;margin:26px 0 17px;position:relative;text-shadow:0 2px 20px #173d3440}.small-seal{display:inline-block;font-size:10px;letter-spacing:2px;writing-mode:vertical-rl;border:1px solid #e1b89590;padding:7px 4px;margin-left:12px;line-height:1.3;position:absolute;top:12px;color:#edc6a1}.lead{color:#e5e9d6a8;font-size:12px;line-height:2.1;letter-spacing:2px}.intro-actions{margin-top:28px;display:flex;flex-direction:column;align-items:flex-start;gap:17px}.primary{background:#e6ddc8;color:#2c463c;padding:15px 22px;border:1px solid #f3ead6;letter-spacing:2px;min-width:223px}.primary span{float:right;padding-left:30px}.primary:hover{background:#f5eddb;color:#1c352d}.text-button{padding:0;font-size:11px;letter-spacing:2px;color:#e4deca}.text-button span{margin-left:24px}.intro-foot{display:flex;align-items:center;gap:12px;margin-top:29px;opacity:.55;font-size:10px;letter-spacing:1px}.intro-foot span{font-family:Georgia,serif;font-size:18px}.intro-foot i{height:13px;border-left:1px solid #ffffff35;margin:0 4px}.scene-status{top:114px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:9px;font-size:10px;letter-spacing:1.7px;white-space:nowrap;color:#fff9e4;background:#193d3b60;border:1px solid #ffffff22;border-radius:25px;padding:9px 16px;backdrop-filter:blur(12px)}#quality{border-left:1px solid #ffffff35;padding-left:10px;opacity:.55;font-size:9px}footer{bottom:0;left:0;padding:20px 4.7% 22px;width:100%;pointer-events:none}.route-head{display:flex;align-items:center;gap:17px;font-size:11px;letter-spacing:3px;padding-bottom:14px;pointer-events:auto}.route-head span:nth-child(2){font-size:8px;letter-spacing:2px;color:#f0ecda55}.route-head button{margin-left:auto;font-size:12px;color:#ddcaaa}.landmarks{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid #f4efdb3a;border-bottom:1px solid #f4efdb22;pointer-events:auto}.landmarks button{position:relative;display:flex;align-items:center;text-align:left;padding:17px 22px;gap:17px;border-right:1px solid #f4efdb20}.landmarks button:first-child{padding-left:0}.landmarks button:last-child{border:0}.landmarks button.active:before{content:"";position:absolute;height:2px;background:#debb80;left:0;right:0;top:-1px}.landmarks button:hover{background:#ffffff08}.nav-number{font:italic 19px Georgia,serif;color:#b2bcae88}.nav-text{font:19px LocalSong,serif;letter-spacing:3px}.nav-text small{display:block;font:9px/1.4 "PingFang SC",sans-serif;color:#e2e4d081;margin-top:8px;letter-spacing:2px}.nav-arrow{margin-left:auto;color:#c9c7ae88}.bottom-line{display:flex;justify-content:space-between;font-size:9px;letter-spacing:1px;color:#d4dcce75;margin-top:17px;pointer-events:auto}.bottom-line b{font-weight:400;margin:0 12px}.bottom-line button{font-size:9px;color:inherit;padding:0}.right-tools{right:33px;top:37%;display:flex;flex-direction:column;gap:10px}.right-tools button{display:flex;flex-direction:column;align-items:center;font-size:21px;background:#173e3860;border:1px solid #d2dec827;backdrop-filter:blur(10px);width:47px;padding:8px 0}.right-tools small{font-size:8px;margin-top:4px;letter-spacing:2px}.map{right:36px;bottom:211px;width:209px;padding:14px 15px 9px;background:#183e398c;backdrop-filter:blur(14px);border:1px solid #d1ddc72a;border-radius:2px}.map-top{display:flex;justify-content:space-between;font-size:9px;letter-spacing:2px;color:#e4e5cd99}.map svg{display:block;width:100%;height:124px}.map svg text{fill:#e9e5d1;font-size:9px;letter-spacing:1px}.map svg circle{fill:#e8c28c}.map svg g{cursor:pointer}.map svg g:hover circle{fill:white;r:5}.map .river-label{fill:#c1dbd099;font-size:10px}.map-note{display:block;text-align:right;font-size:7px;letter-spacing:1px;opacity:.35}#labels{inset:0;pointer-events:none;z-index:2}.marker{position:absolute;left:0;top:0;transform:translate(-50%,-100%);pointer-events:auto;display:flex;align-items:center;gap:7px;background:#183e3aa8;border:1px solid #dfe8d436;backdrop-filter:blur(7px);border-radius:2px;padding:7px 10px;font-size:10px;letter-spacing:2px;white-space:nowrap;transition:opacity .25s}.marker:after{content:"";position:absolute;top:100%;left:50%;height:18px;border-left:1px solid #e5d3a5a0}.marker i{width:4px;height:4px;border-radius:50%;background:#f1cc8f}.place-card{left:4.7%;top:24%;width:305px;padding:20px 24px 21px;background:#173832c9;backdrop-filter:blur(18px);border:1px solid #d7dfc932}.place-top{display:flex;justify-content:space-between;align-items:center;font-size:9px;color:#d8c49b;letter-spacing:2px}.place-top .icon{width:20px;height:20px;font-size:20px}.place-title{display:flex;gap:15px;align-items:baseline;margin-top:19px}.place-title>span{font:italic 21px Georgia,serif;color:#dab57880}.place-title h2{font:30px LocalSong,serif;letter-spacing:4px;margin:0}.place-card p{font-size:12px;line-height:2;color:#ebe8d5bf;letter-spacing:1px;margin:20px 0 16px}#place-detail{font-size:10px;color:#b6c6b3;line-height:1.9;padding-top:15px;border-top:1px solid #f0edda22}.place-actions{margin-top:20px;display:flex;justify-content:space-between}.place-actions button{font-size:10px;color:#e2c28c;border-bottom:1px solid #d6bb7f55;padding:0 0 5px}#tour-bar{bottom:211px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:14px;background:#173e3bc9;border:1px solid #e5e1c833;backdrop-filter:blur(15px);padding:12px 16px;font-size:10px;letter-spacing:1px}.progress{width:90px;background:#ffffff20;height:2px}.progress i{display:block;height:2px;background:#e2c28c;width:0}.progress+button{font-size:12px}#toast{position:fixed;left:50%;top:20%;transform:translate(-50%,-10px);z-index:20;background:#183d37e8;color:#efe3c7;border:1px solid #d7c39a66;padding:14px 22px;border-radius:2px;font-size:12px;opacity:0;pointer-events:none;transition:.3s}#toast.show{opacity:1;transform:translate(-50%,0)}dialog{background:#f0eadb;color:#30463d;border:0;padding:40px;max-width:550px;width:90%;box-shadow:0 20px 120px #081a18a0}dialog::backdrop{background:#0c292d85;backdrop-filter:blur(6px)}dialog h2{font:30px LocalSong,serif;letter-spacing:3px;margin:22px 0}dialog p{line-height:1.9;font-size:12px;color:#536157}dialog a{color:#886f45}dialog .eyebrow{color:#967b51;font-size:9px}#close-dialog{position:absolute;right:17px;top:12px;font-size:27px;color:#536157}.key{display:inline-block;padding:1px 7px;background:#ddd6c4;border-radius:3px;border:1px solid #bcb5a3;margin:2px}#loading{position:fixed;inset:0;background:#254c43;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:40;transition:opacity .6s}#loading h2{font:32px LocalSong,serif;letter-spacing:9px;margin:35px 0 12px}#loading p{color:#d8dec68f;letter-spacing:3px;font-size:10px}.load-line{width:110px;height:1px;background:#ffffff20;margin-top:22px;overflow:hidden}.load-line:after{content:"";display:block;width:45px;height:1px;background:#ebc58e;animation:load 1s infinite}@keyframes load{from{transform:translateX(-45px)}to{transform:translateX(110px)}}body.walking .intro,body.walking .map,body.walking .place-card{display:none!important}#walk-controls{bottom:210px;left:4.7%;right:4.7%;display:flex;align-items:center;gap:20px;pointer-events:none;font-size:10px}#walk-controls>span{opacity:.5}#exit-walk{pointer-events:auto;background:#1b403bc0;border:1px solid #ddd2a944;padding:10px 17px;margin-left:auto}.joystick{pointer-events:auto;touch-action:none;width:90px;height:90px;background:#153e3855;border:1px solid #dddbc246;border-radius:50%;display:grid;place-items:center;backdrop-filter:blur(6px)}.joystick span{width:33px;height:33px;border:1px solid #ddd6b75f;background:#f3eacf22;border-radius:50%}#exit-immersive{position:fixed;z-index:30;right:25px;bottom:25px;font-size:10px;border:1px solid #ffffff40;background:#173e3b7f;padding:10px 16px}.immersive header,.immersive footer,.immersive aside,.immersive .map,.immersive .place-card,.immersive .right-tools,.immersive .scene-status,.immersive #labels,.immersive .veil,.immersive #tour-bar{display:none!important}.immersive #walk-controls{bottom:35px;right:180px}.immersive #walk-controls>span{display:none}@media(max-height:750px) and (min-width:801px){.intro{top:23%}h1{font-size:48px;margin:17px 0 13px}.intro-actions{margin-top:20px}.intro-foot{margin-top:20px}.map{bottom:190px;width:180px}.map svg{height:100px}footer{padding-bottom:17px}.landmarks button{padding-top:13px;padding-bottom:13px}.place-card{top:21%}.right-tools{top:34%}#tour-bar{bottom:190px}}@media(max-width:800px){header{padding:23px 23px;gap:15px}.header-note{display:none}.brand{font-size:19px;gap:10px}.seal{width:29px;height:34px;font-size:23px}.top-actions{gap:3px}.times button{padding:7px 10px;font-size:9px}.icon{width:28px;font-size:20px}#help{display:none}.intro{left:25px;top:20%;width:260px}h1{font-size:45px}.lead{font-size:11px}.intro-foot{display:none}.scene-status{top:90px;font-size:8px;padding:7px 11px}#quality{display:none}.map{display:none}.right-tools{right:16px;top:39%}.right-tools button{width:36px;font-size:19px}.right-tools small{font-size:7px}footer{padding:15px 22px 20px}.route-head{font-size:10px}.route-head span:nth-child(2){font-size:6px;letter-spacing:1px}.landmarks button{padding:15px 6px;gap:6px;flex-direction:column;align-items:flex-start}.landmarks button:first-child{padding-left:6px}.nav-number{font-size:12px}.nav-text{font-size:15px;letter-spacing:1px}.nav-text small{font-size:7px;letter-spacing:1px;margin-top:7px}.nav-arrow{display:none}.bottom-line{font-size:7px;gap:10px;line-height:1.6}.bottom-line button{font-size:7px;max-width:110px;text-align:right}.bottom-line b{margin:0 4px}.place-card{left:23px;top:22%;width:265px;padding:15px 20px}.place-title h2{font-size:26px}.place-card p{font-size:11px;margin:13px 0}.place-title{margin-top:12px}.place-actions{margin-top:14px}#tour-bar{bottom:200px;white-space:nowrap;padding:10px;gap:10px;font-size:9px}.progress{width:55px}.marker{font-size:8px;padding:5px 6px;letter-spacing:1px}#walk-controls{bottom:200px;left:25px;right:25px}#walk-controls>span{display:none}dialog{padding:32px 25px}.small-seal{font-size:9px}.primary{padding:13px 18px;min-width:208px;font-size:12px}#toast{max-width:90vw;width:max-content;font-size:10px}.veil{background:linear-gradient(90deg,#122e2a88,transparent 95%),linear-gradient(0deg,#102c29ed,transparent 40%,transparent 80%,#12332d88)}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
@media(max-height:750px) and (min-width:801px){.right-tools{top:43%;right:232px;transform:translateY(-50%)}}@media(max-height:650px) and (min-width:801px){.place-card{top:112px;padding:14px 20px}.place-card p{font-size:11px;margin:13px 0}#place-detail{display:none}.intro{top:118px}.intro h1{font-size:35px;margin:13px 0}.intro .lead,.intro-foot{display:none}.intro-actions{margin-top:17px}.right-tools{top:40%}}

@media(min-width:801px) and (min-height:751px){.right-tools{top:auto;bottom:405px}}

.place-card .guide-status{font-size:10px;color:#dfbd85;margin:10px 0 0;line-height:1.6}#tour-voice{min-width:48px;padding:6px;border:1px solid #dbc38a55;color:#efd3a0;font-size:10px;white-space:nowrap}#tour-bar{max-width:calc(100vw - 28px)}@media(max-width:800px){#tour-bar{gap:8px}.progress{width:28px}.place-card .guide-status{font-size:9px}}

/* Walking uses a dedicated, reachable control deck on both touch and desktop. */
body.walking footer,body.walking .map{display:none!important}
body.walking .veil{background:linear-gradient(0deg,#102c2970,transparent 28%,transparent 85%,#12332d55)}
#walk-controls{inset:auto 28px max(24px,env(safe-area-inset-bottom));display:grid;grid-template-columns:146px 1fr auto;align-items:end;gap:22px;pointer-events:none;font-size:12px}
#walk-controls button{pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;min-height:44px;border:1px solid #e2d2aa55;background:#153e38db;backdrop-filter:blur(10px);border-radius:7px;color:#f6ebce;transition:background .12s}
#walk-controls button:hover,#walk-controls button.held,#walk-controls button[aria-pressed=true]{background:#e7c58c;color:#203d35}
#walk-controls button.held{box-shadow:0 0 0 2px #e5c78b66;transform:scale(.96)}
.walk-pad{display:grid;grid-template:repeat(3,46px)/repeat(3,46px);gap:4px;pointer-events:none}
.walk-pad button{padding:3px;font-size:20px;line-height:1}
.walk-pad button small{display:block;font-size:9px;margin-top:4px}
[data-walk-action=forward]{grid-area:1/2}[data-walk-action=left]{grid-area:2/1}[data-walk-action=right]{grid-area:2/3}[data-walk-action=back]{grid-area:3/2}
.walk-pad-center{grid-area:2/2;display:grid;place-items:center;color:#efd19d;font-size:10px;letter-spacing:2px;text-shadow:0 1px 4px #102b27}
.walk-caption{align-self:end;padding:13px 17px;background:#123b32c9;border:1px solid #e6dabd30;border-radius:7px;max-width:390px;line-height:1.8}
.walk-caption strong{font-weight:500;color:#efd3a0}.walk-caption p{font-size:11px;margin:4px 0;color:#f5eedbc9}.walk-caption small{font-size:10px;color:#d6ddc8}
.walk-actions{display:grid;grid-template-columns:repeat(2,minmax(66px,1fr));gap:7px;width:184px}
.walk-actions button{font-size:11px;padding:7px 8px;white-space:nowrap}
#walk-controls #exit-walk{margin:0;background:#ede0c1;color:#294438}
#walk-controls #walk-speed{grid-column:1/-1}
#walk-crosshair{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);width:5px;height:5px;border-radius:50%;border:1px solid #fff9;background:#132e2988;box-shadow:0 0 0 3px #112a2420;pointer-events:none}
body.walking .right-tools{right:24px;top:35%;bottom:auto;transform:none}
.immersive #walk-controls{bottom:max(24px,env(safe-area-inset-bottom));right:28px}.immersive #exit-immersive{bottom:auto;top:20px}
@media(max-width:800px){#walk-controls{left:14px;right:14px;bottom:max(18px,env(safe-area-inset-bottom));grid-template-columns:134px 1fr;gap:12px}.walk-pad{grid-template:repeat(3,42px)/repeat(3,42px);gap:4px}.walk-pad button{min-height:42px}.walk-actions{width:100%;max-width:184px;justify-self:end;gap:6px}.walk-caption{grid-column:1/-1;grid-row:1;padding:8px 11px;max-width:none;font-size:11px}.walk-caption strong,.walk-caption small{display:none}.walk-caption p{margin:0;font-size:10px}.walk-actions button{min-height:44px;font-size:10px;padding:6px 4px}.immersive #walk-controls{right:14px}body.walking .right-tools{right:14px;top:32%}}
@media(max-height:500px){body.walking header{padding:12px 22px}body.walking .scene-status{top:67px}body.walking .right-tools{display:none}#walk-controls{bottom:12px}.walk-caption{display:none}#walk-controls{grid-template-columns:146px 1fr}.walk-actions{grid-column:2}.walk-pad{grid-template:repeat(3,42px)/repeat(3,42px)}}
