/* ==========================================================
   自动生成 —— 请勿手改本文件。
   要改外壳样式 → 改 构建/shell.css 后重跑 build.js
   要改数学面板样式 → 改 Jesse数学学习机/css/style.css，覆盖 构建/orig-math.css 快照后重跑
   要改讲义 → 改 GESP一级教学大纲.html 后重跑 build.js
   ========================================================== */
/* ============================================================
   Jesse 的学习总站 · 外壳层样式（全局）
   数学板块与编程板块各自作用域隔离：
     .math-root  → 数学面板私有布局
     .gesp-root  → 编程面板私有布局
   本文件负责：品牌条 / 板块切换 / 统一状态条 / 军衔徽章成就 / 进度码弹窗
   ============================================================ */

/* ---------- 全局变量：数学板块调色板 + 三角洲游戏化配色 ---------- */
:root{
  /* 数学面板基础色（被 .math-root 复用，同时供全局层使用） */
  --bg:#f5f3ee;
  --paper:#ffffff;
  --ink:#242a2e;
  --ink-2:#5a6672;
  --ink-3:#8b96a1;
  --line:#e2ded4;
  --accent:#2f6f4e;
  --accent-2:#4b5320;
  --amber:#b7791f;
  --red:#b3392f;
  --steel:#5d6b73;
  --radius:14px;
  --shadow:0 2px 10px rgba(36,42,46,.06);

  /* 三角洲 */
  --df-bg:#1c2226;
  --df-bg2:#262d32;
  --df-bg3:#2e363b;
  --df-line:#3a4348;
  --df-olive:#4b5320;
  --df-gold:#f0b429;
  --df-text:#f3f6e8;
  --df-dim:#8b96a1;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:"Microsoft YaHei","PingFang SC","Segoe UI",-apple-system,BlinkMacSystemFont,sans-serif;
  font-size:16px;
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{margin:0;font-weight:600}

/* ============================================================
   顶部品牌条 + 板块切换 + 统一状态
   ============================================================ */
.shellbar{
  background:var(--df-bg);
  border-bottom:3px solid var(--df-olive);
  position:sticky;top:0;z-index:80;
  box-shadow:0 3px 14px rgba(0,0,0,.22);
}
.shellbar-in{
  max-width:1180px;margin:0 auto;padding:9px 16px;
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
}
.sb-brand{display:flex;align-items:center;gap:10px;flex:0 0 auto;}
.sb-logo{
  width:38px;height:38px;border-radius:10px;flex:0 0 38px;
  background:linear-gradient(150deg,var(--df-olive),#6b7a2e);
  border:2px solid var(--df-gold);
  color:#fffbe9;font-size:19px;font-weight:bold;
  display:flex;align-items:center;justify-content:center;
}
.sb-brand h1{margin:0;font-size:16px;color:var(--df-gold);letter-spacing:.5px;}
.sb-brand p{margin:0;font-size:11px;color:var(--df-dim);}

/* 板块切换 */
.sb-switch{
  display:flex;gap:4px;padding:3px;border-radius:11px;
  background:var(--df-bg2);border:1px solid var(--df-line);
  flex:0 0 auto;
}
.sb-switch button{
  border:none;background:transparent;cursor:pointer;font-family:inherit;
  color:var(--df-dim);font-size:13.5px;font-weight:600;
  padding:7px 15px;border-radius:8px;transition:.16s;
  display:flex;align-items:center;gap:6px;white-space:nowrap;
}
.sb-switch button:hover{color:var(--df-text);}
.sb-switch button.on{
  background:linear-gradient(150deg,var(--df-olive),#6b7a2e);
  color:#fffbe9;box-shadow:0 2px 8px rgba(75,83,32,.5);
}
.sb-switch button .swk{font-size:15px;}

/* 右侧统一状态 */
.sb-status{margin-left:auto;display:flex;align-items:center;gap:9px;flex-wrap:wrap;}
.sb-rank{
  display:flex;align-items:center;gap:8px;position:relative;
  background:var(--df-bg2);border:1px solid var(--df-line);
  border-radius:10px;padding:5px 11px 10px;min-width:180px;
}
.sb-rank .ic{font-size:19px;line-height:1;}
.sb-rank .nm{font-size:13.5px;font-weight:bold;color:var(--df-gold);line-height:1.25;}
.sb-rank .nx{font-size:10.5px;color:var(--df-dim);line-height:1.3;}
.sb-bar{
  position:absolute;left:6px;right:6px;bottom:4px;height:4px;
  background:var(--df-bg3);border-radius:3px;overflow:hidden;
}
.sb-bar i{display:block;height:100%;width:0;border-radius:3px;
  background:linear-gradient(90deg,var(--df-olive),var(--df-gold));transition:width .5s;}
.sb-purse{display:flex;gap:7px;flex-wrap:wrap;}
.sb-it{
  display:flex;align-items:center;gap:4px;background:var(--df-bg2);
  border:1px solid var(--df-line);border-radius:9px;padding:5px 10px;
}
.sb-it .i{font-size:13px;}
.sb-it .v{font-weight:bold;color:var(--df-gold);font-size:14px;min-width:16px;text-align:right;}
.sb-it .l{font-size:10.5px;color:var(--df-dim);}
.sb-btn{
  border:1px solid var(--df-gold);background:rgba(240,180,57,.12);
  color:var(--df-gold);font-family:inherit;font-size:13px;font-weight:600;
  padding:7px 13px;border-radius:9px;cursor:pointer;transition:.16s;white-space:nowrap;
}
.sb-btn:hover{background:var(--df-gold);color:#2b2306;}

/* 板块提示条 */
.panel-hint{
  max-width:1180px;margin:0 auto;padding:7px 16px 0;
  font-size:12.5px;color:var(--ink-3);
}
.panel-hint b{color:var(--accent-2);}

/* ============================================================
   面板容器
   ============================================================ */
.panel-wrap{max-width:1180px;margin:0 auto;padding:0 16px 40px;}
.panel[hidden]{display:none !important;}

/* 数学板块的顶部页签条（原 topbar 的品牌与状态条已由外壳接管） */
.mathnav{
  background:var(--paper);border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:40;box-shadow:var(--shadow);
}
.mathnav .wrap{padding-top:10px;padding-bottom:10px;}
.mathnav .tabs{width:100%;}

/* 口诀卡里的「一句解释」 */
.mnemonic-why{
  margin:10px 0 0;padding-top:10px;border-top:1px dashed var(--line);
  font-size:13.5px;color:var(--ink-2);line-height:1.8;
}

/* 数学面板里的小补丁（原样式在游戏化段，现由外壳统一管） */
.ex-row .btn{border-color:#c9d3c4;}
.practice-foot .pf-score{font-size:16px;font-weight:bold;color:var(--df-olive);}
#panel-math .card.mnemonic .mnemonic-text{margin-bottom:0;}

/* ============================================================
   全局层：军衔卡 / 徽章墙 / 军衔阶梯 / 成就墙 / 战绩统计
   （数学面板与总站共用，故不加作用域前缀）
   ============================================================ */
.base-panel{border-left:5px solid var(--df-olive);}
.base-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:20px;margin-bottom:6px;}
.base-col h4{margin:0 0 8px;font-size:15px;color:var(--df-olive);}
.ex-row{display:flex;gap:9px;flex-wrap:wrap;margin:10px 0;}
.muted.small{font-size:12.5px;}

.rank-card{
  background:#22282c;border:2px solid var(--df-olive);border-radius:13px;
  padding:16px 18px;text-align:center;color:#eef2f0;
}
.rk-icon{font-size:40px;line-height:1;}
.rk-name{font-size:22px;font-weight:bold;color:var(--df-gold);margin:5px 0 3px;letter-spacing:1px;}
.rk-desc{font-size:12px;color:#9aa5ad;margin-bottom:11px;}
.rk-bar{height:8px;background:#333c41;border-radius:4px;overflow:hidden;}
.rk-bar i{display:block;height:100%;width:0;border-radius:4px;
  background:linear-gradient(90deg,var(--df-olive),var(--df-gold));transition:width .5s;}
.rk-next{font-size:11.5px;color:var(--df-dim);margin-top:7px;}

.medal-h{margin:22px 0 10px;font-size:15px;color:var(--df-olive);}
.medal-wall{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;}
.medal{
  border:2px solid #d5d9dd;border-radius:13px;padding:14px 12px;text-align:center;
  background:#fafafa;position:relative;
}
.medal.got{
  background:linear-gradient(160deg,#fffbe9,#f6ecd2);
  border-color:var(--mc,#c9a227);
  box-shadow:0 3px 12px rgba(201,162,39,.3);
}
.medal .mi{font-size:33px;line-height:1;}
.medal.got .mi{filter:drop-shadow(0 2px 4px rgba(0,0,0,.2));}
.medal .mn{font-weight:bold;font-size:14px;margin:6px 0 3px;}
.medal .md{font-size:11px;color:var(--ink-2);line-height:1.5;}
.medal .mp{margin-top:8px;font-size:11px;color:var(--ink-2);background:#eef0ec;border-radius:10px;padding:2px 0;}
.medal.got .mp{background:var(--df-gold);color:#3a2f08;font-weight:bold;}
.medal .lock{position:absolute;top:8px;right:10px;font-size:13px;opacity:.55;}

.rank-ladder{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:9px;}
.rstep{
  border:2px solid #e0e3e6;border-radius:10px;padding:9px 11px;background:#fafafa;
  display:flex;align-items:center;gap:9px;
}
.rstep.done{border-color:var(--df-olive);background:#f2f6ec;}
.rstep.cur{border-color:var(--df-gold);background:#fffbe9;box-shadow:0 2px 9px rgba(240,180,57,.34);}
.rstep .ri{font-size:21px;}
.rstep .rt{flex:1;}
.rstep .rn{font-size:13px;font-weight:bold;}
.rstep .rc{font-size:11px;color:#7c868f;}
.rstep .rk2{margin-left:auto;font-size:12px;color:var(--df-olive);font-weight:bold;}

.ach-wall{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;}
.ach{
  border:2px solid #e0e3e6;border-radius:11px;padding:11px 12px;background:#fafafa;
  display:flex;align-items:center;gap:10px;
}
.ach.got{border-color:var(--df-olive);background:#f2f6ec;}
.ach .ai{font-size:22px;filter:grayscale(1);opacity:.45;}
.ach.got .ai{filter:none;opacity:1;}
.ach .an{font-size:13px;font-weight:bold;}
.ach .ad{font-size:11px;color:#6d7780;line-height:1.4;}

.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:11px;}
.sbox{background:#f7f6f2;border:2px solid var(--line);border-radius:11px;padding:13px;text-align:center;}
.sbox .sv{font-size:23px;font-weight:bold;color:var(--df-olive);}
.sbox .sl{font-size:11.5px;color:#6d7780;margin-top:2px;}

.quiz-score{
  background:#22282c;color:#eef2f0;border-radius:13px;padding:18px 22px;margin-bottom:16px;
  border:2px solid var(--df-olive);
}
.quiz-score h3{margin:0 0 6px;color:var(--df-gold);font-size:17px;}
.quiz-score p{margin:0;font-size:14px;color:#c7d0d8;}
.gain-line{
  display:inline-flex;align-items:center;gap:7px;margin-top:9px;
  background:rgba(240,180,57,.16);border:1px solid var(--df-gold);border-radius:999px;
  padding:4px 14px;font-size:13.5px;color:#8a6100;font-weight:bold;
}
.perfect-banner{
  background:linear-gradient(100deg,#fff8e1,#ffeab8);border:2px solid var(--df-gold);
  border-radius:11px;padding:11px 16px;margin-top:12px;
  font-size:14.5px;color:#6b5200;font-weight:bold;
}

/* ============================================================
   全局层：飘窗 / 晋升横幅
   ============================================================ */
.toast-host{
  position:fixed;top:96px;right:16px;z-index:90;
  display:flex;flex-direction:column;gap:8px;pointer-events:none;
}
.toast{
  background:var(--df-bg);color:var(--df-text);
  border:2px solid var(--df-olive);border-left:5px solid var(--df-gold);
  border-radius:9px;padding:9px 15px;font-size:13.5px;
  box-shadow:0 5px 16px rgba(0,0,0,.28);
  animation:slideIn .32s ease;max-width:280px;
}
.toast b{color:var(--df-gold);}
.toast.bad{border-left-color:#b3392f;}
.toast.bad b{color:#e07a70;}
@keyframes slideIn{from{opacity:0;transform:translateX(28px);}to{opacity:1;transform:none;}}

.promo{
  position:fixed;inset:0;display:none;align-items:center;justify-content:center;
  background:rgba(15,19,22,.82);z-index:120;
}
.promo.show{display:flex;animation:fadeIn .25s ease;}
@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}
.promo-in{
  background:var(--df-bg);border:4px solid var(--df-gold);border-radius:18px;
  padding:34px 52px;text-align:center;color:var(--df-text);
  box-shadow:0 12px 44px rgba(0,0,0,.5);animation:pop .4s cubic-bezier(.2,1.5,.4,1);
}
@keyframes pop{from{transform:scale(.7);opacity:0;}to{transform:scale(1);opacity:1;}}
.promo-icon{font-size:60px;line-height:1;}
.promo-txt b{display:block;font-size:26px;color:var(--df-gold);margin:12px 0 6px;}
.promo-txt span{color:#c7d0d8;font-size:14px;}

/* ============================================================
   进度码弹窗（跨板块统一）
   ============================================================ */
.ck{position:fixed;inset:0;background:rgba(15,19,22,.78);z-index:130;display:none;
  align-items:flex-start;justify-content:center;padding:40px 16px;overflow:auto;}
.ck.show{display:flex;animation:fadeIn .2s ease;}
.ck-in{
  background:#fff;border:3px solid var(--df-olive);border-radius:16px;
  max-width:620px;width:100%;padding:22px 24px 26px;
  box-shadow:0 16px 50px rgba(0,0,0,.4);
}
.ck-h{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px;}
.ck-h h3{margin:0;font-size:18px;color:var(--df-olive);}
.ck-x{border:none;background:#f0efe9;border-radius:9px;cursor:pointer;font-size:17px;
  width:32px;height:32px;line-height:1;color:var(--ink-2);font-family:inherit;}
.ck-x:hover{background:#e2ded4;}
.ck p.tip{margin:4px 0 14px;font-size:12.5px;color:var(--ink-3);line-height:1.7;}
.ck h4{margin:16px 0 7px;font-size:14px;color:var(--ink-2);}
.ck textarea{
  width:100%;min-height:84px;font-family:ui-monospace,Consolas,monospace;font-size:11.5px;
  border:1.5px solid var(--line);border-radius:10px;padding:9px 11px;resize:vertical;
  background:#fbfaf7;color:var(--ink);line-height:1.5;word-break:break-all;
}
.ck-row{display:flex;gap:9px;flex-wrap:wrap;margin-top:9px;}
.ck-btn{
  border:1.5px solid var(--line);background:#fff;color:var(--ink-2);font-family:inherit;
  font-size:13px;padding:7px 14px;border-radius:9px;cursor:pointer;transition:.15s;font-weight:600;
}
.ck-btn:hover{background:#f5f3ee;}
.ck-btn.pri{background:var(--df-olive);border-color:var(--df-olive);color:#fffbe9;}
.ck-btn.pri:hover{background:#5a6328;}
.ck-btn.ok{background:var(--accent);border-color:var(--accent);color:#fff;}
.ck-btn.dg{color:var(--red);border-color:#e3c4c0;}
.ck-btn.dg:hover{background:#fdf1ef;}
.ck-note{
  margin-top:14px;padding:11px 13px;border-radius:10px;
  background:#f7f6f2;border-left:4px solid var(--df-olive);
  font-size:12.5px;color:var(--ink-2);line-height:1.7;
}

/* ============================================================
   页脚
   ============================================================ */
.foot{
  border-top:1px solid var(--line);margin-top:40px;padding:20px;
  text-align:center;color:var(--ink-3);font-size:13px;
}
.foot p{margin:0;}

/* ============================================================
   响应式
   ============================================================ */
@media (max-width:820px){
  /* 外壳条压成两行：① 品牌 + 板块切换  ② 军衔 + 积分 + 进度码 */
  .shellbar-in{gap:7px;padding:7px 10px;flex-wrap:wrap;}
  .sb-brand{flex:0 1 auto;min-width:0;}
  .sb-logo{width:30px;height:30px;flex:0 0 30px;font-size:15px;border-radius:8px;}
  .sb-brand h1{font-size:14px;}
  .sb-brand p{display:none;}
  .sb-switch{flex:1 1 auto;justify-content:center;padding:2px;}
  .sb-switch button{padding:6px 10px;font-size:12.5px;gap:4px;}
  .sb-switch button .swk{font-size:13px;}
  .sb-status{width:100%;margin-left:0;gap:6px;flex-wrap:nowrap;align-items:stretch;}
  .sb-rank{flex:1 1 auto;min-width:0;padding:4px 9px 9px;gap:6px;}
  .sb-rank .ic{font-size:16px;}
  .sb-rank .nm{font-size:12.5px;}
  .sb-rank .nx{font-size:9.5px;}
  .sb-purse{gap:4px;flex:0 0 auto;}
  .sb-it{padding:4px 7px;gap:3px;}
  .sb-it .i{font-size:11px;}
  .sb-it .v{font-size:13px;min-width:12px;}
  .sb-it .l{display:none;}
  .sb-btn{padding:6px 11px;font-size:12.5px;align-self:stretch;}
  .sb-btn .btxt{display:none;}          /* 手机只留 ⇄ 图标 */

  .panel-hint{padding:6px 12px 0;font-size:11.5px;}
  .panel-wrap{padding:0 12px 32px;}
  .base-grid{grid-template-columns:1fr;}

  /* 数学板块的窄屏适配（原来在内嵌 media 里，合并时被剥掉了） */
  #panel-math .hero{
    flex-direction:column;align-items:stretch;text-align:center;
    padding:20px 18px;gap:16px;margin:16px 0 16px;
  }
  #panel-math .hero-text h2{font-size:20px;line-height:1.45;}
  #panel-math .hero-stat{flex:none;}
  #panel-math .hero-actions{justify-content:center;}
  #panel-math .detail-head{flex-direction:column;align-items:stretch;}
  #panel-math .nav-pair{flex-direction:column;}
  #panel-math .nav-pair .btn{width:100%;}

  /* 提示条抬底部导航（GESP 底部标签栏约 58px） */
  .toast-host{top:auto;bottom:70px;right:12px;left:12px;}
  .toast{max-width:none;}
}
@media (max-width:520px){
  .sb-switch button{padding:6px 9px;font-size:12px;}
  .ck-in{padding:18px 16px 20px;}
  .medal-wall,.ach-wall,.rank-ladder{grid-template-columns:repeat(auto-fit,minmax(126px,1fr));}
  .stat-grid{grid-template-columns:repeat(2,1fr);}
}

/* ---------- 打印：只让当前板块的打印区出来 ---------- */
@media print{
  body{background:#fff;}
  .shellbar,.panel-hint,.foot,.toast-host,.promo,.ck{display:none !important;}
}

/* ===================== 数学板块（作用域 .math-root） ===================== */
.math-root *{box-sizing:border-box;}.math-root{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:"Microsoft YaHei","PingFang SC","Segoe UI",sans-serif;
  font-size:16px;
  line-height:1.75;
}.math-root .wrap{max-width:1080px;margin:0 auto;padding:0 20px;}.math-root .hidden{display:none !important;}.math-root .topbar{
  background:var(--paper);
  border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:50;
  box-shadow:var(--shadow);
}.math-root .topbar .wrap{
  display:flex;align-items:center;justify-content:space-between;
  gap:20px;flex-wrap:wrap;padding-top:12px;padding-bottom:12px;
}.math-root .brand{display:flex;align-items:center;gap:12px;}.math-root .logo{
  width:44px;height:44px;border-radius:12px;flex:0 0 44px;
  background:var(--accent-2);color:#f3f6e8;
  display:flex;align-items:center;justify-content:center;
  font-size:24px;font-weight:bold;
}.math-root .brand h1{margin:0;font-size:20px;letter-spacing:.5px;}.math-root .brand p{margin:0;font-size:12.5px;color:var(--ink-3);}.math-root .tabs{display:flex;gap:6px;flex-wrap:wrap;}.math-root .tab{
  border:1px solid var(--line);background:#fff;color:var(--ink-2);
  padding:7px 15px;border-radius:999px;cursor:pointer;
  font-size:14px;font-family:inherit;transition:.15s;
}.math-root .tab:hover{background:#f0efe9;}.math-root .tab.active{background:var(--accent-2);border-color:var(--accent-2);color:#f3f6e8;}.math-root .badge{
  display:inline-block;min-width:18px;padding:0 5px;margin-left:6px;
  background:var(--red);color:#fff;border-radius:999px;
  font-size:11px;line-height:18px;text-align:center;
}.math-root .hero{
  display:flex;align-items:center;justify-content:space-between;gap:30px;
  background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  padding:28px 30px;margin:24px 0 20px;box-shadow:var(--shadow);
}.math-root .hero-text h2{margin:0 0 8px;font-size:24px;}.math-root .hero-text p{margin:0 0 16px;color:var(--ink-2);font-size:15px;}.math-root .hero-actions{display:flex;gap:10px;flex-wrap:wrap;}.math-root .hero-stat{text-align:center;flex:0 0 130px;}.math-root .hero-stat p{margin:6px 0 0;font-size:13px;color:var(--ink-3);}.math-root .ring{
  width:104px;height:104px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:22px;font-weight:bold;color:var(--accent);
  background:conic-gradient(var(--accent) 0deg, var(--line) 0deg);
  position:relative;
}.math-root .ring::before{
  content:"";position:absolute;inset:11px;background:var(--paper);border-radius:50%;
}.math-root .ring span{position:relative;z-index:1;}.math-root .modules{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;}.math-root .mod{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  padding:20px;cursor:pointer;transition:.18s;box-shadow:var(--shadow);
  border-top:4px solid var(--accent);
}.math-root .mod:hover{transform:translateY(-3px);box-shadow:0 6px 18px rgba(36,42,46,.1);}.math-root .mod.m-num{border-top-color:#2f6f4e;}.math-root .mod.m-geo{border-top-color:#5d6b73;}.math-root .mod.m-stat{border-top-color:#b7791f;}.math-root .mod.m-prob{border-top-color:#7a4fa3;}.math-root .mod .mod-icon{font-size:30px;line-height:1;}.math-root .mod h3{margin:8px 0 4px;font-size:19px;}.math-root .mod .mod-en{font-size:12px;color:var(--ink-3);letter-spacing:1px;}.math-root .mod p{color:var(--ink-2);font-size:14px;margin:10px 0 12px;}.math-root .mod-foot{display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--ink-3);}.math-root .mini-bar{height:6px;background:var(--line);border-radius:3px;overflow:hidden;margin-top:4px;}.math-root .mini-bar i{display:block;height:100%;background:var(--accent);border-radius:3px;}.math-root .panel{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  padding:22px 26px;margin:22px 0;box-shadow:var(--shadow);
}.math-root .panel h3{margin:0 0 12px;font-size:18px;}.math-root .howto{margin:0;padding-left:20px;color:var(--ink-2);}.math-root .howto li{margin:6px 0;}.math-root .btn{
  border:1px solid var(--line);background:#fff;color:var(--ink);
  padding:9px 18px;border-radius:10px;cursor:pointer;
  font-size:14.5px;font-family:inherit;transition:.15s;
}.math-root .btn:hover{background:#f2f1ec;}.math-root .btn.primary{background:var(--accent-2);border-color:var(--accent-2);color:#f3f6e8;}.math-root .btn.primary:hover{background:#5a6328;}.math-root .btn.ghost{background:transparent;color:var(--ink-2);}.math-root .btn.small{padding:5px 12px;font-size:13px;}.math-root .btn:disabled{opacity:.5;cursor:not-allowed;}.math-root .mod-header{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:24px 0 4px;}.math-root .mod-header h2{margin:0;font-size:23px;}.math-root .mod-progress{margin-left:auto;font-size:14px;color:var(--ink-3);}.math-root .mod-desc{color:var(--ink-2);margin:0 0 18px;max-width:760px;}.math-root .kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;}.math-root .kpi{
  background:var(--paper);border:1px solid var(--line);border-radius:12px;
  padding:16px 18px;cursor:pointer;transition:.15s;box-shadow:var(--shadow);
}.math-root .kpi:hover{transform:translateY(-2px);box-shadow:0 5px 14px rgba(36,42,46,.09);}.math-root .kpi-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;}.math-root .kpi h3{margin:0;font-size:17px;}.math-root .kpi .kpi-hook{margin:8px 0 10px;font-size:13.5px;color:var(--ink-2);}.math-root .kpi-foot{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-3);}.math-root .dot{width:9px;height:9px;border-radius:50%;background:var(--line);flex:0 0 9px;}.math-root .dot.done{background:var(--accent);}.math-root .chip{
  display:inline-block;background:#eef0e6;color:var(--accent-2);
  padding:2px 9px;border-radius:999px;font-size:12px;font-weight:bold;
  white-space:nowrap;
}.math-root #view-detail{padding-top:18px;}.math-root .detail-head{
  display:flex;justify-content:space-between;align-items:flex-start;gap:20px;
  margin:14px 0 18px;flex-wrap:wrap;
}.math-root .detail-head h2{margin:8px 0 4px;font-size:26px;}.math-root .d-hook{margin:0;color:var(--ink-2);font-size:15px;}.math-root .card{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  padding:22px 26px;margin-bottom:16px;box-shadow:var(--shadow);
}.math-root .card h3{margin:0 0 12px;font-size:18px;}.math-root .mnemonic{background:#f0f4ec;border-color:#cfdcc6;}.math-root .mnemonic-text{
  margin:0 0 14px;font-size:20px;line-height:1.9;font-weight:bold;
  color:var(--accent-2);letter-spacing:.5px;
}.math-root .formula{
  margin:0;padding:14px 18px;background:#f6f5f0;border-left:4px solid var(--amber);
  border-radius:0 10px 10px 0;font-size:16px;line-height:1.9;
}.math-root .explain h4{margin:18px 0 6px;font-size:16px;color:var(--accent);}.math-root .explain h4:first-child{margin-top:0;}.math-root .explain p{margin:0 0 6px;color:var(--ink-2);}.math-root .demo{background:#faf9f5;border:1px solid var(--line);border-radius:10px;padding:16px 18px;}.math-root .demo .dq{font-weight:bold;font-size:16px;margin-bottom:8px;}.math-root .demo ol{margin:8px 0;padding-left:22px;}.math-root .demo li{margin:4px 0;color:var(--ink-2);}.math-root .demo .dans{margin-top:10px;padding:8px 12px;background:#eef4ec;border-radius:8px;font-weight:bold;}.math-root .warn-card{background:#fdf6f3;border-color:#eccfc7;}.math-root .warn-card h3{color:var(--red);}.math-root .warn-card ul{margin:0;padding-left:20px;color:#7d3a30;}.math-root .nav-pair{display:flex;justify-content:space-between;gap:12px;margin:22px 0 40px;}.math-root .practice-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:16px 0 20px;}.math-root .practice-toolbar select{
  padding:8px 12px;border:1px solid var(--line);border-radius:10px;
  font-size:14.5px;font-family:inherit;background:#fff;
}.math-root .muted{color:var(--ink-3);font-size:14px;}.math-root .practice-list{display:flex;flex-direction:column;gap:12px;}.math-root .pitem{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#fbfaf7;
}.math-root .pitem .pnum{
  flex:0 0 26px;height:26px;border-radius:50%;background:var(--accent-2);color:#f3f6e8;
  display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:bold;
}.math-root .pitem .pq{flex:1 1 260px;}.math-root .pitem input{
  flex:1 1 180px;min-width:150px;padding:8px 12px;border:1px solid var(--line);
  border-radius:8px;font-size:15px;font-family:inherit;background:#fff;
}.math-root .pitem input:focus{outline:2px solid var(--accent);border-color:transparent;}.math-root .pitem .mark{flex:0 0 70px;text-align:right;font-size:14px;font-weight:bold;}.math-root .mark.ok{color:var(--accent);}.math-root .mark.no{color:var(--red);}.math-root .pitem.correct{background:#eef6ee;border-color:#c6ddc6;}.math-root .pitem.wrong{background:#fdeeec;border-color:#e8c4bd;}.math-root .practice-foot{
  display:flex;justify-content:space-between;align-items:center;
  margin-top:16px;padding-top:14px;border-top:1px dashed var(--line);
  font-size:15px;
}.math-root .q-card{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  padding:18px 20px;margin-bottom:14px;box-shadow:var(--shadow);
}.math-root .q-head{display:flex;gap:10px;align-items:baseline;margin-bottom:8px;flex-wrap:wrap;}.math-root .q-src{font-size:12px;color:var(--ink-3);}.math-root .q-text{font-size:17px;margin:6px 0 10px;}.math-root .q-input{
  width:100%;max-width:320px;padding:10px 14px;border:1px solid var(--line);
  border-radius:10px;font-size:16px;font-family:inherit;background:#fbfaf7;
}.math-root .q-feedback{margin-top:10px;padding:10px 14px;border-radius:10px;font-size:14.5px;display:none;}.math-root .q-feedback.show{display:block;}.math-root .q-feedback.ok{background:#eef6ee;color:#2c5a3f;}.math-root .q-feedback.no{background:#fdeeec;color:#8c3a2e;}.math-root .quiz-score{
  background:var(--accent-2);color:#f3f6e8;border-radius:var(--radius);
  padding:20px 24px;margin-bottom:18px;
}.math-root .quiz-score h3{margin:0 0 8px;}.math-root .quiz-score p{margin:0;}.math-root .cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;margin:18px 0 40px;}.math-root .mn-card{
  background:var(--paper);border:2px solid var(--ink);border-radius:12px;
  padding:16px 18px;box-shadow:4px 4px 0 #d8d4c8;
}.math-root .mn-card .mn-topic{font-size:13px;color:var(--ink-3);margin-bottom:8px;}.math-root .mn-card .mn-body{font-size:17px;line-height:1.85;font-weight:bold;color:var(--accent-2);}.math-root .mn-card .mn-mod{font-size:11.5px;color:var(--ink-3);margin-top:10px;}.math-root .print-only{display:none;}@media print{.math-root{background:#fff;font-size:12pt;}.math-root .topbar,.math-root .foot,.math-root .hero-actions,.math-root .practice-toolbar,.math-root .btn,.math-root .nav-pair,.math-root #view-home,.math-root #view-module,.math-root #view-detail,.math-root #view-practice,.math-root #view-wrong,.math-root #view-cards{display:none !important;}.math-root .print-only{display:block !important;}.math-root .mn-card{
    break-inside:avoid;page-break-inside:avoid;
    box-shadow:none;border:1.5pt solid #000;margin:0 0 10pt;
  }.math-root .mn-card .mn-body{font-size:14pt;color:#000;}.math-root .mn-card .mn-topic,.math-root .mn-card .mn-mod{color:#444;}@page{size:A4;margin:14mm;}}.math-root .statusbar{
  background:#1c2226;border-bottom:3px solid #4b5320;
}.math-root .statusbar-in{
  display:flex;align-items:center;justify-content:space-between;
  gap:16px;flex-wrap:wrap;padding:8px 20px;
}.math-root .st-rank{display:flex;align-items:center;gap:10px;position:relative;flex:1 1 320px;min-width:260px;padding-bottom:8px;}.math-root .st-icon{
  width:38px;height:38px;border-radius:9px;display:flex;align-items:center;justify-content:center;
  font-size:21px;background:#2e363b;border:2px solid #4b5320;flex:0 0 38px;
}.math-root .st-name{font-size:15px;font-weight:bold;color:#f0b429;letter-spacing:.5px;}.math-root .st-next{font-size:11.5px;color:#8b96a1;}.math-root .st-lvbar{
  position:absolute;left:0;bottom:0;width:100%;height:5px;
  background:#2e363b;border-radius:3px;overflow:hidden;
}.math-root .st-lvbar i{display:block;height:100%;background:linear-gradient(90deg,#4b5320,#f0b429);border-radius:3px;transition:width .5s;}.math-root .st-purse{display:flex;gap:10px;flex-wrap:wrap;}.math-root .st-item{
  display:flex;align-items:center;gap:5px;background:#262d32;
  border:1px solid #3a4348;border-radius:9px;padding:5px 11px;
}.math-root .st-ico{font-size:14px;}.math-root .st-num{font-weight:bold;color:#f0b429;font-size:15px;min-width:18px;text-align:right;}.math-root .st-lb{font-size:11px;color:#8b96a1;}.math-root .toast-host{position:fixed;top:74px;right:18px;z-index:90;display:flex;flex-direction:column;gap:8px;pointer-events:none;}.math-root .toast{
  background:#1c2226;color:#f3f6e8;border:2px solid #4b5320;border-left:5px solid #f0b429;
  border-radius:9px;padding:9px 15px;font-size:13.5px;box-shadow:0 5px 16px rgba(0,0,0,.28);
  animation:slideIn .32s ease;max-width:270px;
}.math-root .toast b{color:#f0b429;}.math-root .toast.bad{border-left-color:#b3392f;}.math-root .toast.bad b{color:#e07a70;}@keyframes slideIn{from{opacity:0;transform:translateX(28px);}to{opacity:1;transform:none;}}.math-root .promo{
  position:fixed;inset:0;display:none;align-items:center;justify-content:center;
  background:rgba(15,19,22,.82);z-index:120;
}.math-root .promo.show{display:flex;animation:fadeIn .25s ease;}@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}.math-root .promo-in{
  background:#1c2226;border:4px solid #f0b429;border-radius:18px;
  padding:34px 52px;text-align:center;color:#f3f6e8;
  box-shadow:0 12px 44px rgba(0,0,0,.5);animation:pop .4s cubic-bezier(.2,1.5,.4,1);
}@keyframes pop{from{transform:scale(.7);opacity:0;}to{transform:scale(1);opacity:1;}}.math-root .promo-icon{font-size:60px;line-height:1;}.math-root .promo-txt b{display:block;font-size:26px;color:#f0b429;margin:12px 0 6px;}.math-root .promo-txt span{color:#c7d0d8;font-size:14px;}.math-root .base-panel{border-left:5px solid #4b5320;}.math-root .base-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:20px;margin-bottom:6px;}.math-root .base-col h4{margin:0 0 8px;font-size:15px;color:#4b5320;}.math-root .ex-row{display:flex;gap:9px;flex-wrap:wrap;margin:10px 0;}.math-root .ex-row .btn{border-color:#c9d3c4;}.math-root .muted.small{font-size:12.5px;}.math-root .rank-card{
  background:#22282c;border:2px solid #4b5320;border-radius:13px;
  padding:16px 18px;text-align:center;color:#eef2f0;
}.math-root .rk-icon{font-size:40px;line-height:1;}.math-root .rk-name{font-size:22px;font-weight:bold;color:#f0b429;margin:5px 0 3px;letter-spacing:1px;}.math-root .rk-desc{font-size:12px;color:#9aa5ad;margin-bottom:11px;}.math-root .rk-bar{height:8px;background:#333c41;border-radius:4px;overflow:hidden;}.math-root .rk-bar i{display:block;height:100%;background:linear-gradient(90deg,#4b5320,#f0b429);border-radius:4px;transition:width .5s;}.math-root .rk-next{font-size:11.5px;color:#8b96a1;margin-top:7px;}.math-root .medal-h{margin:22px 0 10px;font-size:15px;color:#4b5320;}.math-root .medal-wall{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;}.math-root .medal{
  border:2px solid #d5d9dd;border-radius:13px;padding:14px 12px;text-align:center;
  background:#fafafa;position:relative;
}.math-root .medal.got{
  background:linear-gradient(160deg,#fffbe9,#f6ecd2);
  border-color:var(--mc,#c9a227);
  box-shadow:0 3px 12px rgba(201,162,39,.3);
}.math-root .medal .mi{font-size:33px;line-height:1;}.math-root .medal.got .mi{filter:drop-shadow(0 2px 4px rgba(0,0,0,.2));}.math-root .medal .mn{font-weight:bold;font-size:14px;margin:6px 0 3px;}.math-root .medal .md{font-size:11px;color:#5a6672;line-height:1.5;}.math-root .medal .mp{
  margin-top:8px;font-size:11px;color:#5a6672;
  background:#eef0ec;border-radius:10px;padding:2px 0;
}.math-root .medal.got .mp{background:#f0b429;color:#3a2f08;font-weight:bold;}.math-root .medal .lock{position:absolute;top:8px;right:10px;font-size:13px;opacity:.55;}.math-root .rank-ladder{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:9px;}.math-root .rstep{
  border:2px solid #e0e3e6;border-radius:10px;padding:9px 11px;background:#fafafa;
  display:flex;align-items:center;gap:9px;
}.math-root .rstep.done{border-color:#4b5320;background:#f2f6ec;}.math-root .rstep.cur{border-color:#f0b429;background:#fffbe9;box-shadow:0 2px 9px rgba(240,180,57,.34);}.math-root .rstep .ri{font-size:21px;}.math-root .rstep .rt{flex:1;}.math-root .rstep .rn{font-size:13px;font-weight:bold;}.math-root .rstep .rc{font-size:11px;color:#7c868f;}.math-root .ach-wall{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;}.math-root .ach{
  border:2px solid #e0e3e6;border-radius:11px;padding:11px 12px;background:#fafafa;
  display:flex;align-items:center;gap:10px;
}.math-root .ach.got{border-color:#4b5320;background:#f2f6ec;}.math-root .ach .ai{font-size:22px;filter:grayscale(1);opacity:.45;}.math-root .ach.got .ai{filter:none;opacity:1;}.math-root .ach .an{font-size:13px;font-weight:bold;}.math-root .ach .ad{font-size:11px;color:#6d7780;line-height:1.4;}.math-root .stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:11px;}.math-root .sbox{
  background:#f7f6f2;border:2px solid #e2ded4;border-radius:11px;
  padding:13px;text-align:center;
}.math-root .sbox .sv{font-size:23px;font-weight:bold;color:#4b5320;}.math-root .sbox .sl{font-size:11.5px;color:#6d7780;margin-top:2px;}.math-root .quiz-score{
  background:#22282c;color:#eef2f0;border-radius:13px;padding:18px 22px;margin-bottom:16px;
  border:2px solid #4b5320;
}.math-root .quiz-score h3{margin:0 0 6px;color:#f0b429;font-size:17px;}.math-root .quiz-score p{margin:0;font-size:14px;color:#c7d0d8;}.math-root .gain-line{
  display:inline-flex;align-items:center;gap:7px;margin-top:9px;
  background:rgba(240,180,57,.16);border:1px solid #f0b429;border-radius:999px;
  padding:4px 14px;font-size:13.5px;color:#f0b429;font-weight:bold;
}.math-root .practice-foot .pf-score{font-size:16px;font-weight:bold;color:#4b5320;}.math-root .perfect-banner{
  background:linear-gradient(100deg,#fff8e1,#ffeab8);border:2px solid #f0b429;
  border-radius:11px;padding:11px 16px;margin-top:12px;
  font-size:14.5px;color:#6b5200;font-weight:bold;
}

/* ===================== 编程板块（作用域 .gesp-root） ===================== */
.gesp-root{
  --ink:#1f2328; --ink2:#4a5158; --ink3:#7b838c;
  --line:#e3e7ec; --line2:#eef1f4;
  --bg:#f4f6f8; --card:#ffffff; --sunk:#f7f9fa;
  --red:#c0392b; --redbg:#fdf1ef;
  --blue:#1c5fa8; --bluebg:#eef4fb;
  --green:#1e7a4a; --greenbg:#eef7f1;
  --amber:#9a6400; --amberbg:#fdf6e6;
  --purple:#5b3fa8; --purplebg:#f2eefc;
  --sbh:0px;
}.gesp-root *{box-sizing:border-box;-webkit-tap-highlight-color:transparent}.gesp-root,.gesp-root{margin:0;padding:0}.gesp-root{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  color:var(--ink); background:var(--bg); font-size:15px; line-height:1.65;
  -webkit-font-smoothing:antialiased;
}.gesp-root h1,.gesp-root h2,.gesp-root h3,.gesp-root h4{margin:0;font-weight:600}.gesp-root .topbar{
  position:sticky; top:0; z-index:50; background:#fff;
  border-bottom:1px solid var(--line);
  padding:10px 16px; padding-top:calc(10px + env(safe-area-inset-top));
  display:flex; align-items:center; gap:10px;
}.gesp-root .topbar .logo{
  width:30px;height:30px;border-radius:8px;background:var(--blue);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;flex:0 0 auto;
}.gesp-root .topbar .ttl{font-size:15.5px;font-weight:600;letter-spacing:-.2px}.gesp-root .topbar .ttl span{color:var(--ink3);font-weight:400;font-size:12.5px;margin-left:6px}.gesp-root .topbar .right{margin-left:auto;display:flex;gap:6px;align-items:center}.gesp-root .shell{display:flex; max-width:1400px; margin:0 auto; align-items:flex-start}.gesp-root .side{
  position:sticky; top:57px; flex:0 0 200px; padding:16px 8px 24px 16px;
  height:calc(100vh - 57px); overflow-y:auto;
}.gesp-root .side .navi{display:flex;flex-direction:column;gap:3px}.gesp-root .side .ni{
  display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:9px;
  color:var(--ink2);text-decoration:none;font-size:14px;cursor:pointer;border:1px solid transparent;
}.gesp-root .side .ni:hover{background:#fff;border-color:var(--line)}.gesp-root .side .ni.on{background:var(--blue);color:#fff;font-weight:600}.gesp-root .side .ni .ic{width:18px;text-align:center;font-size:15px;flex:0 0 auto}.gesp-root .side .ni .bdg{
  margin-left:auto;background:var(--redbg);color:var(--red);font-size:11px;font-weight:700;
  padding:0 6px;border-radius:9px;line-height:1.7;
}.gesp-root .side .ni.on .bdg{background:rgba(255,255,255,.25);color:#fff}.gesp-root .main{flex:1 1 auto;min-width:0;padding:16px 16px 90px}.gesp-root .view{display:none}.gesp-root .view.on{display:block;animation:fade .18s ease}@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.gesp-root .card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:14px}.gesp-root .card>h2{font-size:16px;margin-bottom:4px}.gesp-root .card .hint{color:var(--ink3);font-size:12.5px;margin-top:2px}.gesp-root .pill{display:inline-block;padding:1px 8px;border-radius:10px;font-size:11.5px;font-weight:600;line-height:1.8;white-space:nowrap}.gesp-root .p-red{background:var(--redbg);color:var(--red);border:1px solid #f0cfc9}.gesp-root .p-blue{background:var(--bluebg);color:var(--blue);border:1px solid #cfe0f2}.gesp-root .p-green{background:var(--greenbg);color:var(--green);border:1px solid #cbe6d6}.gesp-root .p-amber{background:var(--amberbg);color:var(--amber);border:1px solid #eddcb8}.gesp-root .p-grey{background:#f0f2f5;color:var(--ink3);border:1px solid var(--line)}.gesp-root .btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:9px 16px;border-radius:9px;border:1px solid var(--line);background:#fff;
  color:var(--ink);font-size:14px;font-weight:500;cursor:pointer;font-family:inherit;
  transition:.13s;line-height:1.4;
}.gesp-root .btn:hover{border-color:#c9d2dc;background:#fafbfc}.gesp-root .btn.pri{background:var(--blue);border-color:var(--blue);color:#fff}.gesp-root .btn.pri:hover{background:#17518f}.gesp-root .btn.ok{background:var(--green);border-color:var(--green);color:#fff}.gesp-root .btn.warn{background:var(--amber);border-color:var(--amber);color:#fff}.gesp-root .btn.sm{padding:6px 11px;font-size:13px;border-radius:8px}.gesp-root .btn:disabled{opacity:.45;cursor:not-allowed}.gesp-root .btnrow{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.gesp-root .today{
  background:linear-gradient(135deg,#1c5fa8,#2a7fc9); color:#fff;border:none;
  border-radius:14px;padding:20px;margin-bottom:14px;
}.gesp-root .today .k{font-size:12.5px;opacity:.85;letter-spacing:.4px}.gesp-root .today .d{font-size:26px;font-weight:700;margin:2px 0 6px;letter-spacing:-.5px}.gesp-root .today .t{font-size:15px;font-weight:600;margin-bottom:12px}.gesp-root .today .acts{display:flex;gap:8px;flex-wrap:wrap}.gesp-root .today .btn{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.34);color:#fff;font-weight:600}.gesp-root .today .btn:hover{background:rgba(255,255,255,.26)}.gesp-root .today .btn.solid{background:#fff;color:var(--blue);border-color:#fff}.gesp-root .stat{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}.gesp-root .stat .s{background:#fff;border:1px solid var(--line);border-radius:11px;padding:13px 10px;text-align:center}.gesp-root .stat .n{font-size:21px;font-weight:700;letter-spacing:-.5px;line-height:1.25}.gesp-root .stat .l{font-size:11.5px;color:var(--ink3);margin-top:2px}.gesp-root .stat .n.ok{color:var(--green)}.gesp-root .stat .n.no{color:var(--red)}.gesp-root .days{display:grid;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:11px}.gesp-root .day{
  background:#fff;border:1px solid var(--line);border-radius:11px;padding:13px;cursor:pointer;
  transition:.13s;position:relative;
}.gesp-root .day:hover{border-color:#b9c9dd;transform:translateY(-1px)}.gesp-root .day.done{border-color:#cbe6d6;background:var(--greenbg)}.gesp-root .day.cur{border-color:var(--blue);box-shadow:0 0 0 2px var(--bluebg)}.gesp-root .day .dh{display:flex;align-items:center;gap:7px;margin-bottom:5px}.gesp-root .day .dn{
  width:23px;height:23px;border-radius:7px;background:var(--sunk);color:var(--ink2);
  display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:700;flex:0 0 auto;
}.gesp-root .day.cur .dn{background:var(--blue);color:#fff}.gesp-root .day.done .dn{background:var(--green);color:#fff}.gesp-root .day .dt{font-size:13.5px;font-weight:600}.gesp-root .day .dl{font-size:12px;color:var(--ink3);margin:4px 0 6px}.gesp-root .day .dk{font-size:12px;color:var(--ink2);line-height:1.55;border-left:2px solid var(--amber);padding-left:7px}.gesp-root .day .tick{position:absolute;right:10px;top:10px;color:var(--green);font-size:15px}.gesp-root .doc{background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px 22px}.gesp-root .doc .wrap{max-width:none;margin:0}.gesp-root .doc h1{font-size:21px;margin-bottom:4px;letter-spacing:-.3px}.gesp-root .doc .sub{color:var(--ink3);font-size:12.5px;margin-bottom:6px}.gesp-root .doc h2{
  font-size:17px;margin:32px 0 12px;padding-left:10px;
  border-left:4px solid var(--blue);line-height:1.45;scroll-margin-top:70px;
}.gesp-root .doc h2:first-of-type{margin-top:14px}.gesp-root .doc h2 .tag{font-weight:400;color:var(--ink3);font-size:12.5px;margin-left:8px}.gesp-root .doc h3{font-size:15px;margin:20px 0 8px}.gesp-root .doc h4{font-size:14px;margin:15px 0 6px;color:var(--ink2);font-weight:600}.gesp-root .doc p{margin:7px 0}.gesp-root .doc table{border-collapse:collapse;width:100%;margin-bottom:8px;font-size:13px;display:block;overflow-x:auto}.gesp-root .doc th,.gesp-root .doc td{border:1px solid var(--line);padding:7px 10px;text-align:left;vertical-align:top}.gesp-root .doc th{background:var(--sunk);font-weight:600;font-size:12.5px;color:var(--ink2);white-space:nowrap}.gesp-root .doc td.c,.gesp-root .doc th.c{text-align:center}.gesp-root .doc tr:nth-child(even) td{background:#fcfdfd}.gesp-root .doc .box{border:1px solid var(--line);border-radius:8px;padding:13px 15px;margin-bottom:13px;background:var(--sunk)}.gesp-root .doc .box.red{border-color:#f0cfc9;background:var(--redbg)}.gesp-root .doc .box.blue{border-color:#cfe0f2;background:var(--bluebg)}.gesp-root .doc .box.green{border-color:#cbe6d6;background:var(--greenbg)}.gesp-root .doc .box.amber{border-color:#eddcb8;background:var(--amberbg)}.gesp-root .doc .box.purple{border-color:#ddd2f2;background:var(--purplebg)}.gesp-root .doc .box h3,.gesp-root .doc .box h4{margin-top:0}.gesp-root .doc .box p:last-child{margin-bottom:0}.gesp-root .doc .life{border-left:3px solid var(--green);background:var(--greenbg);padding:10px 14px;margin:10px 0;border-radius:0 6px 6px 0}.gesp-root .doc .life:before{content:"生活里的它";display:block;font-size:11.5px;font-weight:700;color:var(--green);letter-spacing:.5px;margin-bottom:3px}.gesp-root .doc .rhyme{border:1px dashed var(--amber);background:var(--amberbg);padding:11px 15px;margin:10px 0;border-radius:8px}.gesp-root .doc .rhyme .lbl{font-size:11.5px;font-weight:700;color:var(--amber);letter-spacing:.5px;margin-bottom:4px}.gesp-root .doc .rhyme .txt{font-size:14.5px;font-weight:600;color:#5c3d00;line-height:1.9;letter-spacing:.3px}.gesp-root .doc .plain{border-left:3px solid var(--blue);background:var(--bluebg);padding:10px 14px;margin:10px 0;border-radius:0 6px 6px 0}.gesp-root .doc .plain:before{content:"大白话";display:block;font-size:11.5px;font-weight:700;color:var(--blue);letter-spacing:.5px;margin-bottom:3px}.gesp-root .doc ol,.gesp-root .doc ul{margin:6px 0 6px 20px;padding:0}.gesp-root .doc li{margin:4px 0}.gesp-root .doc .kc{border:1px solid var(--line);border-radius:10px;margin-bottom:16px;overflow:hidden;background:#fff}.gesp-root .doc .kc>.hd{background:var(--sunk);padding:9px 14px;font-weight:600;font-size:14.5px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;flex-wrap:wrap}.gesp-root .doc .kc>.bd{padding:14px 16px}.gesp-root .doc .kc>.bd>:first-child{margin-top:0}.gesp-root .doc .kc>.bd>:last-child{margin-bottom:0}.gesp-root .doc pre{background:#f6f8fa;border:1px solid var(--line);border-radius:6px;padding:10px 12px;overflow-x:auto;margin:8px 0;font-family:Consolas,"Courier New",monospace;font-size:12.5px;line-height:1.6}.gesp-root .doc code{background:#f2f4f6;padding:1px 5px;border-radius:3px;font-size:12.5px;font-family:Consolas,monospace}.gesp-root .doc .sm{font-size:12.5px;color:var(--ink2)}.gesp-root .doc .toc{background:var(--sunk);border:1px solid var(--line);border-radius:8px;padding:14px 18px;margin-bottom:10px}.gesp-root .doc .toc ol{margin:6px 0 0 18px}.gesp-root .doc .toc li{margin:3px 0;font-size:13.5px}.gesp-root .doc .toc a{color:var(--blue);text-decoration:none}.gesp-root .doc .foot{margin-top:34px;padding-top:12px;border-top:1px solid var(--line);color:var(--ink3);font-size:12px}.gesp-root .qwrap{max-width:860px;margin:0 auto}.gesp-root .qhead{
  background:#fff;border:1px solid var(--line);border-radius:12px;padding:13px 16px;margin-bottom:12px;
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
}.gesp-root .qhead .prog{flex:1 1 160px;min-width:120px}.gesp-root .qhead .ptxt{font-size:12.5px;color:var(--ink2);margin-bottom:5px;display:flex;justify-content:space-between}.gesp-root .track{height:7px;background:var(--line2);border-radius:5px;overflow:hidden}.gesp-root .track .fill{height:100%;background:linear-gradient(90deg,#1c5fa8,#2a7fc9);border-radius:5px;transition:width .3s}.gesp-root .qhead .clock{
  font-family:Consolas,monospace;font-size:16px;font-weight:700;color:var(--ink);
  background:var(--sunk);border:1px solid var(--line);border-radius:8px;padding:4px 11px;
}.gesp-root .qhead .clock.overtime{background:var(--amberbg);border-color:#eddcb8;color:var(--amber)}.gesp-root .q{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:13px;scroll-margin-top:70px}.gesp-root .q .qh{display:flex;align-items:flex-start;gap:9px;margin-bottom:11px}.gesp-root .q .qno{
  flex:0 0 auto;background:var(--bluebg);color:var(--blue);font-size:12.5px;font-weight:700;
  padding:1px 8px;border-radius:7px;line-height:1.9;
}.gesp-root .q .qno.tf{background:var(--purplebg);color:var(--purple)}.gesp-root .q .stem{font-size:15px;font-weight:500;line-height:1.7;flex:1}.gesp-root .q .stem code{background:#f2f4f6;padding:1px 5px;border-radius:3px;font-family:Consolas,monospace;font-size:13px}.gesp-root .q pre{background:#f6f8fa;border:1px solid var(--line);border-radius:7px;padding:11px 13px;overflow-x:auto;font-family:Consolas,"Courier New",monospace;font-size:12.5px;line-height:1.65;margin:9px 0}.gesp-root .qcode{
  background:#fafbfc;border:1px solid var(--line);border-left:3px solid var(--green);
  border-radius:7px;padding:11px 13px;margin:9px 0;
  font-family:Consolas,"Courier New",monospace;font-size:12.5px;line-height:1.7;
  color:var(--ink);white-space:pre-wrap;word-break:break-all;
}.gesp-root .wi .qcode{margin:8px 0 6px}.gesp-root .opts{display:flex;flex-direction:column;gap:8px}.gesp-root .opt{
  display:flex;align-items:flex-start;gap:10px;padding:11px 13px;border:1px solid var(--line);
  border-radius:9px;cursor:pointer;transition:.12s;background:#fff;
}.gesp-root .opt:hover{border-color:#b9c9dd;background:#fafbfc}.gesp-root .opt .k{
  flex:0 0 auto;width:23px;height:23px;border-radius:7px;background:var(--sunk);
  display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:700;color:var(--ink2);
}.gesp-root .opt .t{flex:1;font-size:14px;line-height:1.6}.gesp-root .opt.picked{border-color:var(--blue);background:var(--bluebg)}.gesp-root .opt.picked .k{background:var(--blue);color:#fff}.gesp-root .opt.right{border-color:var(--green);background:var(--greenbg)}.gesp-root .opt.right .k{background:var(--green);color:#fff}.gesp-root .opt.wrong{border-color:var(--red);background:var(--redbg)}.gesp-root .opt.wrong .k{background:var(--red);color:#fff}.gesp-root .opt.lock{cursor:default}.gesp-root .tfs{display:flex;gap:10px}.gesp-root .tfs .opt{flex:1;justify-content:center}.gesp-root .tfs .opt .t{flex:0 0 auto}.gesp-root .fb{margin-top:11px;border-radius:9px;padding:10px 13px;font-size:13.5px;line-height:1.7}.gesp-root .fb.ok{background:var(--greenbg);border:1px solid #cbe6d6;color:#14512f}.gesp-root .fb.no{background:var(--redbg);border:1px solid #f0cfc9;color:#8c2f22}.gesp-root .fb .ttl{font-weight:700;font-size:13.5px;margin-bottom:3px}.gesp-root .result{background:#fff;border:1px solid var(--line);border-radius:14px;padding:22px;text-align:center;margin-bottom:14px}.gesp-root .result .big{font-size:44px;font-weight:700;letter-spacing:-1.5px;line-height:1.1}.gesp-root .result .big.pass{color:var(--green)}.gesp-root .result .big.fail{color:var(--red)}.gesp-root .result .lab{color:var(--ink3);font-size:13px;margin-top:3px}.gesp-root .result .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin-top:16px}.gesp-root .result .g{background:var(--sunk);border-radius:9px;padding:11px}.gesp-root .result .gn{font-size:19px;font-weight:700}.gesp-root .result .gl{font-size:11.5px;color:var(--ink3);margin-top:1px}.gesp-root .verdict{border-radius:9px;padding:12px 15px;margin-top:14px;font-size:13.5px;line-height:1.7;text-align:left}.gesp-root .verdict.a{background:var(--greenbg);border:1px solid #cbe6d6}.gesp-root .verdict.b{background:var(--amberbg);border:1px solid #eddcb8}.gesp-root .verdict.c{background:var(--redbg);border:1px solid #f0cfc9}.gesp-root .wl{display:flex;flex-direction:column;gap:10px}.gesp-root .wi{background:#fff;border:1px solid var(--line);border-radius:11px;padding:14px}.gesp-root .wi .wh{display:flex;align-items:center;gap:8px;margin-bottom:7px;flex-wrap:wrap}.gesp-root .wi .ws{font-size:14px;font-weight:500;line-height:1.65;margin:6px 0}.gesp-root .wi .wm{font-size:12.5px;color:var(--ink3);margin-top:6px}.gesp-root .wi .wa{font-size:13px;margin-top:7px;padding:8px 11px;border-radius:7px;background:var(--greenbg);border:1px solid #cbe6d6}.gesp-root .empty{text-align:center;padding:44px 20px;color:var(--ink3)}.gesp-root .empty .e1{font-size:34px;margin-bottom:10px;opacity:.5}.gesp-root .empty .e2{font-size:14px}.gesp-root .tbl{width:100%;border-collapse:collapse;font-size:13px}.gesp-root .tbl th,.gesp-root .tbl td{border:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}.gesp-root .tbl th{background:var(--sunk);font-weight:600;font-size:12.5px;color:var(--ink2)}.gesp-root .tbl tr:nth-child(even) td{background:#fcfdfd}.gesp-root .scrollx{overflow-x:auto;-webkit-overflow-scrolling:touch}.gesp-root .syncbox textarea{
  width:100%;min-height:105px;border:1px solid var(--line);border-radius:9px;padding:11px;
  font-family:Consolas,monospace;font-size:12px;line-height:1.55;resize:vertical;color:var(--ink);
  background:var(--sunk);
}.gesp-root .toast{
  position:fixed;left:50%;bottom:calc(84px + var(--sbh));transform:translateX(-50%) translateY(16px);
  background:#22262b;color:#fff;padding:9px 18px;border-radius:22px;font-size:13.5px;
  opacity:0;pointer-events:none;transition:.22s;z-index:200;max-width:86vw;text-align:center;
}.gesp-root .toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.gesp-root .tabs{
  display:none;position:fixed;left:0;right:0;bottom:0;z-index:60;background:#fff;
  border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);
}.gesp-root .tabs .inner{display:flex}.gesp-root .tabs .tb{
  flex:1;padding:7px 2px 8px;text-align:center;color:var(--ink3);font-size:10.5px;
  cursor:pointer;border:none;background:none;font-family:inherit;line-height:1.3;
}.gesp-root .tabs .tb .ic{display:block;font-size:19px;line-height:1.35}.gesp-root .tabs .tb.on{color:var(--blue);font-weight:600}@media (max-width:860px){.gesp-root{font-size:14.5px}.gesp-root .side{display:none}.gesp-root .tabs{display:block}.gesp-root .topbar .ttl span{display:none}.gesp-root .topbar .ttl{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gesp-root .topbar .right .btn{padding:7px 13px;font-size:13.5px}.gesp-root .main{padding:12px 12px 84px}.gesp-root .stat{grid-template-columns:repeat(2,1fr)}.gesp-root .today{padding:17px}.gesp-root .today .d{font-size:23px}.gesp-root .doc{padding:15px 15px;border-radius:10px}.gesp-root .doc h2{font-size:16px;margin-top:26px}.gesp-root .doc table{font-size:12.5px}.gesp-root .doc th,.gesp-root .doc td{padding:6px 8px}.gesp-root .card{padding:14px;border-radius:11px}.gesp-root .q{padding:14px}.gesp-root .qhead{padding:11px 13px}.gesp-root .result{padding:18px}.gesp-root .result .big{font-size:38px}.gesp-root .tfs{flex-direction:column}}@media (min-width:861px){.gesp-root .tabs{display:none}}@media print{.gesp-root .topbar,.gesp-root .side,.gesp-root .tabs,.gesp-root .btn,.gesp-root .btnrow{display:none !important}.gesp-root{background:#fff}.gesp-root .main{padding:0}.gesp-root .doc{border:none;padding:0}.gesp-root .view{display:none !important}.gesp-root .view.on{display:block !important}}

/* ===================== GESP 讲义（作用域 .gesp-root .doc） ===================== */
.gesp-root .doc{
    --ink:#1f2328; --ink2:#4a5158; --ink3:#767e86;
    --line:#dfe3e8; --line2:#eef1f4;
    --bg:#ffffff; --panel:#f7f9fa;
    --red:#c0392b; --redbg:#fdf1ef;
    --blue:#1c5fa8; --bluebg:#eef4fb;
    --green:#1e7a4a; --greenbg:#eef7f1;
    --amber:#9a6400; --amberbg:#fdf6e6;
    --purple:#5b3fa8; --purplebg:#f2eefc;
  }.gesp-root .doc *{box-sizing:border-box}.gesp-root .doc{
    margin:0; padding:28px 24px 60px;
    font-family:-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
    color:var(--ink); background:var(--bg); line-height:1.75;
    font-size:14.5px;
  }.gesp-root .doc .wrap{max-width:1080px;margin:0 auto}.gesp-root .doc h1{font-size:25px;margin:0 0 4px;letter-spacing:-.3px}.gesp-root .doc .sub{color:var(--ink3);font-size:13px;margin-bottom:8px}.gesp-root .doc h2{
    font-size:17px;margin:40px 0 14px;padding-left:11px;
    border-left:4px solid var(--blue);line-height:1.4;
  }.gesp-root .doc h2 .tag{font-weight:400;color:var(--ink3);font-size:12.5px;margin-left:8px}.gesp-root .doc h3{font-size:15px;margin:22px 0 8px}.gesp-root .doc h4{font-size:14px;margin:16px 0 6px;color:var(--ink2)}.gesp-root .doc p{margin:7px 0}.gesp-root .doc table{border-collapse:collapse;width:100%;margin-bottom:8px;font-size:13px}.gesp-root .doc th,.gesp-root .doc td{border:1px solid var(--line);padding:7px 10px;text-align:left;vertical-align:top}.gesp-root .doc th{background:var(--panel);font-weight:600;font-size:12.5px;color:var(--ink2)}.gesp-root .doc td.c,.gesp-root .doc th.c{text-align:center}.gesp-root .doc tr:nth-child(even) td{background:#fcfdfd}.gesp-root .doc .box{border:1px solid var(--line);border-radius:8px;padding:14px 16px;margin-bottom:14px;background:var(--panel)}.gesp-root .doc .box.red{border-color:#f0cfc9;background:var(--redbg)}.gesp-root .doc .box.blue{border-color:#cfe0f2;background:var(--bluebg)}.gesp-root .doc .box.green{border-color:#cbe6d6;background:var(--greenbg)}.gesp-root .doc .box.amber{border-color:#eddcb8;background:var(--amberbg)}.gesp-root .doc .box.purple{border-color:#ddd2f2;background:var(--purplebg)}.gesp-root .doc .box h3,.gesp-root .doc .box h4{margin-top:0}.gesp-root .doc .box p:last-child{margin-bottom:0}.gesp-root .doc .life{
    border-left:3px solid var(--green);background:var(--greenbg);
    padding:10px 14px;margin:10px 0;border-radius:0 6px 6px 0;
  }.gesp-root .doc .life:before{
    content:"生活里的它";display:block;font-size:11.5px;font-weight:700;
    color:var(--green);letter-spacing:.5px;margin-bottom:3px;
  }.gesp-root .doc . rhyme{
    border:1px dashed var(--amber);background:var(--amberbg);
    padding:11px 15px;margin:10px 0;border-radius:8px;
  }.gesp-root .doc .rhyme .lbl{font-size:11.5px;font-weight:700;color:var(--amber);letter-spacing:.5px;margin-bottom:4px}.gesp-root .doc .rhyme .txt{font-size:15px;font-weight:600;color:#5c3d00;line-height:1.9;letter-spacing:.3px}.gesp-root .doc .plain{
    border-left:3px solid var(--blue);background:var(--bluebg);
    padding:10px 14px;margin:10px 0;border-radius:0 6px 6px 0;
  }.gesp-root .doc .plain:before{
    content:"大白话";display:block;font-size:11.5px;font-weight:700;
    color:var(--blue);letter-spacing:.5px;margin-bottom:3px;
  }.gesp-root .doc ol,.gesp-root .doc ul{margin:6px 0 6px 20px;padding:0}.gesp-root .doc li{margin:4px 0}.gesp-root .doc .sm{font-size:12.5px;color:var(--ink2)}.gesp-root .doc .mono{font-family:Consolas,"Courier New",monospace;font-size:12.5px}.gesp-root .doc .k{font-weight:600}.gesp-root .doc pre{
    background:#f6f8fa;border:1px solid var(--line);border-radius:6px;
    padding:10px 12px;overflow-x:auto;margin:8px 0;
    font-family:Consolas,"Courier New",monospace;font-size:12.5px;line-height:1.6;
  }.gesp-root .doc code{background:#f2f4f6;padding:1px 5px;border-radius:3px;font-size:12.5px;font-family:Consolas,monospace}.gesp-root .doc .pill{display:inline-block;padding:1px 8px;border-radius:10px;font-size:11.5px;font-weight:600;line-height:1.8;white-space:nowrap}.gesp-root .doc .p-red{background:var(--redbg);color:var(--red);border:1px solid #f0cfc9}.gesp-root .doc .p-blue{background:var(--bluebg);color:var(--blue);border:1px solid #cfe0f2}.gesp-root .doc .p-green{background:var(--greenbg);color:var(--green);border:1px solid #cbe6d6}.gesp-root .doc .p-amber{background:var(--amberbg);color:var(--amber);border:1px solid #eddcb8}.gesp-root .doc .p-purple{background:var(--purplebg);color:var(--purple);border:1px solid #ddd2f2}.gesp-root .doc .p-grey{background:#f2f4f6;color:var(--ink3);border:1px solid var(--line)}.gesp-root .doc .kc{border:1px solid var(--line);border-radius:10px;margin-bottom:16px;overflow:hidden;background:#fff}.gesp-root .doc .kc>.hd{
    background:var(--panel);padding:9px 14px;font-weight:600;font-size:14.5px;
    border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  }.gesp-root .doc .kc>.bd{padding:14px 16px}.gesp-root .doc .kc>.bd>:first-child{margin-top:0}.gesp-root .doc .kc>.bd>:last-child{margin-bottom:0}.gesp-root .doc .kid{font-size:11.5px;color:var(--ink3);font-weight:400}.gesp-root .doc .toc{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px 18px;margin-bottom:10px}.gesp-root .doc .toc ol{margin:6px 0 0 18px}.gesp-root .doc .toc li{margin:3px 0;font-size:13.5px}.gesp-root .doc .toc a{color:var(--blue);text-decoration:none}.gesp-root .doc .toc a:hover{text-decoration:underline}.gesp-root .doc .foot{margin-top:40px;padding-top:12px;border-top:1px solid var(--line);color:var(--ink3);font-size:12px}@media print{.gesp-root .doc{padding:0;font-size:11.5px;line-height:1.6}.gesp-root .doc h2{page-break-after:avoid}.gesp-root .doc .kc{page-break-inside:avoid}.gesp-root .doc .box,.gesp-root .doc .rhyme,.gesp-root .doc .life,.gesp-root .doc .plain{page-break-inside:avoid}.gesp-root .doc tr{page-break-inside:avoid}.gesp-root .doc .toc{display:none}}