/* 自托管字体：Baloo 2（可变字体，单文件覆盖 100–900 字重），国内部署无需访问 Google Fonts */
@font-face{
  font-family:'Baloo 2';
  src:url('../assets/fonts/baloo2.ttf') format('truetype');
  font-weight:100 900;
  font-style:normal;
  font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
:root{
  --blue:#2f6fed; --blue-d:#1f56c4; --orange:#FF8A3D; --coral:#FF7A9C;
  --mint:#2BBE8B; --purple:#8B7CF6; --amber:#F5A623; --bg:#FBF9F4; --card:#FFFFFF;
  --ink:#22242B; --mute:#8A8E99; --line:#ECE8E0;
  --r:22px; --r-s:14px; --shadow:0 10px 30px rgba(40,40,60,.10);
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{background:#E9E6DF;color:var(--ink);
  font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;}
.en{font-family:"Baloo 2","PingFang SC",system-ui,sans-serif;}

.app{max-width:960px;margin:0 auto;min-height:100vh;background:var(--bg);
  display:flex;flex-direction:column;box-shadow:0 0 40px rgba(0,0,0,.08);position:relative;}
@media(min-width:980px){.app{margin:24px auto;border-radius:28px;overflow:hidden;min-height:calc(100vh - 48px);}}

.icon{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto;}

/* 顶栏 */
.topbar{display:flex;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--line);background:var(--bg);}
.brand{font-size:18px;font-weight:700;display:flex;align-items:center;gap:8px;}
.brand .dot{width:26px;height:26px;border-radius:9px;background:linear-gradient(120deg,var(--blue),#5a8bff);
  display:flex;align-items:center;justify-content:center;color:#fff;}
.topbar .sub{font-size:12px;color:var(--mute);margin-left:auto;}

/* 主体滚动 */
.main{flex:1;overflow:auto;padding-bottom:84px;}
.section{display:none;}
.section.on{display:block;}

.pad{padding:18px 18px 0;}
.hi{font-size:21px;font-weight:700;margin:2px 0 2px;}
.sub{font-size:13px;color:var(--mute);}
.sec-h{font-size:14px;font-weight:700;color:var(--ink);padding:18px 18px 0;}

/* 继续学习卡 */
.cont{margin:14px 18px;padding:16px;border-radius:var(--r);color:#fff;
  background:linear-gradient(120deg,var(--blue),#5a8bff);box-shadow:var(--shadow);cursor:pointer;}
.cont .t{font-size:13px;opacity:.92;}
.cont .big{font-size:16px;font-weight:700;margin:6px 0 12px;}
.bar{height:9px;border-radius:9px;background:rgba(255,255,255,.35);overflow:hidden;}
.bar i{display:block;height:100%;background:#fff;border-radius:9px;transition:width .4s;}
.cont .go{margin-top:12px;display:inline-flex;align-items:center;gap:6px;background:#fff;color:var(--blue);
  padding:8px 16px;border-radius:999px;font-size:13px;font-weight:700;}

/* 年级 chips */
.grades{display:flex;gap:8px;overflow:auto;padding:12px 18px;}
.grade{flex:0 0 auto;padding:8px 14px;border-radius:999px;font-size:13px;font-weight:600;
  background:#fff;color:var(--mute);border:1px solid var(--line);cursor:pointer;white-space:nowrap;}
.grade.on{background:var(--blue);color:#fff;border-color:var(--blue);}
.grade.soon{opacity:.5;cursor:not-allowed;}

/* 主题网格 */
.theme-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:0 18px;}
.theme{background:var(--card);border-radius:var(--r);padding:14px;box-shadow:var(--shadow);cursor:pointer;display:flex;align-items:center;gap:12px;}
.theme .thumb{width:54px;height:54px;border-radius:14px;display:flex;align-items:center;justify-content:center;flex:0 0 auto;}
.theme .thumb svg{width:30px;height:30px;stroke:var(--c);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.theme .nm{font-size:14px;font-weight:700;}
.theme .ct{font-size:12px;color:var(--mute);margin-top:2px;}

/* 顺道模块 */
.mods{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;padding:0 18px;}
.mod{background:var(--card);border-radius:var(--r-s);padding:14px 10px;box-shadow:var(--shadow);text-align:center;cursor:pointer;position:relative;}
.mod .mi{display:flex;justify-content:center;margin-bottom:6px;color:var(--purple);}
.mod .mi svg{width:26px;height:26px;stroke:var(--purple);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.mod .mn{font-size:12px;font-weight:700;}
.mod .mt{font-size:10px;color:var(--mute);margin-top:2px;}
.mod .badge{position:absolute;top:8px;right:8px;font-size:9px;background:#EFEDE8;color:var(--mute);padding:2px 6px;border-radius:8px;font-weight:600;}
.mod.live .mi{color:var(--mint);} .mod.live .mi svg{stroke:var(--mint);}

/* 学习页工具条 */
.study-toolbar{display:flex;align-items:center;gap:10px;padding:14px 18px 4px;flex-wrap:wrap;}
.seg{display:flex;background:#fff;border-radius:999px;padding:4px;box-shadow:var(--shadow);}
.seg div{flex:1;text-align:center;padding:8px 12px;font-size:13px;font-weight:600;color:var(--mute);border-radius:999px;cursor:pointer;white-space:nowrap;}
.seg div.on{background:var(--blue);color:#fff;}
.search{display:flex;align-items:center;gap:8px;background:#fff;border-radius:999px;padding:10px 14px;box-shadow:var(--shadow);color:var(--mute);font-size:13px;margin:10px 18px 0;}
.search input{border:none;outline:none;background:transparent;font-size:13px;flex:1;color:var(--ink);font-family:inherit;}

/* chips 筛选 */
.chips{display:flex;gap:8px;overflow:auto;padding:12px 18px 6px;}
.chip{flex:0 0 auto;padding:7px 14px;border-radius:999px;font-size:12px;font-weight:600;background:#fff;color:var(--mute);border:1px solid var(--line);cursor:pointer;white-space:nowrap;}
.chip.on{background:var(--ink);color:#fff;border-color:var(--ink);}

/* 卡片网格 */
.cards{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;padding:8px 18px 18px;}
@media(min-width:700px){.cards{grid-template-columns:repeat(3,1fr);}}
.vcard{background:var(--card);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow);cursor:pointer;position:relative;display:flex;flex-direction:column;}
.vcard .ph{height:104px;background:#f0ede6;display:flex;align-items:center;justify-content:center;position:relative;}
.vcard .ph img{height:92px;object-fit:contain;}
.vcard .ph .dur{position:absolute;right:8px;bottom:8px;background:rgba(0,0,0,.55);color:#fff;font-size:10px;padding:2px 7px;border-radius:8px;}
.vcard .ph .done{position:absolute;left:8px;top:8px;background:var(--mint);color:#fff;font-size:9px;padding:2px 7px;border-radius:8px;font-weight:700;}
.vcard .ph .fav{position:absolute;left:8px;top:8px;color:var(--coral);}
.vcard .ph .fav svg{width:18px;height:18px;stroke:var(--coral);fill:var(--coral);}
.vcard .info{padding:10px 12px 12px;}
.vcard .en2{font-family:"Baloo 2";font-size:18px;font-weight:700;}
.vcard .zh{font-size:12px;color:var(--mute);margin-top:1px;}

/* 播放页 */
.player-wrap{padding:10px 16px 18px;}
.phead{display:flex;align-items:center;gap:10px;padding:6px 2px 10px;}
.phead .bk{display:flex;cursor:pointer;color:var(--ink);padding:4px;}
.phead .pg{font-size:13px;color:var(--mute);font-weight:600;}
.video{border-radius:var(--r);overflow:hidden;background:#000;aspect-ratio:3/4;}
@media(min-width:820px){.player-split{display:flex;gap:18px;align-items:flex-start;}.player-split .video{width:46%;aspect-ratio:3/4;}.player-split .pinfo{flex:1;}}}
.video video{width:100%;height:100%;object-fit:cover;display:block;}

/* 播放页 视频/音频 切换 */
.media-seg{display:flex;background:#fff;border-radius:999px;padding:3px;box-shadow:var(--shadow);margin-left:auto;flex:0 0 auto;}
.media-seg div{display:flex;align-items:center;gap:4px;padding:5px 12px;border-radius:999px;font-size:12px;font-weight:600;color:var(--mute);cursor:pointer;white-space:nowrap;}
.media-seg div.on{background:var(--blue);color:#fff;}
.media-seg svg{width:14px;height:14px;}
.audio-view{border-radius:var(--r);overflow:hidden;background:#16181f;aspect-ratio:3/4;position:relative;display:flex;align-items:center;justify-content:center;}
.audio-view .audio-art{width:100%;height:100%;object-fit:cover;opacity:.92;}
.audio-view audio{position:absolute;left:14px;right:14px;bottom:14px;width:calc(100% - 28px);}
@media(min-width:820px){.player-split .audio-view{width:46%;aspect-ratio:3/4;}}
/* 听一听页 */
.listen-head{padding:16px 18px 2px;font-size:18px;font-weight:700;color:var(--ink);}
/* 音频卡片角标 */
.vcard .ph .playic{position:absolute;right:8px;bottom:8px;background:rgba(0,0,0,.55);color:#fff;width:26px;height:26px;border-radius:8px;display:flex;align-items:center;justify-content:center;}
.vcard .ph .playic svg{width:15px;height:15px;}
.wordcard{margin-top:14px;background:var(--card);border-radius:var(--r);padding:18px;box-shadow:var(--shadow);text-align:center;}
.wordcard .en3{font-family:"Baloo 2";font-size:40px;font-weight:700;color:var(--blue);line-height:1;}
.wordcard .pho{font-size:15px;color:var(--mute);margin:8px 0 4px;}
.wordcard .zh3{font-size:18px;font-weight:700;}
.wordcard .ex{font-size:13px;color:var(--mute);margin-top:8px;line-height:1.5;}
.tags{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:14px 0 0;}
.tag{background:#EEF2FF;color:var(--blue);font-size:12px;padding:6px 12px;border-radius:999px;font-weight:600;}
.controls{display:flex;align-items:center;justify-content:center;gap:18px;padding:16px 0 4px;}
.controls .c{width:50px;height:50px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow);cursor:pointer;color:#555;}
.controls .c svg{width:22px;height:22px;stroke:#555;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.controls .c.play{width:62px;height:62px;background:var(--blue);color:#fff;}
.controls .c.play svg{width:26px;height:26px;stroke:#fff;fill:#fff;}
.cfav{display:flex;align-items:center;justify-content:center;gap:6px;padding:6px 16px 4px;color:var(--mute);font-size:12px;cursor:pointer;}
.cfav svg{width:18px;height:18px;stroke:var(--mute);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.cfav.on{color:var(--coral);} .cfav.on svg{stroke:var(--coral);fill:var(--coral);}

/* 例句页 */
.sent-list{display:flex;flex-direction:column;gap:12px;padding:8px 18px 18px;}
.sent{background:var(--card);border-radius:var(--r);padding:14px;box-shadow:var(--shadow);display:flex;gap:12px;align-items:center;}
.sent img{width:60px;height:60px;object-fit:contain;flex:0 0 auto;}
.sent .en{font-family:"Baloo 2";font-size:15px;font-weight:600;color:var(--blue);}
.sent .zh{font-size:13px;color:var(--ink);margin-top:2px;}
.sent .meta{font-size:11px;color:var(--mute);margin-top:3px;}

/* 测验页 */
.quiz-box{margin:14px 18px;background:var(--card);border-radius:var(--r);padding:18px;box-shadow:var(--shadow);}
.quiz-q{font-size:15px;font-weight:700;margin-bottom:4px;}
.quiz-hint{font-size:12px;color:var(--mute);margin-bottom:14px;}
.quiz-speak{display:inline-flex;align-items:center;gap:6px;background:#EEF2FF;color:var(--blue);padding:8px 14px;border-radius:999px;font-size:13px;font-weight:600;cursor:pointer;margin-bottom:14px;}
.quiz-opts{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.qopt{background:#fff;border:2px solid var(--line);border-radius:var(--r-s);padding:14px;font-size:15px;font-weight:600;text-align:center;cursor:pointer;color:var(--ink);}
.qopt.correct{border-color:var(--mint);background:#E2F6EE;color:var(--mint);}
.qopt.wrong{border-color:var(--coral);background:#FFE7EE;color:var(--coral);}
.quiz-foot{display:flex;align-items:center;justify-content:space-between;padding:6px 18px 18px;font-size:13px;color:var(--mute);}
.quiz-foot .next{background:var(--blue);color:#fff;padding:9px 20px;border-radius:999px;font-weight:700;cursor:pointer;border:none;font-family:inherit;}

/* 复习/打卡 */
.streak{margin:14px 18px;background:linear-gradient(120deg,var(--mint),#37c9a0);border-radius:var(--r);padding:16px;color:#fff;box-shadow:var(--shadow);}
.streak .n{font-size:30px;font-weight:700;}
.streak .l{font-size:13px;opacity:.9;}

/* 我的页 */
.me-hero{display:flex;align-items:center;gap:14px;padding:20px 18px;}
.avatar{width:54px;height:54px;border-radius:50%;background:linear-gradient(120deg,var(--blue),#5a8bff);color:#fff;display:flex;align-items:center;justify-content:center;font-family:"Baloo 2";font-size:22px;font-weight:700;}
.me-name{font-size:17px;font-weight:700;}
.me-sub{font-size:12px;color:var(--mute);margin-top:2px;}
.stats{display:flex;gap:10px;padding:0 18px 6px;}
.stat{flex:1;background:var(--card);border-radius:var(--r-s);padding:12px;text-align:center;box-shadow:var(--shadow);}
.stat .n{font-size:18px;font-weight:700;color:var(--blue);}
.stat .l{font-size:11px;color:var(--mute);margin-top:2px;}
.me-sec{font-size:14px;font-weight:700;padding:14px 18px 0;}
.me-row{display:flex;align-items:center;gap:12px;margin:10px 18px;background:var(--card);border-radius:var(--r-s);padding:12px 14px;box-shadow:var(--shadow);cursor:pointer;}
.me-row .mi{color:var(--purple);display:flex;}
.me-row .mi svg{width:22px;height:22px;stroke:var(--purple);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.me-row .mt{font-size:14px;font-weight:600;flex:1;}
.me-row .mr{font-size:12px;color:var(--mute);}

/* 底部 Tab */
.tabbar{position:absolute;left:0;right:0;bottom:0;display:flex;background:#fff;border-top:1px solid var(--line);}
@media(min-width:980px){.tabbar{position:absolute;}}
.tabbar div{flex:1;text-align:center;padding:9px 0 13px;font-size:11px;color:var(--mute);cursor:pointer;}
.tabbar div .ic{display:flex;justify-content:center;margin-bottom:3px;color:var(--mute);}
.tabbar div.on{color:var(--blue);font-weight:600;}
.tabbar div.on .ic{color:var(--blue);}

.cap{font-size:12px;color:var(--mute);text-align:center;padding:6px 0 2px;}
.empty{text-align:center;color:var(--mute);font-size:13px;padding:40px 20px;}
