/* 一屏式 App：主畫面不捲動，長列表以分頁呈現。 */
html{height:100%;overflow:hidden;overscroll-behavior:none}body{height:var(--app-height,100dvh);min-height:0;overflow:hidden;display:flex;flex-direction:column;padding:0;overscroll-behavior:none}.header{flex:0 0 48px;height:48px;width:min(1100px,calc(100% - 32px));padding:5px 0;margin:0 auto}.page{flex:1;min-height:0;width:min(1100px,calc(100% - 32px));max-width:none;margin:0 auto;padding:9px 0;display:flex;flex-direction:column;overflow:hidden}.bottom-nav{position:relative;left:auto;bottom:auto;transform:none;flex:0 0 64px;height:64px;margin:0 auto max(8px,env(safe-area-inset-bottom,0px));width:min(520px,calc(100% - 24px));grid-template-columns:repeat(5,1fr);padding:5px}.bottom-nav a{min-height:0;height:52px}.bottom-nav a svg{width:21px;height:21px}#practice-view{flex:1;min-height:0;width:100%;grid-template-columns:minmax(0,1fr) 246px;gap:20px}.practice-column{height:100%;min-height:0;display:flex;flex-direction:column}.content-switch{flex:0 0 38px;height:38px;margin:0 0 5px;gap:5px}.content-switch button{min-height:34px;padding:5px 10px}.topic-select-label{margin-left:auto;min-width:0;max-width:170px}.topic-select-label select{width:100%;max-width:170px;min-height:34px;border:1px solid var(--line);border-radius:9px;padding:5px 22px 5px 9px;background:var(--white);color:var(--ink);font-size:12px}.mode-tabs{flex:0 0 46px;height:46px;margin:0 0 8px}.mode-tabs button{min-height:0;height:36px;padding:5px 10px}.practice-card{flex:1;min-height:0;display:flex;flex-direction:column}.practice-toolbar{flex:0 0 49px;height:49px;padding:2px 20px}.stats{flex:0 0 75px;height:75px;padding:13px 18px}.progress-track{flex:0 0 3px}.exercise{flex:1;min-height:0;display:flex;flex-direction:column;padding:5px 22px}.exercise-topline{flex:0 0 35px;min-height:0}.word-queue,.sentence-mode .word-queue{display:none}.current-focus,.sentence-mode .current-focus{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:0 0 6px}.current-tools{flex:0 0 30px;min-height:0}.current-word{flex:0 1 auto;min-height:0;margin:5px 0;line-height:1.6;font-size:clamp(36px,6.5vh,52px)}.sentence-mode .current-word{flex:0 1 auto;min-height:0;margin:8px auto;gap:12px 7px;font-size:clamp(23px,4.3vh,32px)}.sentence-mode .current-word ruby{line-height:1.6}.answer-guide{font-size:11px;flex:0 0 auto}.input-area{flex:0 0 auto;padding:12px 19px 5px}.input-row input{height:49px}.feedback-row{min-height:41px;max-height:52px;align-items:center}.feedback-row p{font-size:11px;max-height:48px;overflow:hidden}.practice-options{flex:0 0 45px;height:45px;padding:4px 2px 0}.save-note{display:none}.sidebar{height:100%;min-height:0;gap:13px;display:flex;flex-direction:column;margin:0}.sidebar .topics-card{order:0;flex:0 0 auto}.sidebar .today-card{order:1;flex:0 0 auto}.sidebar .side-card{padding:16px}.sidebar .categories{gap:6px;margin-top:12px}.sidebar .category{min-height:36px;font-size:11px;padding:5px 9px}.sidebar .review-button{padding-top:9px;margin-top:11px;min-height:35px}.sidebar .today-total{margin:11px 0}.sidebar .today-total>strong{font-size:37px}.paused-overlay{inset:49px 0 0}.answer-analysis{display:grid;grid-template-columns:repeat(var(--analysis-columns,4),minmax(0,1fr)) auto;overflow:hidden;gap:4px;max-height:48px;margin-top:7px;padding:0}.answer-chip{min-width:0;max-width:none;padding:4px 5px;gap:0 3px}.answer-chip b{min-width:0;max-width:65px;font-size:10px}.analysis-count{font-size:10px;line-height:1.5;color:var(--muted);display:flex;align-items:center;padding:0 3px}.app-view{flex:1;min-height:0;width:100%;height:100%;display:flex;flex-direction:column;margin:0 auto;overflow:hidden}.view-heading{flex:0 0 auto;min-height:50px;margin-bottom:13px}.view-heading h2{font-size:25px}.view-heading .eyebrow{margin-bottom:3px}.view-summary{flex:0 0 77px;min-height:0;margin:0 0 13px;gap:9px}.view-summary>div{padding:9px 7px}.view-summary strong{font-size:29px;line-height:1.4}.record-list{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;overflow:hidden}.record-item,.mistake-item{flex:0 1 116px;min-height:0;padding:13px 18px;overflow:hidden}.record-item h3,.mistake-item h3{font-size:15px;line-height:1.7;margin:3px 0}.record-item>strong{font-size:25px}.record-item small,.mistake-item small{font-size:10px}.mistake-item p{font-size:12px;line-height:1.7}.review-intro{flex:0 0 auto;min-height:58px;padding:11px 15px;margin:0 0 12px;flex-direction:row;align-items:center;gap:12px}.review-intro p{font-size:11px}.review-intro button{width:auto;min-height:40px;padding:9px 15px;flex-shrink:0}.empty-state{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:18px}.empty-state h3{font-size:17px;margin:0}.empty-state p{font-size:12px;margin:12px 0 20px}.pagination{flex:0 0 44px;min-height:0;display:flex;justify-content:center;align-items:center;gap:16px;margin-top:10px;font-size:11px;color:var(--muted)}.pagination button{min-height:38px;padding:8px 14px;font-size:11px}.section-tabs{flex:0 0 40px;display:flex;gap:6px;padding:4px;background:#eef1f6;border-radius:12px;margin-bottom:12px}.section-tabs button{flex:1;border-radius:8px;background:transparent;color:var(--muted);font-size:12px;min-height:0}.section-tabs button[aria-pressed=true]{background:var(--white);color:var(--blue);box-shadow:0 1px 4px #25364b08;font-weight:600}.settings-card{flex:0 1 auto;min-height:0;overflow:hidden;padding:5px 22px;margin-bottom:14px}.setting-row{padding:19px 0;min-height:71px;gap:15px}.setting-note{padding:15px 0;font-size:12px}.settings-card h3{margin:15px 0 10px}.settings-card>p:not(.setting-note){font-size:13px}.settings-card .setting-note+.setting-note{padding-top:0}#settings-help{flex:0 0 auto;align-self:flex-start;min-height:42px;margin-top:2px}.lesson-counter{color:var(--muted);font-size:11px}.lesson-group-note{flex:0 0 auto;font-size:12px;line-height:1.7;color:var(--muted);margin:0 0 12px}.lesson-card{flex:1;min-height:0;display:grid;grid-template-columns:130px minmax(0,1fr);gap:22px;align-items:center;background:var(--white);border:1px solid var(--line);border-radius:20px;padding:22px 27px;overflow:hidden}.lesson-symbol{font:italic 74px Georgia,serif;color:var(--blue);text-align:center;line-height:1.2}.lesson-detail{min-width:0;min-height:0}.lesson-example{display:flex;align-items:center;gap:18px;margin-bottom:10px}.lesson-example>span{color:var(--muted);font-size:11px}.lesson-example ruby{font-size:29px;line-height:1.4}.lesson-example rt{font:14px Georgia,serif;color:var(--blue);padding-bottom:4px}.lesson-tip{font-size:14px;line-height:1.9;color:var(--ink);margin-bottom:15px}.lesson-feedback{font-size:10px;color:var(--muted);line-height:1.7;margin-top:6px}.lesson-feedback:empty{display:none}#lesson-listen{min-height:40px;font-size:12px;padding:9px 17px}.lesson-picker{flex:0 0 auto;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-top:12px}.lesson-picker button{height:41px;min-height:0;border:1px solid var(--line);background:var(--white);color:var(--muted);font:19px Georgia,serif;border-radius:10px}.lesson-picker button[aria-pressed=true]{border-color:#a6c0e7;background:var(--pale);color:var(--blue)}#lesson-pagination{margin-top:7px}dialog{overflow:hidden;max-height:calc(var(--app-height,100dvh) - 40px)}.dialog-inner{padding:25px}.dialog-heading{margin-bottom:12px}.help-copy{font-size:12px;line-height:1.8}.help-copy p{margin:10px 0}.mistake-list{max-height:none;overflow:hidden}.mistake-row{padding:7px 0;font-size:12px;gap:6px}.mistake-row>span:last-child{font-size:12px}.result-stats{margin:16px 0}.result-stats>div{padding:10px 3px}.dialog-actions{margin-top:17px}
@media(max-width:900px){#practice-view{grid-template-columns:minmax(0,1fr) 222px;gap:15px}.sidebar .side-card{padding:13px}.sidebar .category{padding:5px 7px;font-size:10px}.sidebar .today-total>strong{font-size:31px}}
@media(max-width:760px){.header{width:calc(100% - 28px);flex-basis:45px;height:45px;padding:4px 0}.header .brand-mark{height:29px;width:28px}.page{width:calc(100% - 24px);margin:0 auto;padding:7px 0}.bottom-nav{flex-basis:63px;height:63px;margin-bottom:max(8px,env(safe-area-inset-bottom,0px));width:calc(100% - 24px)}.bottom-nav a{height:51px;font-size:10px}.bottom-nav a svg{width:21px;height:21px}#practice-view{display:flex;flex-direction:column;gap:0}.practice-column{flex:1}.sidebar{display:none}.content-switch{height:37px;flex-basis:37px;gap:4px;margin-bottom:5px}.content-switch>span{display:none}.content-switch button{min-height:34px;font-size:11px;padding:5px 9px}.topic-select-label{max-width:145px;flex:1;margin-left:auto}.topic-select-label select{max-width:none;min-height:34px;font-size:11px;padding-right:17px}.mode-tabs{height:44px;flex-basis:44px;margin-bottom:7px}.mode-tabs button{height:34px;font-size:12px}.practice-toolbar{height:45px;flex-basis:45px;padding:0 14px}.stats{height:66px;flex-basis:66px;padding:11px 10px}.stats>div>span{font-size:22px}.stats small{font-size:9px}.exercise{padding:4px 14px}.exercise-topline{flex-basis:32px;font-size:10px}.current-focus,.sentence-mode .current-focus{padding:0 0 5px}.current-tools{flex-basis:28px}.listen-button{min-height:28px}.current-word{font-size:clamp(35px,6.3vh,46px);min-height:0}.sentence-mode .current-word{font-size:clamp(21px,3.7vh,28px);min-height:0;margin:6px auto;gap:11px 6px}.sentence-mode .current-word rt{font-size:10px}.answer-guide{font-size:10px}.input-area{padding:10px 13px 4px}.input-row input{height:47px;font-size:16px}.input-row .primary-button{min-height:47px;padding:8px 13px}.feedback-row{min-height:38px;max-height:48px}.feedback-row p{font-size:10px;line-height:1.6;max-height:46px}.practice-options{height:42px;flex-basis:42px;padding:3px 1px 0;gap:6px}.practice-options>label:first-child{font-size:9px;gap:4px}.practice-options select{font-size:10px;min-height:32px}.practice-options>.switch-label{min-height:36px;font-size:10px}.practice-options>.text-button{min-height:36px;font-size:10px}.paused-overlay{inset:45px 0 0}.paused-overlay h2{font-size:18px}.paused-overlay p{font-size:11px}.view-heading{min-height:47px;margin-bottom:12px;gap:12px}.view-heading h2{font-size:23px}.view-heading .eyebrow{font-size:10px}.view-filter select{font-size:11px;min-height:38px}.view-summary{flex-basis:71px;margin-bottom:12px;gap:8px}.view-summary>div{padding:8px 4px;border-radius:12px}.view-summary strong{font-size:26px}.view-summary span{font-size:10px}.record-list{gap:8px}.record-item,.mistake-item{padding:12px 14px;flex-basis:113px;gap:11px}.record-item h3,.mistake-item h3{font-size:14px;line-height:1.6}.mistake-item p{font-size:11px}.record-item>strong{font-size:24px}.review-intro{padding:10px 13px;margin-bottom:10px;min-height:59px}.review-intro p{font-size:10px;line-height:1.7}.review-intro button{padding:7px 10px;min-height:38px;font-size:11px}.pagination{height:41px;flex-basis:41px;margin-top:8px;font-size:10px;gap:14px}.pagination button{min-height:36px;font-size:10px;padding:7px 12px}.section-tabs{flex-basis:38px;margin-bottom:10px}.section-tabs button{font-size:12px}.settings-card{padding:4px 17px;margin-bottom:12px}.setting-row{min-height:73px;padding:18px 0;font-size:13px}.setting-row small{font-size:10px}.setting-row select{font-size:11px;max-width:126px}.setting-note{font-size:11px;padding:14px 0}.settings-card h3{font-size:15px}.settings-card>p:not(.setting-note){font-size:12px}#settings-help{font-size:12px;min-height:41px}.lesson-counter{font-size:10px}.lesson-group-note{font-size:11px;margin-bottom:10px;line-height:1.7}.lesson-card{grid-template-columns:85px minmax(0,1fr);gap:15px;padding:18px 17px;border-radius:17px}.lesson-symbol{font-size:58px}.lesson-example{gap:13px;margin-bottom:8px}.lesson-example ruby{font-size:27px}.lesson-example rt{font-size:12px}.lesson-example>span{font-size:10px}.lesson-tip{font-size:12px;line-height:1.9;margin-bottom:12px}.lesson-picker{gap:6px;margin-top:10px}.lesson-picker button{height:38px;font-size:18px}#lesson-listen{min-height:36px;padding:8px 13px;font-size:11px}.dialog-inner{padding:21px 18px}.dialog-inner h2{font-size:21px}.help-copy{font-size:12px}.dialog-actions{gap:6px}}
@media(max-height:720px){.header{height:40px;flex-basis:40px}.header .brand-mark{height:27px;width:27px;font-size:17px}.header .text-button{min-height:33px}.sidebar .today-card{display:none}.page{padding-top:6px;padding-bottom:5px}.stats{height:59px;flex-basis:59px;padding:8px 10px}.stats>div>span{font-size:21px}.practice-toolbar{height:41px;flex-basis:41px}.paused-overlay{inset:41px 0 0}.current-word{font-size:38px}.sentence-mode .current-word{font-size:23px;gap:9px 6px}.current-tools{flex-basis:26px}.exercise-topline{flex-basis:29px}.input-area{padding-top:8px}.answer-analysis{display:none}.lesson-group-note{display:none}.lesson-card{padding:16px 18px}.lesson-symbol{font-size:55px}.lesson-tip{font-size:12px;line-height:1.8}.lesson-example ruby{font-size:25px}.view-heading{min-height:42px;margin-bottom:9px}.view-summary{flex-basis:65px;margin-bottom:9px}.view-summary strong{font-size:24px}.record-item,.mistake-item{flex-basis:104px}.pagination{flex-basis:38px;margin-top:6px}.section-tabs{flex-basis:36px;margin-bottom:9px}.setting-row{min-height:66px;padding:14px 0}.setting-note{padding:12px 0}.result-stats{margin:13px 0}.dialog-actions{margin-top:13px}}
@media(max-height:580px){.header{display:none}.page{padding:5px 0}.bottom-nav{height:55px;flex-basis:55px;margin-bottom:5px;border-radius:17px;padding:4px}.bottom-nav a{height:45px;gap:1px;font-size:9px;border-radius:12px}.bottom-nav a svg{height:18px;width:18px}.content-switch{height:32px;flex-basis:32px;margin-bottom:4px}.content-switch button,.topic-select-label select{min-height:30px}.mode-tabs{height:38px;flex-basis:38px;margin-bottom:5px;padding:3px}.mode-tabs button{height:30px;font-size:11px}.practice-toolbar{height:37px;flex-basis:37px}.toolbar-buttons .text-button{min-height:35px}.stats{height:52px;flex-basis:52px;padding:6px 8px}.stats>div>span{font-size:19px}.stats small{font-size:8px;margin-top:2px}.exercise-topline{flex-basis:24px}.exercise-topline .switch-label{min-height:25px}.current-tools{flex-basis:22px}.current-badge{font-size:8px}.listen-button{min-height:24px;padding:2px 8px;font-size:9px}.current-word{font-size:32px;margin:2px 0}.sentence-mode .current-word{font-size:20px;margin:4px auto;gap:7px 5px;grid-template-columns:repeat(var(--sentence-columns),minmax(0,1fr))}.sentence-mode .current-word rt{font-size:8px;padding-bottom:3px}.answer-guide{display:none}.input-area{padding:7px 11px 3px}.input-row input,.input-row .primary-button{height:40px;min-height:40px}.input-row input::placeholder{font-size:10px}.feedback-row{min-height:28px;max-height:38px}.feedback-row p{font-size:9px;max-height:36px}.feedback-row .text-button{min-height:28px;font-size:10px}.practice-options{display:none}.paused-overlay{inset:37px 0 0;gap:10px}.pause-illustration{height:42px;width:42px;font-size:20px;line-height:42px}.paused-overlay h2{font-size:17px}.paused-overlay p{font-size:11px}.paused-overlay button{margin-top:3px}.view-heading{min-height:35px;margin-bottom:8px}.view-heading h2{font-size:20px}.view-heading .eyebrow{display:none}.view-filter{display:flex;align-items:center;gap:6px;font-size:10px}.view-filter select{min-height:32px;padding:5px;font-size:10px}.view-summary{flex-basis:58px;margin-bottom:8px}.view-summary>div{padding:5px}.view-summary strong{font-size:22px}.view-summary span{font-size:9px}.record-item,.mistake-item{flex-basis:110px;padding:11px 13px}.record-item h3,.mistake-item h3{font-size:13px}.record-item small,.mistake-item small{font-size:9px}.review-intro{min-height:47px;padding:8px 11px;gap:8px;margin-bottom:8px}.review-intro p{font-size:10px}.review-intro button{min-height:32px;font-size:10px;padding:6px 9px}.pagination{flex-basis:32px;margin-top:5px;gap:12px}.pagination button{min-height:30px;padding:5px 10px;font-size:10px}.section-tabs{flex-basis:32px;margin-bottom:8px}.section-tabs button{font-size:11px}.setting-row{min-height:60px;padding:11px 0}.setting-row small{font-size:10px}.setting-row select{min-height:34px}.setting-note{font-size:11px;padding:10px 0;line-height:1.7}.settings-card h3{margin-top:11px}.settings-card{padding:3px 15px;margin-bottom:9px}#settings-help{min-height:34px;padding:7px 12px;font-size:11px}.lesson-card{grid-template-columns:65px minmax(0,1fr);padding:12px 14px;gap:12px}.lesson-symbol{font-size:45px}.lesson-example{gap:10px;margin-bottom:5px}.lesson-example ruby{font-size:23px}.lesson-example rt{font-size:11px}.lesson-tip{font-size:11px;line-height:1.7;margin-bottom:8px}.lesson-picker{margin-top:8px;gap:5px}.lesson-picker button{height:31px;font-size:16px}#lesson-listen{min-height:30px;padding:5px 11px;font-size:10px}.lesson-feedback{font-size:9px;line-height:1.5;margin-top:3px}.dialog-inner{padding:17px}.dialog-inner h2{font-size:18px}.dialog-inner .eyebrow{display:none}.dialog-heading{margin-bottom:7px}.help-copy{font-size:11px;line-height:1.7}.help-copy p{margin:7px 0}.result-stats strong{font-size:21px}.result-stats>div{padding:8px 2px}.dialog-actions{margin-top:10px}.dialog-actions button{padding:8px 10px;min-height:36px;font-size:11px}.mistake-row{font-size:11px}.mistake-row>span:last-child{font-size:11px}}
.keyboard-open .header,.keyboard-open .bottom-nav,.keyboard-open .content-switch,.keyboard-open .mode-tabs,.keyboard-open .practice-options{display:none}.keyboard-open .page{width:calc(100% - 16px);padding:4px 0}.keyboard-open .answer-analysis{display:none}.keyboard-open .stats{flex-basis:45px;height:45px;padding:4px}.keyboard-open .current-word{font-size:30px}.keyboard-open .sentence-mode .current-word{font-size:20px;margin:3px auto}.keyboard-open .answer-guide{display:none}.keyboard-open .practice-toolbar{height:34px;flex-basis:34px}.keyboard-open .paused-overlay{inset:34px 0 0}
/* 小螢幕轉成直向 flex 後，覆蓋舊網格的 align-items:start，避免內容縮在左側。 */
#practice-view{align-items:stretch}.practice-column{width:100%;min-width:0}
.keyboard-dismiss{display:none;align-items:center;justify-content:center;min-height:36px;padding:6px 11px;background:var(--pale);color:var(--blue);border-radius:10px;font-size:11px;white-space:nowrap}
.keyboard-open #practice-view{display:flex;flex-direction:column;width:100%;gap:0;align-items:stretch}.keyboard-open .sidebar{display:none}.keyboard-open .practice-column{width:100%;min-width:0;height:100%;flex:1}.keyboard-open .page{width:calc(100% - 16px);padding:max(4px,env(safe-area-inset-top,0px)) 0 4px}.keyboard-open .practice-card{border-radius:14px}.keyboard-open .practice-toolbar{height:40px;flex:0 0 40px;padding:0 12px}.keyboard-open #new-round,.keyboard-open #pause{display:none}.keyboard-open .keyboard-dismiss{display:inline-flex}.keyboard-open .stats{height:38px;flex:0 0 38px;padding:4px 9px}.keyboard-open .stats>div{display:flex;align-items:center;justify-content:center;gap:5px}.keyboard-open .stats>div>span{font-size:17px;letter-spacing:-.5px}.keyboard-open .stats em{font-size:11px}.keyboard-open .stats small{font-size:8px;margin:0;letter-spacing:0}.keyboard-open .exercise{padding:3px 12px;min-height:0}.keyboard-open .exercise-topline{display:none}.keyboard-open .current-focus,.keyboard-open .sentence-mode .current-focus{padding:2px 0;justify-content:center;min-height:0}.keyboard-open .current-tools{flex:0 0 28px;min-height:28px}.keyboard-open .current-badge{font-size:9px;letter-spacing:.5px}.keyboard-open .listen-button{min-height:28px;padding:3px 10px;font-size:10px}.keyboard-open .current-word{font-size:clamp(26px,calc(var(--app-height) / 10),36px);margin:4px 0;min-height:0;line-height:1.5}.keyboard-open .current-word rt{font-size:11px;padding-bottom:3px}.keyboard-open .sentence-mode .current-word{font-size:clamp(19px,calc(var(--app-height) / 15),25px);margin:4px auto;min-height:0;gap:9px 5px;grid-template-columns:repeat(var(--sentence-columns-small),minmax(0,1fr));max-width:100%}.keyboard-open .sentence-mode .current-word rt{font-size:9px}.keyboard-open .input-area{padding:8px 10px 4px;flex:0 0 auto}.keyboard-open .input-row{gap:8px}.keyboard-open #answer{font-size:16px;height:44px;min-height:44px;padding:0 11px}.keyboard-open .input-row .primary-button{height:44px;min-height:44px;padding:8px 13px;font-size:12px}.keyboard-open .feedback-row{min-height:31px;max-height:43px;gap:6px}.keyboard-open .feedback-row p{font-size:10px;line-height:1.6;max-height:40px}.keyboard-open #skip{min-height:32px;min-width:44px;font-size:10px}.keyboard-open .paused-overlay{inset:40px 0 0}
.keyboard-tight .stats,.keyboard-tight .current-tools{display:none}.keyboard-tight .practice-toolbar{height:36px;flex-basis:36px}.keyboard-tight .keyboard-dismiss{min-height:32px;padding:4px 9px}.keyboard-tight .current-word{font-size:28px}.keyboard-tight .sentence-mode .current-word{font-size:20px;gap:7px 4px}.keyboard-tight .sentence-mode .current-word rt{font-size:8px}.keyboard-tight .input-area{padding-top:6px}.keyboard-tight .feedback-row{min-height:28px;max-height:34px}.keyboard-tight .feedback-row p{font-size:9px;max-height:32px}.keyboard-tight .paused-overlay{inset:36px 0 0}
.input-area button,.listen-button,.keyboard-dismiss{touch-action:manipulation;-webkit-user-select:none;user-select:none}
.settings-links{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:0 0 auto;min-height:42px}.settings-links #settings-help{margin:0;min-height:38px}.settings-links a{font-size:11px;color:var(--blue);line-height:1.7}.listen-button:disabled{opacity:.7;background:var(--bg);color:var(--muted);font-size:10px}.lesson-feedback{font-size:10px}.keyboard-open .listen-button:disabled{font-size:9px;padding:3px 8px}
.lesson-sound{font-size:12px;line-height:1.7;color:var(--blue);margin:0 0 9px}.lesson-audio-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.lesson-audio-actions .text-button{font-size:11px;min-height:36px;color:var(--muted);padding:5px 8px}#lesson-listen:disabled{font-size:10px;color:var(--muted);background:var(--bg)}
@media(max-height:580px){.lesson-sound{font-size:10px;line-height:1.6;margin-bottom:5px}.lesson-card .lesson-example{display:none}.lesson-audio-actions{gap:5px;flex-wrap:nowrap}.lesson-audio-actions .text-button{font-size:10px;min-height:30px;padding:4px 6px}.lesson-tip{margin-bottom:8px}}
/* iOS 會平移根視窗：讓穩定的 App 容器跟隨可視區域，不再固定／縮放 body。 */
body,body.keyboard-open{position:relative;top:0;left:auto;right:auto;display:block;width:100%;height:100%;padding:0;transform:none}
body.keyboard-open{overflow:visible}
#app-shell{position:fixed;top:0;left:0;right:0;height:var(--app-height,100dvh);min-height:0;width:100%;display:flex;flex-direction:column;overflow:hidden}
.keyboard-hint-toggle{display:none;align-items:center;justify-content:center;min-height:36px;padding:5px 9px;border:1px solid var(--line);border-radius:9px;background:var(--white);color:var(--muted);font-size:11px;white-space:nowrap;touch-action:manipulation;-webkit-user-select:none;user-select:none}
.keyboard-open .keyboard-hint-toggle{display:inline-flex}.keyboard-hint-toggle[aria-pressed=true]{color:var(--blue);border-color:#bad0ef;background:var(--pale)}.keyboard-open .toolbar-buttons{gap:6px;flex-shrink:0}.keyboard-open .round-label{min-width:0;flex:1;margin-right:7px}.keyboard-tight .keyboard-hint-toggle{min-height:32px;padding:4px 8px;font-size:10px}
/* 確認聚焦後進入固定面板；不量測、追逐或補償根視窗的位置。 */
#app-shell{top:0;transform:none}
.keyboard-open #app-shell{height:var(--keyboard-height,320px);top:0;bottom:auto;transform:none}
.keyboard-open .stats{display:none}.keyboard-open .current-tools{flex-basis:24px;min-height:24px}.keyboard-open .current-badge{font-size:8px}.keyboard-open .listen-button{min-height:24px;font-size:9px;padding:2px 8px}.keyboard-open .current-word{font-size:30px;margin:3px 0}.keyboard-open .sentence-mode .current-word{font-size:19px;margin:3px auto;gap:6px 4px}.keyboard-open .sentence-mode .current-word ruby{line-height:1.4}.keyboard-open .sentence-mode .current-word rt{font-size:8px}.keyboard-open .input-area{padding:6px 10px 3px}.keyboard-open .feedback-row{min-height:28px;max-height:34px}.keyboard-open .feedback-row p{font-size:9px;max-height:32px}
.keyboard-open:not(.keyboard-tight) .practice-toolbar{height:44px;flex-basis:44px}.keyboard-open:not(.keyboard-tight) .round-label{font-size:12px}.keyboard-open:not(.keyboard-tight) .keyboard-hint-toggle,.keyboard-open:not(.keyboard-tight) .keyboard-dismiss{font-size:12px;min-height:38px}.keyboard-open:not(.keyboard-tight) .current-tools{flex-basis:28px;min-height:28px}.keyboard-open:not(.keyboard-tight) .current-badge{font-size:10px}.keyboard-open:not(.keyboard-tight) .listen-button{font-size:11px;min-height:28px}.keyboard-open:not(.keyboard-tight) .current-word{font-size:38px}.keyboard-open:not(.keyboard-tight) .current-word rt{font-size:13px}.keyboard-open:not(.keyboard-tight) .sentence-mode .current-word{font-size:23px;gap:8px 5px}.keyboard-open:not(.keyboard-tight) .sentence-mode .current-word rt{font-size:11px}.keyboard-open:not(.keyboard-tight) #answer{font-size:18px;height:50px;min-height:50px}.keyboard-open:not(.keyboard-tight) #answer::placeholder{font-size:12px}.keyboard-open:not(.keyboard-tight) .input-row .primary-button{height:50px;min-height:50px;font-size:14px;padding:9px 16px}.keyboard-open:not(.keyboard-tight) .feedback-row{height:36px;min-height:36px;max-height:36px}.keyboard-open:not(.keyboard-tight) .feedback-row p{font-size:11px;max-height:34px}.keyboard-open:not(.keyboard-tight) #skip{font-size:12px;min-height:36px}.keyboard-open:not(.keyboard-tight) .paused-overlay{inset:44px 0 0}
.keyboard-open:not(.keyboard-tight) .sentence-mode .current-word{width:min(100%,calc(var(--sentence-columns-small)*40px))}
