:root{--orange:#f97316;--orange-dark:#ea580c;--orange-soft:#ffedd5;--ink:#1c1917;--muted:#78716c;--bg:#fff7ed;--card:#fff;--ok:#16a34a;--bad:#dc2626;--radius:16px;--shadow:0 8px 24px #f973161f;color:var(--ink);background:var(--bg);-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Segoe UI,Roboto,sans-serif;line-height:1.5}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--bg)}a{color:var(--orange-dark);text-decoration:none}.app-shell{max-width:480px;min-height:100dvh;padding-bottom:calc(24px + env(safe-area-inset-bottom));background:linear-gradient(#fff7ed 0%,#fff 40%);margin:0 auto}.page{padding:12px 16px 32px}.topbar{align-items:center;gap:8px;min-height:44px;margin:0 -4px 12px;display:flex}.topbar h1{text-align:center;flex:1;margin:0;font-size:17px}.topbar-spacer,.icon-btn{width:40px;height:40px}.icon-btn{background:var(--orange-soft);color:var(--orange-dark);cursor:pointer;border:none;border-radius:12px;font-size:18px}.home-page{flex-direction:column;gap:24px;padding-top:32px;display:flex}.home-hero{text-align:center}.home-hero h1{margin:12px 0 8px;font-size:28px}.subtitle{color:var(--muted);margin:0;font-size:14px}.home-actions,.btn-row.stacked{flex-direction:column;gap:10px;display:flex}.home-foot{text-align:center;color:var(--muted);font-size:12px}.tutor-avatar{flex-direction:column;align-items:center;gap:8px;display:flex}.tutor-avatar img{object-fit:cover;box-shadow:var(--shadow);background:#fff;border:3px solid #fff;border-radius:50%}.tutor-avatar.speaking img{box-shadow:0 0 0 4px #f9731659}.tutor-caption{color:var(--muted);margin:0;font-size:13px}.btn{cursor:pointer;text-align:center;border:none;border-radius:14px;justify-content:center;align-items:center;min-height:48px;padding:12px 18px;font-size:16px;font-weight:600;display:inline-flex}.btn-block{width:100%}.btn-primary{background:var(--orange);color:#fff}.btn-primary:active{background:var(--orange-dark)}.btn-secondary{background:var(--orange-soft);color:var(--orange-dark)}.btn-ghost{color:var(--orange-dark);background:0 0;border:1.5px solid #fdba74}.btn-row{flex-wrap:wrap;gap:10px;margin-top:12px;display:flex}.voice-gender{border:1.5px solid #fdba74;border-radius:14px;align-items:stretch;min-height:48px;display:inline-flex;overflow:hidden}.voice-gender-btn{min-width:52px;color:var(--orange-dark);cursor:pointer;background:0 0;border:none;padding:10px 12px;font-size:14px;font-weight:600}.voice-gender-btn+.voice-gender-btn{border-left:1.5px solid #fdba74}.voice-gender-btn.active{background:var(--orange-soft);color:var(--orange-dark)}.voice-gender-btn:disabled{opacity:.55;cursor:not-allowed}.tabs{box-shadow:var(--shadow);background:#fff;border-radius:14px;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px;padding:6px;display:grid}.tab{min-height:40px;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:10px;font-weight:600}.tab.active{background:var(--orange);color:#fff}.catalog-list{flex-direction:column;gap:10px;display:flex}.chapter-card,.level-card,.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px}.chapter-head{cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;width:100%;padding:4px 0;font-size:15px;font-weight:700;display:flex}.lesson-list{flex-direction:column;gap:8px;margin:10px 0 0;padding:0;list-style:none;display:flex}.lesson-list a,.level-card{background:var(--orange-soft);color:inherit;border-radius:12px;flex-direction:column;gap:2px;padding:12px;display:flex}.level-card{background:#fff;flex-direction:row;align-items:flex-start;gap:12px}.level-badge{background:var(--orange);color:#fff;border-radius:10px;flex-shrink:0;padding:6px 8px;font-size:12px;font-weight:700}.level-body{flex-direction:column;gap:4px;display:flex}.muted{color:var(--muted);font-size:13px}.center{text-align:center}.error{color:var(--bad);background:#fef2f2;border-radius:12px;padding:12px}.session-head{align-items:center;gap:12px;margin-bottom:14px;display:flex}.session-title{margin:0;font-size:16px;line-height:1.35}.pain{color:var(--muted);margin:4px 0 0;font-size:13px}.progress{color:var(--orange-dark);margin:0 0 4px;font-size:13px;font-weight:700}.narration-block{border-bottom:1px dashed #fed7aa;margin:0 0 14px;padding-bottom:12px}.narration-block .narration{color:#9a3412;margin-top:0;margin-bottom:8px;line-height:1.55}.narration,.zh-big{margin:8px 0 0;font-size:16px}.zh-big{font-size:20px;font-weight:600}.prompt-zh{color:var(--muted);margin:0;font-size:13px}.input-area{resize:vertical;background:#fff;border:1.5px solid #fdba74;border-radius:12px;width:100%;margin-top:10px;padding:12px;font-family:inherit;font-size:16px}.field-label{color:var(--muted);margin-top:14px;font-size:13px;display:block}.fb{border-radius:12px;margin-top:12px;padding:12px;font-size:14px}.fb.ok{color:#166534;background:#dcfce7}.fb.bad{color:#991b1b;background:#fee2e2}.fb .tip{opacity:.9;margin-top:4px;display:inline-block}.compare .bad{background:#fff1f2;border-radius:12px;margin:10px 0;padding:10px}.compare .label{color:var(--bad);font-size:12px;font-weight:700}.compare p{margin:4px 0 0}.tips-list{margin:0 0 16px;padding-left:18px}.tips-list li{margin-bottom:8px}.chip-row,.keywords{flex-wrap:wrap;gap:8px;margin:8px 0 12px;display:flex}.chip{background:var(--orange-soft);color:var(--orange-dark);border-radius:999px;padding:8px 12px;font-size:14px;font-weight:600}.chip.mini{padding:4px 8px;font-size:12px}.linkish{width:100%;color:var(--muted);text-align:center;cursor:pointer;background:0 0;border:none;margin-top:12px;font-size:13px;display:block}.summary-page .summary-hero,.summary-card{text-align:center}.score-ring{background:var(--orange-soft);border:4px solid var(--orange);border-radius:50%;flex-direction:column;justify-content:center;align-items:center;width:120px;height:120px;margin:18px auto;display:flex}.score-ring strong{color:var(--orange-dark);font-size:28px}.score-ring span{color:var(--muted);font-size:12px}.zh-assist{color:var(--muted);margin:4px 0 14px;font-size:14px;font-weight:500}.en-label{margin-top:4px}.en-big{color:var(--ink);letter-spacing:.01em;margin:6px 0 0;font-size:22px;font-weight:700;line-height:1.4}.en-hidden-placeholder{color:var(--muted);text-align:center;background:#f5f5f4;border:1.5px dashed #d6d3d1;border-radius:12px;margin:6px 0 0;padding:16px 12px;font-size:15px}.keywords.subtle{opacity:.75;color:var(--muted);margin-top:10px;margin-bottom:4px;font-size:12px}.speech-warn{color:#9a3412;background:#fff7ed;border:1px solid #fdba74;border-radius:12px;margin-top:12px;padding:10px 12px;font-size:13px;line-height:1.45}.mic-btn.listening{background:#dc2626;animation:1.2s ease-in-out infinite pulse-mic}@keyframes pulse-mic{0%,to{box-shadow:0 0 #dc262659}50%{box-shadow:0 0 0 8px #dc262600}}.heard{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;margin-top:12px;padding:10px 12px}.heard p{margin:4px 0 0;font-size:16px;font-weight:600}.heard .interim{color:var(--muted);font-style:italic;font-weight:500}.speech-note{color:#b45309;margin:8px 0 0;font-size:13px}.fb.idle-hint{color:#334155;background:#f1f5f9}.wechat-tip{color:#1e40af;background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;margin:0 0 10px;padding:8px 12px;font-size:12px;line-height:1.4}.home-free-hint{margin:8px 0 0;font-size:13px}.home-unlock-badge{color:#166534;background:#dcfce7;border-radius:999px;margin:10px 0 0;padding:4px 10px;font-size:12px;font-weight:600;display:inline-block}.catalog-toolbar{justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;display:flex}.catalog-status{color:var(--muted);flex:1;font-size:12px}.catalog-status.ok{color:#166534;font-weight:600}.btn-sm{flex-shrink:0;width:auto;padding:6px 12px;font-size:13px}.lesson-locked,.level-locked{text-align:left;cursor:pointer;width:100%;font:inherit;color:inherit;appearance:none}.lesson-locked{opacity:.92;background:#fafaf9;border:1px dashed #d6d3d1;border-radius:12px;flex-direction:column;gap:2px;padding:12px 14px;display:flex}.level-locked{opacity:.9;background:#fafaf9;border-style:dashed}.lock-ico{margin-right:6px}.locked-gate{text-align:center;flex-direction:column;gap:12px;margin-top:24px;padding:8px 4px;display:flex}.locked-gate-icon{font-size:40px;line-height:1}.locked-gate h2{margin:0;font-size:18px}.activate-overlay{z-index:80;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.activate-backdrop{cursor:pointer;background:#1c191773;border:none;position:absolute;inset:0}.activate-sheet{width:100%;max-width:480px;padding:16px 16px calc(20px + env(safe-area-inset-bottom));background:#fff;border-radius:20px 20px 0 0;position:relative;box-shadow:0 -8px 32px #0000001f}.activate-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.activate-head h2{margin:0;font-size:17px}.activate-hint{margin:0 0 12px;font-size:13px;line-height:1.45}.activate-form{flex-direction:column;gap:10px;display:flex}.activate-input{letter-spacing:.04em;border:1.5px solid #e7e5e4;border-radius:12px;outline:none;width:100%;padding:12px 14px;font-size:16px}.activate-input:focus{border-color:var(--orange)}.activate-ok{color:#166534;margin:10px 0 0;font-size:14px;font-weight:600}
