.fireflies{position:absolute;inset:0;z-index:2;pointer-events:none;opacity:.8;background-image:radial-gradient(circle,#ffe3a2 0 1px,transparent 2px),radial-gradient(circle,#83d5c5 0 1px,transparent 2px);background-size:170px 140px,230px 190px;background-position:0 0,80px 50px;animation:fireflyDrift 16s linear infinite;mask-image:linear-gradient(90deg,transparent 12%,#000 35%,#000 92%,transparent)}
.travel-layer{position:absolute;inset:0;z-index:7;pointer-events:none;opacity:0;transition:opacity .25s}.travel-layer.active,.travel-layer.completed{opacity:1}.travel-layer svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.travel-layer path{fill:none;stroke:#f2c86e;stroke-width:3;stroke-linecap:round;filter:drop-shadow(0 0 8px #f5b94b);stroke-dasharray:10 8}.travel-layer.active path{animation:routeFlow .45s linear infinite}.travel-layer.completed path{opacity:.58;stroke-width:2}
.journey-character{position:absolute;width:34px;height:44px;left:0;top:0;opacity:0;filter:drop-shadow(0 5px 8px #001);will-change:transform;transition:filter .3s}.travel-layer.active .journey-character,.travel-layer.completed .journey-character{opacity:1}.travel-layer.active .journey-character{filter:drop-shadow(0 7px 8px #001) drop-shadow(0 0 10px rgba(242,200,110,.35))}.journey-character i{position:absolute;left:5px;top:0;width:24px;height:22px;background:#d6a77c;border-radius:48%;border:4px solid #153b39}.journey-character i:before{content:"";position:absolute;width:31px;height:7px;left:-7px;top:-5px;border-radius:50%;background:#153b39}.journey-character b{position:absolute;width:25px;height:24px;left:5px;top:20px;background:#234f4d;border-radius:9px 9px 3px 3px}.journey-character span{position:absolute;width:12px;height:10px;right:0;bottom:4px;background:#9e5739;border:1px solid #d8ad63}.journey-character[data-variant="red"] i,.journey-character[data-variant="red"] i:before{border-color:#7c3229;background:#d6a77c}.journey-character[data-variant="red"] i:before{background:#7c3229}.journey-character[data-variant="red"] b{background:#913f34}.journey-character[data-variant="gold"] i,.journey-character[data-variant="gold"] i:before{border-color:#7c6030;background:#d6a77c}.journey-character[data-variant="gold"] i:before{background:#7c6030}.journey-character[data-variant="gold"] b{background:#7c6030}.map-stage.traveler-deployed .character-dock .character-avatar{opacity:.22;filter:saturate(.4);transition:.5s}.arrival-burst{position:absolute;opacity:0;color:#f8d78e;font-size:44px;text-shadow:0 0 18px #ffb830;transform:scale(.2)}.arrival-burst.pop{animation:arrivalPop 1s ease-out}
.travel-layer .route-glow{stroke:#ffd67e;stroke-width:10;opacity:.14;filter:blur(5px)}.travel-status{position:absolute;left:50%;bottom:38px;min-width:270px;transform:translate(-50%,18px);opacity:0;background:rgba(4,20,22,.86);border:1px solid rgba(242,200,110,.42);backdrop-filter:blur(14px);padding:13px 16px 12px;color:#e9cc91;display:grid;grid-template-columns:auto 1fr auto;align-items:end;gap:4px 9px;box-shadow:0 14px 36px rgba(0,0,0,.3)}.travel-layer.active .travel-status{opacity:1;transform:translate(-50%,0);transition:.35s}.travel-status small{font-size:8px;letter-spacing:.2em;color:#819693}.travel-status b{font:600 14px "Noto Serif SC"}.travel-status em{font-style:normal;font-size:8px;letter-spacing:.12em;color:#b8a77f}.travel-status>div{grid-column:1/4;height:2px;background:rgba(255,255,255,.12);margin-top:7px;overflow:hidden}.travel-status>div i{display:block;width:0;height:100%;background:#f1c769;box-shadow:0 0 10px #f1c769;transition:width .12s linear}.travel-layer.completed .travel-status{opacity:0;transition:.45s}
.place-deep-dive{padding:10px 8% 70px;background:#e8dcc5}.facts-row{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid #c3b59d;margin-bottom:70px}.facts-row article{padding:22px;border-right:1px solid #c3b59d}.facts-row article:last-child{border:0}.facts-row small,.facts-row b{display:block}.facts-row small{font-size:9px;letter-spacing:.15em;color:#927f60;margin-bottom:8px}.facts-row b{font:600 14px "Noto Serif SC";color:#173533}.deep-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:9%;align-items:start}.culture-feature h3{font:700 34px "Noto Serif SC";margin:22px 0 15px}.culture-feature>p:not(.section-kicker){font-size:14px;line-height:2.05;color:#4f5e59}.culture-feature blockquote{font:500 17px/1.8 "Noto Serif SC";border-left:2px solid #a94331;margin:25px 0 0;padding:5px 0 5px 18px;color:#6b3d33}.route-plan ol{list-style:none;margin:24px 0 0;padding:0;counter-reset:steps}.route-plan li{counter-increment:steps;display:grid;grid-template-columns:38px 1fr;gap:14px;padding:0 0 23px;position:relative;font:600 13px/1.5 "Noto Serif SC"}.route-plan li:before{content:counter(steps,decimal-leading-zero);width:32px;height:32px;border-radius:50%;background:#173533;color:#eacb8c;display:grid;place-items:center;font:700 9px "Noto Sans SC"}.route-plan li:after{content:"";position:absolute;left:15px;top:33px;width:1px;height:22px;background:#b5a68e}.route-plan li:last-child:after{display:none}.route-plan li span{display:block;font:400 11px/1.6 "Noto Sans SC";color:#857761;margin-top:3px}.place-gallery{display:grid;grid-template-columns:1.35fr .65fr;gap:12px;margin-top:65px}.place-gallery figure{margin:0;position:relative;overflow:hidden;background:#142b2a;min-height:390px}.place-gallery figure:nth-child(2){min-height:300px;margin-top:70px}.place-gallery img{width:100%;height:100%;position:absolute;inset:0;object-fit:cover;transition:transform 1.2s cubic-bezier(.2,.7,.2,1)}.place-gallery figure:hover img{transform:scale(1.045)}.place-gallery figcaption{position:absolute;z-index:2;left:18px;right:18px;bottom:17px;color:#f4e5c7;font:500 11px/1.6 "Noto Serif SC";text-shadow:0 2px 8px #000}.place-gallery figure:after{content:"";position:absolute;inset:45% 0 0;background:linear-gradient(transparent,rgba(1,13,14,.78))}.source-note{text-align:right;margin-top:18px;font-size:9px;color:#8d806a}.source-note a{color:#8f4638;text-underline-offset:3px}
.chooser-card{transform-origin:center;animation:chooserIn .35s ease-out}.character-options button{transition:.25s;position:relative}.character-options button.selected{border-color:#a54331;background:rgba(165,67,49,.08)}.character-options button.selected:after{content:"已选择";position:absolute;right:8px;top:8px;font-size:8px;color:#a54331;letter-spacing:.1em}.character-avatar[data-variant="red"] .hat{background:#7c3229}.character-avatar[data-variant="red"] .body{background:linear-gradient(135deg,#ae5141,#663028)}.character-avatar[data-variant="gold"] .hat{background:#7c6030}.character-avatar[data-variant="gold"] .body{background:linear-gradient(135deg,#8d6d39,#4a3821)}
.map-pin.is-target b{color:#ffd98c}.map-pin.is-target:before{background:#f4c96d;box-shadow:0 0 24px #f6b942}.map-stage.traveling .map-pin{pointer-events:none}.map-stage.traveling .intro-copy{opacity:.3;transition:.5s}.place-modal.active .place-heading{animation:headingRise .7s .18s both}.place-modal.active .quote{animation:headingRise .7s .32s both}.place-modal.active .fourfold article{animation:cardRise .5s both}.place-modal.active .fourfold article:nth-child(2){animation-delay:.08s}.place-modal.active .fourfold article:nth-child(3){animation-delay:.16s}.place-modal.active .fourfold article:nth-child(4){animation-delay:.24s}
@keyframes fireflyDrift{50%{transform:translate(35px,-24px);opacity:.45}}@keyframes routeFlow{to{stroke-dashoffset:-18}}@keyframes arrivalPop{0%{opacity:0;transform:scale(.2) rotate(0)}45%{opacity:1;transform:scale(1.2) rotate(120deg)}100%{opacity:0;transform:scale(1.8) rotate(220deg)}}@keyframes chooserIn{from{opacity:0;transform:scale(.94) translateY(16px)}}@keyframes headingRise{from{opacity:0;transform:translateY(25px)}to{opacity:1;transform:none}}@keyframes cardRise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@media(max-width:900px){.facts-row{grid-template-columns:1fr 1fr}.facts-row article:nth-child(2){border-right:0}.facts-row article:nth-child(-n+2){border-bottom:1px solid #c3b59d}.deep-grid{grid-template-columns:1fr;gap:45px}.place-gallery{grid-template-columns:1fr}.place-gallery figure,.place-gallery figure:nth-child(2){min-height:260px;margin:0}.journey-character{transform:scale(.85)}}
@media(max-width:560px){.place-deep-dive{padding:10px 5% 50px}.facts-row{margin-bottom:45px}.facts-row article{padding:16px 12px}.culture-feature h3{font-size:27px}.place-gallery{margin-top:42px}.place-gallery figure,.place-gallery figure:nth-child(2){min-height:220px}}
@media(prefers-reduced-motion:reduce){.fireflies,.place-modal.active .place-heading,.place-modal.active .quote,.place-modal.active .fourfold article{animation:none!important}.place-gallery img{transition:none}}

/* Keep route drawing under the same animation clock as the traveler. */
.travel-layer.active path{animation:none}
.curtain.opening .curtain-title{opacity:0;transition:opacity .25s ease-out}
.route-plan li span{grid-column:2;grid-row:2;min-width:0;margin-top:0}
.route-plan li::before{grid-column:1;grid-row:1 / 3}
.route-plan li{column-gap:14px;row-gap:3px}
button,a,input{touch-action:manipulation}
button:focus-visible,a:focus-visible{outline:2px solid #edc97d;outline-offset:5px}
.place-modal button:focus-visible,.character-modal button:focus-visible{outline-color:#a94331}
.place-modal,.character-modal{overscroll-behavior:contain}
.place-modal{color-scheme:light}
.character-copy button{min-height:28px;min-width:76px;text-align:left;font-size:11px}
.journey-status b,.travel-status{font-variant-numeric:tabular-nums}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
html[data-motion="reduced"] *,html[data-motion="reduced"] *::before,html[data-motion="reduced"] *::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
html[data-motion="reduced"] .fireflies,html[data-motion="reduced"] .pin-pulse{display:none}
.motion-btn{height:38px;padding:0 12px;color:#d5b56f;background:rgba(4,20,22,.25);border:1px solid rgba(216,173,99,.25);font-size:11px;letter-spacing:.08em}
.motion-btn:hover{background:rgba(216,173,99,.16)}
@media(max-width:560px){.motion-btn{font-size:10px;padding:0 8px}.sound-btn{padding:0 7px;margin-left:0}}
@media(max-width:560px){.intro-copy{top:105px;width:330px}.intro-copy h2{font-size:26px;line-height:1.25}.intro-copy h2 br{display:none}.intro-copy>p:last-child{width:310px;font-size:11px}.map-pin[data-place="qianzhou"]{--y:37%!important}.map-pin[data-place="furong"]{--y:28%!important}}
