:root{--bg:#fbf8f6;--ink:#343b49;--muted:#8b888d;--pink:#ba7789;--pink-dark:#a66477;--blush:#f5e9e9;--line:#e9e1df;--navy:#39475c;--serif:'Hiragino Mincho ProN','Yu Mincho',YuMincho,serif;--sans:'Hiragino Kaku Gothic ProN','Yu Gothic',Meiryo,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.7;-webkit-font-smoothing:antialiased}button,a,input,select{-webkit-tap-highlight-color:transparent}button,select{font:inherit}button{cursor:pointer;color:inherit}button:disabled{cursor:default}button,a{touch-action:manipulation}button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #b7788b;outline-offset:5px}a{color:inherit;text-decoration:none}button{border:0;background:none}h1,h2,h3,p{margin:0}img{display:block;max-width:100%}button{transition:background .2s,transform .2s,box-shadow .2s}button:not(:disabled):active{transform:translateY(1px)}.header{height:100px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(5vw,24px);gap:28px;background:rgba(255,255,255,.48)}.brand{display:flex;align-items:center;gap:13px;font-family:var(--serif);font-size:21px;letter-spacing:.05em;font-weight:600;white-space:nowrap}.brand-mark{position:relative;font-family:Georgia,serif;font-style:italic;font-size:32px;color:var(--pink);font-weight:400}.brand-mark>span{position:absolute;font-size:17px;top:-6px;right:-10px}.desktop-nav{display:flex;height:100%;gap:33px;margin-left:auto;margin-right:30px}.nav-link{position:relative;font-size:12px;color:#969197;padding:0 1px}.nav-link.active{color:var(--pink-dark)}.nav-link.active:after{content:'';position:absolute;bottom:24px;height:2px;background:var(--pink);left:0;right:0}.point-pill{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:25px;padding:8px 19px;background:white}.point-pill>span{color:var(--pink);font-size:21px}.point-pill b{font-family:Georgia,serif;font-size:22px;font-weight:400}.point-pill small{color:var(--muted);font-size:11px}.mobile-only,.mobile-nav{display:none}main{max-width:1180px;padding:0 30px;margin:0 auto;outline:none;min-height:70vh}.welcome{display:flex;justify-content:space-between;align-items:center;margin:33px 0 24px;color:#827d83;font-size:12px;letter-spacing:.06em}.tiny-spark{font-size:20px;color:var(--pink);margin-right:7px}.date-chip{background:#fff;border:1px solid var(--line);border-radius:30px;padding:6px 15px;color:#6f6b74;font-size:11px}.date-chip span{color:#d8c9ce;margin:0 6px}.hero{height:510px;position:relative;overflow:hidden;display:grid;grid-template-columns:1fr 1fr;background:linear-gradient(110deg,#f3e7e6 0%,#f8efeb 46%,#f4ece8 100%);border-radius:8px}.hero-copy{padding:46px 0 35px 47px;position:relative;z-index:2}.eyebrow{font-size:10px;letter-spacing:.2em;color:var(--pink-dark);font-weight:600;display:flex;align-items:center;gap:13px}.line{height:1px;width:27px;background:#caa2ae;display:inline-block}.hero h1{font-family:var(--serif);font-size:39px;font-weight:500;line-height:1.7;letter-spacing:.07em;margin:16px 0 17px}.hero-intro{font-size:12px;color:#8e7c80;line-height:2.2;letter-spacing:.04em}.current-episode{display:flex;align-items:center;gap:8px;margin-top:26px;font-size:9px;letter-spacing:.12em;color:#9b7683}.pink-dot{width:5px;height:5px;border-radius:50%;background:#bd7d91}.current-episode b{font-family:Georgia,serif;font-size:17px;font-weight:400;margin-left:9px}.current-episode small{font-size:11px;color:#a79599}.hero-copy h2{font-size:15px;font-weight:500;letter-spacing:.04em;margin:3px 0 18px}.button{display:inline-flex;align-items:center;justify-content:center;gap:18px;padding:15px 25px;border-radius:5px;font-size:12px;letter-spacing:.045em;font-weight:500;min-height:48px}.button>span:last-child{margin-left:auto;font-size:19px;line-height:1}.primary{background:var(--pink);color:#fff;box-shadow:0 5px 13px #b875861a}.primary:hover{background:var(--pink-dark)}.navy{background:var(--navy);color:#fff}.navy:hover{background:#27354a}.ghost{border:1px solid var(--line);background:#fff}.ghost:hover{background:#f8f1f1}.button:disabled{background:#ded9db;color:#fff;box-shadow:none}.hero-cta{min-width:285px}.hero-hint{font-size:10px;margin-top:12px;color:#9c7a85}.hero-hint b{font-size:13px}.hero-art{position:relative}.art-circle{position:absolute;background:linear-gradient(130deg,#f0e0dd80,#fff9f2a6);width:440px;height:440px;border-radius:50%;left:-10px;top:58px;border:1px solid #ffffff7a}.hero-art:before,.hero-art:after{content:'';position:absolute;width:330px;height:330px;border:1px solid #fff8;border-radius:50%;left:46px;top:110px}.hero-art:after{width:465px;height:465px;left:-23px;top:47px;border-style:dashed;opacity:.5}.character{position:absolute;width:355px;max-width:none;left:64px;top:23px;mix-blend-mode:multiply;z-index:1}.vertical-note{position:absolute;writing-mode:vertical-rl;right:22px;top:35px;font-family:var(--serif);color:#af9095;font-size:11px;letter-spacing:.2em}.character-label{position:absolute;z-index:3;left:14px;top:221px;display:grid;gap:3px}.character-label>span{font-size:8px;letter-spacing:.2em;color:#9d7d87}.character-label b{font-family:var(--serif);font-size:24px;letter-spacing:.12em;font-weight:500}.character-label small{font-size:9px;color:#9e868e}.speech-note{position:absolute;z-index:3;bottom:26px;right:25px;background:#fffcf8ed;border:1px solid white;box-shadow:0 6px 20px #89637408;border-radius:6px;padding:15px 26px 14px 21px;min-width:277px;transform:rotate(-2deg)}.speech-note>span{font-size:8px;letter-spacing:.2em;color:#bb8998}.speech-note p{font-family:var(--serif);font-size:14px;line-height:1.8;margin-top:4px}.speech-note i{position:absolute;right:13px;top:12px;color:#bc8b9a;font-size:19px;font-style:normal}.petal{position:absolute;background:#eac0c4;width:12px;height:21px;border-radius:80% 0 80% 20%;opacity:.6;z-index:3;transform:rotate(40deg)}.petal-1{left:41px;top:35px}.petal-2{right:63px;top:170px;transform:rotate(-30deg);width:9px;height:16px}.petal-3{left:80px;bottom:75px;transform:rotate(80deg)}.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:26px}.study-card,.progress-card{background:#fff;border:1px solid var(--line);border-radius:7px;padding:25px 29px}.section-kicker{display:flex;justify-content:space-between;align-items:center;color:#a2959d;font-size:9px;letter-spacing:.17em}.section-kicker>span:last-child{font-size:19px;color:#b999a5}.study-card h2,.progress-card h2{font-family:var(--serif);font-size:19px;font-weight:500;letter-spacing:.03em;margin:9px 0 6px}.study-card>p{font-size:11px;color:var(--muted)}.study-meta{display:flex;align-items:center;gap:10px;margin:19px 0 17px}.study-meta>span{font-size:9px;background:#f6f5f6;padding:3px 8px;color:#8a8590;border-radius:3px}.study-meta b{margin-left:auto;font-family:Georgia,serif;font-size:21px;font-weight:400}.study-meta small{font-family:var(--sans);font-size:9px;color:var(--muted);margin-left:4px}.study-card .button{width:100%;padding:12px 18px;min-height:44px}.progress-numbers{display:flex;gap:51px;margin-top:26px}.progress-numbers>div{display:flex;flex-direction:column}.progress-numbers b{font:34px Georgia,serif}.progress-numbers small{font-size:15px;color:#b3a5ab}.progress-numbers>div>span{color:#9b9298;font-size:10px;margin-top:9px}.progress-track{height:5px;border-radius:5px;background:#f0e9eb;overflow:hidden}.progress-track i{display:block;height:100%;background:#c18a9a;border-radius:5px;transition:width .4s}.progress-card .progress-track{margin-top:24px}.progress-card>p{display:flex;align-items:center;gap:5px;font-size:10px;color:#9c9097;margin-top:14px}.progress-card strong{color:#ac7788;font-weight:500}.text-link{font-size:11px;padding:0;color:#9d7381}.progress-card .text-link{margin-left:auto}.story-section{margin-top:47px}.section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:21px;gap:12px}.section-title h2{font-family:var(--serif);font-weight:500;font-size:24px;letter-spacing:.04em;margin-top:6px}.section-aside{font-size:10px;color:#a2959b}.season-tabs{display:grid;grid-template-columns:repeat(6,1fr);border-bottom:1px solid var(--line);margin-bottom:10px;gap:10px}.season-tab{position:relative;display:flex;align-items:center;gap:10px;text-align:left;padding:13px 4px 18px;color:#a99da3;white-space:nowrap;font-size:11px}.season-number{font:italic 18px Georgia,serif;color:#cdbbc3}.season-tab small{display:block;font-size:9px;color:#aaa0a6;margin-top:3px}.season-tab.selected{color:#9f697e}.season-tab.selected:after{content:'';position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--pink)}.season-tab.selected .season-number{color:#aa7085}.tab-lock{margin-left:auto;color:#b6a6af;font-size:15px}.episode-row{display:flex;text-align:left;align-items:center;width:100%;padding:21px 20px;border-bottom:1px solid var(--line);gap:23px}.episode-row:hover{background:#f5eeed}.episode-num{font:italic 25px Georgia,serif;color:#c8a5b3;min-width:30px}.episode-copy{display:grid;gap:4px}.episode-copy>small{font-size:9px;color:#9b8c94;letter-spacing:.05em}.episode-copy>small span{color:#b39da7}.episode-copy>strong{font-family:var(--serif);font-weight:500;font-size:17px;letter-spacing:.05em}.episode-description{font-size:10px;color:#a6999e}.episode-status{margin-left:auto;color:#b790a0;font-size:21px}.episode-row.locked .episode-copy>strong{color:#a39ba0}.episode-row.available{background:#f9f0ef;border-radius:5px}.gentle-note{display:flex;align-items:center;justify-content:center;gap:17px;padding:41px;color:#a7959e}.gentle-note>span{font-size:24px;color:#cda9b7}.gentle-note p{font-family:var(--serif);font-size:12px;line-height:2}.footer{max-width:1120px;margin:0 auto;padding:25px 0 32px;border-top:1px solid var(--line);display:flex;justify-content:space-between;font-size:9px;color:#a99aa3;letter-spacing:.06em}.footer>span:first-child{font-family:var(--serif);font-size:11px}.page-heading{padding:48px 0 32px}.page-heading h1{font-family:var(--serif);font-weight:500;font-size:31px;margin:13px 0 10px;letter-spacing:.04em}.page-heading>p:last-child{font-size:12px;color:#9b8e96}.chapter-banner{display:flex;align-items:center;padding:30px;background:var(--blush);border-radius:6px;margin:24px 0 12px;gap:22px}.chapter-banner>span{font-size:35px;color:var(--pink)}.chapter-banner h2{font-family:var(--serif);font-weight:500;font-size:23px;margin-top:6px}.chapter-banner>small{margin-left:auto;font-size:10px;letter-spacing:.1em;color:#a88795}.page-note{font-size:11px;color:#9b8c95;line-height:2;margin:24px 0 50px}.study-layout{display:grid;grid-template-columns:1.5fr 1fr;gap:45px;margin-bottom:55px}.setup-card{background:white;border:1px solid var(--line);padding:35px;border-radius:8px;align-self:start}.badge{display:inline-block;font-size:10px;letter-spacing:.04em;color:#9a7182;background:#f6ebee;border-radius:3px;padding:5px 10px}.setup-card h2{font-family:var(--serif);font-size:24px;font-weight:500;margin:23px 0 11px}.setup-card>p{font-size:12px;color:#978b93;line-height:2}.session-options{display:flex;gap:12px;margin:30px 0}.session-option{flex:1;border:1px solid var(--line);border-radius:5px;padding:19px 5px;display:grid;gap:6px}.session-option b{font:31px Georgia,serif}.session-option small{font:11px var(--sans);margin-left:5px}.session-option>span{font-size:9px;color:#a0969c}.session-option.selected{border-color:var(--pink);background:#f9f0f2;color:#a56e80}.select-label{display:block;font-size:11px;color:#8c8189;margin:0 0 9px}select{width:100%;border:1px solid var(--line);border-radius:4px;padding:13px 12px;background:#fff;color:var(--ink);margin-bottom:25px;font-size:12px}.full{width:100%}.setup-card .rule-note{font-size:10px;margin-top:17px}.study-aside{text-align:center}.mini-portrait{width:150px;height:150px;border-radius:50%;background:var(--blush);overflow:hidden;margin:0 auto 20px}.mini-portrait img{width:150px;mix-blend-mode:multiply;margin-top:8px}.study-aside h3{font-family:var(--serif);font-size:20px;font-weight:500;line-height:1.9}.study-aside>p{color:#9c8190;font-size:10px;margin-top:10px}.scope-note{text-align:left;margin:25px auto 0;max-width:320px;border-top:1px solid var(--line);padding-top:20px;color:#9a8e96;font-size:11px}.scope-note b{font-weight:500;color:#7e7580}.scope-note p{margin-top:8px;line-height:1.9}.practice-top{display:flex;justify-content:space-between;align-items:center;gap:10px;max-width:790px;margin:38px auto 17px;color:#927e8b;font-size:11px}.exercise-progress{max-width:790px;margin:0 auto 25px}.question-card{max-width:790px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:35px;margin:0 auto 50px}.question-meta{display:flex;justify-content:space-between;align-items:center}.question-meta small{font-size:10px;color:#a695a0}.question-text{font-size:18px;font-weight:500;line-height:2;margin:24px 0}.answer-options{display:grid;gap:12px;margin:25px 0}.answer-option{width:100%;display:flex;text-align:left;gap:17px;align-items:center;border:1px solid var(--line);border-radius:5px;min-height:62px;padding:14px 18px;font-size:14px}.answer-option:hover:not(:disabled){border-color:#c9a0b0;background:#fcf8fa}.answer-number{display:grid;place-items:center;border:1px solid #e9e0e4;border-radius:50%;width:28px;height:28px;flex-shrink:0;font:15px Georgia,serif;color:#9b8792}.answer-option.chosen{border-color:#bb859b;background:#faf0f4}.answer-option.correct{border-color:#89b4a3;background:#edf7f2}.answer-option.incorrect{border-color:#cdaa98;background:#fcf3ec}.answer-mark{margin-left:auto;color:#a4788a}.feedback{display:flex;align-items:center;gap:18px;background:#f1f5f0;border-radius:5px;padding:17px 20px;margin:24px 0;font-size:12px}.feedback strong{font-size:16px;color:#54876c}.feedback.retry{background:#f9f1eb}.feedback.retry strong{color:#9a715e}.explanation{font-size:13px;line-height:2.1;margin:0 0 25px}.explanation h2{font-size:13px;border-bottom:1px solid var(--line);padding-bottom:9px;margin-bottom:12px;font-weight:500;color:#8f6d80}.explanation details{margin-top:20px}.explanation summary{cursor:pointer;color:#977185;font-size:12px}.explanation details p{padding:15px 0;border-bottom:1px solid var(--line)}.bold{font-weight:bold}.red{color:#b05568}.small{font-size:.85em}.shade{display:block;background:#f0eeee;padding:12px}rt{font-size:.55em}.result-card{max-width:630px;background:#fff;border:1px solid var(--line);border-radius:8px;margin:50px auto;padding:45px;text-align:center}.result-card .eyebrow{justify-content:center}.result-flower{display:block;font-size:60px;color:var(--pink);margin:10px}.result-card h1{font:28px var(--serif);margin:12px 0}.result-card>p{font-size:12px;color:#988995;margin:14px 0 25px}.result-numbers{display:flex;justify-content:center;gap:70px;margin:35px 0}.result-numbers>div{display:grid;gap:7px}.result-numbers b{font:40px Georgia,serif;color:#ac768d}.result-numbers small{font-size:18px;color:#b3a3ad}.result-numbers span{font-size:11px;color:#9c8e98}.unlock-note{padding:18px;background:#faf0f3;color:#aa778d;font-size:12px;border-radius:4px;margin:24px 0}.unlock-note strong{display:block;font-family:var(--serif);font-size:18px;margin-top:8px;font-weight:500}.result-card .ghost{margin-top:12px}.record-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.record-stats>div{display:grid;gap:12px;background:white;border:1px solid var(--line);border-radius:5px;padding:25px;text-align:center}.record-stats b{font:30px Georgia,serif;color:#a27389}.record-stats span{font-size:11px;color:#9c8d98}.history-card{background:white;border:1px solid var(--line);border-radius:7px;padding:30px;margin-top:25px}.history-card .section-title h2{font-size:21px}.history-card .section-title>span{font-size:11px;color:#a0949b}.history-row{display:flex;align-items:center;justify-content:space-between;padding:20px 0;border-top:1px solid var(--line);font-size:12px;color:#938391}.history-row strong{color:#5d5460;font-weight:500}.empty-state{text-align:center;padding:30px 0 20px}.empty-state>span{font-size:32px;color:#c3a3b1}.empty-state h3{font:21px var(--serif);margin:15px 0 10px}.empty-state p{font-size:12px;color:#9a8d96;margin-bottom:20px}.record-foot{display:flex;justify-content:space-between;gap:20px;margin:25px 0 55px}.record-foot p{font-size:10px;color:#9d9299}.muted{color:#a49ba0}.story-dialog{border:0;padding:0;border-radius:10px;width:min(760px,calc(100% - 30px));max-height:92dvh;overflow:auto;background:#fffcfa;color:var(--ink);box-shadow:0 25px 100px #39273833}.story-dialog::backdrop,.small-dialog::backdrop{background:#3029348f;backdrop-filter:blur(5px)}.scene-art{height:340px;position:relative;overflow:hidden;background:radial-gradient(ellipse at 65% 70%,#fff8ed,#f1e0e1)}.scene-art:before{content:'';position:absolute;inset:30px 190px 0 30px;border:1px solid #fff9;border-radius:50%}.scene-art img{position:absolute;mix-blend-mode:multiply;top:5px;right:40px;width:270px}.scene-date{position:absolute;top:25px;left:30px;color:#a57c8e;font-size:11px}.close-dialog{position:absolute;right:15px;top:15px;border:1px solid #d8c4cd;background:#fff9;width:35px;height:35px;border-radius:50%;z-index:3;font-size:22px;color:#9c788c;line-height:1}.scene-heading{position:absolute;left:30px;bottom:35px;width:46%;z-index:2}.scene-heading h2{font:26px/1.6 var(--serif);margin-top:10px}.dialogue{padding:25px 30px}.speaker{font-size:11px;color:#a5768b;letter-spacing:.12em}.dialogue>p{font:17px/2 var(--serif);min-height:83px;margin-top:13px}.scene-controls{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:18px}.scene-controls>span{display:flex;gap:6px}.scene-controls i{width:5px;height:5px;border-radius:50%;background:#e3d5dd}.scene-controls i.on{background:#ae7c92}.scene-controls .button{font-size:11px;min-height:40px;padding:10px 16px}.small-dialog{max-width:450px;width:calc(100% - 30px);padding:30px;border:1px solid var(--line);border-radius:8px;color:var(--ink)}.small-dialog h2{font:23px var(--serif);margin-bottom:15px}.small-dialog p{font-size:12px;color:#92818e;line-height:2}.actions{display:flex;justify-content:flex-end;gap:12px;margin-top:25px}.toast{position:fixed;bottom:30px;left:50%;transform:translate(-50%,20px);z-index:20;background:#3d3a44;color:white;padding:14px 25px;border-radius:7px;box-shadow:0 7px 30px #30273833;font-size:12px;opacity:0;pointer-events:none;transition:.2s;width:max-content;max-width:calc(100% - 32px)}.toast.show{opacity:1;transform:translate(-50%,0)}


.header{height:77px;padding:0 22px;gap:12px}.desktop-nav{display:none}.brand{font-size:18px;gap:12px;letter-spacing:.01em}.brand-mark{font-size:28px}.point-pill{padding:5px 12px;gap:7px}.point-pill b{font-size:20px}.point-pill>span{font-size:18px}main{padding:0 20px}.welcome{margin:22px 0 18px;font-size:10px}.date-chip{font-size:9px;padding:5px 10px}.hero{height:500px;grid-template-columns:1fr 43%}.hero-copy{padding:30px 0 25px 25px}.hero .eyebrow{font-size:8px;gap:8px}.line{width:18px}.hero h1{font-size:30px;line-height:1.7;margin-top:20px}.hero-intro{font-size:10px;max-width:245px}.hero-art{position:absolute;inset:0 0 0 42%}.character{width:290px;left:-5px;top:45px;opacity:.94}.art-circle{width:350px;height:350px;left:-45px;top:85px}.hero-art:before{width:300px;height:300px;left:-20px;top:110px}.hero-art:after{display:none}.vertical-note{font-size:9px;top:20px;right:12px}.character-label{left:90px;top:276px;background:#fbf5efc7;padding:7px 11px;border-radius:4px}.character-label>span{font-size:6px}.character-label b{font-size:17px}.character-label small{font-size:7px}.speech-note{bottom:20px;right:18px;min-width:0;width:200px;padding:12px 10px;display:none}.hero-copy{pointer-events:none}.hero-copy button{pointer-events:auto}.current-episode{margin-top:69px}.hero-copy h2{font-size:13px;background:#f5e8e5bb;display:table}.hero-cta{min-width:260px;font-size:11px}.hero-hint{font-size:9px}.petal-1{left:5px;top:27px}.petal-2{right:25px;top:355px}.petal-3{display:none}.dashboard-grid{gap:15px;margin-top:19px}.study-card,.progress-card{padding:20px}.study-card h2,.progress-card h2{font-size:17px}.study-card>p{font-size:10px}.study-meta{flex-wrap:wrap;gap:6px;margin:15px 0}.study-meta>span{font-size:8px}.study-meta b{font-size:20px}.progress-numbers{gap:23px;margin-top:24px}.progress-numbers b{font-size:29px}.progress-numbers small{font-size:12px}.progress-card>p{flex-wrap:wrap}.progress-card .text-link{margin-left:0;width:100%;text-align:left;margin-top:5px}.section-kicker{font-size:8px}.study-card .button{font-size:10px}.story-section{margin-top:32px}.section-title h2{font-size:22px}.section-aside{font-size:8px}.season-tabs{display:flex;overflow-x:auto;scrollbar-width:thin;gap:15px}.season-tab{min-width:115px;font-size:11px}.season-number{font-size:19px}.episode-row{padding:18px 10px;gap:16px}.episode-copy>strong{font-size:16px}.episode-description{font-size:9px}.episode-num{font-size:23px}.gentle-note{padding:30px 0}.footer{padding:20px 0 100px;margin:0 20px;font-size:8px}.footer>span:first-child{font-size:9px}.mobile-nav{position:fixed;display:flex;bottom:0;left:0;right:0;background:#fffefaed;border-top:1px solid var(--line);backdrop-filter:blur(12px);padding:9px 12px max(10px,env(safe-area-inset-bottom));z-index:5;justify-content:space-around}.mobile-nav button{display:grid;justify-items:center;gap:2px;font-size:22px;color:#b8aeb5;min-width:65px;line-height:1.2}.mobile-nav button>span{font-size:9px;line-height:1.7}.mobile-nav button.active{color:#ae7089}.page-heading{padding:30px 0 25px}.page-heading h1{font-size:25px;line-height:1.7}.page-heading>p:last-child{font-size:11px}.chapter-banner{padding:22px 18px;gap:15px}.chapter-banner h2{font-size:20px}.chapter-banner>small{display:none}.study-layout{grid-template-columns:1fr;gap:30px}.setup-card{padding:25px}.setup-card h2{font-size:23px}.study-aside{display:grid;grid-template-columns:100px 1fr;align-items:center;text-align:left;gap:15px}.mini-portrait{width:100px;height:100px;margin:0}.mini-portrait img{width:100px}.study-aside h3{font-size:18px}.study-aside>p{display:none}.scope-note{grid-column:1/-1;max-width:none;margin-top:0}.question-card{padding:24px 20px}.question-text{font-size:16px}.answer-option{padding:13px 12px;font-size:13px;gap:12px}.practice-top{margin-top:25px;font-size:10px}.feedback{align-items:flex-start;flex-direction:column;gap:5px;font-size:11px}.record-stats{grid-template-columns:1fr 1fr;gap:12px}.record-stats>div{padding:23px 10px}.record-stats b{font-size:27px}.history-card{padding:22px}.record-foot{flex-direction:column;align-items:flex-start;gap:16px}.result-card{padding:30px 22px;margin:28px auto}.result-card h1{font-size:24px}.result-numbers{gap:35px}.scene-art{height:310px}.scene-art img{width:240px;right:0;top:35px}.scene-heading{left:23px;bottom:25px;width:45%}.scene-heading h2{font-size:23px}.scene-date{left:23px;font-size:10px}.dialogue{padding:23px}.dialogue>p{font-size:16px;min-height:96px}.toast{bottom:90px}.story-dialog{max-height:88dvh}
.header{padding:0 17px}.brand{font-size:16px}.point-pill{gap:5px}.hero{height:475px}.hero-copy{padding-left:20px}.hero h1{font-size:28px}.hero-art{left:43%}.character{width:260px;left:-30px;top:54px}.character-label{left:55px;top:269px}.hero-intro{max-width:200px;line-height:2.1}.hero-intro br{display:none}.current-episode{margin-top:65px}.hero-cta{min-width:243px}.dashboard-grid{grid-template-columns:1fr}.study-card,.progress-card{padding:23px}.progress-numbers{gap:60px;margin-top:20px}.progress-card .text-link{margin-left:auto;width:auto;margin-top:0}.progress-card>p{flex-wrap:nowrap}.study-card h2,.progress-card h2{font-size:18px}.section-aside{display:none}.welcome{font-size:9px}.date-chip{font-size:8px}.setup-card{padding:22px 18px}.setup-card h2{font-size:21px}.session-options{gap:8px}.session-option>span{font-size:8px}.episode-description{display:none}.scene-art{height:280px}.scene-art img{width:217px;right:-10px}.scene-heading h2{font-size:21px}.dialogue>p{font-size:15px}.scene-controls .button{font-size:10px;gap:8px}.footer>span:last-child{font-size:7px}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* Keep the original white-backed sample integrated with the scene. */
.hero-intro{max-width:154px;color:#8b747c;font-size:10px}.hero-copy h2{background:#f5e8e5ed}.hero-hint{background:#f5e8e5d9;display:table;padding:2px 3px;border-radius:3px}

/* Mobile app shell: one column at every viewport; shrink to smaller devices. */
:root{--app-width:430px}
html{background:#eee8e9;min-height:100%;scroll-padding-bottom:90px}
body{width:100%;max-width:var(--app-width);min-height:100dvh;margin:0 auto;box-shadow:0 0 60px #67505c12}
.header{padding-top:env(safe-area-inset-top,0px);height:calc(77px + env(safe-area-inset-top,0px))}
main{width:100%;max-width:none;min-height:calc(100dvh - 180px)}
.mobile-nav{width:100%;max-width:var(--app-width);left:50%;right:auto;transform:translateX(-50%);padding-bottom:max(10px,env(safe-area-inset-bottom,0px))}
.story-dialog{width:calc(100% - 24px);max-width:406px;max-height:calc(100dvh - 32px)}
.small-dialog{max-width:390px;max-height:calc(100dvh - 32px);overflow:auto}
.toast{max-width:min(390px,calc(100% - 32px));bottom:calc(88px + env(safe-area-inset-bottom,0px))}
.footer{padding-bottom:calc(100px + env(safe-area-inset-bottom,0px))}
.hero-cta{min-width:0;width:243px;max-width:calc(100vw - 80px)}
.season-tabs{overscroll-behavior-x:contain}
@media(max-width:360px){
 .header{padding-left:13px;padding-right:13px;gap:8px}
 .brand{font-size:14px;gap:9px}.brand-mark{font-size:24px}
 .point-pill{padding:5px 9px;gap:4px}.point-pill b{font-size:18px}
 main{padding:0 15px}.welcome{gap:6px;font-size:8px}.date-chip{padding:5px 7px}
 .hero-copy{padding-left:17px}.hero h1{font-size:25px}.hero-intro{max-width:130px;font-size:9px}
 .character{left:-26px;width:240px;top:64px}.character-label{left:40px;top:275px}
 .hero-cta{width:226px;max-width:calc(100vw - 65px);padding-left:18px;padding-right:18px}
 .hero-copy h2{font-size:12px}.hero .eyebrow{font-size:7px;gap:6px}
 .page-heading h1{font-size:23px}.setup-card h2{font-size:19px}
 .study-card,.progress-card{padding:20px}.study-card h2,.progress-card h2{font-size:17px}
 .progress-numbers{gap:35px}.study-meta{gap:4px}.study-meta>span{padding:3px 5px}
 .session-options{gap:5px}.session-option>span{font-size:7px}.session-option b{font-size:28px}
 .study-aside{grid-template-columns:80px 1fr;gap:10px}.mini-portrait{width:80px;height:80px}.study-aside h3{font-size:16px}
 .chapter-banner{gap:10px;padding:20px 12px}.chapter-banner h2{font-size:18px}
 .scene-heading h2{font-size:19px}.scene-art img{right:-35px}.dialogue{padding:20px}
 .question-card{padding:20px 16px}.practice-top{font-size:9px}
}

/* One screen per task. Long question text and explanations turn by page. */
html{height:100%;overflow:hidden;scroll-padding:0}
body{height:100dvh;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden}
.header{height:calc(60px + env(safe-area-inset-top,0px));padding-left:18px;padding-right:18px;gap:10px;flex-shrink:0}
.brand{font-size:15px;gap:10px}.brand-mark{font-size:26px}.point-pill{padding:4px 10px;gap:5px}.point-pill b{font-size:19px}
main{display:flex;flex-direction:column;gap:12px;padding:14px 18px;min-height:0;height:100%;overflow:clip}
.mobile-nav{position:static;transform:none;width:100%;height:calc(65px + env(safe-area-inset-bottom,0px));padding:9px 45px max(10px,env(safe-area-inset-bottom,0px));gap:70px;align-items:center;flex-shrink:0}
.mobile-nav button{flex:1;font-size:22px;min-width:64px}.mobile-nav button>span{font-size:10px}
.welcome{flex-shrink:0;margin:0;font-size:10px;min-height:27px}.date-chip{font-size:10px}
.compact-hero{display:block;flex:1;min-height:0;height:auto;max-height:none}
.hero-title{position:absolute;z-index:2;top:26px;left:22px;pointer-events:none}
.hero-title h1{font-size:29px;line-height:1.65;margin:13px 0 0;font-weight:500}
.hero-title .eyebrow{font-size:10px;letter-spacing:.12em}
.compact-hero .hero-art{inset:0;pointer-events:none}
.compact-hero .character{width:290px;top:80px;left:auto;right:-10px;opacity:1}
.compact-hero .art-circle{width:360px;height:360px;left:auto;right:-40px;top:120px}
.compact-hero .hero-art:before{left:auto;right:-15px;top:150px}
.compact-hero .character-label{left:auto;right:24px;top:auto;bottom:192px;padding:8px 13px;background:#fcf7f0db}
.compact-hero .character-label b{font-size:20px}.compact-hero .character-label>span{font-size:8px}
.compact-hero .petal-1{left:50%;top:25px}.compact-hero .petal-2{right:20px;top:45%}
.home-actions{position:absolute;bottom:0;left:0;right:0;z-index:3;padding:21px 18px 10px;background:linear-gradient(transparent,#f6ece8e8 15%,#f6ece8 100%)}
.home-next{margin-bottom:12px}.home-next small{font-size:10px;color:#a67788}.home-next h2{font-size:16px;font-family:var(--serif);font-weight:500;margin-top:3px}
.home-actions .button{min-height:47px;padding:11px 18px;font-size:12px}.home-study-link{display:block;font-size:11px;color:#947385;width:100%;min-height:37px;padding:8px}.home-actions .hero-hint{display:block;background:none;padding:0;margin:8px 0 4px;text-align:center;font-size:10px;min-height:25px}
.compact-heading{display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.compact-heading h1{font:24px var(--serif)}.compact-heading>span{font-size:10px;color:#a18997}
#season-select{margin:0;padding:10px;flex-shrink:0}
.chapter-banner{flex-shrink:0;margin:0;padding:14px 17px}.chapter-banner h2{font-size:20px;margin-top:3px;line-height:1.6}.chapter-banner .eyebrow{font-size:8px}
body[data-view="story"] .episode-list{display:grid;grid-auto-rows:minmax(0,1fr);min-height:0;flex:1}
body[data-view="story"] .episode-row{padding:10px 7px;gap:13px;min-height:0}.episode-copy{min-width:0}.episode-copy>strong{font-size:15px}.episode-copy>small{font-size:9px}.episode-description{display:none}.episode-status{font-size:18px}.episode-num{font-size:22px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.back-button{align-self:flex-start;font-size:12px;padding:4px 0;color:#997889;min-height:30px}
.setup-card{padding:26px 22px;width:100%;margin:auto 0;flex-shrink:0}.setup-card h2{font:24px var(--serif);margin:22px 0 0}.session-options{margin:24px 0;gap:12px}.session-option{padding:18px 5px}.setup-card select{margin-bottom:14px}.setup-card .rule-note{margin:0 0 20px;font-size:11px}.setup-card .button{font-size:12px}
.practice-top{width:100%;margin:0;flex-shrink:0;font-size:11px;min-height:25px}
.question-card{padding:18px 15px;margin:0;width:100%;flex:1;min-height:0;display:flex;flex-direction:column;gap:12px;overflow:clip}
.question-meta{flex-shrink:0}.question-meta .badge{font-size:9px}.question-card>.button{flex-shrink:0;min-height:44px;padding:11px 15px}
.page-viewport{flex:1;min-height:0;width:100%;overflow:clip;position:relative}
.page-columns{height:100%;column-fill:auto;column-gap:0;overflow:visible;will-change:transform}
.page-columns>*{max-width:100%;margin-top:0}.page-columns .question-text{font-size:15px;line-height:1.9;margin:0 0 16px;font-weight:500}
.page-columns .answer-option{break-inside:avoid;display:flex;margin:0 0 10px;padding:11px 10px;min-height:48px;font-size:12px;gap:10px}.answer-number{width:24px;height:24px;font-size:13px}.answer-mark{font-size:10px}
.content-pager{display:flex;align-items:center;justify-content:center;gap:28px;flex-shrink:0;height:32px;font-size:11px;color:#a07189}.content-pager button{width:45px;min-height:32px;border-radius:4px;background:#f8f0f3;font-size:18px}.content-pager button:disabled{opacity:.3}.content-pager.single-page{visibility:hidden}
.question-card .feedback{margin:0;padding:10px 13px;gap:4px;flex-shrink:0;font-size:11px}.feedback strong{font-size:15px}
.explanation-tabs{display:flex;gap:15px;flex-shrink:0;border-bottom:1px solid var(--line)}.explanation-tabs button{font-size:11px;padding:6px 0;color:#9a8994}.explanation-tabs .selected{border-bottom:2px solid var(--pink);color:var(--pink-dark)}
.explanation-paragraph{font-size:13px;line-height:2;margin-bottom:18px;overflow-wrap:anywhere}.page-columns p{orphans:2;widows:2}
.result-card{width:100%;padding:25px 20px;margin:auto 0}.result-card h1{font-size:23px}.result-flower{font-size:44px;margin:0}.result-numbers{margin:22px 0;gap:38px}.result-numbers b{font-size:34px}.result-card .unlock-note{margin:16px 0;padding:12px;font-size:11px}.unlock-note strong{font-size:16px}.result-card>.button{padding:11px 14px;min-height:43px}
.story-dialog{height:min(650px,calc(100dvh - 24px));max-height:calc(100dvh - 24px);overflow:clip}
.story-dialog[open]{display:grid;grid-template-rows:minmax(0,1fr) auto}.scene-art{height:auto;min-height:0}.scene-art img{width:250px;right:-10px;top:20px}.scene-heading{bottom:20px;left:20px}.scene-heading h2{font-size:21px}.dialogue{padding:20px}.dialogue>p{font-size:15px;min-height:90px;margin-top:10px}.scene-controls{margin-top:12px}.scene-controls .button{min-height:42px}.scene-date{left:20px;top:20px}
@media(max-height:700px){
 main{gap:9px;padding-top:10px;padding-bottom:10px}.header{height:calc(54px + env(safe-area-inset-top,0px))}.mobile-nav{height:calc(60px + env(safe-area-inset-bottom,0px));padding-top:7px}
 .hero-title{top:20px;left:20px}.hero-title h1{font-size:25px;line-height:1.6;margin-top:9px}.compact-hero .character{width:238px;top:54px;right:-17px}.compact-hero .character-label{bottom:167px;right:16px}.compact-hero .character-label b{font-size:17px}.home-actions{padding:17px 15px 5px}.home-next{margin-bottom:8px}.home-next h2{font-size:15px}.home-actions .button{min-height:43px}
 .compact-heading h1{font-size:21px}.chapter-banner{padding:10px 13px}.chapter-banner h2{font-size:18px}body[data-view="story"] .episode-row{padding:6px 5px}.episode-copy>strong{font-size:14px}.episode-copy{gap:1px}
 .setup-card{padding:20px 18px}.setup-card h2{font-size:22px;margin-top:15px}.session-options{margin:18px 0}.session-option{padding:13px 5px}.setup-card .rule-note{margin-bottom:15px}
 .question-card{padding:13px 12px;gap:9px}.page-columns .question-text{font-size:14px}.page-columns .answer-option{font-size:11px;padding:9px;min-height:43px}
 .result-card{padding:18px 15px}.result-flower{font-size:32px}.result-card h1{font-size:21px}.result-numbers{margin:18px 0}.result-card>p{margin:12px 0}
 .scene-art img{width:220px;right:-20px;top:35px}.scene-heading h2{font-size:19px}.dialogue{padding:17px}.dialogue>p{font-size:14px;min-height:80px}
}
@media(max-width:360px){.header{padding-left:13px;padding-right:13px}.brand{font-size:14px}.point-pill{padding:4px 8px}.hero-title h1{font-size:24px}.episode-copy>strong{font-size:13px}.chapter-banner h2{font-size:17px}.compact-hero .character{right:-33px}.home-actions .button{font-size:11px}.result-card h1{font-size:20px}}
/* Keep the character's face below the chapter heading. */
.compact-hero .character{top:155px}
@media(max-height:700px){.compact-hero .character{top:140px;width:218px}}

/* Clearer story date and an episode-specific learning goal. */
html{display:grid;place-items:center}
body{height:min(100dvh,780px)}
.time-heading{display:flex;justify-content:space-between;align-items:center;flex-shrink:0;padding:1px 2px 4px;min-height:64px}
.time-season{font-size:12px;color:#a46f84;letter-spacing:.09em}.time-heading h2{font:27px/1.35 var(--serif);letter-spacing:.07em;margin-top:3px}
.time-chapter{text-align:right;display:grid;gap:4px}.time-chapter>span{font-size:8px;letter-spacing:.16em;color:#b89daa}.time-chapter b{font-size:11px;font-weight:500;color:#927787}
.hero-title{top:18px;left:20px}.hero-title h1{font-size:26px;line-height:1.55;margin:0}
.compact-hero .character{width:260px;top:72px;right:-21px}.compact-hero .character-label{bottom:220px;right:16px;padding:7px 11px}.compact-hero .character-label b{font-size:17px}.compact-hero .character-label>span{font-size:7px}
.home-actions{padding:19px 17px 15px;background:linear-gradient(transparent,#f6ece8ed 10%,#f6ece8 100%)}
.home-next{margin-bottom:10px}.home-next h2{font-size:15px}.home-next small{font-size:9px}
.episode-meter{margin:12px 0 15px;text-align:left}.meter-label{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:11px;color:#806977}.meter-label>span>small{font-size:9px;margin-left:5px;color:#a8909d}.meter-label strong{font:25px Georgia,serif;color:#a2637e;white-space:nowrap}.meter-label strong small{font:10px var(--sans);color:#9f8594}
.meter-track{height:7px;border-radius:8px;background:#e9d8de;margin-top:8px;overflow:hidden}.meter-track i{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,#cc9cab,#b6738d);transition:width .3s}.episode-meter>p{font-size:10px;color:#9d7d8e;margin-top:7px}.episode-meter>p b{color:#9d5875;font-size:13px}
.compact-meter{margin:0;flex-shrink:0;padding:0 3px}.compact-meter .meter-label{font-size:10px}.compact-meter .meter-label strong{font-size:20px}.compact-meter .meter-track{height:4px;margin-top:6px}
.fixed-study h2{font-size:23px;line-height:1.6;margin:15px 0 20px}.fixed-study .episode-meter{padding:15px;background:#faf2f4;border-radius:5px;margin:0 0 20px}.fixed-question-summary{margin:0 0 24px}.fixed-question-summary>b{font:30px Georgia,serif;color:#7d6375}.fixed-question-summary>b>small{font:12px var(--sans);margin-left:8px}.fixed-question-summary>p{font-size:11px;color:#9b8795;line-height:1.9;margin-top:9px}.availability-note{font-size:9px!important;margin:12px 0 0!important;line-height:1.8!important;color:#a698a1!important}
.result-card .episode-meter{margin:23px 0}
@media(min-width:600px){body{border-radius:16px;border:1px solid #e1d6dc;box-shadow:0 14px 65px #67505c1c}.toast{bottom:max(88px,calc((100dvh - 780px)/2 + 80px))}}
@media(max-width:599px){body{height:100dvh}}
@media(max-height:720px){
 .time-heading{min-height:53px}.time-heading h2{font-size:24px}.time-season{font-size:11px}.time-chapter b{font-size:10px}
 .hero-title{top:15px;left:17px}.hero-title h1{font-size:23px;line-height:1.55}
 .compact-hero .character{width:218px;top:63px;right:-15px}.compact-hero .character-label{bottom:195px;right:13px;padding:5px 9px}.compact-hero .character-label b{font-size:15px}
 .home-actions{padding:15px 13px 10px}.home-next{margin-bottom:7px}.home-next h2{font-size:14px}.episode-meter{margin:7px 0 10px}.meter-label strong{font-size:22px}.meter-track{margin-top:6px;height:5px}.episode-meter>p{margin-top:5px;font-size:9px}
 .fixed-study{padding:18px}.fixed-study h2{font-size:20px;margin:12px 0}.fixed-study .episode-meter{padding:12px;margin-bottom:14px}.fixed-question-summary{margin-bottom:16px}.fixed-question-summary>p{font-size:10px}.fixed-question-summary>b{font-size:25px}
}
@media(max-height:610px){
 .compact-hero .character{width:190px;top:31px;right:-15px}.hero-title h1{font-size:20px}.compact-hero .character-label{bottom:180px;right:10px}.compact-hero .character-label>span{display:none}.compact-hero .character-label b{font-size:13px}
 .home-actions{padding-top:12px}.home-next h2{font-size:13px}.home-next small{font-size:8px}.meter-label{font-size:10px}.meter-label strong{font-size:20px}.home-actions .button{min-height:40px;font-size:11px}.episode-meter>p{font-size:8px}.time-heading{min-height:48px}
 .fixed-study h2{font-size:18px}.fixed-question-summary>p{margin-top:4px}.fixed-study .availability-note{font-size:8px!important}
}

/* Contextual dialogue beside Ryuta, updated on home visits and learning events. */
.home-speech{position:absolute;z-index:3;top:23px;left:17px;width:190px;border:1px solid #e8d3db;border-radius:12px 12px 3px 12px;background:#fffaf6ee;box-shadow:0 6px 20px #98677e09;text-align:left;padding:13px 14px 9px}
.home-speech:after{content:'';position:absolute;right:-9px;bottom:21px;width:15px;height:15px;background:#fffaf6;border-right:1px solid #e8d3db;border-top:1px solid #e8d3db;transform:rotate(45deg)}
.speech-name{display:block;font-size:10px;letter-spacing:.09em;color:#ab748b;margin-bottom:8px}.speech-text{display:block;white-space:pre-line;font-family:var(--serif);font-size:14px;line-height:1.9;min-height:80px;color:#63515e}.speech-hint{display:flex;justify-content:space-between;align-items:center;font-size:8px;color:#b49aa7;margin-top:6px}.speech-hint>span{font-size:14px}.home-speech.speaking .speech-text{animation:line-appear .28s ease-out}
.ryuta-feedback{font-size:11px;line-height:1.7}.ryuta-feedback small{display:inline-block;color:#a77b8f;font-size:9px;margin-right:5px}
@keyframes line-appear{from{opacity:.25;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}
@media(max-height:720px){.home-speech{top:17px;left:14px;width:165px;padding:10px 11px 7px}.speech-text{font-size:12px;min-height:70px;line-height:1.85}.speech-name{font-size:9px;margin-bottom:5px}.speech-hint{margin-top:3px}}
@media(max-height:610px){.home-speech{top:12px;left:12px;width:154px;padding:9px 10px 5px}.speech-text{font-size:11px;line-height:1.75;min-height:58px}.speech-name{margin-bottom:4px}.speech-hint{font-size:7px}.home-speech:after{bottom:18px;width:11px;height:11px;right:-6px}.ryuta-feedback{font-size:10px}}
@media(prefers-reduced-motion:reduce){.home-speech.speaking .speech-text{animation:none}}

/* Practice preparation floats over the unchanged home screen. */
.study-dialog{width:calc(100% - 32px);max-width:394px;padding:0;border:1px solid #eadde2;border-radius:12px;background:#fff;box-shadow:0 18px 70px #4d35452e;color:var(--ink);max-height:calc(100dvh - 28px);overflow:auto}
.study-dialog::backdrop{background:#3d303c66;backdrop-filter:blur(3px)}
.study-dialog .fixed-study{position:relative;margin:0;padding:30px 22px 22px;border:0;border-radius:0;width:100%}
.study-dialog .close-dialog{top:11px;right:11px;width:30px;height:30px;font-size:21px}
.study-dialog .badge{max-width:calc(100% - 35px)}
.study-dialog .fixed-study h2{font-size:22px;margin:20px 0 18px}
@media(max-height:650px){.study-dialog .fixed-study{padding:24px 18px 17px}.study-dialog .fixed-study h2{font-size:20px;margin:15px 0}.study-dialog .fixed-question-summary{margin-bottom:16px}.study-dialog .fixed-study .episode-meter{padding:12px;margin-bottom:16px}.study-dialog .fixed-question-summary p{font-size:10px}}

.home-speech{cursor:default;padding-bottom:13px}.home-speech .speech-text{min-height:0}
@media(max-height:720px){.home-speech{padding-bottom:10px}}

/* Separate the episode and learning controls from the character scene. */
.home-actions{left:12px;right:12px;bottom:12px;padding:15px 15px 13px;background:#fffdfb;border:1px solid #e7d5dd;border-radius:12px;box-shadow:0 5px 18px #83566c10}
.home-next{margin-bottom:0;padding-bottom:10px;border-bottom:1px solid #eee2e7}
.home-next small{display:inline-block;color:#a36780;background:#f5e8ee;border-radius:4px;padding:2px 7px;font-size:10px;letter-spacing:.04em}
.home-next h2{margin-top:7px;color:#594452;font-size:16px;line-height:1.5}
.home-actions .episode-meter{margin:12px 0 13px}
.home-actions .meter-track{background:#f0e3e9}
@media(max-height:720px){.home-actions{left:10px;right:10px;bottom:10px;padding:12px}.home-next{padding-bottom:8px}.home-next small{font-size:9px}.home-next h2{font-size:14px;margin-top:5px}.home-actions .episode-meter{margin:9px 0 10px}}
@media(max-height:610px){.home-actions{left:9px;right:9px;bottom:9px;padding:10px}.home-next{padding-bottom:6px}.home-next small{font-size:8px;padding:1px 6px}.home-next h2{font-size:13px;margin-top:4px}.home-actions .episode-meter{margin:7px 0 8px}}

/* Nameplate on the character, separate from his dialogue. */
.compact-hero .character-label{z-index:2}

/* Opaque, high-contrast character nameplate. */
.compact-hero .character-label{background:#fff;border:1px solid #d9c3cd;box-shadow:0 3px 12px #63445018;padding:9px 13px;border-radius:6px}
.compact-hero .character-label b{color:#40313b;font-weight:600;font-size:19px;letter-spacing:.06em}
.compact-hero .character-label>span{color:#806374;font-size:8px;letter-spacing:.12em}
@media(max-height:720px){.compact-hero .character-label{padding:7px 11px}.compact-hero .character-label b{font-size:17px}}
@media(max-height:610px){.compact-hero .character-label{padding:6px 10px}.compact-hero .character-label b{font-size:15px}}

/* All six story periods are visible without opening a selector. */
.season-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;flex-shrink:0}
.season-button{min-height:44px;padding:8px 3px;border:1px solid #e4d6de;border-radius:7px;background:#fff;color:#806775;font-size:11px;white-space:nowrap}
.season-button:hover{background:#faf0f4;border-color:#c991a7}
.season-button.selected{background:#f3e1e9;border-color:#b97993;color:#874760;font-weight:600;box-shadow:inset 0 0 0 1px #b9799330}
@media(max-height:650px){body[data-view="story"] main{gap:8px}.season-buttons{gap:6px}.season-button{min-height:40px;font-size:10px;padding:6px 2px}body[data-view="story"] .chapter-banner{padding:8px 12px}body[data-view="story"] .chapter-banner h2{font-size:17px}body[data-view="story"] .episode-row{padding:4px 5px}}

/* Six compact period tabs; the chapter panel points to the selected tab. */
.season-picker{flex-shrink:0;min-width:0}
.season-picker .season-buttons{grid-template-columns:repeat(6,minmax(0,1fr));gap:4px}
.season-picker .season-button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:0;min-height:55px;padding:7px 1px;border-radius:7px;font-size:12px;line-height:1.4;white-space:nowrap}
.season-picker .season-button small{font-size:9px;font-weight:400;letter-spacing:0}
.season-picker .season-button.selected{background:#f3e1e9;border-color:#c593a9;box-shadow:none}
.season-picker .chapter-banner{position:relative;margin:13px 0 0;padding:16px;background:#f3e1e9;border:1px solid #dfbfce;border-radius:8px}
.season-picker .chapter-banner:before{content:'';position:absolute;top:-7px;left:var(--chapter-anchor);width:12px;height:12px;transform:translateX(-50%) rotate(45deg);border-top:1px solid #dfbfce;border-left:1px solid #dfbfce;background:#f3e1e9}
.season-picker .chapter-banner .eyebrow{font-size:9px;color:#9a5977;letter-spacing:.14em}
.season-picker .chapter-banner h2{font-size:20px;line-height:1.6;margin-top:5px}
@media(max-width:360px){.season-picker .season-button{font-size:11px}.season-picker .season-button small{font-size:8px}.season-picker .chapter-banner{padding:13px}.season-picker .chapter-banner h2{font-size:18px}}
@media(max-height:650px){.season-picker .season-button{min-height:49px;padding:6px 1px}.season-picker .chapter-banner{padding:11px 13px}.season-picker .chapter-banner h2{font-size:17px}}

/* A compact study companion in the existing progress area, not over the question. */
.practice-companion{display:flex;align-items:center;gap:12px;flex-shrink:0;min-height:48px}
.practice-avatar{position:relative;width:48px;height:48px;flex:0 0 48px;overflow:hidden;border-radius:50%;background:#f0e2e7;border:1px solid #dec4d0}
.practice-avatar img{position:absolute;width:108px;max-width:none;left:-30px;top:-2px;mix-blend-mode:multiply}
.practice-companion .compact-meter{flex:1;min-width:0;padding:0}
@media(max-height:650px){.practice-companion{min-height:42px;gap:10px}.practice-avatar{width:42px;height:42px;flex-basis:42px}.practice-avatar img{width:98px;left:-28px;top:-2px}}

/* Ryuta accompanies the whole study flow in one compact, reserved row. */
.study-buddy{display:flex;align-items:center;gap:12px;min-height:94px;flex-shrink:0;text-align:left}
.buddy-portrait{position:relative;width:76px;height:88px;flex:0 0 76px;overflow:hidden;border-radius:12px;background:#f1e3e8}
.buddy-portrait img{position:absolute;width:100px;max-width:none;left:-12px;top:0;mix-blend-mode:multiply}
.buddy-content{flex:1;min-width:0}.buddy-name{display:block;color:#93627b;font-size:11px;font-weight:600;line-height:1.5}.buddy-name small{font-size:8px;color:#aa94a1;margin-left:6px;font-weight:400}.buddy-line{font-family:var(--serif);font-size:13px;line-height:1.65;color:#574650;margin:4px 0 8px;min-height:22px;overflow-wrap:anywhere}
.buddy-content .compact-meter{margin:0;padding:0}.buddy-content .meter-label{font-size:9px}.buddy-content .meter-label strong{font-size:18px}.buddy-content .meter-label strong small{font-size:9px}.buddy-content .meter-track{margin-top:4px}
.practice-actions{display:flex;gap:8px;flex-shrink:0}.practice-actions .button{flex:1;min-width:0;min-height:43px;padding:10px;font-size:11px}
.question-card .feedback{padding:7px 12px}.question-card .feedback strong{font-size:14px}
.result-card .study-buddy{margin-bottom:18px}.result-card .buddy-line{margin-bottom:0}.result-card h1{font-size:22px}
.study-dialog .study-buddy{margin:0 0 16px;min-height:70px}.study-dialog .buddy-portrait{height:70px;width:65px;flex-basis:65px}.study-dialog .buddy-portrait img{left:-17px}.study-dialog .buddy-line{margin-bottom:0}
@media(max-height:650px){.study-buddy{gap:9px;min-height:78px}.buddy-portrait{width:62px;height:74px;flex-basis:62px}.buddy-portrait img{width:92px;left:-15px}.buddy-name{font-size:10px}.buddy-name small{display:none}.buddy-line{font-size:11px;line-height:1.6;margin:3px 0 5px;min-height:18px}.buddy-content .meter-label{font-size:8px}.buddy-content .meter-label>span>small{font-size:8px}.buddy-content .meter-label strong{font-size:16px}.practice-actions .button{font-size:10px;min-height:40px;padding:8px}.result-card .study-buddy{margin-bottom:12px}.result-card h1{font-size:20px}.study-dialog .study-buddy{margin-bottom:12px}}
/* Keep the result and its companion within the same small-screen viewport. */
@media(max-height:650px){
 .result-card:has(.study-buddy){padding:14px}
 .result-card:has(.study-buddy) h1{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);margin:0}
 .result-card:has(.study-buddy) .study-buddy{margin-bottom:10px}
 .result-card:has(.study-buddy) .episode-meter{margin:10px 0}
 .result-card:has(.study-buddy)>p{margin:8px 0;font-size:11px}
 .result-card:has(.study-buddy) .unlock-note{margin:10px 0;padding:8px;font-size:10px}
 .result-card:has(.study-buddy) .unlock-note strong{font-size:14px;margin-top:3px}
 .result-card:has(.study-buddy)>.button{min-height:40px;padding:9px 12px;font-size:11px}
 .result-card:has(.study-buddy)>.ghost{margin-top:8px}
}

/* A small scene above the question keeps Ryuta facing the learner. */
body[data-view="study"]{grid-template-rows:minmax(0,1fr)}
body[data-view="study"]>.header,body[data-view="study"]>.mobile-nav{display:none}
body[data-view="study"] main{padding-top:max(12px,env(safe-area-inset-top));padding-bottom:max(12px,env(safe-area-inset-bottom));gap:12px}
.study-dock{position:relative;display:flex;align-items:center;gap:12px;flex:0 0 130px;min-height:130px;width:100%;text-align:left}
.dock-speech{position:relative;flex:1;min-width:0;background:#fff;border:1px solid #e2ced7;border-radius:14px;padding:14px 16px;color:#57434e;font-family:var(--serif);font-size:14px;line-height:1.8;white-space:pre-line;overflow-wrap:anywhere}
.dock-speech:after{content:'';position:absolute;right:-6px;top:50%;width:10px;height:10px;background:#fff;border-top:1px solid #e2ced7;border-right:1px solid #e2ced7;transform:rotate(45deg)}
.dock-character{position:relative;flex:0 0 114px;height:130px;overflow:hidden}
.dock-character img{position:absolute;width:142px;max-width:none;left:-14px;top:0;mix-blend-mode:multiply}
.dock-name{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);white-space:nowrap;padding:3px 10px;background:#fff;border:1px solid #dec8d2;border-radius:4px;font-size:11px;color:#59404e;font-family:var(--serif)}
.result-card .study-dock{min-height:180px;margin-bottom:20px}
.result-card .dock-character{height:180px;flex-basis:128px}
.result-card .dock-character img{width:166px;left:-19px}
@media(max-height:650px){
 body[data-view="study"] main{gap:8px;padding-top:max(8px,env(safe-area-inset-top))}
 .study-dock{flex-basis:108px;min-height:108px;gap:10px}
 .dock-character{height:108px;flex-basis:96px}
 .dock-character img{width:124px;left:-14px}
 .dock-speech{font-size:12px;padding:11px 12px;line-height:1.75}
 .dock-name{font-size:10px;bottom:8px;padding:2px 8px}
 .result-card{padding:18px;margin:auto 0}
 .result-card .study-dock{min-height:130px;margin-bottom:12px}
 .result-card .dock-character{height:130px;flex-basis:106px}
 .result-card .dock-character img{width:140px;left:-17px}
}

body[data-view="study"] main>.study-dock{background:radial-gradient(ellipse at 78% 90%,#eedfdf 0%,#f6ece780 38%,transparent 72%);padding:0 8px}
@media(max-height:650px){body[data-view="study"] main{padding-bottom:max(8px,env(safe-area-inset-bottom))}}

/* The header opens the character directory; reading stays inside the phone. */
.header-character-nav{margin-left:auto;flex-shrink:0}
.header-character-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:44px;min-width:68px;color:#957684;padding:4px;border-radius:7px;font-size:9px;line-height:1.4}
.header-character-nav svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.4}
.header-character-nav button.active{background:#f3e5eb;color:#995c76}
.cast-list{display:flex;flex-direction:column;gap:14px;flex:1;min-height:0}
.cast-card{position:relative;isolation:isolate;flex:1;min-height:0;overflow:hidden;width:100%;border:1px solid #e7d6de;border-radius:12px;background:linear-gradient(130deg,#fcf6f3,#f0e0e3);text-align:left;padding:24px 18px}
.cast-card img{position:absolute;right:-24px;top:20px;width:235px;max-width:none;mix-blend-mode:multiply;z-index:-1}
.cast-copy{height:100%;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;max-width:60%}
.cast-copy>p{font-size:11px;margin:14px 0 26px;color:#735566}
.cast-copy>small,.profile-intro p{font-size:10px;color:#8e7381;letter-spacing:.07em}
.cast-copy h2{font:27px/1.5 var(--serif);color:#4d3745;margin:4px 0 22px;letter-spacing:.05em}
.cast-open{padding:8px 10px;background:#fff;border:1px solid #e4d0da;border-radius:5px;font-size:10px;color:#925c76}
.secret-cast-list{display:grid;grid-template-columns:1fr 1fr;gap:12px;flex:0 0 124px}
.secret-cast{position:relative;isolation:isolate;overflow:hidden;display:flex;flex-direction:column;justify-content:center;align-items:center;border:1px solid #e6dfe3;border-radius:10px;background:#f0ecef;color:#93838e}
.secret-cast>span{font-size:9px}.secret-cast strong{font:17px/1.6 Georgia,serif;letter-spacing:.16em;margin-top:4px}.secret-cast small{font-size:9px;margin-top:4px}
.secret-silhouette{position:absolute;z-index:-1;top:22px;width:35px;height:39px;border-radius:50%;background:#dfd7de}
.secret-silhouette:after{content:'';position:absolute;top:39px;left:-30px;width:95px;height:90px;border-radius:50% 50% 0 0;background:#dfd7de}
.profile-back{align-self:flex-start;min-height:32px;flex-shrink:0}
.profile-intro{display:flex;justify-content:space-between;align-items:center;flex:0 0 138px;min-height:0;padding-left:10px;background:radial-gradient(ellipse at 80% 100%,#eedfe1,transparent 70%)}
.profile-intro .badge{font-size:9px;margin-bottom:12px}.profile-intro h1{font:27px/1.6 var(--serif);letter-spacing:.05em}.profile-intro small{font-size:8px;color:#977586;letter-spacing:.14em}
.profile-portrait{position:relative;overflow:hidden;height:138px;flex:0 0 120px}
.profile-portrait img{position:absolute;max-width:none;width:150px;left:-15px;top:0;mix-blend-mode:multiply}
.profile-tabs{display:flex;gap:4px;border-bottom:1px solid #e5d6de;flex-shrink:0}
.profile-tabs button{flex:1;min-height:40px;padding:8px 2px;font-size:11px;color:#97818d;border-bottom:2px solid transparent}
.profile-tabs button[aria-pressed="true"]{color:#985b76;border-bottom-color:#ba7789;background:#f6edf1}
.profile-details{display:flex;flex-direction:column;flex:1;min-height:0;gap:8px;background:#fff;border:1px solid #eadfe4;border-radius:9px;padding:15px}
.profile-paragraph{font-size:13px;line-height:1.95;margin:0 0 14px;color:#594c56}
.profile-facts{margin:0 0 14px}.profile-facts>div{break-inside:avoid;display:grid;grid-template-columns:54px 1fr;gap:7px;padding:8px 0;border-bottom:1px solid #f0e8ec;font-size:11px;line-height:1.7}.profile-facts dt{color:#9a7e8e}.profile-facts dd{margin:0;color:#594c56}
@media(max-height:700px){.cast-card{padding:14px}.cast-card img{width:196px;top:10px;right:-25px}.cast-copy>p{margin:9px 0 16px}.cast-copy h2{font-size:24px;margin-bottom:15px}.secret-cast-list{flex-basis:100px}.profile-intro{flex-basis:108px}.profile-portrait{height:108px;flex-basis:99px}.profile-portrait img{width:126px;left:-13px}.profile-intro h1{font-size:24px}.profile-intro .badge{margin-bottom:6px}.profile-details{padding:12px}.profile-paragraph{font-size:12px}}
@media(max-width:360px){.header{padding-left:12px;padding-right:12px;gap:6px}.header .brand{font-size:12px;gap:8px}.header .brand-mark{font-size:24px}.header-character-nav button{min-width:63px;font-size:8px}.cast-open{font-size:9px;padding:7px}.cast-copy>p{font-size:10px}.profile-tabs button{font-size:10px}}

/* Read explanations continuously while the companion and actions stay visible. */
.explanation-scroll{flex:1;min-height:0;min-width:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior-y:contain;scrollbar-width:thin;scrollbar-color:#c9a5b6 transparent;scrollbar-gutter:stable;padding:3px 7px 8px 1px;-webkit-overflow-scrolling:touch}
.explanation-scroll:focus-visible{outline:2px solid #ba7789;outline-offset:2px;border-radius:3px}
.explanation-scroll .explanation-paragraph:last-child{margin-bottom:0}
.explanation-scroll table{width:100%;table-layout:fixed;overflow-wrap:anywhere}

/* Separate each choice explanation without boxing in the text. */
.explanation-scroll>.explanation-paragraph{margin-bottom:0}
.explanation-scroll>.explanation-paragraph+.explanation-paragraph{border-top:1px dashed #d6c4ce;margin-top:18px;padding-top:18px}

/* Full-stage visual novel: location, centered character, readable dialogue. */
.story-dialog.visual-novel{width:min(430px,100%);max-width:430px;height:min(780px,100dvh);max-height:100dvh;padding:0;border:0;border-radius:14px;overflow:hidden;background:#e8ddd8;box-shadow:0 20px 90px #34233266}
.story-dialog.visual-novel[open]{display:block}
.visual-novel::backdrop{background:#28212d99;backdrop-filter:blur(5px)}
.novel-stage{position:relative;isolation:isolate;width:100%;height:100%;display:flex;flex-direction:column;justify-content:flex-end;padding:14px;background-image:var(--scene-background);background-size:cover;background-position:center}
.novel-shade{position:absolute;inset:0;z-index:-1;background:linear-gradient(#25313e66,transparent 28%,transparent 52%,#3f303540)}
.novel-header{position:absolute;top:max(17px,env(safe-area-inset-top));left:18px;right:18px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;color:white;text-shadow:0 1px 5px #26314180;z-index:3}
.novel-header>div{min-width:0}.novel-header span{font-size:9px;letter-spacing:.05em}.novel-header h2{font:18px/1.6 var(--serif);margin:5px 0 0}
.novel-header .close-dialog{position:static;flex:0 0 34px;width:34px;height:34px;background:#ffffffed;color:#6e5363;border:1px solid #fff;border-radius:50%;font-size:23px;text-shadow:none}
.novel-location{position:absolute;top:90px;left:18px;padding:4px 10px;border-radius:20px;background:#fffcf3ed;border:1px solid #fff9;font-size:10px;color:#745c65;z-index:3}
.novel-portrait{position:absolute;inset:112px 0 0;z-index:-1;overflow:hidden;pointer-events:none}
.novel-portrait img{position:absolute;top:0;left:50%;transform:translateX(-50%);width:310px;max-width:none;filter:drop-shadow(0 8px 15px #40334430)}
.novel-portrait.remote-portrait{opacity:.92}
.novel-remote{position:absolute;right:18px;top:94px;background:#ffffffde;color:#796378;padding:2px 7px;font-size:9px;border-radius:3px}
.novel-dialogue{position:relative;z-index:2;background:#fffcf9fa;border:1px solid #fff;border-radius:12px;box-shadow:0 6px 30px #47334320;padding:23px 18px 12px;margin-bottom:env(safe-area-inset-bottom,0px);min-height:194px}
.novel-speaker{position:absolute;top:-15px;left:15px;min-width:102px;min-height:29px;padding:4px 18px;background:#a96f87;border:1px solid #efdae4;border-radius:6px;color:#fff;font-family:var(--serif);font-size:13px;text-align:center}
.novel-text{font-family:var(--serif);font-size:15px;line-height:1.95;color:#473c47;min-height:94px;margin:0;overflow-wrap:anywhere}
.novel-controls{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:12px;min-height:38px}
.novel-page{font-size:9px;color:#9d8694;font-variant-numeric:tabular-nums}.novel-controls button{min-height:40px;padding:7px 0 7px 14px;font-size:11px;color:#985d79}.novel-controls button span{margin-left:7px;color:#b78399}
.novel-choices{display:grid;gap:8px;margin-top:10px}.novel-choices button{display:flex;align-items:center;justify-content:space-between;gap:8px;text-align:left;min-height:44px;padding:10px 12px;border:1px solid #d9b8c8;border-radius:7px;background:#fff;color:#725363;font-size:12px;line-height:1.65}.novel-choices button:hover{background:#f7eaf0;border-color:#b67a96}.novel-choices button span{color:#bd92a6;font-size:19px}.novel-choice-hint{font-size:9px;color:#a28a97}
.visual-novel[data-choosing="true"] .novel-text{min-height:0;font-size:13px}
@media(max-width:599px){.story-dialog.visual-novel{border-radius:0}}
@media(max-height:650px){.novel-stage{padding:11px}.novel-header{top:max(12px,env(safe-area-inset-top));left:14px;right:14px}.novel-header h2{font-size:16px}.novel-location{top:78px;left:14px}.novel-portrait{top:100px}.novel-portrait img{width:247px}.novel-remote{top:82px;right:14px}.novel-dialogue{padding:20px 14px 8px;min-height:175px}.novel-text{font-size:13px;line-height:1.9;min-height:77px}.novel-controls{margin-top:8px}.novel-choices{gap:6px;margin-top:8px}.novel-choices button{padding:7px 10px;font-size:11px;min-height:44px}}

.novel-speaker.narrator-label{visibility:hidden}
@media(max-width:599px){.story-dialog.visual-novel{height:100dvh}}

/* Speaker identity uses position and name as well as color. */
.visual-novel[data-speaker="character"] .novel-dialogue{margin-right:8px;background:#fcfdff;border-color:#c1cbd9;box-shadow:inset 3px 0 #6c7f9a,0 6px 30px #47334320}
.visual-novel[data-speaker="character"] .novel-speaker{left:15px;right:auto;background:#526781;border-color:#b5c3d4}
.visual-novel[data-speaker="character"] .novel-controls button{color:#526781}
.visual-novel[data-speaker="protagonist"] .novel-dialogue{margin-left:8px;background:#fff3f7;border-color:#dfbbcc;box-shadow:inset -3px 0 #b67c95,0 6px 30px #47334320}
.visual-novel[data-speaker="protagonist"] .novel-speaker{left:auto;right:15px;background:#a46181;border-color:#e5bfcf}
.visual-novel[data-speaker="protagonist"] .novel-portrait{filter:brightness(.94) saturate(.8)}
.visual-novel[data-speaker="narration"] .novel-dialogue{background:#fffcf9;border-color:#e7ddd5;box-shadow:0 6px 30px #47334320}
.visual-novel[data-speaker="narration"] .novel-text{color:#73685f}

/* A framed visual-novel message window with a clear name ribbon and reading area. */
.visual-novel .novel-stage{padding:12px}
.visual-novel .novel-dialogue{--dialogue-accent:#78675d;--dialogue-rule:#ddd0bf;--dialogue-paper:#fffdf8;min-height:220px;margin-left:0;margin-right:0;padding:29px 22px 12px;border:1px solid var(--dialogue-rule);border-radius:7px;background:var(--dialogue-paper);box-shadow:0 8px 30px #30202d38,0 0 0 3px #fffcf650;isolation:isolate}
.visual-novel .novel-dialogue:before{content:'';position:absolute;inset:5px;border:1px solid var(--dialogue-rule);border-radius:3px;opacity:.65;pointer-events:none;z-index:-1}
.visual-novel[data-speaker="character"] .novel-dialogue{--dialogue-accent:#425872;--dialogue-rule:#bbc8d5;--dialogue-paper:#fffefa;background:var(--dialogue-paper);border-color:var(--dialogue-rule);box-shadow:0 8px 30px #30202d38,0 0 0 3px #fffcf650}
.visual-novel[data-speaker="protagonist"] .novel-dialogue{--dialogue-accent:#964b6c;--dialogue-rule:#dab4c6;--dialogue-paper:#fff8fb;background:var(--dialogue-paper);border-color:var(--dialogue-rule);box-shadow:0 8px 30px #30202d38,0 0 0 3px #fffcf650}
.visual-novel[data-speaker="narration"] .novel-dialogue{background:var(--dialogue-paper);border-color:var(--dialogue-rule);box-shadow:0 8px 30px #30202d38,0 0 0 3px #fffcf650}
.visual-novel .novel-speaker{top:-19px;min-width:140px;min-height:36px;padding:5px 25px 6px;background:var(--dialogue-accent);border:1px solid #f1e3cf;border-radius:7px 7px 3px 3px;box-shadow:0 2px 6px #34293720;font-size:15px;font-weight:600;letter-spacing:.1em;color:#fff;line-height:1.6}
.visual-novel[data-speaker="character"] .novel-speaker{left:17px;right:auto;background:var(--dialogue-accent);border-color:#ede0cd}
.visual-novel[data-speaker="protagonist"] .novel-speaker{right:17px;left:auto;background:var(--dialogue-accent);border-color:#efd7df}
.visual-novel .novel-speaker:before,.visual-novel .novel-speaker:after{content:'◇';position:absolute;top:8px;font:12px/1.6 Georgia,serif;opacity:.65}.visual-novel .novel-speaker:before{left:10px}.visual-novel .novel-speaker:after{right:10px}
.visual-novel .novel-text{font-family:var(--sans);font-size:16px;line-height:1.95;font-weight:400;letter-spacing:.025em;min-height:116px;color:#302c35;line-break:strict}
.visual-novel[data-speaker="narration"] .novel-text{color:#534940;font-family:var(--serif)}
.visual-novel .novel-controls{margin-top:12px;padding-top:6px;min-height:44px;border-top:1px solid var(--dialogue-rule)}
.visual-novel .novel-page{color:#8d7d87;font-size:10px;letter-spacing:.08em}
.visual-novel .novel-controls button{display:flex;align-items:center;justify-content:flex-end;gap:12px;min-width:90px;min-height:44px;padding:5px 0 5px 16px;color:var(--dialogue-accent);font-size:13px;font-weight:600;letter-spacing:.08em}
.visual-novel .novel-controls button span{font-size:19px;margin:0;color:var(--dialogue-accent)}
.visual-novel .novel-choices{gap:10px;margin-top:14px}
.visual-novel .novel-choices button{border:1px solid #cfa6ba;border-radius:5px;background:#fff;min-height:49px;padding:11px 14px;font-size:14px;line-height:1.7;color:#62384e;box-shadow:0 2px 5px #7b4b6010}
.visual-novel .novel-choices button:hover{background:#f8e9f0;border-color:#a76b89}
.visual-novel .novel-choice-hint{font-size:10px;color:#8b6679}
.visual-novel[data-choosing="true"] .novel-text{min-height:0;font-family:var(--sans);font-size:14px;line-height:1.85}
@media(max-height:650px){.visual-novel .novel-stage{padding:10px}.visual-novel .novel-dialogue{padding:25px 18px 8px;min-height:201px}.visual-novel .novel-text{font-size:15px;line-height:1.85;min-height:104px}.visual-novel .novel-controls{margin-top:8px;padding-top:4px}.visual-novel .novel-speaker{font-size:14px;min-width:130px}.visual-novel .novel-choices{gap:8px;margin-top:10px}.visual-novel .novel-choices button{font-size:13px;min-height:46px;padding:9px 11px}.visual-novel[data-choosing="true"] .novel-text{font-size:13px}}

/* The story surface advances on tap; answers and close retain their own actions. */
.novel-advance-surface{position:absolute;inset:0;z-index:0;width:100%;height:100%;padding:0;border:0;background:transparent;cursor:pointer;touch-action:manipulation}
.novel-advance-surface:not(:disabled):active{transform:none}
.novel-advance-surface:focus-visible{outline:2px solid #fff;outline-offset:-5px}
.visual-novel[data-choosing="false"] .novel-dialogue{cursor:pointer;touch-action:manipulation}
.visual-novel .novel-dialogue{min-height:180px;padding-bottom:24px}
@media(max-height:650px){.visual-novel .novel-dialogue{min-height:169px;padding-bottom:20px}}

/* Lift the dialogue above the bottom edge while retaining room for the face. */
.visual-novel .novel-dialogue{margin-bottom:calc(clamp(24px,7dvh,60px) + env(safe-area-inset-bottom,0px))}
@media(max-height:650px){.visual-novel .novel-dialogue{margin-bottom:calc(28px + env(safe-area-inset-bottom,0px))}}

/* Explain the story → fixed questions → next story loop at the first handoff. */
.home-next{position:relative}.guide-help{position:absolute;right:0;top:-4px;width:32px;height:32px;border:1px solid #dfcbd5;border-radius:50%;background:#fff;color:#976a81;font-family:Georgia,serif;font-size:15px;line-height:1}.home-next>small{max-width:calc(100% - 38px)}
.guide-dialog{width:calc(100% - 28px);max-width:394px;max-height:calc(100dvh - 24px);padding:0;border:1px solid #e4d2dc;border-radius:14px;background:#fffcfa;color:#493b47;box-shadow:0 16px 70px #3d243c40;overflow:auto}
.guide-dialog::backdrop{background:#362b3e80;backdrop-filter:blur(4px)}
.guide-content{position:relative;padding:27px 24px 16px}.guide-content .close-dialog{top:12px;right:12px;width:30px;height:30px;font-size:22px}.guide-kicker{font-size:10px;color:#9b7187;letter-spacing:.08em}.guide-content h2{font:22px/1.6 var(--serif);margin:14px 0 11px;padding-right:10px}.guide-intro{font-size:12px;line-height:1.9;color:#73626e}
.guide-flow{list-style:none;padding:0;margin:20px 0;display:grid;gap:14px}.guide-flow li{display:flex;gap:12px;align-items:flex-start}.guide-flow li>b{display:flex;align-items:center;justify-content:center;flex:0 0 28px;height:28px;background:#f1e3eb;color:#a26784;border-radius:50%;font:16px Georgia,serif}.guide-flow strong{font-size:13px;font-weight:600}.guide-flow p{font-size:11px;line-height:1.8;color:#84727e;margin-top:3px}
.guide-goal{margin:20px 0;padding:18px 15px;border:1px solid #e9d4df;background:#f7edf2;border-radius:9px}.guide-goal>span{font-size:10px;color:#9d7088}.guide-goal p{font-size:14px;margin:8px 0}.guide-goal strong{font:600 23px var(--serif);color:#a65c7e}.guide-goal small{font-size:11px;line-height:1.8;color:#7e6475;display:block}
.guide-retry{font-size:11px;line-height:1.9;color:#897580;padding-top:13px;border-top:1px dashed #dbc7d2;margin-bottom:18px}.guide-content .button{min-height:46px}.guide-later{display:block;margin:8px auto 0;padding:6px 12px;font-size:11px;color:#947d8a;min-height:34px}
@media(max-height:650px){.guide-content{padding:22px 18px 12px}.guide-content h2{font-size:20px;margin:10px 0 8px}.guide-intro{font-size:11px;line-height:1.8}.guide-flow{margin:14px 0;gap:10px}.guide-flow li{gap:10px}.guide-flow strong{font-size:12px}.guide-flow p{font-size:10px}.guide-retry{font-size:10px;padding-top:10px;margin-bottom:12px}.guide-goal{margin:14px 0;padding:13px}.guide-content .button{min-height:44px}.guide-later{margin-top:4px;min-height:30px}}

/* Reviewed progression: revisiting sets and a clear ending, within one screen. */
.episode-item{display:flex;align-items:stretch;min-width:0;min-height:0;border-bottom:1px solid var(--line);gap:5px}
body[data-view="story"] .episode-item .episode-row{flex:1;min-width:0;width:auto;border:0;text-align:left;gap:9px}
.episode-item .episode-copy>strong{line-height:1.45}.episode-item .episode-copy>small{line-height:1.6}
.episode-review{align-self:center;flex:0 0 66px;min-height:46px;border:1px solid #dfccd7;border-radius:7px;background:#fff9fc;color:#93697f;font-size:10px;padding:6px 3px;line-height:1.6}
.episode-review span{display:block;font-size:9px;color:#9b8994}
.episode-meter .meter-label .goal-complete{font:600 13px var(--sans);color:#6a8278;white-space:nowrap}
.next-story-date{font-size:10px;color:#967b8d;margin:5px 0 0;line-height:1.4}
.route-complete-note{font-size:11px;color:#917e8b;margin:12px 0 16px;line-height:1.6}
.study-review-all{display:block;width:100%;font-size:11px;color:#93758a;min-height:40px;padding:10px 0 0}
.ending-dialog{width:calc(100% - 30px);max-width:390px;max-height:calc(100dvh - 28px);padding:0;border:1px solid #ddc6d3;border-radius:16px;background:linear-gradient(155deg,#fffcf8,#f6e9ee);box-shadow:0 20px 70px #49344744;overflow:hidden}
.ending-dialog::backdrop{background:#45344588;backdrop-filter:blur(5px)}
.ending-content{padding:25px 23px 22px;text-align:center;display:flex;flex-direction:column;align-items:center}
.ending-kicker{font-size:9px;letter-spacing:.15em;color:#a46d89}.ending-content h2{font:22px/1.6 var(--serif);margin:12px 0 10px;color:#6b5264}
.ending-content img{width:170px;height:230px;object-fit:cover;object-position:top;mask-image:linear-gradient(#000 85%,transparent)}
.ending-content p{font-size:12px;line-height:1.9;color:#8a7482;margin:14px 0 20px}.ending-content .button{min-height:44px}
.toast{bottom:calc(76px + env(safe-area-inset-bottom,0px));max-width:calc(100% - 40px);font-size:11px;padding:10px 16px}
@media(max-height:650px){.ending-content{padding:20px 18px 17px}.ending-content h2{font-size:20px}.ending-content img{height:175px;width:140px}.ending-content p{margin:9px 0 16px}.episode-review{flex-basis:60px;font-size:9px;min-height:44px}.episode-item .episode-copy>strong{font-size:12px}.episode-item .episode-copy>small{font-size:8px}.episode-item .episode-num{font-size:18px}.episode-item .episode-status{font-size:13px}.next-story-date{font-size:9px}.route-complete-note{font-size:10px;margin:9px 0 11px}}

/* Bring the character closer without taking space from text or controls. */
.visual-novel .novel-portrait img{width:480px;top:0}
.dock-character img,.result-card .dock-character img{width:250px;left:50%;transform:translateX(-50%);top:-4px}
.result-card .dock-character img{width:290px}
.buddy-portrait img,.study-dialog .buddy-portrait img{width:190px;left:50%;transform:translateX(-50%);top:-3px}
.cast-card img{width:340px;right:-85px;top:12px}
.profile-portrait img{width:280px;left:50%;transform:translateX(-50%);top:-4px}
.ending-content img{width:260px;object-fit:cover;object-position:top}
@media(max-height:720px){.cast-card img{width:300px;right:-85px;top:4px}.profile-portrait img{width:240px}}
@media(max-height:650px){
 .visual-novel .novel-portrait img{width:370px}
 .dock-character img{width:220px;top:-4px}
 .result-card .dock-character img{width:250px}
 .ending-content img{width:230px}
}

/* Study and explanation share a face-focused companion without a nameplate. */
body[data-view="study"] main>.study-dock{padding:0;gap:10px;background:none}
body[data-view="study"] main>.study-dock .dock-character{flex-basis:140px;height:130px;background:radial-gradient(ellipse at 50% 85%,#eddee5,transparent 72%)}
body[data-view="study"] main>.study-dock .dock-character img{width:360px;top:-9px;mix-blend-mode:normal;mask-image:linear-gradient(#000 0 88%,transparent 100%);mask-size:100% 139px;mask-repeat:no-repeat}
body[data-view="study"] main>.study-dock .dock-speech{font-size:13px;padding:12px 14px;line-height:1.8}
@media(max-height:650px){
 body[data-view="study"] main>.study-dock .dock-character{flex-basis:118px;height:108px}
 body[data-view="study"] main>.study-dock .dock-character img{width:310px;top:-9px;mask-size:100% 117px}
 body[data-view="study"] main>.study-dock .dock-speech{font-size:12px;padding:10px 12px;line-height:1.75}
}

/* Answer choices stay together; only exceptionally long content scrolls locally. */
.question-reading{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#d6bbc9 transparent;padding:0 2px 2px;scroll-padding:6px}
.question-reading .question-text{font-size:15px;line-height:1.7;font-weight:500;margin:0 0 12px;overflow-wrap:anywhere}
.question-reading .answer-option{display:flex;align-items:center;gap:9px;min-height:44px;margin:0 0 7px;padding:8px 10px;font-size:13px;line-height:1.6;text-align:left;overflow-wrap:anywhere}
.question-reading .answer-option:last-child{margin-bottom:0}
.question-reading .answer-option>span:nth-child(2){flex:1;min-width:0}
.question-reading .answer-number{flex:0 0 24px}.question-reading .answer-mark{flex:0 0 10px}
@media(max-height:650px){
 .question-reading .question-text{font-size:14px;line-height:1.65;margin-bottom:10px}
 .question-reading .answer-option{font-size:12px;line-height:1.55;padding:7px 9px;margin-bottom:6px}
}

/* Milestone scenes keep the familiar dialogue layout, with a warmer frame. */
.visual-novel[data-special="true"] .novel-header>div>span{color:#fff0cb;font-weight:600;letter-spacing:.07em}
.visual-novel[data-special="true"] .novel-location{background:#fff8e9;border-color:#d6b47b;color:#755631}
.visual-novel[data-moment="true"] .novel-shade{background:linear-gradient(#34253b88,transparent 35%,#d8a76318 65%,#4c324758)}
.visual-novel[data-moment="true"] .novel-dialogue{box-shadow:0 8px 30px #30202d38,0 0 0 3px #ead3a777}
.visual-novel[data-moment="true"] .novel-dialogue:before{border-color:#c8a76a;opacity:.8}
.visual-novel[data-moment="true"] .novel-choices button{border-color:#cbb087;background:linear-gradient(110deg,#fff,#fff9ef)}
.visual-novel[data-moment="true"] .novel-choices button:hover{background:#fff1dc;border-color:#ad854b}

/* A dedicated, tap-to-enter title sequence makes special episodes unmistakable. */
.special-scene-badge{display:inline-block;padding:2px 7px;margin-right:3px;background:#fff0cf;color:#694a2b;border:1px solid #e3bd77;border-radius:3px;font-size:10px;line-height:1.5;text-shadow:none;letter-spacing:.12em}
.visual-novel .special-intro{justify-content:center;align-items:center;padding:34px 25px;text-align:center;background-position:center;overflow:hidden}
.special-intro-portrait{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.special-intro-portrait img{position:absolute;width:500px;max-width:none;left:50%;top:12%;transform:translateX(-50%);opacity:.48;filter:sepia(.15)}
.special-intro-shade{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,#342532ab,#3b253dde 40%,#412e41ee 72%,#332837f5)}
.special-intro:before,.special-intro:after{content:'';position:absolute;inset:15px;border:1px solid #d8b78299;pointer-events:none;border-radius:5px}
.special-intro:after{inset:21px;border-color:#d8b78238}
.special-intro-copy{position:relative;width:100%;color:#fff8ee;animation:special-arrive .65s ease-out both}
.special-intro-kicker{display:block;color:#edd4ab;font-size:10px;letter-spacing:.26em}
.special-intro-badge{display:inline-block;margin:18px 0 0;padding:7px 24px;border:1px solid #e6c793;border-radius:2px;color:#fff1d4;background:#c79f5326;font:600 20px/1.5 var(--serif);letter-spacing:.35em;text-indent:.35em}
.special-intro-ornament{display:flex;align-items:center;gap:14px;margin:25px auto 20px;width:70%;color:#e4c38c;font-size:23px}
.special-intro-ornament:before,.special-intro-ornament:after{content:'';height:1px;flex:1;background:linear-gradient(90deg,transparent,#dcc28d)}
.special-intro-ornament:after{transform:rotate(180deg)}
.special-intro-copy h2{font:500 27px/1.8 var(--serif);letter-spacing:.08em;text-wrap:balance;color:#fff8ee;text-shadow:0 2px 16px #201826}
.special-intro-episode{font-size:11px;line-height:1.8;margin-top:20px;color:#ecdccb}
.special-intro-date{font-size:10px;letter-spacing:.1em;margin-top:7px;color:#cfb9c4}
.visual-novel .special-intro-hint.novel-text{font:11px/1.8 var(--sans);letter-spacing:.1em;color:#f1daba;min-height:0;margin:42px 0 0}
.special-intro .special-intro-close{position:absolute;top:max(29px,env(safe-area-inset-top));right:27px;z-index:3;width:34px;height:34px;min-height:34px;border:1px solid #dec19688;background:#3e2a3de8;color:#fff2dc;border-radius:50%;font-size:23px;line-height:1}
@keyframes special-arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(max-height:650px){.special-intro-copy h2{font-size:24px}.special-intro-badge{font-size:18px;margin-top:14px}.special-intro-ornament{margin:18px auto 14px}.visual-novel .special-intro-hint.novel-text{margin-top:28px}.special-intro-episode{margin-top:15px}}
@media(prefers-reduced-motion:reduce){.special-intro-copy{animation:none}}
