.speaking-entry{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:16px 0;padding:15px;border:1px solid #cfdfd4;border-radius:14px;background:#edf6ef;color:#243653}.speaking-entry strong{font-size:14px}.speaking-entry p{font-size:12px;margin:5px 0 0;color:#52685c}.speaking-entry button{display:flex;align-items:center;justify-content:center;gap:7px;flex-shrink:0;border:0;border-radius:12px;padding:12px;color:#fff;background:#38765b;font:inherit;font-size:14px;cursor:pointer}.speaking-entry svg{width:20px;height:24px}
body.speaking-is-open{overflow:hidden}.speaking-overlay{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(24,39,54,.55);overflow:auto;overscroll-behavior:contain}.speaking-dialog{box-sizing:border-box;background:#fff;color:#243653;width:660px;max-width:100%;max-height:calc(100dvh - 40px);max-height:min(920px,calc(100dvh - 40px));overflow:auto;border-radius:24px;box-shadow:0 24px 90px #18273640;font-family:inherit}.speaking-dialog *{box-sizing:border-box}.speaking-dialog [hidden]{display:none!important}.speaking-dialog button,.speaking-dialog select{font:inherit;cursor:pointer}.speaking-dialog button{border:1px solid #dae3e8;background:#fff;color:#243653;border-radius:12px;min-height:44px;padding:11px 16px;font-weight:600;font-size:14px;line-height:1.4}.speaking-dialog button:disabled{opacity:.45;cursor:default}.speaking-dialog button:focus-visible,.speaking-dialog select:focus-visible{outline:3px solid #d89132;outline-offset:3px}.speaking-header{display:flex;align-items:center;justify-content:space-between;background:#edf6ef;border-bottom:1px solid #dce9df;padding:23px 28px}.speaking-header h2{font-size:25px;line-height:1.3;margin:5px 0 0}.speaking-eyebrow{font-size:12px;color:#52685c}.speaking-header button{font-size:26px;width:44px;height:44px;padding:0;background:transparent;border:0}.speaking-body{padding:22px 32px 26px}.speaking-course{font-size:13px;color:#687587;margin-bottom:16px;overflow-wrap:anywhere}.speaking-position{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px}.speaking-position>span{font-weight:700;white-space:nowrap}.speaking-position label{font-size:12px;color:#687587;display:flex;align-items:center;gap:7px;min-width:0}.speaking-position select{min-width:0;max-width:210px;width:100%;border:1px solid #dae3e8;border-radius:8px;background:#fff;color:#243653;padding:8px}.speaking-dots{display:flex;gap:8px;margin:18px 0 8px}.speaking-dots span{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:#f0f3f6;color:#687587;font-size:12px}.speaking-dots .is-current{box-shadow:0 0 0 2px #38765b}.speaking-dots .is-done{background:#38765b;color:white}.speaking-sentence{font-family:Georgia,'Times New Roman',serif;font-size:32px;line-height:1.55;letter-spacing:.1px;margin:20px 0 22px;min-height:98px;overflow-wrap:anywhere}.speaking-listen{display:flex;justify-content:center;align-items:center;gap:12px;flex-wrap:wrap;min-height:46px}.speaking-listen span{font-size:12px;color:#52685c}.speaking-dialog .speaking-listen button{border-color:#c7dccc;background:#f6faf7;color:#38765b}.speaking-record-area{display:flex;flex-direction:column;align-items:center;padding:22px 0 7px}.speaking-dialog .speaking-record{display:flex;flex-direction:column;gap:9px;align-items:center;justify-content:center;width:108px;height:108px;border-radius:50%;background:#38765b;color:#fff;border:6px solid #e3eee7;font-size:15px;box-shadow:0 0 0 1px #cfe0d4}.speaking-dialog .speaking-record.is-recording{background:#b44b3b;border-color:#fae9e5;box-shadow:0 0 0 1px #e0b3a9}.speaking-meter{height:5px;width:100px;border-radius:5px;background:#e8eef0;margin-top:17px;overflow:hidden}.speaking-meter span{display:block;height:100%;width:0;background:#38765b;transition:width .1s}.speaking-timer{font-size:12px;color:#687587;margin:9px 0}.speaking-replay{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.speaking-dialog .speaking-replay button{font-size:13px;padding:9px 12px}.speaking-status{font-size:13px;line-height:1.65;text-align:center;min-height:43px;margin:15px 0;color:#52685c;overflow-wrap:anywhere}.speaking-navigation,.speaking-summary-actions{display:flex;justify-content:space-between;gap:12px;border-top:1px solid #e9edf2;padding-top:18px}.speaking-dialog .speaking-next{background:#243653;color:#fff;border-color:#243653}.speaking-footer{margin-top:20px;padding-top:13px;border-top:1px dashed #e0e6ea;font-size:11px;color:#687587;line-height:1.7}.speaking-footer p{margin:5px 0}.speaking-dialog .speaking-footer button{font-size:11px;padding:6px 9px;min-height:36px;margin:5px 6px 0 0;background:#f7f9fb;font-weight:400}.speaking-summary{text-align:center;padding:26px 0 35px}.speaking-summary>span{display:block;font-size:15px;color:#52685c}.speaking-summary strong{display:block;font-size:76px;line-height:1.3;color:#38765b;font-weight:600;margin:20px 0}.speaking-summary small{font-size:22px;color:#687587}.speaking-summary p{font-size:14px}
@media(max-width:600px){.speaking-overlay{padding:0;align-items:stretch}.speaking-dialog{width:100%;max-height:100vh;max-height:100dvh;border-radius:0;padding-bottom:env(safe-area-inset-bottom)}.speaking-header{padding:18px 20px}.speaking-body{padding:18px 20px 22px}.speaking-sentence{font-size:27px;min-height:100px;margin:20px 0}.speaking-position select{max-width:170px}.speaking-dialog .speaking-record{width:100px;height:100px}.speaking-record-area{padding-top:18px}.speaking-navigation button,.speaking-summary-actions button{font-size:13px;padding:10px 12px}.speaking-replay{gap:6px}.speaking-entry{padding:12px}}
@media(max-width:350px){.speaking-body{padding:16px}.speaking-position select{max-width:135px}.speaking-sentence{font-size:25px}.speaking-dialog .speaking-replay button{font-size:12px;padding:8px}.speaking-entry strong{font-size:12px}}
@media(prefers-reduced-motion:reduce){.speaking-meter span{transition:none}}
@media print{.speaking-entry,.speaking-overlay{display:none!important}}

.speaking-dialog .speaking-record{padding:8px}.speaking-record svg{flex-shrink:0;width:28px;height:28px}.speaking-record [data-sp-record-label]{white-space:nowrap;font-size:14px}.speaking-header{position:sticky;top:0;z-index:2}

/* A single prominent action follows the child through listening, recording and replay. */
.speaking-steps{display:flex;gap:8px;justify-content:space-between;list-style:none;padding:12px 0;margin:8px 0 0;border-bottom:1px solid #e0e9e4;font-size:13px;color:#687587}.speaking-steps li{padding:7px 9px;border-radius:8px}.speaking-steps [aria-current=step]{background:#edf6ef;color:#38765b;font-weight:700}
.speaking-dialog .is-primary{background:#38765b;color:#fff;border:1px solid #38765b;min-height:56px;width:240px;max-width:100%;font-size:17px;border-radius:14px;box-shadow:none}
.speaking-dialog .speaking-record{width:240px;max-width:100%;height:auto;min-height:56px;flex-direction:row;border-radius:14px;border-width:1px;padding:12px 18px;gap:10px}.speaking-record [data-sp-record-label]{font-size:17px}.speaking-dialog .speaking-record.is-recording{background:#b44b3b;border-color:#b44b3b}
.speaking-record-area{padding:14px 0 4px}.speaking-record-area.is-secondary{padding:6px 0}.speaking-record-area.is-secondary .speaking-record{width:auto;min-height:40px;background:transparent;border:0;color:#52685c;box-shadow:none;padding:6px 12px}.speaking-record-area.is-secondary .speaking-record svg{display:none}.speaking-record-area.is-secondary [data-sp-record-label]{font-size:13px}.speaking-record-area.is-secondary .speaking-timer,.speaking-record-area.is-secondary .speaking-meter{display:none}
.speaking-replay{align-items:center}.speaking-dialog .speaking-replay .is-primary{font-size:17px;padding:14px}.speaking-sentence{min-height:130px;margin:24px 0}.speaking-sentence.is-concealed{display:flex;align-items:center;justify-content:center;text-align:center;font-family:inherit;font-size:23px;color:#52685c;background:#f5f8f5;border:1px dashed #c7dccc;border-radius:16px;padding:24px}.speaking-dialog [data-sp=hint]{display:block;margin:-8px auto 20px;background:#f6faf7;color:#38765b}
.speaking-footer details{margin-top:12px}.speaking-footer summary{cursor:pointer;width:fit-content;min-height:36px;padding:8px 0;color:#52685c;font-size:12px}.speaking-footer summary:focus-visible{outline:3px solid #d89132;outline-offset:3px}.speaking-footer details label{display:flex;align-items:center;gap:8px;margin:10px 0}.speaking-footer select{min-width:0;max-width:100%;width:260px;padding:8px;border:1px solid #dae3e8;border-radius:8px;background:white;font-size:12px}.speaking-optional{font-size:12px!important;color:#687587}.speaking-summary small{font-size:18px}.speaking-summary-actions{flex-wrap:wrap}.speaking-position>span:last-child{font-size:12px;color:#687587;font-weight:400}
@media(max-width:350px){.speaking-steps{gap:3px;font-size:12px}.speaking-steps li{padding:7px 5px}.speaking-sentence{font-size:25px}.speaking-entry{gap:8px}.speaking-entry button{padding:12px 9px;font-size:13px}.speaking-entry p{font-size:11px}}
.speaking-dialog button.is-primary{background:#38765b;color:#fff;border-color:#38765b}.speaking-dialog .speaking-record.is-recording{background:#b44b3b;border-color:#b44b3b}.speaking-dots{margin:16px 0 0;gap:7px}.speaking-dots span{font-size:0;width:7px;height:7px}.speaking-dots .is-current{box-shadow:0 0 0 2px #38765b}

/* Keep the exit visible, including while the practice body scrolls. */
.speaking-header{gap:12px}
.speaking-header>div{min-width:0}
.speaking-header .speaking-close{display:inline-flex;align-items:center;justify-content:center;gap:7px;flex:0 0 auto;width:auto;min-width:92px;height:48px;padding:0 14px;border:1px solid #b8c9c0;border-radius:14px;background:#fff;color:#243653;box-shadow:0 2px 5px #24365312;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;font-size:15px;font-weight:700;line-height:1;-webkit-appearance:none;appearance:none}
.speaking-close svg{display:block;flex:0 0 20px;width:20px;height:20px;pointer-events:none}
.speaking-header .speaking-close:hover{background:#f5f7fa;border-color:#758d81}
.speaking-header .speaking-close:active{background:#e4eee8}
@media(max-width:600px){.speaking-header{padding-top:max(18px,env(safe-area-inset-top))}}
