@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700;800&family=Noto+Serif+SC:wght@600;700;800&display=swap');
:root{--paper:#f7f5ef;--white:#fffefa;--ink:#233d37;--muted:#78827a;--teal:#337363;--line:#e2e4d8;--light:#e8efe4;--coral:#d68166;--gold:#d6b364;--shadow:0 16px 50px #344b3910}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'Noto Sans SC',system-ui,sans-serif;font-size:15px;line-height:1.65}button,input,select{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;border:0;background:transparent;color:inherit}button:disabled{cursor:default;opacity:.45}a{color:var(--teal);text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #ce9a45;outline-offset:4px}button:hover:not(:disabled){filter:brightness(.97)}.wrap{max-width:1180px;margin:auto;padding:0 38px}.header{height:88px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:20px}.brand{display:flex;align-items:center;gap:11px;font-weight:800;font-size:17px;white-space:nowrap}.brandmark{width:34px;height:38px;border:2px solid var(--teal);border-radius:15px 15px 10px 10px;display:grid;place-items:center;color:var(--teal);font-size:23px;line-height:1}.nav{display:flex;gap:28px;align-items:center}.nav button{padding:9px 0;font-size:14px;color:var(--muted);position:relative}.nav button.active{color:var(--teal);font-weight:700}.nav button.active:after{content:'';position:absolute;bottom:0;left:25%;width:50%;height:3px;background:var(--teal);border-radius:3px}.save-label{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:6px}.dot{width:6px;height:6px;background:var(--teal);border-radius:50%}.hero{padding:57px 0 32px;display:grid;grid-template-columns:1fr 1.1fr;align-items:center;gap:20px}.eyebrow{font-size:11px;letter-spacing:2px;font-weight:700;color:var(--teal);display:flex;align-items:center;gap:9px}.eyebrow:before{content:'';width:21px;height:1px;background:var(--teal)}h1,h2,h3,p{margin:0}h1{font-family:'Noto Serif SC',serif;font-size:48px;line-height:1.5;font-weight:800;letter-spacing:1px;margin:15px 0}h1 em{font-style:normal;color:var(--teal);position:relative}h1 em:after{content:'';position:absolute;left:0;right:0;bottom:-2px;height:6px;background:#d9e2b9;border-radius:50%;z-index:-1}.hero p{font-size:14px;color:var(--muted);line-height:1.95}.hero svg{width:100%;border-radius:110px 110px 22px 22px;transform:rotate(-1deg)}.hero-actions{display:flex;gap:14px;align-items:center;margin-top:27px}.btn{display:inline-flex;gap:15px;align-items:center;justify-content:center;padding:12px 22px;border-radius:10px;font-size:14px;font-weight:600;min-height:46px;background:var(--teal);color:white}.btn.secondary{background:#e9eee4;color:var(--teal)}.btn.outline{background:transparent;border:1px solid var(--line);color:var(--ink)}.btn.small{padding:8px 14px;min-height:40px;font-size:12px}.quiet{color:var(--muted);font-size:12px}.statsbar{background:var(--white);border:1px solid var(--line);border-radius:15px;display:grid;grid-template-columns:1fr 1fr 1fr 1.6fr;margin:20px 0 40px;padding:21px 25px;align-items:center}.stat{padding:0 25px;border-right:1px solid var(--line)}.stat:first-child{padding-left:0}.stat strong{font-size:25px;font-weight:600;letter-spacing:-1px}.stat span{font-size:12px;color:var(--muted);margin-left:9px}.stat .unit{font-size:13px;color:var(--muted)}.today{padding-left:24px;font-size:12px}.today strong{display:block;font-size:13px;margin-top:3px}.section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:22px;gap:15px}.section-heading h2{font-family:'Noto Serif SC',serif;font-size:25px}.section-heading p{font-size:12px;color:var(--muted);margin-top:6px}.chapter-list{display:grid;grid-template-columns:repeat(3,1fr);gap:21px}.chapter{background:var(--white);border:1px solid var(--line);border-radius:15px;overflow:hidden;box-shadow:var(--shadow);transition:transform .2s}.chapter:hover{transform:translateY(-4px)}.chapter-art{position:relative;height:176px;overflow:hidden}.chapter-art svg{width:100%;height:100%;object-fit:cover;display:block}.chapter-art .ep-badge{position:absolute;top:13px;left:15px;background:#fffaf0df;border-radius:5px;padding:3px 9px;font-size:10px;letter-spacing:1px}.chapter-body{padding:21px}.chapter-meta{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--teal);margin-bottom:8px}.chapter h3{font-size:18px;font-weight:700}.chapter p{font-size:12px;color:var(--muted);margin:8px 0 20px;min-height:41px;line-height:1.8}.chapter-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:14px;border-top:1px solid var(--line);font-size:12px}.chapter-bottom button{font-size:12px;font-weight:700;color:var(--teal)}.how{margin:38px 0 45px;padding:24px 30px;background:#edeede;border:1px solid #dfe2cc;border-radius:13px;display:flex;align-items:center;justify-content:space-between;gap:20px}.how h3{font-size:15px}.how p{font-size:12px;color:#7a806b;margin-top:5px}.how-steps{display:flex;align-items:center;gap:13px;white-space:nowrap;font-size:12px}.how-steps b{font-size:17px;font-weight:400;color:#b3b79d}.footer{display:flex;justify-content:space-between;align-items:center;font-size:10px;color:var(--muted);padding:20px 0 28px;border-top:1px solid var(--line);gap:12px}.footer button{font-size:11px;color:var(--muted)}.player-top{display:flex;justify-content:space-between;align-items:center;margin:26px 0 18px;gap:20px}.back{font-size:12px;color:var(--muted);padding:9px 0}.player-top h2{font-size:18px}.player-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:24px;align-items:start}.visual-panel{position:sticky;top:22px}.scene-frame{border:1px solid var(--line);border-radius:16px;overflow:hidden;position:relative;background:#dde6d9}.scene-frame>svg{display:block;width:100%;height:auto}.scene-frame .hotspot{position:absolute;border:1px solid #fdf7e9;background:#fffaf0e8;color:#315e51;border-radius:30px;padding:7px 12px;font-size:11px;box-shadow:0 3px 15px #25463c2a;min-height:36px}.hotspot:before{content:'+';display:inline-grid;place-items:center;width:17px;height:17px;border-radius:50%;background:#367b65;color:white;margin-right:5px}.hotspot.seen{background:#dae9d9}.scene-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.chip{padding:7px 12px;border:1px solid var(--line);border-radius:7px;background:var(--white);font-size:11px;min-height:35px}.chip.selected{background:var(--teal);color:white;border-color:var(--teal)}.chip .sign-icon{width:27px;height:22px;vertical-align:middle;margin-right:6px}.scene-caption{font-size:11px;line-height:1.9;color:var(--muted);margin:13px 0}.dialogue{display:flex;gap:12px;align-items:end;padding:19px 0 7px}.avatar{width:67px;flex-shrink:0;height:82px;overflow:hidden;border-radius:30px 30px 7px 7px;background:#e7dfc8}.person{height:100%;width:100%}.speech{flex:1;background:var(--white);border:1px solid var(--line);border-radius:12px 12px 12px 2px;padding:13px 16px;font-size:13px;line-height:1.9}.speech strong{display:block;font-size:10px;color:var(--teal);margin-bottom:4px}.task-panel{background:var(--white);border:1px solid var(--line);border-radius:16px;padding:26px}.stepdots{display:flex;gap:6px;align-items:center;margin-bottom:22px}.stepdots i{height:4px;background:#e8eade;flex:1;border-radius:2px}.stepdots i.on{background:var(--teal)}.step-label{font-size:10px;color:var(--teal);letter-spacing:1.5px;margin-bottom:7px}.task-panel h3{font-size:23px;font-family:'Noto Serif SC',serif;margin-bottom:10px}.task-help{font-size:12px;color:var(--muted);line-height:1.9;margin-bottom:20px}.term{padding:0 1px;border-bottom:1px dashed #5e8b73;color:var(--teal);font-size:inherit;line-height:inherit}.task-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:23px}.skip{color:var(--muted);font-size:11px;padding:10px}.question-label{font-size:11px;color:var(--muted);margin:19px 0 9px}.options{display:grid;gap:9px}.option{border:1px solid var(--line);border-radius:10px;padding:12px 13px;display:flex;gap:10px;align-items:center;text-align:left;font-size:12px;min-height:47px;background:#fffefa}.option .letter{font-size:11px;background:#f0f0e7;min-width:23px;height:23px;border-radius:6px;display:grid;place-items:center;color:#7d887b}.option.selected{border-color:#4a8a73;background:#f0f5ec}.option.selected .letter{background:var(--teal);color:white}.option.correct{border-color:#4d8d70}.feedback{margin-top:17px;padding:15px;border-radius:10px;background:#edf2e6;font-size:12px;line-height:1.9;border:1px solid #d7e1cb}.feedback.error{background:#faf0e6;border-color:#ebd3bf}.feedback strong{display:block;font-size:13px;margin-bottom:3px}.match-row{border:1px solid var(--line);padding:13px;border-radius:9px;margin-top:10px;display:grid;gap:8px;font-size:12px}.match-row select{padding:10px;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:6px;max-width:100%;width:100%;font-size:12px}.evidence-list{display:grid;gap:10px}.evidence-card{padding:14px;border:1px solid var(--line);border-radius:10px;font-size:12px;background:#f7f8f0}.evidence-card strong{display:block;color:var(--teal);margin-bottom:4px}.report{max-width:780px;margin:45px auto}.report-head{text-align:center;margin-bottom:27px}.report-head h1{font-size:33px}.success-stamp{width:65px;height:65px;border-radius:50%;display:grid;place-items:center;margin:0 auto 12px;background:#dce9d9;color:var(--teal);font-size:29px}.report-card{background:var(--white);border:1px solid var(--line);border-radius:15px;padding:25px;margin-bottom:20px}.objective-row{display:flex;justify-content:space-between;align-items:center;padding:15px 0;border-bottom:1px solid var(--line);gap:15px;font-size:13px}.objective-row:last-child{border:0}.status{font-size:10px;padding:4px 8px;border-radius:5px;background:#edf1e6;color:var(--teal);white-space:nowrap}.status.warm{background:#f6ecda;color:#987a3f}.catalog{padding:38px 0}.catalog h1{font-size:32px}.search{width:100%;padding:13px 17px;border:1px solid var(--line);border-radius:10px;background:var(--white);margin:24px 0;color:var(--ink)}.concept-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.concept-tile{text-align:left;border:1px solid var(--line);border-radius:12px;background:var(--white);padding:20px;display:flex;gap:13px;align-items:center;min-height:112px}.concept-tile h3{font-size:14px}.concept-tile p{font-size:11px;color:var(--muted);margin-top:5px}.sign-icon{width:43px;height:39px;flex-shrink:0}.modal-shade{position:fixed;inset:0;background:#18372d6b;backdrop-filter:blur(5px);z-index:50;display:flex;align-items:center;justify-content:center;padding:22px}.modal{max-width:560px;width:100%;max-height:90dvh;overflow:auto;background:var(--paper);border-radius:20px;padding:28px;box-shadow:0 20px 80px #142e353a}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:20px}.modal-head h2{font-size:23px;font-family:'Noto Serif SC',serif}.close{border:1px solid var(--line);border-radius:50%;width:38px;height:38px;flex-shrink:0;font-size:20px}.concept-visual{margin:20px 0 15px;border-radius:12px;overflow:hidden}.concept-visual svg{width:100%;display:block}.concept-summary{font-size:18px;line-height:1.8}.concept-detail{font-size:13px;margin-top:16px;color:#627366;line-height:2}.confusion{background:#ecebdc;padding:15px;border-radius:9px;font-size:12px;line-height:1.9;margin-top:16px}.related{display:flex;gap:8px;flex-wrap:wrap;margin-top:13px}.source-link{font-size:11px;display:block;margin-top:18px;text-decoration:underline}.modal .scene-toolbar{margin-top:0}.review-intro{max-width:800px;margin:40px auto}.empty{padding:40px;text-align:center;border:1px dashed #cdd8c6;border-radius:15px;background:#f0f2e7}.page-title{font-size:30px;font-family:'Noto Serif SC',serif;margin:12px 0}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:18px 0;border-bottom:1px solid var(--line);gap:18px;font-size:13px}.settings-row input{width:20px;height:20px;accent-color:var(--teal)}.source-item{padding:14px 0;border-bottom:1px solid var(--line);font-size:12px}.source-item p{color:var(--muted);font-size:11px;margin:4px 0}.saved-note{font-size:10px;color:var(--muted);margin-top:12px}.banner{padding:12px 18px;border-radius:9px;background:#f8e8d8;font-size:12px;margin-top:15px}#toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);border-radius:10px;background:#254e43;color:#fff9ed;padding:12px 22px;z-index:100;font-size:12px;display:none}.blink{animation:blink 1.1s infinite}.modal-open .blink{animation-play-state:paused}.reduced *{animation:none!important;transition:none!important}@keyframes blink{0%,45%{opacity:1}50%,95%{opacity:.25}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}@media(max-width:900px){.wrap{padding:0 24px}.save-label{display:none}.hero{gap:0;padding-top:34px}h1{font-size:36px}.statsbar{padding:18px}.stat{padding:0 16px}.stat span{display:block;margin:0}.today{padding-left:16px}.chapter-list{gap:13px}.chapter-body{padding:15px}.chapter-art{height:145px}.chapter h3{font-size:15px}.how{padding:22px}.how-steps{gap:7px;font-size:10px}.player-grid{grid-template-columns:1fr 1fr;gap:15px}.task-panel{padding:20px}.task-panel h3{font-size:20px}.concept-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:620px){.wrap{padding:0 19px}.header{height:72px;gap:10px;flex-wrap:wrap;align-content:center}.brand{font-size:13px;gap:7px}.brandmark{width:27px;height:30px;font-size:20px}.nav{gap:14px}.nav button{font-size:11px}.hero{grid-template-columns:1fr;padding-top:28px;gap:26px}.hero-copy{text-align:left}.eyebrow{font-size:9px}h1{font-size:35px;line-height:1.5;margin:11px 0}.hero p{font-size:12px}.hero-art{padding:0 8px}.hero svg{border-radius:70px 70px 15px 15px}.hero-actions{margin-top:20px}.hero-art svg{max-height:245px}.statsbar{grid-template-columns:repeat(3,1fr);gap:0;margin:5px 0 30px;padding:18px}.stat{padding:0 12px}.stat:nth-child(3){border:0}.stat strong{font-size:23px}.stat span{font-size:10px}.today{grid-column:1/-1;border-top:1px solid var(--line);margin-top:14px;padding:13px 0 0;font-size:10px;display:flex;gap:9px;align-items:center}.today strong{font-size:11px;margin:0}.section-heading h2{font-size:22px}.section-heading .quiet{display:none}.chapter-list{grid-template-columns:1fr;gap:18px}.chapter-art{height:180px}.chapter h3{font-size:19px}.chapter-body{padding:20px}.chapter p{min-height:0;margin-bottom:15px}.how{display:block;margin:27px 0}.how-steps{margin-top:18px;font-size:11px;justify-content:space-between}.footer{font-size:9px;align-items:start;flex-wrap:wrap}.player-top{margin:17px 0 12px;gap:10px}.player-top h2{font-size:14px}.player-top .quiet{font-size:10px}.player-grid{grid-template-columns:1fr;gap:14px}.visual-panel{position:static}.scene-frame{border-radius:12px}.scene-caption{font-size:10px;margin:8px 0}.scene-toolbar{margin:9px 0}.dialogue{padding-top:7px}.avatar{width:49px;height:65px}.speech{font-size:12px;padding:10px 13px}.task-panel{padding:21px;border-radius:13px}.stepdots{margin-bottom:15px}.task-panel h3{font-size:22px}.task-help{margin-bottom:15px}.task-actions .btn{flex:1}.hotspot{font-size:9px!important;padding:3px 7px!important;min-height:30px!important}.hotspot:before{width:13px;height:13px;font-size:10px}.concept-grid{grid-template-columns:1fr}.catalog{padding-top:25px}.catalog h1{font-size:28px}.modal-shade{align-items:end;padding:0}.modal{max-height:90dvh;border-radius:20px 20px 0 0;padding:23px;padding-bottom:32px}.modal-head h2{font-size:21px}.concept-summary{font-size:16px}.report{margin:25px auto}.report-head h1{font-size:26px}.report-card{padding:20px}.concept-visual{margin-top:14px}.page-title{font-size:27px}}
@media(max-width:620px){.task-help,.option,.match-row,.evidence-card,.speech,.concept-detail{font-size:14px}.task-panel{line-height:1.8}.hero p{font-size:14px}.hotspot{min-height:44px!important}.speech strong{font-size:11px}.chapter p{font-size:13px}}
/* v1.1 · interactive story stage */
.in-story{background:#f1f2e9}.in-story .header{height:75px}.game-top{margin:23px 0 18px}.game-top>div{text-align:center}.game-season{font-size:9px;letter-spacing:2px;color:var(--teal)}.game-top h2{font-family:'Noto Serif SC',serif;font-size:23px;margin-top:4px}.game-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(315px,1fr);gap:24px;align-items:start}.game-stage-column{min-width:0}.cinematic-stage{position:relative;border-radius:17px;overflow:hidden;background:#b5d0c3;isolation:isolate;aspect-ratio:1.64;border:1px solid #9ab6a3;box-shadow:0 12px 35px #21423812}.stage-art{position:absolute;inset:0;overflow:hidden}.stage-art>svg{width:100%;height:100%;display:block;object-fit:cover;transition:filter .4s}.stage-grain{position:absolute;inset:0;background:linear-gradient(0deg,#15352b8c 0%,transparent 45%,#1c40341a 100%);pointer-events:none}.stage-caption{position:absolute;top:17px;left:18px;right:18px;display:flex;justify-content:space-between;align-items:center;font-size:10px;color:#fff8e9;text-shadow:0 1px 7px #1f3b30;letter-spacing:.5px;z-index:3}.stage-caption>span:first-child{background:#244b3de6;padding:5px 11px;border-radius:6px}.stage-letterbox{position:absolute;top:58px;left:20px;right:18px;display:flex;justify-content:space-between;align-items:center;color:#fff7e6;font-size:8px;letter-spacing:1px;z-index:4}.stage-replay{font-size:10px;padding:5px 9px;background:#244b3dc2;color:#fff8e5;border-radius:20px;letter-spacing:0}.actor{position:absolute;bottom:27px;width:26%;height:76%;transition:opacity .3s,filter .3s,transform .3s;z-index:2;opacity:.8;filter:saturate(.65);pointer-events:none}.actor-left{left:2%}.actor-right{right:2%}.actor.active{opacity:1;filter:none;transform:translateY(-3px)}.vn-portrait{width:100%;height:100%;filter:drop-shadow(0 7px 5px #193d3430)}.actor>span{position:absolute;bottom:3px;left:25%;right:25%;text-align:center;font-size:9px;background:#264c3d;color:#f8edce;padding:3px;border-radius:20px}.task-view .actor{width:18%;height:52%;opacity:.8;bottom:26px}.task-view .actor-left{left:-2%}.task-view .actor-right{right:-2%}.task-view .stage-art{left:4%;right:4%;top:14%;bottom:8%;border-radius:12px}.task-view .stage-grain{background:linear-gradient(0deg,#1f4037aa,transparent 35%)}.stage-live{position:absolute;left:0;right:0;bottom:0;height:29px;background:#254c40;color:#eff2db;font-size:9px;display:flex;justify-content:center;align-items:center;gap:8px;letter-spacing:.3px}.stage-live i{height:5px;width:5px;background:#e0c889;border-radius:50%}.game-hotspots{display:flex;flex-wrap:wrap;gap:8px;margin:11px 0}.clue-button{border:1px solid #a5bc9d;padding:9px 13px;min-height:40px;font-size:12px;color:var(--teal);background:#fff9e8;border-radius:8px}.clue-button.found{background:#dce9d5}.vn-dialogue{position:relative;background:#fffdf6;border:1px solid #bcccaf;border-radius:4px 15px 15px 15px;padding:24px 23px 17px;margin-top:23px;box-shadow:0 6px 20px #35523509;min-height:145px}.speaker-tab{position:absolute;left:18px;top:-15px;background:#356c58;color:#fff9e4;padding:5px 16px;border-radius:6px;font-size:13px;font-weight:700;box-shadow:0 2px 4px #183e3612}.speaker-tab span{font-size:9px;font-weight:400;margin-left:11px;opacity:.7}.vn-dialogue p{font-size:16px;line-height:1.95;min-height:56px;letter-spacing:.2px}.vn-controls{display:flex;align-items:center;justify-content:flex-end;gap:13px;margin-top:16px;min-height:32px;color:var(--muted);font-size:10px}.vn-controls>span:first-child{margin-right:auto}.vn-controls button{font-size:10px;padding:7px 0}.vn-controls .next-line{background:#376b57;color:#fff7df;border-radius:6px;padding:8px 14px;font-weight:600;font-size:11px}.reply-heading{font-size:11px;margin-top:18px;display:flex;align-items:center;justify-content:space-between;color:#4a705d;gap:8px}.reply-heading span{font-size:9px;color:var(--muted)}.reply-options{display:grid;gap:9px;margin-top:9px}.reply-options button{display:flex;gap:11px;align-items:center;text-align:left;border:1px solid #cdd8bf;background:#f0f3e5;border-radius:8px;padding:11px 13px;font-size:12px;transition:background .2s,transform .2s}.reply-options button:hover{background:#e5edda;transform:translateX(3px)}.reply-options span{font-size:10px;color:#879a78}.reply-options b{font-weight:400;margin-left:auto;color:var(--teal)}.waiting-scene{text-align:center;padding:12px 0}.waiting-scene>span{font-size:42px;color:#c7ac65;line-height:1.4}.waiting-scene h4{font-size:15px;font-weight:600;margin:8px 0}.waiting-scene p{font-size:12px;line-height:1.9;color:var(--muted)}.mission-preview{text-align:left;background:#eef0e4;padding:15px;font-size:12px;margin:23px 0 16px;border-radius:9px;line-height:1.9}.mission-preview small{display:block;color:#7e916f;font-size:10px;margin-bottom:5px}.journal{margin-top:26px;border-top:1px dashed #cbd6bf;padding-top:17px}.journal>div{display:flex;justify-content:space-between;align-items:center}.journal>div>span{font-size:12px;font-weight:600;color:#8b784b}.journal small{font-size:10px;color:var(--muted)}.journal p{margin-top:10px;font-size:11px;color:#718365;line-height:1.8}.game-task{position:sticky;top:18px;padding:25px}.game-task h3{font-size:22px}.game-task .task-actions{gap:8px}.game-task .task-actions .btn{font-size:12px;padding:11px 15px}.concept-pocket{margin-top:17px;border:1px solid #d8dfcb;border-radius:9px;padding:13px 15px;background:#fbfcf4;font-size:12px}.concept-pocket summary{cursor:pointer;color:#3f6f56}.concept-pocket summary span{float:right;font-size:10px;color:var(--muted)}.concept-pocket .related{margin-top:12px}.episode-timeline{display:flex;justify-content:space-between;gap:10px;border-top:1px solid #d6dec8;margin:28px 0;padding:20px 0 0}.episode-timeline span{font-size:10px;color:#98a18c;display:flex;align-items:center;gap:7px}.episode-timeline b{width:22px;height:22px;display:grid;place-items:center;border:1px solid #ced8be;border-radius:50%;font-weight:400;font-size:10px}.episode-timeline .current{color:var(--teal);font-weight:600}.episode-timeline .current b{background:var(--teal);color:#fff8df;border-color:var(--teal)}.episode-timeline .past{color:#6d8e68}.scene-verdict{position:absolute;bottom:44px;left:50%;transform:translateX(-50%);width:max-content;max-width:76%;border-radius:7px;background:#fff8e7f2;color:#456c49;padding:9px 13px;font-size:10px;z-index:4;border:1px solid #d0dfbe;display:flex;align-items:center;gap:9px}.scene-verdict span{border:1px solid currentColor;border-radius:50%;width:18px;height:18px;display:grid;place-items:center;flex-shrink:0}.scene-verdict.wait{color:#9c7254;background:#fff4e8f5;border-color:#e2c4a1}.vn-hint{font-size:10px;color:var(--muted);display:block;margin-top:12px}.vn-dialogue.reaction{border-color:#c5d9b2;background:#f8fcee}.vn-dialogue.thoughtful{border-color:#dec6a9;background:#fff8ed}.transcript{max-height:230px;overflow:auto;padding:15px;background:#e8eddf;border:1px solid #d5dfc7;border-radius:0 0 10px 10px;font-size:12px}.transcript p{margin:7px 0;color:#62765b}.transcript strong{margin-right:12px;font-size:10px;color:#335b43}.ending-scene{background:#e1ead9;border:1px solid #cbd8be;padding:30px;border-radius:15px;display:grid;grid-template-columns:175px 1fr;gap:25px;margin-bottom:23px}.ending-portraits{display:flex;align-items:end;position:relative;min-height:190px}.ending-portraits svg{width:115px;height:190px;position:absolute;bottom:0}.ending-portraits svg:last-child{left:65px}.ending-scene h2{font-family:'Noto Serif SC',serif;font-size:24px;margin:10px 0 15px}.ending-scene p{font-size:12px;line-height:1.9;margin:6px 0;color:#60775a}.ending-badge{display:inline-flex;gap:10px;align-items:center;margin:14px 0 8px;background:#fff8df;border:1px solid #d8c88a;border-radius:7px;padding:8px 11px;font-size:12px;color:#8b743d;flex-wrap:wrap}.ending-badge small{font-size:9px;color:#9c9c7b}.ending-scene .quiet{display:block;font-size:10px}.route-fx{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}.route-fx path{fill:none;stroke:#ffe9a1;stroke-width:6;stroke-dasharray:8 5}.route-fx circle{fill:#ffea9c;fill-opacity:.2;stroke:#ffe9a1;stroke-width:3}.is-playing .stage-art{animation:scene-reveal 1.1s ease-out both}.is-playing .actor-left{animation:actor-in-left .55s ease-out both}.is-playing .actor-right{animation:actor-in-right .65s ease-out both}.is-playing .speaking .talk-mark{animation:talk-emphasis .5s ease-in-out 3}.ep1.is-playing.success .scene-car{animation:car-arrival 1.7s ease-in-out}.is-playing .route-fx path{animation:route-trace 1.7s ease-in-out}.is-playing.blocked .stage-art{animation:decision-stop .45s ease-out}.is-playing .scene-verdict{animation:verdict-in .55s .15s ease-out both}.dialogue-line{animation:line-reveal .3s ease-out}.modal-open .cinematic-stage *{animation-play-state:paused!important}.in-story .modal-shade{backdrop-filter:blur(7px)}@keyframes scene-reveal{from{opacity:.7;filter:brightness(.9)}to{opacity:1;filter:brightness(1)}}@keyframes actor-in-left{from{opacity:0;translate:-15px 0}to{opacity:1;translate:0 0}}@keyframes actor-in-right{from{opacity:0;translate:15px 0}to{opacity:1;translate:0 0}}@keyframes talk-emphasis{50%{opacity:.25}}@keyframes line-reveal{from{opacity:.35;translate:0 3px}to{opacity:1;translate:0 0}}@keyframes car-arrival{0%{translate:0 0}65%{translate:110px -24px}100%{translate:0 0}}@keyframes route-trace{from{stroke-dashoffset:100;opacity:.1}to{stroke-dashoffset:0;opacity:1}}@keyframes decision-stop{0%{translate:0 0}30%{translate:-3px 0}65%{translate:3px 0}100%{translate:0 0}}@keyframes verdict-in{from{opacity:0;translate:0 6px}to{opacity:1;translate:0 0}}@media(max-width:1000px){.game-grid{grid-template-columns:minmax(0,1.3fr) minmax(300px,1fr);gap:17px}.game-task{padding:20px}.stage-caption{font-size:9px}.actor{width:27%}.vn-dialogue p{font-size:14px}.game-top h2{font-size:20px}.episode-timeline span{font-size:9px;gap:4px}}@media(max-width:760px){.game-grid{grid-template-columns:1fr}.game-task{position:static}.cinematic-stage{aspect-ratio:1.55}.stage-caption{top:13px;left:12px;right:12px}.stage-letterbox{top:48px;left:14px;right:12px}.vn-dialogue{padding:24px 18px 15px;margin-top:21px}.vn-dialogue p{font-size:15px;line-height:1.9}.game-top{gap:8px}.game-top h2{font-size:17px}.game-top .back{font-size:10px}.game-top .chip{font-size:10px;padding:6px 8px}.game-season{font-size:8px;letter-spacing:1px}.game-grid .task-panel{padding:23px}.game-grid .task-panel h3{font-size:23px}.reply-heading{display:block}.reply-heading span{display:block;margin-top:3px}.reply-options button{font-size:13px;min-height:47px}.game-grid .task-help,.game-grid .option,.game-grid .match-row{font-size:14px}.episode-timeline{flex-wrap:wrap;justify-content:start;gap:12px}.episode-timeline span{font-size:10px}.concept-pocket summary span{float:none;margin-left:10px}.waiting-scene{padding:0}.waiting-scene>span{font-size:30px}.waiting-scene h4{margin:4px 0}.waiting-scene p{font-size:13px}.mission-preview{margin:13px 0;font-size:13px}.journal{margin-top:20px}.ending-scene{padding:23px;grid-template-columns:1fr;gap:12px}.ending-portraits{min-height:140px;justify-content:center}.ending-portraits svg{height:150px;width:105px;position:static}.ending-portraits svg:last-child{margin-left:-20px}.ending-scene h2{font-size:23px}.scene-verdict{font-size:9px;padding:7px 10px;bottom:38px}.stage-live{font-size:8px}.task-view .actor{width:20%;height:55%}.vn-controls{gap:10px}.game-grid .scene-toolbar .chip{min-height:40px}.game-hotspots .clue-button{min-height:44px;font-size:12px}.in-story .header{height:72px}}
.cinematic-stage .stage-hot{position:absolute;z-index:5;border:1px solid #f8edc5;background:#fffae9eb;color:#315c45;border-radius:20px;padding:7px 9px;font-size:10px;min-height:36px;box-shadow:0 3px 10px #244a371c}.cinematic-stage .stage-hot.seen{background:#d9ead0}.cinematic-stage .stage-hot:before{content:'+';background:#3d765e;color:white;border-radius:50%;padding:0 4px;margin-right:4px}.blocked .speed-sign{filter:drop-shadow(0 0 9px #ffe296)}.is-playing.blocked .speed-sign{animation:sign-alert .7s ease-in-out 2}.actor{opacity:.94}.task-view .actor{opacity:.78}@keyframes sign-alert{50%{filter:drop-shadow(0 0 17px #ffefab);opacity:.65}}@media(max-width:760px){.cinematic-stage .stage-hot{font-size:9px;min-height:38px;padding:5px 8px}}
/* v1.2 · expressive layered characters and recorded dialogue */
.portrait-refined{overflow:visible}.portrait-refined .character-head{transform:rotate(var(--head-angle));transform-origin:103px 158px;transition:transform .6s ease}.portrait-refined .eye-group{transform-origin:102px 92px;animation:natural-blink 6.7s infinite}.character-zhou .eye-group{animation-delay:-3.2s}.portrait-refined .mouth-talk{opacity:0;transform-origin:102px 123px}.gesture-arm{transform-origin:158px 216px;transform:rotate(12deg);transition:transform .7s cubic-bezier(.2,.65,.3,1)}.friend-hand{transform-origin:44px 218px;transform:translateY(48px) rotate(-19deg)}.mood-curious .friend-hand,.mood-surprised .friend-hand{transform:translateY(0) rotate(-8deg)}.mood-confused .friend-hand{transform:translate(8px,-27px) rotate(29deg)}.mood-smile .friend-hand{transform:translateY(20px) rotate(-7deg)}.character-zhou.mood-calm .coach-hand{transform:rotate(13deg)}.character-zhou.mood-smile .coach-hand,.character-zhou.mood-curious .coach-hand{transform:rotate(-9deg)}.actor.voice-speaking{opacity:1;filter:none}.voice-speaking .mouth-rest{opacity:0}.voice-speaking .mouth-talk{opacity:1;transform:scaleY(var(--mouth-open,.45));animation:talk-fallback .28s ease-in-out infinite alternate}.voice-meter .mouth-talk{animation:none}.voice-speaking .character-torso{animation:breath 3.5s ease-in-out infinite}.actor .vn-portrait{transition:filter .3s}.actor.voice-speaking .vn-portrait{filter:drop-shadow(0 3px 6px #183c3433)}.voice-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border-top:1px solid #e1e6d5;margin-top:14px;padding-top:11px}.voice-controls button{font-size:10px;min-height:34px;padding:6px 10px;border:1px solid #ccd8bf;border-radius:6px;background:#f3f5e9;color:#416b52}.voice-controls .voice-toggle.on{background:#3d725c;color:#fff8df;border-color:#3d725c}.voice-status{font-size:10px;color:#7e8e72;margin-right:auto}.voice-status i{display:inline-block;width:5px;height:5px;border-radius:50%;background:#c6a75b;margin-right:5px}.voice-controls select{font-size:10px;background:#f8faef;border:1px solid #d7dfc9;color:#416b52;padding:7px;border-radius:5px}.voice-controls .voice-pause{min-width:58px}.speaker-tab .voice-wave{display:none;vertical-align:middle;gap:2px;margin-left:10px}.is-voicing .voice-wave{display:inline-flex}.voice-wave i{display:inline-block;width:2px;height:9px;background:#e4d697;animation:wave .65s ease-in-out infinite}.voice-wave i:nth-child(2){animation-delay:-.2s}.voice-wave i:nth-child(3){animation-delay:-.4s}.actor>span:after{content:' · 配音中';display:none}.actor.voice-speaking>span:after{display:inline}.voice-caption{font-size:10px;color:#8b927d;line-height:1.8;padding-top:8px}.stage-caption{z-index:6}.task-view .actor{opacity:.9}.task-view .actor.voice-speaking{opacity:1}.ending-portraits .gesture-arm{display:none}@keyframes natural-blink{0%,43%,47%,100%{transform:scaleY(1)}45%{transform:scaleY(.08)}}@keyframes talk-fallback{from{transform:scaleY(.25)}to{transform:scaleY(.85)}}@keyframes breath{50%{transform:translateY(-1.2px)}}@keyframes wave{50%{height:4px}}.reduced .eye-group,.reduced .character-torso,.reduced .mouth-talk,.reduced .voice-wave i{animation:none!important}.reduced .mouth-talk{transform:scaleY(.35)!important}@media(prefers-reduced-motion:reduce){.eye-group,.character-torso,.mouth-talk,.voice-wave i{animation:none!important}}@media(max-width:760px){.voice-controls{gap:6px}.voice-controls button{min-height:40px;font-size:11px}.voice-controls select{font-size:11px;min-height:40px}.voice-status{width:100%;font-size:11px}.voice-caption{font-size:10px}.actor{width:29%}.task-view .actor{width:21%}.vn-dialogue p{font-size:16px}}
.dialogue-audio-bar{background:#edf2e4;border:1px solid #d4dfc6;border-top:0;margin-top:-7px;padding:7px 17px 12px;border-radius:0 0 12px 12px}.dialogue-audio-bar .voice-controls{border:0;margin-top:0;padding-top:5px}.dialogue-audio-bar .voice-caption{font-size:10px;padding-top:4px}.vn-dialogue .voice-wave{display:none}.is-voicing .speaker-tab .voice-wave{display:inline-flex}.modal .settings-row:has([data-voice-volume]){align-items:center}
@media(max-width:760px){.cinematic-stage .stage-caption>span:last-child{display:none}.cinematic-stage .stage-letterbox>span{display:none}.cinematic-stage .stage-replay{position:absolute;right:0;top:-35px}.cinematic-stage .stage-letterbox{z-index:7}}
/* Season one, chapters 1–3: shares the prologue's typography and palette. */
.season-hero{padding-bottom:25px}.season-note{font-size:12px;line-height:1.8;padding:15px 20px;background:#eeeadd;border-radius:12px;color:#63756b}.season-chapter{margin:55px 0}.season-lessons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:25px}.season-lesson{background:var(--paper,#fffaf0);border:1px solid #dedfce;border-radius:20px;overflow:hidden;min-width:0}.lesson-art{position:relative;aspect-ratio:800/330;overflow:hidden;background:#dbe5d7}.lesson-art>svg{width:100%;height:100%;object-fit:cover}.lesson-body{padding:24px}.lesson-body h3{font-size:23px;margin:12px 0}.lesson-body>p{font-size:13px;line-height:1.9;color:#6d7b71;min-height:50px}.lesson-body .quiet{font-size:10px}.season-prologue{margin:45px 0}.season-prologue-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.season-prologue-grid .report-card{margin:0}.season-prologue-grid p{font-size:12px;line-height:1.8;color:#6b796e}.season-stage{position:relative;aspect-ratio:800/440;overflow:hidden;border-radius:18px;background:#dbe5d7;border:1px solid #d8dccb}.season-stage .stage-art{position:absolute;inset:0}.season-stage .stage-art>svg{width:100%;height:100%;display:block}.season-actors{position:absolute;inset:0;pointer-events:none;display:flex;justify-content:space-between;align-items:flex-end;padding:0 6%;opacity:.95}.season-actor{width:24%;height:60%;filter:saturate(.65);transform:translateY(9%);transition:filter .3s,transform .3s}.season-actor.active{filter:saturate(1);transform:translateY(4%)}.season-actor .vn-portrait{width:100%;height:100%;display:block;overflow:visible}.season-stage-label{position:absolute;left:28%;right:28%;bottom:13px;background:#fff7e5e8;border:1px solid #d4d9c9;text-align:center;border-radius:20px;padding:7px;font-size:11px;color:#345b4d}.season-goals{padding:12px 0}.season-goals p{font-size:13px;line-height:1.8}.season-goals b{color:#b58c49;margin-right:8px}.season-clue{display:flex;width:100%;gap:12px;text-align:left;padding:14px;background:#f9f5e9;border:1px solid #dfdfce;border-radius:12px;margin:10px 0;color:#335648;align-items:center}.season-clue div{flex:1}.season-clue small{display:block;font-size:11px;line-height:1.8;font-weight:400;margin-top:4px;color:#6e7e70}.season-clue.found{border-color:#8caa92;background:#eef1df}.season-question{font-size:16px;line-height:1.9;padding:12px 0}.season-player .option{font-size:12px;line-height:1.7}.season-player .option:disabled{opacity:.9;cursor:default}.season-player .task-panel{align-self:start}.season-player .feedback p{font-size:12px;line-height:1.9;margin:8px 0 0}.season-card-visual{display:flex;justify-content:center;background:#edf0df;border-radius:16px;margin:12px 0}.season-card-visual svg{width:140px;height:140px}.season-audio-status{font-size:11px;color:#6d7b68;min-height:18px;margin-top:8px}.concept-tile>svg{width:62px;height:62px;flex-shrink:0}.season-prologue>summary{cursor:pointer;padding:20px;border:1px solid #d9dfca;border-radius:12px}.season-talking .mouth-rest{display:none}.season-talking .mouth-talk{display:block;animation:season-mouth .2s infinite alternate;transform-origin:100px 125px}.season-talking .character-head{animation:season-nod 1.5s infinite alternate}@keyframes season-mouth{from{transform:scaleY(.45)}to{transform:scaleY(1)}}@keyframes season-nod{to{transform:rotate(1deg)}}.reduced .season-talking *{animation:none!important}@media(prefers-reduced-motion:reduce){.season-talking *{animation:none!important}.season-actor{transition:none}}
@media(max-width:760px){.season-lessons,.season-prologue-grid{grid-template-columns:1fr}.season-chapter{margin:35px 0}.season-hero h1{font-size:39px}.lesson-body{padding:20px}.season-lesson .chapter-bottom{gap:12px}.season-stage-label{left:25%;right:25%;font-size:9px;padding:5px}.season-player{grid-template-columns:1fr}.season-player .task-panel{width:100%;box-sizing:border-box}.season-player .vn-controls{flex-wrap:wrap}.season-player .task-actions{flex-wrap:wrap}.season-goals p{margin:8px 0}.season-player .option{font-size:13px}.season-prologue-grid .report-card{padding:22px}.season-player main{min-width:0}}
/* Five-act game layer for chapters four to six. */
.rich-stage .stage-caption{top:10px;left:15px;right:15px;font-size:10px}.rich-stage .stage-caption>span{visibility:hidden}.rich-stage .stage-replay{background:#fff5dddb;color:#355c4c;border-radius:14px;padding:6px 9px}.rich-stage .season-actor{width:21%;height:55%;transform:translateY(9%)}.rich-stage .season-actor.active{transform:translateY(3%);filter:drop-shadow(0 5px 5px #264c3325)}.rich-stage .season-stage-label{left:26%;right:26%;bottom:10px}.rich-stage .stage-art{animation:rich-arrive .65s ease-out}.rich-dialogue .reply-options button{font-size:12px;line-height:1.8}.rich-dialogue .reply-heading{display:flex;flex-wrap:wrap;gap:5px}.rich-player .mission-preview{padding:18px;background:#f0eddf;border-radius:12px;line-height:1.9;margin:18px 0}.rich-player .mission-preview small{display:block;color:#85917b;font-size:10px}.rich-player .journal{margin-top:22px}.rich-player .journal p{font-size:11px}.rich-stage .rich-document{transform-box:fill-box;transform-origin:center;animation:rich-paper-in .65s both}.rich-stage .doc-1{animation-delay:.1s}.rich-stage .doc-2{animation-delay:.2s}.rich-stage .doc-3{animation-delay:.3s}.rich-stage .rich-stamp{stroke-dasharray:60;stroke-dashoffset:60;animation:rich-stamp 1s .8s forwards}.rich-stage .rich-road-dashes{animation:rich-road 2.5s linear infinite}.rich-stage .rich-frontcar{animation:rich-front 4s ease-in-out infinite alternate}.rich-stage .rich-route{stroke-dasharray:400;stroke-dashoffset:400;animation:rich-path 2s .5s forwards}.rich-stage .rich-fog{animation:rich-mist 5s ease-in-out infinite alternate}.rich-stage .rich-warning-flash{animation:rich-warning 1.25s step-end infinite}.rich-stage .rich-evac-path{stroke-dasharray:500;stroke-dashoffset:500;animation:rich-path 2.5s .4s forwards}.rich-stage .rich-phone{animation:rich-phone 2.3s ease-in-out infinite;transform-origin:center;transform-box:fill-box}.rich-stage .rich-calendar{animation:rich-calendar .8s ease-out}.rich-stage .rich-transfer{stroke-dasharray:430;stroke-dashoffset:430;animation:rich-path 1.5s .6s forwards}.rich-stage.verdict-ok .rich-owncar{animation:rich-safe-move 1.3s forwards}.rich-stage.verdict-wait .stage-art{animation:none}.rich-stage.verdict-wait .stage-art *{animation-play-state:paused!important}.rich-stage.verdict-wait{box-shadow:inset 0 0 0 3px #c9896f}.rich-stage.verdict-ok{box-shadow:inset 0 0 0 3px #769e77}.rich-stage.condition-changed .stage-art{animation:rich-condition .7s ease-out}.rich-stage.breakdown .rich-road-dashes,.rich-stage.collision .rich-road-dashes{animation:none}.rich-player .scene-verdict{font-size:12px;bottom:43%;left:20%;right:20%;max-width:60%}.rich-player .term{font-size:inherit;line-height:inherit}.rich-player .vn-controls{flex-wrap:wrap;gap:9px}.rich-player .transcript p{font-size:12px;line-height:1.8}.rich-player .transcript strong{margin-right:10px}
@keyframes rich-arrive{from{opacity:.2;transform:scale(1.035)}to{opacity:1;transform:scale(1)}}@keyframes rich-paper-in{from{opacity:0;translate:0 25px;rotate:-4deg}to{opacity:1;translate:0 0;rotate:0deg}}@keyframes rich-stamp{to{stroke-dashoffset:0}}@keyframes rich-road{to{stroke-dashoffset:-120}}@keyframes rich-front{to{translate:45px 0}}@keyframes rich-path{to{stroke-dashoffset:0}}@keyframes rich-mist{to{translate:-25px 5px}}@keyframes rich-warning{50%{opacity:.25}}@keyframes rich-phone{0%,80%,100%{rotate:0deg}84%,92%{rotate:3deg}88%,96%{rotate:-3deg}}@keyframes rich-calendar{from{opacity:0;rotate:-7deg;translate:0 -15px}to{opacity:1;rotate:0deg;translate:0 0}}@keyframes rich-safe-move{to{translate:50px 0}}@keyframes rich-condition{0%{filter:brightness(1)}50%{filter:brightness(1.15)}100%{filter:brightness(1)}}
.reduced .rich-stage *{animation:none!important;transition:none!important;stroke-dashoffset:0!important}.reduced .rich-document{opacity:1!important}.reduced .rich-stage .rich-stamp,.reduced .rich-stage .rich-evac-path,.reduced .rich-stage .rich-route,.reduced .rich-stage .rich-transfer{stroke-dasharray:none!important}@media(prefers-reduced-motion:reduce){.rich-stage *{animation:none!important;transition:none!important;stroke-dashoffset:0!important}.rich-stage .rich-stamp,.rich-stage .rich-evac-path,.rich-stage .rich-route,.rich-stage .rich-transfer{stroke-dasharray:none!important}.rich-stage .rich-document{opacity:1!important}}
@media(max-width:760px){.rich-player .scene-verdict{font-size:9px;left:15%;right:15%;max-width:70%;padding:7px}.rich-player .reply-options{grid-template-columns:1fr}.rich-stage .stage-caption{font-size:8px;top:5px;right:5px;left:5px}.rich-stage .stage-replay{padding:4px 6px;font-size:8px}.rich-stage .season-stage-label{font-size:8px;left:24%;right:24%;padding:4px}.rich-player .vn-controls{font-size:10px}.rich-player .ending-scene{grid-template-columns:1fr}}
.rich-stage .stage-art{opacity:1}.rich-echo{font-size:11px!important;line-height:1.8!important;background:#f0eddc;border-left:3px solid #b5aa79;padding:9px 12px;border-radius:5px;color:#73816a;margin:0 0 13px!important}
.season-chapter-jumps{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0}.season-chapter-jumps a{font-size:11px;color:#466e58;background:#edf0e1;border:1px solid #d4dcc4;border-radius:18px;padding:9px 13px;text-decoration:none}.season-chapter-jumps a:hover{background:#dce6cd}.season-chapter{scroll-margin-top:20px}
/* Knowledge illustrations: actual sign assets keep their original colours and aspect ratio. */
.concept-thumb{width:68px;min-width:68px;height:64px;display:flex;align-items:center;justify-content:center;gap:4px;overflow:hidden}.concept-thumb .topic-icon{width:46px;height:46px}.concept-thumb figure{margin:0}.concept-thumb .sign-example img{width:58px;height:58px}.concept-thumb figcaption{display:none}.concept-thumb>.sign-icon{width:64px;height:54px}.mini-signs img{width:29px;height:38px;object-fit:contain}.mini-signs:has(img:nth-child(3)) img{width:21px}.topic-icon{display:block;width:70px;height:70px;object-fit:contain}.concept-visual,.season-card-visual{display:block;background:#edf1e8;overflow:hidden;border-radius:16px}.season-card-visual{padding:18px}.meaning-examples{display:grid;grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:16px;padding:20px 14px;background:#fffefa;border:1px solid #dce2d5;border-radius:12px}.sign-example{margin:0;text-align:center;min-width:0}.sign-example img{display:block;width:132px;height:132px;object-fit:contain;margin:0 auto 12px}.sign-example figcaption{font-size:15px;line-height:1.7}.sign-example figcaption strong{display:block}.sign-example figcaption span{display:block;font-size:13px;color:#4d6154;margin-top:6px}.art-note{padding:12px 16px;font-size:13px;line-height:1.8;color:#3c574b}.art-source{display:block;font-size:11px;padding:0 16px 15px;text-decoration:underline}.art-scene>svg,.season-card-visual .art-scene>svg{display:block;width:100%;height:auto}.symbol-focus{display:flex;gap:15px;padding:12px 18px;align-items:center}.symbol-focus>.sign-icon{width:64px;height:60px;flex-shrink:0}.symbol-focus p{font-size:13px}.meaning-facts{margin:8px 0;padding:0 16px}.meaning-facts>div{display:grid;grid-template-columns:minmax(100px,1fr) minmax(0,1.5fr);gap:12px;padding:12px 0;border-bottom:1px solid #d3ddcd}.meaning-facts dt{font-weight:700;font-size:14px}.meaning-facts dd{margin:0;font-size:14px;color:#365247}.topic-art{display:flex;align-items:center;gap:22px;padding:14px}.topic-art strong{display:block;font-size:21px}.topic-art span:not(.concept-thumb){display:block;font-size:12px;margin-top:5px}.road-comparison,.light-comparison,.gesture-examples{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:14px}.road-comparison figure,.light-comparison figure,.gesture-example{margin:0;min-width:0}.road-comparison svg{display:block;width:100%;height:auto}.light-comparison svg,.season-card-visual .light-comparison svg{width:95px;height:85px;display:block;margin:10px auto}.light-comparison .topic-icon{margin:12px auto}.road-comparison figcaption,.light-comparison figcaption,.gesture-example figcaption{font-size:13px;line-height:1.7;text-align:center}.visibility-condition{font-size:22px;text-align:center;padding:15px;font-weight:750}.season-card-visual>.topic-icon{margin:8px auto}.gesture-examples{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.gesture-frame{height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#fffefa;border-radius:10px}.gesture-frame span{font-size:12px;margin-top:15px}.gesture-image{max-width:100%;height:200px;object-fit:contain}.gesture-example button{display:block;margin:10px auto;min-height:44px}.modal .concept-summary{line-height:1.75}.concept-tile{min-width:0}.concept-tile>div{min-width:0}.art-scene svg[role=img]{max-width:100%}@media(max-width:600px){.meaning-examples{gap:12px;padding:16px 10px;grid-template-columns:repeat(2,minmax(0,1fr))}.meaning-examples:has(figure:nth-child(3)){grid-template-columns:repeat(3,minmax(0,1fr))}.sign-example img{width:100%;max-width:114px;height:114px}.sign-example figcaption{font-size:14px}.sign-example figcaption span{font-size:12px}.season-card-visual{padding:12px}.meaning-facts{padding:0 8px}.meaning-facts>div{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:8px}.meaning-facts dt,.meaning-facts dd{font-size:13px}.road-comparison{grid-template-columns:1fr}.topic-art{gap:14px;padding:10px}.topic-art strong{font-size:18px}.symbol-focus{padding:10px}.art-note{padding:12px;font-size:13px}}
.exact-symbol{display:flex;justify-content:center;padding:16px}.exact-symbol svg,.season-card-visual .exact-symbol svg{width:150px;height:150px}.light-comparison .fog-symbol{width:85px;height:85px;object-fit:contain;display:block;margin:10px auto}.road-photo-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.road-photo-pair figure{margin:0;background:#fffefa;border:1px solid #dce2d5;border-radius:10px;overflow:hidden}.road-photo-pair img{width:100%;height:170px;object-fit:contain;display:block;background:white}.road-photo-pair figcaption{padding:12px;font-size:14px}.road-photo-pair figcaption strong,.road-photo-pair figcaption span{display:block}.road-photo-pair figcaption span{font-size:13px;margin-top:5px;color:#3b574a}@media(max-width:600px){.road-photo-pair{grid-template-columns:1fr}.road-photo-pair img{height:180px}}
.sign-example img[src*="pedestrian-crossing"]{width:min(100%,300px);height:150px}
.concept-thumb>svg{width:62px;height:62px;flex-shrink:0}
/* v3.2: short learning routes, honest assessment and local progress recovery. */
.learning-welcome{padding:48px 0 20px}.learning-welcome h1{font-size:43px;margin:12px 0}.learning-welcome h1 em{font-style:normal;color:var(--teal)}.learning-welcome>p{color:#53675b;font-size:15px}.learning-routes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:27px 0}.learning-routes article,.recommend-grid article{background:var(--white);border:1px solid var(--line);border-radius:17px;padding:24px;min-width:0;display:flex;flex-direction:column;align-items:flex-start}.route-number{font-size:12px;letter-spacing:1px;color:#52735d}.learning-routes h2{font-size:22px;margin:12px 0}.learning-routes p{font-size:14px;line-height:1.85;color:#56675b;flex:1;margin-bottom:22px}.resume-strip{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 25px;margin-top:24px;background:#e5ede0;border:1px solid #cbdcc6;border-radius:15px}.resume-strip small,.resume-strip strong{display:block}.resume-strip small{font-size:12px;color:#536a58;margin-bottom:5px}.resume-strip strong{font-size:17px}.local-save-note{font-size:13px!important;color:#52634f!important;padding:14px 0;line-height:1.8}.text-link{color:var(--teal);text-decoration:underline;min-height:44px}.learning-today{margin:20px 0 28px}.recommend-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:20px 0}.recommend-grid h3,.recommend-grid h2{font-size:20px;margin:10px 0}.recommend-grid p{font-size:14px;line-height:1.8;flex:1;color:#48614f}.recommend-grid small{font-size:12px;line-height:1.7;margin-top:15px;color:#5d6e58}.recommend-grid .task-actions{gap:8px;margin-top:16px}.learning-map{margin:25px 0 35px;border:1px solid var(--line);border-radius:15px;background:#fbfaf5;padding:0 22px}.learning-map>summary{cursor:pointer;min-height:64px;padding:19px 0;font-size:16px;font-weight:700}.learning-map>summary span{font-size:12px;font-weight:400;color:#596d5e;margin-left:18px}.learning-map .season-chapter:first-of-type{margin-top:20px}.learning-review,.learning-catalog{padding-top:35px}.learning-review h1{font-size:34px}.learning-review .review-intro{padding-top:12px}.learning-review .learning-map .page-title{font-size:25px}.catalog-filters{display:flex;gap:9px;flex-wrap:wrap;margin:10px 0 16px}.catalog-filters button{min-height:44px;font-size:13px}.learning-catalog label{font-size:14px}.learning-catalog h2{font-size:22px;margin:26px 0 16px}.learning-catalog .concept-tile small{font-size:11px;color:#52684f}.learning-catalog .concept-tile p{font-size:13px}.learning-catalog .concept-tile .status{display:inline-block;margin-top:9px}.learning-mark{margin:14px 0;min-height:44px}.probe-scene{align-items:start;margin:25px 0}.probe-scene .stage-art svg text{display:none}.probe-scene .season-stage{min-height:250px}.probe-scene .stage-art>svg{width:100%;height:100%}.probe-scene .task-panel{padding:25px}.probe-scene h3{font-size:25px}.probe-scene .option{font-size:15px;min-height:54px}.assessment-panel{max-width:820px;margin:24px auto 45px;padding:32px}.assessment-panel h2{font-size:28px;margin:10px 0}.assessment-panel h3{font-size:19px;margin-top:28px}.assessment-panel .season-question{font-size:18px}.assessment-panel .option{font-size:15px;line-height:1.8;min-height:52px}.practice-note{background:#f2ead5;color:#5a4d2f;font-size:13px;padding:12px 15px;border-radius:10px;margin-top:15px}.case-evidence{background:#e8efe2;border:1px solid #d2dfc8;border-radius:12px;padding:14px;margin:12px 0 20px}.case-evidence>span{font-size:13px;font-weight:700}.case-evidence>div{display:flex;gap:8px;margin:10px 0}.case-evidence button{min-height:44px}.case-evidence p{font-size:14px;line-height:1.8}.learning-judgment .season-actor{width:15%;height:37%;opacity:.8}.learning-judgment .season-actors{padding:0 2%;}.learning-judgment .season-stage-label{bottom:8px;padding:4px;font-size:10px}.diagnostic-panel{max-width:850px;margin:40px auto;padding:30px}.diagnostic-panel h2{font-size:28px;margin:12px 0}.diagnostic-panel h1{font-size:33px}.diagnostic-panel>.recommend-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.diagnostic-panel .option{font-size:16px;min-height:54px}.diagnostic-art{background:#e9eee1;border-radius:12px;display:flex;justify-content:center;margin:20px 0;padding:16px}.diagnostic-art>svg,.diagnostic-art>img{height:135px;width:160px;object-fit:contain}.diagnostic-panel>.chip{display:block;margin-top:20px;min-height:44px}.backup-file{display:block;margin:25px 0 15px;font-size:14px}.backup-file input{display:block;width:100%;margin-top:10px;padding:12px;border:1px solid #c8d7c1;border-radius:9px;background:#fffefa;font-size:13px}.backup-error{font-size:14px;color:#8e3024;background:#fbeae3;padding:12px;border-radius:8px;margin:15px 0}.learning-map[open]>summary{border-bottom:1px solid var(--line)}.assessment-panel .feedback p{font-size:15px}.learning-welcome+.learning-today h2{font-size:24px}.probe-scene h3:focus,.assessment-panel h2:focus,.task-panel h3:focus{outline:0}@media(max-width:800px){.learning-routes,.recommend-grid{grid-template-columns:1fr}.learning-welcome{padding-top:28px}.learning-welcome h1{font-size:32px}.learning-routes{gap:13px;margin-top:20px}.learning-routes article,.recommend-grid article{padding:20px}.learning-routes h2{margin:7px 0}.learning-routes p{margin-bottom:16px}.resume-strip{align-items:flex-start;flex-direction:column;padding:18px;gap:15px}.resume-strip .btn{width:100%}.learning-map{padding:0 14px}.learning-map>summary{font-size:15px}.learning-map>summary span{display:block;margin:5px 0 0;font-size:12px}.learning-review h1,.diagnostic-panel h1{font-size:27px}.assessment-panel,.diagnostic-panel{padding:20px;margin:20px 0}.assessment-panel h2,.diagnostic-panel h2{font-size:23px}.assessment-panel .season-question{font-size:17px}.learning-catalog h1{font-size:28px}.learning-catalog .search{font-size:16px}.learning-catalog .concept-tile{padding:16px;gap:12px}.learning-catalog .concept-tile small{font-size:11px}.learning-catalog .concept-tile h3{font-size:16px}.probe-scene{display:grid;grid-template-columns:1fr}.probe-scene .season-stage{min-height:0;aspect-ratio:800/440}.probe-scene .task-panel{padding:20px}.probe-scene h3{font-size:23px}.local-save-note{font-size:13px!important}.learning-today .section-heading{align-items:start}.learning-judgment .season-actor{width:15%;height:34%}.diagnostic-panel>.recommend-grid{grid-template-columns:1fr}.catalog-filters{gap:7px}.catalog-filters .chip{font-size:12px;padding:8px 10px}.case-evidence .chip{font-size:13px}.backup-file input{font-size:14px}}
.probe-scene .stage-art>svg text{display:initial}.probe-scene .stage-art>svg>text{display:none}.probe-scene .stage-art>svg>rect[x="24"]{display:none}

/* Homepage introduction: identity, value and learning loop before entry routes. */
.learning-welcome h1{font-size:40px;line-height:1.45}.learning-welcome>.product-intro,.learning-welcome>.product-value{max-width:850px;line-height:1.9;margin:12px 0}.product-how{list-style:none;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin:24px 0 16px}.product-how li{border-left:2px solid #b5c7a8;padding-left:15px}.product-how strong,.product-how span{display:block}.product-how strong{font-size:15px;margin-bottom:6px}.product-how span{font-size:13px;line-height:1.8;color:#53675b}.learning-welcome>.product-scope{font-size:12px;line-height:1.8;color:#62705e}@media(max-width:800px){.learning-welcome h1{font-size:29px}.learning-welcome h1 em{display:block}.product-how{grid-template-columns:1fr;gap:15px;margin:22px 0}.learning-welcome>.product-intro,.learning-welcome>.product-value{font-size:14px}}

.product-start{display:flex;align-items:center;gap:18px;margin:20px 0 26px}.product-start span{font-size:12px;color:#53675b}@media(max-width:800px){.product-start{align-items:flex-start;flex-direction:column;gap:10px}}
/* Reuse actual in-game scene and cast for an isolated, unscored homepage preview. */
.home-story-hero{display:grid;grid-template-columns:.95fr 1.05fr;gap:44px;align-items:center}.home-story-copy h1{font-size:42px;line-height:1.4;letter-spacing:-1px}.home-story-copy h1 em{display:block}.home-story-copy .product-intro{font-size:17px;line-height:1.95;margin:20px 0 14px}.home-story-copy .product-value{font-size:14px;line-height:1.9;color:#52675a}.home-story-copy .product-start{align-items:flex-start;flex-direction:column;gap:10px;margin:24px 0 18px}.hero-course-meta{font-size:12px;line-height:1.8;color:#596e5c}.home-game-preview{min-width:0;overflow:hidden;border:1px solid #c5d3bf;border-radius:22px;background:#fffdf6;box-shadow:0 18px 50px #294c3d12}.preview-topline{display:flex;justify-content:space-between;gap:10px;padding:13px 19px;font-size:12px;color:#426457;background:#edf1e6}.preview-topline span:last-child{color:#fff;background:#456e5e;padding:3px 9px;border-radius:20px;font-size:10px}.preview-scene{position:relative;aspect-ratio:800/360;overflow:hidden;background:#dbe6d4}.preview-art{position:absolute;inset:0}.preview-art>svg{width:100%;height:100%;display:block}.preview-art>svg>text,.preview-art>svg>rect[x="24"]{display:none}.preview-cast{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:space-between;padding:0 3%}.preview-cast>svg{width:27%;height:70%;filter:drop-shadow(0 3px 2px #25473b15)}.preview-scene-label{position:absolute;bottom:6px;left:33%;font-size:9px;color:#f8f7ed;background:#294b40ce;border-radius:10px;padding:3px 7px}.preview-dialogue{padding:14px 20px 10px;border-bottom:1px solid #e3e8dc}.preview-speaker{font-size:11px;letter-spacing:.5px;color:#50705b;font-weight:700}.preview-dialogue p{font-size:15px;line-height:1.7;margin:6px 0}.preview-choice-area{padding:10px 20px 3px}.preview-prompt{font-size:14px;font-weight:700;margin:0 0 10px}.preview-prompt small{display:block;font-weight:400;font-size:11px;color:#697463;margin-top:4px}.preview-choice{width:100%;display:flex;align-items:center;gap:10px;text-align:left;min-height:44px;border:1px solid #d9dfd1;background:#fbfcf6;border-radius:10px;margin:7px 0;padding:8px 12px;color:#29493f;font-size:13px;cursor:pointer}.preview-choice>span{background:#e9eee1;border-radius:5px;padding:3px 6px;font-size:11px}.preview-choice>b{margin-left:auto;color:#64846a}.preview-choice:hover,.preview-choice.selected{border-color:#557d63;background:#e9f0e2}.preview-response{font-size:11px;line-height:1.7;color:#516c55;min-height:38px;padding:7px 0}.preview-enter{border:0;border-top:1px solid #dce4d5;background:#edf3e6;color:#315d4a;width:100%;padding:14px;font-size:13px;font-weight:700;cursor:pointer;min-height:46px}.preview-choice:focus-visible,.preview-enter:focus-visible{outline:3px solid #b17c30;outline-offset:-3px}.home-story-hero+.product-how{margin-top:32px}@media(max-width:800px){.learning-welcome{padding-top:24px}.home-story-hero{grid-template-columns:1fr;gap:22px}.home-story-copy h1{font-size:31px;letter-spacing:0;margin:12px 0}.home-story-copy .product-intro{font-size:15px;line-height:1.85;margin:12px 0}.home-story-copy .product-value{font-size:13px;line-height:1.85}.home-story-copy .product-start{margin:18px 0 12px}.home-story-copy .product-start .btn{width:100%}.hero-course-meta{font-size:11px;margin:10px 0 0}.home-game-preview{border-radius:17px}.preview-dialogue{padding:12px 15px 9px}.preview-dialogue p{font-size:14px}.preview-choice-area{padding:10px 15px 3px}.preview-topline{padding:11px 15px}.preview-scene-label{font-size:8px;left:31%}.preview-response{min-height:44px}.home-story-hero+.product-how{margin-top:25px}}@media(prefers-reduced-motion:reduce){.home-game-preview *{animation:none!important;transition:none!important}}
@media(max-width:800px){.home-story-hero{display:flex;flex-direction:column;align-items:stretch;gap:12px}.home-story-copy{display:contents}.home-story-copy>.eyebrow{order:1;font-size:10px}.home-story-copy>h1{order:2;margin:0 0 3px;font-size:29px}.home-game-preview{order:3}.home-story-copy>.product-intro{order:4;margin:5px 0 0}.home-story-copy>.product-value{order:5;margin:0}.home-story-copy>.product-start{order:6;margin:5px 0}.home-story-copy>.hero-course-meta{order:7;margin:0}.preview-scene{aspect-ratio:800/340}}
/* Older WebViews without aspect-ratio still get a visible game scene. */
@supports not (aspect-ratio: 1 / 1){.preview-scene{height:230px}.probe-scene .season-stage{height:300px}@media(max-width:800px){.preview-scene{height:160px}.probe-scene .season-stage{height:210px}}}
.startup-status[hidden],#startup-help[hidden],#startup-retry[hidden]{display:none!important}
