@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;600;700&family=Noto+Serif+JP:wght@400;500;600;700&display=swap');
:root{--ink:#253f38;--green:#326552;--paper:#f6f8f3;--muted:#77847b;--line:#dce4d9;--yellow:#e9c773}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'Noto Sans TC',sans-serif;font-size:14px}button,a,input{touch-action:manipulation}button{font:inherit;cursor:pointer;color:inherit}button{border:0;background:none}button:focus-visible,a:focus-visible{outline:3px solid #c09936;outline-offset:5px}header{max-width:1312px;margin:auto;height:100px;display:flex;align-items:center;justify-content:space-between;padding:0 48px}.brand{display:flex;gap:12px;color:var(--ink);text-decoration:none;font-family:'Noto Serif JP',serif;font-size:25px;font-weight:700;letter-spacing:3px;align-items:center}.brand-mark{border-radius:50% 50% 44% 44%;background:var(--green);color:white;font-size:27px;width:46px;height:50px;text-align:center;line-height:48px;transform:rotate(-6deg)}.brand small{font-size:10px;display:block;letter-spacing:4px;margin-top:1px;font-weight:400}nav{display:flex;gap:36px;height:100%;align-items:center}nav button{height:100%;color:var(--muted);position:relative;padding:0 3px}.nav-active{color:var(--ink);font-weight:600}.nav-active:after{position:absolute;content:'';bottom:23px;left:30%;right:30%;height:3px;border-radius:3px;background:var(--green)}#wordCount{font-size:10px;background:#e3e9df;border-radius:20px;padding:2px 6px;margin-left:4px}.demo-tag{font-size:11px;letter-spacing:2px;border:1px solid #b9cbbf;border-radius:5px;padding:5px 12px;color:var(--green)}main{max-width:1216px;margin:auto;padding:0 24px}.intro{display:flex;justify-content:space-between;align-items:center;padding:39px 0 37px}.eyebrow{font-size:12px;color:var(--green);letter-spacing:2px;margin:0 0 13px}h1{font-family:'Noto Serif JP',serif;font-size:39px;letter-spacing:3px;line-height:1.5;margin:0 0 13px;font-weight:600}.lead{font-size:13px;color:#6b7c71;letter-spacing:.5px;margin:0}.mobile{display:none}.ticket{width:258px;background:#eef1e7;padding:20px 23px;position:relative;border-left:2px dashed #bdcbb9;transform:rotate(2deg)}.ticket>span{font-size:10px;color:#798770;letter-spacing:2px}.ticket strong{display:block;font-family:'Noto Serif JP',serif;font-size:18px;margin:9px 0 4px;font-weight:500}.ticket small{color:#7b8372;font-size:11px}.ticket>div{border-top:1px solid #d9e0cd;margin-top:16px;padding-top:12px;display:flex;justify-content:space-between;font-size:10px;color:#74816e}.ticket b{font-weight:500}.practice{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#fff;box-shadow:0 12px 30px #334e3708}.scene-heading{display:flex;align-items:center;justify-content:space-between;padding:17px 25px}.scene-heading>div{display:flex;gap:12px;align-items:center}.scene-num{font-size:11px;border:1px solid #d1ddcf;color:var(--green);border-radius:50%;width:28px;height:28px;display:grid;place-items:center}h2{font-size:15px;margin:0;font-weight:500}h2 small{font-family:'Noto Serif JP',serif;font-size:12px;margin-left:16px;color:#8a9588}.quiet{font-size:11px;color:#778773}.game{position:relative}.art{position:relative;height:440px;overflow:hidden;background:#bccbb4}.art img{width:100%;height:100%;object-fit:cover;object-position:center 47%;display:block}.location{position:absolute;top:20px;left:24px;background:#fffffff0;padding:8px 15px;font-size:11px;letter-spacing:1px;border-radius:30px}.scene-help{position:absolute;top:25px;left:50%;transform:translateX(-50%);font-size:12px;color:white;background:#253f38cc;border-radius:25px;padding:9px 18px;white-space:nowrap}.hotspot{position:absolute;display:flex;align-items:center;flex-direction:column;gap:6px;transform:translate(-50%,-50%);padding:10px}.barista{left:60%;top:47%}.cup{left:27%;top:78%}.menu{left:80%;top:76%}.pin{display:grid;place-items:center;width:37px;height:37px;background:#fff8e9;color:var(--green);border:2px solid white;box-shadow:0 0 0 6px #ffffff38,0 3px 10px #0002;border-radius:50%;font-size:20px;font-weight:700}.barista .pin{background:var(--green);color:white}.hot-label{background:#fffef6ef;color:var(--ink);padding:4px 10px;border-radius:5px;font-size:11px;box-shadow:0 2px 5px #0001}.hotspot:hover .pin{transform:scale(1.12)}.art-note{position:absolute;bottom:12px;right:18px;color:#fff;font-size:10px;text-shadow:0 1px 3px #333}.dialogue{position:relative;background:#fffefa;margin:-40px 28px 0;border-radius:12px;border:1px solid #d4ddcc;box-shadow:0 -4px 25px #26352913;padding:23px 29px 18px;min-height:246px}.dialogue-top{display:flex;justify-content:space-between;align-items:center}.speaker{background:var(--green);color:#fff;border-radius:5px;padding:4px 13px;font-size:11px;letter-spacing:1px}#progressLabel{font-size:10px;color:#8b9688}.speech-row{display:flex;justify-content:space-between;gap:20px;padding-top:14px;min-height:97px}#jp{font-family:'Noto Serif JP',serif;font-size:24px;letter-spacing:1px;margin:0 0 6px;line-height:1.6;min-height:38px}#reading{font-size:11px;color:#939e8f;margin:0 0 9px;letter-spacing:.5px}#translation{font-size:12px;color:#657960;margin:0;min-height:20px}.sound{background:#edf1e7;align-self:flex-start;border:1px solid #dbe3d3;border-radius:50%;width:53px;height:53px;font-size:22px;flex-shrink:0}.sound span{display:block;font-size:8px;margin-top:0}.sound.playing{background:#dce8d2}.dialogue-tools{display:flex;gap:19px;align-items:center;color:#7f8d76;font-size:10px;padding-top:12px;flex-wrap:wrap}.dialogue-tools button{font-size:10px;color:var(--green);padding:0;text-decoration:underline;text-underline-offset:3px}.dialogue-tools label{display:flex;align-items:center;gap:4px}.dialogue-tools input{accent-color:var(--green);width:12px;height:12px;margin:0}#audioStatus{font-size:10px}.choices{display:flex;gap:10px;margin-top:16px}.choices button{border:1px solid #d6dfcf;border-radius:7px;text-align:left;padding:11px 14px;flex:1;font-size:13px;background:#f8faf4;transition:background .15s}.choices button:hover{background:#eaf0e3;border-color:#8fab86}.choices button small{display:block;font-size:10px;color:#83917b;margin-top:4px}.choices .start{max-width:220px;background:var(--green);color:white;display:flex;justify-content:space-between;border:0}.choices .start:hover{background:#234f40}.feedback{font-size:12px;line-height:1.8;margin-top:10px;color:var(--green)}.feedback:empty{display:none}.practice-foot{padding:21px 28px;display:flex;justify-content:space-between;font-size:10px;color:#8a9784}.practice-foot>span{display:flex;align-items:center;gap:7px}.practice-foot i{width:6px;height:6px;background:#90a77b;border-radius:100%}#steps{display:flex;gap:13px}.step.active{color:var(--green);font-weight:600}.below{display:grid;grid-template-columns:1fr 340px;padding:31px 4px;gap:40px}.how{display:flex;gap:17px;align-items:flex-start}.tiny-icon{border:1px solid #d5dfce;border-radius:12px;padding:10px 16px;font-size:25px;color:#82986b}.how h3{font-size:13px;font-weight:500;margin:0 0 7px}.how p,.next p{font-size:11px;line-height:1.9;color:#829078;margin:0}.next{border-left:1px solid var(--line);padding-left:30px}.next>span{font-size:9px;color:#8d9b82}.next strong{display:block;font-family:'Noto Serif JP',serif;font-weight:500;font-size:17px;margin:7px 0}.soon{font-size:9px;border-radius:4px;padding:2px 5px;background:#e8edde;margin-left:8px}footer{border-top:1px solid var(--line);max-width:1168px;margin:3px auto 0;display:flex;justify-content:space-between;padding:22px 0;color:#8d9987;font-size:10px}.footer-jp{margin-left:20px;font-family:'Noto Serif JP',serif}dialog{border:1px solid #ccd8c6;border-radius:15px;padding:35px;width:min(440px,90vw);color:var(--ink);background:#fffefa;box-shadow:0 15px 80px #18362730}dialog::backdrop{background:#243a3280;backdrop-filter:blur(4px)}dialog h2{font-family:'Noto Serif JP',serif;font-size:29px;margin:16px 0}.close{position:absolute;right:14px;top:10px;font-size:24px;color:#7c8b73}.primary,.secondary{display:block;width:100%;padding:12px;margin-top:12px;border-radius:7px}.primary{background:var(--green);color:white}.secondary{border:1px solid var(--line)}#wordReading,#wordZh{color:#7a8772}#vocabList button{width:100%;display:flex;justify-content:space-between;padding:15px 0;border-bottom:1px solid var(--line);text-align:left}#vocabList small{color:#84917d}.storage-note{font-size:10px;color:#98a18f;margin-top:24px}.hidden{visibility:hidden}@media(min-width:1450px){.art{height:490px}}@media(max-width:760px){header{padding:0 20px;height:83px}.brand{font-size:20px;gap:8px}.brand-mark{width:35px;height:39px;font-size:22px;line-height:37px}.brand small{font-size:8px}nav{gap:18px;font-size:11px}.demo-tag{display:none}main{padding:0 15px}.intro{padding:28px 3px;gap:12px}h1{font-size:29px;letter-spacing:1px}.eyebrow{font-size:10px;letter-spacing:1px}.lead{font-size:11px;line-height:1.9;max-width:310px}.ticket{display:none}.scene-heading{padding:14px}.scene-heading h2{font-size:13px}h2 small{display:none}.art{height:350px}.art img{object-position:57% center}.scene-help{top:63px;font-size:10px}.location{top:15px;left:14px;font-size:10px}.dialogue{margin:-26px 10px 0;padding:18px 17px}.speech-row{gap:12px}#jp{font-size:20px}.sound{height:45px;width:45px}.choices{flex-direction:column}.choices .start{max-width:none}.choices button{padding:12px}.practice-foot{padding:17px;display:block}#steps{margin-top:13px;gap:9px;justify-content:center}.below{display:block;padding:26px 5px}.next{margin-top:22px;padding:16px 0 0;border-left:0;border-top:1px solid var(--line)}footer{margin:0 20px;padding:20px 0;font-size:9px}.footer-jp{display:none}.barista{left:60%}.cup{left:21%}.menu{left:85%}.hot-label{font-size:10px}.pin{width:33px;height:33px}.dialogue-tools{gap:13px}.practice-foot>span{justify-content:center}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* Keep the interactive props inside the illustrated viewport. */
.art{height:550px}.art img{object-position:center 60%}.barista{left:70%;top:38%}.cup{left:15%;top:84%}.menu{left:86%;top:84%}@media(max-width:760px){.art{height:auto;aspect-ratio:3/2}.art img{position:absolute;inset:0;object-position:center}.barista{left:70%;top:43%}.cup{left:15%;top:79%}.menu{left:86%;top:79%}.scene-help{top:50px}.location{font-size:9px;padding:6px 10px}.hot-label{font-size:9px}.pin{width:29px;height:29px;font-size:17px}}
/* A quieter palette, with the illustrated scene as a soft focal point. */
:root{--ink:#4d635b;--green:#6d8c7e;--paper:#fafbf7;--muted:#89988f;--line:#e5eae1;--yellow:#e6dcbb}
.brand-mark{background:#8fa99a}.ticket{background:#f1f4eb;border-color:#d6decd}.practice{box-shadow:0 10px 28px #516b4205}.art img{filter:saturate(.62) brightness(1.1) contrast(.89)}.art:after{content:'';position:absolute;inset:0;background:#f6f8ed0e;pointer-events:none}.scene-help{background:#6b8276d9}.location{background:#fffffff2;color:#688073}.dialogue{background:#fffffb;border-color:#e0e7d9;box-shadow:0 -4px 25px #57734c08}.speaker{background:#819c8c}.choices .start,.primary{background:#789483}.choices .start:hover,.primary:hover{background:#647f6e}.barista .pin{background:#8ca594}.choices button{background:#f9fbf5;border-color:#e0e6d9}.sound{background:#f2f5ec;border-color:#e3e9dc}.hot-label{background:#fffff5ed}.journey{padding:28px 3px 38px;border-top:1px solid var(--line)}.journey-title{display:flex;justify-content:space-between;align-items:end;margin-bottom:22px;gap:20px}.journey-title h2{font-family:'Noto Serif JP',serif;font-size:23px;letter-spacing:1px}.journey-title>span{color:#8d9a8d;font-size:11px}.journey-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0 30px}.journey-item{display:flex;gap:16px;padding:22px 0;border-bottom:1px solid var(--line);color:inherit;text-decoration:none}.journey-index{font-family:'Noto Serif JP',serif;font-size:23px;color:#bdcbbb;line-height:1.4}.journey-item h3{font-weight:500;font-size:14px;margin:0 0 7px}.journey-item p{font-size:11px;margin:0 0 7px;color:#869780}.journey-item small{font-family:'Noto Serif JP',serif;font-size:11px;color:#9da995}.journey-item b{font-size:9px;font-weight:400;background:#e8efe2;color:#6c8767;border-radius:4px;margin-left:8px;padding:3px 6px}.available:hover{background:#f0f5e9}.journey-note{font-size:10px;color:#8e9b87;margin-top:20px}@media(max-width:760px){.journey-title{display:block}.journey-title>span{display:block;margin-top:12px}.journey-title h2{font-size:21px}.journey-grid{grid-template-columns:1fr 1fr;gap:0 18px}.journey-item{gap:10px}.journey-item h3{font-size:12px}.journey-item p,.journey-item small{font-size:10px}.journey-index{font-size:20px}.journey-item b{display:block;width:max-content;margin:6px 0}.journey-item{padding:19px 0}}@media(max-width:370px){.journey-grid{grid-template-columns:1fr}}

