
:root{--bg:#f5f6fa;--card:#fff;--text:#111827;--muted:#6b7280;--line:#e5e7eb;--soft:#f1f3f7;--good:#166534;--bad:#991b1b;--shadow:0 8px 28px rgba(17,24,39,.055)}
*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
button,input,textarea{font:inherit}.app{max-width:780px;margin:auto;padding:18px 14px 94px}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.logo{font-size:22px;font-weight:900}.version,.muted,.tiny{color:var(--muted)}.muted{font-size:14px;line-height:1.55}.tiny{font-size:12px}
.card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:18px;margin:12px 0;box-shadow:var(--shadow)}h1{font-size:25px;line-height:1.2;margin:5px 0 8px}h2{font-size:19px;margin:0 0 11px}h3{font-size:16px}
.btn{border:0;border-radius:14px;padding:12px 14px;background:#111827;color:#fff;font-weight:800;min-height:44px}.btn.secondary{background:#fff;color:#111827;border:1px solid var(--line)}.btn.soft{background:var(--soft);color:#111827}.btn.danger{background:#fff;color:var(--bad);border:1px solid #fecaca}.full{width:100%}
.pill,.chip,.badge{display:inline-flex;align-items:center;border-radius:999px}.pill{gap:5px;padding:7px 10px;border:1px solid var(--line);background:#fff;font-size:13px}.chip{border:1px solid var(--line);background:#fff;padding:8px 11px;font-size:13px}.chip.active{background:#111827;color:#fff}.chip.good{background:#ecfdf5;color:#166534;border-color:#bbf7d0}.chip.bad{background:#fef2f2;color:#991b1b;border-color:#fecaca}.badge{padding:5px 8px;background:#eef2ff;font-size:11px;font-weight:800}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.action{border:1px solid var(--line);background:#fff;border-radius:17px;padding:15px;text-align:left;min-height:112px}.action .ico{font-size:25px}.action b{display:block;margin:8px 0 3px}.action span{font-size:12px;color:var(--muted)}
.recommend{background:linear-gradient(145deg,#111827,#2b3445);color:#fff;border:0}.recommend .muted{color:#d1d5db}.stat{padding:12px;background:var(--soft);border-radius:15px;text-align:center}.stat b{display:block;font-size:21px}.stat span{font-size:11px;color:var(--muted)}
.chips{display:flex;gap:7px;flex-wrap:wrap}.sectionTitle{display:flex;justify-content:space-between;align-items:end;margin:18px 3px 6px}.reading{font-family:Georgia,"Times New Roman",serif;font-size:18px;line-height:1.85;white-space:pre-line}
textarea,input[type=text]{width:100%;border:1px solid var(--line);border-radius:14px;padding:12px;background:#fff;color:#111827}textarea{min-height:95px;resize:vertical}
.choice{width:100%;text-align:left;border:1px solid var(--line);background:#fff;border-radius:14px;padding:12px 13px;margin:7px 0;color:#111827}.choice.correct{border-color:#86efac;background:#f0fdf4}.choice.wrong{border-color:#fca5a5;background:#fef2f2}
.result{padding:12px;border-radius:14px;margin-top:9px}.result.good{background:#f0fdf4;color:#166534}.result.bad{background:#fef2f2;color:#991b1b}.wordCard,.bookItem{border-top:1px solid var(--line);padding:14px 0}.wordCard:first-child,.bookItem:first-child{border-top:0}
.word{font-size:21px;font-weight:900}.meaning{font-weight:700;margin-top:4px}.coll{margin-top:6px}.example{margin-top:6px;color:#374151;font-family:Georgia,serif}.note,.bookMeta{margin-top:6px;color:var(--muted);font-size:13px}
.moduleHeader{display:flex;gap:10px;align-items:center}.back{width:42px;height:42px;border-radius:14px;border:1px solid var(--line);background:#fff;font-weight:900}.flash{min-height:245px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.flash .word{font-size:34px}
.audioBox{text-align:center;padding:18px;background:var(--soft);border-radius:17px}.audioBtn{width:72px;height:72px;border-radius:50%;border:0;background:#111827;color:#fff;font-size:28px}.rate{display:flex;justify-content:center;gap:7px;margin-top:12px}
.calendarHead{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font-size:11px;color:var(--muted);margin-top:10px}.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:6px}.calday{aspect-ratio:1;border:1px solid var(--line);border-radius:12px;background:#fff;position:relative;display:flex;align-items:center;justify-content:center;font-size:13px}.calday.has{background:#111827;color:#fff}.calday.today{outline:2px solid #9ca3af}.calday.empty{visibility:hidden}.countdot{position:absolute;right:4px;bottom:3px;font-size:9px}
.bottomnav{position:fixed;bottom:0;left:0;right:0;background:rgba(250,250,252,.94);backdrop-filter:blur(14px);border-top:1px solid var(--line);padding:8px 8px calc(8px + env(safe-area-inset-bottom));z-index:20}.navin{max-width:780px;margin:auto;display:grid;grid-template-columns:repeat(5,1fr)}.navbtn{border:0;background:transparent;color:var(--muted);padding:6px 2px;font-size:10px}.navbtn b{display:block;font-size:20px}.navbtn.active{color:#111827;font-weight:800}
.overlay{position:fixed;inset:0;background:var(--bg);z-index:100;overflow:auto}.onboard{max-width:680px;margin:auto;padding:22px 16px 40px}.onTop{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.progress{height:7px;background:#e5e7eb;border-radius:999px;overflow:hidden}.progress i{display:block;height:100%;background:#111827}.qTitle{font-size:24px;font-weight:900;line-height:1.25;margin:18px 0 8px}.qDesc{color:var(--muted);margin-bottom:15px}.qOption{display:block;width:100%;text-align:left;border:1px solid var(--line);background:#fff;padding:13px 14px;border-radius:14px;margin:8px 0}.qOption.active{background:#111827;color:#fff}.onFooter{display:flex;gap:9px;margin-top:18px}.onFooter .btn{flex:1}.profileBar{display:grid;grid-template-columns:78px 1fr 34px;gap:8px;align-items:center;margin:9px 0;font-size:13px}.barbg{height:8px;background:#e5e7eb;border-radius:999px;overflow:hidden}.barbg i{display:block;height:100%;background:#111827}.emptyState{text-align:center;padding:28px 8px;color:var(--muted)}.hidden{display:none!important}hr{border:0;border-top:1px solid var(--line);margin:14px 0}
@media(max-width:390px){.app{padding-left:11px;padding-right:11px}.reading{font-size:17px}.grid2{gap:8px}.action{padding:13px}}

.nativeAudioBox{width:100%;margin-top:10px;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:var(--soft)}
.audioLabel{font-size:12px;font-weight:800;margin-bottom:7px;color:#374151}
.nativeAudio{width:100%;height:42px;display:block}
.audioStatus{margin-top:5px;text-align:center}
