:root{--surface:#f2f0eb;--surface-raised:#fff;--surface-sunken:#f2efe8;--surface-sunken-deep:#e8e3d8;--text-primary:#2a2622;--text-secondary:#6b645c;--accent:#8a7a5c;--accent-text:#6f6248;--danger:#b3261e;--text-on-danger:#fff;--border-subtle:#e3ded3;--overlay:#0000000d;--active-feedback:#0000000f;--highlight-audio:#ffd166a6;--highlight-select:#ffc10759;--highlight-select-border:#b8860b;--hint-bg:#fff3cd;--hint-border:#e0c260;--shadow-card:0 2px 12px #00000014;--shadow-float:0 4px 20px #00000026;--accent-play:#b3502d;--outline-strong:#c9c1b2;--highlight-jump:#ffd16673;--text-on-accent:#fff;--fs-caption:calc(.85rem * var(--reader-font-scale,1));--fs-small:calc(.95rem * var(--reader-font-scale,1));--fs-body:calc(1rem * var(--reader-font-scale,1));--fs-emphasis:calc(1.15rem * var(--reader-font-scale,1));--fs-title:calc(1.35rem * var(--reader-font-scale,1));--fs-display:calc(1.5rem * var(--reader-font-scale,1));--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--radius-xs:4px;--radius-sm:8px;--radius-card:16px;--radius-pill:999px;--font-sans:system-ui, -apple-system, "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", "PingFang TC", "Microsoft JhengHei", sans-serif;font:16px/1.6 var(--font-sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text-primary);background:var(--surface);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--surface:#201d19;--surface-raised:#2a2622;--surface-sunken:#353028;--surface-sunken-deep:#3d372d;--text-primary:#ece7df;--text-secondary:#b3aa9c;--accent:#c9b083;--accent-text:#c9b083;--danger:#ff8f85;--text-on-danger:#2a2622;--border-subtle:#45403a;--overlay:#00000073;--active-feedback:#ffffff14;--highlight-audio:#ffd16647;--highlight-select:#ffc10738;--highlight-select-border:#d9b45a;--hint-bg:#4a4020;--hint-border:#6b5c2a;--shadow-card:0 2px 12px #0006;--shadow-float:0 4px 20px #0000008c;--accent-play:#d97a52;--outline-strong:#524c40;--highlight-jump:#ffd16633;--text-on-accent:#2a2622}}.bookshelf-screen,.chapter-review-screen,.vocab-pool-screen,.auth-screen,.reader-layout{--fs-caption:calc(.85rem * var(--reader-font-scale,1));--fs-small:calc(.95rem * var(--reader-font-scale,1));--fs-body:calc(1rem * var(--reader-font-scale,1));--fs-emphasis:calc(1.15rem * var(--reader-font-scale,1));--fs-title:calc(1.35rem * var(--reader-font-scale,1));--fs-display:calc(1.5rem * var(--reader-font-scale,1))}*,:before,:after{box-sizing:border-box}body{margin:0}button{font-family:inherit}#root{flex-direction:column;width:100%;max-width:1126px;height:100dvh;min-height:100svh;margin:0 auto;display:flex}.card{background:var(--surface-raised);border-radius:var(--radius-card);box-shadow:var(--shadow-card)}.btn{min-height:48px;padding:0 var(--space-5);border-radius:var(--radius-pill);background:var(--surface-sunken);color:var(--text-primary);font-size:var(--fs-body);cursor:pointer;border:none}.btn:hover{background:var(--surface-sunken-deep)}.btn:disabled{opacity:.6;cursor:not-allowed}:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.welcome-back-card{min-height:100vh;padding:var(--space-5);text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.welcome-back-response{max-width:420px;font-size:var(--fs-emphasis);margin-bottom:var(--space-5);line-height:1.6}.welcome-back-choices{gap:var(--space-3);flex-direction:column;width:100%;max-width:320px;display:flex}.load-failed{align-items:center;gap:var(--space-4);padding:var(--space-6);text-align:center;color:var(--text-secondary);font-size:var(--fs-emphasis);flex-direction:column;display:flex}.load-failed-message{margin:0}.font-scale-control{gap:var(--space-1);flex:none;display:flex}.font-scale-control button{min-width:44px;min-height:44px;font-size:var(--fs-caption);border:1px solid var(--outline-strong);border-radius:var(--radius-pill);color:var(--text-primary);cursor:pointer;white-space:nowrap;background:0 0;flex:none;font-weight:600;transition:background-color .25s,color .25s,transform .15s}.font-scale-control button:active{transform:scale(.94)}.bookshelf-screen{min-height:100vh;position:relative}.bookshelf-screen-font-scale{z-index:10;position:fixed;top:1rem;right:1rem}.bookshelf{min-height:100vh;padding:var(--space-5);justify-content:center;align-items:center;display:flex}.bookshelf-loading{min-height:100vh;font-size:var(--fs-emphasis);color:var(--text-secondary);justify-content:center;align-items:center;display:flex}.bookshelf-card{flex-direction:column;width:100%;max-width:420px;display:flex;overflow:hidden}.bookshelf-cover{background:linear-gradient(135deg,#d8d2c4,#a89f8c);justify-content:center;align-items:center;height:160px;display:flex}.bookshelf-avatar{color:#4a4636;width:96px;height:96px;font-size:calc(2.4rem * var(--reader-font-scale,1));box-shadow:var(--shadow-float);background:#f4f3ec;border-radius:50%;justify-content:center;align-items:center;font-weight:600;display:flex}.bookshelf-info{padding:var(--space-5)}.bookshelf-title{font-size:var(--fs-title);margin:0 0 var(--space-1)}.bookshelf-author{color:var(--text-secondary);font-size:var(--fs-body);margin:0 0 var(--space-3)}.bookshelf-progress{font-size:var(--fs-small);color:var(--text-secondary);margin:0 0 var(--space-2)}.bookshelf-greeting{font-size:var(--fs-body);margin:0 0 var(--space-5)}.bookshelf-enter-button{width:100%}.bookshelf-vocab-pool-button,.bookshelf-logout-button{width:100%;min-height:48px;margin-top:var(--space-2);border-radius:var(--radius-pill);color:var(--text-secondary);font-size:var(--fs-small);cursor:pointer;background:0 0;border:none;text-decoration:underline}.annotation-card-overlay{background:var(--overlay);z-index:10;writing-mode:horizontal-tb;position:fixed;inset:0}.annotation-card{max-width:28rem;padding:var(--space-5);text-orientation:mixed;margin:0 auto;position:absolute;bottom:5rem;left:1.25rem;right:1.25rem}.annotation-card-header{align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.annotation-card-surface{font-size:var(--fs-display);font-weight:600}.annotation-card-reading{font-size:var(--fs-emphasis);color:var(--text-secondary)}.annotation-card-badge{font-size:var(--fs-caption);border:1.5px solid var(--border-subtle);border-radius:var(--radius-xs);color:var(--text-secondary);padding:2px 8px}.annotation-card-pos{font-size:var(--fs-caption);color:var(--text-secondary);margin-bottom:var(--space-1);font-style:italic}.annotation-card-gloss-zh{font-size:var(--fs-emphasis);color:var(--text-primary);margin-bottom:var(--space-1)}.annotation-card-gloss{font-size:var(--fs-small);color:var(--text-secondary)}.phrase-card-overlay{background:var(--overlay);z-index:10;writing-mode:horizontal-tb;position:fixed;inset:0}.phrase-card{max-width:28rem;padding:var(--space-5);text-orientation:mixed;margin:0 auto;position:absolute;bottom:5rem;left:1.25rem;right:1.25rem}.phrase-card-header{margin-bottom:var(--space-2)}.phrase-card-surface{font-size:var(--fs-display);font-weight:600}.phrase-card-loading,.phrase-card-gloss{font-size:var(--fs-emphasis);color:var(--text-primary)}.phrase-card-error{font-size:var(--fs-emphasis);color:var(--danger)}.reader-pane-wrapper{flex-direction:column;min-height:0;display:flex;position:relative}.reader-pane-scrollbar{height:4px;margin:var(--space-2) var(--space-5) 0;border-radius:var(--radius-xs);background:var(--surface-sunken-deep);overflow:hidden}.reader-pane-scrollbar-fill{background:var(--accent);height:100%}.reader-pane{font-size:var(--fs-body);padding:var(--space-5) var(--space-5) 92px;line-height:2.2;overflow:auto}.reader-pane[data-writing-mode=vertical]{writing-mode:vertical-rl;text-orientation:upright;max-height:70vh}@media (width>=900px){.reader-pane-wrapper:has(.reader-pane[data-writing-mode=vertical]){min-height:calc((var(--reader-font-scale,1) - 1) * 450px)}}.reader-pane[data-writing-mode=horizontal]{writing-mode:horizontal-tb;max-height:70vh}.reader-sentence{margin:0 0 .5em;transition:background-color .6s,box-shadow .6s}.reader-sentence-highlight{background-color:var(--highlight-jump);border-radius:var(--radius-xs);box-shadow:inset -3px 0 0 var(--accent-play)}.reader-pane[data-writing-mode=horizontal] .reader-sentence-highlight{box-shadow:inset 3px 0 0 var(--accent-play)}.reader-sentence-highlight-sustained{background-color:var(--highlight-audio);animation:none}.reader-word{cursor:pointer;border-bottom:1px dotted var(--border-subtle);padding-bottom:1px;padding-inline:.15em}.reader-word:active,.reader-word:focus-visible{border-bottom-color:var(--text-secondary);background-color:var(--active-feedback)}.reader-word-selecting{background-color:var(--highlight-select);border-bottom:1px solid var(--highlight-select-border)}.reader-word ruby rt{-webkit-user-select:none;user-select:none;font-size:.5em}.reader-phrase-hint-bar{justify-content:space-between;align-items:center;gap:var(--space-3);min-height:48px;padding:var(--space-2) var(--space-4);background:var(--hint-bg);border-bottom:1px solid var(--hint-border);z-index:20;writing-mode:horizontal-tb;display:flex;position:fixed;top:0;left:0;right:0}.reader-phrase-cancel-button{min-width:48px;min-height:48px;padding:var(--space-2) var(--space-4);border:1px solid var(--border-subtle);border-radius:var(--radius-pill);background:var(--surface-raised)}.reader-sentence-listen-button{vertical-align:middle;border:1px solid var(--border-subtle);border-radius:var(--radius-pill);background:var(--surface-raised);width:44px;height:44px;color:var(--accent-text);cursor:pointer;justify-content:center;align-items:center;margin:2px;padding:0;transition:background-color .25s,color .25s,transform .15s;display:inline-flex;box-shadow:0 1px 3px #0000000f}.reader-sentence-listen-button svg{writing-mode:horizontal-tb}.reader-sentence-listen-button:active{transform:scale(.9)}.reader-sentence-listen-button-playing{background:var(--accent-text);color:var(--text-on-accent)}.reader-sentence-listen-button:disabled{opacity:.35;cursor:not-allowed}@keyframes reader-pop-in{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}.reader-sentence-listen-button{animation:.25s reader-pop-in}.reader-pane-scroll-hint{font-size:var(--fs-caption);color:var(--text-secondary);writing-mode:horizontal-tb;z-index:2;pointer-events:none;position:absolute;top:8px;left:16px}@keyframes reader-pill-pop{0%{opacity:0;transform:translate(-50%)translateY(14px)scale(.94)}to{opacity:1;transform:translate(-50%)translateY(0)scale(1)}}.reader-floating-pill{align-items:center;gap:var(--space-1);padding:var(--space-1);background:var(--surface-raised);border-radius:var(--radius-pill);box-shadow:var(--shadow-float);z-index:10;animation:.35s cubic-bezier(.2,.8,.3,1.15) reader-pill-pop;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.reader-floating-furigana{background:var(--surface-sunken);border-radius:var(--radius-pill);display:flex;overflow:hidden}.reader-floating-furigana button{min-height:40px;padding:0 var(--space-2);color:var(--text-primary);font-size:var(--fs-caption);cursor:pointer;white-space:nowrap;background:0 0;border:none;transition:background-color .25s,color .25s}.reader-floating-furigana button.active{background:var(--accent-text);color:var(--text-on-accent);font-weight:700}.reader-floating-icon-button{border-radius:var(--radius-pill);background:var(--surface-sunken);width:40px;height:40px;color:var(--text-primary);cursor:pointer;border:none;flex:none;justify-content:center;align-items:center;transition:background-color .25s,color .25s,transform .15s;display:inline-flex}.reader-floating-chrome-button{width:48px;height:48px}.reader-floating-icon-button:active{transform:scale(.9)}.reader-floating-icon-button[aria-pressed=true]{background:var(--accent-text);color:var(--text-on-accent)}.reader-floating-play-button{border-radius:var(--radius-pill);background:var(--accent-play);width:44px;height:44px;color:var(--text-on-accent);font-size:var(--fs-body);cursor:pointer;border:none;flex:none;justify-content:center;align-items:center;transition:background-color .3s,transform .15s;display:inline-flex}.reader-floating-play-button:active{transform:scale(.88)}.reader-floating-play-button[aria-pressed=true]{background:var(--text-primary)}.progress-seal{padding:var(--space-3) var(--space-5) var(--space-5);border-top:1px solid var(--border-subtle)}.progress-seal-row{align-items:center;gap:var(--space-3);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.progress-seal-bar{border-radius:var(--radius-xs);background:var(--surface-sunken-deep);height:6px;overflow:hidden}.progress-seal-row .progress-seal-bar{flex:1;min-width:120px}.progress-seal-fill{background:var(--accent-text);height:100%}.progress-seal-label{font-size:var(--fs-caption);color:var(--text-secondary);white-space:nowrap}.progress-seal-button{min-height:44px;padding:0 var(--space-5);border-radius:var(--radius-pill);background:var(--accent-text);color:var(--text-on-accent);cursor:pointer;border:none;font-weight:600;transition:background-color .25s,transform .15s}.progress-seal-button:active{transform:scale(.97)}.progress-seal-button:disabled{opacity:.6;cursor:not-allowed}.progress-seal-compact{background:var(--surface-sunken-deep);height:3px}.progress-seal-compact .progress-seal-bar{border-radius:0;height:100%}.playback-speed-control{min-width:52px;min-height:44px;padding:0 var(--space-2);border:1px solid var(--outline-strong);border-radius:var(--radius-pill);color:var(--text-primary);font-size:var(--fs-caption);cursor:pointer;background:0 0;flex:none;font-weight:600;transition:background-color .25s,color .25s,transform .15s}.playback-speed-control:active{transform:scale(.94)}.voice-mute-control{border:1px solid var(--outline-strong);border-radius:var(--radius-pill);min-width:44px;min-height:44px;color:var(--text-primary);cursor:pointer;background:0 0;flex:none;justify-content:center;align-items:center;transition:background-color .25s,color .25s,transform .15s;display:inline-flex}.voice-mute-control:active{transform:scale(.94)}.voice-mute-control[aria-pressed=true]{background:var(--accent-text);color:var(--text-on-accent)}.source-jump-button{border:1px dashed var(--border-subtle);border-radius:var(--radius-pill);color:var(--text-secondary);font-size:var(--fs-caption);padding:var(--space-1) var(--space-3);min-height:48px;margin-top:var(--space-1);cursor:pointer;background:0 0;align-self:flex-start}.source-jump-button:hover,.source-jump-button:focus-visible{border-color:var(--text-secondary);color:var(--text-primary)}.chat-turn{flex-direction:column;margin:.5rem 0;display:flex}.stage-direction{font-size:var(--fs-caption);color:var(--text-secondary);text-align:center;margin:.5rem 0;font-style:italic}.chat-bubble{max-width:80%;font-size:calc(1rem * var(--reader-font-scale,1));white-space:pre-wrap;border-radius:1rem;padding:.65rem 1rem;line-height:1.6}.chat-bubble[data-role=character]{background:var(--surface-sunken);color:var(--text-primary);border-bottom-left-radius:var(--radius-xs);align-self:flex-start}.chat-bubble[data-role=user]{background:var(--surface-sunken-deep);color:var(--text-primary);border-bottom-right-radius:var(--radius-xs);align-self:flex-end}.choice-buttons{gap:var(--space-2);flex-wrap:wrap;display:flex}.choice-buttons button{min-width:40%;min-height:48px;font-size:var(--fs-body);border-radius:var(--radius-pill);background:var(--surface-sunken);cursor:pointer;border:none;flex:1}.command-chips{gap:var(--space-2);flex-wrap:wrap;display:flex}.command-chip{align-items:center;gap:var(--space-2);background:var(--surface-sunken-deep);border-radius:var(--radius-pill);padding:var(--space-1) var(--space-4);min-height:44px;color:var(--text-primary);cursor:pointer;border:none;transition:background-color .25s,transform .15s;display:flex}.command-chip:active{transform:scale(.96)}.command-chip-icon{font-size:var(--fs-emphasis);flex:none;line-height:1}.command-chip-text{flex-direction:column;align-items:flex-start;line-height:1.25;display:flex}.command-chip-label{font-size:var(--fs-caption)}.command-chip-hint{color:var(--text-secondary);font-size:.8em}.command-chips-list{gap:var(--space-1);flex-direction:column;width:100%;max-width:360px}.command-chip-list-item{min-height:48px;padding:var(--space-1) var(--space-3);background:0 0;justify-content:flex-start}.command-chip-list-item:hover{background:var(--surface-sunken-deep)}.command-chip-list-item .command-chip-icon{border-radius:var(--radius-sm);background:var(--surface-sunken-deep);width:32px;height:32px;font-size:var(--fs-body);flex:none;justify-content:center;align-items:center;display:flex}.voice-recorder-button{border-radius:var(--radius-pill);width:40px;height:40px;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;transition:background-color .25s,color .25s,transform .15s;display:inline-flex}.voice-recorder-button:active{transform:scale(.94)}.voice-recorder-button[data-recording=true]{background:var(--danger);color:var(--text-on-danger)}.dialogue-pane{flex-direction:column;height:100%;min-height:0;display:flex}.dialogue-character-header{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-subtle);display:flex}.dialogue-character-avatar{background:var(--surface-sunken-deep);width:40px;min-width:40px;height:40px;font-size:var(--fs-emphasis);border-radius:50%;justify-content:center;align-items:center;font-weight:600;display:flex}.dialogue-character-info{flex-direction:column;line-height:1.3;display:flex}.dialogue-character-name{font-size:var(--fs-body);font-weight:600}.dialogue-character-tagline{font-size:var(--fs-caption);color:var(--text-secondary)}.dialogue-history{min-height:0;padding:var(--space-4);flex-direction:column;flex:1;display:flex;overflow-y:auto}.dialogue-history-empty{text-align:center;justify-content:center;align-items:center}.dialogue-empty-state{align-items:center;gap:var(--space-2);flex-direction:column;width:100%;display:flex}.dialogue-empty-avatar{background:var(--surface-sunken-deep);width:56px;height:56px;color:var(--accent-text);font-size:var(--fs-title);border-radius:50%;justify-content:center;align-items:center;font-weight:600;display:flex}.dialogue-empty-title{font-size:var(--fs-title);font-weight:600}.dialogue-empty-subtitle{font-size:var(--fs-small);color:var(--text-secondary);margin-bottom:var(--space-2)}.dialogue-not-ready{padding:var(--space-6);text-align:center;color:var(--text-secondary)}.dialogue-error{padding:var(--space-2) var(--space-4);color:var(--danger);font-size:var(--fs-body)}.dialogue-notice{padding:var(--space-2) var(--space-4);color:var(--text-secondary);font-size:var(--fs-body)}.dialogue-thinking{padding:var(--space-2) var(--space-4);color:var(--text-secondary);font-size:var(--fs-small)}.dialogue-input-area{padding:var(--space-2) var(--space-4) var(--space-3)}.dialogue-command-chips-row{padding:0 var(--space-1) var(--space-2)}.dialogue-input-pill{background:var(--surface-raised);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-4)}.dialogue-input-textarea{resize:none;width:100%;max-height:160px;font:inherit;font-size:var(--fs-body);color:var(--text-primary);padding:var(--space-1) 0;box-sizing:border-box;background:0 0;border:none;outline:none;line-height:1.5;display:block;overflow-y:auto}.dialogue-char-count{text-align:right;font-size:var(--fs-caption);color:var(--text-secondary);padding:0 var(--space-1)}.dialogue-input-toolbar{align-items:center;gap:var(--space-1);display:flex}.dialogue-plus-button,.dialogue-send-button{justify-content:center;align-items:center;line-height:1;display:inline-flex}.dialogue-plus-button{border-radius:var(--radius-pill);background:var(--surface-sunken);width:40px;height:40px;color:var(--text-primary);font-size:var(--fs-title);cursor:pointer;border:none;flex:none;transition:background-color .25s,color .25s,transform .15s}.dialogue-plus-button:active{transform:scale(.94)}.dialogue-plus-button-standalone{margin-bottom:var(--space-2)}.dialogue-plus-button[aria-pressed=true]{background:var(--accent-text);color:var(--text-on-accent)}.dialogue-input-spacer{flex:1}.dialogue-send-button{border-radius:var(--radius-pill);background:var(--accent-text);width:40px;height:40px;color:var(--text-on-accent);font-size:var(--fs-emphasis);cursor:pointer;border:none;flex:none;transition:background-color .25s,transform .15s}.dialogue-send-button:active{transform:scale(.94)}.dialogue-send-button:disabled{opacity:.6;cursor:not-allowed}.dialogue-fallback-link{color:var(--text-secondary);font-size:var(--fs-caption);cursor:pointer;background:0 0;border:none;min-height:44px;text-decoration:underline}@media (width<=899px){.dialogue-character-header,.dialogue-input-area{padding:.5rem .75rem}}.reader-layout{height:100%;font-size:var(--fs-body);flex-direction:column;display:flex}.reader-chrome{animation:.3s reader-chrome-drop}@keyframes reader-chrome-drop{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}.reader-topbar{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);min-height:52px;display:flex}.reader-exit-button{border-radius:var(--radius-pill);width:44px;height:44px;min-height:44px;color:var(--text-primary);font-size:var(--fs-emphasis);cursor:pointer;background:0 0;border:none;flex:none;padding:0;transition:background-color .25s,transform .15s}.reader-exit-button:active{transform:scale(.94)}.reader-topbar-title{flex-direction:column;flex:1;min-width:0;line-height:1.3;display:flex}.reader-book-title{font-size:var(--fs-emphasis);white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.reader-chapter-subtitle{font-size:var(--fs-caption);color:var(--text-secondary)}@keyframes reader-settings-rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.reader-settings-row{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3) var(--space-2);border-bottom:1px solid var(--border-subtle);animation:.3s reader-settings-rise;display:flex;overflow-x:auto}.reader-settings-row>button:first-child{border:1px solid var(--outline-strong);border-radius:var(--radius-pill);min-width:44px;min-height:44px;color:var(--text-primary);font-size:var(--fs-emphasis);cursor:pointer;white-space:nowrap;background:0 0;flex:none;font-weight:600;transition:background-color .25s,color .25s,transform .15s}.reader-settings-row>button:first-child:active{transform:scale(.94)}.reader-settings-spacer{min-width:var(--space-2);flex:1}.reader-chevron-button{border-radius:var(--radius-pill);width:44px;height:44px;color:var(--text-secondary);font-size:var(--fs-title);cursor:pointer;background:0 0;border:none;flex:none;transition:transform .15s}.reader-chevron-button:active{transform:scale(.9)}.reader-chevron-button:disabled{opacity:.4;cursor:not-allowed}.reader-collapse-button{min-height:44px;padding:0 var(--space-4);border-radius:var(--radius-pill);background:var(--surface-sunken-deep);color:var(--text-primary);font-size:var(--fs-caption);cursor:pointer;white-space:nowrap;border:none;flex:none;transition:background-color .25s,transform .15s}.reader-collapse-button:active{transform:scale(.94)}.mobile-tabs{border:1px solid var(--outline-strong);border-radius:var(--radius-pill);flex:none;display:none;overflow:hidden}.mobile-tabs button{min-height:40px;padding:0 var(--space-3);color:var(--text-primary);font-size:var(--fs-small);cursor:pointer;background:0 0;border:none;transition:background-color .25s,color .25s}.mobile-tabs button+button{border-left:1px solid var(--outline-strong)}.mobile-tabs button.active{background:var(--accent-text);color:var(--text-on-accent);font-weight:700}.reader-loading{padding:var(--space-6);text-align:center;color:var(--text-secondary)}.reader-standby-font-scale{z-index:10;position:fixed;top:1rem;right:1rem}.reader-body{flex:1;min-height:0;display:flex}.reader-reading-pane{flex-direction:column;flex:1;min-width:0;display:flex}.reader-dialogue-pane{border-left:1px solid var(--border-subtle);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}@media (width>=900px){.reader-body.immersive .reader-dialogue-pane{display:none}}@media (width<=899px){.mobile-tabs{display:flex}.reader-body{flex-direction:column}.reader-dialogue-pane{border-left:none;border-top:1px solid var(--border-subtle)}.hidden-on-mobile{display:none}}.chapter-review-screen{min-height:100vh;position:relative}.chapter-review-font-scale{z-index:10;position:fixed;top:1rem;right:1rem}.chapter-review{max-width:480px;padding:var(--space-6) var(--space-5);margin:0 auto}.chapter-review-title{font-size:var(--fs-title);margin:0 0 var(--space-4)}.chapter-review-empty{color:var(--text-secondary);font-size:var(--fs-body);margin:var(--space-4) 0 var(--space-6)}.chapter-review-list{margin:0 0 var(--space-6);gap:var(--space-3);flex-direction:column;padding:0;list-style:none;display:flex}.chapter-review-card{padding:var(--space-3) var(--space-4)}.chapter-review-card-header{justify-content:space-between;align-items:center;display:flex}.chapter-review-surface{font-size:var(--fs-emphasis);font-weight:600}.chapter-review-toggle{cursor:pointer;min-width:48px;min-height:48px;color:var(--text-secondary);font-size:var(--fs-body);background:0 0;border:none}.chapter-review-card-body{margin-top:var(--space-2)}.chapter-review-reading{color:var(--text-secondary);font-size:var(--fs-body);margin:0 0 var(--space-1)}.chapter-review-gloss{font-size:var(--fs-body);margin:0 0 var(--space-3)}.chapter-review-badge{border-radius:var(--radius-xs);background:var(--danger);color:var(--text-on-danger);margin-inline-start:8px;padding:2px 8px;font-size:.75em;display:inline-block}.chapter-review-pos{opacity:.8}.chapter-review-example{font-style:italic}.chapter-review-save-button{width:100%;margin-top:var(--space-2);display:block}.chapter-review-back-button{width:100%}.vocab-pool-screen{min-height:100vh;position:relative}.vocab-pool-font-scale{z-index:10;position:fixed;top:1rem;right:1rem}.vocab-pool{max-width:480px;padding:var(--space-6) var(--space-5);margin:0 auto}.vocab-pool-title{font-size:var(--fs-title);margin:0 0 var(--space-4)}.vocab-pool-loading,.vocab-pool-empty{color:var(--text-secondary);font-size:var(--fs-body);margin:var(--space-4) 0 var(--space-6)}.vocab-pool-list{margin:0 0 var(--space-6);gap:var(--space-3);flex-direction:column;padding:0;list-style:none;display:flex}.vocab-pool-card{gap:var(--space-1);padding:var(--space-4);flex-direction:column;display:flex}.vocab-pool-surface{font-size:var(--fs-emphasis);font-weight:600}.vocab-pool-reading{color:var(--text-secondary);font-size:var(--fs-small);margin:0}.vocab-pool-gloss{font-size:var(--fs-body);margin:.2rem 0 0}.vocab-pool-badge{border-radius:var(--radius-xs);background:var(--danger);color:var(--text-on-danger);margin-inline-start:8px;padding:2px 8px;font-size:.75em;display:inline-block}.vocab-pool-pos{opacity:.8}.vocab-pool-example{font-style:italic}.vocab-pool-back-button{width:100%}.auth-screen{min-height:100vh;padding:var(--space-5);justify-content:center;align-items:center;display:flex;position:relative}.auth-screen-font-scale{z-index:10;position:fixed;top:1rem;right:1rem}.auth-form{width:100%;max-width:360px;padding:var(--space-5);flex-direction:column;display:flex}.auth-title{font-size:var(--fs-title);margin:0 0 var(--space-4)}.auth-label{font-size:var(--fs-emphasis);margin:var(--space-3) 0 var(--space-1)}.auth-input{min-height:48px;font-size:var(--fs-emphasis);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--surface-raised);color:var(--text-primary)}.auth-hint{font-size:var(--fs-small);color:var(--text-secondary);margin:var(--space-1) 0 0}.auth-error{color:var(--danger);font-size:var(--fs-emphasis);margin:var(--space-3) 0 0}.auth-submit-button{width:100%;margin-top:var(--space-5)}.auth-switch-mode-button{width:100%;min-height:48px;margin-top:var(--space-2);border-radius:var(--radius-pill);color:var(--text-secondary);font-size:var(--fs-emphasis);cursor:pointer;background:0 0;border:none;text-decoration:underline}.auth-session-expired{font-size:var(--fs-emphasis);color:var(--text-primary);background:var(--surface-sunken);border-radius:var(--radius-card);padding:var(--space-3);margin:0 0 var(--space-4);line-height:1.6}.app-auth-checking{min-height:100vh;font-size:var(--fs-emphasis);color:var(--text-secondary);justify-content:center;align-items:center;display:flex}.error-boundary{max-width:480px;padding:var(--space-5);text-align:center;margin:4rem auto}.error-boundary-message{font-size:var(--fs-emphasis);margin:0 0 var(--space-2)}.error-boundary-detail{color:var(--text-secondary);font-size:var(--fs-small);margin:0 0 var(--space-5);word-break:break-word}.error-boundary-reload{min-width:48px;padding:0 var(--space-5)}
