:root{--ink:#262b31;--muted:#8e8b92;--line:#e8e3e1;--accent:#6a7b90;--accent-dark:#49596b;--accent-soft:#eef2f7;--berry:#8a6670;--berry-soft:#f6eef1;--bg:#f7f4f2;--card:#fff;--sage:#497a67;--sage-soft:#eaf4ed;--warning:#aa7b2b;--warning-soft:#fff4dd;--danger:#b3565b;--danger-soft:#fbeaec;--shadow:0 8px 32px rgba(28,35,43,.055)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;color:var(--ink);background:var(--bg);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;line-height:1.65;font-size:15px}button,input,select{font:inherit}button{cursor:pointer;border:0}button:focus-visible,input:focus-visible{outline:3px solid #b1c3d8;outline-offset:2px}.shell{max-width:860px;margin:auto;padding:22px 24px 120px}.top{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:25px}.logo{font-size:11px;letter-spacing:.2em;color:var(--accent);font-weight:800}.top h1{font-size:26px;line-height:1.25;margin:5px 0}.tiny{color:var(--muted);font-size:12px}.pill{padding:5px 10px;border-radius:99px;background:var(--accent-soft);color:var(--accent-dark);font-size:12px;font-weight:700}.card{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:21px;margin-bottom:14px;box-shadow:var(--shadow)}.soft{background:var(--accent-soft);border:0}.eyebrow{font-size:11px;font-weight:800;letter-spacing:.09em;color:var(--accent);text-transform:uppercase}.card h2{font-size:20px;line-height:1.4;margin:6px 0 9px}.card h3{font-size:16px;margin:7px 0}.muted{color:var(--muted)}.sub{font-size:13px;color:var(--muted)}.buttons{display:flex;gap:9px;flex-wrap:wrap;margin-top:17px}.btn{border-radius:13px;padding:11px 16px;background:var(--accent);color:white;font-weight:700}.btn.secondary{background:var(--accent-soft);color:var(--accent-dark)}.btn.ghost{background:white;border:1px solid var(--line);color:var(--ink)}.btn.block{width:100%}.btn:disabled{opacity:.45;cursor:not-allowed}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.stat{padding:15px;background:white;border-radius:17px;border:1px solid var(--line)}.stat strong{display:block;font-size:25px}.progress{height:8px;background:var(--line);border-radius:40px;overflow:hidden;margin:13px 0}.progress>div{height:100%;background:var(--accent)}.tabs{display:flex;gap:6px;overflow:auto;max-width:100%;padding:2px 0 12px}.tab{white-space:nowrap;padding:9px 14px;border-radius:12px;background:white;border:1px solid var(--line);color:var(--accent-dark)}.tab.active{background:var(--accent);color:white;border-color:var(--accent)}.nav{position:fixed;bottom:0;left:0;right:0;background:rgba(255,255,255,.96);border-top:1px solid var(--line);padding:9px 10px calc(10px + env(safe-area-inset-bottom));display:flex;justify-content:center;z-index:10;backdrop-filter:blur(14px)}.nav-inner{width:min(860px,100%);display:grid;grid-template-columns:repeat(4,1fr)}.nav button{background:none;color:var(--muted);padding:5px 2px;font-size:11px}.nav button b{display:block;font-size:19px;font-weight:500;line-height:1.5}.nav button.active{color:var(--accent-dark);font-weight:800}.module{display:flex;justify-content:space-between;align-items:center;gap:14px;text-align:left;width:100%;background:white;border:1px solid var(--line);padding:15px;border-radius:16px;margin-bottom:9px}.module strong{display:block}.module small{color:var(--muted)}.tags{display:flex;gap:6px;flex-wrap:wrap}.tag{font-size:11px;border-radius:30px;padding:4px 8px;background:var(--accent-soft);color:var(--accent-dark)}.choice{width:100%;text-align:left;padding:14px 15px;border:1.5px solid var(--line);border-radius:15px;background:white;margin:6px 0;display:flex;gap:12px;align-items:flex-start}.choice .key{color:var(--muted);font-weight:800}.choice.selected{border-color:var(--accent);background:var(--accent-soft)}.choice.correct{background:var(--sage-soft);border-color:var(--sage)}.choice.incorrect{background:var(--danger-soft);border-color:var(--danger)}.feedback{border-radius:14px;padding:15px;margin:13px 0}.feedback.good{background:var(--sage-soft)}.feedback.bad{background:var(--danger-soft)}.feedback.warn{background:var(--warning-soft)}.english{font-family:Georgia,"Times New Roman",serif;font-size:20px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere}.math{font-family:Georgia,serif}.divider{height:1px;background:var(--line);margin:17px 0}.overlay{position:fixed;inset:0;background:rgba(20,25,30,.83);z-index:99;display:grid;place-items:center;padding:15px}.overlay img{max-width:95vw;max-height:83vh;object-fit:contain}.overlay button{position:absolute;right:20px;top:20px;padding:9px 15px;border-radius:12px;background:white}.note{font-size:12px;color:var(--muted);background:#faf7f3;border-radius:12px;padding:12px}.lesson-step{display:flex;gap:9px;align-items:center}.step-num{display:grid;place-items:center;background:var(--accent-soft);border-radius:50%;width:32px;height:32px;color:var(--accent-dark);font-weight:800;flex-shrink:0}.field{padding:10px 12px;border:1px solid var(--line);border-radius:12px;width:100%;background:white}img.thumb{width:100%;max-height:220px;object-fit:contain;background:#f5f5f5;border:1px solid var(--line);border-radius:13px}.row{display:flex;justify-content:space-between;align-items:center;gap:12px}.switch{display:flex;align-items:center;gap:8px}.loading{text-align:center;margin-top:30vh}.section-heading{margin:23px 0 11px;font-size:17px}.fineprint{color:var(--muted);font-size:12px}.kbd{font-family:monospace;padding:2px 5px;border:1px solid var(--line);border-radius:5px;background:white}@media(max-width:550px){.shell{padding:18px 14px 112px}.top h1{font-size:22px}.card{padding:16px}.english{font-size:18px}.grid{gap:9px}.btn{padding:11px 13px}}
/* V2.1 */
.prompt-box{margin:16px 0;background:#f5f7fa;border:1px solid #e6eaf1;padding:23px;border-radius:18px;text-align:center}.formula-big{font-family:Georgia,'Times New Roman',serif;font-size:26px;font-weight:700;color:#354960;margin:20px 0 6px;overflow-wrap:anywhere}.explain{margin:14px 0;line-height:1.8}.explain>strong{display:block;margin-top:14px}.explain p{margin:6px 0 12px}.lab-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:15px 0}.lab-grid label{font-size:12px;font-weight:700;color:#607083}.math-display{border-radius:14px;background:#eaf4ed;border:1px solid #cbe0d0;padding:19px;text-align:center;color:#25634b;font-size:18px;font-weight:700;margin-bottom:15px}.card .row h3{margin:5px 0}.muted{color:#717985}.fineprint{color:#737b85}.btn:hover:not(:disabled),.module:hover{filter:brightness(.975)}@media(max-width:550px){.formula-big{font-size:22px}.lab-grid{grid-template-columns:1fr}}

/* V2.2 — consistent rhythm, separate cards and grids, responsive controls */
:root{--section-gap:24px;--card-gap:18px}
.shell{max-width:900px;padding:30px 28px 132px}
.top{margin-bottom:30px;align-items:flex-start}
.top h1{margin:8px 0 7px}
.card{margin:0 0 var(--card-gap);padding:26px 28px;border-radius:22px}
.card.soft{padding:28px 30px;margin-bottom:var(--section-gap)}
.card h2{margin:9px 0 15px}.card p{margin:10px 0 17px}
.card .row+h2{margin-top:16px}
.card .note{margin:18px 0}
.card .buttons{margin-top:21px}
/* Stats are separate tiles, not visually attached to the following card. */
.stat-grid{gap:16px;margin:0 0 24px}
.stat{padding:22px 23px;border-radius:20px;min-height:105px}
.stat strong{font-size:29px;line-height:1.25;margin-top:8px}
/* Each card-like module has a visible gap. */
.module{padding:19px 21px;margin:0 0 13px;min-height:76px}
.module strong{margin:3px 0 5px}
.section-heading{margin:32px 0 16px}
.action-grid{gap:16px;margin-bottom:24px}
.action-grid .module{margin:0;min-height:112px}
.tabs{gap:10px;padding:3px 2px 16px;margin-bottom:12px}
.tab{padding:10px 17px}
.choice{margin:10px 0;padding:17px 18px;min-height:57px}
.feedback{margin:21px 0;padding:19px 20px}
.feedback p:last-child{margin-bottom:0}
.btn{min-height:43px;padding:12px 18px;line-height:1.35}
.buttons{gap:11px;row-gap:12px}
.divider{margin:23px 0}
.prompt-box{margin:20px 0;padding:28px}
.math-display{margin:18px 0 21px}
.explain{margin:22px 0;line-height:1.85}
.explain>strong{margin-top:20px}
.lab-grid{margin:20px 0;gap:14px}
.nav{padding:10px 10px calc(12px + env(safe-area-inset-bottom))}
.nav button{min-height:49px}
@media(max-width:650px){
 .shell{padding:20px 16px 116px}
 .top{margin-bottom:23px}.top h1{font-size:23px}
 .card{padding:21px 19px;margin-bottom:16px;border-radius:19px}
 .card.soft{padding:23px 20px;margin-bottom:21px}
 .stat-grid{gap:11px;margin-bottom:21px}
 .stat{padding:17px 15px;min-height:96px}
 .stat strong{font-size:26px}
 .action-grid{gap:11px;margin-bottom:20px}
 .module{padding:16px;margin-bottom:11px}
 .action-grid .module{min-height:96px}
 .section-heading{margin:26px 0 13px}
 .choice{padding:15px 13px;margin:9px 0}
 .prompt-box{padding:20px 13px}
 .buttons{gap:9px}
 .btn{padding:11px 14px}
 .lab-grid{grid-template-columns:1fr}
}
@media(max-width:370px){.top{flex-wrap:wrap}.stat-grid{grid-template-columns:1fr}.action-grid{grid-template-columns:1fr}}

/* V2.3 readable mathematics */
.theory-block{display:grid;gap:18px;margin-top:14px}.theory-setup,.theory-formula{padding:18px 20px;border-radius:14px;background:#f5f7f9;color:#273647;font-size:19px;line-height:1.9;overflow-wrap:anywhere;word-break:normal;white-space:normal}.theory-formula{font-size:24px;font-weight:700;text-align:center;background:#edf2f7;letter-spacing:.3px}.theory-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.theory-grid section{background:#fbfaf9;border:1px solid #e9e6e3;padding:16px;border-radius:14px}.theory-grid h3{font-size:15px;margin:0 0 9px}.theory-grid p{margin:0;line-height:1.85;font-size:15px}.source-details{margin-top:24px}.source-details summary,.source-inline summary{cursor:pointer;font-weight:650;color:#53677e;list-style-position:inside}.source-details[open] summary{margin-bottom:18px}.source-inline{margin:14px 0}.formula-big{font-size:27px;font-weight:750;line-height:1.85;overflow-wrap:anywhere;white-space:normal;text-align:center;padding:20px}.lesson-step{margin-bottom:18px}@media(max-width:650px){.theory-grid{grid-template-columns:1fr}.theory-formula{font-size:19px}.theory-setup{font-size:16px}.formula-big{font-size:21px}}
