:root{--paper:#f5efdf;--ink:#293f36;--muted:#6d7768;--red:#a6312d;--red-dark:#812521;--olive:#53674a;--line:#dcd7c2;--serif:'KaiTi','STKaiti','Songti SC',serif;--sans:'Microsoft YaHei','PingFang SC',system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.7}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #447b84;outline-offset:4px}button:disabled{cursor:default}.topbar{height:88px;max-width:1400px;margin:auto;padding:0 44px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}#brand{text-decoration:none;color:var(--ink);display:flex;align-items:center;gap:13px;font-family:var(--serif);font-size:27px;font-weight:bold;line-height:1.15}#brand small{display:block;font-family:var(--sans);font-size:10px;color:var(--muted);letter-spacing:3px;font-weight:400;margin-top:8px}.star{color:var(--red);font-size:32px}.top-actions{display:flex;gap:10px}.icon-button{background:transparent;border:1px solid #c4c8b6;color:var(--ink);padding:7px 13px;border-radius:7px;min-height:42px;font-size:13px}.icon-button:hover{background:#e8e7d4}.eyebrow{font-size:11px;letter-spacing:3px;color:var(--olive);font-weight:600;text-transform:uppercase}h1,h2,h3,p{margin:0}h1,h2{font-family:var(--serif);font-weight:500}p{color:#626c5d}button.primary,.primary{background:var(--red);color:#fffaf0;border:0;border-radius:8px;padding:15px 28px;min-height:52px;font-weight:600;letter-spacing:2px;box-shadow:0 5px 12px #82332a20}.primary:hover{background:var(--red-dark)}.secondary{border:1px solid #b4bba7;color:var(--ink);background:#f9f5e9;border-radius:8px;padding:12px 22px;min-height:48px}.full{width:100%}.landing{max-width:1280px;padding:40px 44px 30px;margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:36px;align-items:center}.intro{padding:14px 12px 12px 0;position:relative}.intro h1{font-size:clamp(37px,4.5vw,62px);line-height:1.45;letter-spacing:3px;margin:19px 0 20px}.intro h1 span{display:block}.red-word{color:var(--red)}.intro p{max-width:440px;font-size:15px;line-height:2}.seal{display:inline-flex;border:1px solid #a44e46;color:#9c3730;border-radius:4px;padding:3px 11px;font-size:12px;letter-spacing:2px;margin-bottom:10px}.intro-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:27px}.intro-note{font-size:11px;color:var(--muted);margin-top:15px}.facts{display:flex;margin:30px 0 0;border-top:1px solid var(--line);padding-top:19px;gap:30px}.facts strong{font-family:var(--serif);font-size:29px;font-weight:400;display:block;line-height:1.2}.facts small{font-size:11px;color:var(--muted)}.postcard{height:min(73vh,740px);min-height:540px;border:8px solid #fffaf0;border-radius:110px 110px 15px 15px;overflow:hidden;position:relative;box-shadow:0 16px 40px #34483818;background:#dbe4c9}.postcard .map-art{height:100%;width:100%;object-fit:cover;object-position:center}.postcard:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#f3edddaa,transparent 40%);pointer-events:none}.postcard .postcard-label{position:absolute;bottom:24px;left:27px;z-index:2;writing-mode:vertical-rl;font-family:var(--serif);font-size:25px;letter-spacing:5px;background:#f9f4dfce;padding:16px 8px}.hero-soldier{position:absolute;right:14%;bottom:10%;height:43%;width:auto;z-index:2;filter:drop-shadow(1px 8px 4px #4d573d26)}.hero-route{position:absolute;inset:0;height:100%;width:100%;z-index:1}.footnote{max-width:1280px;padding:15px 44px 25px;margin:auto;color:var(--muted);font-size:11px;display:flex;justify-content:space-between;gap:16px}.play{max-width:1360px;margin:auto;padding:24px 44px;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(320px,.85fr);gap:28px}.map-card{border:1px solid #d4d8c4;border-radius:15px;overflow:hidden;position:relative;background:#e4e8cf}.map-bar{height:61px;background:#faf6e8;display:flex;align-items:center;justify-content:space-between;padding:10px 20px;border-bottom:1px solid var(--line)}.map-bar small{font-size:10px;color:var(--muted);display:block}.map-bar strong{font-family:var(--serif);font-size:20px;font-weight:400}.map-scroll{height:calc(100vh - 230px);min-height:420px;overflow:auto;scrollbar-width:thin;position:relative;overscroll-behavior:contain}.map-world{position:relative;width:100%;aspect-ratio:2/3;isolation:isolate;background:#e2e8ce}.map-world>.map-art{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;z-index:-2}.map-overlay{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.route-future{stroke:#9b664b80;stroke-width:3;fill:none;stroke-dasharray:7 7}.route-done{stroke:var(--red);stroke-width:5;fill:none;stroke-linecap:round;stroke-linejoin:round}.route-halo{stroke:#fff9e7;stroke-width:10;fill:none;opacity:.9}.map-node{position:absolute;transform:translate(-50%,-50%);background:#f9f3df;border:2px solid #a5ad95;border-radius:50%;width:33px;height:33px;padding:0;color:#687461;font-size:12px;display:grid;place-items:center;z-index:3;min-width:33px}.map-node.current{background:var(--red);border:2px solid #fff6dc;color:white;box-shadow:0 0 0 5px #a6312d33}.map-node.current:after{content:'';position:absolute;inset:-7px;border:1px solid #a6312d7a;border-radius:50%;animation:ring 2.6s ease-out infinite}.map-node.done{background:#506c4b;color:white;border-color:#fff6dc}.map-node.locked{background:#f4efdcc9;color:#5e6c57}.node-label{position:absolute;left:41px;top:0;min-width:max-content;border:1px solid #ded9bf;background:#fcf8e9ee;border-radius:5px;padding:3px 8px;color:var(--ink);font-size:12px;white-space:nowrap;font-family:var(--serif)}.node-label.left{left:auto;right:41px}.node-label small{font-family:var(--sans);font-size:8px;color:var(--muted);display:block}.player{position:absolute;z-index:4;width:62px;height:84px;object-fit:contain;transform:translate(-50%,-102%);pointer-events:none;filter:drop-shadow(0 3px 2px #20382826);transition:left 1.5s ease-in-out,top 1.5s ease-in-out}.map-caption{background:#faf6e8;padding:9px 17px;font-size:10px;color:#737d6b}.map-province{position:absolute;pointer-events:none;font-family:var(--serif);color:#576d4980;font-size:23px;letter-spacing:9px}.compass{position:absolute;top:18px;right:20px;font-size:11px;color:#435c49;text-align:center}.compass i{display:block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:24px solid #536a4a;width:0;margin:3px auto}.journey-info{padding:19px 0;display:flex;flex-direction:column;align-items:flex-start}.progress-label{display:flex;justify-content:space-between;width:100%;font-size:12px;color:var(--muted);margin:10px 0}.progress-track{height:5px;width:100%;background:#dedfc9;border-radius:9px;overflow:hidden}.progress-fill{background:var(--red);height:100%;transition:width .6s}.stage-counter{margin-top:34px;color:#a16f5e;font-family:var(--serif);font-size:18px}.journey-info h1{font-size:42px;line-height:1.25;margin:11px 0}.stage-place{font-size:12px;color:var(--muted);padding-bottom:18px;border-bottom:1px solid var(--line);width:100%}.stage-story{font-size:15px;line-height:1.95;margin:20px 0 18px}.spirit{background:#e4e7d3;color:#53664a;padding:5px 11px;border-radius:5px;font-size:12px;margin:0 0 21px}.info-actions{width:100%;display:grid;gap:11px}.saved-note{font-size:11px;color:var(--muted);margin-top:16px}.journey-meta{font-size:11px;margin-top:27px;color:#777b6b}.mini-legend{display:flex;gap:15px;margin-top:20px;font-size:10px;color:var(--muted)}.mini-legend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px}.history-link{border:0;background:none;color:#566e50;padding:8px 0;text-decoration:underline;text-underline-offset:4px;font-size:12px}dialog{color:var(--ink);border:1px solid #d3d5be;border-radius:17px;padding:0;background:#faf6e9;width:min(520px,calc(100% - 28px));max-height:90dvh;overflow:auto;box-shadow:0 20px 100px #18282050}dialog::backdrop{background:#1c2e28a6;backdrop-filter:blur(4px)}.close-dialog{position:absolute;right:11px;top:7px;border:0;background:transparent;color:#68705e;font-size:29px;width:40px;height:40px}.dialog-padding,#quiz-content{padding:34px 27px 26px}dialog h2{font-size:30px;line-height:1.45;margin:12px 0 17px}dialog h3{font-size:15px;margin:21px 0 10px}dialog p{font-size:14px;line-height:1.9;margin:10px 0}.quiz-place{font-size:12px;color:var(--muted)}.question{font-size:20px;font-weight:600;line-height:1.6;margin:21px 0 18px}.options{display:grid;gap:11px}.option{width:100%;padding:13px 14px;min-height:53px;text-align:left;background:#fffdf5;border:1px solid #cfd3bf;border-radius:9px;color:var(--ink);line-height:1.6;display:flex;align-items:center;gap:13px}.option .letter{font-size:12px;display:grid;place-items:center;width:26px;height:26px;flex-shrink:0;background:#eef0df;border-radius:50%;color:#5f6b53}.option:hover:not(:disabled){border-color:var(--olive);background:#f1f1e1}.option.wrong{border-color:#bd5c43;background:#f7e4d9}.option.correct{border-color:#527946;background:#e6edda}.feedback{margin-top:17px;border-left:3px solid #8e9e72;padding:10px 13px;background:#eef0dd;font-size:13px;line-height:1.9}.feedback.error{background:#f6e7dd;border-color:#b46c4f}.feedback strong{display:block;margin-bottom:4px}.quiz-bottom{margin-top:20px}.source-item{display:block;color:#3e665c;font-size:12px;padding:8px 0;line-height:1.7}.source-item:after{content:' ↗'}#map-dialog{width:min(740px,calc(100% - 20px));max-height:94dvh}.whole-head{position:sticky;top:0;background:#faf6e8;padding:15px 20px;z-index:10;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.whole-head h2{font-size:23px;margin:3px 0}.whole-head .eyebrow{font-size:9px}.whole-map-wrap{width:100%}.complete{max-width:1000px;margin:auto;text-align:center;padding:35px 30px}.flag-illustration{height:155px;width:240px;margin:0 auto 10px;position:relative}.flagpole{position:absolute;left:40px;top:18px;height:132px;width:5px;background:#665a42;border-radius:5px}.flagcloth{position:absolute;left:44px;top:19px;width:156px;height:88px;background:#a9312d;clip-path:polygon(0 0,100% 10%,95% 92%,0 100%);transform-origin:left;animation:flag 3s ease-in-out infinite}.flagcloth:before{content:'★';position:absolute;left:18px;top:14px;color:#f1d28a;font-size:24px}.complete h1{font-size:clamp(31px,5vw,49px);color:var(--red);letter-spacing:3px;line-height:1.5;margin:12px 0}.complete>.subtitle{font-family:var(--serif);font-size:24px;margin:10px 0 20px}.complete-text{max-width:550px;margin:auto;font-size:14px}.completion-stats{display:flex;justify-content:center;gap:50px;margin:25px 0}.completion-stats strong{display:block;font-family:var(--serif);font-size:32px;font-weight:400}.completion-stats small{font-size:11px;color:var(--muted)}.epilogue{margin:27px auto 23px;max-width:630px;padding:25px;text-align:left;border:1px solid var(--line);border-radius:11px;background:#f9f6e8}.epilogue h2{font-size:25px;margin:8px 0}.epilogue p{font-size:13px;line-height:1.9}.complete-actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}.review-chip{display:inline-block;padding:4px 10px;background:#e6e8d6;border-radius:5px;font-size:12px;margin:5px 0 0}.source-footer{font-size:11px;color:var(--muted);margin-top:25px}#toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,15px);max-width:90vw;background:#263e33;color:#fff9e8;box-shadow:0 5px 30px #0002;border-radius:9px;padding:10px 20px;font-size:13px;z-index:100;opacity:0;pointer-events:none;transition:.25s}#toast.show{opacity:1;transform:translate(-50%,0)}@keyframes ring{0%{transform:scale(.9);opacity:1}100%{transform:scale(1.5);opacity:0}}@keyframes flag{0%,100%{transform:skewY(-2deg)}50%{transform:skewY(3deg)}}@media(min-width:1500px){.landing{padding-top:65px}.play{padding-top:35px}}@media(max-width:740px){.topbar{height:73px;padding:0 18px}#brand{font-size:23px;gap:8px}#brand small{font-size:8px;letter-spacing:2px;margin-top:6px}.star{font-size:25px}.top-actions{gap:6px}.icon-button{padding:6px 9px;font-size:11px;min-height:37px}.landing{display:flex;flex-direction:column-reverse;padding:20px 21px;gap:20px}.postcard{width:100%;height:34vh;min-height:245px;max-height:360px;border-radius:65px 65px 12px 12px;border-width:5px}.hero-soldier{height:75%;right:18%;bottom:0}.postcard .map-art{object-position:center 67%}.postcard .postcard-label{font-size:17px;bottom:14px;left:19px;padding:8px 5px}.intro{width:100%;padding:0}.intro h1{font-size:37px;margin:10px 0 13px;line-height:1.4;letter-spacing:2px}.intro h1 span{display:inline}.intro h1 span:nth-child(2):before{content:'';display:block}.intro .eyebrow{font-size:10px}.intro p{font-size:13px;line-height:1.9}.seal{font-size:10px;margin:0 0 4px}.intro-actions{margin-top:20px;display:grid;grid-template-columns:1fr}.intro-actions .primary{width:100%}.intro-actions .secondary{width:100%}.facts{margin-top:22px;justify-content:space-between;gap:15px;padding-top:15px}.facts strong{font-size:25px}.facts small{font-size:10px}.intro-note{font-size:10px}.footnote{padding:10px 21px 25px;display:block;font-size:10px}.footnote span{display:block}.play{padding:14px 14px 24px;display:flex;flex-direction:column;gap:0}.map-bar{height:54px;padding:8px 13px}.map-bar strong{font-size:18px}.map-scroll{height:38dvh;min-height:255px;max-height:430px}.map-world{min-height:560px}.map-node{width:29px;height:29px;min-width:29px;font-size:11px}.node-label{font-size:12px;left:34px;padding:3px 6px}.node-label.left{right:34px}.node-label small{font-size:8px}.player{width:51px;height:70px}.map-caption{padding:6px 12px;font-size:9px}.journey-info{padding:17px 4px 0}.journey-info .eyebrow{font-size:9px}.stage-counter{margin-top:16px;font-size:14px}.journey-info h1{font-size:30px;margin:6px 0}.stage-place{padding-bottom:11px;font-size:11px}.stage-story{font-size:13px;margin:13px 0 11px}.spirit{font-size:11px;padding:4px 9px;margin-bottom:14px}.info-actions{grid-template-columns:1fr auto;gap:8px}.info-actions .primary{font-size:14px;padding:12px 14px}.info-actions .secondary{font-size:12px;padding:10px 13px}.journey-meta{margin-top:12px}.saved-note{margin-top:9px;font-size:10px}.mini-legend{margin-top:12px}.dialog-padding,#quiz-content{padding:30px 21px 22px}.question{font-size:18px;margin:17px 0}.option{font-size:14px;padding:12px;min-height:54px}dialog h2{font-size:26px}.complete{padding:25px 20px}.complete h1{font-size:32px;letter-spacing:1px}.complete .subtitle{font-size:21px}.epilogue{padding:20px}.complete-actions{display:grid;grid-template-columns:1fr}.whole-head{padding:12px}.whole-head h2{font-size:19px}.whole-head .eyebrow{font-size:8px}.map-province{font-size:18px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important;transition:none!important}}

@media(max-width:740px){.map-node[data-node="3"] .node-label{left:34px;right:auto;top:-23px}.map-node[data-node="5"] .node-label{top:7px}.map-node[data-node="6"] .node-label{top:-13px}}
/* Immersive mobile-first revision */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}body[data-view=intro],body[data-view=play]{overflow:hidden}.topbar{position:fixed;top:0;left:0;right:0;z-index:20;height:70px;max-width:none;border:0;padding:0 22px;background:linear-gradient(#183e3238,transparent);color:#fff9e8}.topbar #brand{color:inherit;font-size:22px}.topbar #brand small{display:none}.topbar .icon-button{background:#fcf6e5da;backdrop-filter:blur(8px);border-color:#fff8;color:#304336;min-height:40px}.topbar .star{font-size:23px}body[data-view=intro] #brand{visibility:hidden}.cover{position:relative;height:100dvh;min-height:440px;width:100%;background:#c7d2aa;overflow:hidden}.cover-image{position:absolute;width:100%;height:100%;object-fit:cover;object-position:center 43%}.cover:after{content:'';position:absolute;inset:65% 0 0;background:linear-gradient(transparent,#182b25b0)}.cover-bottom{position:absolute;z-index:2;bottom:max(8dvh,35px);left:24px;right:24px;display:flex;align-items:center;flex-direction:column;gap:18px}.cover-bottom .primary{min-width:210px;border:1px solid #f1d3a1;border-radius:3px;background:#942d24;font-family:var(--serif);font-size:24px;letter-spacing:7px;padding:13px 28px;box-shadow:0 8px 28px #29241680}.cover-bottom>span{font-family:var(--serif);font-size:13px;letter-spacing:4px;color:#fff6dc}.briefing{min-height:100dvh;padding:100px 24px 40px;background:linear-gradient(#f8f4e9ed,#f1ebd9eb),url('assets/map-v13.webp') center/cover fixed}.briefing-inner{max-width:540px;margin:auto;text-align:center}.briefing h1{font-family:var(--serif);font-size:54px;color:#8e3229;letter-spacing:7px;margin:5px 0 15px}.brief-lead{font-family:var(--serif);font-size:20px;line-height:1.9}.brief-rules{text-align:left;border-top:1px solid #b1b59a;border-bottom:1px solid #b1b59a;margin:25px 0;padding:15px 4px;display:grid;gap:14px}.brief-rules p{font-size:13px;line-height:1.8}.brief-rules b{display:block;font-size:16px;font-family:var(--serif);color:#3d5440;margin-bottom:3px}.briefing h2{font-size:20px;margin:20px 0 12px}.character-options{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:20px}.character-card{position:relative;background:#e4e5d2b0;border:1px solid #c9cdb5;border-radius:12px;display:flex;align-items:center;flex-direction:column;padding:12px;color:#405840;overflow:hidden}.character-card img{height:170px;max-width:100%;object-fit:contain}.character-card span{font-family:var(--serif);font-size:18px}.character-card.selected{border:2px solid #9c342b;background:#f6e6cc;box-shadow:0 0 0 3px #9c342b15}.character-card i{display:none;position:absolute;right:10px;top:7px;background:#9c342b;color:white;border-radius:50%;width:24px;height:24px;font-style:normal}.character-card.selected i{display:block}.brief-note{display:block;font-size:10px;color:#77836c;margin-top:8px}.immersive{height:100dvh;min-height:460px;position:relative;overflow:hidden;background:#b9c7a4}.scene-viewport{position:absolute;inset:0;overflow:hidden}.scene-camera{position:absolute;width:900px;height:1350px;transform-origin:0 0;will-change:transform}.scene-camera .map-world{width:900px;height:1350px;min-height:0;aspect-ratio:auto}.scene-camera .player{width:67px;height:100px;transition:none;transform:translate(-50%,-98%);transform-origin:50% 100%}.scene-camera .map-node{width:24px;height:24px;min-width:24px;font-size:10px}.scene-camera .node-label{font-size:11px;left:30px;padding:2px 5px}.scene-camera .node-label.left{right:30px;left:auto}.scene-camera .map-node:not(.current) .node-label{display:none}.scene-camera .current .node-label{display:none}.scene-camera .map-province{font-size:20px}.scene-vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(#133c3630,transparent 24%,transparent 42%,#19332820 65%,#18382e80)}.journey-hud{position:absolute;top:84px;left:22px;right:22px;display:flex;align-items:center;justify-content:space-between;color:#263f34;gap:15px}.journey-hud>div{display:flex;gap:11px;align-items:center;font-family:var(--serif);font-size:21px}.journey-hud small{font-family:var(--sans);font-size:10px;background:#faf4e5d9;padding:4px 8px;border-radius:5px}.glass-button{background:#fcf7e9df;border:1px solid #ddd7b6;border-radius:7px;color:#35513e;min-height:43px;font-size:12px;padding:9px 12px;backdrop-filter:blur(8px)}.stage-overlay.journey-info{position:absolute;bottom:max(20px,env(safe-area-inset-bottom));left:22px;right:22px;max-width:540px;margin:auto;padding:0;z-index:5;display:block;color:#fff7df}.stage-overlay .stage-counter{margin:0;color:#fff6dd;font-size:12px;letter-spacing:2px;text-shadow:0 1px 6px #19372c}.stage-counter span{float:right;letter-spacing:0;font-family:var(--sans);font-size:10px}.stage-overlay h1{font-family:var(--serif);font-size:42px;letter-spacing:5px;text-shadow:0 3px 14px #173124;line-height:1.3;margin:5px 0 11px;color:#fff8df}.story-backed{padding:13px 16px;background:#f9f3e4ed;border-left:3px solid #9b372b;box-shadow:0 6px 24px #1b3e3520;backdrop-filter:blur(10px);border-radius:0 9px 9px 0;margin-bottom:12px}.story-backed .stage-story{color:#364d3d;font-size:13px;line-height:1.8;margin:0 0 7px}.story-backed .stage-place{color:#7a7f68;font-size:10px;padding:0;border:0;display:block}.stage-overlay .info-actions{display:grid;grid-template-columns:1fr auto;gap:10px}.stage-overlay .primary{min-height:48px;padding:12px;font-size:15px}.stage-overlay .saved-note{margin:5px 0 0;font-size:9px;color:#f0ebd3;text-shadow:0 1px 4px #294b3e}.travel-banner{position:absolute;top:23%;left:0;right:0;text-align:center;color:#fff9e8;font-family:var(--serif);font-size:23px;letter-spacing:4px;text-shadow:0 2px 10px #263e2b;background:linear-gradient(90deg,transparent,#2f4c3a88,transparent);padding:11px;opacity:0;transition:opacity .4s;pointer-events:none}.travelling .travel-banner{opacity:1}.travelling .stage-overlay{opacity:.2;transform:translateY(12px);pointer-events:none;transition:.5s}.travelling .player{animation:walk .34s ease-in-out infinite alternate}.complete{padding-top:95px}body[data-view=complete]{background:#f5efdf}.topbar:has(~main .briefing){background:#f5efdfdd}#quiz{backdrop-filter:blur(16px);background:#fcf6e9f5}.feedback{font-size:14px}.option{min-height:58px}dialog::backdrop{background:#14362a80}.top-actions{gap:5px}@keyframes walk{from{transform:translate(-50%,-98%) rotate(-3deg)}to{transform:translate(-50%,-104%) rotate(3deg)}}@media(min-width:741px){.cover-image{object-position:center 46%}.cover-bottom{bottom:9vh}.cover-bottom .primary{min-width:260px}.briefing h1{font-size:65px}.character-card img{height:210px}.stage-overlay.journey-info{left:auto;right:45px;bottom:40px;width:420px}.journey-hud{top:93px;left:40px;right:40px}.scene-camera .player{width:58px;height:87px}}@media(max-height:670px){.stage-overlay h1{font-size:31px;margin:3px 0 7px}.story-backed{padding:9px 12px}.story-backed .stage-story{font-size:12px}.journey-hud{top:73px}.stage-overlay.journey-info{bottom:10px}.topbar{height:62px}}@media(prefers-reduced-motion:reduce){.travelling .player{animation:none}}
/* Keep the complete cover inscription visible on narrow phones. */
.cover{background:url('assets/cover-v2-v13.webp') center/cover}.cover-image{object-fit:contain;background:#eadfc6}@media(max-aspect-ratio:3/4){.cover-image{object-fit:fill}}
/* Clean accents and the revised title hierarchy. */
#brand .brand-calligraphy{width:132px;height:42px;object-fit:contain;display:block}.topbar #brand{gap:6px}.topbar .star{font-size:20px}.stage-overlay h1,#quiz-title{font-family:'SimHei','Heiti SC','Microsoft YaHei','PingFang SC',sans-serif;font-weight:900;color:#b12220;letter-spacing:1px;text-shadow:0 1px 2px #fff8e8,0 2px 8px #fff5dfaa}.stage-overlay .info-actions{grid-template-columns:1fr}.story-backed{border-left:0;border-radius:8px}.feedback{border-left:0;border-radius:7px}.character-card,.character-card.selected{background:transparent;box-shadow:none}.character-card.selected{box-shadow:0 0 0 2px #9c342b20}.cover-image{background:transparent}.readonly-map .map-node:disabled{cursor:default;opacity:1}.readonly-map .map-node.current:after{animation:none;display:none}.primary:disabled{opacity:.5;cursor:default}.primary:disabled:hover{background:var(--red)}@media(max-width:380px){#brand .brand-calligraphy{width:113px;height:39px}.topbar{padding-left:14px;padding-right:14px}}

/* Cover controls sit below the start action and respect the phone safe area. */
body[data-view="intro"] .topbar{top:auto;bottom:calc(14px + env(safe-area-inset-bottom,0px));height:44px;background:none;padding:0 18px;justify-content:center}body[data-view="intro"] #brand{display:none}body[data-view="intro"] .top-actions{gap:12px}body[data-view="intro"] .top-actions .icon-button{min-height:40px;padding:7px 16px;background:#faf3e5e6}body[data-view="intro"] .cover-bottom{bottom:max(12dvh,calc(86px + env(safe-area-inset-bottom,0px)))}
/* Keep scenery and the active character clear of the fixed interface. */
.stage-overlay.journey-info{display:flex;flex-direction:column;max-height:44dvh}.stage-overlay .stage-counter{display:flex;align-items:center;justify-content:space-between;gap:4px 12px;flex-wrap:wrap;flex-shrink:0}.stage-overlay .stage-counter span{float:none}.stage-overlay h1,.stage-overlay .info-actions,.stage-overlay .saved-note{flex-shrink:0}.stage-overlay .story-backed{min-height:0;flex:0 1 auto;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}.stage-overlay .stage-story{overflow-wrap:anywhere}.stage-overlay .stage-place{overflow-wrap:anywhere}.stage-overlay .info-actions .primary{min-height:48px}.travelling .stage-overlay{opacity:0;transform:none}.travel-banner{position:absolute;left:0;top:0;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);padding:0;margin:0;white-space:nowrap;background:none}.stage-overlay .saved-note{line-height:1.5}.journey-hud{gap:8px}.journey-hud>div{min-width:0}.route-future{stroke-linecap:round;stroke-linejoin:round}
@media(orientation:landscape) and (max-height:600px){.stage-overlay.journey-info{left:auto;right:18px;top:130px;bottom:12px;width:44vw;max-width:420px;max-height:none;overflow:hidden}.stage-overlay h1{font-size:28px;line-height:1.18;margin:4px 0 8px;letter-spacing:0}.stage-overlay .stage-counter{font-size:10px;line-height:1.4;letter-spacing:0}.stage-overlay .stage-counter span{font-size:9px}.stage-overlay .story-backed{flex:1 1 auto;padding:8px 12px;margin-bottom:8px}.stage-overlay .stage-story{font-size:12px;line-height:1.7}.stage-overlay .saved-note{font-size:8px;margin-top:3px}.stage-overlay .primary{padding:9px;min-height:44px}.journey-hud{top:74px}.topbar{height:62px}}
@media(max-height:540px) and (orientation:portrait){.stage-overlay h1{font-size:27px;line-height:1.2;margin:3px 0 6px}.stage-overlay .stage-counter{font-size:10px;line-height:1.4;letter-spacing:0}.stage-overlay .stage-counter span{font-size:9px}.stage-overlay .story-backed{padding:8px 12px;margin-bottom:8px}.stage-overlay .stage-story{font-size:12px;line-height:1.6}.stage-overlay .saved-note{font-size:8px;margin-top:3px}.stage-overlay .info-actions .primary{min-height:44px;padding:8px}}
/* Avoid the former 460px canvas clipping controls in phone landscape mode. */
.immersive{min-height:0;height:100dvh}body[data-view="play"] .topbar{padding-left:max(18px,env(safe-area-inset-left,0px));padding-right:max(18px,env(safe-area-inset-right,0px))}.journey-hud{left:max(22px,env(safe-area-inset-left,0px));right:max(22px,env(safe-area-inset-right,0px))}@media(orientation:landscape) and (max-height:600px){.stage-overlay.journey-info{right:max(18px,env(safe-area-inset-right,0px));bottom:max(12px,env(safe-area-inset-bottom,0px))}}

/* A single bounded terrain layer removes the vertical canvas/backdrop seam. */
.scene-viewport{isolation:isolate;background:#ede2c5}.scene-terrain{position:absolute;left:0;top:0;width:900px;height:1350px;max-width:none;object-fit:fill;transform-origin:0 0;will-change:transform;pointer-events:none;z-index:0}.scene-camera{z-index:1;background:transparent}.scene-camera::before,.scene-camera::after{content:none;display:none}.scene-camera .map-world{background:transparent}.scene-camera .map-world>.map-art{display:none}.scene-camera .player{filter:none}.scene-vignette{display:none}body[data-view="play"] .topbar{background:none}.stage-overlay .story-backed{backdrop-filter:none;box-shadow:none;scrollbar-width:none;-ms-overflow-style:none}.stage-overlay .story-backed::-webkit-scrollbar{display:none;width:0;height:0}.immersive .glass-button{backdrop-filter:none}
/* Prominent narration remains readable over detailed watercolor terrain. */
.stage-overlay.journey-info{max-height:50dvh}.stage-overlay .story-backed{background:rgba(255,249,234,.97);padding:16px 18px}.stage-overlay .story-backed .stage-story{font-family:var(--sans);font-size:clamp(18px,4.6vw,22px);font-weight:700;line-height:1.8;letter-spacing:.025em;color:#172b20;margin:0 0 10px}.stage-overlay .story-backed .stage-place{font-size:12px;font-weight:600;line-height:1.7;color:#4b5948}
@media(max-height:600px) and (orientation:portrait){.stage-overlay.journey-info{max-height:44dvh}.stage-overlay .story-backed{padding:12px 14px}.stage-overlay .story-backed .stage-story{font-size:18px;line-height:1.7}}
@media(orientation:landscape) and (max-height:600px){.stage-overlay.journey-info{max-height:none}.stage-overlay .story-backed{padding:12px 14px}.stage-overlay .story-backed .stage-story{font-size:18px;line-height:1.7}.stage-overlay .story-backed .stage-place{font-size:11px}}

/* Finale only: natural painted flag and brush-calligraphy heading. */
.complete .flag-illustration{width:min(300px,78vw);height:auto;aspect-ratio:3/2;margin:0 auto 10px}.complete .handdrawn-flag{display:block;width:100%;height:100%;object-fit:contain}.complete .completion-heading{width:min(720px,100%);margin:14px auto 18px;line-height:1}.complete .completion-calligraphy{display:block;width:100%;height:auto;object-fit:contain}

.cover-bottom .cover-credit{display:block;font-size:11px;line-height:1.5;font-weight:400;letter-spacing:1px;color:#fff6dc;opacity:.85;margin-top:-10px}
