.mockExamPage{min-height:100vh;background:#fff;display:flex;justify-content:center}.mockExamShell{width:100%;max-width:520px;padding:12px 16px 90px}.topBar{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;color:#0f172a}.topLeftTitle{font-size:13px;color:#64748b;line-height:18px}.topLeftSub{margin-top:2px;font-size:18px;font-weight:700;color:#0f172a;line-height:22px}.topRight{display:flex;align-items:center;gap:10px;white-space:nowrap}.pill{font-size:12px;padding:6px 10px;border-radius:999px;background:#fff7ed;color:#f97316;border:1px solid #fed7aa}.timer{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#64748b}.progressBarWrap{margin-top:10px;height:3px;background:#e2e8f0;border-radius:999px;overflow:hidden}.progressBar{height:100%;background:#10a2e8;border-radius:999px;width:0%;transition:width .25s ease}.center{margin-top:34px;display:flex;flex-direction:column;align-items:center}.avatarWrap{width:198px;height:198px;border-radius:999px;display:grid;place-items:center;position:relative}.avatarRing{position:absolute;inset:-2px;border-radius:999px;border:2px solid transparent;opacity:0;transition:opacity .15s ease}.avatarRing.listening{opacity:1;border-color:#21c278}.avatarRing.speaking{opacity:1;border-color:#10a2e873}.avatar{width:180px;height:180px;border-radius:999px;background:radial-gradient(circle at 30% 30%,#172554,#0b1220);box-shadow:0 14px 34px #02061726;position:relative}.face{position:absolute;inset:0;display:grid;place-items:center}.eyes{display:flex;gap:16px;transform:translateY(-10px)}.eye{width:14px;height:8px;border-radius:999px;background:#38bdf8bf}.mouth{margin-top:10px;width:52px;height:10px;border-radius:999px;background:#38bdf873;position:relative;overflow:hidden}.mouthBars{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:center;gap:4px;padding:0 10px 1px;opacity:0;transition:opacity .12s ease}.mouthBars.on{opacity:1}.bar{width:4px;height:6px;border-radius:4px;background:#38bdf8cc;transform-origin:bottom center}.speaking .bar{animation:talk .6s ease-in-out infinite}.speaking .bar:nth-child(2){animation-delay:80ms}.speaking .bar:nth-child(3){animation-delay:.16s}.speaking .bar:nth-child(4){animation-delay:.24s}.speaking .bar:nth-child(5){animation-delay:.32s}@keyframes talk{0%{transform:scaleY(.55);opacity:.8}45%{transform:scaleY(1.3);opacity:1}to{transform:scaleY(.6);opacity:.85}}.statusText{margin-top:12px;font-size:14px;color:#94a3b8}.statusText.speaking{color:#10a2e8}.statusText.listening{color:#21c278}.firstPlayMask{position:fixed;inset:0;z-index:9999;background:transparent;cursor:pointer;width:100vw;height:100vh}.card{width:100%;margin-top:18px;border-radius:16px;background:#fff;box-shadow:0 6px 24px #02061714;padding:14px 14px 12px}.cardHead{display:flex;flex-direction:column;align-items:stretch;gap:12px}.tag{align-self:flex-start;font-size:12px;padding:6px 10px;border-radius:999px;background:#10a2e81f;color:#10a2e8;font-weight:600}.tag.part2{background:#fb923c26;color:#fb923c}.cardToggle{width:100%;display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;background:#f1f5f9;border:1px solid #e2e8f0;color:#6b7280;cursor:pointer;-webkit-user-select:none;user-select:none}.cardToggleText{font-size:14px;color:#6b7280}.cardBody{margin-top:12px;padding-top:12px;border-top:1px solid #eef2f7;color:#0f172a;font-size:15px;line-height:22px}.prepTitle{margin:10px 0 6px;font-size:13px;color:#64748b;font-weight:600}.prepList{margin:0;padding-left:16px;color:#334155;font-size:14px;line-height:20px}.prepHint{margin-top:10px;font-size:12px;color:#f97316}.recordArea{margin-top:34px;display:flex;flex-direction:column;align-items:center;gap:10px}.recordButtonWrap{position:relative;width:120px;height:120px;display:flex;align-items:center;justify-content:center}.recordProgressRing{position:absolute;left:0;top:0;width:120px;height:120px;transform:rotate(-90deg);pointer-events:none}.recordProgressRingBg{stroke:#e2e8f0}.recordProgressRingFill{stroke:#10a2e8;stroke-linecap:round;transition:stroke-dashoffset .1s linear}.recordButton{width:86px;height:86px;border-radius:999px;border:none;background:#10a2e8;box-shadow:0 14px 26px #10a2e838;display:grid;place-items:center;cursor:pointer}.recordButton.disabled{background:#e2e8f0;box-shadow:none;cursor:not-allowed}.recordButton.recording{background:#fca5a5;box-shadow:0 14px 26px #f8717138}.recordHint{font-size:13px;color:#94a3b8}.recordHint.recording{color:#94a3b8}.bottomProgress{position:fixed;left:0;right:0;bottom:0;background:#ffffffe6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid #eef2f7;padding:10px 12px 12px;display:flex;justify-content:center}.bottomInner{width:100%;max-width:520px;display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.partGroup{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:6px}.dots{width:100%;display:flex;justify-content:center;gap:6px;flex-wrap:wrap}.dot{width:6px;height:6px;border-radius:999px;background:#f1f5f9}.dot.current{background:#10a2e8}.dot.done{background:#21c278}.partLabel{font-size:12px;font-weight:700;color:#0f172a}.partLabel.muted{color:#94a3b8;font-weight:600}@media(max-width:360px){.mockExamShell{padding-left:12px;padding-right:12px}.dots{gap:5px}}.mockExamResultPage{min-height:100vh;background:#f1f5f9;padding:0 0 48px}.resultHeadbar{display:flex;align-items:center;gap:12px;height:56px;padding:0 16px;background:#fff;border-bottom:1px solid #e2e8f0;margin-bottom:24px}.resultHeadbarBack{display:inline-flex;align-items:center;gap:4px;padding:8px 12px;font-size:15px;color:#0f172a;background:transparent;border:none;border-radius:8px;cursor:pointer}.resultHeadbarBack:hover{background:#f1f5f9}.resultHeadbarTitle{font-size:18px;font-weight:600;color:#0f172a}.mockExamResultShell{max-width:520px;margin:0 auto;padding:0 16px}.resultTitle{margin:0 0 8px;font-size:26px;font-weight:700;color:#0f172a;text-align:center}.resultSubtitle{margin:0 0 28px;font-size:14px;color:#64748b;text-align:center}.overallCard{background:#fff;border-radius:20px;box-shadow:0 4px 20px #0000000f;padding:32px 24px 24px;margin-bottom:28px}.overallRingWrap{position:relative;width:160px;height:160px;margin:0 auto 16px}.overallRing{width:100%;height:100%;transform:rotate(-90deg)}.overallRingBg{stroke:#e2e8f0}.overallRingFill{stroke:#10a2e8;stroke-linecap:round;transition:stroke-dasharray .5s ease}.overallScoreInner{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.overallScoreValue{font-size:42px;font-weight:700;color:#0f172a;line-height:1.1}.overallScoreMax{font-size:16px;color:#94a3b8;margin-top:2px}.overallLabel{margin:0;font-size:15px;font-weight:600;color:#0f172a;text-align:center}.breakdownTitle{margin:0 0 14px;font-size:13px;font-weight:700;color:#0f172a;letter-spacing:.04em}.breakdownList{display:flex;flex-direction:column;gap:12px}.breakdownCard{background:#fff;border-radius:14px;box-shadow:0 2px 12px #0000000d;padding:14px 16px;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:10px 16px;align-items:center}.breakdownName{font-size:15px;font-weight:600;color:#0f172a;grid-column:1;grid-row:1}.breakdownScore{font-size:16px;font-weight:700;color:#10a2e8;grid-column:2;grid-row:1}.breakdownBarWrap{grid-column:1 / -1;grid-row:2;height:8px;background:#e2e8f0;border-radius:999px;overflow:hidden}.breakdownBarFill{height:100%;border-radius:999px;transition:width .4s ease}.breakdownBarFill.blue{background:#10a2e8}.breakdownBarFill.green{background:#21c278}@media(max-width:380px){.resultTitle{font-size:22px}.overallScoreValue{font-size:36px}}.examHistoryPage{min-height:100vh;background:#f1f5f9;padding:0 0 48px}.examHistoryHeadbar{display:flex;align-items:center;gap:12px;min-height:56px;padding:16px 16px 12px;background:#fff;border-bottom:1px solid #e2e8f0;margin-bottom:24px}.examHistoryHeadbarBack{display:inline-flex;align-items:center;gap:4px;padding:8px 12px;font-size:15px;color:#0f172a;background:transparent;border:none;border-radius:8px;cursor:pointer;align-self:flex-start}.examHistoryHeadbarBack:hover{background:#f1f5f9}.examHistoryHeadbarTitleWrap{flex:1;min-width:0}.examHistoryHeadbarTitle{margin:0 0 4px;font-size:1.375rem;font-weight:700;color:#0f172a}.examHistoryHeadbarSubtitle{margin:0;font-size:14px;color:#64748b}.examHistoryShell{max-width:560px;margin:0 auto;padding:0 16px}.examHistoryLoading,.examHistoryError,.examHistoryEmpty{margin:0;padding:24px 0;font-size:15px;color:#64748b}.examHistoryError{color:#dc2626}.examHistoryList{list-style:none;margin:0;padding:0}.examHistoryList>li{margin-bottom:12px}.examHistoryCard{display:flex;align-items:center;gap:16px;width:100%;padding:18px 20px;text-align:left;background:#fff;border:none;border-radius:14px;box-shadow:0 2px 8px #0000000f;cursor:pointer;transition:box-shadow .2s,background .2s}.examHistoryCard:hover{background:#fafafa;box-shadow:0 4px 12px #00000014}.examHistoryCardScoreBadge{width:48px;height:48px;border-radius:50%;background:#e0f2fe;color:#0369a1;font-size:1.25rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.examHistoryCardBody{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.examHistoryCardTitle{font-size:1rem;font-weight:600;color:#0f172a}.examHistoryCardDate,.examHistoryCardDuration{font-size:13px;color:#64748b}.examHistoryCardDuration{display:inline-flex;align-items:center;gap:4px}.examHistoryCardDurationIcon{font-size:12px}.examHistoryCardArrow{font-size:18px;color:#94a3b8;flex-shrink:0}:root{--color-bg: #f8fafb;--color-card: #fff;--color-primary: #1890ff;--color-text: #333;--color-text-secondary: #666;--color-border: #e8e8e8;--radius: 12px;--shadow: 0 1px 4px rgba(0, 0, 0, .08);--shadow-soft: 0 2px 12px rgba(0, 0, 0, .06);--max-width: 1200px;--spacing: 24px}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;color:var(--color-text);background:var(--color-bg)}@media(max-width:768px){html,body{font-size:15px}}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}input,button{font-family:inherit;font-size:inherit}
