:root{--bg:#eff4fa;--ink:#172d48;--muted:#66788f;--blue:#3669d4;--line:#dde6f1;--gold:#e9b86d;--paper:#fff;--soft:#f6f9fd;--green:#28795d;font-family:'Segoe UI','Microsoft YaHei',sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,select,textarea,input{font:inherit}button,a,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:0;transition:background .15s,transform .15s}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,a:focus-visible,select:focus-visible,textarea:focus-visible,input:focus-visible{outline:3px solid var(--gold);outline-offset:3px}button:hover:not(:disabled){filter:brightness(.97)}.topbar{max-width:1320px;margin:auto;height:96px;padding:0 48px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink);font-size:21px;font-weight:700;white-space:nowrap}.brandmark{display:grid;place-items:center;background:var(--blue);color:white;width:42px;height:42px;border-radius:14px;font:italic bold 31px Georgia,serif}.brand small{display:block;font:9px 'Segoe UI',sans-serif;letter-spacing:2.4px;margin-top:3px;color:var(--muted)}nav{display:flex;gap:8px}.nav{background:none;padding:11px 17px;color:var(--muted);font-size:14px;border-radius:9px}.nav.active{background:#e0e9f8;color:var(--blue);font-weight:600}.quiet{background:transparent;color:var(--muted);padding:10px 0;font-size:13px}.backup{white-space:nowrap}main{max-width:1224px;margin:26px auto 60px;padding:0 24px}.intro{display:flex;justify-content:space-between;align-items:end;margin:0 0 30px;gap:20px}.eyebrow{color:var(--blue);font:11px Consolas,monospace;letter-spacing:2px;text-transform:uppercase;margin:0 0 12px}.intro h1{font-size:32px;letter-spacing:-1px;line-height:1.35;margin:0 0 10px;font-weight:650}.intro p{font-size:14px;color:var(--muted);margin:0;line-height:1.8}.date{font-size:12px;color:var(--muted);padding-bottom:3px;white-space:nowrap}.workspace{display:grid;grid-template-columns:224px minmax(0,1fr);gap:24px}.sidebar{display:flex;flex-direction:column;gap:18px}.rail,.smallcard{background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:22px 16px}.label{font-size:11px;letter-spacing:1.4px;color:var(--muted);margin:0 0 17px}.step{display:flex;width:100%;text-align:left;align-items:center;gap:12px;padding:16px 12px;border-radius:12px;background:transparent;color:var(--muted);margin-bottom:5px}.step:last-child{margin-bottom:0}.step.active{background:#eaf0fc;color:var(--blue)}.stepnum{width:28px;height:28px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;font:12px Consolas,monospace;flex-shrink:0}.step.active .stepnum{background:var(--blue);border-color:var(--blue);color:white}.step.complete .stepnum{color:var(--green);border-color:#c4dfd3;background:#eff8f3}.step strong{font-size:14px;font-weight:600;display:block}.step small{display:block;font-size:11px;margin-top:4px;opacity:.85}.smallcard p{font-size:12px;line-height:1.9;color:var(--muted);margin:10px 0 0}.smallcard strong{font-size:13px}.weekdots{display:flex;gap:7px;margin-top:15px}.dot{height:9px;flex:1;background:var(--line);border-radius:3px}.dot.done{background:var(--blue)}.contentcol{min-width:0}.timerbar{background:var(--ink);color:#fff;border-radius:18px 18px 0 0;padding:19px 28px;display:flex;align-items:center;gap:22px}.clock{font:30px Consolas,monospace;letter-spacing:-1px;line-height:1}.timercaption{font-size:11px;opacity:.65;margin-top:6px}.timerlead{flex:1}.timerlead strong{font-size:13px;font-weight:500}.time-track{display:flex;gap:4px;height:5px;margin-top:12px;max-width:240px}.time-track span{background:#3d5068;border-radius:3px}.time-track span.active{background:var(--gold)}.time-track span.done{background:#92b4ff}.timerbutton{color:white;background:#344b68;border:1px solid #4b617b;padding:10px 17px;border-radius:9px;font-size:12px;min-width:98px}.panel{background:var(--paper);border:1px solid var(--line);border-top:0;border-radius:0 0 18px 18px;overflow:hidden}.panelhead{padding:28px 30px 22px;display:flex;align-items:start;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line)}.chapter{font:11px Consolas,monospace;letter-spacing:1.3px;color:var(--blue);margin-bottom:9px}.panelhead h2{font-size:23px;letter-spacing:-.5px;margin:0 0 6px;font-weight:600}.subhead{font:italic 17px Georgia,serif;color:var(--muted)}select{font-size:12px;border:1px solid var(--line);border-radius:8px;padding:10px 26px 10px 10px;background:var(--soft);color:var(--ink);max-width:190px}.panelbody{padding:24px 30px 28px}.hint{font-size:13px;line-height:1.9;color:var(--muted);margin:0 0 20px}.player{background:var(--soft);border:1px solid var(--line);border-radius:12px;padding:16px 18px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.play{width:43px;height:43px;border-radius:50%;background:var(--blue);color:white;display:grid;place-items:center;flex-shrink:0;font-size:17px}.playerinfo{flex:1;min-width:100px}.playerinfo strong{display:block;font-size:13px;font-weight:600}.playerinfo small{display:block;font-size:11px;color:var(--muted);margin-top:5px}.speed{max-width:105px}.textbutton{background:transparent;color:var(--blue);font-size:12px;padding:8px 0}.tools{display:flex;gap:20px;margin:14px 0 20px;align-items:center;flex-wrap:wrap}.transcript{background:#f8fafd;border-left:3px solid #a9c1ed;padding:17px 22px;border-radius:0 10px 10px 0;margin-bottom:22px}.transcript p{font:19px/1.85 Georgia,serif;margin:0 0 12px}.transcript p:last-child{margin:0}.translation{font:12px/1.9 'Segoe UI','Microsoft YaHei',sans-serif!important;color:var(--muted);margin:0 0 16px!important}.sectionlabel{font-size:12px;display:flex;align-items:center;gap:9px;margin:24px 0 14px;font-weight:600}.sectionlabel span{font-weight:400;color:var(--muted);font-size:11px}.quiz{border:1px solid var(--line);border-radius:12px;padding:17px;margin:12px 0}.quiz p{font:17px/1.5 Georgia,serif;margin:0 0 12px}.options{display:flex;gap:8px;flex-wrap:wrap}.option{border:1px solid var(--line);background:white;padding:8px 12px;border-radius:7px;font-size:12px;color:var(--ink)}.option.selected{background:#eef3fd;border-color:var(--blue);color:var(--blue)}.feedback{font-size:12px;margin:12px 0 0;color:var(--green)}.feedback.wrong{color:#985b24}.panelbottom{border-top:1px solid var(--line);padding:19px 30px;display:flex;justify-content:space-between;align-items:center;gap:14px}.panelbottom small{font-size:11px;line-height:1.7;color:var(--muted)}.primary{background:var(--blue);color:white;padding:12px 19px;border-radius:9px;font-size:13px;white-space:nowrap}.secondary{background:white;color:var(--ink);border:1px solid var(--line);padding:10px 15px;border-radius:9px;font-size:12px}.sentencehero{padding:25px;border:1px solid var(--line);border-radius:13px;background:var(--soft)}.sentencehero blockquote{font:25px/1.65 Georgia,serif;margin:8px 0 15px}.sentencehero .translation{margin-bottom:0!important}.sentencenav{display:flex;align-items:center;justify-content:space-between;margin:18px 0;gap:10px}.sentencenav span{font:12px Consolas,monospace;color:var(--muted)}.actionrow{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.recordbox{border:1px dashed #becce0;border-radius:12px;padding:18px;margin-top:22px}.recordbox h3{font-size:13px;margin:0 0 10px}.recordbox p{font-size:12px;line-height:1.8;color:var(--muted);margin:10px 0 0}.record{background:#edf1fb;color:var(--blue);padding:11px 16px;border-radius:9px;font-size:12px}.record.isrecording{color:#a53737;background:#fff0f0}.record.isrecording::before{content:'';display:inline-block;background:#c74545;width:7px;height:7px;border-radius:50%;margin-right:7px}.recordtime{font:12px Consolas,monospace;color:var(--muted)}audio{width:100%;height:38px;margin-top:14px}.download{font-size:12px;color:var(--blue);display:inline-block;margin-top:8px}.promptcard{border:1px solid var(--line);border-radius:12px;padding:19px;margin:12px 0}.promptcard h3{font:20px/1.5 Georgia,serif;margin:0 0 8px}.promptcard p{color:var(--muted);font-size:12px;line-height:1.8;margin:6px 0}.starter{color:var(--blue)!important;font-family:Georgia,serif;font-size:15px!important}textarea{width:100%;resize:vertical;min-height:90px;background:var(--soft);border:1px solid var(--line);border-radius:9px;padding:12px;color:var(--ink);font-size:13px;line-height:1.7;margin-top:12px}textarea::placeholder{color:#8997aa}.checkrow{display:flex;align-items:center;gap:9px;font-size:12px;line-height:1.8;margin:12px 0;color:var(--muted)}input[type=checkbox]{accent-color:var(--blue);width:16px;height:16px}.phrasecard{border:1px solid var(--line);border-radius:12px;padding:19px;margin:12px 0}.phrasehead{display:flex;justify-content:space-between;gap:15px;align-items:center}.phrasehead h3{font:21px/1.4 Georgia,serif;margin:0}.save{background:#f0f4fb;color:var(--blue);font-size:12px;border-radius:7px;padding:7px 10px;white-space:nowrap}.phrasecard p{font-size:12px;color:var(--muted);line-height:1.8}.example{font:17px/1.7 Georgia,serif!important;color:var(--ink)!important}.recall{background:#f3f6fb;border:1px dashed var(--line);padding:13px;border-radius:9px;color:var(--muted);font-size:12px;margin-top:15px}.reviewbuttons{display:flex;gap:8px;margin-top:12px}.reviewbuttons button{font-size:12px;border-radius:7px;padding:9px 14px;background:#e9f3ee;color:var(--green)}.reviewbuttons button:first-child{background:#f8f1e7;color:#92601b}.notice{font-size:12px;padding:13px 16px;background:#edf3fe;border-radius:9px;line-height:1.8;color:#42618e;margin:16px 0}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:25px 0}.stat{background:white;border:1px solid var(--line);border-radius:14px;padding:23px}.stat strong{display:block;font:32px Consolas,monospace;margin-bottom:8px}.stat span{font-size:12px;color:var(--muted)}.widecard{background:white;border:1px solid var(--line);padding:25px;border-radius:16px}.historyrow{display:grid;grid-template-columns:100px 1fr 90px 90px;gap:15px;border-bottom:1px solid var(--line);padding:17px 0;font-size:13px;align-items:center}.historyrow:last-child{border:0}.historyrow small{color:var(--muted)}.badge{color:var(--green);font-size:11px;background:#edf6f0;padding:5px 9px;border-radius:6px;justify-self:start}.empty{padding:38px 10px;text-align:center;color:var(--muted);font-size:13px;line-height:2}.librarygrid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.librarygrid .phrasecard{background:white;margin:0}.statusline{font-size:11px;color:var(--muted);margin:15px 0}.celebration{background:#e8f3ec;color:var(--green);border:1px solid #cce0d2;border-radius:14px;padding:20px 24px;margin-bottom:22px}.celebration h2{font-size:19px;margin:0 0 8px}.celebration p{font-size:13px;line-height:1.8;margin:0}.fileinput{font-size:12px;max-width:100%;margin-top:14px}footer{max-width:1176px;margin:0 auto 30px;padding:0 24px;display:flex;justify-content:space-between;gap:20px;font-size:11px;color:var(--muted);line-height:1.8}#toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:var(--ink);color:white;border-radius:10px;padding:13px 20px;font-size:12px;opacity:0;pointer-events:none;transition:opacity .2s;max-width:90vw;z-index:20}#toast.show{opacity:1}[hidden]{display:none!important}@media(min-width:1400px){main{margin-top:40px}}@media(max-width:850px){.topbar{padding:0 24px}.backup{display:none}.workspace{grid-template-columns:185px minmax(0,1fr);gap:17px}.panelbody,.panelhead{padding:22px}.timerbar{padding:18px 22px;gap:15px}.timerlead strong{font-size:11px}.panelbottom{padding:18px 22px}.rail{padding:18px 10px}.step{padding:15px 8px;gap:9px}.intro h1{font-size:28px}.subhead{font-size:15px}}@media(max-width:640px){.topbar{height:auto;min-height:100px;padding:18px 20px 12px;flex-wrap:wrap;gap:15px}.brand{font-size:18px}.brandmark{height:36px;width:36px;font-size:28px}.brand small{font-size:8px}.topbar nav{margin-left:auto;gap:0}.nav{font-size:12px;padding:9px 10px}main{margin:15px auto 35px;padding:0 16px}.intro{margin-bottom:21px}.intro h1{font-size:26px}.intro p{font-size:12px}.date{display:none}.workspace{display:flex;flex-direction:column;gap:16px}.sidebar{gap:0}.rail{display:flex;padding:7px;border-radius:13px;gap:3px}.rail .label{display:none}.step{flex:1;justify-content:center;gap:7px;padding:10px 4px;margin:0;border-radius:8px}.stepnum{width:22px;height:22px;font-size:10px}.step strong{font-size:12px}.step small{font-size:10px;margin-top:3px}.smallcard{display:none}.timerbar{padding:17px 19px;gap:14px;border-radius:14px 14px 0 0}.clock{font-size:27px}.timerlead strong{font-size:11px}.timerbutton{min-width:85px;padding:10px 12px;font-size:11px}.panelhead{padding:22px 20px;gap:14px}.panelhead h2{font-size:21px}.panelhead select{max-width:142px;font-size:11px;padding:9px 7px}.panelbody{padding:20px}.panelbottom{padding:17px 20px;align-items:start}.panelbottom small{max-width:48%}.primary{font-size:12px;padding:12px 14px}.player{gap:11px;padding:14px}.playerinfo{min-width:80px}.playerinfo strong{font-size:12px}.speed{font-size:11px;padding:8px}.transcript{padding:14px 16px}.transcript p{font-size:18px}.sentencehero{padding:20px}.sentencehero blockquote{font-size:23px}.tools{gap:17px}.stats{gap:10px}.stat{padding:18px 12px}.stat strong{font-size:27px}.stat span{font-size:11px}.historyrow{grid-template-columns:80px 1fr;gap:10px;font-size:12px}.librarygrid{grid-template-columns:1fr}.widecard{padding:20px}footer{flex-direction:column;gap:4px;padding:0 20px;font-size:10px}.intro .secondary{font-size:11px}.recordbox{padding:15px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* Compact copy: keep practice content prominent and longer guidance optional. */
.topbar{height:80px}
main{margin-top:18px}
.intro{margin-bottom:22px}
.intro h1{font-size:24px;letter-spacing:-.4px;margin-bottom:5px}
.help{color:var(--muted);font-size:12px;line-height:1.8;margin:0 0 14px}
.help summary{cursor:pointer;width:fit-content;min-height:36px;display:list-item;align-content:center;color:var(--blue)}
.help summary:hover{text-decoration:underline;text-underline-offset:3px}
.help summary:focus-visible{outline:3px solid var(--gold);outline-offset:3px;border-radius:4px}
.help p{margin:7px 0 12px;line-height:1.8}
.help[open]{margin-bottom:18px}
.hint{margin-bottom:12px}
.recall{background:transparent;border:0;padding:0;margin-top:8px}
.recall .example{background:var(--soft);padding:12px;border-radius:8px}
.recordbox p{margin-top:8px}
.panelbottom{align-items:center}
button:active:not(:disabled){transform:translateY(1px)}
footer{align-items:start}
footer .help{max-width:480px;margin:0}
footer .help summary{margin-left:auto;min-height:24px}
@keyframes appAppear{from{opacity:0}to{opacity:1}}
main{animation:appAppear .16s ease-out}
@media(max-width:640px){.topbar{height:auto;min-height:88px}.intro h1{font-size:23px}.nav,.step,.primary,.secondary,.save,.record,.option,.textbutton,.reviewbuttons button,.help summary{min-height:44px}.intro{margin-bottom:18px}.tools{margin:8px 0 14px}.help{margin-bottom:10px}.player{padding:12px 14px}footer{flex-direction:row}footer .help{max-width:76%}footer .help summary{min-height:44px;margin-top:-10px}}
@media(prefers-reduced-motion:reduce){main{animation:none}}
