:root{--ink:#08364a;--muted:#686b65;--paper:#fffaf0;--edge:#eadbc4;--orange:#ff6444;--blue:#168cc5;--green:#159958;--radius:18px;font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:var(--ink);background:#f3eddf;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #168cc5;outline-offset:4px}button svg{width:26px;height:26px}h1,h2,p{margin:0}h1{font-size:27px;line-height:1.4;font-weight:800;letter-spacing:.01em}h2{font-size:20px;line-height:1.45}p{line-height:1.7}small{font-size:12px}a{color:#0875a5}button{border:0;background:none}button[hidden],[hidden]{display:none!important}.mini-program{position:relative;max-width:500px;min-height:100dvh;margin:auto;background:radial-gradient(ellipse at 35% 25%,#fffdf7 0,#fcf5e7 100%);box-shadow:0 5px 35px #8b725317;overflow:clip}.status-bar{display:none}.app-header{height:56px;display:flex;align-items:center;justify-content:space-between;padding:8px 20px}.icon-button{font-size:36px;line-height:1;width:36px;height:40px;color:#665c50}.app-header strong{font-size:15px}.diamond-pill{display:flex;align-items:center;gap:5px;font-size:13px}.diamond-icon{width:24px;height:24px;object-fit:contain;vertical-align:middle}.page{padding:12px 24px 28px}.primary,.secondary{position:relative;display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:56px;padding:13px 18px;border-radius:18px;font-size:19px;font-weight:750;line-height:1.4;margin-top:12px}.primary{color:white;background:linear-gradient(115deg,#ff7047,#ff5f43);border:1px solid #ff5035;box-shadow:inset 0 1px 2px #ffffff80,0 3px 0 #fff8ed}.secondary{border:1px solid #e6cba6;background:#fffcf5;box-shadow:0 3px 3px #9b764011}.primary:active,.secondary:active{transform:translateY(2px)}.primary:disabled{background:#e7dfd0;border-color:#ded3c1;color:#787365;box-shadow:none}.text-button{min-height:44px;padding:10px;font-size:14px;text-decoration:underline;text-underline-offset:4px}.local-note{font-size:12px;color:var(--muted);text-align:center;margin-top:18px}.tab-bar{position:sticky;bottom:0;background:#fffaf3f5;border-top:1px solid var(--edge);display:flex;justify-content:space-around;padding:9px 12px calc(8px + env(safe-area-inset-bottom));z-index:5}.tab-bar button{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:68px;color:#74746b;font-size:11px}.tab-bar svg{width:24px;height:24px}.tab-bar [aria-current=page]{color:#d8492d}.postcard-home{text-align:center;padding-top:35px;position:relative}.postcard-home h1{font-size:clamp(30px,8vw,43px);letter-spacing:.01em;white-space:nowrap;font-weight:900}.postcard-home>p:first-of-type{color:#716b60;margin-top:10px;font-size:15px}.settings-button{position:absolute;right:20px;top:0;color:#968f80;width:36px;height:36px}.ticket-stack{width:100%;aspect-ratio:430/190;margin:28px 0 21px;background-image:url('assets/approved-postcard-concept.png');background-size:388.8372% 495.2632%;background-position:8.0515% 22.6365%;background-repeat:no-repeat}.postcard-home .primary,.postcard-home .secondary{font-size:24px;min-height:60px}.chevron{position:absolute;right:20px;font-size:30px;font-weight:400}.play-triangle{width:0;height:0;border-top:12px solid transparent;border-bottom:12px solid transparent;border-left:19px solid white;border-radius:3px}.pin-symbol{color:#087db9}.pin-symbol svg{width:30px;height:30px}.quiet-practice{margin-top:16px;color:#716b60}.postcard-home .local-note{margin-top:0}[data-page=home]>.app-header{height:20px;visibility:hidden}[data-page=map] #page-title,[data-page=profile] #page-title,[data-page=question] #page-title{visibility:hidden}.question-page{padding-bottom:16px}.question-content{padding:0 24px;display:flex;flex-direction:column}.quiz-progress{position:relative;order:0;padding:0 0 22px;text-align:center}.quiz-progress>div:first-child{display:flex;justify-content:center;gap:8px;align-items:center;padding-top:20px}.quiz-progress b{font-size:20px}.quiz-progress small{position:absolute;right:0;top:-34px;color:#685c4e}.progress-track{position:absolute;top:0;left:23%;width:54%;height:6px;background:#e5ddce;border-radius:8px}.progress-track:after{content:'';position:absolute;inset:-3px 0;background:radial-gradient(circle,#e5ddce 5px,transparent 6px) 0 0/25% 12px}.progress-track i{height:6px;display:block;background:#fa7950;border-radius:8px;position:relative;z-index:1;transition:width .3s}.quiz-progress .streak{position:static;display:block;color:#a75c00;margin-top:4px}.dialogue{order:1;display:flex;align-items:center;gap:14px;min-height:110px;padding:20px 15px;margin:0 0 18px;background:#fff3d9;border:1px solid #dfbb80;box-shadow:0 3px 4px #91734522;position:relative;border-radius:8px}.dialogue:before,.city-ticket:before,.collection-stamp:before{content:'';pointer-events:none;position:absolute;inset:5px;border:1px solid #e8c994;border-radius:5px}.dialogue:after{content:'≋';font-size:48px;color:#dfc29680;position:absolute;right:8px;bottom:-4px;pointer-events:none}.listen-mark{flex:0 0 44px;width:44px;height:44px;border-radius:50%;background:#f3e5c9;color:#067daf;border:1px solid #e7d0a6;display:grid;place-items:center}.bubble{font-size:clamp(24px,6.5vw,33px);font-weight:850;line-height:1.5;position:relative;z-index:1}.question-content h1{order:2;text-align:center;font-size:21px;margin-bottom:8px}.context{order:3;color:#6f6b62;font-size:13px;text-align:center;margin-bottom:15px}.options{order:4;display:grid;gap:10px}.answer{min-height:53px;width:100%;display:flex;align-items:center;gap:16px;text-align:left;padding:13px 15px;background:#fffcf6;border:1px solid #e6d3b5;border-radius:15px;box-shadow:0 3px 4px #987a4510;font-size:16px;line-height:1.5}.answer b{font-weight:650}.reply-mark{flex:0 0 24px;width:24px;height:24px;border:2px solid #c9c0ae;border-radius:50%;display:grid;place-items:center;font-weight:800;color:white}.answer.selected,.answer.correct{background:#ddf1dc;border-color:#11a059;box-shadow:0 2px 0 #15995820}.answer.selected .reply-mark,.answer.correct .reply-mark{background:#25a168;border-color:#25a168}.answer.wrong{background:#ffe5df;border-color:#ffab9a}.answer.wrong .reply-mark{background:#f35c55;border-color:#f35c55}.answer:disabled{opacity:1}.action-dock{padding:8px 24px 12px}.hint{order:5;margin-top:15px;background:#def1fa;border:1px solid #a9dcef;border-radius:14px;padding:14px;font-size:14px}.action-dock.failure{margin:16px 24px 0;padding:16px;background:#ffe5dd;border:1px solid #ffc0b1;border-radius:18px}.failure h2{color:#c8322e}.failure p{font-size:14px;margin-top:8px}.retry-actions{display:flex;gap:8px;flex-wrap:wrap}.retry-actions button{flex:1;min-width:110px;font-size:15px}.retry-actions .primary{background:#ceecff;color:#064a6d;border-color:#addcff}.success .feedback-heading{background:#ffdc68;border:1px solid #f2b632;box-shadow:0 3px 0 #edb52f22;padding:15px 24px;text-align:center;font-size:36px;margin:10px auto 24px;max-width:320px;transform:rotate(-1deg)}.explanation{padding:20px;border:1px solid #eedbbd;border-radius:18px;background:#fff9ed}.explanation>b{font-size:20px}.explanation p{font-size:15px;margin-top:10px;color:#565e5f}.explanation details{margin-top:12px;font-size:12px;color:#626b68}.explanation summary{cursor:pointer}.answer-reward{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:18px 0}.answer-reward>div{min-height:120px;border:1px solid #eddbc0;border-radius:14px;display:flex;flex-wrap:wrap;align-content:center;justify-content:center;align-items:center;gap:6px;background:#fffaf3;padding:10px}.answer-reward>div:last-child{background:#fff0e8;border-color:#ffd4c4}.answer-reward .diamond-icon{width:42px;height:38px}.answer-reward b{font-size:26px}.answer-reward>div:last-child b{font-size:15px;width:100%;text-align:center}.answer-reward small{width:100%;text-align:center}.city-art{display:block;width:64px;height:48px;background-image:url('assets/approved-postcard-concept.png');background-size:2612.5% 1960.4167%;background-repeat:no-repeat}.art-0{background-position:70.85% 82.98%}.art-1{background-position:76.67% 82.98%}.art-2{background-position:82.39% 82.98%}.art-3{background-position:88.1% 82.98%}.art-4{background-position:93.82% 82.98%}.journey-page h1,.journey-page>p,.passport>h1{text-align:center}.journey-page>p{font-size:14px;color:#626860;margin-top:8px}.ticket-route{height:455px;position:relative;margin:16px 0}.route-line{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:#98988c;stroke-width:3;stroke-dasharray:6 12;stroke-linecap:round}.city-ticket{position:absolute;width:46%;height:85px;background:var(--ticket);border:2px dashed var(--ticket-border);border-radius:7px;box-shadow:0 4px 3px #6c5d4220;display:flex;align-items:center;justify-content:space-evenly;transform:rotate(-5deg);z-index:1}.city-tone-0{--ticket:#fff0bd;--ticket-border:#edb851}.city-tone-1{--ticket:#dceffd;--ticket-border:#97cce8}.city-tone-2{--ticket:#ffe0d5;--ticket-border:#efa997}.city-tone-3{--ticket:#dff0d7;--ticket-border:#a3c59b}.city-tone-4{--ticket:#ece1ff;--ticket-border:#c1abed}.city-ticket:nth-of-type(1){left:2%;top:10px}.city-ticket:nth-of-type(2){right:0;top:98px;transform:rotate(5deg)}.city-ticket:nth-of-type(3){left:4%;top:183px;transform:rotate(4deg)}.city-ticket:nth-of-type(4){right:0;top:270px;transform:rotate(-3deg)}.city-ticket:nth-of-type(5){left:6%;top:358px}.city-ticket>b{font-size:27px}.ticket-number{position:absolute;top:-10px;left:6px;width:26px;height:26px;background:var(--ticket-border);border-radius:50%;color:#fff;font-size:17px;font-weight:800;border:1px solid white}.ticket-state{background:#ffffff80;border-radius:50%;width:32px;height:32px;display:grid;place-items:center;font-size:28px}.city-ticket em{position:absolute;right:0;bottom:-12px;border:2px solid #1b9b5e;background:#f2ffec;color:#168a50;padding:3px;font-size:11px;transform:rotate(-8deg);font-style:normal}.route-tree{position:absolute;width:24px;height:29px;border-radius:50% 50% 40% 40%;background:#9bcd75}.route-tree:after{content:'';position:absolute;width:2px;height:25px;background:#6e8b4d;top:14px;left:11px}.tree-one{right:3%;top:52px}.tree-two{left:0;bottom:0}.route-flag{position:absolute;right:10%;bottom:8px;border-left:2px solid #928b53;width:22px;height:35px}.route-flag:after{content:'';position:absolute;background:#ffb83b;top:0;width:22px;height:16px}.profile-stats{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid #eee2d0;border-radius:18px;background:#fffcf6;padding:16px 4px;margin:20px 0 14px}.profile-stats>div{text-align:center;border-right:1px solid #e9ddc9}.profile-stats>div:last-child{border:0}.profile-stats b{font-size:20px;display:flex;align-items:center;justify-content:center;gap:6px}.profile-stats svg{width:25px;height:25px;color:#f7ac28;fill:#ffe58b}.profile-stats small{display:block;color:#65717a;margin-top:4px}.collection{background:#fffaf2;border:1px solid #eee1cd;padding:13px 12px;border-radius:18px;margin-bottom:14px}.collection h2{font-size:17px;margin-bottom:12px}.stamp-collection{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.collection-stamp{position:relative;border:1px dashed var(--ticket-border);background:var(--ticket);border-radius:5px;padding:7px 0;display:flex;align-items:center;flex-direction:column;min-width:0}.collection-stamp b{font-size:13px;z-index:1}.collection-stamp .city-art{width:100%;max-width:64px;aspect-ratio:64/48;height:auto;opacity:.65}.collection-stamp.collected .city-art{opacity:1}.collection-stamp small{font-size:9px;white-space:nowrap;color:#657477}.sticker-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px 8px}.sticker{padding:0;min-width:0;text-align:center}.sticker b{font-size:10px;display:block;font-weight:500;margin-top:5px}.sticker small{display:none}.sticker .city-art{width:100%;max-width:64px;aspect-ratio:64/48;height:auto}.unknown-sticker{display:grid;place-items:center;height:45px;width:45px;margin:auto;border-radius:50%;border:1px dashed #ded9cb;background:#f0ece3;color:#c0bbaa;font-size:29px;font-weight:800}.sticker:not(.lit) b{color:#7e7a70}.city-banner{display:flex;gap:14px;align-items:center;margin:8px 0 28px}.city-icon svg{width:48px;height:48px;color:#ba8a38}.city-banner p{font-size:13px;color:#6f6b62}.level-path{display:grid;gap:22px}.level-stop{position:relative;padding-left:35px}.level-node{position:absolute;left:0;top:20px;width:28px;height:28px;border-radius:50%;background:#ffbf55;color:white;display:grid;place-items:center}.level-node svg{width:20px;height:20px}.level-card{width:100%;text-align:left;padding:18px;background:#fff2d0;border:1px dashed #dbb879;border-radius:12px}.level-card h2{margin:7px 0}.level-card p,.unlock-note{font-size:12px;color:#6d6c63}.locked .level-card{background:#eee9df}.stars{color:#d5ccba;font-size:28px;letter-spacing:7px}.stars .filled{color:#efab2b}.intro{text-align:center}.eyebrow{color:#99703f}.opening{font-size:15px;margin:15px 0}.scene-art{width:100%;height:160px;background:url('assets/approved-postcard-concept.png') 8.0515% 22.6365%/388.8372% 495.2632% no-repeat;margin:20px 0}.scene-art .mascot,.result-mascot{display:none}.mission,.facts{border:1px solid #eadbc4;border-radius:16px;padding:16px;background:#fffaf0;margin:16px 0}.mission p{font-size:13px}.facts p{display:flex;justify-content:space-between;gap:10px;font-size:13px;padding:9px 0}.facts span{color:#6f6b62}.result{text-align:center}.result h1{margin:14px 0}.sticker-award{background:#fff1d1;border:1px dashed #e6bb65;border-radius:14px;margin:22px 0;padding:22px}.sticker-award p{font-size:14px;margin-top:12px}.result-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:20px 0}.result-stats>div{border:1px solid #e6d7bd;padding:18px;border-radius:14px}.result-stats b{font-size:28px}.result-stats p{font-size:13px}.diamond-amount{display:flex;align-items:center;justify-content:center;gap:6px}.next-story{margin:20px 0}.next-story small{color:#7d6b55}#toast{position:fixed;bottom:85px;left:50%;transform:translateX(-50%);width:max-content;max-width:90vw;z-index:20;background:#143c48;color:white;border-radius:12px;padding:12px 18px;opacity:0;pointer-events:none;font-size:13px}#toast.visible{opacity:1}#storage-warning{margin:10px;padding:12px;background:#fff0d0}#celebration-layer{pointer-events:none;position:fixed;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;gap:30px;color:#f5b82d;font-size:26px}#celebration-layer i{animation:float-star .8s ease-out both}#celebration-layer i:nth-child(2){animation-delay:.1s}@keyframes float-star{from{transform:translateY(40px);opacity:1}to{transform:translateY(-100px);opacity:0}}@media(min-width:600px){body{padding:20px}.mini-program{border:1px solid #f5e8d6;border-radius:22px;min-height:calc(100dvh - 40px)}}@media(max-width:350px){.page{padding-left:16px;padding-right:16px}.question-content{padding:0 16px}.action-dock{padding-left:16px;padding-right:16px}.postcard-home h1{font-size:30px}.postcard-home>p:first-of-type{font-size:13px}.answer{font-size:15px;gap:10px;padding:12px}.bubble{font-size:24px}.collection{padding:12px 8px}.stamp-collection{gap:4px}.sticker-grid{gap:12px 5px}.profile-stats small{font-size:11px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Reference-aligned finishing pass: perforated edges and non-overlapping counters. */
.quiz-progress small{top:-5px;right:0}.quiz-progress>div:first-child{padding-top:23px}.dialogue,.success .feedback-heading{border-radius:0;mask:radial-gradient(circle at 0 6px,transparent 3px,#000 3.5px) left top/51% 12px repeat-y,radial-gradient(circle at 100% 6px,transparent 3px,#000 3.5px) right top/51% 12px repeat-y}.dialogue:before{inset:7px 10px}.art-0{background-size:2458.8235% 2188.3721%;background-position:88.1546% 34.5212%}.ticket-stack{border-radius:12px;mask-image:linear-gradient(to right,transparent,#000 3%,#000 97%,transparent)}.collection-stamp:before{inset:3px}.city-ticket{border-style:solid}.city-ticket:after{content:'';pointer-events:none;position:absolute;inset:-2px;background:radial-gradient(circle at 0 6px,#fcf6eb 3px,transparent 3.5px) left top/6px 12px repeat-y,radial-gradient(circle at 100% 6px,#fcf6eb 3px,transparent 3.5px) right top/6px 12px repeat-y}.ticket-number,.city-ticket em{z-index:2}.passport .local-note{margin-bottom:18px}.tab-bar{position:relative;bottom:auto}.scene-art{height:auto;aspect-ratio:430/190}
/* Chapter stickers share a city illustration and a stable chapter number. */
.chapter-sticker{position:relative;display:inline-block;width:64px;height:48px;flex-shrink:0;vertical-align:middle}.chapter-sticker>.city-art{width:100%;height:100%;max-width:none}.chapter-sticker-number{position:absolute;right:-3px;bottom:-3px;display:grid;place-items:center;width:19px;height:19px;border-radius:50%;border:2px solid #fffaf0;background:#0a6d86;color:white;font-size:11px;font-weight:700;line-height:1}.chapter-sticker-large{display:block;width:88px;height:66px;margin:16px auto}.chapter-sticker-large .chapter-sticker-number{width:25px;height:25px;font-size:13px}.sticker .chapter-sticker{width:100%;max-width:64px;height:auto;aspect-ratio:64/48}.sticker .chapter-sticker>.city-art{position:absolute;inset:0;height:100%}.sticker .chapter-sticker-number{width:16px;height:16px;font-size:9px;right:0;bottom:-1px}

/* Short screen transitions never intercept input or duplicate accessible controls. */
#view{position:relative;isolation:isolate}.screen-transition-ghost{position:absolute;inset:0 0 auto;pointer-events:none;z-index:2;background:#fffaf0;overflow:hidden}.answer{transition:background-color 120ms ease,border-color 120ms ease,box-shadow 120ms ease}.primary,.secondary{transition:transform 100ms ease,background-color 120ms ease}#toast{transition:opacity 160ms ease}@media(prefers-reduced-motion:reduce){.screen-transition-ghost{display:none}.answer,.primary,.secondary,#toast{transition:none}}
/* Answer feedback stays below the current question; only Next changes the question. */
.feedback-complete .action-dock.success{margin:16px 24px 0;padding:16px;border:1px solid #dfd8b9;border-radius:18px;background:#fff7e2;animation:feedback-reveal 180ms ease-out}.feedback-complete .success .feedback-heading{font-size:23px;padding:7px 18px;margin:0 0 12px;max-width:180px;text-align:left}.feedback-complete .explanation{padding:0;border:0;background:none}.feedback-complete .explanation>b{font-size:17px}.feedback-complete .explanation p{font-size:14px;margin-top:6px}.feedback-complete .explanation details{margin-top:8px}.feedback-complete .answer-reward{gap:8px;margin:12px 0}.feedback-complete .answer-reward>div{min-height:72px;padding:8px;gap:4px}.feedback-complete .answer-reward b{font-size:21px}.feedback-complete .answer-reward>div:last-child b{font-size:12px}.feedback-complete .answer-reward .diamond-icon{width:29px;height:27px}.feedback-complete .answer-reward .chapter-sticker{width:40px;height:30px}.feedback-complete .answer-reward small{font-size:11px}.feedback-complete .primary{margin-top:8px;min-height:50px;font-size:17px}.action-dock h2{scroll-margin-bottom:24px}@keyframes feedback-reveal{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}@media(max-width:350px){.feedback-complete .action-dock.success{margin-left:16px;margin-right:16px;padding:12px}}@media(prefers-reduced-motion:reduce){.feedback-complete .action-dock.success{animation:none}}
/* Each chapter now owns an illustrated souvenir, shared by every screen. */
.chapter-sticker{width:76px;height:76px}.chapter-sticker-image{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 3px 2px #63432815)}.chapter-sticker-large{width:172px;height:172px;margin:8px auto}.story-arrival{padding-top:12px}.arrival-kicker{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:#786b58;margin-bottom:15px}.arrival-kicker b{font-weight:500}.story-arrival h1{font-size:29px;line-height:1.35}.arrival-subtitle{font-size:13px;color:#746957;margin-top:8px}.souvenir-preview,.souvenir-reveal{position:relative;background:radial-gradient(ellipse at center,var(--ticket,#fff0ba),#fffaf0 75%);border:1px solid #e8d5ac;border-radius:16px;box-shadow:0 8px 20px #815f2310;margin:28px 0 16px;padding:20px 16px 16px}.souvenir-tape{position:absolute;width:80px;height:20px;left:calc(50% - 40px);top:-10px;transform:rotate(-5deg);background:#e8ce8c85;border-left:2px dashed #fff9eb;border-right:2px dashed #fff9eb}.souvenir-preview>small,.souvenir-reveal>small{color:#7b5f39;font-size:12px;letter-spacing:.08em}.souvenir-preview h2{font-size:21px}.collect-status{display:inline-block;margin-top:9px;border:1px solid #d8c99e;border-radius:20px;padding:4px 10px;background:#fffaf4;font-size:11px;color:#77602d}.story-arrival .opening{font-size:15px;line-height:1.8;text-align:left;margin:18px 5px 10px}.journey-preview{position:relative;display:flex;justify-content:space-between;max-width:235px;margin:20px auto 10px}.journey-preview:before{content:'';position:absolute;top:13px;left:10px;right:10px;border-top:2px dashed #decaa7}.journey-preview span{position:relative;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;border:1px solid #e7cfa8;background:#fff8e8;font-size:12px;color:#8b7249}.journey-preview span:first-child{background:#ff764a;color:#fff;border-color:#ff764a}.arrival-rules{font-size:12px;color:#786957}.story-arrival .primary{margin-top:20px}.story-arrival .local-note{margin-top:4px;font-size:11px}.souvenir-result>h1{font-size:26px;margin:10px 0}.souvenir-result>p{color:#72634d;font-size:13px}.souvenir-result>.stars{font-size:32px}.souvenir-reveal .chapter-sticker-large{width:180px;height:180px;animation:souvenir-arrive 550ms cubic-bezier(.2,.8,.25,1) both}.souvenir-reveal:after{content:'已入册';position:absolute;right:14px;top:26px;transform:rotate(12deg);border:2px solid #239366;border-radius:7px;padding:5px;color:#14734e;font-size:12px;font-weight:700;animation:stamp-arrive 350ms 200ms both}.souvenir-reveal h2{font-size:22px}.souvenir-reveal p{color:#6c634f;font-size:13px;margin-top:10px}.next-story{display:flex;align-items:center;gap:12px;text-align:left;background:#fff6e7;padding:12px;border:1px dashed #dcc59e;border-radius:14px}.next-story .chapter-sticker{width:60px;height:60px}.next-story>div{min-width:0}.next-story h2{font-size:17px;margin-top:4px}.next-story small{font-size:11px}.souvenir-result .result-stats{margin:16px 0}.souvenir-result .result-stats>div{padding:13px}.album-city{margin-top:18px;border-top:1px solid #eadfc9;padding-top:14px}.album-city h3{margin:0 0 10px;font-size:16px;display:flex;align-items:center;justify-content:space-between}.album-city h3 small{color:#82745e;font-weight:400}.album-city .sticker-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.album-city .sticker{position:relative;border:1px solid #e9d7b5;border-radius:13px;background:#fff7e4;padding:10px 5px;min-height:128px}.album-city .sticker .chapter-sticker{width:100%;max-width:94px;height:auto;aspect-ratio:1}.album-city .sticker b{font-size:12px;line-height:1.5;font-weight:650;margin-top:6px}.album-city .sticker small{display:block;font-size:10px;margin-top:4px;color:#85765c}.album-city .uncollected{background:#f6f1e8;border-style:dashed}.album-city .uncollected .chapter-sticker{opacity:.46;filter:grayscale(.85)}.album-city .uncollected b{color:#756d5e}.feedback-complete .answer-reward .chapter-sticker{width:44px;height:44px}.answer-reward .chapter-sticker{width:64px;height:64px}@keyframes souvenir-arrive{from{opacity:0;transform:translateY(12px) rotate(-9deg) scale(.8)}to{opacity:1;transform:translateY(0) rotate(0) scale(1)}}@keyframes stamp-arrive{from{opacity:0;transform:rotate(12deg) scale(1.4)}to{opacity:1;transform:rotate(12deg) scale(1)}}@media(prefers-reduced-motion:reduce){.souvenir-reveal .chapter-sticker-large,.souvenir-reveal:after{animation:none}}@media(max-width:350px){.story-arrival h1{font-size:25px}.chapter-sticker-large{width:150px;height:150px}.album-city .sticker b{font-size:11px}.album-city .sticker-grid{gap:5px}}

/* Learning and story lead; souvenirs are a small completion extra. */
.learning-mission{margin:24px 0 12px;padding:20px;text-align:left;background:#fff5dc;border:1px solid #ead4ad;border-radius:18px}.learning-mission>small,.learning-preview>small{font-size:12px;color:#776044}.learning-mission h2{font-size:22px;line-height:1.55;margin:9px 0 14px}.learning-mission .opening{margin:0;font-size:14px;line-height:1.8;color:#52616a}.learning-preview{margin-top:20px;padding-top:14px;border-top:1px solid #eadac0}.learning-words{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.learning-words span{font-size:14px;line-height:1.5;padding:5px 10px;border:1px solid #dfd0b7;border-radius:9px;background:#fffcf6;color:#153f50}.learning-arrival .primary{margin-top:16px}.chapter-keepsake{display:flex;align-items:center;gap:12px;text-align:left;padding:12px 4px;margin:18px 0 6px;border-top:1px solid #eadfc9}.chapter-keepsake .chapter-sticker{width:56px;height:56px;flex-shrink:0}.chapter-keepsake small,.chapter-keepsake span{display:block;color:#786b58;font-size:11px;line-height:1.7}.chapter-keepsake b{display:block;font-size:14px;line-height:1.8}.learning-recap{text-align:left;background:#fff5dc;border:1px solid #ead4ad;border-radius:16px;padding:16px;margin:18px 0}.learning-recap h2{font-size:18px}.learning-recap p{font-size:13px;line-height:1.8;color:#58656b;margin:12px 0 0}.souvenir-result .souvenir-reveal{display:grid;grid-template-columns:52px 1fr;gap:2px 12px;text-align:left;padding:12px;margin:12px 0;background:#fffaf0;border:1px solid #eadfc9;box-shadow:none}.souvenir-result .souvenir-reveal .souvenir-tape,.souvenir-result .souvenir-reveal:after{display:none}.souvenir-result .souvenir-reveal>small{grid-column:2;font-size:11px;letter-spacing:0}.souvenir-result .souvenir-reveal .chapter-sticker-large{grid-column:1;grid-row:1 / 3;width:52px;height:52px;margin:0;animation:none}.souvenir-result .souvenir-reveal h2{grid-column:2;font-size:15px;margin:0}.souvenir-result .souvenir-reveal p{grid-column:1 / -1;font-size:12px;margin-top:5px}.learning-arrival .arrival-rules{line-height:1.7}@media(max-width:350px){.learning-mission{padding:16px}.learning-mission h2{font-size:20px}.learning-words{gap:6px}.learning-words span{font-size:13px}}

.result-breakdown{display:block;font-size:12px;line-height:1.7;color:#665c4f;margin-top:6px}.result-stats>div{min-width:0}.result-stats .result-breakdown{font-size:12px}

/* Approved paper-ticket refinement, shared by all five city routes. */
::selection{background:#ffd2a8;color:#08364a}
.city-learning-progress{margin:22px 0 12px;text-align:left}.city-learning-progress h2{font-size:18px}.city-learning-progress>p{font-size:12px;color:#665c4f;margin:5px 0 10px}.learning-city-row{display:block;width:100%;padding:12px 2px;border-bottom:1px solid #eadbc4;min-height:62px}.learning-city-row>span{display:flex;justify-content:space-between;gap:10px;align-items:center}.learning-city-row small{font-size:12px;color:#665c4f}.learning-city-row progress{display:block;width:100%;height:6px;margin-top:9px;appearance:none;border:0;border-radius:6px;background:#e8e0cf;overflow:hidden}.learning-city-row progress::-webkit-progress-bar{background:#e8e0cf}.learning-city-row progress::-webkit-progress-value{background:#209862}.learning-city-row progress::-moz-progress-bar{background:#209862}.city-unlit .city-art{opacity:.45;filter:grayscale(.65)}.city-ticket.city-unlit em{border-color:#aa9e89;color:#655d50;background:#fffaf0}.city-lit .city-art{opacity:1;filter:none}
.chapter-route-page .city-banner{margin-bottom:22px;gap:12px}
.chapter-route-page .city-banner p{font-size:13px;color:#665b4a;margin-top:5px}
.chapter-route{position:relative;padding:4px 0 12px}
.route-stop{position:relative;width:79%;margin:0 0 23px}
.route-stop:nth-child(even){margin-left:auto}
.route-stop:not(:last-child):after{content:'';position:absolute;top:calc(100% - 1px);height:26px;width:48%;left:65%;border-right:2px dashed #a89c85;border-bottom:2px dashed #a89c85;border-radius:0 0 32px 0;pointer-events:none}
.route-stop:nth-child(even):after{left:-12%;border-right:0;border-left:2px dashed #a89c85;border-radius:0 0 0 32px}
.route-ticket{position:relative;display:flex;align-items:center;gap:8px;width:100%;min-height:88px;padding:12px 14px;background:var(--ticket);border:1px solid #d9c7a7;border-radius:6px;text-align:left;box-shadow:0 3px 6px #8b6c2914}
.route-ticket:after{content:'';position:absolute;inset:-1px;pointer-events:none;background:radial-gradient(circle at 0 5px,#fffaf0 2px,transparent 2.5px) left/5px 10px repeat-y,radial-gradient(circle at 100% 5px,#fffaf0 2px,transparent 2.5px) right/5px 10px repeat-y}
.route-ticket:before{content:'';position:absolute;inset:5px 7px;border:1px solid #ffffff95;border-radius:4px;pointer-events:none}
.route-number{font-size:23px;font-weight:800;min-width:24px}
.route-copy{flex:1;min-width:0;position:relative;z-index:1}.route-copy b{display:block;font-size:15px;line-height:1.5}.route-copy small{display:block;font-size:11px;color:#53646a;margin-top:5px}
.route-ticket .chapter-sticker{width:46px;height:46px;flex-shrink:0}.route-state{position:absolute;bottom:-8px;right:11px;background:#fff9ee;border-radius:50%;display:grid;place-items:center}.route-state:empty{display:none}.route-state svg{width:22px;height:22px;padding:3px}
.route-selected .route-ticket{border:2px solid #ed6945;box-shadow:0 4px 9px #ba763321}.route-selected .route-copy small{color:#a33319;font-weight:700}.route-selected .route-number{color:#bd3c23}
.route-dock{position:sticky;bottom:0;z-index:3;background:#fffaf3;padding:14px 12px calc(12px + env(safe-area-inset-bottom));border:1px solid #e4d0b2;border-radius:16px;box-shadow:0 -5px 18px #74552a0c}
.route-dock-summary{display:flex;align-items:center;gap:10px}.route-dock-summary .chapter-sticker{width:43px;height:43px}.route-dock h2{font-size:18px}.route-dock p{font-size:12px;color:#665c4f}.route-dock .primary,.route-dock .secondary{min-height:48px;font-size:17px;margin-top:10px}.route-unlock-copy{margin-top:8px}.route-expand{display:block;margin:8px auto 0}.chapter-route-page>.local-note{margin-top:0}
.city-ticket .city-art{width:54px;height:50px;margin:2px 0 0;display:block}.city-ticket{min-height:112px!important}.ticket-route{margin-top:22px;height:490px}.journey-page>p{font-size:14px}.city-ticket .ticket-state{position:absolute;right:10px;top:12px}.city-ticket em{font-size:10px}
.learning-mission,.learning-recap{border-radius:10px;background:#fff4d9}.learning-preview{border-top-style:dashed}.learning-words span{background:#fffbef;border-color:#e5d4b4}.souvenir-result .souvenir-reveal{border-radius:8px;background:#fff7e5}.collection{border-color:#e8dac5}.passport h1{margin-bottom:18px}
.feedback-complete .action-dock.success{background:#fffaf0;border-color:#eedbbd;padding:22px 16px 16px;position:relative}
.feedback-complete .success .feedback-heading{position:relative;background:#ffdc68;color:var(--ink);border:1px solid #f2b632;width:max-content;max-width:100%;padding:14px 24px;margin:0 auto 20px;text-align:center;font-size:clamp(28px,8vw,36px);font-weight:900;line-height:1.3;letter-spacing:.02em;transform:rotate(-1deg);box-shadow:0 4px 5px #ba831b22;mask:radial-gradient(circle at 0 6px,transparent 3px,#000 3.5px) left top/51% 12px repeat-y,radial-gradient(circle at 100% 6px,transparent 3px,#000 3.5px) right top/51% 12px repeat-y}
.feedback-complete .explanation{padding:14px;background:#fff3df;border:0;border-radius:14px;color:var(--ink)}
.feedback-complete .explanation>b{font-size:19px;line-height:1.5}.feedback-complete .explanation p{font-size:14px;line-height:1.75;color:#565e5f}
.feedback-complete .answer-reward{gap:10px;margin:16px 0}.feedback-complete .answer-reward>div{background:#fffaf3;border-color:#eddbc0;min-height:110px;padding:10px 6px}.feedback-complete .answer-reward>div:last-child{background:#fff0e8;border-color:#ffd4c4}.feedback-complete .answer-reward b{font-size:27px}.feedback-complete .answer-reward .diamond-icon{width:38px;height:36px}.feedback-complete .answer-reward .chapter-sticker{width:62px;height:62px}.feedback-complete .answer-reward>div:last-child b{font-size:13px}.feedback-complete .answer-reward small{font-size:12px;line-height:1.5}.feedback-complete .primary{min-height:54px;font-size:19px}
.slide-question-ghost{background:transparent}.slide-question-ghost .quiz-progress{visibility:hidden}.slide-question-ghost .question-page{background:transparent}.screen-transition-ghost{contain:layout paint}
@media(max-width:350px){.route-stop{width:86%}.route-ticket{padding:10px 12px}.route-ticket .chapter-sticker{width:36px;height:36px}.route-copy b{font-size:14px}.route-dock h2{font-size:16px}.route-stop:not(:last-child):after{width:35%}}
