:root{color-scheme:light;--canvas: #f5f5f7;--surface: #ffffff;--surface-subtle: #f0f0f3;--text-primary: #1d1d1f;--text-secondary: #626268;--accent: #0066cc;--accent-hover: #0057ad;--accent-soft: #eaf2fc;--success: #237a3b;--success-soft: #eff8f1;--error: #b42318;--error-soft: #fff1f0;--border-subtle: #dedee3;--control-border: #828287;--focus: #0066cc;--disabled-bg: #ececef;--disabled-text: #626268;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--space-8: 4rem;--radius-control: .75rem;--radius-card: 1.25rem;--radius-dialog: 1.5rem;--shadow-card: 0 4px 20px rgb(0 0 0 / 4%);--shadow-dialog: 0 16px 48px rgb(0 0 0 / 12%)}*{box-sizing:border-box}body{margin:0;background:var(--canvas);color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:1rem;line-height:1.6}button,input,select{font:inherit}button,summary,select,input[type=checkbox],input[type=radio],input[type=range]{cursor:pointer}button{color:inherit}button:disabled{cursor:default}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}h1:focus,#feedback:focus{outline:none}h1,h2,h3,p{margin:0}h1{font-size:1.5rem;font-weight:600;line-height:1.35}h2{font-size:1.375rem;font-weight:600;line-height:1.35}h3{font-size:1rem;font-weight:600;margin-top:var(--space-5)}p+p{margin-top:var(--space-2)}a{color:var(--accent)}fieldset{padding:0;margin:var(--space-6) 0 0;border:0;min-width:0}legend{padding:0;margin-bottom:var(--space-3);font-weight:500}[hidden]{display:none!important}.secondary-text,.field-hint{color:var(--text-secondary)}.field-hint{font-size:.875rem;line-height:1.5;margin-top:var(--space-3)}.page{width:calc(100% - 4rem);max-width:60rem;margin:0 auto;padding:var(--space-7) 0 var(--space-8)}.narrow{max-width:35rem}.reading{max-width:47.5rem}.page-heading{margin:var(--space-5) 0 var(--space-6)}.page-heading p{margin-top:var(--space-2)}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);margin-top:var(--space-5)}.local-note{color:var(--text-secondary);font-size:.875rem}@media(max-width:600px){.page{width:calc(100% - 2rem);padding-top:var(--space-5)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}.button{display:inline-flex;justify-content:center;align-items:center;min-height:2.75rem;padding:.625rem 1.125rem;border:1px solid var(--control-border);border-radius:var(--radius-control);background:var(--surface);text-align:center;text-decoration:none;font-weight:500;line-height:1.4;transition:background-color .14s,border-color .14s}.button:hover:not(:disabled){background:var(--surface-subtle)}.button.primary{min-height:3rem;background:var(--accent);color:var(--surface);border-color:var(--accent)}.button.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.button:disabled{color:var(--disabled-text);background:var(--disabled-bg);border-color:var(--control-border)}.button.plain{background:transparent;border-color:transparent}.button.back{padding-left:0;color:var(--text-secondary)}.button.wide{width:100%}.site-header{border-bottom:1px solid var(--border-subtle)}.header-inner{max-width:60rem;min-height:4rem;width:calc(100% - 4rem);margin:auto;display:flex;justify-content:space-between;align-items:center;gap:var(--space-4)}.brand{font-weight:600;white-space:nowrap;font-size:1.0625rem}.button.brand{padding:.5rem 0}.brand-mode{font-size:.875rem;color:var(--text-secondary);font-weight:400}.site-header nav{display:flex;gap:var(--space-2)}.site-header nav .button{font-size:.875rem;padding:.5rem .75rem}.field{display:grid;gap:var(--space-3);font-weight:500}select{min-height:3rem;width:100%;min-width:0;border:1px solid var(--control-border);background:var(--surface);border-radius:var(--radius-control);color:var(--text-primary);padding:.625rem .875rem}.segmented{display:flex;padding:.25rem;gap:.25rem;background:var(--surface-subtle);border:1px solid var(--control-border);border-radius:var(--radius-control)}.segmented>*{flex:1;min-width:0}.segmented label{position:relative}.segmented label span,.segmented button{display:flex;align-items:center;justify-content:center;min-height:2.75rem;padding:.5rem;border:1px solid transparent;border-radius:.5rem;font-weight:500}.segmented input{position:absolute;inset:0;opacity:0;width:100%;height:100%;margin:0}.segmented input:checked+span,.segmented button[aria-pressed=true]{background:var(--surface);color:var(--accent);border-color:var(--accent)}.segmented input:focus-visible+span{outline:3px solid var(--focus);outline-offset:3px}.segmented button{background:transparent;color:var(--text-primary)}.sound-control{position:relative;font-size:.875rem;flex-shrink:0}.sound-control>summary{min-height:2.75rem;display:flex;align-items:center;padding:.5rem .75rem;border:1px solid transparent;border-radius:var(--radius-control);list-style:none}.sound-control>summary:after{content:"⌄";padding-left:.5rem}.sound-control>summary::-webkit-details-marker{display:none}.sound-control[open]>summary,.sound-control>summary:hover{background:var(--surface-subtle)}.sound-panel{position:absolute;z-index:5;right:0;top:calc(100% + .5rem);width:16rem;max-width:calc(100vw - 2rem);padding:var(--space-5);background:var(--surface);border:1px solid var(--control-border);border-radius:var(--radius-control);box-shadow:var(--shadow-card)}.sound-panel label:first-child{display:flex;justify-content:space-between}.sound-panel input[type=range]{width:100%;min-height:2.75rem;accent-color:var(--accent);margin:.5rem 0}.check-row{display:flex;align-items:center;gap:var(--space-3);min-height:2.75rem}input[type=checkbox]{width:1.25rem;height:1.25rem;accent-color:var(--accent);flex:0 0 auto}.notice,.storage-notice{padding:var(--space-4);border:1px solid var(--control-border);border-radius:var(--radius-control);background:var(--surface)}.storage-notice{max-width:47.5rem;width:calc(100% - 2rem);margin:1rem auto}.storage-notice .button{margin-top:var(--space-3)}dialog{width:min(28rem,calc(100% - 2rem));max-height:calc(100dvh - 2rem);overflow:auto;padding:var(--space-6);border:1px solid var(--border-subtle);border-radius:var(--radius-dialog);color:var(--text-primary);background:var(--surface);box-shadow:var(--shadow-dialog)}dialog::backdrop{background:#00000040}dialog h2+p{margin-top:var(--space-4)}.dialog-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-5)}@media(max-width:600px){.header-inner{width:calc(100% - 2rem);gap:.5rem}.site-header nav{gap:0}.site-header nav .button{padding:.5rem}}@media(max-width:359px){.site-header .brand{font-size:1rem}.brand-mode{display:block}dialog{padding:var(--space-5)}}.home{max-width:47.5rem;padding-top:clamp(3rem,10vh,6rem)}.home-intro{text-align:center;margin-bottom:var(--space-7)}.home-intro h1{font-size:2rem;line-height:1.25}.home-intro p{color:var(--text-secondary);margin-top:var(--space-4)}.mode-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5)}.mode-card{background:var(--surface);border:1px solid var(--control-border);border-radius:var(--radius-card);padding:var(--space-6);display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:var(--space-3);transition:background-color .14s,border-color .14s}.mode-card:hover{border-color:var(--accent);background:var(--accent-soft)}.mode-title{font-size:1.5rem;line-height:1.35;font-weight:600}.mode-card .secondary-text{font-size:.875rem}.card-link{display:flex;justify-content:space-between;width:100%;color:var(--accent);margin-top:var(--space-6);font-weight:500}.home-note{font-size:.875rem;text-align:center;color:var(--text-secondary);margin-top:var(--space-6)}.home .local-note{text-align:center;margin-top:clamp(3rem,12vh,7rem)}.settings-surface{background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius-card);padding:var(--space-6)}.setting-sound{margin-top:var(--space-6);padding-top:var(--space-5);border-top:1px solid var(--border-subtle)}.setting-sound .sound-control>summary{padding-left:0;justify-content:space-between}.setting-sound .sound-panel{position:static;width:100%;max-width:none;padding:var(--space-3) 0 0;border:0;box-shadow:none}.setup-start{margin-top:var(--space-6)}.setup-start .field-hint{text-align:center;margin-top:var(--space-4)}.is-quiz{background:var(--surface)}.quiz{max-width:47.5rem;padding-top:var(--space-6)}.quiz-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 1rem;color:var(--text-secondary);font-size:.875rem;font-variant-numeric:tabular-nums}.quiz-progress{appearance:none;border:none;width:100%;height:2px;background:var(--border-subtle);display:block;margin-top:var(--space-4)}.quiz-progress::-webkit-progress-bar{background:var(--border-subtle)}.quiz-progress::-webkit-progress-value{background:var(--accent)}.quiz-progress::-moz-progress-bar{background:var(--accent)}.question-stage{min-height:13rem;display:grid;place-items:center;padding:var(--space-5) 0 var(--space-3)}.question-number{font-size:8rem;font-weight:500;line-height:1.1;font-variant-numeric:tabular-nums;text-align:center;width:100%}.listening-stage{min-height:11rem;display:flex;flex-direction:column;justify-content:center;gap:var(--space-4);text-align:center;padding:var(--space-5) 0}.listening-stage h1{font-size:1.5rem;line-height:1.35}.listening-stage p{min-height:1.5em}.relative-confusions{list-style:none;padding:0}.relative-confusions li{padding:var(--space-4) 0;border-bottom:1px solid var(--border-subtle)}.relative-confusions p{margin-top:var(--space-2)}.replay-row{display:flex;justify-content:center;margin-bottom:var(--space-6)}.button.replay{min-width:5.5rem;font-size:.875rem;background:var(--surface)}.answers{display:flex;justify-content:center;gap:var(--space-3);margin:0 auto}.answer{width:5.5rem;flex:0 1 5.5rem;min-width:0;min-height:3.5rem;padding:.75rem .25rem;border-radius:var(--radius-control);border:1px solid var(--control-border);background:var(--surface);font-size:1.25rem;font-weight:500;line-height:1.2;transition:background-color .14s,border-color .14s}.answer:hover:not(:disabled){background:var(--surface-subtle);border-color:var(--text-primary)}.answer.selected{border:2px solid var(--accent);background:var(--accent-soft)}.answer.correct{border:2px solid var(--success);background:var(--success-soft)}.answer.incorrect{border:2px solid var(--error);background:var(--error-soft)}.answer:disabled{color:var(--text-primary);opacity:1;transition:none}.feedback{min-height:7rem;padding:var(--space-5) 0;text-align:center}.feedback p+p{margin-top:.25rem}.feedback .secondary-text{font-size:.875rem}.success-text{color:var(--success)}.error-text{color:var(--error)}.next-row{display:flex;justify-content:center}.next{min-width:10rem;transition:none}.quiz-footer{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem 1rem;margin-top:var(--space-6);font-size:.875rem}.quiz-hint{color:var(--text-secondary);font-size:.875rem;text-align:center;margin-top:var(--space-4)}.loading-stage{min-height:25rem;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--space-4);text-align:center}.learn-settings{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-6)}.learn-settings .field{width:min(23rem,65%)}.note-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));gap:var(--space-4);margin:var(--space-5) 0}.note-card{padding:var(--space-5) var(--space-4);border:1px solid var(--control-border);border-radius:var(--radius-control);background:var(--surface);display:grid;gap:var(--space-2)}.note-card:hover{background:var(--accent-soft);border-color:var(--accent)}.note-mapping{display:flex;justify-content:center;align-items:baseline;gap:var(--space-3)}.note-mapping strong{font-size:2rem;font-weight:500}.note-mapping span{font-size:1.25rem}.note-card>.secondary-text{font-size:.875rem}.score-section{margin-top:var(--space-6);padding-bottom:var(--space-6)}.score-label{font-size:.875rem;color:var(--text-secondary)}.score-line{display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-5);align-items:baseline;margin:var(--space-3) 0 var(--space-4)}.score{font-size:4rem;line-height:1.1;font-weight:600;font-variant-numeric:tabular-nums}.completion{font-size:.875rem}.report-facts{display:flex;flex-wrap:wrap;gap:var(--space-4) var(--space-6);margin:var(--space-6) 0 0;font-size:.875rem}.report-facts dt{color:var(--text-secondary)}.report-facts dd{margin:var(--space-1) 0 0}.report-section{border-top:1px solid var(--border-subtle);padding-top:var(--space-6);margin-top:var(--space-5)}.report-section>h2{margin-bottom:var(--space-4)}.confusion-list{margin-top:var(--space-5);background:var(--surface);border-radius:var(--radius-card);border:1px solid var(--border-subtle)}.confusion-row{display:flex;align-items:flex-start;gap:var(--space-4);padding:var(--space-5);cursor:pointer}.confusion-row+.confusion-row{border-top:1px solid var(--border-subtle)}.confusion-row input{margin:.375rem 0 0}.confusion-row>span{min-width:0}.pair-mapping{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:baseline;font-size:1.25rem;font-weight:500}.direction{display:block;margin-top:var(--space-3);font-size:.875rem}.evidence{display:block;font-size:.875rem;margin-top:var(--space-2)}.selection-summary{margin-top:var(--space-5);font-size:.875rem}.report-details{border-bottom:1px solid var(--border-subtle)}.report-details summary{min-height:3rem;padding:.75rem .25rem;font-weight:500}.report-details>p{padding:var(--space-3) 0 var(--space-5)}.table-scroll{max-width:100%;overflow-x:auto;margin-bottom:var(--space-4)}table{width:100%;border-collapse:collapse;font-size:.875rem;text-align:left}th,td{padding:.75rem .5rem;border-bottom:1px solid var(--border-subtle);white-space:nowrap}th{font-weight:500}.matrix{text-align:center;min-width:30rem}.matrix .has-count{color:var(--accent);background:var(--accent-soft)}.answer-records{padding:0;list-style:none;margin:0 0 var(--space-5)}.answer-records li{display:flex;justify-content:space-between;flex-wrap:wrap;gap:.5rem 1.5rem;padding:var(--space-4) 0;border-top:1px solid var(--border-subtle);font-size:.875rem}.record-note{display:block;margin-top:var(--space-1)}.report-actions{padding-top:var(--space-5)}.history-filter{margin-bottom:var(--space-5)}.history-list{border-top:1px solid var(--border-subtle)}.history-row{width:100%;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-3);text-align:left;padding:var(--space-5) 0;background:transparent;border:0;border-bottom:1px solid var(--border-subtle)}.history-row:hover{background:var(--surface-subtle)}.history-row strong{font-weight:500}.history-row .secondary-text{display:block;font-size:.875rem;margin-top:.25rem}.history-count{font-size:.875rem}.empty-state{padding:var(--space-8) 0;text-align:center}.empty-state .button{margin-top:var(--space-5)}@media(max-width:767px){.answers{flex-wrap:wrap;max-width:28rem}.answer{flex:0 0 calc((100% - 2.25rem)/4);width:calc((100% - 2.25rem)/4)}.quiz{padding-top:var(--space-5)}.question-stage{min-height:12rem}.replay-row{margin-bottom:var(--space-5)}}@media(max-width:600px){.home{padding-top:var(--space-7)}.home-intro{margin-bottom:var(--space-6)}.mode-grid{grid-template-columns:1fr;gap:var(--space-4)}.mode-card{padding:var(--space-5)}.card-link{margin-top:var(--space-4)}.home .local-note{margin-top:var(--space-7)}.settings-surface{padding:var(--space-5)}.confusion-row{padding:var(--space-4);gap:var(--space-3)}.history-filter{font-size:.875rem}}@media(max-width:479px){.answers{gap:var(--space-2)}.answer{flex-basis:calc((100% - 1.5rem)/4);width:calc((100% - 1.5rem)/4)}.feedback{min-height:8rem}.quiz-footer{margin-top:var(--space-5)}.quiz-hint{text-align:left}}@media(max-height:760px){.quiz{padding-top:var(--space-5);padding-bottom:var(--space-5)}.question-stage{min-height:10rem;padding:var(--space-3) 0}.replay-row{margin-bottom:var(--space-5)}.quiz-footer{margin-top:var(--space-4)}.quiz-hint{margin-top:var(--space-2)}}@media(max-height:600px){.question-number{font-size:6rem}.question-stage{min-height:8rem}}
