:root{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#293c35;background:#f7f5ef;font-synthesis:none;--ink:#293c35;--muted:#758078;--line:#e6e7de;--orange:#b95034;--orange-dark:#973f29;--sage:#e7eee5}
*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #d18d3f;outline-offset:4px}[hidden]{display:none!important}.site-header,main,footer{max-width:1200px;margin:auto}.site-header{display:flex;justify-content:space-between;align-items:center;padding:30px 32px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;font-size:24px;font-weight:650;letter-spacing:2px}.brand-icon{display:grid;place-items:center;width:44px;height:44px;background:var(--ink);color:#fffaf0;border-radius:15px 15px 15px 4px;font-size:24px;letter-spacing:0}.brand small{display:block;margin-top:5px;font-size:11px;color:var(--muted);font-weight:400;letter-spacing:2px}.region-label{text-align:right;font-size:13px;letter-spacing:1px}.region-label span{display:block;color:var(--muted);font-size:11px;margin-top:7px;letter-spacing:0}main{padding:0 32px}.intro{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:47px 0 32px}.eyebrow{color:#8c7051;font-size:12px;letter-spacing:2px;margin:0 0 15px}h1{font-size:clamp(25px,3.2vw,37px);font-weight:550;letter-spacing:1px;margin:0 0 15px;line-height:1.4}.intro p:not(.eyebrow){font-size:14px;color:var(--muted);margin:0;line-height:1.8}.button{display:inline-flex;justify-content:center;align-items:center;gap:12px;border-radius:12px;padding:13px 19px;border:1px solid transparent;font-size:14px;line-height:1.5;transition:background .15s,transform .15s}.button:hover{transform:translateY(-1px)}.soft{background:#f0eee5;border-color:#e3e2d8;color:var(--ink)}.soft:hover{background:#e9e7dc}.sage{background:var(--sage);border-color:#c7d8c5;color:#395d3e}.primary{background:var(--orange);color:#fff}.primary:hover{background:var(--orange-dark)}.tabs{display:flex;gap:27px;border-bottom:1px solid var(--line);margin-bottom:30px}.tabs button{background:none;border:0;border-bottom:2px solid transparent;padding:14px 2px 15px;color:var(--muted);font-size:14px;white-space:nowrap}.tabs button.active{color:var(--ink);border-bottom-color:var(--ink);font-weight:600}.tabs button span{display:inline-block;background:#e9e9df;font-size:10px;border-radius:5px;padding:1px 5px;margin-left:5px}.practice-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:30px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0 0 20px}.section-heading h2{font-size:17px;font-weight:600;margin:0}.section-heading>span{font-size:11px;color:var(--muted)}.section-heading p{font-size:13px;line-height:1.8;color:var(--muted);margin:10px 0 0}.lesson-sidebar>.section-heading{padding:5px 0 1px}.lesson-button{width:100%;display:flex;align-items:center;gap:13px;text-align:left;background:transparent;border:1px solid transparent;border-radius:14px;padding:17px 13px;margin-bottom:8px;color:var(--ink)}.lesson-button.selected{background:#ecefe6;border-color:#dce2d4}.lesson-button:hover{background:#eeeee4}.lesson-icon{width:39px;height:39px;border-radius:12px;background:#f1ead9;display:grid;place-items:center;flex-shrink:0;color:#7c6f43}.lesson-button.selected .lesson-icon{background:#dbe5d5;color:#486344}.lesson-icon svg{width:23px;height:23px;stroke:currentColor;stroke-width:1.5;fill:none;stroke-linecap:round;stroke-linejoin:round}.lesson-name{font-size:15px;font-weight:550;line-height:1.6}.lesson-name small{display:block;color:var(--muted);font-size:11px;font-weight:400;margin-top:3px}.lesson-arrow{margin-left:auto;color:#819078;font-size:16px}.sidebar-note{display:flex;gap:12px;align-items:flex-start;padding:22px 10px;margin-top:25px;border-top:1px solid var(--line)}.leaf{font-size:25px;color:#8e9a6d}.sidebar-note p{font-size:13px;line-height:1.9;color:#798170;margin:0}.fine-print{font-size:11px;line-height:1.8;color:var(--muted)}.lesson-sidebar>.fine-print{padding:0 10px}.practice-card{background:#fffefa;border:1px solid #e5e4d9;border-radius:23px;padding:30px 36px;box-shadow:0 8px 30px #384a3410}.card-topline{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.tag{font-size:11px;border:1px solid #e6e1d3;border-radius:7px;padding:5px 10px;background:#f7f3e9;color:#8c7655;display:inline-flex;gap:5px;align-items:center}.step-label{font-size:12px;color:#899082}.purpose{font-size:14px;color:var(--muted);line-height:1.8;margin:0 0 15px}.target{font-size:clamp(25px,3.5vw,41px);font-weight:550;letter-spacing:1px;margin:0 0 24px;line-height:1.6}.listen-row{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.listen{background:var(--sage);color:#446044;padding:11px 18px}.listen.playing{background:#d2e2cd}.text-button{padding:6px 0;background:transparent;border:0;font-size:12px;color:#6c7f66;text-decoration:underline;text-underline-offset:4px}.alternatives{font-size:12px;color:var(--muted);margin:17px 0 0;line-height:1.8}.divider{height:1px;background:var(--line);margin:28px 0 24px}.record-title{display:flex;justify-content:space-between;align-items:center}h3{font-size:15px;font-weight:550;margin:0}.record-title>span{font-size:11px;color:var(--muted)}.record-zone{text-align:center;padding:22px 0 0}.wave{height:40px;display:flex;align-items:center;justify-content:center;gap:5px;margin-bottom:20px}.wave i{height:var(--bar-height,7px);width:4px;background:#cbd2be;border-radius:4px;transition:height .07s}.wave i:nth-child(3n){height:calc(var(--bar-height,7px)*1.6)}.wave i:nth-child(4n){height:calc(var(--bar-height,7px)*2.2)}.wave.recording i{background:var(--orange)}.record-button{display:inline-flex;align-items:center;justify-content:center;gap:13px;background:var(--orange);color:white;padding:18px 35px;font-size:16px;border:0;border-radius:40px;min-width:240px;box-shadow:0 5px 15px #b9503420}.record-button:hover{background:var(--orange-dark)}.record-dot{width:13px;height:13px;border-radius:50%;border:3px solid #fff}.record-button.recording .record-dot{border-radius:3px;background:white}.record-zone p{font-size:11px;color:var(--muted);margin:15px 0 0;line-height:1.8;min-height:20px}.playback{padding-top:25px;border-top:1px solid var(--line);margin-top:25px}.playback audio{width:100%;height:40px;margin:13px 0 5px}.playback>a{display:inline-block}fieldset{border:0;padding:0;margin:22px 0 0}legend{font-size:13px;margin-bottom:14px}.rating-row{display:flex;gap:9px;flex-wrap:wrap}.rating-row .button{font-size:13px;padding:11px 15px}.rating-row .chosen{outline:2px solid #7e8c69;outline-offset:2px}.quality{font-size:13px;background:#fff0df;color:#996b34;padding:12px;border-radius:8px;line-height:1.6}.coach-message{font-size:14px;background:#edf1e7;padding:15px 17px;border-radius:12px;margin-top:20px;line-height:1.8}.chunks{display:flex;gap:8px;flex-wrap:wrap;margin-top:13px}.chunks button{border:1px solid #dbe0d2;background:#f7f8ef;padding:11px 14px;border-radius:10px;font-size:13px;color:#47573b}.next-action{margin-top:18px}.bottom-note{display:flex;gap:14px;align-items:flex-start;margin:23px 5px 0;color:#819074}.bottom-note>span{font-size:28px}.bottom-note p{font-size:12px;line-height:1.9;margin:0}.bottom-note p span{font-size:11px;color:#8a9185}.notice{padding:14px 17px;background:#fff0df;color:#8e612d;border:1px solid #eddbc0;border-radius:10px;font-size:13px;line-height:1.8;margin:0 0 20px}.history-card,.material-card,.empty-state{padding:23px 26px;background:#fffefa;border:1px solid #e4e4d9;border-radius:16px;margin-bottom:14px}.history-card h3{font-size:18px;margin:14px 0}.history-meta{display:flex;justify-content:space-between;gap:10px;font-size:11px;color:var(--muted);line-height:1.8}.history-card audio{display:block;width:100%;height:40px;margin:12px 0}.history-card .history-actions{display:flex;justify-content:space-between;gap:10px}.empty-state{text-align:center;color:var(--muted);padding:60px 15px;font-size:14px;line-height:2}.danger{color:#a3503b}.material-layout{display:grid;grid-template-columns:minmax(270px,.9fr) minmax(0,1.1fr);gap:25px}.material-layout form{padding:25px}.material-layout form h3{margin-bottom:22px}.material-layout label{display:block;font-size:12px;margin-bottom:17px;line-height:1.8;color:#61715e}input:not([type=checkbox]),textarea,select{display:block;width:100%;border:1px solid #dddeda;background:#fffefb;border-radius:8px;padding:11px 12px;margin-top:7px;color:var(--ink);font-size:13px;line-height:1.7}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#92998d;font-size:12px}.material-card h3{font-size:19px;margin:13px 0}.material-card p{font-size:13px;line-height:1.9;color:#647360;margin:10px 0}.material-card .fine-print{font-size:11px;color:var(--muted)}.material-card a{font-size:11px;text-decoration:underline;text-underline-offset:3px}.material-card .tag{font-size:10px}.material-card .material-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.material-card .material-top>span:first-child{font-size:11px;color:var(--muted)}#material-status{font-size:12px;line-height:1.8;color:#627956}footer{display:flex;justify-content:space-between;gap:15px;padding:35px 32px 25px;margin-top:42px;border-top:1px solid var(--line);font-size:11px;color:#8d9489}
@media(min-width:1500px){.intro{padding-top:60px}.practice-card{padding:36px 42px}.practice-layout{gap:40px}}
@media(max-width:800px){.site-header{padding:23px 22px}main{padding:0 22px}.intro{padding:32px 0 22px;align-items:flex-start}.intro .button{padding:9px 12px;font-size:12px;flex-shrink:0;margin-top:33px}.intro p:not(.eyebrow){font-size:12px}.practice-layout{grid-template-columns:1fr;gap:18px}.lesson-sidebar .section-heading,.sidebar-note,.lesson-sidebar>.fine-print{display:none}#lesson-list{display:flex;gap:9px;overflow-x:auto}.lesson-button{min-width:165px;padding:12px 10px;margin:0;background:#f1f0e7}.lesson-name{font-size:13px}.lesson-icon{width:31px;height:31px}.lesson-icon svg{width:20px}.lesson-arrow{display:none}.practice-card{padding:25px}.tabs{gap:22px;margin-bottom:23px}.material-layout{grid-template-columns:1fr}.region-label{font-size:11px}.region-label span{font-size:10px}footer{padding:25px 22px}.view>.section-heading{align-items:flex-start}.view>.section-heading>.button{font-size:12px;flex-shrink:0}}
@media(max-width:480px){.site-header{padding:20px 18px}main{padding:0 18px}.brand{font-size:20px}.brand-icon{width:39px;height:39px}.brand small{font-size:9px}.intro{display:block}.intro .button{margin-top:17px}.intro h1{font-size:26px;letter-spacing:0}.eyebrow{font-size:11px}.tabs{gap:23px}.tabs button{font-size:13px}.practice-card{padding:23px 20px;border-radius:17px}.target{font-size:30px}.purpose{font-size:13px}.listen-row{gap:14px}.record-button{min-width:220px;padding:17px 24px}.rating-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}.rating-row .button{font-size:12px;padding:10px 5px}.section-heading h2{font-size:15px}.section-heading p{font-size:12px}.history-card{padding:20px}.material-layout form{padding:22px}.history-meta{flex-wrap:wrap}footer{padding:22px 18px;font-size:10px;flex-wrap:wrap}.card-topline{margin-bottom:24px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
/* 网格子项允许收缩，让练习卡和横向课程列表都保持在窄屏内。 */
.lesson-sidebar,.practice-main,#lesson-list,.material-layout>*{min-width:0}
@media(max-width:800px){.practice-layout{grid-template-columns:minmax(0,1fr)}}

/* v0.1.1：围绕练习步骤补充操作，不让慢速和分段练习藏在后续反馈里。 */
.intro{padding:26px 0 20px}.intro h1{font-size:30px;margin-bottom:8px}.eyebrow{margin-bottom:10px}.tabs{margin-bottom:22px}
.practice-steps{display:flex;gap:8px;margin-bottom:14px}.practice-steps button{display:flex;align-items:center;justify-content:center;gap:8px;flex:1;background:#edece4;border:1px solid #d7dcd0;color:#53634e;border-radius:11px;min-height:46px;font-size:14px;padding:9px 10px}.practice-steps button[aria-current=step]{background:#dce7d5;color:#314c30;border-color:#b5c6ab;font-weight:600}.practice-steps button span{display:grid;place-items:center;border:1px solid currentColor;width:22px;height:22px;border-radius:50%;font-size:12px;flex-shrink:0}
.practice-card{padding:26px 30px}.card-topline{margin-bottom:18px}.target{font-size:36px;margin-bottom:18px}.speed-control{display:inline-flex;border:1px solid #bbc9b1;border-radius:10px;padding:3px;gap:3px}.speed-control button{border:0;border-radius:7px;padding:10px 12px;min-height:42px;background:transparent;font-size:13px;color:#52644e}.speed-control button[aria-pressed=true]{background:#3e5e3c;color:#fff}.listen-row{gap:12px}.listen{min-height:48px}.playback-status-row{display:flex;gap:12px;align-items:center;justify-content:space-between;min-height:38px}.playback-status-row p{font-size:12px;line-height:1.8;color:#52644e;margin:7px 0}.playback-status-row button{flex-shrink:0}.alternatives{margin-top:6px;font-size:13px}.expression-tip{display:flex;gap:9px;font-size:13px;line-height:1.9;color:#51634d;padding:12px 14px;background:#f4f3e9;border-radius:10px;margin:14px 0}.expression-tip strong{font-weight:550;white-space:nowrap}.phrase-tools{margin-top:16px}.phrase-tools h3{font-size:13px;color:#61715b;margin-bottom:10px}.phrase-tools>div{display:flex;gap:8px;flex-wrap:wrap}.phrase-tools .button{padding:9px 14px;min-height:44px}.phrase-tools [aria-pressed=true]{outline:2px solid #768e65}.divider{margin:20px 0}.record-zone{padding-top:13px}.wave{height:24px;margin-bottom:13px}.record-zone p{font-size:12px}.import-row{margin-top:10px;display:flex;justify-content:center;align-items:center;gap:12px;flex-wrap:wrap}.import-row span{font-size:11px;color:#6c7766}.import-row .text-button,#cancel-recording,#back-full{min-height:44px}.comparison-actions{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0}.comparison-actions .button{min-height:46px;font-size:13px}.comparison-hint{font-size:13px;line-height:1.9;color:#5a6d52}.history-actions{margin-top:14px}.empty-state .button{margin-top:16px}.fine-print{color:#6c7866}.step-label{color:#62735a}
@media(max-width:800px){.intro{padding:22px 0 18px}.intro h1{font-size:27px}.intro .button{margin-top:20px}.practice-layout{gap:14px}}
@media(max-width:480px){.intro h1{font-size:25px}.intro .button{margin-top:13px}.practice-card{padding:20px 18px}.target{font-size:29px}.practice-steps button{font-size:12px;padding:9px 5px;gap:5px}.speed-control{width:100%}.speed-control button{flex:1}.expression-tip{display:block}.expression-tip strong{display:block;margin-bottom:3px}.comparison-actions{display:grid;grid-template-columns:1fr}.playback-status-row{align-items:flex-start}.record-button{min-width:210px}.tabs{gap:20px}.import-row{gap:4px}.card-topline{margin-bottom:14px}}
.playback{padding-top:0;border-top:0;margin-top:0}.playback>#recording-origin{overflow-wrap:anywhere;margin:10px 0 0}.history-card .fine-print,.material-card p{overflow-wrap:anywhere}#playback-heading:focus{outline:0}
.speed-control button,.rating-row .button,.history-actions .text-button{min-height:44px}

.speech-check { margin: 24px 0; padding: 22px; background: var(--paper, #f7f6ef); border: 1px solid #d9dfd2; border-radius: 18px; }
.speech-check h3 { margin-top: 0; }
.cloud-consent { display: flex; align-items: flex-start; gap: 10px; font-size: 14px; line-height: 1.8; margin: 16px 0; }
.cloud-consent input { width: 19px; height: 19px; flex: 0 0 19px; margin-top: 4px; accent-color: #526c52; }
#transcript-section label { display: grid; gap: 10px; font-size: 15px; }
#speech-reference { width: 100%; padding: 12px; border: 1px solid #b6c0ae; border-radius: 10px; font: inherit; background: white; }
.assessment-result { margin-top: 18px; padding-top: 16px; border-top: 1px solid #d2dbca; }
.assessment-result h4 { margin: 0; font-size: 18px; }
.assessment-result li { margin: 8px 0; }
.score-summary { font-size: 14px; color: #526c52; }
@media (max-width: 600px) { .speech-check { padding: 16px; } }
