:root{--bg:#f7f3ea;--surface:#fff;--ink:#25231f;--ink-muted:#5f5a50;--primary:#2f5d50;--primary-ink:#fff;--primary-soft:#e1ece6;--primary-soft-ink:#1f4a3d;--accent:#8a5430;--border:#d8d0c2;--border-strong:#8c8372;--error:#9b2c2c;--error-soft:#f6e3df;--error-soft-ink:#7a1f1f;--skip-soft:#f3e7c8;--skip-soft-ink:#6b4a12;--focus:#1b4db3;--font-serif:Georgia, "Times New Roman", serif;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--radius:3px;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--content:960px;--tap:44px}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);margin:0;font-size:16px;line-height:1.6}h1,h2,h3{font-family:var(--font-serif);margin:0 0 var(--s3);font-weight:700;line-height:1.25}h1{font-size:2rem}h2{font-size:1.375rem}h3{font-size:1.125rem}p{margin:0 0 var(--s3)}a{color:var(--primary);text-underline-offset:3px}a:hover{color:var(--ink)}:focus-visible{outline:3px solid var(--focus);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}.skip-link{left:var(--s3);background:var(--ink);color:#fff;padding:var(--s2) var(--s3);z-index:100;position:absolute;top:-48px}.skip-link:focus{top:var(--s2)}.site-header{border-bottom:1px solid var(--border);background:var(--bg)}.header-inner{max-width:var(--content);padding:var(--s3) var(--s4);align-items:center;gap:var(--s4);flex-wrap:wrap;margin:0 auto;display:flex}.logo{font-family:var(--font-serif);color:var(--ink);min-height:var(--tap);align-items:center;margin-right:auto;font-size:1.25rem;font-weight:700;text-decoration:none;display:inline-flex}.nav{gap:var(--s2);flex-wrap:wrap;display:flex}.nav a{color:var(--ink);padding:10px var(--s3);min-height:var(--tap);border-bottom:2px solid #0000;align-items:center;text-decoration:none;display:inline-flex}.nav a[aria-current=page]{border-bottom-color:var(--primary);font-weight:600}.nav a:hover{border-bottom-color:var(--border-strong)}main{max-width:var(--content);padding:var(--s6) var(--s4) var(--s7);margin:0 auto}.site-footer{border-top:1px solid var(--border);color:var(--ink-muted);font-size:.875rem}.footer-inner{max-width:var(--content);padding:var(--s4);margin:0 auto}.btn{font:inherit;min-height:var(--tap);padding:8px var(--s4);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--ink);cursor:pointer;justify-content:center;align-items:center;gap:var(--s2);font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{background:var(--bg);border-color:var(--ink)}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-ink)}.btn-primary:hover{background:#244a40;border-color:#244a40}.btn-quiet{background:0 0;border-color:#0000}.btn[disabled]{opacity:.55;cursor:not-allowed}.btn-row{gap:var(--s2);flex-wrap:wrap;display:flex}label,.label{margin-bottom:var(--s1);font-weight:600;display:block}input[type=search],input[type=text],input[type=email],input[type=password],input[type=number],input[type=url],select,textarea{font:inherit;width:100%;min-height:var(--tap);padding:10px var(--s3);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--ink)}textarea{resize:vertical;min-height:96px;font-size:1.125rem;line-height:1.6}.hero{padding:var(--s6) 0 var(--s5);border-bottom:1px solid var(--border);margin-bottom:var(--s6)}.hero p.lead{color:var(--ink-muted);max-width:40rem;font-size:1.125rem}.steps{gap:var(--s5);margin:0 0 var(--s6);counter-reset:step;grid-template-columns:repeat(3,1fr);padding:0;list-style:none;display:grid}.steps li{border-top:2px solid var(--ink);padding-top:var(--s3);counter-increment:step}.steps li:before{content:counter(step) ".";font-family:var(--font-serif);font-size:1.25rem;font-weight:700;display:block}.steps strong{display:block}.resume{border:1px solid var(--border-strong);background:var(--surface);padding:var(--s4);gap:var(--s4);margin-bottom:var(--s6);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}.resume p{margin:0}.filters{gap:var(--s3);margin-bottom:var(--s5);grid-template-columns:repeat(4,1fr);display:grid}.filters .field-search{grid-column:1/-1}.lesson-list{border-top:1px solid var(--border-strong);margin:0;padding:0;list-style:none}.lesson-item{border-bottom:1px solid var(--border);padding:var(--s4) 0;gap:var(--s2) var(--s4);grid-template-columns:1fr auto;align-items:center;display:grid}.lesson-item h3{margin:0 0 var(--s1)}.meta{color:var(--ink-muted);margin:0;font-size:.9375rem}.meta span+span:before{content:"·";margin:0 var(--s2)}.badge{padding:2px var(--s2);border:1px solid var(--border-strong);border-radius:var(--radius);color:var(--ink);font-size:.8125rem;font-weight:600;display:inline-block}.badge-progress{background:var(--primary-soft);color:var(--primary-soft-ink);border-color:var(--primary)}.empty{padding:var(--s6) 0;text-align:center;color:var(--ink-muted)}.learn-wrap{max-width:720px;margin:0 auto}.learn-head{gap:var(--s3);margin-bottom:var(--s4);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}.breadcrumb{color:var(--ink-muted);align-items:center;gap:var(--s2);font-size:.9375rem;display:flex}.breadcrumb a{min-height:var(--tap);align-items:center;display:inline-flex}.progress{margin-bottom:var(--s5)}.progress-count{margin-bottom:var(--s2);font-weight:600}.pips{gap:4px;margin:0;padding:0;list-style:none;display:flex}.pip{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);flex:1;justify-content:center;align-items:center;min-width:0;height:28px;font-size:.8125rem;font-weight:700;display:flex}.pip[aria-current=step]{border:2px solid var(--ink)}.pip.is-correct{background:var(--primary-soft);color:var(--primary-soft-ink);border-color:var(--primary)}.pip.is-skip{background:var(--skip-soft);color:var(--skip-soft-ink);border-color:var(--skip-soft-ink)}.pip.is-wrong{background:var(--error-soft);color:var(--error-soft-ink);border-color:var(--error)}.player{border:1px solid var(--border-strong);background:var(--surface);padding:var(--s4);margin-bottom:var(--s4)}.player-top{gap:var(--s3);flex-wrap:wrap;align-items:center;display:flex}.player-status{color:var(--ink-muted);margin:var(--s3) 0 0;min-height:1.6em}.player-controls{gap:var(--s4);flex-wrap:wrap;align-items:flex-end;display:flex}.player-controls select{width:auto;min-width:180px}.player-controls .kbd-hint{align-self:center;margin:0}.audio-error{border:1px solid var(--error);background:var(--error-soft);color:var(--error-soft-ink);padding:var(--s3) var(--s4);margin-bottom:var(--s4);gap:var(--s3);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}.audio-error p{margin:0}.answer{margin-bottom:var(--s3)}.answer-hint{color:var(--ink-muted);margin:var(--s1) 0 0;font-size:.9375rem}.hint-box{border-left:3px solid var(--accent);padding:var(--s2) var(--s3);margin:0 0 var(--s3);background:var(--surface);color:var(--ink);letter-spacing:.04em;font-family:ui-monospace,Menlo,Consolas,monospace}.feedback{padding:var(--s3) var(--s4);margin-bottom:var(--s4);border:1px solid}.feedback p{margin:0 0 var(--s2)}.feedback p:last-child{margin:0}.feedback-ok{background:var(--primary-soft);color:var(--primary-soft-ink);border-color:var(--primary)}.feedback-bad{background:var(--error-soft);color:var(--error-soft-ink);border-color:var(--error)}.feedback-skip{background:var(--skip-soft);color:var(--skip-soft-ink);border-color:var(--skip-soft-ink)}.diff{font-size:1.125rem;line-height:2}.w{border-radius:2px;padding:1px 3px}.w-bad{color:var(--error-soft-ink);-webkit-text-decoration:underline wavy var(--error);text-decoration:underline wavy var(--error);text-underline-offset:4px;background:#fff;font-weight:600}.w-bad:after{content:" ✗";font-weight:700}.w-missing{color:var(--error-soft-ink);border:1px dashed var(--error);background:#fff;font-style:italic}.action-bar{gap:var(--s2);flex-wrap:wrap;align-items:center;display:flex}.action-bar .spacer{margin-left:auto}.tabs{gap:var(--s1);border-bottom:1px solid var(--border-strong);margin-top:var(--s5);display:flex}.tab{font:inherit;padding:10px var(--s4);min-height:var(--tap);cursor:pointer;color:var(--ink);background:0 0;border:1px solid #0000;border-bottom:none}.tab[aria-selected=true]{background:var(--surface);border-color:var(--border-strong);margin-bottom:-1px;font-weight:700}.tabpanel{border:1px solid var(--border-strong);background:var(--surface);padding:var(--s4);border-top:none}.transcript-line{padding:var(--s2) 0;border-bottom:1px solid var(--border)}.transcript-line:last-child{border-bottom:none}.transcript-line .n{color:var(--ink-muted);margin-right:var(--s2);font-weight:600}.locked{color:var(--ink-muted)}.stats{gap:var(--s3);margin:var(--s4) 0 var(--s5);grid-template-columns:repeat(4,1fr);display:grid}.stat{border:1px solid var(--border-strong);background:var(--surface);padding:var(--s3)}.stat dt{color:var(--ink-muted);font-size:.875rem}.stat dd{font-family:var(--font-serif);margin:0;font-size:1.625rem;font-weight:700}.review-list{padding-left:var(--s5)}.review-list li{margin-bottom:var(--s3)}.mobile-bar{display:none}@media (max-width:720px){h1{font-size:1.625rem}main{padding-top:var(--s5)}.steps{gap:var(--s4);grid-template-columns:1fr}.filters,.lesson-item{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,1fr)}.learn-wrap{padding-bottom:96px}.desktop-actions,.kbd-hint{display:none}.mobile-bar{gap:var(--s2);z-index:20;padding:var(--s2) var(--s4) calc(var(--s2) + env(safe-area-inset-bottom,0px));background:var(--bg);border-top:1px solid var(--border-strong);display:flex;position:fixed;bottom:0;left:0;right:0}.mobile-bar .btn{flex:1;min-height:48px}.player-controls .field{flex:1}.player-controls select{width:100%}.pip{height:24px;font-size:.75rem}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.logo:hover{color:var(--ink)}.nav .btn-quiet{min-height:var(--tap)}.form{gap:var(--s4);max-width:28rem;display:grid}.form-wide{max-width:100%}.field-error{color:var(--error-soft-ink);background:var(--error-soft);border:1px solid var(--error);padding:var(--s2) var(--s3);margin:0}.field-note{color:var(--ink-muted);margin:var(--s1) 0 0;font-size:.9375rem}.notice{border:1px solid var(--border-strong);background:var(--surface);padding:var(--s3) var(--s4);margin-bottom:var(--s4)}.notice-warn{border-color:var(--skip-soft-ink);background:var(--skip-soft);color:var(--skip-soft-ink)}.notice-ok{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-soft-ink)}.source-note{color:var(--ink-muted);margin-top:var(--s5);border-top:1px solid var(--border);padding-top:var(--s3);font-size:.875rem}.admin-wrap{max-width:1100px;margin:0 auto}.table-wrap{border:1px solid var(--border-strong);background:var(--surface);overflow-x:auto}table.data{border-collapse:collapse;width:100%;font-size:.9375rem}table.data th,table.data td{text-align:left;padding:var(--s2) var(--s3);border-bottom:1px solid var(--border);vertical-align:top}table.data th{background:var(--bg);font-weight:700}.pill{padding:1px var(--s2);border:1px solid var(--border-strong);border-radius:var(--radius);font-size:.8125rem;font-weight:600;display:inline-block}.pill-published,.pill-approved{background:var(--primary-soft);color:var(--primary-soft-ink);border-color:var(--primary)}.pill-draft,.pill-pending{background:var(--skip-soft);color:var(--skip-soft-ink);border-color:var(--skip-soft-ink)}.pill-archived,.pill-rejected{background:var(--error-soft);color:var(--error-soft-ink);border-color:var(--error)}.grid-2{gap:var(--s4);grid-template-columns:1fr 1fr;display:grid}.ch-card{border:1px solid var(--border-strong);background:var(--surface);padding:var(--s4);margin-bottom:var(--s4);gap:var(--s3);display:grid}.ch-card h3{margin:0}.row{gap:var(--s3);flex-wrap:wrap;align-items:flex-end;display:flex}.row>*{flex:10rem}.issues{padding-left:var(--s5);margin:var(--s2) 0 0}@media (max-width:720px){.grid-2{grid-template-columns:1fr}}
