:root{--navy:#13223a;--blue:#245fb5;--sky:#eaf2ff;--ink:#182235;--muted:#667085;--line:#dbe3ee;--paper:#fff;--bg:#f4f7fb;--ok:#16864b;--bad:#c0392b;--gold:#f2b134;--shadow:0 8px 24px rgba(23,42,74,.08);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;background:var(--bg);min-height:100vh;padding-bottom:82px}button,select,input{font:inherit}button{cursor:pointer;border:0}.hidden{display:none!important}.topbar{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.96);backdrop-filter:blur(10px);display:flex;justify-content:space-between;align-items:center;padding:13px 16px;border-bottom:1px solid var(--line)}.topbar h1{font-size:1.12rem;margin:0}.top-actions{display:flex;align-items:center;gap:7px}.version{font-size:.7rem;background:var(--sky);color:var(--blue);padding:3px 7px;border-radius:999px}.eyebrow{margin:0 0 3px;color:var(--blue);font-size:.7rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.status-badge{font-size:.72rem;padding:6px 9px;border-radius:999px;font-weight:800}.status-badge.online{background:#e8f7ef;color:#167046}.compact{padding:8px 10px}main{width:min(960px,100%);margin:0 auto;padding:16px}.screen{display:none}.screen.active{display:block}.card{background:var(--paper);border:1px solid var(--line);border-radius:17px;box-shadow:var(--shadow)}.hero{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:21px;background:linear-gradient(135deg,#13223a,#245fb5);color:#fff}.hero h2{font-size:1.34rem;margin:.5rem 0}.hero p{opacity:.88;margin:0;line-height:1.55}.pill{display:inline-block;background:rgba(255,255,255,.14);padding:5px 9px;border-radius:999px;font-size:.76rem;font-weight:700}.hero-score{min-width:86px;height:86px;border-radius:50%;background:#fff;color:var(--navy);display:flex;flex-direction:column;align-items:center;justify-content:center}.hero-score strong{font-size:1.7rem}.hero-score span{font-size:.7rem}.module-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:13px;margin-top:13px}.module-card{background:#fff;border:1px solid var(--line);border-radius:17px;padding:19px;text-align:left;box-shadow:var(--shadow);display:grid;gap:7px;color:var(--ink)}.module-card:active{transform:scale(.99)}.module-card .icon{width:43px;height:43px;border-radius:13px;background:var(--sky);color:var(--blue);display:grid;place-items:center;font-weight:900}.module-card strong{font-size:1.05rem}.module-card small{color:var(--muted);line-height:1.45}.notice{padding:17px;margin-top:13px}.notice p{margin:.45rem 0 0;color:var(--muted);line-height:1.6}.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.section-head h2{margin:0}.toolbar{padding:13px;display:flex;align-items:end;gap:10px;flex-wrap:wrap;margin-bottom:11px}.toolbar label{display:grid;gap:6px;color:var(--muted);font-size:.8rem;font-weight:700;min-width:170px;flex:1}.toolbar select{background:#fff;border:1px solid var(--line);border-radius:11px;padding:11px;color:var(--ink)}button{border-radius:11px;padding:11px 14px;background:#e9eef6;color:var(--ink);font-weight:800}.primary{background:var(--blue);color:#fff}.ghost{background:transparent;border:1px solid var(--line)}.wide{width:100%}.mode-tabs,.tabs{display:flex;gap:7px;overflow-x:auto;padding:8px;margin-bottom:11px}.mode-tab,.tab{white-space:nowrap;background:transparent;color:var(--muted);padding:9px 11px}.mode-tab.active,.tab.active{background:var(--navy);color:#fff}.callout{background:#fff7de;color:#6d4b00;border:1px solid #f2d27b;border-radius:13px;padding:11px 13px;margin-bottom:11px;line-height:1.45;font-size:.9rem}.vocab-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:11px}.vocab-card{position:relative;background:#fff;border:1px solid var(--line);border-radius:15px;padding:16px;min-height:175px;box-shadow:var(--shadow)}.vocab-card h3{font-size:1.32rem;margin:14px 0 8px}.vocab-card .meaning{font-size:1.02rem;font-weight:800;color:var(--blue);margin-bottom:9px}.vocab-card p{color:var(--muted);font-size:.86rem;line-height:1.55;margin-bottom:0}.vocab-card .speak{position:absolute;top:10px;right:10px;padding:7px 9px}.tag{display:inline-flex;background:var(--sky);color:var(--blue);padding:4px 8px;border-radius:999px;font-size:.7rem;font-weight:800}.hidden-answer{border:2px dashed var(--line);border-radius:11px;padding:12px;text-align:center;color:var(--muted);margin:9px 0}.revealed .hidden-answer{display:none}.reveal-content{display:none}.revealed .reveal-content{display:block}.quiz-card,.reading-card,.lesson-body,.study-content{padding:19px}.progress{height:8px;background:#dfe6f0;border-radius:999px;overflow:hidden;margin:11px 0}.progress span{display:block;height:100%;background:var(--blue);transition:width .2s}.options{display:grid;gap:9px;margin-top:15px}.option{background:#f7f9fc;border:1px solid var(--line);text-align:left;padding:13px}.option.correct{border-color:var(--ok);background:#eaf8f0;color:#0d6637}.option.wrong{border-color:var(--bad);background:#fff0ed;color:#9f2b20}.feedback{margin-top:13px;padding:12px;border-radius:11px;background:#f0f4fa;line-height:1.55}.grammar-overview{padding:17px;line-height:1.6;margin-bottom:11px}.lesson-list{display:grid;gap:9px}.lesson{width:100%;display:flex;gap:11px;align-items:center;text-align:left;background:#fff;border:1px solid var(--line);padding:15px;border-radius:14px}.lesson small{display:block;color:var(--muted);margin-top:4px;line-height:1.4}.level-badge{width:38px;height:38px;border-radius:50%;background:var(--sky);color:var(--blue);display:grid;place-items:center;font-weight:900;flex:none}.lesson-body{margin-top:11px;line-height:1.72}.lesson-body .example{background:#f7f9fc;border-left:4px solid var(--blue);padding:12px;border-radius:9px;margin:10px 0}.lesson-body .trap{background:#fff7de;border-left:4px solid var(--gold);padding:12px;border-radius:9px;margin:10px 0}.audio-row{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.reading-meta{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.reading-meta span{background:#eef3f9;border-radius:999px;padding:5px 8px;font-size:.72rem}.passage,.translation{white-space:pre-wrap;line-height:1.82;padding:15px;border-radius:12px;margin:11px 0}.passage{background:#f7f9fc}.translation{background:#fff8e6;border:1px solid #f2d98a}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-bottom:11px}.stat{background:#fff;border:1px solid var(--line);border-radius:13px;padding:14px;text-align:center}.stat strong{display:block;font-size:1.35rem}.stat span{color:var(--muted);font-size:.75rem}.review-card{border:1px solid var(--line);border-radius:13px;padding:14px;margin:8px 0}.review-card h3{margin:0 0 7px}.review-card .meaning{color:var(--blue);font-weight:800}.empty{text-align:center;color:var(--muted);padding:26px}.score-row{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:11px 0}.score-row:last-child{border-bottom:0}.bottom-nav{position:fixed;z-index:30;left:0;right:0;bottom:0;height:68px;background:#fff;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(5,1fr);padding-bottom:env(safe-area-inset-bottom)}.bottom-nav button{background:transparent;border-radius:0;padding:7px 3px;font-size:.68rem;color:var(--muted)}.bottom-nav span{display:block;font-size:1rem;font-weight:900;margin-bottom:3px}.bottom-nav button.active{color:var(--blue)}.toast{position:fixed;left:50%;bottom:84px;transform:translateX(-50%);background:#152136;color:#fff;padding:10px 15px;border-radius:999px;z-index:80;box-shadow:var(--shadow);max-width:90%;text-align:center}.modal{position:fixed;inset:0;background:rgba(7,15,29,.68);z-index:100;display:grid;place-items:center;padding:18px}.modal-card{width:min(520px,100%);max-height:86vh;overflow:auto;background:#fff;border-radius:20px;padding:22px}.modal-card li{margin:10px 0;line-height:1.55}@media(max-width:680px){main{padding:13px}.hero{align-items:flex-start}.hero-score{width:70px;height:70px;min-width:70px}.module-grid,.vocab-grid{grid-template-columns:1fr}.toolbar{align-items:stretch}.toolbar label{min-width:100%}.toolbar button{flex:1}.topbar{padding:11px 12px}.topbar h1{font-size:.95rem}.status-badge{display:none}.section-head h2{font-size:1.25rem}.vocab-card{min-height:155px}}