/* ===== 1. 设计令牌 ===== */
:root{
  --blue:#3E7BF6; --blue-d:#2C5FD6; --blue-l:#EAF1FF;
  --purple:#7A6BF7; --purple-l:#EFEDFE;
  --teal:#16B48A; --teal-l:#E4F8F1;
  --amber:#F5A524; --amber-l:#FEF3DE;
  --coral:#F4705A; --coral-l:#FDECEA;
  --ink:#1B2A45; --ink-2:#5A6B85; --ink-3:#93A1B5;
  --line:#E5ECF6; --card:#FFFFFF;
  --ok:#16B48A; --warn:#F5A524; --bad:#F4705A;
  --r-lg:18px; --r-md:14px; --r-sm:10px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;overflow:hidden}
body{display:flex;flex-direction:row;height:100dvh}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  color:var(--ink);background:#E9EEF7;
  -webkit-font-smoothing:antialiased;
}
button{font-family:inherit;border:0;background:none;cursor:pointer;color:inherit}
input,textarea{font-family:inherit;font-size:inherit;color:inherit}
.ico{width:20px;height:20px;flex:none;display:block}


/* ===== 原型导览 ===== */
#guide{
  flex:none;width:252px;height:100%;background:#E9EAF0;border-right:1px solid #DDE0E8;
  padding:10px 10px 14px;
  max-height:none;
  overflow-y:auto;overflow-x:hidden;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;scrollbar-color:#B6BCCA transparent;
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;
}
/* macOS 默认隐藏滚动条，这里强制画一条常显的，让人知道能滚 */
#guide::-webkit-scrollbar{width:10px}
#guide::-webkit-scrollbar-track{background:transparent}
#guide::-webkit-scrollbar-thumb{background:#BFC5D2;border-radius:99px;border:3px solid #E9EAF0;min-height:36px}
#guide::-webkit-scrollbar-thumb:hover{background:#9EA6B8}
#guide.collapsed{width:126px;padding:10px 8px 14px}
#guide.collapsed .pgu-head{flex-wrap:wrap;gap:4px}
#guide.collapsed .pgu-now{flex:0 0 100%}
#guide.collapsed .pgu-more{display:none!important}
.pgu-head{display:flex;align-items:center;gap:10px;margin-bottom:7px}
.pgu-label{font-size:12px;color:#8A8F9C;font-weight:600;flex:none}
.pgu-now{font-size:11.5px;color:#B0B5C2;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pgu-toggle{
  flex:none;font-size:11px;color:#5E6472;background:#fff;border:1px solid #D9DCE4;
  border-radius:999px;padding:3px 10px;
}
.pgu-hint{flex:none;font-size:10.5px;color:#A8AEBC}
.pgu-more{
  position:sticky;bottom:-6px;margin:4px -12px -6px;
  display:none;align-items:center;justify-content:center;gap:5px;
  font-size:11px;color:#5E6472;font-weight:600;
  padding:7px 0 9px;cursor:pointer;
  background:linear-gradient(180deg,rgba(233,234,240,0),#E9EAF0 46%);
}
.pgu-more b{font-size:14px;line-height:1}
.pgu-more:hover{color:#14161F}
#gdRows{display:flex;flex-direction:column;gap:4px}
#guide.collapsed #gdRows{display:none}
.pgu-row{display:flex;flex-wrap:wrap;align-items:center;gap:5px;padding:7px 0;border-bottom:1px dashed #DEE2EB}
.pgu-row:last-child{border-bottom:0}
#guide .pgu-grp{flex:0 0 100%;font-size:10px;letter-spacing:.2px;color:#8A8F9C;margin:0 0 2px}
#guide .pgu-grp.arrow::after{display:none}
#guide .pgu-btn{font-size:11px;padding:4px 8px}
@media (max-width:1180px){ #guide{width:208px} #guide.collapsed{width:112px} }
@media (max-width:980px){ #guide{width:172px} #guide .pgu-btn{font-size:10.5px;padding:3px 6px} }
.pgu-grp{font-size:10.5px;color:#9AA0AE;margin-right:1px;flex:none;font-weight:600}
.pgu-grp.arrow::after{content:'→';margin-left:4px;color:#C3C8D4}
.pgu-btn{
  border:1px solid #D6D9E2;background:#fff;color:#44485A;font-size:11.5px;
  padding:4px 10px;border-radius:999px;white-space:nowrap;cursor:pointer;
  transition:background .12s,color .12s,border-color .12s;
}
.pgu-btn:hover{background:#F7F8FB;border-color:#C9CDD8}
.pgu-btn.cur{background:#171B28;color:#fff;border-color:#171B28;font-weight:600}
.pgu-btn.admin{border-color:#DDE3F5}
.pgu-btn.admin.cur{background:linear-gradient(135deg,#6D8DFB,#8B6CF0);border-color:transparent}

/* ===== 2. 设备外壳 ===== */
#shell{flex:1;position:relative;min-height:0;overflow:hidden}
/* auto + margin:auto 的居中方式：内容超出时仍能滚到最上面，不会被裁 */
#stage{position:absolute;inset:0;display:flex;align-items:flex-start;justify-content:center;overflow:auto;padding:8px 10px 44px;overscroll-behavior:contain}
#devwrap{flex:none;margin:auto;position:relative}
#stage::-webkit-scrollbar{width:10px;height:10px}
#stage::-webkit-scrollbar-thumb{background:#C2C8D4;border-radius:99px;border:3px solid #E9EEF7}
.stage-nav{
  position:fixed;right:20px;top:48%;transform:translateY(-50%);
  display:none;flex-direction:column;gap:6px;z-index:98;
}
.stage-nav button{
  width:34px;height:34px;border-radius:50%;background:#fff;
  border:1px solid #E4E9F2;box-shadow:0 4px 12px rgba(22,26,40,.10);
  font-size:15px;color:#5E6472;line-height:1;
}
.stage-nav button:hover{color:#14161F;border-color:#D6DCE8}
.stage-nav button:disabled{opacity:.35;cursor:default}
body.admin-mode .stage-nav{display:none!important}
#device{position:absolute;top:0;left:0;transform-origin:top left;background:#0F1725;transition:background .2s}
body.mode-phone #device{padding:9px;border-radius:42px;box-shadow:0 30px 70px rgba(20,40,80,.30)}
body.mode-tablet #device{padding:11px;border-radius:22px;box-shadow:0 30px 70px rgba(20,40,80,.30)}
body.fluid #device{padding:0;border-radius:0;box-shadow:none;background:transparent}
body.fluid #devwrap{position:absolute;inset:8px 10px 44px;margin:0;width:auto!important;height:auto!important}
body.fluid #device{position:relative;width:100%;height:100%;overflow:hidden}
#app{
  width:100%;height:100%;overflow:hidden;position:relative;
  display:grid;
  background:linear-gradient(180deg,#E9F3FF 0%,#F5F9FF 52%,#F7FAFE 100%);
}
#app::before{
  content:'';position:absolute;inset:0;pointer-events:none;z-index:0;
  background:
    radial-gradient(560px 340px at 80% -70px, rgba(122,107,247,.13), transparent 70%),
    radial-gradient(680px 420px at 8% -90px, rgba(62,123,246,.15), transparent 72%);
}
#views{position:relative;z-index:1}
body.mode-phone:not(.fluid) #app{width:374px;height:812px;border-radius:34px}
body.mode-tablet:not(.fluid) #app{width:1010px;height:744px;border-radius:12px}
body.fluid #app{width:100%;height:100%;border-radius:0}

/* ===== 3. 布局骨架：手机底部 Tab / 平板左侧竖栏 ===== */
body.layout-phone #app{
  grid-template-rows:auto minmax(0,1fr) auto;
  grid-template-areas:"bar" "main" "tabs";
}
body.layout-tablet #app{
  grid-template-columns:88px minmax(0,1fr);
  grid-template-rows:auto minmax(0,1fr);
  grid-template-areas:"bar bar" "rail main";
  font-size:15px;
}
#topbar{grid-area:bar}
#views{grid-area:main;overflow-y:auto;overscroll-behavior:contain;scroll-behavior:smooth}
.tabbar{grid-area:tabs}
.rail{grid-area:rail}
body.layout-tablet .tabbar{display:none}
body.layout-phone .rail{display:none}
body.bare .tabbar,body.bare .rail,body.bare #topbar{display:none!important}
body.bare #app{
  grid-template-columns:minmax(0,1fr)!important;
  grid-template-rows:minmax(0,1fr)!important;
  grid-template-areas:"main"!important;
}

/* 顶栏 */
#topbar{
  display:flex;align-items:center;gap:10px;height:56px;padding:0 12px 0 6px;
  background:rgba(255,255,255,.82);backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(229,236,246,.9);z-index:20;
}
#topbar.hide{display:none}
#topbar h2{font-size:16px;font-weight:500;margin:0;flex:1;text-align:center;padding-right:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body.layout-tablet #topbar h2{text-align:left;padding-right:0}
.icon-btn{
  width:38px;height:38px;border-radius:12px;display:grid;place-items:center;color:var(--ink);
  transition:background .15s;
}
.icon-btn:active{background:rgba(62,123,246,.1)}

/* 底部 Tab（手机） */
.tabbar{
  display:flex;align-items:center;justify-content:space-around;
  height:62px;padding-bottom:4px;
  background:rgba(255,255,255,.92);backdrop-filter:blur(16px);
  border-top:1px solid rgba(229,236,246,.9);z-index:20;
}
.tabbar .tab{display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--ink-3);font-size:10px;padding:6px 10px;border-radius:12px}
.tabbar .tab.active{color:var(--blue)}
.tabbar .tab.active .ico{transform:translateY(-1px)}

/* 左侧竖栏（平板） */
.rail{
  display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 0 18px;
  background:rgba(255,255,255,.72);backdrop-filter:blur(14px);
  border-right:1px solid rgba(229,236,246,.9);z-index:20;
}
.rail .tab{
  width:64px;padding:9px 0 7px;border-radius:14px;display:flex;flex-direction:column;
  align-items:center;gap:4px;color:var(--ink-3);font-size:11px;transition:.18s;
}
.rail .tab .ico{width:22px;height:22px}
.rail .tab.active{background:var(--blue-l);color:var(--blue-d);font-weight:500}
.rail .space{flex:1}

/* ===== 4. 通用组件 ===== */
.view{display:none;padding:18px 16px 28px;animation:fade .22s ease}
.view.active{display:block}
body.layout-tablet .view{padding:22px 30px 32px}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

.card{background:var(--card);border-radius:var(--r-lg);border:1px solid var(--line);padding:16px;margin-bottom:14px}
.block-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.block-head h2{font-size:16px;font-weight:500;margin:0;display:flex;align-items:center;gap:8px}
.block-head h2 .ico{width:18px;height:18px;color:var(--blue)}
.link{color:var(--ink-3);font-size:12px;cursor:pointer}
.link:active{color:var(--blue)}

.btn-primary{
  background:var(--blue);color:#fff;font-size:15px;font-weight:500;
  padding:13px 22px;border-radius:14px;box-shadow:0 8px 18px rgba(62,123,246,.28);
  transition:transform .12s;
}
.btn-primary:active{transform:scale(.97)}
.btn-ghost{
  background:#fff;color:var(--blue-d);font-size:15px;font-weight:500;
  padding:13px 22px;border-radius:14px;border:1px solid #D6E4FF;
}
.btn-block{width:100%;display:block}
.chip-tag{
  display:inline-block;background:var(--blue-l);color:var(--blue-d);
  font-size:11px;padding:4px 10px;border-radius:20px;margin-bottom:10px;
}
.pill{font-size:11px;padding:3px 9px;border-radius:20px;background:#F1F4F9;color:var(--ink-2)}
.pill.t1{background:var(--coral-l);color:#C74B36}
.pill.t2{background:var(--amber-l);color:#B4780E}
.pill.t3{background:var(--blue-l);color:var(--blue-d)}

/* 色块 */
.t-blue{background:var(--blue-l);color:var(--blue-d)}
.t-purple{background:var(--purple-l);color:#5B4BD6}
.t-teal{background:var(--teal-l);color:#0E8A69}
.t-amber{background:var(--amber-l);color:#B4780E}
.t-coral{background:var(--coral-l);color:#C74B36}

/* ===== 5. 首页 ===== */
.home{display:grid;grid-template-columns:minmax(0,1fr);gap:0}
body.layout-tablet .home{grid-template-columns:minmax(0,1fr) 216px;gap:26px;align-items:start}
.greet-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}
.nw{white-space:nowrap}
.greet h1{
  font-size:22px;line-height:1.35;margin:0 0 8px;font-weight:600;letter-spacing:-.2px;
  background:linear-gradient(100deg,#2B4E8F,#3E7BF6 60%,#7A6BF7);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
body.layout-tablet .greet h1{font-size:27px}
.greet p{font-size:13px;line-height:1.75;color:var(--ink-2);margin:0}
.greet p b{color:var(--blue-d);font-weight:500}
.head-actions{display:flex;gap:8px;flex:none}
.circle-btn{
  width:36px;height:36px;border-radius:50%;display:grid;place-items:center;
  background:#fff;border:1px solid var(--line);color:var(--ink-2);
}
.circle-btn:active{background:var(--blue-l);color:var(--blue-d)}
/* ===== 学员详情 · 学习记录（对齐后台「学习记录」那一页） ===== */
.sl-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 10px}
.sl-tabs{display:flex;gap:4px;flex-wrap:wrap;flex:1;min-width:0}
.sl-tab{font-size:11.5px;color:#5A6B85;padding:5px 9px;border-radius:8px;background:#F4F7FC;
  border:1px solid transparent;cursor:pointer;white-space:nowrap}
.sl-tab:hover{background:#EDF2FB}
.sl-tab.on{background:#EDF3FF;border-color:#CFE0FA;color:#2E5AA8;font-weight:700}
.sl-src-sel{height:28px;border:1px solid #DCE5F2;border-radius:8px;font-size:11.5px;
  color:#3D4C63;padding:0 8px;background:#fff;flex:none}
.sl-sum{display:flex;gap:16px;flex-wrap:wrap;font-size:11px;color:#8C9AB3;margin-bottom:9px}
.sl-sum b{color:#1B2A45;font-weight:700}
.sl-sum b.ok{color:#0F8A4E}
.sl-sum b.no{color:#C0392B}
.sl-wrap{overflow-x:auto;margin:0 -2px}
.sl-tbl{width:100%;min-width:1000px;border-collapse:collapse;table-layout:fixed}
.sl-tbl th{font-size:10.5px;font-weight:700;color:#7A879E;text-align:left;padding:8px 6px;
  background:#F8FAFD;border-bottom:1px solid #E9EFF8;white-space:nowrap}
.sl-tbl td{font-size:11px;color:#3D4C63;padding:9px 6px;border-bottom:1px solid #F2F5FA;
  vertical-align:middle}
.sl-tbl tbody tr:hover td{background:#FBFDFF}
.sl-cut{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sl-time{font-variant-numeric:tabular-nums;color:#5A6B85;font-size:10.5px;white-space:nowrap}
.sl-src-tag{font-size:10px;padding:2px 6px;border-radius:5px;background:#F1F5FB;color:#5A6B85;
  white-space:nowrap}
.sl-src-tag.ai{background:#F4EFFF;color:#6A4BC4}
.sl-bar-w{display:flex;align-items:center;gap:5px}
.sl-prog{width:34px;height:4px;border-radius:3px;background:#EDF2FA;overflow:hidden;flex:none}
.sl-prog i{display:block;height:100%;border-radius:3px;background:#12A05C}
.sl-prog i.low{background:#E8A33C}
.sl-pct{font-size:10px;color:#5A6B85;font-variant-numeric:tabular-nums}
.sl-dur{font-variant-numeric:tabular-nums;color:#3D4C63}
.sl-vid{font-variant-numeric:tabular-nums;color:#8C9AB3}
/* 对/错：绿块、红块，数字加粗，肉眼一眼分开 */
.sl-ans{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.sl-ans i{font-style:normal;font-size:10px;font-weight:800;padding:1.5px 5px;border-radius:5px;line-height:1.4}
.sl-ans i.ok{background:#E6F7EE;color:#0F8A4E}
.sl-ans i.no{background:#FDECEA;color:#C0392B}
.sl-ans em{font-style:normal;font-size:10px;color:#8C9AB3;margin-left:1px}
.sl-unfix{font-size:10.5px;color:#C0392B;font-weight:600;white-space:nowrap}
.sl-done{font-size:10.5px;color:#0F8A4E;white-space:nowrap}
.sl-undone{font-size:10.5px;color:#A8B4C8;white-space:nowrap}
.ad-tag-s{font-size:10.5px;color:#5A6B85;background:#F4F7FC;border-radius:5px;padding:2px 6px;white-space:nowrap}
.sl-tbl2{table-layout:fixed;width:100%}

/* 消息中心：会话 + 通知，都是列表行，不是聊天气泡 */
.mb-hero{padding:4px 2px 10px}
.mb-hero b{display:block;font-size:21px;font-weight:800;color:#1B2A45;letter-spacing:.5px}
.mb-hero span{display:block;font-size:11.5px;color:#93A1B5;margin-top:4px}
.mb-sec{display:flex;align-items:center;gap:6px;margin:16px 2px 9px}
.mb-sec b{font-size:11px;font-weight:800;color:#7A879E;letter-spacing:1px}
.mb-sec em{margin-left:auto;font-size:10.5px;color:#A8B4C8;font-style:normal}
.mb-item{display:flex;align-items:center;gap:11px;padding:13px 14px;background:#fff;
  border:1px solid #E9EFF8;border-radius:14px;margin-bottom:9px;cursor:pointer}
.mb-item:active{background:#F7FAFF}
.mb-av{width:40px;height:40px;flex:none;border-radius:12px;display:grid;place-items:center;
  color:#fff;font-size:15px;font-weight:700;background:#2E6BE6}
.mb-av.g{background:#12A05C}
.mb-av.o{background:#E0803C}
.mb-av.p{background:#7A6BF0}
.mb-av .ico{width:17px;height:17px;color:#fff}
.mb-tx{flex:1;min-width:0}
.mb-tx b{display:block;font-size:13px;font-weight:600;color:#1B2A45;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mb-tx span{display:block;font-size:11.5px;color:#93A1B5;margin-top:4px;line-height:1.55;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.mb-right{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:5px}
.mb-time{font-size:10px;color:#A8B4C8;white-space:nowrap}
.mb-dot{min-width:17px;height:17px;border-radius:9px;background:#E14D3D;color:#fff;font-size:9.5px;
  font-weight:700;font-style:normal;display:flex;align-items:center;justify-content:center;padding:0 4px}
.mb-empty{padding:26px 0;text-align:center;font-size:11.5px;color:#A8B4C8}
.mb-note{font-size:10.5px;color:#A8B4C8;text-align:center;margin:14px 0 4px;line-height:1.7}

/* 消息铃铛：未读数挂在图标右上角 */
.bell-btn{position:relative}
.bell-dot{position:absolute;top:-3px;right:-3px;min-width:16px;height:16px;border-radius:9px;
  background:#E14D3D;color:#fff;font-size:9.5px;font-weight:700;font-style:normal;line-height:1;
  display:flex;align-items:center;justify-content:center;padding:0 4px;border:1.5px solid #fff;
  box-shadow:0 1px 3px rgba(225,77,61,.4)}
.bell-dot.hide{display:none}

.quickrow{display:flex;gap:10px;margin:16px 0}
.quickrow .btn-primary,.quickrow .btn-ghost{flex:1;text-align:center;font-size:14px;padding:12px 10px}

.course-grid{display:grid;grid-template-columns:1fr;gap:10px}
body.layout-tablet .course-grid{grid-template-columns:1fr 1fr;gap:12px}
.course{
  display:flex;align-items:center;gap:12px;padding:11px;border-radius:var(--r-md);
  background:#FBFCFE;border:1px solid #EDF2FA;cursor:pointer;transition:.16s;
}
.course:active{background:var(--blue-l);border-color:#D6E4FF}
.thumb{
  width:52px;height:52px;border-radius:12px;display:grid;place-items:center;flex:none;
}
body.layout-tablet .thumb{width:58px;height:58px}
.thumb .ico{width:26px;height:26px}
.course-tx{flex:1;min-width:0}
.course-t{font-size:14px;font-weight:500;margin-bottom:3px}
.course-s{font-size:11.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini-btn{
  flex:none;font-size:12px;color:var(--blue-d);background:#fff;
  border:1px solid #D6E4FF;border-radius:10px;padding:6px 12px;font-weight:500;
}
.mini-btn:active{background:var(--blue);color:#fff}

.tool-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
body.layout-tablet .tool-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
body.layout-tablet .tool-grid .tool:nth-child(5){display:none}
.tool{
  display:flex;align-items:center;gap:10px;padding:10px 11px;border-radius:var(--r-md);
  background:#FBFCFE;border:1px solid #EDF2FA;text-align:left;transition:.16s;
}
.tool:active{background:var(--blue-l)}
.tool-ico{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;flex:none}
.tool-ico .ico{width:18px;height:18px}
.tool-tx{display:flex;flex-direction:column;min-width:0;overflow:hidden}
.tool-tx b{font-size:12.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tool-tx i{font-size:10.5px;color:var(--ink-3);font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 今日课表 */
.sched-list{display:flex;flex-direction:column;gap:9px}
.sched{display:flex;align-items:center;gap:12px;padding:11px 13px;border-radius:14px;background:#FBFCFE;border:1px solid #EDF2FA;cursor:pointer}
.sched.now{background:#F1F6FF;border-color:#C9DBFF;box-shadow:0 4px 14px rgba(62,123,246,.10)}
.sched.done{background:#FAFCFC}
.sched.done .sched-t{color:var(--ink-2)}
.sched-time{flex:none;width:58px;padding-right:11px;border-right:1px solid #E8EEF9}
.sched-time b{display:block;font-size:14px;font-weight:500;letter-spacing:.2px}
.sched.done .sched-time b{color:var(--ink-3)}
.sched-time span{font-size:10.5px;color:var(--ink-3)}
.sched-tx{flex:1;min-width:0}
.sched-t{font-size:13.5px;font-weight:500;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sched-s{font-size:11.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sched-flag{flex:none;display:flex;align-items:center;gap:4px;font-size:11.5px;color:var(--ok)}
.sched-flag .ico{width:14px;height:14px;color:var(--ok)}
.mini-btn.solid{background:var(--blue);border-color:var(--blue);color:#fff}
.mini-btn.solid:active{background:var(--blue-d);color:#fff}
.sched-foot{font-size:10.5px;color:var(--ink-3);margin-top:10px;line-height:1.6}

body.layout-phone .sched{flex-wrap:wrap;gap:4px 10px;padding:10px 12px}
body.layout-phone .sched-time{order:1;width:auto;border-right:0;display:flex;align-items:baseline;gap:6px;padding-right:0}
body.layout-phone .sched-time b{display:inline;font-size:13px}
body.layout-phone .sched .mini-btn,body.layout-phone .sched-flag{order:2;margin-left:auto}
body.layout-phone .sched-tx{order:3;flex-basis:100%}
body.layout-phone .greet h1{font-size:20px}
body.layout-phone .greet-row{display:block;position:relative}
body.layout-phone .head-actions{position:absolute;right:0;top:0}
body.layout-phone .greet{padding-right:0}
body.layout-phone .chip-tag{margin-bottom:16px}


/* 本周目标 */
.goal-row{display:flex;align-items:center;gap:18px}
.goal-num{flex:none;display:flex;align-items:baseline;gap:5px}
.goal-num b{font-size:28px;font-weight:600;color:var(--blue-d);line-height:1}
.goal-num span{font-size:12px;color:var(--ink-3)}
.goal-bars{flex:1;min-width:0}
.goal-bar{height:8px;border-radius:5px;background:#EDF2FA;overflow:hidden}
.goal-bar i{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,#5D8BFA,#7A6BF7)}
.goal-hint{font-size:11.5px;color:var(--ink-3);margin-top:8px;line-height:1.6}

/* 首页右侧 */
.coach{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:12px 13px;margin-bottom:12px}
.coach-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.coach-av{width:24px;height:24px;border-radius:50%;background:linear-gradient(140deg,#5D8BFA,#8E7CFB);color:#fff;display:grid;place-items:center;font-size:11px;flex:none}
.coach-head b{font-size:12.5px;font-weight:500;flex:1}
.coach-tag{font-size:10px;color:var(--ok);background:#EAF8F3;padding:2px 7px;border-radius:8px;flex:none}
.coach p{font-size:11.5px;line-height:1.8;color:var(--ink-2);margin:0 0 10px}

.home-side{display:none}
body.layout-tablet .home-side{display:block}
.stat-mini{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:13px 14px;margin-bottom:10px}
.stat-mini b{display:block;font-size:20px;font-weight:600;color:var(--blue-d);line-height:1.2}
.stat-mini span{font-size:11.5px;color:var(--ink-3)}
.home-art{margin-top:4px;display:grid;place-items:center}
.home-art svg{width:100%;max-width:100%;height:auto}

/* ===== 6. 课程 ===== */
.cat{
  display:flex;align-items:center;gap:14px;padding:14px;border-radius:var(--r-lg);
  background:#fff;border:1px solid var(--line);margin-bottom:12px;cursor:pointer;
}
.cat:active{background:#FBFCFE}
body.layout-tablet #courseCats{display:grid;grid-template-columns:1fr 1fr;gap:12px}
body.layout-tablet #courseCats .cat{margin-bottom:0}
body.layout-tablet #wrongList{display:grid;grid-template-columns:1fr 1fr;gap:12px}
body.layout-tablet #wrongList .wq{margin-bottom:0}
.cat .thumb{width:56px;height:56px;border-radius:14px}
.cat-tx{flex:1;min-width:0}
.cat-tx b{font-size:15px;font-weight:500;display:block;margin-bottom:4px}
.cat-tx span{font-size:12px;color:var(--ink-3)}
.bar-wrap{height:5px;background:#EDF2FA;border-radius:4px;margin-top:9px;overflow:hidden}
.bar-wrap i{display:block;height:100%;border-radius:4px;background:var(--blue)}

.detail-cover{
  border-radius:var(--r-lg);padding:22px 20px;color:#fff;margin-bottom:16px;
  background:linear-gradient(120deg,#3E7BF6,#6C6BF7);
}
.detail-cover h1{font-size:20px;margin:0 0 6px;font-weight:500}
.detail-cover p{font-size:12.5px;opacity:.9;margin:0 0 14px}
.detail-meta{display:flex;gap:18px;font-size:12px;opacity:.95}
.lesson{
  display:flex;align-items:center;gap:12px;padding:13px 4px;border-bottom:1px solid #F1F5FB;cursor:pointer;
}
.lesson:last-child{border-bottom:0}
.lesson-idx{
  width:26px;height:26px;border-radius:50%;display:grid;place-items:center;flex:none;
  font-size:11px;background:#F1F4F9;color:var(--ink-3);
}
.lesson.done .lesson-idx{background:var(--teal-l);color:#0E8A69}
.lesson.cur .lesson-idx{background:var(--blue);color:#fff}
.lesson-tx{flex:1;min-width:0}
.lesson-tx b{font-size:13.5px;font-weight:400;display:block}
.lesson-tx span{font-size:11px;color:var(--ink-3)}
.sticky-cta{
  position:sticky;bottom:0;padding:14px 0 6px;margin-top:10px;
  background:#F7FAFE;
}
.sticky-cta::before{
  content:'';position:absolute;left:0;right:0;top:-18px;height:18px;pointer-events:none;
  background:linear-gradient(180deg,rgba(247,250,254,0),#F7FAFE);
}

/* ===== 7. 上课页 ===== */
.player{display:grid;gap:14px;grid-template-columns:1fr}
body.layout-tablet .player{grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);align-items:start}
.video{
  position:relative;aspect-ratio:16/9;border-radius:var(--r-lg);overflow:hidden;
  background:#101827;display:grid;place-items:center;color:#fff;
}
.video .vtitle{position:absolute;top:12px;left:14px;font-size:12px;color:rgba(255,255,255,.75);z-index:2}
.play-btn{
  width:62px;height:62px;border-radius:50%;background:rgba(255,255,255,.94);
  display:grid;place-items:center;color:#2C5FD6;box-shadow:0 6px 20px rgba(0,0,0,.28);
}
.video.playing .play-btn{opacity:0;pointer-events:none}
.vbar{
  position:absolute;left:0;right:0;bottom:0;padding:10px 14px 12px;z-index:2;
  background:linear-gradient(180deg,transparent,rgba(8,14,26,.82));
}
.vbar .track{height:4px;border-radius:3px;background:rgba(255,255,255,.28);overflow:hidden}
.vbar .track i{display:block;height:100%;width:0;background:#fff;border-radius:3px;transition:width .2s linear}
.vbar .row{display:flex;justify-content:space-between;align-items:center;margin-top:7px;font-size:11px;color:rgba(255,255,255,.82)}
.vbar .ops{display:flex;gap:14px}
.panel{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}
.panel-tabs{display:flex;border-bottom:1px solid var(--line)}
.panel-tabs button{flex:1;padding:12px;font-size:13px;color:var(--ink-3)}
.panel-tabs button.on{color:var(--blue-d);font-weight:500;box-shadow:inset 0 -2px 0 var(--blue)}
.panel-body{padding:12px 14px;max-height:340px;overflow:auto}
.note-area{
  width:100%;min-height:180px;border:0;outline:none;resize:none;font-size:13px;
  line-height:1.9;color:var(--ink-2);background:transparent;
}
.quiz{border:1px solid var(--line);border-radius:var(--r-md);padding:14px;margin-top:14px;background:#fff}
.quiz h3{font-size:13.5px;margin:0 0 10px;font-weight:500}
.opt{
  display:flex;align-items:center;gap:9px;padding:10px 12px;border:1px solid var(--line);
  border-radius:11px;margin-bottom:8px;font-size:13px;cursor:pointer;
}
.opt:active,.opt.on{border-color:var(--blue);background:var(--blue-l)}
.opt b{width:20px;height:20px;border-radius:50%;background:#F1F4F9;display:grid;place-items:center;font-size:11px;font-weight:400;flex:none}

/* ===== 8. AI 诊断 ===== */
.upload{
  border:1.5px dashed #BFD4F6;border-radius:var(--r-lg);background:#F7FAFF;
  padding:34px 20px;text-align:center;cursor:pointer;transition:.16s;
}
.upload:active{background:var(--blue-l);border-color:var(--blue)}
.upload .ico{width:38px;height:38px;margin:0 auto 12px;color:var(--blue)}
.upload b{display:block;font-size:14px;font-weight:500;margin-bottom:6px}
.upload span{font-size:12px;color:var(--ink-3)}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.chip{font-size:12.5px;padding:8px 16px;border-radius:20px;background:#fff;border:1px solid var(--line);color:var(--ink-2)}
.chip.on{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:500}
.steps{display:flex;gap:0;margin:18px 0 6px}
.step{flex:1;text-align:center;font-size:11px;color:var(--ink-3);position:relative}
.step b{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;margin:0 auto 6px;background:#EDF2FA;font-size:11px;font-weight:400}
.step.on b{background:var(--blue);color:#fff}
.step.on{color:var(--blue-d)}

.donut{width:132px;height:132px;display:block;margin:0 auto}
.result-top{text-align:center;padding:8px 0 4px}
.result-top h3{font-size:15px;margin:10px 0 4px;font-weight:500}
.result-top p{font-size:12px;color:var(--ink-3);margin:0}
.kp-row{display:flex;align-items:center;gap:10px;margin-bottom:11px}
.kp-name{width:104px;font-size:12.5px;flex:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kp-bar{flex:1;height:7px;background:#EDF2FA;border-radius:4px;overflow:hidden}
.kp-bar i{display:block;height:100%;border-radius:4px}
.kp-val{width:34px;text-align:right;font-size:12px;color:var(--ink-3);flex:none}

/* ===== 9. 错题本 ===== */
.wq{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:14px;margin-bottom:12px;cursor:pointer}
.wq:active{background:#FBFCFE}
.wq-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}
.wq-date{font-size:11px;color:var(--ink-3)}
.wq-tx{font-size:13.5px;line-height:1.7;margin-bottom:11px}
.wq-foot{display:flex;justify-content:space-between;align-items:center}

/* 错题本顶部：错得最多的 5 个知识点（平铺 5 格，点一格就按它筛） */
.wktop-h{display:flex;align-items:baseline;gap:6px;font-size:11.5px;color:#7A879E;margin:0 0 8px}
.wktop-h b{font-size:12px;color:#1B2A45;font-weight:600}
.wktop{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;margin-bottom:13px}
.wktop-i{background:#fff;border:1px solid #E7ECF4;border-radius:12px;padding:9px 6px 8px;text-align:center;
  cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0;
  transition:.15s;font-family:inherit}
.wktop-i b{font-size:17px;font-weight:700;color:#2C5FD6;line-height:1.05}
.wktop-i b em{font-style:normal;font-size:9.5px;font-weight:500;color:#93A0B5;margin-left:1px}
.wktop-i span{font-size:10.5px;color:#1B2A45;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden;word-break:break-all;min-height:26px}
.wktop-i i{font-style:normal;font-size:9.5px;color:#B4780E;background:#FFF6E4;border-radius:20px;padding:1px 6px;
  white-space:nowrap}
.wktop-i i.done{color:#0F8A4E;background:#EAF8F1}
.wktop-i.on{border-color:#9CC0FA;background:#F4F9FF;box-shadow:0 2px 8px rgba(44,95,214,.10)}
.wktop-i:active{transform:scale(.97)}
/* 已订正的错题：不藏起来，压暗一点 + 绿标，随时能翻回去再练 */
.wq.done{background:#FAFCFA;border-color:#DCEBE2}
.wq.done .wq-tx{color:#7B8A85}
.wq.done .pill{opacity:.66}
.wq-ok{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:600;
  color:#0F8A4E;background:#E9F7EF;border-radius:20px;padding:1px 7px 1px 5px;margin-left:2px}
.wq-open{font-size:10px;font-weight:600;color:#C07A05;background:#FFF4E3;
  border-radius:20px;padding:1px 7px;margin-left:2px}
.wq-half{font-size:10px;font-weight:600;color:#8A5A00;background:#FFF0CC;
  border-radius:20px;padding:1px 7px;margin-left:2px}
/* 错题本分段里的「已订正 ›」是跳转，不是筛选 */
.wf-seg button.go-done{color:#0F8A4E;padding-left:6px}
.wf-seg button.go-done b{color:#0F8A4E}

/* 已订正的错题（独立页） */
.wd-hero{display:flex;align-items:center;gap:12px;background:linear-gradient(135deg,#F1FBF6,#EAF6FF);
  border:1px solid #D6EEE2;border-radius:14px;padding:13px 15px;margin:0 0 12px}
.wd-hero-tx{flex:1;min-width:0}
.wd-hero-tx b{display:block;font-size:14.5px;color:#12694F}
.wd-hero-tx span{display:block;font-size:11px;color:#5C8578;line-height:1.5;margin-top:3px}
.wd-hero-n{flex:none;text-align:center}
.wd-hero-n b{font-size:24px;font-weight:700;color:#0F8A4E;line-height:1.05}
.wd-hero-n span{display:block;font-size:10px;color:#7BA394;margin-top:1px}
/* ===== 老师上传的资料（学生端） ===== */
.res-hero{display:flex;align-items:center;gap:12px;background:linear-gradient(135deg,#EEF4FF,#F3F0FF);
  border:1px solid #DCE4F8;border-radius:14px;padding:13px 15px;margin:0 0 12px}
.res-hero-tx{flex:1;min-width:0}
.res-hero-tx b{display:block;font-size:14.5px;color:#2C3E7A}
.res-hero-tx span{display:block;font-size:11px;color:#6B7A9E;line-height:1.5;margin-top:3px}
.res-hero-n{flex:none;text-align:center}
.res-hero-n b{font-size:24px;font-weight:700;color:#3E63D8;line-height:1.05}
.res-hero-n span{display:block;font-size:10px;color:#8494B8;margin-top:1px}
#resList{display:grid;grid-template-columns:repeat(auto-fill,minmax(286px,1fr));gap:9px;align-content:start}
@media (max-width:420px){ #resList{grid-template-columns:1fr} }
.res-card{display:flex;align-items:center;gap:11px;background:#fff;border:1px solid #EDF1F7;border-radius:13px;
  padding:11px 12px;margin-bottom:0;cursor:pointer;transition:.14s}
.res-card:active{background:#F7FAFF;border-color:#D8E3F8}
.res-ic{width:40px;height:40px;flex:none;border-radius:11px;display:flex;align-items:center;justify-content:center;
  font-size:14px;font-weight:800}
.res-ic.v{background:#EAF0FF;color:#3E63D8}
.res-ic.q{background:#FFF3E2;color:#B2690A}
.res-tx{flex:1;min-width:0}
.res-tx b{display:block;font-size:13px;font-weight:700;color:#14161F;line-height:1.4;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.res-tx span{display:block;font-size:11px;color:#7C879B;margin-top:2px}
.res-tx em{display:block;font-size:10.5px;font-style:normal;color:#A2ABB9;margin-top:2px}
.res-go{flex:none;color:#C3CBD8;font-size:16px}
.res-empty{text-align:center;color:#9AA6B9;font-size:12px;padding:34px 12px;background:#F8FAFE;
  border:1px dashed #DFE6F1;border-radius:12px}
.res-play{background:linear-gradient(135deg,#1B2537,#2A3550);border-radius:14px;padding:22px 16px;
  text-align:center;color:#E8EEFA;margin-bottom:14px}
.res-play.quiz{background:linear-gradient(135deg,#2A2233,#3A2B44)}
.res-play-mark{width:46px;height:46px;border-radius:50%;background:rgba(255,255,255,.14);
  display:flex;align-items:center;justify-content:center;margin:0 auto 11px;font-size:17px;color:#fff}
.res-play b{display:block;font-size:13.5px;font-weight:700;color:#fff}
.res-play span{display:block;font-size:11px;color:#B9C6DE;line-height:1.75;margin-top:7px}
.res-play span b{display:inline;font-size:11px;color:#FFD79A}
.wd-kpi{display:flex;gap:8px;margin:0 0 11px;flex-wrap:wrap}
.wd-kpi span{font-size:10.5px;color:#6C7A90;background:#F3F6FB;border-radius:20px;padding:3px 9px}
.wd-kpi span b{color:#1B2A45}
.wd-item{background:#fff;border-color:#E1EDE6}
.wq.done.wd-item .wq-tx{color:#26313F}
.wq.done.wd-item .pill{opacity:1}
.wd-item .wq-head{align-items:center}
.wd-round{font-size:10px;color:#0F8A4E;background:#E9F7EF;border-radius:20px;padding:1px 7px;margin-left:2px}
.wd-when{font-size:10.5px;color:#93A0B5;white-space:nowrap}
.wd-empty{padding:46px 20px;text-align:center;color:#93A0B5;font-size:12px;line-height:1.8}
.wd-empty b{display:block;font-size:13px;color:#5B6878;margin-bottom:4px}

/* 同类题做完后的结算与出口 */
.sim-res{background:#fff;border:1px solid #E7ECF4;border-radius:14px;padding:14px 15px;margin:4px 0 10px}
.sr-h{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.sr-h b{font-size:14.5px;color:#1B2A45}
.sr-h span{font-size:12px;color:#2C5FD6;font-weight:600}
.sr-rows{display:flex;flex-direction:column;gap:4px;margin:9px 0 8px}
.sr-row{font-size:12px;display:flex;align-items:center;gap:5px}
.sr-row.ok{color:#0E8A69}
.sr-row.bad{color:#C74B36}
.sim-res p{font-size:11.5px;color:#7A879E;line-height:1.55;margin:0}
.sr-btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:11px}
.sr-btns button{flex:1;min-width:88px;border-radius:10px;padding:9px 8px;font-size:12px;font-family:inherit;cursor:pointer}
.sr-b1{border:0;background:#2C5FD6;color:#fff;font-weight:600}
.sr-b2{border:1px solid #D8E2F2;background:#fff;color:#2C5FD6;font-weight:600}
/* 顶部「全部 / 未订正」分段 */
.wrong-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
.wf-right{display:flex;align-items:center;gap:8px;flex:none}
.wf-seg{display:flex;background:#F1F5FB;border-radius:9px;padding:2px}
.wf-seg button{border:0;background:none;font-size:11px;color:#7A879E;
  padding:4px 9px;border-radius:7px;cursor:pointer;line-height:1.4;white-space:nowrap}
.wf-seg button b{font-weight:600;margin-left:2px}
.wf-seg button.on{background:#fff;color:#2C5FD6;box-shadow:0 1px 3px rgba(44,95,214,.14)}
.kp{font-size:11px;color:var(--ink-3);background:#F5F8FD;padding:3px 9px;border-radius:8px}
.ans-box{border-radius:var(--r-md);padding:13px 14px;margin-bottom:10px;font-size:13.5px}
.ans-bad{background:var(--coral-l);color:#B4412D}
.ans-ok{background:var(--teal-l);color:#0B7257}
.ans-box b{display:block;font-size:11px;font-weight:500;opacity:.75;margin-bottom:6px}

/* ===== 10. 答疑 ===== */
.chat-wrap{display:flex;flex-direction:column;gap:14px;padding-bottom:8px}
.msg{display:flex;gap:9px;max-width:min(88%,560px)}
.msg .avatar{width:30px;height:30px;border-radius:50%;flex:none;display:grid;place-items:center;background:var(--blue-l);color:var(--blue-d);font-size:11px}
.msg .bubble{background:#fff;border:1px solid var(--line);border-radius:14px;padding:11px 13px;font-size:13.5px;line-height:1.75}
.msg.me{margin-left:auto;flex-direction:row-reverse}
.msg.me .bubble{background:var(--blue);border-color:var(--blue);color:#fff}
.msg.me .avatar{background:#E7EDF8;color:var(--ink-2)}
.chat-input{
  display:flex;gap:8px;align-items:center;margin-top:14px;
  background:#fff;border:1px solid var(--line);border-radius:16px;padding:8px 8px 8px 14px;
}
.chat-input input{flex:1;border:0;outline:none;font-size:13.5px;background:transparent}
.chat-input button{width:36px;height:36px;border-radius:11px;background:var(--blue);color:#fff;display:grid;place-items:center;flex:none}

/* ===== 11. 我的 ===== */
.profile{display:flex;align-items:center;gap:14px;padding:6px 2px 20px}
.profile .avatar{width:62px;height:62px;border-radius:50%;background:linear-gradient(140deg,#5D8BFA,#8E7CFB);color:#fff;display:grid;place-items:center;font-size:20px}
.profile-tx b{font-size:18px;font-weight:500;display:block;margin-bottom:5px}
.profile-tx span{font-size:12px;color:var(--ink-3)}
.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:14px 8px;text-align:center}
.stat b{display:block;font-size:19px;font-weight:600;color:var(--blue-d)}
.stat span{font-size:11px;color:var(--ink-3)}
.menu{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}
.menu-item{display:flex;align-items:center;gap:12px;padding:15px 16px;border-bottom:1px solid #F3F6FB;font-size:14px;cursor:pointer}
.menu-item:last-child{border-bottom:0}
.menu-item:active{background:#FBFCFE}
.menu-item .ico{color:var(--ink-3)}
.menu-item span{flex:1}
.menu-item .link{flex:none;font-size:12.5px}
.menu-item .chev{flex:none;text-align:right}
/* 学习反馈（家长/学生看伴学师发来的反馈） */
.sbf-new{flex:none;background:#FF6B6B;color:#fff;font-size:10.5px;font-weight:700;border-radius:9px;
  padding:1px 7px;margin-right:6px}
.sbf-item{border:1px solid #EDF2FA;border-radius:14px;padding:13px 14px;margin-bottom:10px;background:#FBFCFE}
.sbf-item:last-child{margin-bottom:0}
.sbf-h{display:flex;align-items:center;gap:8px;margin-bottom:9px}
.sbf-h b{font-size:12.5px;font-weight:700;color:#14161F}
.sbf-h span{font-size:11px;color:#9AA7BB}
.sbf-st{color:#FFB020;font-size:11.5px;letter-spacing:1px}
.sbf-st i{font-style:normal;color:#DFE4EE}
.sbf-t{font-size:13px;line-height:1.95;color:#2C3E5C;white-space:pre-wrap;word-break:break-word}
.sbf-empty{padding:26px 0;text-align:center;font-size:12.5px;color:#9AA7BB;line-height:1.9}

/* ===== 家长端（小程序）· 学习反馈 ===== */
.ppf-hero{background:linear-gradient(150deg,#EEF3FF 0%,#F7FAFF 60%,#F3FBF7 100%);
  border-radius:18px;padding:16px;border:1px solid #E4EDFB;margin-bottom:14px}
.ppf-hero-t{display:flex;align-items:center;gap:11px}
.ppf-av{width:42px;height:42px;border-radius:13px;background:linear-gradient(135deg,#6D8DFB,#8B6CF0);
  color:#fff;font-size:16px;font-weight:800;display:grid;place-items:center;flex:none}
.ppf-hero-t b{display:block;font-size:15px;font-weight:800;color:#14161F}
.ppf-hero-t span{display:block;font-size:11.5px;color:#7A8699;margin-top:3px}
.ppf-hero-m{display:flex;gap:18px;margin-top:14px;padding-top:13px;border-top:1px dashed #DCE6F6}
.ppf-hero-m div{font-size:11px;color:#7A8699}
.ppf-hero-m b{display:block;font-size:15px;font-weight:800;color:#14161F;margin-bottom:2px}

.ppf-item{background:#fff;border:1px solid #EDF2FA;border-radius:16px;padding:14px;margin-bottom:11px;
  cursor:pointer;position:relative;transition:.14s}
.ppf-item:active{transform:scale(.995);background:#FCFDFF}
.ppf-h{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.ppf-h b{font-size:13.5px;font-weight:700;color:#14161F}
.ppf-h span{font-size:11px;color:#9AA7BB}
.ppf-h .st{margin-left:auto;color:#FFB020;font-size:11.5px;letter-spacing:1px}
.ppf-h .st i{font-style:normal;color:#DFE4EE}
.ppf-sum{font-size:12.5px;line-height:1.85;color:#5A6B85;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ppf-item.unread{background:#FDFEFF;border-color:#DCE7FA}
.ppf-item.unread::before{content:'';position:absolute;left:0;top:15px;bottom:15px;width:3px;
  border-radius:0 3px 3px 0;background:#FF6B6B}
.ppf-unread{display:flex;align-items:center;gap:6px;font-size:11px;color:#C07A05;background:#FDF4E3;
  border-radius:8px;padding:6px 10px;margin-bottom:11px}

.ppf-detail-h{display:flex;align-items:center;gap:11px;margin-bottom:14px}
.ppf-detail-h b{display:block;font-size:14px;font-weight:800}
.ppf-detail-h span{display:block;font-size:11px;color:#8A94A6;margin-top:2px}
.ppf-body{background:#fff;border:1px solid #EDF2FA;border-radius:16px;padding:15px 16px}
.ppf-body .ppf-txt{font-size:13.5px;line-height:2;color:#2C3E5C;white-space:pre-wrap;word-break:break-word}
.ppf-stars{margin-top:13px;padding-top:12px;border-top:1px dashed #EFF2F7;
  display:flex;align-items:center;gap:6px;font-size:11.5px;color:#8A94A6}
.ppf-stars b{color:#FFB020;font-size:14px;letter-spacing:1.5px}
.ppf-read{display:flex;align-items:center;gap:6px;font-size:11px;color:#0F8A4E;margin-top:11px}
.ppf-reply{margin-top:14px;background:#fff;border:1px solid #EDF2FA;border-radius:16px;padding:13px 14px}
.ppf-reply textarea{width:100%;min-height:66px;border:0;outline:none;font-size:13px;line-height:1.85;
  color:#2C3E5C;font-family:inherit;resize:none;background:none}
.ppf-reply .b{display:flex;align-items:center;gap:8px;margin-top:9px}
.ppf-reply .b span{font-size:11px;color:#B4BECC}
.ppf-reply .b button{margin-left:auto;border:0;border-radius:10px;background:#5B7CFA;color:#fff;
  font-size:12.5px;font-weight:700;padding:8px 16px;font-family:inherit}
.ppf-more{margin-top:14px;display:flex;gap:9px}
.ppf-more button{flex:1;height:42px;border-radius:12px;border:1px solid #E2E8F4;background:#fff;
  font-size:12.5px;font-weight:600;color:#3E52C4;font-family:inherit}

.chev{color:#C7D2E2;font-size:16px}

/* 学习记录 */
.heat-wrap{display:flex;gap:26px;align-items:flex-start;flex-wrap:wrap}
.heat{display:grid;grid-template-columns:repeat(7,36px);gap:7px}
.heat i{height:36px;border-radius:6px;background:#EDF2FA;display:block}
.heat i.l1{background:#CFE0FB}
.heat i.l2{background:#9CBEF7}
.heat i.l3{background:#5D8BFA}
.heat i.l4{background:#2C5FD6}
.heat-legend{display:flex;flex-direction:column;gap:10px;font-size:11.5px;color:var(--ink-3);padding-top:2px}
.heat-legend .row{display:flex;align-items:center;gap:6px}
.heat-legend i{width:14px;height:14px;border-radius:4px;display:block}
.heat-legend b{color:var(--ink);font-weight:500;font-size:17px;display:block;line-height:1.3}
.bars{display:flex;align-items:flex-end;gap:10px;height:110px;padding-top:6px}
body.layout-tablet .bars{max-width:560px}
.bars .col{flex:1;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px}
.bars .bar{width:100%;max-width:26px;border-radius:6px;background:#CFE0FB}
.bars .bar.hi{background:var(--blue)}
.bars span{font-size:10.5px;color:var(--ink-3)}
.rec{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px solid #F3F6FB}
.rec:last-child{border-bottom:0}
.rec .dot{width:8px;height:8px;border-radius:50%;background:var(--blue);flex:none}
.rec-tx{flex:1;min-width:0}
.rec-tx b{font-size:13px;font-weight:400;display:block;margin-bottom:3px}
.rec-tx span{font-size:11px;color:var(--ink-3)}

/* 登录 */
.login{display:flex;flex-direction:column;justify-content:center;flex:1;padding:20px 6px}
body.bare #views{display:flex;flex-direction:column}
body.bare .view.active{flex:1;display:flex;flex-direction:column}
.lg-row{display:flex;align-items:center;justify-content:space-between;margin:4px 2px 14px;font-size:12px;color:var(--ink-3)}
.lg-keep{display:flex;align-items:center;gap:6px;cursor:pointer}
.lg-cb{width:15px;height:15px;border-radius:5px;border:1.5px solid #CBD8EC;display:inline-block}
.lg-keep.on .lg-cb{background:var(--blue);border-color:var(--blue);position:relative}
.lg-keep.on .lg-cb::after{content:'';position:absolute;left:4px;top:1px;width:4px;height:8px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(42deg)}
.lg-forget{color:var(--blue-d);cursor:pointer}
.lg-admin{display:inline-block;margin-top:10px;color:var(--blue-d);font-size:12px;cursor:pointer}
.lg-ver{display:block;margin-top:10px;font-size:10px;color:#B4BECC}
.login{position:relative}
.lg-admin-chip{
  position:absolute;right:0;top:-6px;display:flex;align-items:center;gap:5px;
  font-size:11.5px;color:var(--blue-d);background:#EEF4FF;border:1px solid #D9E6FF;
  padding:5px 10px;border-radius:20px;
}
.lg-admin-chip:active{background:var(--blue-l)}
.brand{text-align:center;margin-bottom:34px}
.brand .logo{
  width:64px;height:64px;border-radius:20px;margin:0 auto 14px;
  background:linear-gradient(140deg,#4C82F7,#8A74FB);display:grid;place-items:center;color:#fff;
  box-shadow:0 12px 26px rgba(76,130,247,.32);
}
.brand h1{font-size:20px;margin:0 0 6px;font-weight:500}
.brand p{font-size:12.5px;color:var(--ink-3);margin:0}
.field{
  display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:14px;margin-bottom:12px;
}
.field .ico{color:var(--ink-3)}
.field input{border:0;outline:none;flex:1;font-size:14px;background:transparent}
.field .code{font-size:12.5px;color:var(--blue-d);flex:none}
.login-foot{text-align:center;margin-top:18px;font-size:12px;color:var(--ink-3)}

/* 积分胶囊 */
.pts-pill{
  display:flex;align-items:center;gap:5px;height:36px;padding:0 12px;border-radius:18px;
  background:#fff;border:1px solid var(--line);font-size:12.5px;color:#B4780E;font-weight:500;
}
.pts-pill .ico{width:15px;height:15px;color:#F5A524}
.pts-pill:active{background:var(--amber-l)}

/* 今日课表内的本周面板 */
.week{border-top:1px solid #F0F4FA;margin-top:12px;padding-top:13px}
.week-top{display:flex;align-items:center;gap:10px;margin-bottom:13px}
.week-top>span{font-size:11.5px;color:var(--ink-3);flex:none}
.week-top b{font-size:15px;font-weight:600;color:var(--blue-d);flex:none}
.week-top b span{font-size:11px;color:var(--ink-3);font-weight:400}
.week-bar{flex:1;height:7px;border-radius:4px;background:#EDF2FA;overflow:hidden;min-width:40px}
.week-bar i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#5D8BFA,#7A6BF7)}
.week-stats{display:grid;grid-template-columns:repeat(4,1fr)}
.ws{text-align:center;border-right:1px solid #F2F6FC}
.ws:last-child{border-right:0}
.ws b{display:block;font-size:17px;font-weight:600;color:var(--ink);line-height:1.25}
.ws b em{font-size:10.5px;font-style:normal;font-weight:400;color:var(--ink-3);margin-left:1px}
.ws span{font-size:10.5px;color:var(--ink-3)}
.week-unlock{
  display:flex;align-items:center;gap:6px;margin-top:13px;font-size:11.5px;color:#9A6608;
  background:var(--amber-l);padding:8px 10px;border-radius:10px;line-height:1.5;
}
.week-unlock .ico{width:14px;height:14px;flex:none;color:#D89412}
.week-unlock b{font-weight:500;color:#7A5200}

/* 积分商城 */
.points-hero{
  background:linear-gradient(120deg,#4C82F7,#8A74FB);border-radius:var(--r-lg);
  padding:20px;color:#fff;display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;
}
.points-hero span{font-size:12px;opacity:.86;display:block;margin-bottom:6px}
.points-hero b{font-size:32px;font-weight:600;line-height:1.1;display:block;letter-spacing:-.5px}
.points-hero small{font-size:11px;opacity:.82;display:block;margin-top:7px}
.ph-btn{background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.36);color:#fff;font-size:12px;padding:8px 14px;border-radius:12px;flex:none}
.task{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px solid #F4F7FC}
.task:last-child{border-bottom:0}
.task-ico{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;flex:none}
.task-ico .ico{width:17px;height:17px}
.task-tx{flex:1;min-width:0}
.task-tx b{font-size:13px;font-weight:500;display:block;margin-bottom:3px}
.task-tx span{font-size:11px;color:var(--ink-3)}
.goods-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
body.layout-tablet .goods-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.goods{background:#FBFCFE;border:1px solid #EDF2FA;border-radius:14px;padding:13px 12px;text-align:center}
.gi{width:46px;height:46px;border-radius:13px;margin:0 auto 9px;display:grid;place-items:center}
.gi .ico{width:23px;height:23px}
.goods b{font-size:12.5px;font-weight:500;display:block;margin-bottom:7px;line-height:1.45;height:36px;overflow:hidden}
.cost{display:flex;align-items:center;justify-content:center;gap:3px;font-size:13px;color:#B4780E;font-weight:500;margin-bottom:9px}
.cost .ico{width:13px;height:13px}
.goods .mini-btn{width:100%;padding:6px 0}


/* ===== 平板首页：一屏 Dashboard（不滚动） ===== */
body.layout-tablet #p-home{padding:14px 24px 14px}
body.layout-tablet .home{grid-template-columns:minmax(0,1fr) 196px;gap:20px;align-items:start}
body.layout-tablet .greet-row{margin-bottom:11px}
body.layout-tablet .greet h1{font-size:23px;margin-bottom:6px;line-height:1.3}
body.layout-tablet .greet p{font-size:12px;line-height:1.65}
body.layout-tablet .chip-tag{margin-bottom:7px;padding:3px 9px;font-size:10.5px}
body.layout-tablet .card{padding:13px 14px;margin-bottom:10px}
body.layout-tablet .block-head{margin-bottom:9px}
body.layout-tablet .block-head h2{font-size:14.5px}

/* 课表：左课表 右本周数据 */
body.layout-tablet .sched-split{display:grid;grid-template-columns:minmax(0,1.42fr) minmax(0,1fr);gap:16px}
body.layout-tablet .sched-list{gap:6px}
body.layout-tablet .sched{padding:7px 10px;gap:9px;border-radius:11px}
body.layout-tablet .sched-time{width:48px;padding-right:8px}
body.layout-tablet .sched-time b{font-size:13px}
body.layout-tablet .sched-time span{font-size:9.5px}
body.layout-tablet .sched-t{font-size:12.5px;margin-bottom:1px}
body.layout-tablet .sched-s{font-size:10px}
body.layout-tablet .sched .mini-btn{padding:5px 10px;font-size:11px;border-radius:9px}
body.layout-tablet .sched-flag{font-size:10.5px}

body.layout-tablet .week{
  border-top:0;border-left:1px solid #F0F4FA;margin-top:0;padding-top:0;padding-left:16px;
  display:flex;flex-direction:column;justify-content:space-between;
}
body.layout-tablet .week-top{margin-bottom:8px;gap:8px}
body.layout-tablet .week-top b{font-size:13.5px}
body.layout-tablet .week-stats{grid-template-columns:repeat(2,1fr);gap:9px 0}
body.layout-tablet .ws:nth-child(2){border-right:0}
body.layout-tablet .ws b{font-size:15px}
body.layout-tablet .ws span{font-size:9.5px}
body.layout-tablet .week-unlock{margin-top:8px;padding:6px 8px;font-size:10px;gap:5px;line-height:1.45}

/* 体系课卡片变薄 */
body.layout-tablet .course-grid{gap:8px}
body.layout-tablet .course{padding:7px 9px;gap:9px;border-radius:11px}
body.layout-tablet .thumb{width:42px;height:42px;border-radius:10px}
body.layout-tablet .thumb .ico{width:20px;height:20px}
body.layout-tablet .course-t{font-size:12.5px;margin-bottom:1px}
body.layout-tablet .course-s{font-size:10px}
body.layout-tablet .mini-btn{padding:5px 10px;font-size:11px;border-radius:9px}

/* 提分利器变薄 */
body.layout-tablet .tool{padding:7px 8px;gap:8px;border-radius:11px}
body.layout-tablet .tool-ico{width:26px;height:26px;border-radius:8px}
body.layout-tablet .tool-ico .ico{width:15px;height:15px}
body.layout-tablet .tool-tx b{font-size:11px}
body.layout-tablet .tool-tx i{font-size:9.5px}

/* 右栏收紧 */
body.layout-tablet .stat-mini{padding:9px 11px;margin-bottom:8px;border-radius:11px}
body.layout-tablet .stat-mini b{font-size:17px}
body.layout-tablet .stat-mini span{font-size:10.5px}
body.layout-tablet .coach{padding:10px 11px;margin-bottom:8px;border-radius:11px}
body.layout-tablet .coach p{font-size:10.5px;line-height:1.7;margin-bottom:8px}
body.layout-tablet .coach-head b{font-size:11.5px}
body.layout-tablet .home-art{margin-top:2px}


/* 解锁提醒在平板改为通栏，避免右侧挤压断行 */
body.layout-tablet .sched-split{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);align-items:start}
body.layout-tablet .week-unlock{grid-column:1 / -1;margin-top:2px;padding:7px 10px;font-size:10.5px;justify-content:center}
body.layout-tablet .week{justify-content:flex-start;gap:10px}
body.layout-tablet .tool-tx b{font-size:11.5px}
body.layout-tablet .tool-tx i{font-size:10px}
body.layout-tablet .sched-s{font-size:10.5px}
body.layout-tablet .sched{padding:8px 10px}
body.layout-tablet .mini-btn{padding:6px 11px;font-size:11.5px}


/* 平板：本周进度条独占一行，避免被文字挤成一小段 */
body.layout-tablet .week-top{flex-wrap:wrap;row-gap:6px;margin-bottom:10px}
body.layout-tablet .week-bar{flex-basis:100%;margin-top:2px}
body.layout-tablet .week-stats{gap:10px 0}

/* 上课五步流程 */
.flow{
  display:flex;align-items:center;background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:11px 14px;margin-bottom:14px;
}
.flow-item{display:flex;align-items:center;gap:6px;flex:none;cursor:pointer;padding:2px 0}
.flow-item b{
  width:22px;height:22px;border-radius:50%;background:#EDF2FA;color:var(--ink-3);
  font-size:11px;font-weight:400;display:grid;place-items:center;flex:none;
}
.flow-item span{font-size:11.5px;color:var(--ink-3);white-space:nowrap}
.flow-item.done b{background:#E4F8F1;color:#0E8A69}
.flow-item.done span{color:var(--ink-2)}
.flow-item.active b{background:var(--blue);color:#fff;font-weight:500}
.flow-item.active span{color:var(--blue-d);font-weight:500}
.flow-line{flex:1;height:1px;background:#E7EEF9;margin:0 7px;min-width:8px}

.pane{display:none}
.pane.on{display:block;animation:fade .2s ease}

.pane-title{display:flex;align-items:baseline;gap:9px;margin:0 0 12px 2px}
.pane-title b{font-size:15px;font-weight:500}
.pane-title span{font-size:11.5px;color:var(--ink-3)}

.pane-foot{display:flex;align-items:center;gap:12px;margin-top:14px}
/* ===== 随堂练习：纸笔作答 → 拍照 → 等审批 → 填答案 → 判分 → 讲解 ===== */
.qz-stage{animation:qzIn .26s ease}
@keyframes qzIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.qz-tip{display:flex;gap:9px;align-items:flex-start;padding:11px 13px;border-radius:13px;
  background:#FFF8E6;color:#8A5D00;font-size:12px;line-height:1.7;margin-bottom:12px}
.qz-tip svg{width:15px;height:15px;flex:none;margin-top:2px}
.qz-tip b{font-weight:700}
.qz-tip.blue{background:#EFF5FF;color:#2C5FD6}
.qz-tip.ok{background:#EBFAF1;color:#0F8A4E}
.qz-q{background:#fff;border-radius:15px;padding:14px 15px;box-shadow:0 6px 16px rgba(22,26,40,.05);margin-bottom:10px}
.qz-q .qz-no{display:inline-flex;align-items:center;justify-content:center;width:21px;height:21px;border-radius:7px;
  background:#EEF2FF;color:#5B7CFA;font-size:11px;font-weight:800;margin-right:7px;vertical-align:2px}
.qz-q .qz-tx{font-size:13.5px;line-height:1.9;color:#14161F}
.qz-q .qz-kp{margin-top:9px;font-size:11px;color:#8A94A6}
.qz-paper-tip{display:flex;align-items:center;gap:8px;margin-top:10px;padding:9px 11px;border-radius:10px;
  background:#F5F8FF;color:#3E52C4;font-size:11.5px;font-weight:600;line-height:1.5}
.qz-paper-tip svg{width:14px;height:14px;flex:none}

/* 拍照上传 */
.qz-up-tip{font-size:12px;color:#8A94A6;line-height:1.7;margin:10px 0 0}
.pane-foot.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pane-foot.two .pane-hint{grid-column:1 / -1;margin-bottom:2px}
.pane-foot.two .btn-primary{margin-left:0;width:100%}
.qz-shots{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.qz-shot{width:86px;height:104px;border-radius:12px;border:1.5px dashed #D5DBE6;background:#FAFBFE;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  font-size:11px;color:#93A0B4;cursor:pointer;padding:0;font-family:inherit}
.qz-shot.done{border:1.5px solid #5B7CFA;background:#fff;color:#3E52C4;justify-content:flex-start;
  padding:9px 5px 0;font-size:10.5px;font-weight:700;
  background-image:repeating-linear-gradient(#fff,#fff 10px,#EEF1F7 10px,#EEF1F7 11px)}
.qz-shot.done i{font-style:normal;font-size:9px;color:#8A94A6;font-weight:600;margin-top:2px}

/* 等待审批 */
.qz-wait{display:flex;flex-direction:column;align-items:center;text-align:center;padding:24px 10px 8px}
.qz-ring{width:58px;height:58px;border-radius:50%;border:4px solid #E9EEFB;border-top-color:#5B7CFA;
  animation:qzSpin 1s linear infinite;margin-bottom:16px}
@keyframes qzSpin{to{transform:rotate(360deg)}}
.qz-wait b{font-size:15px;font-weight:700;color:#14161F}
.qz-wait p{font-size:12px;color:#8A94A6;line-height:1.8;margin:8px 0 0}
.qz-wait .who{display:inline-flex;align-items:center;gap:6px;margin-top:12px;padding:7px 12px;border-radius:10px;
  background:#F5F8FF;color:#3E52C4;font-size:11.5px;font-weight:600}

/* 判分结果 */
.qz-score{display:flex;align-items:center;gap:16px;background:#fff;border-radius:18px;padding:16px 18px;
  box-shadow:0 6px 18px rgba(22,26,40,.06);margin-bottom:12px}
.qz-score .ring{position:relative;width:74px;height:74px;flex:none}
.qz-score .ring svg{transform:rotate(-90deg)}
.qz-score .ring em{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:19px;font-weight:800;font-style:normal;color:#14161F}
.qz-score .tx b{display:block;font-size:14.5px;font-weight:800;color:#14161F}
.qz-score .tx span{display:block;font-size:11.5px;color:#8A94A6;margin-top:5px;line-height:1.6}
.qz-item{display:flex;align-items:center;gap:9px;background:#fff;border-radius:13px;padding:12px 14px;
  margin-bottom:8px;box-shadow:0 4px 12px rgba(22,26,40,.04)}
.qz-item .n{width:21px;height:21px;border-radius:7px;font-size:11px;font-weight:800;display:flex;
  align-items:center;justify-content:center;flex:none}
.qz-item.ok .n{background:#E9F9F1;color:#0F8A4E}
.qz-item.bad .n{background:#FDECEC;color:#D93B3B}
.qz-item .t{flex:1;min-width:0;font-size:12.5px;color:#3A4459;line-height:1.6}
.qz-item .t span{display:block;font-size:11px;color:#9AA4B6;margin-top:2px}
.qz-item .go{flex:none;font-size:11.5px;font-weight:700;color:#5B7CFA;cursor:pointer;
  padding:5px 9px;border-radius:8px;background:#F2F6FF}

/* ===================== 师生消息（管理端两栏对话） ===================== */
.tabbar .tab{position:relative}
.tabbar .tab .msgdot{position:absolute;top:5px;left:50%;transform:translateX(6px);
  min-width:15px;height:15px;border-radius:8px;background:#E8453C;color:#fff;font-size:9.5px;
  font-weight:800;display:grid;place-items:center;padding:0 4px;border:1.5px solid #fff;
  font-style:normal;line-height:1;pointer-events:none}
.ad-ibbar{display:flex;align-items:center;gap:8px;margin:0 0 14px;padding:11px 14px;border-radius:12px;
  background:#FFF7E8;color:#8A5D00;font-size:12.5px;font-weight:600;cursor:pointer}
.ad-ibbar b{font-weight:800;color:#D93B3B}
.ad-ibbar span{margin-left:auto;color:#A9660A;font-weight:700}
.ib{display:grid;grid-template-columns:284px 1fr;gap:14px;min-height:540px}
.ib-list{background:#fff;border-radius:16px;padding:8px;box-shadow:var(--ad-sh-sm);overflow:auto;max-height:620px}
.ib-search{display:flex;align-items:center;gap:7px;padding:7px 9px;margin:2px 2px 8px;border-radius:10px;background:#F6F8FC}
.ib-search input{flex:1;border:0;background:transparent;font-size:12.5px;outline:none;font-family:inherit;color:var(--ad-ink)}
.ib-item{display:flex;gap:10px;padding:10px;border-radius:11px;cursor:pointer;align-items:flex-start}
.ib-item:hover{background:#FAFBFE}
.ib-item.on{background:#F2F6FF}
.ib-av{width:34px;height:34px;border-radius:50%;background:#EEF2FF;color:#3E52C4;display:grid;place-items:center;
  font-weight:800;font-size:13px;flex:none}
.ib-mid{flex:1;min-width:0}
.ib-name{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--ad-ink)}
.ib-name em{font-style:normal;font-size:10px;font-weight:700;color:#8A94A6;background:#F1F3F7;
  border-radius:5px;padding:1px 5px}
.ib-last{font-size:11.5px;color:#8A94A6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px}
.ib-side{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:none}
.ib-time{font-size:10.5px;color:#B4BECC}
.ib-badge{min-width:17px;height:17px;border-radius:9px;background:#E8453C;color:#fff;font-size:10px;
  font-weight:800;display:grid;place-items:center;padding:0 4px}
.ib-chat{background:#fff;border-radius:16px;box-shadow:var(--ad-sh-sm);display:flex;flex-direction:column;
  overflow:hidden;min-height:540px}
.ib-chat-h{display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid #F1F3F7}
.ib-chat-h b{font-size:14px;font-weight:800;color:var(--ad-ink)}
.ib-chat-h .sub{font-size:11.5px;color:#8A94A6}
.ib-chat-h .r{margin-left:auto;display:flex;gap:10px;align-items:center}
.ib-body{flex:1;padding:16px;overflow:auto;max-height:430px;background:#FAFBFE}
.ib-bub{max-width:74%;margin-bottom:12px}
.ib-bub .t{font-size:13px;line-height:1.75;padding:10px 13px;border-radius:14px;background:#fff;
  color:var(--ad-ink2);box-shadow:0 2px 8px rgba(22,26,40,.05)}
.ib-bub.me{margin-left:auto}
.ib-bub.me .t{background:#5B7CFA;color:#fff}
.ib-bub .tm{font-size:10px;color:#B4BECC;margin-top:4px}
.ib-bub.me .tm{text-align:right}
/* 系统消息（词书背完这类自动通知）：居中卡片 + 一句可点的下一步 */
.ib-sys{display:flex;justify-content:center;margin:4px 0 14px}
.ib-sys .card{max-width:82%;background:#FFFDF5;border:1px solid #F3E4C2;border-radius:12px;
  padding:11px 13px;text-align:left}
.ib-sys span{font-size:12px;color:#7A6322;line-height:1.8;display:block}
.ib-sys em{display:block;font-style:normal;font-size:10px;color:#B2A57D;margin-top:5px}
.ib-sys button{margin-top:8px;border:1px solid #E4CE96;background:#fff;color:#8A6A1F;
  border-radius:7px;font-size:11px;padding:4px 9px;cursor:pointer}
.ib-sys button:hover{background:#FDF6E4}
.ib-in{display:flex;gap:10px;padding:12px 16px;border-top:1px solid #F1F3F7}
.ib-in input{flex:1;height:40px;border:1.5px solid var(--ad-line);border-radius:11px;padding:0 12px;
  font-size:13px;font-family:inherit;outline:none;color:var(--ad-ink)}
.ib-in input:focus{border-color:#AFC0FA;box-shadow:0 0 0 3px rgba(91,124,250,.1)}
.ib-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;
  min-height:380px;color:#9AA4B6;font-size:12.5px;line-height:1.9;text-align:center}
/* 同类错题：选题 + 每道错题配「同结构 / 变体」两题 */
.sim-pick{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.sim-chip{padding:9px 12px;border-radius:11px;border:1.5px solid #E7EAF0;background:#fff;
  font-size:12px;color:#5A6B85;cursor:pointer;text-align:left;line-height:1.45;font-family:inherit;max-width:100%}
.sim-chip b{display:block;font-weight:700;font-size:12px;color:#3A4459}
.sim-chip em{display:block;font-style:normal;font-size:10.5px;color:#9AA4B6;margin-top:2px}
.sim-chip.on{border-color:#5B7CFA;background:#F5F8FF}
.sim-chip.on b{color:#3E52C4}
.sim-item{background:#fff;border-radius:15px;padding:14px 15px;box-shadow:0 6px 16px rgba(22,26,40,.05);margin-bottom:10px}
.sim-tag{display:inline-block;font-size:10.5px;font-weight:800;padding:3px 8px;border-radius:6px;
  background:#EEF2FF;color:#3E52C4;margin-bottom:9px;letter-spacing:.2px}
.sim-tag.var{background:#FFF4E5;color:#A9660A}
.sim-q{font-size:13.5px;line-height:1.9;color:#14161F}
.sim-fb{margin-top:10px;padding:10px 12px;border-radius:11px;font-size:12px;line-height:1.75}
.sim-fb.ok{background:#EBFAF1;color:#0F7A46}
.sim-fb.bad{background:#FDECEC;color:#B32B2B}
.sim-fb b{font-weight:800}
.sim-empty{background:#fff;border-radius:16px;padding:24px 16px;text-align:center;
  box-shadow:0 6px 16px rgba(22,26,40,.05);color:#5A6B85;font-size:13px;line-height:1.9}
/* 讲解视频 */
.qz-video{position:relative;border-radius:16px;overflow:hidden;background:#0E1424;aspect-ratio:16/9;
  display:flex;align-items:center;justify-content:center}
.qz-video .vt{position:absolute;left:14px;top:12px;font-size:11.5px;color:rgba(255,255,255,.75);z-index:2}
.qz-video .vx{position:absolute;right:12px;top:10px;color:rgba(255,255,255,.6);font-size:17px;z-index:3;cursor:pointer}
.qz-video .vplay{width:54px;height:54px;border-radius:50%;background:rgba(255,255,255,.92);color:#0E1424;
  display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:2}
.qz-video .vsub{position:absolute;left:12px;right:12px;bottom:44px;text-align:center;font-size:11.5px;
  color:#fff;line-height:1.7;background:rgba(0,0,0,.42);border-radius:8px;padding:6px 9px;z-index:2}
.qz-video .vbar{position:absolute;left:0;right:0;bottom:0;height:34px;display:flex;align-items:center;
  gap:8px;padding:0 12px;background:linear-gradient(transparent,rgba(0,0,0,.55));z-index:2}
.qz-video .vbar .track{flex:1;height:3px;border-radius:2px;background:rgba(255,255,255,.25)}
.qz-video .vbar .track i{display:block;height:100%;border-radius:2px;background:#7FA2FF;width:0}
.qz-video .vbar span{font-size:10px;color:rgba(255,255,255,.8);font-variant-numeric:tabular-nums}

.pane-foot .btn-primary{margin-left:auto}
.pane-hint{font-size:11.5px;color:var(--ink-3);line-height:1.6}

.pv-goal{font-size:13px;line-height:1.8;color:var(--ink-2);margin:0 0 14px}
.pv-goal b{color:var(--ink);font-weight:500}
.pv-point{
  display:flex;gap:10px;padding:11px 13px;border:1px solid var(--line);border-radius:12px;
  margin-bottom:9px;background:#FBFCFE;cursor:pointer;transition:.16s;
}
.pv-point .n{
  width:20px;height:20px;border-radius:50%;background:var(--blue-l);color:var(--blue-d);
  font-size:11px;display:grid;place-items:center;flex:none;margin-top:1px;
}
.pv-point .t{font-size:13px;font-weight:500;margin-bottom:3px;line-height:1.5}
.pv-point .s{font-size:11.5px;color:var(--ink-3);line-height:1.6}
.pv-point.mark{background:#FFF9EE;border-color:#F6DCAE}
.pv-point.mark .n{background:#FDE9C4;color:#B4780E}
.pv-need{
  display:flex;gap:8px;align-items:center;margin-top:12px;padding:10px 12px;
  background:#F7FAFF;border-radius:11px;font-size:11.5px;color:var(--ink-2);
}
.pv-need .ico{width:15px;height:15px;color:var(--blue);flex:none}

.rec-card{
  display:flex;align-items:center;gap:15px;background:#fff;border:1px solid var(--line);
  border-radius:16px;padding:16px 18px;margin-bottom:14px;
}
.rec-btn{
  width:56px;height:56px;border-radius:50%;background:var(--blue);color:#fff;
  display:grid;place-items:center;flex:none;box-shadow:0 8px 18px rgba(62,123,246,.3);
}
.rec-card.recording .rec-btn{background:var(--bad);animation:recPulse 1.3s infinite}
@keyframes recPulse{
  0%,100%{box-shadow:0 0 0 0 rgba(244,112,90,.38)}
  50%{box-shadow:0 0 0 13px rgba(244,112,90,0)}
}
.rec-tx b{display:block;font-size:14px;font-weight:500;margin-bottom:4px}
.rec-tx span{font-size:11.5px;color:var(--ink-3);line-height:1.6}

.talk-result{display:none}
.talk-result.on{display:block;animation:fade .25s ease}
.talk-line{
  display:flex;gap:8px;align-items:flex-start;font-size:12.5px;line-height:1.7;
  padding:9px 0;border-bottom:1px solid #F4F7FC;
}
.talk-line:last-of-type{border-bottom:0}
.talk-line .ico{width:15px;height:15px;flex:none;margin-top:3px}
.talk-line.ok .ico{color:var(--ok)}
.talk-line.miss{color:#8A5B06}
.talk-line.miss .ico{color:var(--warn)}
.talk-tip{
  font-size:12px;color:var(--ink-2);margin:10px 0 0;line-height:1.7;
  background:#F7FAFF;padding:9px 11px;border-radius:10px;
}

body.layout-phone .pane-foot{flex-direction:column-reverse;align-items:stretch;gap:8px}
body.layout-phone .pane-foot .btn-primary{margin-left:0;width:100%}
body.layout-phone .pane-hint{text-align:center}
body.layout-phone .flow{padding:10px 12px}
body.layout-phone .flow-item{gap:5px}
body.layout-phone .flow-item span{font-size:10.5px}
body.layout-phone .flow-line{margin:0 4px}

.goal-list{display:flex;flex-direction:column;gap:9px}
.goal-list>div{display:flex;gap:8px;align-items:flex-start;font-size:12.5px;line-height:1.7;color:var(--ink-2)}
.goal-list .ico{width:15px;height:15px;color:var(--ok);flex:none;margin-top:3px}
.pv-meta{
  display:flex;gap:16px;align-items:center;margin-top:13px;padding-top:12px;
  border-top:1px solid #F2F6FC;font-size:11.5px;color:var(--ink-3);
}
.pv-meta span{display:flex;align-items:center;gap:5px}
.pv-meta .ico{width:14px;height:14px}

/* 课堂小结 */
.sum-hero{
  display:flex;align-items:center;gap:14px;padding:18px 20px;border-radius:var(--r-lg);
  background:linear-gradient(120deg,#3E7BF6,#6C6BF7);color:#fff;margin-bottom:14px;
}
.sum-check{
  width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.2);
  display:grid;place-items:center;flex:none;
}
.sum-check .ico{width:24px;height:24px}
.sum-hero-tx{flex:1;min-width:0}
.sum-hero-tx h1{font-size:19px;font-weight:500;margin:0 0 5px}
.sum-hero-tx p{font-size:12px;opacity:.88;margin:0}
.sum-reward{text-align:right;flex:none}
.sum-reward b{display:block;font-size:22px;font-weight:600;line-height:1.1}
.sum-reward span{font-size:10.5px;opacity:.85}

.sum-grid{display:grid;grid-template-columns:1fr;gap:0}
body.layout-tablet .sum-grid{grid-template-columns:1fr 1fr;gap:14px}
body.layout-tablet .sum-grid .card{margin-bottom:14px}
.sum-rate{display:flex;align-items:center;gap:18px}
.sum-donut{width:92px;height:92px;flex:none}
.sum-split{flex:1;min-width:0}
.sum-split .row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;font-size:12px;color:var(--ink-2)}
.sum-split .row b{font-weight:500;color:var(--ink)}
.sum-split .row .bar{flex:1;height:5px;border-radius:3px;background:#EDF2FA;margin:0 9px;overflow:hidden}
.sum-split .row .bar i{display:block;height:100%;border-radius:3px;background:var(--blue)}

.talk-row{display:flex;gap:8px;align-items:flex-start;font-size:12px;line-height:1.7;padding:7px 0;color:var(--ink-2)}
.talk-row .ico{width:14px;height:14px;flex:none;margin-top:3px}
.talk-row.ok .ico{color:var(--ok)}
.talk-row.miss .ico{color:var(--warn)}
.talk-row.miss{color:#8A5B06}
.talk-meta{display:flex;gap:14px;margin-top:10px;padding-top:9px;border-top:1px solid #F2F6FC;font-size:11px;color:var(--ink-3)}
.talk-empty{font-size:12.5px;color:var(--ink-3);line-height:1.8}

.sum-note{
  font-size:12.5px;line-height:1.9;color:var(--ink-2);background:#FBFCFE;
  border:1px solid #F0F4FA;border-radius:11px;padding:12px 14px;white-space:pre-wrap;
  max-height:120px;overflow:auto;
}
.sum-wrong{display:flex;gap:9px;align-items:center;padding:9px 0;border-bottom:1px solid #F4F7FC;font-size:12.5px;color:var(--ink-2)}
.sum-wrong:last-child{border-bottom:0}
.sum-wrong .dot{width:6px;height:6px;border-radius:50%;background:var(--bad);flex:none}
.sum-wrong span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body.layout-tablet #p-summary{padding-bottom:16px}

/* 视频全屏 */
.vbar .ops .vfs{display:flex;align-items:center}
.vbar .ops .vfs .ico{width:17px;height:17px;color:#fff}
.flow .flow-item{user-select:none}

#app.vf{grid-template-columns:minmax(0,1fr)!important;grid-template-rows:minmax(0,1fr)!important;grid-template-areas:"main"!important}
#app.vf #topbar, #app.vf .rail, #app.vf .tabbar{display:none!important}
#app.vf #views{grid-area:main;background:#0B1220;border-radius:0}
#app.vf #p-player{padding:0}
#app.vf #p-player .flow{display:none}
#app.vf #p-player .pane{display:none!important}
#app.vf #p-player .pane[data-step="2"]{display:block!important;height:100%}
#app.vf .player{display:block;height:100%;gap:0}
#app.vf .player>div{height:100%}
#app.vf .video{position:absolute;inset:0;width:100%;height:100%;aspect-ratio:auto;border-radius:0}
#app.vf .panel{display:none}
#app.vf .pane-foot{display:none}
#app.vf .video .play-btn{width:78px;height:78px}

/* 侧栏 AI（不打断上课） */
.mini-chat{display:flex;flex-direction:column;gap:10px;max-height:262px;overflow:auto;padding-right:2px}
.mc-msg{display:flex;gap:7px;max-width:100%}
.mc-av{
  width:22px;height:22px;border-radius:50%;background:var(--blue-l);color:var(--blue-d);
  font-size:10px;display:grid;place-items:center;flex:none;
}
.mc-b{
  background:#F7FAFF;border:1px solid #EDF2FA;border-radius:11px;padding:8px 10px;
  font-size:12px;line-height:1.75;color:var(--ink-2);
}
.mc-msg.me{flex-direction:row-reverse}
.mc-msg.me .mc-b{background:var(--blue);border-color:var(--blue);color:#fff}
.mc-msg.me .mc-av{background:#E7EDF8;color:var(--ink-2)}
.mc-quick{display:flex;flex-wrap:wrap;gap:6px;margin:11px 0 9px}
.mc-quick button{
  font-size:11px;padding:5px 10px;border-radius:14px;background:#F2F6FD;
  color:var(--blue-d);border:1px solid #E1EAF9;
}
.mc-input{
  display:flex;gap:7px;align-items:center;background:#fff;border:1px solid var(--line);
  border-radius:12px;padding:5px 5px 5px 11px;
}
.mc-input input{flex:1;border:0;outline:none;font-size:12px;background:transparent;min-width:0}
.mc-input button{width:28px;height:28px;border-radius:9px;background:var(--blue);color:#fff;display:grid;place-items:center;flex:none}
.mc-input button .ico{width:14px;height:14px}

.recent{
  display:flex;align-items:center;gap:12px;padding:12px 14px;background:#fff;
  border:1px solid var(--line);border-radius:15px;margin-bottom:14px;cursor:pointer;
}
.recent .thumb{width:46px;height:46px;border-radius:12px;font-size:16px;font-weight:500}
.recent-tx{flex:1;min-width:0}
.recent-tx b{font-size:13.5px;font-weight:500;display:block;margin-bottom:3px}
.recent-tx span{font-size:11.5px;color:var(--ink-3)}
body.layout-phone #recentBox{display:none}

/* 我的伴学师（真人） */
.coach-card{
  display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--line);
  border-radius:var(--r-lg);padding:18px;margin-bottom:12px;
}
.coach-face{
  width:56px;height:56px;border-radius:50%;flex:none;display:grid;place-items:center;
  background:linear-gradient(140deg,#5D8BFA,#8E7CFB);color:#fff;font-size:20px;
}
.coach-info{flex:1;min-width:0}
.coach-name{display:flex;align-items:center;gap:9px;margin-bottom:5px}
.coach-name b{font-size:17px;font-weight:500}
.coach-on{display:flex;align-items:center;gap:4px;font-size:10.5px;color:var(--ok);background:#EAF8F3;padding:2px 8px;border-radius:9px}
.coach-on i{width:5px;height:5px;border-radius:50%;background:var(--ok);display:block}
.coach-info p{font-size:12.5px;color:var(--ink-2);margin:0 0 5px}
.coach-resp{font-size:11px;color:var(--ink-3)}

.coach-acts{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-bottom:14px}
.coach-acts button{
  display:flex;align-items:center;justify-content:center;gap:6px;padding:12px 6px;
  background:#fff;border:1px solid var(--line);border-radius:13px;font-size:12.5px;color:var(--ink-2);
}
.coach-acts button:active{background:var(--blue-l);border-color:#D6E4FF;color:var(--blue-d)}
.coach-acts .ico{width:16px;height:16px;color:var(--blue)}

.msg-area{
  width:100%;min-height:88px;border:1px solid var(--line);border-radius:12px;padding:11px 13px;
  font-size:13px;line-height:1.8;resize:none;outline:none;background:#FBFCFE;color:var(--ink-2);
}
.msg-area:focus{border-color:#BFD4F6;background:#fff}

.msg-item{display:flex;gap:9px;padding:9px 0;border-bottom:1px solid #F4F7FC}
.msg-item:last-child{border-bottom:0}
.msg-item.me{flex-direction:row-reverse}
.msg-av{
  width:26px;height:26px;border-radius:50%;flex:none;display:grid;place-items:center;
  font-size:10.5px;background:#E7EDF8;color:var(--ink-2);
}
.msg-item:not(.me) .msg-av{background:linear-gradient(140deg,#5D8BFA,#8E7CFB);color:#fff}
.msg-bd{max-width:78%}
.msg-bd .b{
  background:#F7FAFF;border:1px solid #EDF2FA;border-radius:12px;padding:9px 11px;
  font-size:12.5px;line-height:1.75;color:var(--ink-2);
}
.msg-item.me .msg-bd .b{background:var(--blue);border-color:var(--blue);color:#fff}
.msg-bd .t{font-size:10px;color:var(--ink-3);margin-top:4px}
.msg-item.me .msg-bd .t{text-align:right}
/* 系统消息：词书背完这类自动通知，居中小卡，不冒充谁说的话 */
.msg-sys{padding:9px 0;text-align:center}
.msg-sys span{display:inline-block;max-width:88%;text-align:left;background:#F4F7FC;
  border:1px dashed #D8E2F2;border-radius:10px;padding:9px 11px;font-size:11px;
  color:#5A6B8C;line-height:1.75}
.msg-sys em{display:block;font-style:normal;font-size:10px;color:var(--ink-3);margin-top:4px}

.coach-note{
  font-size:11px;color:var(--ink-3);line-height:1.8;text-align:center;margin:6px 10px 0;
}

.rd-tip-b{flex:1;min-width:0;line-height:1.75}
.rd-tip-s{display:block;margin-top:2px;color:#8A94A6;font-size:10.5px}

/* ===== 错题订正三步：重做 → 讲解 → 同类题 ===== */
.red-steps{display:flex;align-items:center;gap:0;margin:-2px 0 12px}
.red-step{display:flex;align-items:center;gap:5px;flex:none}
.red-step i{width:19px;height:19px;border-radius:50%;background:#EDF2FA;color:#93A1B5;
  font-size:10px;font-weight:700;font-style:normal;display:flex;align-items:center;
  justify-content:center;flex:none}
.red-step span{font-size:11px;color:#93A1B5;white-space:nowrap}
.red-step em{display:block;width:22px;height:1px;background:#E4EAF3;margin:0 7px;flex:none}
.red-step.on i{background:#2E6BE6;color:#fff}
.red-step.on span{color:#1B2A45;font-weight:700}
.red-step.done i{background:#E8F7EF;color:#0F8A4E}
.red-step.done span{color:#0F8A4E}

.red-card{padding:16px 15px}
.red-h{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.red-badge{font-size:10.5px;font-weight:700;color:#2E5AA8;background:#EDF3FF;
  border-radius:6px;padding:2px 8px}
.red-src{margin-left:auto;font-size:10.5px;color:#93A1B5}
.red-q{font-size:14.5px;line-height:1.85;color:#1B2A45;font-weight:600;
  padding:12px 13px;background:#F7FAFF;border-radius:10px;border-left:3px solid #CFE0FA}
.red-tip{font-size:11px;color:#93A1B5;margin:10px 0 8px}
.red-opts{display:flex;flex-direction:column;gap:8px}
.red-opt{display:flex;align-items:flex-start;gap:9px;padding:11px 12px;border:1.5px solid #E4EAF3;
  border-radius:11px;background:#fff;cursor:pointer;transition:border-color .15s,background .15s}
.red-opt b{width:20px;height:20px;flex:none;border-radius:50%;background:#F1F5FB;color:#7A879E;
  font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}
.red-opt span{font-size:13px;line-height:1.7;color:#26313F;flex:1}
.red-opt.sel{border-color:#3E7BF6;background:#F4F8FF}
.red-opt.sel b{background:#3E7BF6;color:#fff}
.red-opt:active{background:#F7FAFF}

.red-exp{padding:16px 15px}
/* 拆成三张卡后，第二张卡的第一块不该再有分隔线 */
.red-exp .red-sec:first-child{margin-top:0;padding-top:0;border-top:0}
.red-ctas{display:flex;gap:9px;margin-top:14px}
.red-ctas button{flex:1;height:42px;border-radius:11px;font-size:13px;font-weight:700}
.red-res{display:flex;flex-direction:column;gap:4px;font-size:15px;font-weight:800;
  padding:12px 13px;border-radius:11px;margin-bottom:12px}
.red-res span{font-size:11.5px;font-weight:400;line-height:1.6}
.red-res.ok{background:#EAF8F0;color:#0F8A4E}
.red-res.ok span{color:#3E7A5C}
.red-res.bad{background:#FDF0EF;color:#C0392B}
.red-res.bad span{color:#A0635C}
.red-ans{display:flex;align-items:baseline;gap:8px;font-size:13px;margin-bottom:6px}
.red-ans b{font-size:10.5px;font-weight:700;color:#0F8A4E;background:#E8F7EF;
  border-radius:5px;padding:2px 7px;flex:none}
.red-ans span{font-weight:700;color:#1B2A45}
.red-you{font-size:11.5px;color:#A0635C;margin-bottom:4px}
.red-you b{color:#C0392B}
.red-sec{margin-top:12px;padding-top:11px;border-top:1px dashed #EEF2F8}
.red-sec b{display:block;font-size:11.5px;font-weight:800;color:#1B2A45;margin-bottom:5px}
.red-sec p{font-size:12.5px;line-height:1.95;color:#3D4C63;margin:0}
.red-sec.warn{background:#FFFBF3;border:1px solid #F5E7CC;border-radius:9px;
  padding:10px 11px;border-top:0;margin-top:12px}
.red-sec.warn b{color:#B2690A}
.red-easy{color:#8A6A2C}
.btn-primary[disabled]{background:#DDE5F2;color:#8C9AB3;box-shadow:none;cursor:not-allowed}
.btn-ghost[disabled]{color:#A8B4C8;border-color:#E4EAF3}
.red-sec.warn p{color:#7A5A20}

/* ===== 错题讲解视频（白板讲解 · 可播 / 可暂停 / 可跳章节） ===== */
.rv-card{padding:13px 13px 11px}
.rv-h{display:flex;align-items:center;gap:6px;margin-bottom:9px}
.rv-h .rv-tag{font-size:10px;font-weight:800;color:#fff;background:#2E6BE6;border-radius:5px;
  padding:2px 7px;flex:none;letter-spacing:.3px}
.rv-h b{font-size:12px;font-weight:700;color:#1B2A45;line-height:1.45;flex:1;min-width:0}
.rv-stage{position:relative;border-radius:11px;overflow:hidden;aspect-ratio:16/10;cursor:pointer;
  background:radial-gradient(130% 100% at 15% 0%,#22334F 0%,#16233A 58%,#0F1A2B 100%)}
/* 白板网格 + 左下角一道柔光，别让画面像纯色块 */
.rv-stage::before{content:'';position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);
  background-size:22px 22px}
.rv-stage::after{content:'';position:absolute;left:-30%;bottom:-55%;width:120%;height:90%;
  background:radial-gradient(closest-side,rgba(90,150,255,.16),transparent);pointer-events:none}
.rv-lines{position:absolute;inset:0;padding:11px 12px 64px;display:flex;flex-direction:column;
  gap:6px;z-index:2;overflow:hidden;justify-content:center}
.rv-ln{display:flex;gap:7px;font-size:10.8px;line-height:1.5;color:#DCE8FA;
  opacity:0;transform:translateY(6px);transition:opacity .4s ease,transform .4s ease}
.rv-ln.on{opacity:1;transform:none}
.rv-ln.warn span{color:#FFC08A}
.rv-ln span{flex:1;min-width:0}
.rv-ln b{color:#FFD48A;font-weight:700}
.rv-sub{position:absolute;left:0;right:0;bottom:0;z-index:3;padding:13px 12px 7px;
  background:linear-gradient(transparent,rgba(7,13,23,.92) 60%);
  font-size:10px;line-height:1.5;color:#C9D8EE;max-height:58px;overflow:hidden}
.rv-sub:empty{display:none}
.rv-pill{position:absolute;right:8px;top:8px;z-index:4;background:rgba(6,12,22,.62);
  border-radius:6px;padding:2px 7px;font-size:9.5px;color:#DCE8FA;font-variant-numeric:tabular-nums}
.rv-pill.playing{background:rgba(214,58,58,.82)}
.rv-cover{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:9px;background:rgba(9,16,27,.42);
  transition:opacity .26s ease}
.rv-cover.hide{opacity:0;pointer-events:none}
.rv-play{width:46px;height:46px;border-radius:50%;background:rgba(255,255,255,.95);color:#2E6BE6;
  display:flex;align-items:center;justify-content:center;box-shadow:0 5px 18px rgba(0,0,0,.38)}
.rv-play svg{width:17px;height:17px;margin-left:2px}
.rv-cover-t{font-size:11.5px;font-weight:700;color:#EEF4FF;position:relative;z-index:2}
.rv-frame{position:absolute;left:0;right:0;top:0;display:flex;align-items:flex-start;justify-content:center;
  padding:26px 24px 0;text-align:center;font-size:16.5px;font-weight:800;line-height:1.7;
  color:rgba(186,212,255,.15);letter-spacing:.5px}
.rv-cover-d{font-size:10px;color:#9CB0CC}
.rv-ctrl{display:flex;align-items:center;gap:9px;padding:9px 0 7px}
.rv-btn{height:25px;padding:0 10px;border-radius:8px;border:1px solid #DCE5F2;background:#F7FAFF;
  color:#2E5AA8;font-size:10.5px;font-weight:700;flex:none;display:flex;align-items:center;gap:4px}
.rv-btn:active{background:#EDF3FF}
.rv-track{position:relative;flex:1;height:4px;border-radius:3px;background:#E9EEF6;cursor:pointer}
.rv-track i{display:block;height:100%;width:0;border-radius:3px;background:#2E6BE6}
.rv-track em{position:absolute;top:50%;left:0;width:9px;height:9px;margin:-4.5px 0 0 -4.5px;
  border-radius:50%;background:#fff;border:2px solid #2E6BE6;box-shadow:0 1px 3px rgba(0,0,0,.15)}
.rv-time{font-size:9.5px;color:#8C9AB3;flex:none;font-variant-numeric:tabular-nums}
.rv-chaps{display:flex;gap:5px;flex-wrap:wrap;padding-bottom:9px}
.rv-chap{font-size:10px;color:#5A6B85;background:#F4F7FC;border:1px solid #E9EFF8;
  border-radius:7px;padding:3px 7px;cursor:pointer}
.rv-chap.on{background:#EDF3FF;border-color:#CFE0FA;color:#2E5AA8;font-weight:700}
.rv-note{font-size:10px;color:#93A1B5;line-height:1.6;display:flex;gap:5px;align-items:flex-start}
.rv-note .ico{width:11px;height:11px;flex:none;margin-top:1px;color:#B4C0D2}


/* ===== 英语：背单词 ===== */
/* 词书状态条：未授权 / 已背完 两种情况才露出，正常在背时不占地方 */
.wbb-state{display:none;border-radius:14px;padding:13px 14px;margin-bottom:12px;
  font-size:12px;line-height:1.75;border:1px solid transparent}
.wbb-state.on{display:flex;gap:10px;align-items:flex-start}
.wbb-state .ic{width:26px;height:26px;flex:none;border-radius:9px;display:flex;
  align-items:center;justify-content:center;font-size:15px;line-height:1}
.wbb-state b{display:block;font-size:12.5px;font-weight:600;margin-bottom:2px}
.wbb-state span{font-size:11px;opacity:.82;display:block}
.wbb-state.none{background:#F2F6FD;border-color:#DCE7FA;color:#2E4A8F}
.wbb-state.none .ic{background:#E1EBFF}
.wbb-state.done{background:#EAF8F1;border-color:#C9EBD9;color:#0F7A46}
.wbb-state.done .ic{background:#D5F0E3}
.wbb-state.warn{background:#FFF7E8;border-color:#F5E3BF;color:#9A6300}
.wbb-state.warn .ic{background:#FAEBCB}
.wbb-pg{height:5px;border-radius:3px;background:rgba(255,255,255,.22);overflow:hidden;margin:-6px 0 16px}
.wbb-pg i{display:block;height:100%;background:#fff;border-radius:3px;transition:width .4s}

.wb-hero{
  background:linear-gradient(135deg,#2E4A8F,#4C6BE0);border-radius:18px;
  padding:20px;color:#fff;margin-bottom:14px;
}
.wb-top{display:flex;justify-content:space-between;font-size:11.5px;opacity:.85;margin-bottom:18px}
.wb-nums{display:grid;grid-template-columns:repeat(3,1fr);margin-bottom:18px}
.wb-nums div{text-align:center;border-right:1px solid rgba(255,255,255,.18)}
.wb-nums div:last-child{border-right:0}
.wb-nums b{display:block;font-size:24px;font-weight:600;line-height:1.25}
.wb-nums span{font-size:10.5px;opacity:.82}
.wb-start{width:100%;padding:13px;border-radius:13px;background:#fff;color:#2E4A8F;font-size:14px;font-weight:500}
.wb-start:active{background:#EAF1FF}

.wb-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}
.wb-actions button{
  background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;
  display:flex;flex-direction:column;align-items:flex-start;
}
.wb-actions .ico{width:20px;height:20px;color:var(--blue);margin-bottom:7px}
.wb-actions b{font-size:13.5px;font-weight:500;margin-bottom:3px}
.wb-actions span{font-size:11px;color:var(--ink-3)}
.wb-actions button:active{background:var(--blue-l);border-color:#D6E4FF}

.wb-list{display:grid;grid-template-columns:1fr;gap:0}
body.layout-tablet .wb-list{grid-template-columns:1fr 1fr;gap:0 18px}
.wb-item{display:flex;align-items:baseline;gap:8px;padding:8px 0;border-bottom:1px dashed #EEF3FA}
.wb-item b{font-size:13px;font-weight:500;color:var(--ink);flex:none}
.wb-item em{font-size:10.5px;font-style:normal;color:var(--ink-3);flex:none}
.wb-item span{font-size:11.5px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wb-next{padding:6px 2px 6px 12px}
.wb-batch{
  font-size:10.5px;font-style:normal;font-weight:400;color:var(--ink-3);
  background:#F2F6FD;border-radius:6px;padding:2px 6px;margin-left:2px;
}

/* 本次任务：选词范围 + 每轮词数 */
.wb-plan{
  display:flex;align-items:center;gap:8px;padding:9px 9px 9px 12px;margin-bottom:14px;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.2);border-radius:12px;
}
.wb-plan b{font-size:13px;font-weight:600;flex:none}
.wb-plan span{flex:1;min-width:0;font-size:11px;opacity:.86;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wb-adj{flex:none;font-size:11px;font-weight:500;padding:5px 10px;border-radius:9px;background:#fff;color:#2E4A8F}
.wb-adj:active{background:#EAF1FF}

/* 到期复习提醒 + 今日情况入口 */
.wb-due{
  display:flex;align-items:center;gap:10px;padding:11px 13px;margin-bottom:12px;
  border-radius:14px;border:1px solid var(--line);background:#fff;
}
.wb-due.on{background:linear-gradient(120deg,#FFF6E3,#FFFDF8);border-color:#F6E0B4}
.wb-due-tx{flex:1;min-width:0}
.wb-due-tx b{display:block;font-size:13.5px;font-weight:500}
.wb-due-tx span{display:block;font-size:11px;color:var(--ink-3);margin-top:2px}
.wb-due.on .wb-due-tx b{color:#B4700C}
.wb-due-btn{
  flex:none;font-size:12.5px;font-weight:500;color:#fff;background:var(--amber);
  padding:8px 14px;border-radius:10px;
}
.wb-due-btn:active{background:#E09310}

.wb-report{
  width:100%;display:flex;align-items:center;gap:11px;text-align:left;
  background:#fff;border:1px solid var(--line);border-radius:14px;padding:13px 14px;margin-bottom:12px;
}
.wb-report:active{background:#F7FAFF}
.wb-r-ico{
  width:34px;height:34px;border-radius:11px;background:var(--blue-l);flex:none;
  display:grid;place-items:center;color:var(--blue-d);
}
.wb-r-ico .ico{width:18px;height:18px}
.wb-r-tx{flex:1;min-width:0}
.wb-r-tx b{display:block;font-size:13.5px;font-weight:500;margin-bottom:2px}
.wb-r-tx i{
  display:block;font-style:normal;font-size:11px;color:var(--ink-3);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.wb-r-chev{width:16px;height:16px;color:var(--ink-3);flex:none}

/* 今日背诵情况页 */
.wr-grid{display:block}
body.layout-tablet .wr-grid{display:grid;grid-template-columns:minmax(0,1.06fr) minmax(0,1fr);gap:14px;align-items:start}
body.layout-tablet .wr-col .card{margin-bottom:12px}
.wr-top{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:14px}
.wr-top div{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 4px;text-align:center}
.wr-top b{display:block;font-size:20px;font-weight:600;line-height:1.35}
.wr-top span{font-size:10.5px;color:var(--ink-3)}
.wr-words{display:flex;flex-wrap:wrap;gap:6px}
.wr-w{
  font-size:12px;padding:4px 9px;border-radius:8px;font-weight:500;
  background:#fff;border:1px solid #C9DCFF;color:var(--blue-d);
}
.wr-w.rv{background:var(--teal-l);border-color:#C7EDE1;color:#0E8A6A}
.wr-w.todo{background:#F6F8FB;border:1px dashed #D8E0EC;color:#9AA6B8;font-weight:400}
.wr-legend{flex-basis:100%;font-size:10.5px;color:var(--ink-3);margin-top:2px}
.wr-w:active{opacity:.75}
.wr-empty{font-size:12px;color:var(--ink-3);text-align:center;padding:16px 0;line-height:1.7}
.wr-row{display:flex;align-items:center;gap:9px;padding:9px 0;border-bottom:1px dashed #EEF3FA}
.wr-row:last-child{border-bottom:0}
.wr-row b{font-size:13px;font-weight:500;flex:none}
.wr-row em{font-size:10.5px;font-style:normal;color:var(--ink-3);flex:none}
.wr-row i{font-size:11.5px;font-style:normal;color:var(--ink-3);margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wr-row u{
  font-size:9.5px;text-decoration:none;color:var(--coral);background:var(--coral-l);
  padding:1px 5px;border-radius:5px;flex:none;
}
.wr-chart{display:flex;align-items:flex-end;gap:8px;height:108px;padding-top:4px}
.wr-bar{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:4px;height:100%}
.wr-bar u{
  width:100%;max-width:30px;border-radius:6px 6px 3px 3px;text-decoration:none;
  background:linear-gradient(180deg,#87ADFF,#3E7BF6);
}
.wr-bar.zero u{background:#E9F0FA}
.wr-bar span{font-size:9.5px;color:var(--ink-3)}
.wr-bar b{font-size:10px;color:var(--ink-2);font-weight:500}
.wr-due{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.wr-day{border-radius:10px;border:1px solid var(--line);padding:8px 2px;text-align:center;background:#fff}
.wr-day b{display:block;font-size:14px;font-weight:600;line-height:1.3}
.wr-day span{display:block;font-size:9.5px;color:var(--ink-3);margin-top:2px}
.wr-day.today{border-color:#F5D79A;background:#FFF8E8}
.wr-day.today b{color:#B4700C}
.wr-day.zero b{color:var(--ink-3);font-weight:500}
.wr-note{font-size:11px;color:var(--ink-3);line-height:1.75;margin:12px 0 0}
.wr-tools{display:flex;gap:8px;margin-top:10px}
.wr-tools button{
  font-size:11.5px;color:var(--blue-d);background:#fff;border:1px solid #D6E4FF;
  padding:6px 10px;border-radius:9px;
}
.wr-tools button:active{background:var(--blue-l)}

/* 选词设置页 */
.wp-grid{display:block}body.layout-tablet .wp-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);gap:16px;align-items:start}
.chip i{font-style:normal;opacity:.6;margin-left:5px;font-size:11px}
.chip.on i{opacity:.9}
.only-phone{display:none}
body.layout-phone .only-phone{display:inline}
body.layout-phone .only-tablet{display:none}
.wp-sec{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px;margin-bottom:12px}
body.layout-tablet .wp-sec{padding:12px 14px;margin-bottom:10px}
body.layout-tablet .wp-h{margin-bottom:8px}
body.layout-tablet .wp-sub{margin-top:10px;padding-top:9px}
.wp-h{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:10px}
.wp-h h3{font-size:14.5px;font-weight:500;margin:0}
.wp-h span{font-size:11px;color:var(--ink-3);flex:none}
.wp-h2{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:8px}
.wp-h2 b{font-size:12px;font-weight:500;color:var(--ink-2)}
.wp-h2 span{font-size:10.5px;color:var(--ink-3)}
.wp-sub{margin-top:13px;padding-top:11px;border-top:1px dashed #EEF3FA}
body.layout-phone #wpUnit{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px;scrollbar-width:none}
body.layout-phone #wpUnit::-webkit-scrollbar{display:none}
#wpUnit .chip{flex:0 0 auto;white-space:nowrap}
.wp-hide{display:none!important}
.wp-custom{display:flex;align-items:center;gap:8px;margin-top:11px;font-size:12px;color:var(--ink-3)}
.wp-custom input{
  width:80px;padding:7px 8px;border:1px solid var(--line);border-radius:9px;
  font-size:13px;text-align:center;background:#F7FAFF;outline:none;
}
.wp-custom input:focus{border-color:#BFD5FF;background:#fff}
.wp-custom input::-webkit-outer-spin-button,.wp-custom input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.wp-tips{margin:0;padding:0;list-style:none}
.wp-tips li{position:relative;padding-left:14px;font-size:11.5px;line-height:1.75;color:var(--ink-2)}
.wp-tips li b{font-weight:500;color:var(--ink)}
.wp-tips li::before{content:'';position:absolute;left:2px;top:9px;width:5px;height:5px;border-radius:50%;background:#CBD8EC}
.wp-tools{display:flex;gap:8px;align-items:center;margin-bottom:8px}.wp-search{flex:1;min-width:0;display:flex;align-items:center;gap:6px;background:#F7FAFF;border:1px solid var(--line);border-radius:10px;padding:7px 10px}
.wp-search .ico{width:14px;height:14px;color:var(--ink-3)}
.wp-search input{flex:1;min-width:0;border:0;background:none;outline:none;font-size:12.5px}
.wp-mini{font-size:11px;color:var(--blue-d);padding:6px 9px;border-radius:9px;border:1px solid #D6E4FF;background:#fff;flex:none}
.wp-mini:active{background:var(--blue-l)}
.wp-list{max-height:44vh;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
body.layout-tablet .wp-list{max-height:43vh}
.wp-row{display:flex;align-items:center;gap:9px;padding:9px 2px;border-bottom:1px dashed #EEF3FA;cursor:pointer}
.wp-row:active{background:#F7FAFF}
.wp-row .bx{
  width:18px;height:18px;border-radius:6px;border:1.5px solid #CBD8EC;flex:none;
  display:grid;place-items:center;color:#fff;font-size:11px;line-height:1;
}
.wp-row.on .bx{background:var(--blue);border-color:var(--blue)}
.wp-row b{font-size:13px;font-weight:500;flex:none}
.wp-row em{font-size:10.5px;font-style:normal;color:var(--ink-3);flex:none}
.wp-row i{font-size:11.5px;font-style:normal;color:var(--ink-3);margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wp-row u{font-size:9.5px;text-decoration:none;color:var(--teal);background:var(--teal-l);padding:1px 5px;border-radius:5px;flex:none}
.wp-row.done b{color:var(--ink-3)}
.wp-empty{font-size:12px;color:var(--ink-3);text-align:center;padding:22px 0}
.wp-bar{
  position:sticky;bottom:0;display:flex;align-items:center;gap:12px;
  padding:8px 0 0;background:linear-gradient(180deg,rgba(245,249,255,0),#F5F9FF 42%);
}
.wp-bar .wp-sum{flex:1;min-width:0}
.wp-bar .wp-sum b{display:block;font-size:14px;font-weight:600}
.wp-bar .wp-sum span{display:block;font-size:11px;color:var(--ink-3);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wp-bar .btn-primary{flex:none;padding:12px 20px;font-size:14px}

.eng-entry{
  display:flex;align-items:center;gap:12px;padding:14px;margin-bottom:12px;cursor:pointer;
  background:linear-gradient(120deg,#EAF1FF,#F3EEFF);border:1px solid #DDE6FF;
}
.ee-ico{width:42px;height:42px;border-radius:12px;background:#fff;display:grid;place-items:center;flex:none;color:var(--blue-d)}
.ee-ico .ico{width:21px;height:21px}
.ee-tx{flex:1;min-width:0}
.ee-tx b{font-size:14.5px;font-weight:500;display:block;margin-bottom:3px}
.ee-tx span{font-size:11.5px;color:var(--ink-3)}

/* 单词卡片（浅色柔光） */
#p-wordcard{
  position:absolute;inset:0;overflow:hidden;
  background:
    radial-gradient(120% 72% at 6% 0%, #DEEAFF 0%, transparent 58%),
    radial-gradient(100% 72% at 96% 14%, #DDF6EC 0%, transparent 58%),
    radial-gradient(110% 82% at 55% 100%, #FCEEDC 0%, transparent 64%),
    #F8FAFF;
}
.wcard{height:100%;width:100%;display:flex;flex-direction:column;max-width:760px;margin:0 auto;padding:14px 18px 0;position:relative}
body.layout-tablet .wcard{max-width:820px;padding:18px 30px 0}

.wc-head{display:flex;align-items:center;gap:8px;flex:none;height:44px}
.wc-ico{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;color:#5A6B85}
.wc-ico:active{background:rgba(255,255,255,.75)}
.wc-ico.on{color:var(--amber)}
.wc-count{font-size:12px;color:#93A1B5;letter-spacing:.5px}
.wc-tools{margin-left:auto;display:flex;gap:2px}

.wc-body{flex:1;overflow:auto;padding:10px 0 8px}
.wc-word-row{display:flex;align-items:center;gap:8px}
.wc-word{
  font-size:38px;font-weight:600;letter-spacing:-1px;margin:0;color:#101827;
  word-break:break-word;line-height:1.25;
}
body.layout-tablet .wc-word{font-size:44px}
.wc-dot{
  width:7px;height:7px;border-radius:50%;background:#3FCB8E;flex:none;margin-top:6px;
  box-shadow:0 0 0 3px rgba(63,203,142,.18);
}
.wc-ph{display:flex;align-items:center;gap:7px;margin:8px 0 18px}
.wc-flag{
  font-size:10px;color:#8C9AB0;background:rgba(255,255,255,.75);border:1px solid #E6EDF8;
  padding:1px 6px;border-radius:6px;
}
.wc-ph #wcPh{font-size:13px;color:#8C9AB0;letter-spacing:.3px}

.wc-mean{display:flex;flex-direction:column;gap:7px;margin-bottom:16px}
.wc-mean .mrow{display:flex;gap:8px;align-items:baseline}
.wc-mean .mrow b{font-size:12px;color:#3B7BE0;font-weight:500;flex:none;min-width:30px}
.wc-mean .mrow span{font-size:14.5px;color:#1B2A45;line-height:1.6}

.gls-card{
  position:relative;background:rgba(255,255,255,.66);border:1px solid rgba(255,255,255,.85);
  border-radius:18px;padding:15px 16px;margin-bottom:12px;
  backdrop-filter:blur(12px);box-shadow:0 8px 22px rgba(60,90,140,.055);
}
.gls-sound{
  position:absolute;right:12px;top:12px;width:26px;height:26px;border-radius:9px;
  display:grid;place-items:center;color:#8C9AB0;background:rgba(255,255,255,.75);
}
.gls-sound .ico{width:15px;height:15px}
.gls-ex{font-size:14.5px;line-height:1.75;color:#1B2A45;padding-right:42px}
.gls-cn{font-size:12.5px;line-height:1.7;color:#8C9AB0;margin-top:7px}

.ph-row{display:flex;gap:10px;align-items:baseline;font-size:14px;line-height:2.15}
.ph-row b{font-weight:400;color:#1B2A45}
.ph-row span{font-size:12.5px;color:#9AA7BB}
.gls-more{font-size:11.5px;color:#93A1B5;margin-top:6px}

.wc-tabs{display:flex;gap:8px;margin-top:2px}
.wc-tabs span{
  font-size:11.5px;color:#8C9AB0;padding:6px 12px;border-radius:10px;background:rgba(255,255,255,.6);
}
.wc-tabs span.on{background:#fff;color:#1B2A45;box-shadow:0 2px 8px rgba(60,90,140,.08)}

.wc-foot{
  flex:none;display:grid;grid-template-columns:1fr 1fr;gap:10px;
  padding:12px 0 16px;background:linear-gradient(180deg,rgba(248,250,255,0),#F8FAFF 45%);
}
.wc-fbtn{
  padding:15px;border-radius:16px;background:rgba(255,255,255,.92);
  border:1px solid #E6EDF8;font-size:15px;font-weight:500;color:#2C3E5C;
  box-shadow:0 4px 12px rgba(60,90,140,.06);
}
.wc-fbtn:active{transform:scale(.985)}
.wc-fbtn.wrong{color:#C74B36}
/* 照抄层：点「认识」后先把单词照着抄一遍 */
/* 照抄层：不要白底，直接叠在单词卡自己的渐变背景上；
   打开时把原来的词卡内容隐起来（visibility 保留占位，不影响背景） */
.wc-copy{position:absolute;inset:0;background:transparent;border-radius:inherit;z-index:8;display:none;
  flex-direction:column;padding:22px 18px 20px}
.wc-copy.on{display:flex}
.wcard.copying .wc-head,.wcard.copying .wc-body,.wcard.copying .wc-foot{visibility:hidden}
.wcard.copying{background:none}
.wcc-head{display:flex;align-items:center;gap:8px;font-size:12px;color:#7C8799;flex:none}
.wcc-step{margin-left:auto;font-variant-numeric:tabular-nums}
.wcc-word{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:9px;font-size:38px;
  font-weight:800;letter-spacing:.5px;color:#14161F;margin:auto 0 10px;line-height:1.35}
.wcc-word i{color:#C8D0DE;font-style:normal;font-weight:400;margin:0 4px;font-size:30px;vertical-align:6px}
.wcc-syl{display:inline-block;padding:1px 9px 3px;border-radius:10px;color:#22376E;
  background:rgba(255,255,255,.78);border:1px solid rgba(91,124,250,.16);
  box-shadow:0 2px 8px rgba(60,90,140,.05);font-size:1em;letter-spacing:.5px}
.wcc-ph{display:flex;align-items:center;justify-content:center;gap:7px;color:#7A8699;font-size:13px}
.wcc-snd{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;color:#5B7CFA;
  background:rgba(255,255,255,.8);border:1px solid rgba(91,124,250,.14)}
.wcc-cn{font-size:13.5px;color:#5A6B85;margin:10px 0 0;line-height:1.7;text-align:center}
.wcc-read{margin-top:18px;text-align:center;font-size:12.5px;color:#8A94A6;line-height:1.8}
.wcc-read b{color:#3E52C4;font-weight:700;letter-spacing:.6px}
.wcc-tip{margin-top:auto;padding-top:26px;font-size:12.5px;color:#8A94A6;line-height:1.85}
.wcc-tip b{color:#3E52C4}
.wcc-input{margin-top:16px;height:58px;border:1.5px solid rgba(140,160,195,.34);border-radius:15px;padding:0 16px;
  font-size:21px;letter-spacing:1.5px;color:#14161F;background:rgba(255,255,255,.72);
  font-family:inherit;outline:none;backdrop-filter:blur(2px)}
.wcc-input:focus{border-color:#5B7CFA;background:rgba(255,255,255,.92);box-shadow:0 0 0 4px rgba(91,124,250,.1)}
.wcc-input::placeholder{color:#A9B4C6}
.wcc-input.shake{animation:wccShake .32s}
@keyframes wccShake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
.wcc-fb{min-height:22px;margin-top:9px;font-size:12px;line-height:1.6;color:#C74B36}
.wcc-fb.ok{color:#0F8A4E}
.wcc-ok{margin-top:14px;height:50px;border-radius:15px;background:#5B7CFA;color:#fff;font-size:15px;
  font-weight:700;box-shadow:0 10px 22px rgba(91,124,250,.28);font-family:inherit}

/* 单词测试（中选英 / 英选中） */
.wc-quiz{flex:1;display:none;flex-direction:column;align-items:stretch;width:100%;padding:6px 0 12px;overflow:auto}
.wcard.testing .wc-body{display:none}
.wcard.testing .wc-foot{display:none}
.wcard.testing .wc-quiz{display:flex}

.wq-prog{display:flex;align-items:center;gap:7px;margin-bottom:26px}
.wq-dot{width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.9);border:1px solid #D9E3F2}
.wq-dot.on{background:#3FCB8E;border-color:#3FCB8E}
.wq-dot.cur{background:#2F6BE0;border-color:#2F6BE0;box-shadow:0 0 0 3px rgba(47,107,224,.14)}
.wq-prog span{font-size:11.5px;color:#93A1B5;margin-left:4px}

.wq-type{font-size:11.5px;color:#9AA7BB;letter-spacing:.3px;margin-bottom:10px}
.wq-stem{
  font-size:26px;font-weight:600;color:#101827;line-height:1.4;
  margin-bottom:26px;word-break:break-word;
}
body.layout-tablet .wq-stem{font-size:30px}
.wq-stem.cloze{font-size:18.5px;font-weight:400;line-height:1.95;color:#1B2A45;letter-spacing:0}
body.layout-tablet .wq-stem.cloze{font-size:19.5px}
.cz-sent{display:block}
.cz-sent em{font-style:normal;color:#2F6BE0;font-weight:500;border-bottom:2px solid #B9D2FA;padding:0 14px}
.cz-hint{display:block;margin-top:9px;font-size:12px;color:#93A1B5;font-weight:400;letter-spacing:.2px}

.wq-opts{display:flex;flex-direction:column;align-items:stretch;gap:10px;width:100%}
.wq-opt{
  width:100%;padding:15px 18px;border-radius:16px;text-align:left;font-size:15px;color:#2C3E5C;
  background:rgba(255,255,255,.82);border:1px solid rgba(255,255,255,.92);
  box-shadow:0 6px 16px rgba(60,90,140,.06);transition:.16s;
}
.wq-opt:active{transform:scale(.99)}
@keyframes optPop{0%{transform:scale(1)}45%{transform:scale(1.025)}100%{transform:scale(1)}}
@keyframes optShake{0%,100%{transform:translateX(0)}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
.wq-opt.ok{animation:optPop .32s ease}
.wq-opt.no{animation:optShake .34s ease}
.wq-opt.ok{background:#E8F9F1;border-color:#8FDCBF;color:#0E8A69;font-weight:500}
.wq-opt.no{background:#FDEEEC;border-color:#F3B3A9;color:#C74B36}
.wq-opt[disabled]{cursor:default}

.wq-fb{font-size:12.5px;font-weight:500;margin-top:18px;min-height:20px;line-height:1.6}
.wq-fb.ok{color:#0E8A69}
.wq-fb.no{color:#C74B36}

/* 结算：辨识完成 */
#p-done1{
  position:absolute;inset:0;overflow:auto;
  background:
    radial-gradient(100% 60% at 20% 4%, #D9E9FF 0%, transparent 62%),
    radial-gradient(90% 62% at 90% 30%, #D8F5E8 0%, transparent 62%),
    radial-gradient(110% 72% at 50% 100%, #FCEBD2 0%, transparent 64%),
    #F8FAFF;
}
.done-wrap{
  min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:40px 26px;text-align:center;max-width:520px;margin:0 auto;
}
.done-badge{width:96px;height:96px;margin-bottom:22px}
.done-wrap h1{font-size:21px;font-weight:600;margin:0 0 8px;color:#101827}
.done-wrap p{font-size:13px;color:#8C9AB0;margin:0 0 30px}
.done-acts{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%;margin-bottom:18px}
.done-act{
  padding:20px 10px;border-radius:26px;background:rgba(255,255,255,.86);
  border:1px solid rgba(255,255,255,.9);box-shadow:0 8px 22px rgba(60,90,140,.07);
  display:flex;flex-direction:column;align-items:center;gap:5px;
}
.done-act b{font-size:16px;font-weight:500;color:#E8894A}
.done-act span{font-size:11.5px;color:#9AA7BB}
.done-act.alt b{color:#C2CDDC}
.done-skip{font-size:12px;color:#93A1B5;padding:8px}

/* 结算：今日完成 */
#p-done2{
  position:absolute;inset:0;overflow:auto;
  background:
    radial-gradient(95% 58% at 50% 0%, #FFEFCE 0%, transparent 64%),
    radial-gradient(85% 55% at 10% 42%, #DCEAFF 0%, transparent 62%),
    #FBFCFE;
}
.done2{
  min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:36px 26px 34px;text-align:center;max-width:520px;margin:0 auto;
}
.done2 .btn-primary{background:#FF8A3D;box-shadow:0 10px 22px rgba(255,138,61,.32)}
.done2-ring{position:relative;width:190px;height:190px;display:grid;place-items:center}
.done2-ring > svg{position:absolute;inset:0;width:100%;height:100%}
.done2-medal{position:relative;z-index:1}
.done2-medal svg{width:64px;height:64px;display:block}
.done2-coin{
  margin-top:-6px;background:#FFC93C;color:#7A5200;font-size:13px;font-weight:600;
  padding:4px 14px;border-radius:20px;box-shadow:0 6px 16px rgba(255,201,60,.35);
}
.done2 h1{font-size:21px;font-weight:600;margin:18px 0 16px;color:#101827}
.done2-stats{display:flex;align-items:center;gap:26px;margin-bottom:26px}
.done2-stats div{display:flex;flex-direction:column;gap:3px}
.done2-stats b{font-size:22px;font-weight:600;color:#1B2A45}
.done2-stats span{font-size:11px;color:#9AA7BB}
.done2-stats i{width:1px;height:28px;background:#E6EDF8}
.done2-card{
  width:100%;background:rgba(255,255,255,.82);border:1px solid rgba(255,255,255,.9);
  border-radius:16px;padding:14px 16px;text-align:left;margin-bottom:20px;
  box-shadow:0 8px 22px rgba(60,90,140,.06);
}
.dc-tag{font-size:10.5px;color:#9AA7BB;margin-bottom:7px}
.dc-read{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}
.dc-read b{font-size:14px;font-weight:500;color:#1B2A45}
.dc-read span{font-size:12.5px;color:#8C9AB0;}

/* 拼写测试（上下对照） */
#p-spell{
  padding:0;
  background:
    radial-gradient(90% 60% at 15% 0%, #E3F0FF 0%, transparent 60%),
    radial-gradient(90% 60% at 92% 20%, #E4FAF2 0%, transparent 60%),
    #F8FBFF;
}
#p-spell.active{display:flex;flex-direction:column;min-height:100%}
.sp-wrap{
  flex:1;display:flex;flex-direction:column;padding:16px 22px 20px;
  max-width:560px;margin:0 auto;width:100%;
}
body.layout-tablet .sp-wrap{max-width:560px;padding:22px 26px}

.sp-head{display:flex;align-items:center;gap:12px;flex:none;height:40px}
.sp-back{width:32px;height:32px;font-size:22px;color:#8C9AB0;line-height:1;text-align:left}
.sp-count{font-size:12px;color:#93A1B5;letter-spacing:.5px}
.sp-dots{display:flex;gap:5px;margin-left:auto}
.sp-dots i{width:6px;height:6px;border-radius:50%;background:#DDE6F2}
.sp-dots i.on{background:#3FCB8E}

.sp-stage{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding-bottom:16px;
}
.sp-headword{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:22px}
.sp-cn{
  display:flex;align-items:baseline;gap:9px;font-size:27px;font-weight:600;
  color:#101827;line-height:1.35;text-align:center;
}
body.layout-tablet .sp-cn{font-size:30px}
.sp-pos{
  font-size:12px;font-weight:400;color:#3B7BE0;background:rgba(59,123,224,.09);
  padding:2px 8px;border-radius:7px;flex:none;
}
.sp-entry{
  position:relative;display:flex;flex-direction:column;align-items:center;gap:12px;
  min-height:126px;justify-content:center;width:100%;
}
.sp-typed{
  font-size:44px;font-weight:600;letter-spacing:2px;color:#12B886;
  min-height:58px;text-align:center;word-break:break-all;line-height:1.2;
}
body.layout-tablet .sp-typed{font-size:52px}
.sp-typed:empty::before{content:attr(data-empty);font-size:15px;font-weight:400;letter-spacing:0;
  color:#B4BECC}
.sp-typed .lt{transition:color .15s}
.sp-typed .lt.no{color:#E8453C}
.sp-typed i{font-style:normal;color:#8C9AB0;opacity:.6;margin:0 3px}
.sp-typed .lt.hold{color:#B7C9E0;font-weight:400}

.sp-answer{
  display:none;
  font-size:38px;font-weight:600;letter-spacing:2px;color:#12B886;opacity:.5;
  text-align:center;word-break:break-all;line-height:1.2;
}
body.layout-tablet .sp-answer{font-size:44px}
.sp-answer.show{display:block;animation:spAnsIn .22s ease}
@keyframes spAnsIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.sp-answer i{font-style:normal;opacity:.7;margin:0 1px}

.sp-tip{font-size:12px;color:#9AA7BB;text-align:center;line-height:1.7;min-height:20px;margin-top:16px}
.sp-tip.err{color:#C74B36}

.sp-bar{
  flex:none;display:flex;align-items:center;justify-content:space-between;
  gap:14px;padding-bottom:6px;
}
.sp-round{
  width:54px;height:54px;border-radius:50%;display:grid;place-items:center;
  background:rgba(255,255,255,.9);border:1px solid #E2EAF6;color:#8C9AB0;
  box-shadow:0 6px 16px rgba(60,90,140,.07);flex:none;
}
.sp-round .ico{width:22px;height:22px}
.sp-round.ok{background:#12B886;border-color:#12B886;color:#fff;box-shadow:0 8px 20px rgba(18,184,134,.3)}
.sp-round:active{transform:scale(.94)}
.sp-ph{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  font-size:14px;color:#8C9AB0;letter-spacing:.3px;
  background:rgba(255,255,255,.8);border:1px solid rgba(255,255,255,.9);border-radius:16px;
  padding:7px 14px;box-shadow:0 3px 10px rgba(60,90,140,.05);
}
.sp-ph .ico{width:15px;height:15px;color:#8FA8C8;flex:none}
.sp-ph:active{background:#fff}

.sp-mid{font-size:12px;color:#9AA7BB;letter-spacing:.4px}
.sp-mid.full{color:#C74B36}

/* 真实输入框就地铺在自绘字母上：文字透明、光标透明，但焦点和中文输入法候选框都在可视区 */
.sp-input{
  position:absolute;left:0;right:0;top:0;bottom:0;width:100%;height:100%;
  border:0;outline:none;padding:0;margin:0;background:transparent;
  color:transparent;caret-color:transparent;text-align:center;
  font-size:16px;line-height:1;z-index:2;opacity:1;
}
.sp-input::selection{background:transparent}

@keyframes spShake{
  0%,100%{transform:translateX(0)}
  20%{transform:translateX(-7px)}
  60%{transform:translateX(7px)}
}
.sp-typed.shake{animation:spShake .34s ease}
@keyframes spFlash{
  0%{transform:scale(1);color:#12B886}
  40%{transform:scale(1.06);color:#0E9C7A}
  100%{transform:scale(1);color:#12B886}
}
.sp-typed.flash{animation:spFlash .45s ease}

/* 阅读 */
/* ===== 管理后台（照参考原型的视觉语言重做） ===== */
body.admin-mode #stage{display:none}
body.admin-mode #toolbar{display:none}
#admin{
  --ad-bg:#F3F4F8; --ad-card:#FFFFFF;
  --ad-ink:#14161F; --ad-ink2:#5E6472; --ad-ink3:#9AA0AE; --ad-line:#ECEEF3;
  --ad-b:#5B7CFA; --ad-b-soft:#ECF0FE;
  --ad-grad:linear-gradient(135deg,#6D8DFB 0%,#8B6CF0 100%);
  --ad-g:#22C391; --ad-g-soft:#E6F8F2;
  --ad-w:#FFAB2E; --ad-w-soft:#FDF4E3;
  --ad-r:#FF6B6B; --ad-r-soft:#FDECEC;
  --ad-r-lg:22px; --ad-r-md:14px;
  --ad-sh:0 12px 32px rgba(22,26,40,.07); --ad-sh-sm:0 6px 18px rgba(22,26,40,.05);
  /* fixed 才相对视口：它虽在 #shell 里，用 absolute 会被壳的 779px 高度截住，
     侧栏 100dvh 就比容器高，滚动时上半截被裁 */
  position:fixed;inset:0;z-index:90;display:none;overflow:auto;
  background:var(--ad-bg);color:var(--ad-ink);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Helvetica Neue",sans-serif;
}
body.admin-mode #admin{display:block}
#admin .hide{display:none!important}
#admin *{box-sizing:border-box}

/* ---- 登录 ---- */
.ad-login{min-height:100dvh;display:grid;place-items:center;padding:32px;background:#E9EAF0}
.ad-card{
  width:400px;background:var(--ad-card);border-radius:26px;padding:30px 28px 24px;
  box-shadow:0 30px 70px rgba(20,22,40,.16);
}
.ad-brand{display:flex;align-items:center;gap:13px;margin-bottom:26px}
.ad-logo{
  width:48px;height:48px;border-radius:16px;flex:none;display:grid;place-items:center;
  background:var(--ad-grad);color:#fff;font-size:19px;font-weight:800;
  box-shadow:0 8px 20px rgba(107,124,248,.35);
}
.ad-logo.sm{width:32px;height:32px;border-radius:11px;font-size:14px;box-shadow:none}
.ad-brand-tx b{display:block;font-size:17px;font-weight:800;letter-spacing:.2px}
.ad-brand-tx span{display:block;font-size:12px;color:var(--ad-ink3);margin-top:4px}
.ad-field{margin-bottom:15px}
.ad-field label{display:block;font-size:12px;color:var(--ad-ink3);margin-bottom:7px;font-weight:600}
.ad-field input,.ad-field select{
  width:100%;padding:13px 14px;border:1.5px solid var(--ad-line);border-radius:14px;
  background:#FAFBFC;outline:none;font-size:14.5px;color:var(--ad-ink);font-family:inherit;
}
.ad-field input:focus,.ad-field select:focus{border-color:#C3D0FB;background:#fff}
.ad-btn{
  width:100%;padding:14px;border-radius:16px;background:var(--ad-ink);color:#fff;
  font-size:15px;font-weight:700;letter-spacing:.2px;
}
.ad-btn:active{transform:scale(.99)}
.ad-btn.primary{background:var(--ad-grad);box-shadow:0 12px 26px rgba(107,124,248,.32);margin-top:6px}
.ad-btn.mini{width:auto;padding:8px 15px;font-size:12.5px;border-radius:11px;background:var(--ad-ink)}
.ad-btn.ghost{background:#fff;color:var(--ad-ink2);border:1.5px solid var(--ad-line);box-shadow:none;font-weight:600}
.ad-hint{margin-top:18px;font-size:11.5px;color:var(--ad-ink3);line-height:2;text-align:center}
.ad-hint b{color:var(--ad-ink2);font-weight:700}
.ad-back{display:inline-block;margin-top:8px;color:var(--ad-b);cursor:pointer;font-weight:600}

/* ---- 布局 ---- */
.ad-app{display:grid;grid-template-columns:224px minmax(0,1fr);min-height:100dvh}
.ad-rail{
  background:#fff;padding:22px 14px;display:flex;flex-direction:column;
  position:sticky;top:0;height:100dvh;border-right:1px solid var(--ad-line);
  /* grid 子项默认 stretch 会被拉成整页高，sticky 就失效了，必须 start */
  align-self:start;
}
.ad-rail-top{display:flex;align-items:center;gap:10px;padding:0 8px 22px;font-size:14px;font-weight:800}
.ad-nav{display:flex;flex-direction:column;gap:2px;flex:1;overflow-y:auto;padding-right:2px;min-height:0}
.ad-nav::-webkit-scrollbar{width:8px}
.ad-nav::-webkit-scrollbar-thumb{background:#E2E6EE;border-radius:99px}

.ad-navlink{
  display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;
  font-size:13.5px;font-weight:600;color:var(--ad-ink2);text-align:left;width:100%;
  transition:background .14s,color .14s;
}
.ad-navlink .ico{width:17px;height:17px;color:#A8AFBE;flex:none}
.ad-navlink:hover{background:#F6F7FB}
.ad-navlink.on{background:var(--ad-b-soft);color:var(--ad-b);font-weight:700}
.ad-navlink.on .ico{color:var(--ad-b)}

/* 一级分组 */
.ad-grp{display:flex;flex-direction:column}
.ad-grp-h{
  display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;
  font-size:13.5px;font-weight:600;color:var(--ad-ink2);text-align:left;width:100%;
}
.ad-grp-h .ico{width:17px;height:17px;color:#A8AFBE;flex:none}
.ad-grp-h span{flex:1}
.ad-grp-h .chev{
  font-style:normal;font-size:13px;color:#C3C8D4;transition:transform .18s;
  transform-origin:center;
}
.ad-grp-h:hover{background:#F6F7FB}
.ad-grp.open .ad-grp-h .chev{transform:rotate(90deg)}
.ad-grp.active > .ad-grp-h{color:var(--ad-ink);font-weight:700}
.ad-grp.active > .ad-grp-h .ico{color:var(--ad-b)}

/* 二级：展开收起 + 左侧竖线 */
.ad-grp-b{
  display:flex;flex-direction:column;gap:1px;
  overflow:hidden;max-height:0;opacity:0;
  margin-left:22px;padding-left:10px;border-left:1px solid #EEF1F7;
  transition:max-height .22s ease,opacity .16s ease,margin .16s;
}
/* 别写死 320px：学习服务有 12 项，写死会把后 4 项裁掉 */
.ad-grp.open .ad-grp-b{max-height:1200px;opacity:1;margin-bottom:4px}
.ad-navlink.sub{
  font-size:12.5px;font-weight:600;padding:8px 10px;color:#7C8393;border-radius:9px;
}
.ad-navlink.sub:hover{background:#F6F7FB;color:var(--ad-ink2)}
.ad-navlink.sub.on{background:var(--ad-b-soft);color:var(--ad-b);font-weight:700}
/* ---- 打印任务：勾选 / 预览 ---- */
.ad-pt-bar{
  display:flex;align-items:center;gap:16px;padding:12px 16px;background:#FAFBFE;
  border-radius:14px;margin:0 0 14px;
}
.ad-pt-bar label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--ad-ink2);cursor:pointer}
.ad-pt-bar input[type=checkbox],.ad-tbl input[type=checkbox]{width:16px;height:16px;accent-color:var(--ad-b);cursor:pointer}
.ad-pt-bar label{flex:none;white-space:nowrap}
.ad-pt-bar .ad-btn,.ad-pv-bar .ad-btn,.ad-pv-foot .ad-btn{width:auto;flex:none;white-space:nowrap;margin-top:0;padding:9px 18px;font-size:13px;border-radius:12px}
.ad-pt-sum{font-size:12.5px;color:var(--ad-ink3);margin-left:auto;font-variant-numeric:tabular-nums;white-space:nowrap}
.ad-tbl th.ck,.ad-tbl td.ck{width:46px;text-align:center;padding-left:10px;padding-right:0}
.ad-tbl tr.picked td{background:#F7F9FF}

/* 预览弹层（左选页 + 右 A4 纸） */
.ad-pv{
  width:min(1080px,95vw);max-height:88vh;background:#fff;border-radius:24px;
  box-shadow:0 40px 90px rgba(16,20,32,.3);display:flex;flex-direction:column;overflow:hidden;
}
.ad-pv-body{display:flex;flex:1;min-height:0;border-top:1px solid var(--ad-line)}
.ad-pv-pages{
  width:206px;flex:none;overflow-y:auto;padding:10px;border-right:1px solid var(--ad-line);
  background:#FAFBFE;
}
.ad-pv-pages::-webkit-scrollbar{width:8px}
.ad-pv-pages::-webkit-scrollbar-thumb{background:#DFE4EE;border-radius:99px}
.ad-pv-all{display:flex;align-items:center;gap:8px;padding:8px 10px 10px;font-size:12.5px;font-weight:600;color:var(--ad-ink2);cursor:pointer}
.ad-pv-all input{width:15px;height:15px;accent-color:var(--ad-b);cursor:pointer}
.ad-pv-pg{
  display:flex;gap:9px;padding:10px;border-radius:12px;cursor:pointer;margin-bottom:4px;
  background:#fff;border:1px solid transparent;transition:.14s;
}
.ad-pv-pg:hover{border-color:#E3E8F4}
.ad-pv-pg.cur{border-color:var(--ad-b);background:#F6F8FF;box-shadow:0 4px 12px rgba(91,124,250,.10)}
.ad-pv-pg.off{opacity:.45}
.ad-pv-pg input{width:15px;height:15px;accent-color:var(--ad-b);margin-top:2px;flex:none;cursor:pointer}
.ad-pv-pg-tx b{display:block;font-size:12.5px;font-weight:700;color:var(--ad-ink)}
.ad-pv-pg-tx span{
  display:inline-block;font-size:10.5px;color:#3D5EE0;background:var(--ad-b-soft);
  border-radius:6px;padding:1px 6px;margin-top:4px;font-weight:600;
}
.ad-pv-pg-tx i{display:block;font-style:normal;font-size:10.5px;color:var(--ad-ink3);margin-top:4px;line-height:1.4}
.ad-pv-canvas{
  flex:1;min-width:0;overflow:auto;background:#EDEFF4;padding:20px;
  display:flex;justify-content:center;align-items:flex-start;
}
.ad-pv-canvas::-webkit-scrollbar{width:10px;height:10px}
.ad-pv-canvas::-webkit-scrollbar-thumb{background:#CBD2DE;border-radius:99px;border:3px solid #EDEFF4}
/* A4：794×1123 按 0.668 缩放；外层给等值尺寸，避免布局留白 */
.ad-a4-wrap{width:531px;height:752px;flex:none}
/* 名字必须避开 .ad-paper（批改页的试卷卡），否则会被它的 flex 规则压成竖排 */
.ad-a4{
  width:794px;min-height:1123px;background:#fff;padding:56px 62px;
  transform:scale(.668);transform-origin:top left;
  box-shadow:0 10px 30px rgba(20,26,40,.14);
}
/* 纸张内容：预览与真打印共用同一套排版语言 */
.ad-sheet h1{font-size:19px;margin:0 0 6px;font-weight:800;letter-spacing:-.2px}
.ad-sheet .meta{font-size:11.5px;color:#666;padding-bottom:10px;border-bottom:1px solid #ddd;margin-bottom:18px}
.ad-sheet .item{margin-bottom:18px}
.ad-sheet .q{font-size:13px;line-height:1.85;color:#111}
.ad-sheet .q b{font-weight:800;margin-right:4px}
.ad-sheet .kp{
  display:inline-block;border:1px solid #ddd;border-radius:4px;padding:1px 6px;
  font-size:10.5px;color:#444;margin-left:8px;vertical-align:2px;
}
.ad-sheet .ans{font-size:11.5px;color:#666;margin-top:6px}
.ad-sheet .line{border-bottom:1px dashed #c8c8c8;height:20px;margin-top:8px}
.ad-sheet .note{margin-bottom:16px}
.ad-sheet .note b{font-size:13px}
/* 打印队列任务：安排表 / 词卡 */
.ad-sheet .pj-t{width:100%;border-collapse:collapse;font-size:12px;margin:6px 0 12px}
.ad-sheet .pj-t th,.ad-sheet .pj-t td{border:1px solid #d8d8d8;padding:6px 8px;text-align:left;line-height:1.5}
.ad-sheet .pj-t th{background:#F4F6FA;font-weight:700}
.ad-sheet .pj-wc{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.ad-sheet .pj-w{display:flex;gap:8px;border:1px solid #ddd;border-radius:6px;padding:9px 10px}
.ad-sheet .pj-w i{width:18px;height:18px;flex:none;border-radius:4px;background:#EEF3FB;color:#456;font-size:10px;
  font-style:normal;font-weight:800;display:flex;align-items:center;justify-content:center;margin-top:1px}
.ad-sheet .pj-w b{display:block;font-size:12.5px;font-weight:800}
.ad-sheet .pj-w span{display:block;font-size:10.5px;color:#666;margin-top:2px}
.ad-sheet .pj-w em{display:block;font-size:11px;font-style:normal;color:#222;margin-top:3px;line-height:1.5}
.ad-sheet .note p{font-size:12px;line-height:1.9;color:#333;margin:5px 0 0}
.ad-sheet .ask{
  margin-top:18px;padding:10px 12px;border:1px solid #ddd;border-radius:6px;
  font-size:12px;color:#333;line-height:1.8;
}
.ad-pv-h{display:flex;align-items:flex-start;gap:12px;padding:22px 24px 14px}
.ad-pv-h b{display:block;font-size:17px;font-weight:800}
.ad-pv-h span{display:block;font-size:12px;color:var(--ad-ink3);margin-top:5px}
.ad-pv-x{margin-left:auto;width:32px;height:32px;border-radius:50%;font-size:18px;color:#9AA0AE;line-height:1}
.ad-pv-x:hover{background:#F3F4F8;color:var(--ad-ink)}
.ad-pv-bar{
  display:flex;align-items:center;gap:14px;padding:10px 24px;background:#FAFBFE;
  border-top:1px solid var(--ad-line);border-bottom:1px solid var(--ad-line);
}
.ad-pv-bar label{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;color:var(--ad-ink2);cursor:pointer}
.ad-pv-bar input[type=checkbox]{width:16px;height:16px;accent-color:var(--ad-b);cursor:pointer}
.ad-pv-bar span{font-size:12px;color:var(--ad-ink3);margin-left:auto;font-variant-numeric:tabular-nums}
.ad-pv-bar .ad-btn{padding:8px 16px;font-size:12.5px}
.ad-pv-list{overflow-y:auto;padding:8px 24px 20px;flex:1;min-height:0}
.ad-pv-list::-webkit-scrollbar{width:9px}
.ad-pv-list::-webkit-scrollbar-thumb{background:#DFE4EE;border-radius:99px}
.ad-pv-item{display:flex;gap:12px;padding:14px 2px;border-bottom:1px solid #F4F5F8;cursor:pointer;align-items:flex-start}
.ad-pv-item:last-child{border-bottom:0}
.ad-pv-item input{margin-top:3px;width:16px;height:16px;accent-color:var(--ad-b);flex:none;cursor:pointer}
.ad-pv-q{font-size:13.5px;line-height:1.75;color:var(--ad-ink)}
.ad-pv-q b{font-weight:800;margin-right:4px}
.ad-pv-kp{
  display:inline-block;margin-left:8px;padding:2px 8px;border-radius:7px;
  background:var(--ad-b-soft);color:#3D5EE0;font-size:11px;font-weight:600;vertical-align:2px;
}
.ad-pv-a{font-size:11.5px;color:var(--ad-ink3);margin-top:6px;line-height:1.6}
.ad-pv-a em{font-style:normal;color:var(--ad-r);font-weight:600}
.ad-pv-foot{padding:14px 24px 18px;border-top:1px solid var(--ad-line);display:flex;align-items:center;gap:12px}
.ad-pv-foot .r{margin-left:auto;font-size:11.5px;color:var(--ad-ink3);margin-right:6px}

/* 课时快捷加减 */
.ad-quick-num{display:flex;gap:8px;margin:-4px 0 10px}
.ad-quick-num button{
  flex:1;padding:9px 0;border-radius:11px;background:#FAFBFE;border:1px solid var(--ad-line);
  font-size:12.5px;font-weight:600;color:var(--ad-ink2);
}
.ad-quick-num button:hover{background:#fff;border-color:#C9D6FB;color:var(--ad-b)}

/* ---- 周末排课看板 ---- */
.ad-slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.ad-slot{
  display:block;text-align:left;background:#FAFBFE;border:1.5px solid transparent;
  border-radius:18px;padding:18px 18px 14px;transition:.15s;width:100%;
}
.ad-slot:hover{background:#fff;border-color:#E3E8F4}
.ad-slot.cur{background:#fff;border-color:var(--ad-b);box-shadow:0 8px 22px rgba(91,124,250,.12)}
.ad-slot.full{background:#FFF8F6}
.ad-slot-h{display:flex;align-items:baseline;gap:9px}
.ad-slot-h b{font-size:14.5px;font-weight:800;color:var(--ad-ink)}
.ad-slot-h span{font-size:11.5px;color:var(--ad-ink3);font-variant-numeric:tabular-nums}
.ad-slot-n{display:flex;align-items:baseline;gap:7px;margin:10px 0 9px}
.ad-slot-n b{font-size:32px;font-weight:800;letter-spacing:-1px;line-height:1;font-variant-numeric:tabular-nums}
.ad-slot-n span{font-size:12px;color:var(--ad-ink3)}
.ad-slot-bar{height:7px;border-radius:99px;background:#EEF1F6;overflow:hidden}
.ad-slot-bar i{display:block;height:100%;border-radius:99px;background:var(--ad-grad)}
.ad-slot.full .ad-slot-bar i{background:linear-gradient(135deg,#FF9A7B,#FF6B6B)}
.ad-slot-f{display:flex;justify-content:space-between;margin-top:8px;font-size:11.5px;color:var(--ad-ink3)}
.ad-slot-c{margin-top:7px;font-size:11px;color:#9AA0AE}

.ad-sch-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}
.ad-chips{display:flex;flex-wrap:wrap;gap:7px}
.ad-chip{
  display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border-radius:999px;
  background:#F5F7FC;color:var(--ad-ink2);font-size:12.5px;font-weight:600;
}
.ad-chip:hover{background:#FDECEC;color:var(--ad-r)}
.ad-chip i{font-style:normal;font-size:13px;color:#B9BFCC}
.ad-chip:hover i{color:var(--ad-r)}

.ad-unp{max-height:420px;overflow-y:auto;margin:-4px -4px 0}
.ad-unp::-webkit-scrollbar{width:9px}
.ad-unp::-webkit-scrollbar-thumb{background:#E1E5EE;border-radius:99px}
.ad-unp-row{display:flex;align-items:center;gap:12px;padding:9px 4px;border-bottom:1px solid #F5F6FA}
.ad-unp-row:last-child{border-bottom:0}
.ad-unp-tx{min-width:0;flex:1}
.ad-unp-tx b{display:block;font-size:13px;font-weight:700;color:var(--ad-ink)}
.ad-unp-tx span{display:block;font-size:11px;color:var(--ad-ink3);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ad-unp-b{display:flex;gap:5px;flex:none}
.ad-unp-b button{
  padding:5px 8px;border-radius:8px;background:#F5F7FC;font-size:11px;font-weight:600;color:var(--ad-ink2);
}
.ad-unp-b button:hover{background:var(--ad-b-soft);color:var(--ad-b)}
.ad-unp-b button.off{opacity:.4;cursor:not-allowed}

/* ---- 周次导航 ---- */
.ad-weekbar{display:flex;align-items:center;gap:10px;margin:-2px 0 14px}
.ad-weekbar button{width:30px;height:30px;border-radius:9px;background:#FAFBFE;color:var(--ad-ink2);font-size:15px;line-height:1}
.ad-weekbar button:hover{background:#F0F3FA;color:var(--ad-b)}
.ad-weekbar b{font-size:14px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:.2px}
.ad-weekbar em{font-style:normal;font-size:11px;padding:3px 9px;border-radius:999px;background:var(--ad-b-soft);color:var(--ad-b);font-weight:600}
.ad-weekbar em.grey{background:#F3F4F8;color:var(--ad-ink3)}
.ad-weekbar .ad-weekback{width:auto;padding:0 12px;height:28px;font-size:12px;color:var(--ad-b);background:transparent;font-weight:600}

/* ---- 名单 / 勾选操作 ---- */
.ad-mini-chk{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--ad-ink2);cursor:pointer}
.ad-mini-chk input{width:15px;height:15px;accent-color:var(--ad-b);cursor:pointer}
.ad-att-bar{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.ad-att-bar .ad-btn{width:auto;margin-top:0;padding:8px 16px;font-size:12.5px;border-radius:11px}
.ad-att-bar .ad-btn.danger{background:#fff;color:var(--ad-r);border:1.5px solid #F7D9D9}
.ad-att-bar .ad-btn.danger:hover{background:#FDECEC}
.ad-att-hint{font-size:11px;color:var(--ad-ink3);margin-left:auto}
.ad-att-list{max-height:368px;overflow-y:auto;margin:0 -4px}
.ad-att-list::-webkit-scrollbar{width:9px}
.ad-att-list::-webkit-scrollbar-thumb{background:#E1E5EE;border-radius:99px}
.ad-att-row{display:flex;align-items:center;gap:12px;padding:10px 4px;border-bottom:1px solid #F5F6FA;cursor:pointer}
.ad-att-row:last-child{border-bottom:0}
.ad-att-row:hover{background:#FAFBFE}
.ad-att-row input{width:16px;height:16px;accent-color:var(--ad-b);flex:none;cursor:pointer}
.ad-att-tx{flex:1;min-width:0}
.ad-att-tx b{display:block;font-size:13px;font-weight:700;color:var(--ad-ink)}
.ad-att-tx span{display:block;font-size:11px;color:var(--ad-ink3);margin-top:2px}

/* ---- 批量排课弹层 ---- */
.ad-chk-group{display:flex;flex-wrap:wrap;gap:9px 16px;padding:3px 0}
.ad-chk-group label{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ad-ink2);cursor:pointer}
.ad-chk-group input{width:15px;height:15px;accent-color:var(--ad-b);cursor:pointer}
.ad-pick-head{display:flex;align-items:center;gap:12px;padding:3px 0 8px;font-size:12px;color:var(--ad-ink3)}
.ad-pick-head label{display:flex;align-items:center;gap:6px;font-weight:600;color:var(--ad-ink2);cursor:pointer}
.ad-pick-head input{width:15px;height:15px;accent-color:var(--ad-b);cursor:pointer}
.ad-pick-list{max-height:186px;overflow-y:auto;border:1px solid var(--ad-line);border-radius:12px;padding:4px 10px}
.ad-pick-list::-webkit-scrollbar{width:8px}
.ad-pick-list::-webkit-scrollbar-thumb{background:#E3E7F0;border-radius:99px}
.ad-pick-row{display:flex;align-items:center;gap:9px;padding:7px 0;font-size:12.5px;cursor:pointer;border-bottom:1px solid #F6F7FA}
.ad-pick-row:last-child{border-bottom:0}
.ad-pick-row input{width:15px;height:15px;accent-color:var(--ad-b);cursor:pointer;flex:none}
.ad-pick-row span{font-weight:600;color:var(--ad-ink);margin-right:2px}
.ad-pick-row i{font-style:normal;font-size:11px;color:var(--ad-ink3);margin-left:4px}
.ad-pick-row em{font-style:normal;font-size:10.5px;color:#3D5EE0;background:var(--ad-b-soft);border-radius:5px;padding:1px 6px;margin-left:auto}

/* ---- 平日排课格（寒暑假每天） ---- */
.ad-vhead{display:flex;align-items:baseline;gap:9px;margin:20px 0 11px}
.ad-vhead b{font-size:13.5px;font-weight:800;letter-spacing:.1px}
.ad-vhead span{font-size:11.5px;color:var(--ad-ink3)}
.ad-vgrid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.ad-vcol{background:#FAFBFE;border-radius:14px;padding:9px 9px 10px}
.ad-vcol-h{display:flex;align-items:baseline;gap:5px;padding:0 2px 7px}
.ad-vcol-h b{font-size:12px;font-weight:800}
.ad-vcol-h span{font-size:10.5px;color:var(--ad-ink3);font-variant-numeric:tabular-nums}
.ad-vcol-b{display:flex;flex-direction:column;gap:6px}
.ad-vc{
  display:flex;align-items:center;gap:5px;padding:8px 9px;border-radius:11px;
  background:#fff;border:1px solid transparent;text-align:left;transition:.14s;width:100%;
}
.ad-vc:hover{border-color:#E3E8F4;box-shadow:var(--ad-sh-sm)}
.ad-vc.cur{border-color:var(--ad-b);background:#F6F8FF;box-shadow:0 4px 12px rgba(91,124,250,.12)}
.ad-vc.zero{background:#F6F7FB}
.ad-vc.full b{color:var(--ad-r)}
.ad-vc-h{font-size:10.5px;color:var(--ad-ink3);font-weight:600;flex:none}
.ad-vc b{font-size:15px;font-weight:800;font-variant-numeric:tabular-nums;margin-left:auto}
.ad-vc-f{font-size:10px;color:var(--ad-ink3);flex:none}

/* ---- 会员列表：筛选面板 / 工具条 / 表格 ---- */
.ad-fpanel{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 26px;
  padding:4px 2px 16px;border-bottom:1px solid var(--ad-line);margin-bottom:14px;
}
.ad-fcell{display:flex;align-items:center;gap:10px;min-width:0}
.ad-fcell > label:first-child{width:92px;flex:none;text-align:right;font-size:12.5px;color:var(--ad-ink3)}
.ad-fcell input:not([type=checkbox]),.ad-fcell select{
  flex:1;min-width:0;height:36px;border:1px solid #E7EAF2;border-radius:9px;padding:0 11px;
  font-size:12.5px;background:#fff;font-family:inherit;color:var(--ad-ink2);outline:none;
}
.ad-fcell .ad-mini-chk input{width:15px;height:15px;border:0;padding:0;flex:none}
.ad-fcell input:focus,.ad-fcell select:focus{border-color:var(--ad-b)}
.ad-fcell.f-acts{gap:8px;justify-content:flex-end}
.ad-fcell.f-acts .ad-btn{
  width:auto;margin-top:0;padding:8px 18px;font-size:12.5px;border-radius:9px;flex:none;
}
.ad-listbar{display:flex;align-items:center;gap:9px;margin-bottom:12px}
.ad-listbar .ad-btn{width:auto;margin-top:0;padding:8px 15px;font-size:12.5px;border-radius:10px}
.ad-listbar .r{margin-left:auto;display:flex;align-items:center;gap:8px}
.ad-listbar .ad-seg button{padding:7px 12px}
.ad-iconbtn{
  width:32px;height:32px;border-radius:9px;border:1px solid #E7EAF2;background:#fff;
  color:var(--ad-ink3);font-size:15px;display:grid;place-items:center;flex:none;
}
.ad-iconbtn:hover{color:var(--ad-b);border-color:var(--ad-b)}
.ad-tblwrap{max-height:calc(100vh - 372px);overflow:auto;border-radius:2px}
.ad-tblwrap::-webkit-scrollbar{width:10px;height:10px}
.ad-tblwrap::-webkit-scrollbar-thumb{background:#DDE2EC;border-radius:99px;border:3px solid #fff}
.ad-tblwrap .ad-tbl thead th{position:sticky;top:0;background:#fff;z-index:2;box-shadow:inset 0 -1px 0 #EFF2F8}
.ml-tbl th,.ml-tbl td{white-space:nowrap;font-size:12.5px}
.ml-tbl td{padding:11px 10px}
.ml-name{font-weight:700;cursor:pointer}
.ml-name:hover{color:var(--ad-b)}
.ml-name i{font-style:normal;font-weight:400;color:var(--ad-ink3);font-size:11.5px}
.ml-bind{font-size:11px;padding:3px 8px;border-radius:6px;background:#F3F4F8;color:#98A0AF}
.ml-trial{display:inline-block;font-size:9.5px;font-weight:800;color:#8A5A00;background:#FFF3DD;
  border-radius:4px;padding:1px 5px;margin-right:5px;vertical-align:1px;letter-spacing:.3px}
.ml-bind.on{background:var(--ad-g-soft);color:#12916D}
.ml-time{color:var(--ad-ink3);font-size:12px;font-variant-numeric:tabular-nums}
.ml-left{display:block;font-size:10.5px;color:var(--ad-ink3);margin-top:2px}
.ml-left.r{color:var(--ad-r);font-weight:800}
.ml-foot{font-size:11.5px;color:var(--ad-ink3);padding:12px 4px 0;border-top:1px solid #F2F4F9;margin-top:4px}
.ml-foot b{color:var(--ad-ink)}
.ml-foot span{color:var(--ad-ink3)}
.ad-link.warn{color:#D64545}

/* ---- 会员档案 ---- */
.mp-card{padding:20px 22px}
.mp-head{display:flex;gap:16px;align-items:flex-start}
.mp-av{
  width:54px;height:54px;border-radius:50%;flex:none;
  background:linear-gradient(135deg,#6D8DFB,#8B6CF0);color:#fff;
  display:grid;place-items:center;font-size:21px;font-weight:800;
}
.mp-idc{flex:1;min-width:0}
.mp-idc h2{font-size:19px;font-weight:800;margin:0 0 6px;display:flex;align-items:center;gap:7px;letter-spacing:-.2px}
.mp-sex{font-size:13px;color:#7B8CC0;font-weight:700}
.mp-sex.f{color:#E4739B}
.mp-sub{font-size:12.5px;color:var(--ad-ink2);margin:0 0 9px}
.mp-sub i{font-style:normal;color:#D6DAE4;margin:0 6px}
.mp-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 26px;font-size:12px;color:var(--ad-ink3);max-width:430px}
.mp-meta b{color:var(--ad-ink2);font-weight:600}
.mp-meta b.ok{color:#12916D}
.mp-mini{
  font-size:11px;padding:3px 9px;border-radius:6px;border:1px solid #D9E1F5;
  color:var(--ad-b);background:#fff;margin-left:4px;font-family:inherit;
}
.mp-mini.danger{border-color:#F3D2D2;color:#D64545}
.mp-nums{display:flex;gap:26px;flex:none;padding-top:2px}
.mp-nums div{text-align:center}
.mp-nums b{display:block;font-size:19px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.3}
.mp-nums b.r{color:var(--ad-r)}
.mp-nums span{font-size:11px;color:var(--ad-ink3)}
.mp-acts{display:flex;gap:8px;flex:none;padding-top:4px}
.mp-acts .ad-btn{width:auto;margin:0;padding:8px 14px;font-size:12.5px;border-radius:9px}
.mp-card-h{margin:0 0 12px}
.mp-card-h h3{font-size:14px;font-weight:800;margin:0}
.mp-card-h b{color:var(--ad-b)}
.mp-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:900px}
.mp-mcard{
  border:1px solid #E3E9F8;border-radius:15px;padding:13px 15px;
  background:linear-gradient(135deg,#F8FAFF,#F2F6FF);
}
.mp-mcard.dead{background:#FAFAFC;border-color:#ECEEF3}
.mp-mc-top{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.mp-mc-top b{font-size:14px;font-weight:800}
.mp-tag{font-size:10.5px;font-weight:700;padding:3px 8px;border-radius:6px;background:#E7F8F1;color:#12916D}
.mp-tag.blue{background:#E9EEFE;color:#3D5EE0}
.mp-tag.dead{background:#FDECEC;color:#D64545}
.mp-mc-e{font-size:11.5px;color:var(--ad-ink3)}
.mp-mc-e b{color:var(--ad-ink2);font-weight:600}
.mp-mc-left{margin-left:8px}
.mp-mc-bot{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin-top:10px;padding-top:9px;border-top:1px dashed #DDE5F8;font-size:11.5px;color:var(--ad-ink3);
}
.mp-tabs{
  display:flex;gap:2px;border-bottom:1px solid var(--ad-line);
  margin:-6px -22px 16px;padding:0 12px;overflow-x:auto;
}
.mp-tabs::-webkit-scrollbar{height:0}
.mp-tabs button{
  flex:none;font-size:12.5px;padding:11px 11px;color:var(--ad-ink3);font-weight:600;
  border-bottom:2px solid transparent;white-space:nowrap;
}
.mp-tabs button.on{color:var(--ad-b);border-bottom-color:var(--ad-b);font-weight:800}
.mp-body{min-height:250px}
.mp-2col{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:26px}
.mp-sec-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.mp-sec-h h3{font-size:13.5px;font-weight:800;margin:0}
.mp-sec-h .ad-link{color:var(--ad-b);font-size:12px;cursor:pointer}
.mp-kv{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px 22px}
.mp-kv div{display:flex;gap:2px;font-size:12.5px;min-width:0}
.mp-kv span{color:var(--ad-ink3);flex:none}
.mp-kv b{color:var(--ad-ink);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mp-sel{
  height:28px;border:1px solid #E7EAF2;border-radius:8px;font-size:11.5px;
  padding:0 6px;color:var(--ad-ink2);background:#fff;font-family:inherit;
}
.mp-kpis{display:flex;gap:34px;margin:2px 0 18px}
.mp-kpis div{text-align:center}
.mp-kpis b{display:block;font-size:18px;font-weight:800;color:#3D5EE0;font-variant-numeric:tabular-nums;line-height:1.35}
.mp-kpis span{font-size:11.5px;color:var(--ad-ink3)}
.mp-bars{display:flex;flex-direction:column;gap:13px}
.mp-bar{display:flex;align-items:center;gap:10px}
.mp-bar-s{width:34px;flex:none;font-size:12px;color:var(--ad-ink2)}
.mp-bar-t{flex:1;height:9px;border-radius:99px;background:#F1F3F9;overflow:hidden;min-width:30px}
.mp-bar-t i{display:block;height:100%;border-radius:99px}
.mp-bar-t i.b1{background:#F06A6A}
.mp-bar-t i.b2{background:#FFC24B}
.mp-bar-t i.b3{background:#FFE08A}
.mp-bar-t i.b4{background:#8FC3FF}
.mp-bar-v{width:112px;flex:none;text-align:right;font-size:11px;color:var(--ad-ink3)}
@media (max-width:1240px){
  .ad-fpanel{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mp-2col{grid-template-columns:minmax(0,1fr)}
  .mp-cards{grid-template-columns:minmax(0,1fr)}
}


/* ---- 更多操作下拉 ---- */
.mp-more-wrap{position:relative;flex:none}
.mp-more{
  position:absolute;top:40px;right:0;width:152px;background:#fff;border-radius:12px;
  box-shadow:0 18px 40px rgba(20,26,40,.18);padding:6px;display:none;z-index:14;
  border:1px solid #EEF1F7;
}
.mp-more.on{display:block}
.mp-more::before{
  content:'';position:absolute;top:-6px;right:26px;width:12px;height:12px;background:#fff;
  transform:rotate(45deg);border-left:1px solid #EEF1F7;border-top:1px solid #EEF1F7;
}
.mp-more button{
  display:block;width:100%;text-align:left;padding:9px 12px;font-size:13px;
  color:var(--ad-ink2);border-radius:8px;font-weight:500;background:transparent;
}
.mp-more button:hover{background:#F5F8FF;color:var(--ad-b)}

/* ---- 购买会员（宽弹层） ---- */
.ad-modal.mid{width:min(640px,94vw);max-height:90vh;overflow:auto}
.ad-modal.wide{
  width:min(1180px,96vw);max-height:92vh;padding:0;display:flex;flex-direction:column;overflow:hidden;
}
.bp-head{display:flex;align-items:center;gap:12px;padding:15px 22px;border-bottom:1px solid var(--ad-line);flex:none}
.bp-head h3{margin:0;font-size:18px}
.bp-head span{font-size:12px;color:var(--ad-ink3)}
.bp-head span b{color:var(--ad-ink2)}
.bp-x{margin-left:auto;width:30px;height:30px;border-radius:8px;color:var(--ad-ink3);font-size:14px}
.bp-x:hover{background:#F3F5FA;color:var(--ad-ink)}
.bp-wrap{display:flex;flex:1;min-height:0;overflow:hidden}
.bp-main{flex:1;min-width:0;overflow-y:auto;padding:14px 22px 6px}
.bp-main::-webkit-scrollbar{width:10px}
.bp-main::-webkit-scrollbar-thumb{background:#DDE2EC;border-radius:99px;border:3px solid #fff}
.bp-rail{width:136px;flex:none;border-left:1px solid var(--ad-line);padding:20px 12px;background:#FAFBFE}
.bp-st{
  display:flex;align-items:center;gap:9px;width:100%;padding:9px 8px;border-radius:9px;
  color:var(--ad-ink3);font-size:12.5px;font-weight:600;text-align:left;margin-bottom:4px;
  background:transparent;
}
.bp-st i{
  width:20px;height:20px;border-radius:50%;border:1.5px solid #D6DBE7;display:grid;place-items:center;
  font-size:11px;font-style:normal;flex:none;color:var(--ad-ink3);
}
.bp-st.on{color:var(--ad-ink);background:#fff;box-shadow:var(--ad-sh-sm)}
.bp-st.on i{background:var(--ad-b);border-color:var(--ad-b);color:#fff}
.bp-sec{border:1px solid #EFF2F8;border-radius:14px;padding:12px 15px;margin-bottom:11px;background:#fff}
.bp-sec.on{border-color:#D9E2FA;box-shadow:0 0 0 3px #F5F8FF}
.bp-sec-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px;flex-wrap:wrap;gap:8px}
.bp-sec-h b{font-size:13.5px;font-weight:800}
.bp-sec-h span{font-size:11.5px;color:var(--ad-ink3);font-weight:400}
.bp-sec-r{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.bp-hint-inline{font-size:11px;color:var(--ad-ink3)}
.bp-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 18px}
.bp-f{display:flex;flex-direction:column;gap:5px;min-width:0}
.bp-f label{font-size:11.5px;color:var(--ad-ink3)}
.bp-f label::before{content:'*';color:var(--ad-r);margin-right:2px}
.bp-f input,.bp-f select{
  height:32px;border:1px solid #E7EAF2;border-radius:8px;padding:0 9px;font-size:12.5px;
  font-family:inherit;color:var(--ad-ink2);background:#fff;outline:none;min-width:0;
}
.bp-f input:disabled{background:#F7F8FB;color:var(--ad-ink3)}
.bp-f input:focus,.bp-f select:focus{border-color:var(--ad-b)}
.bp-subs{display:flex;gap:10px;margin-top:10px;align-items:flex-start}
.bp-subs > label{font-size:11.5px;color:var(--ad-ink3);width:58px;flex:none;padding-top:6px}
.bp-subs > label::before{content:'*';color:var(--ad-r);margin-right:2px}
.bp-subs-b{display:flex;flex-wrap:wrap;gap:7px}
.bp-sb{padding:5px 12px;border-radius:7px;border:1px solid #E1E6F0;background:#fff;font-size:12px;color:var(--ad-ink2)}
.bp-sb.on{background:#EAF0FE;border-color:#B9CBF7;color:#3D5EE0;font-weight:700}
.bp-hint{font-size:11px;color:var(--ad-ink3);margin-top:9px;padding-left:68px}
.bp-cart{overflow-x:auto;border:1px solid #EFF2F8;border-radius:10px}
.bp-tbl{width:100%;border-collapse:collapse;font-size:11.5px;min-width:900px}
.bp-tbl th{
  background:#FAFBFE;color:var(--ad-ink3);font-weight:600;text-align:left;
  padding:8px 6px;white-space:nowrap;border-bottom:1px solid #EFF2F8;
}
.bp-tbl td{padding:9px 6px;border-bottom:1px solid #F5F7FB;white-space:nowrap;color:var(--ad-ink2)}
.bp-tbl tr:last-child td{border-bottom:0}
.bp-tbl .num{text-align:right;font-variant-numeric:tabular-nums}
.bp-sub{display:block;font-size:10.5px;color:var(--ad-ink3);margin-top:2px;max-width:158px;overflow:hidden;text-overflow:ellipsis}
.bp-tag{font-size:10.5px;color:#3D5EE0;background:#EAF0FE;border-radius:5px;padding:2px 6px}
.bp-in{
  width:56px;height:26px;border:1px solid #E7EAF2;border-radius:6px;padding:0 6px;
  font-size:12px;font-family:inherit;text-align:right;outline:none;color:var(--ad-ink2);
}
.bp-del{width:24px;height:24px;border-radius:6px;color:#D64545;background:#FDECEC;font-size:11px}
.bp-sum{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px 14px;margin-bottom:11px}
.bp-sum > div{display:flex;flex-direction:column;gap:3px;background:#FAFBFE;border-radius:10px;padding:9px 12px}
.bp-sum .wide{grid-column:span 3}
.bp-sum span{font-size:11px;color:var(--ad-ink3)}
.bp-sum b{font-size:15px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--ad-ink)}
.bp-sum b.big{color:#D64545;font-size:16px}
.bp-sum i{font-style:normal;font-size:10.5px;color:var(--ad-ink3)}
.bp-pool{border:1px dashed #E3E8F4;border-radius:12px;padding:11px 14px}
.bp-pool-h{font-size:11.5px;color:var(--ad-ink3);margin-bottom:9px}
.bp-pool-h b{color:var(--ad-ink2)}
.bp-pool-b{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.bp-pool-b > div{display:flex;flex-direction:column;gap:3px}
.bp-pool-b span{font-size:11px;color:var(--ad-ink3)}
.bp-pool-b b{font-size:18px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--ad-ink)}
.bp-pool-b b.w{color:#C97A08}
.bp-pool-b b.g{color:#12916D}
.bp-foot{display:flex;align-items:center;gap:9px;padding:12px 22px;border-top:1px solid var(--ad-line);flex:none;background:#fff}
.bp-foot-l{margin-right:auto;font-size:12px;color:var(--ad-ink3)}
.bp-foot-l b{font-size:15px;color:#D64545;font-weight:800;margin-left:4px}
.bp-btn{
  padding:8px 16px;border-radius:9px;border:1px solid #E1E6F0;background:#fff;
  font-size:12.5px;color:var(--ad-ink2);font-weight:600;
}
.bp-btn:hover{border-color:var(--ad-b);color:var(--ad-b)}
.bp-btn.danger{color:#D64545;border-color:#F3D2D2}
.bp-go{padding:8px 20px;border-radius:9px;background:var(--ad-ink);color:#fff;font-size:12.5px;font-weight:700}
.bp-go:hover{opacity:.9}
.bp-refund{display:grid;gap:8px;margin-bottom:14px}
.bp-refund > div{display:flex;justify-content:space-between;font-size:12.5px;color:var(--ad-ink3);padding:8px 12px;background:#FAFBFE;border-radius:9px}
.bp-refund b{color:var(--ad-ink)}
.bp-refund .big{background:#FFF6F6}
.bp-refund .big b{color:#D64545;font-size:17px;font-weight:800}


/* ---- 代理商：卡配置卡片 / 账户 KPI ---- */
.ac-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:4px}
.ac-card{border:1px solid #EFF2F8;border-radius:14px;padding:13px 15px;background:#fff}
.ac-card-h{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.ac-card-h b{font-size:14px;font-weight:800;letter-spacing:-.2px}
.ac-card-b{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 12px;margin-bottom:11px}
.ac-card-b > div{display:flex;flex-direction:column;gap:2px;min-width:0}
.ac-card-b span{font-size:10.5px;color:var(--ad-ink3)}
.ac-card-b b{font-size:14px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--ad-ink)}
.ac-card-b b.price{color:#C97A08}
.ac-card-f{
  display:flex;align-items:center;justify-content:space-between;
  border-top:1px solid #F4F6FA;padding-top:9px;font-size:11.5px;color:var(--ad-ink3);
}
.ac-card-f .bp-btn{padding:5px 12px;font-size:11.5px;border-radius:7px}

.ac-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
.ac-kpi{
  background:#FAFBFE;border:1px solid #EFF2F8;border-radius:14px;
  padding:14px 16px;display:flex;flex-direction:column;gap:3px;
}
.ac-kpi.main{background:linear-gradient(135deg,#F3F7FF,#EBF1FF);border-color:#DCE7FB}
.ac-kpi span{font-size:11.5px;color:var(--ad-ink3)}
.ac-kpi b{font-size:24px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.6px;color:var(--ad-ink);line-height:1.2}
.ac-kpi.main b{color:#3D5EE0}
.ac-kpi i{font-style:normal;font-size:11px;color:var(--ad-ink3)}
@media (max-width:1400px){ .ac-cards{grid-template-columns:repeat(2,minmax(0,1fr))} }

/* ---- 门店角色 / 卡形态 ---- */
.kind-tip{
  display:inline-block;font-size:10.5px;color:var(--ad-ink3);background:#F4F6FA;
  border-radius:5px;padding:1px 6px;margin-left:6px;vertical-align:1px;
}
.kind-pick{display:grid;gap:8px;margin-top:2px}
.kind-pick label{
  display:grid;grid-template-columns:16px minmax(0,1fr);grid-template-rows:auto auto;
  gap:2px 9px;align-items:start;padding:10px 12px;
  border:1px solid #E7EAF2;border-radius:10px;cursor:pointer;background:#fff;
}
.kind-pick label input{grid-column:1;grid-row:1 / span 2;margin-top:3px}
.kind-pick label b{grid-column:2;grid-row:1}
.kind-pick label span{grid-column:2;grid-row:2}
.kind-pick label.on{border-color:var(--ad-b);background:#F6F8FF}
.kind-pick label.off{opacity:.45;cursor:not-allowed}
.kind-pick label input{accent-color:var(--ad-b);flex:none}
.kind-pick label b{display:block;font-size:13px;font-weight:800;margin-bottom:2px;color:var(--ad-ink)}
.kind-pick label span{display:block;font-size:11px;color:var(--ad-ink3);line-height:1.5}
.ktabs{display:flex;gap:8px;margin:2px 0 14px}
.ktabs button{
  flex:none;text-align:left;padding:9px 16px;border-radius:10px;border:1px solid #E7EAF2;
  background:#fff;color:var(--ad-ink2);font-size:13px;font-weight:700;
}
.ktabs button span{display:block;font-size:10.5px;color:var(--ad-ink3);font-weight:400;margin-top:2px}
.ktabs button.on{border-color:var(--ad-b);background:#F6F8FF;color:#3D5EE0}
.ktabs button.on span{color:#6C82CF}
.ml-kind{font-size:10px;color:#3D5EE0;background:#EAF0FE;border-radius:4px;padding:1px 5px;margin-left:5px}

.ad-dot{
  margin-left:auto;min-width:16px;height:16px;padding:0 4px;border-radius:8px;
  background:var(--ad-r);color:#fff;font-size:10px;font-weight:700;font-style:normal;
  display:grid;place-items:center;line-height:1;
}
.ad-navlink.sub.on::before{
  content:'';position:absolute;left:0;width:3px;height:16px;border-radius:2px;background:var(--ad-b);
}
.ad-rail-foot{
  display:flex;align-items:center;gap:8px;padding:14px 8px 0;border-top:1px solid var(--ad-line);
  font-size:11.5px;color:var(--ad-ink3);
}
.ad-rail-foot button{margin-left:auto;font-size:11.5px;color:var(--ad-b);font-weight:600}

.ad-main{min-width:0;display:flex;flex-direction:column}
.ad-top{
  height:88px;flex:none;display:flex;align-items:center;gap:14px;
  padding:0 32px;background:rgba(243,244,248,.92);backdrop-filter:blur(10px);
  position:sticky;top:0;z-index:5;
}
.ad-top h1{font-size:23px;font-weight:800;margin:0;letter-spacing:-.3px}
.ad-crumb{display:flex;align-items:center;gap:9px;flex:none}
.ad-crumb.hide{display:none}
.ad-home{display:flex;align-items:center;gap:6px;border:1.5px solid var(--ad-line);background:#fff;
  border-radius:11px;padding:7px 13px;font-size:12.5px;font-weight:600;color:var(--ad-ink2);
  cursor:pointer;font-family:inherit;transition:.14s;box-shadow:var(--ad-sh-sm)}
.ad-home:hover{border-color:#C3D0FB;color:var(--ad-b);background:#F6F8FF}
.ad-home:active{transform:scale(.98)}
.ad-sep{color:#C6CCD9;font-size:13px}
.ad-rail-top:hover b{color:var(--ad-b)}
.ad-rail-top:hover .ad-logo{transform:scale(1.04)}
.ad-top-r{margin-left:auto;display:flex;align-items:center;gap:12px;font-size:12px;color:var(--ad-ink3)}
.ad-pill{background:#fff;color:var(--ad-ink2);border-radius:999px;padding:7px 13px;font-size:12px;font-weight:600;box-shadow:var(--ad-sh-sm)}
.ad-user{font-size:12.5px;color:var(--ad-ink2);font-weight:600}
.ad-ghost{border:1.5px solid var(--ad-line);color:var(--ad-ink2);border-radius:12px;padding:8px 14px;font-size:12.5px;background:#fff;font-weight:600}
/* 顶部通知铃铛 */
.ad-bell{position:relative;flex:none}
.ad-bell-btn{position:relative;width:34px;height:34px;border-radius:11px;background:#fff;
  box-shadow:var(--ad-sh-sm);display:grid;place-items:center;color:var(--ad-ink2);cursor:pointer;border:0;padding:0}
.ad-bell-btn:hover{color:var(--ad-b)}
.ad-bell-btn .ico{width:17px;height:17px}
[data-theme] .ad-bell-btn, .ad-bell-btn{background:#fff}
.ad-bell-dot{position:absolute;top:-5px;right:-5px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;
  background:#E8453C;color:#fff;font-size:10px;font-weight:800;display:grid;place-items:center;
  border:2px solid #F3F4F8;font-style:normal;line-height:1}
.ad-bell-dot.hide{display:none}
.ad-bell-pop{position:absolute;right:0;top:44px;width:342px;max-height:430px;overflow:auto;background:#fff;
  border-radius:16px;box-shadow:0 22px 54px rgba(16,20,32,.2);padding:6px;z-index:60}
.ad-bell-pop.hide{display:none}
.ad-bell-h{display:flex;align-items:center;padding:9px 10px 10px;border-bottom:1px solid #F1F3F7}
.ad-bell-h b{font-size:13.5px;font-weight:800;color:var(--ad-ink)}
.ad-bell-h span{margin-left:auto;font-size:11px;color:var(--ad-ink3)}
.ad-nf{display:flex;gap:10px;padding:11px 10px;border-radius:11px;cursor:pointer;align-items:center}
.ad-nf:hover{background:#FAFBFE}
.ad-nf .ico-w{width:31px;height:31px;border-radius:9px;background:#F1F5FF;color:#3E52C4;display:grid;
  place-items:center;flex:none}
.ad-nf .ico-w .ico{width:15px;height:15px}
.ad-nf .tx{flex:1;min-width:0}
.ad-nf .tx b{display:block;font-size:12.5px;font-weight:700;color:var(--ad-ink)}
.ad-nf .tx span{display:block;font-size:11px;color:#8A94A6;margin-top:2px;line-height:1.5}
.ad-nf .n{min-width:20px;height:20px;border-radius:10px;background:#FDECEC;color:#D93B3B;font-size:11px;
  font-weight:800;display:grid;place-items:center;padding:0 5px;flex:none}
.ad-bell-empty{padding:26px 10px;text-align:center;color:#9AA4B6;font-size:12px;line-height:1.9}
.ad-bell-f{border-top:1px solid #F1F3F7;padding:9px 10px 5px;text-align:center;font-size:11px;color:#9AA4B6}
.ad-body{padding:0 32px 48px;max-width:1320px;width:100%}
.ad-view{display:none}
.ad-view.on{display:block}
.av-split{display:none;grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);gap:20px;align-items:start}
.av-split.on{display:grid}
.av-split.on > .ad-view{display:block}

/* ---- KPI ---- */
.ad-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:18px}
.ad-kpi{background:#fff;border-radius:var(--ad-r-lg);padding:20px 20px 18px;box-shadow:var(--ad-sh-sm)}
.ad-kpi span{display:block;font-size:12.5px;color:var(--ad-ink3);font-weight:600}
.ad-kpi b{display:block;font-size:34px;font-weight:800;letter-spacing:-1px;margin:10px 0 6px;line-height:1}
.ad-kpi i{display:block;font-size:11.5px;color:var(--ad-ink3);font-style:normal;line-height:1.5}

/* ---- 面板 / 表格 ---- */
.ad-panel{background:#fff;border-radius:var(--ad-r-lg);padding:22px;box-shadow:var(--ad-sh-sm);margin-bottom:18px}
.ad-panel-h{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.ad-panel-h h2{font-size:16.5px;font-weight:800;margin:0;letter-spacing:.1px}
.ad-panel-h .r{margin-left:auto;font-size:12px;color:var(--ad-ink3);display:flex;gap:10px;align-items:center}
.ad-tbl{width:100%;border-collapse:collapse;font-size:13px}
.ad-tbl th{
  text-align:left;font-weight:600;color:var(--ad-ink3);font-size:11.5px;
  padding:10px 12px;border-bottom:1px solid var(--ad-line);white-space:nowrap;
}
.ad-tbl td{padding:14px 12px;border-bottom:1px solid #F4F5F8;vertical-align:middle;color:var(--ad-ink2)}
.ad-tbl tbody tr:last-child td{border-bottom:0}
.ad-tbl tbody tr{transition:background .12s}
.ad-tbl tbody tr:hover{background:#FAFBFE}
.ad-tbl td b{color:var(--ad-ink);font-weight:700}
.ad-tbl .num{font-variant-numeric:tabular-nums;color:var(--ad-ink)}

/* ---- 剩余课次：筛选条 + 合计条 ---- */
.ad-badge.warn{background:#FFF4E2;color:#C97A08}
.ad-filterbar{display:flex;align-items:center;gap:9px;margin:-2px 0 13px;flex-wrap:wrap}
.ad-filterbar select,.ad-filterbar input:not([type=checkbox]){
  height:34px;border:1px solid #E7EAF2;border-radius:10px;padding:0 11px;font-size:12.5px;
  background:#fff;color:var(--ad-ink2);outline:none;font-family:inherit;
}
.ad-filterbar .ad-mini-chk input{width:15px;height:15px;border:0;padding:0}
.ad-filterbar input{width:150px}
.ad-filterbar select:focus,.ad-filterbar input:focus{border-color:var(--ad-b)}
.ad-sumbar{
  display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;
  background:#FAFBFE;border:1px solid #EFF2F8;border-radius:14px;padding:13px 16px;margin-bottom:14px;
}
.ad-sumbar > div{display:flex;flex-direction:column;gap:3px;min-width:0}
.ad-sumbar span{font-size:11px;color:var(--ad-ink3);font-weight:600;white-space:nowrap}
.ad-sumbar b{font-size:21px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.4px;line-height:1.1}
.ad-sumbar b.g{color:#12916D}
.ad-sumbar b.b{color:#3D5EE0}
.ad-sumbar b.w{color:#C97A08}
.ad-sumbar b.r{color:var(--ad-r)}
.rp-days{font-variant-numeric:tabular-nums}
.rp-days.soon{color:var(--ad-r)}
.rp-days.mid{color:#C97A08}
.rp-days.dead{color:#98A0AF;text-decoration:line-through}
.rp-days-u{font-size:10.5px;color:var(--ad-ink3);margin-left:1px}
.rp-end{display:block;font-size:10.5px;color:var(--ad-ink3);margin-top:1px}
.ad-sumbar i{font-style:normal;font-size:10.5px;color:var(--ad-ink3);margin-top:-2px}
.ad-rm-prog{display:flex;align-items:center;gap:7px}
.ad-rm-prog .ad-bar{flex:1;margin:0!important;min-width:40px}
.ad-rm-prog span{font-size:10.5px;color:var(--ad-ink3);font-variant-numeric:tabular-nums;flex:none;width:30px;text-align:right}
.ad-name{display:flex;align-items:center;gap:10px;font-weight:600;color:var(--ad-ink)}
.ad-av{
  width:32px;height:32px;border-radius:11px;background:var(--ad-b-soft);color:var(--ad-b);
  display:grid;place-items:center;font-size:13px;font-weight:700;flex:none;
}
.ad-badge{font-size:11px;font-weight:600;padding:4px 9px;border-radius:999px;background:#F3F4F8;color:var(--ad-ink3);white-space:nowrap}
.ad-badge.super{background:#EFEDFE;color:#6A56E8}
.ad-badge.owner{background:var(--ad-b-soft);color:#3D5EE0}
.ad-badge.coach{background:var(--ad-g-soft);color:#12916D}
.ad-badge.region{background:#E7F1FF;color:#1D5BD6}
.ad-badge.agent{background:#FFF3E2;color:#B2690A}
.ad-badge.on{background:var(--ad-g-soft);color:#12916D}
.ad-badge.off{background:#F3F4F8;color:#98A0AF}
.ad-rate{font-weight:800;font-variant-numeric:tabular-nums}
.ad-rate.bad{color:var(--ad-r)}
.ad-rate.warn{color:#D9880B}
.ad-rate.ok{color:#16A87B}
.ad-link{color:var(--ad-b);cursor:pointer;font-size:12.5px;font-weight:600}
.ad-link:hover{opacity:.8}
.ad-bar{height:7px;border-radius:999px;background:#F1F3F7;overflow:hidden;min-width:70px}
.ad-bar i{display:block;height:100%;border-radius:999px;background:var(--ad-grad);min-width:3px}

/* ---- 总览：欢迎条 / 快速导航 / 四宫格 ---- */
.ad-hello{display:flex;align-items:flex-start;gap:16px;margin:0 2px 15px}
.ad-hello-l h1{font-size:22px;font-weight:800;margin:0 0 7px;letter-spacing:-.3px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ad-hello-tag{font-size:11.5px;font-weight:600;color:var(--ad-ink2);background:#fff;border-radius:999px;padding:5px 12px;box-shadow:var(--ad-sh-sm)}
.ad-hello-l p{font-size:12.5px;color:var(--ad-ink3);margin:0;line-height:1.6}
.ad-hello-r{margin-left:auto;text-align:right;flex:none;padding-top:2px}
.ad-hello-r b{display:block;font-size:12.5px;color:var(--ad-ink2);font-variant-numeric:tabular-nums;font-weight:600}
.ad-hello-r span{font-size:11.5px;color:var(--ad-ink3)}

.ad-quick-panel{padding:16px 20px 17px}
.ad-quick{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:10px}
/* 类名带 qn，别跟批改页每题行的 .ad-q 撞（撞了会把题目行压成竖排） */
.ad-qn{position:relative;display:flex;flex-direction:column;align-items:center;gap:7px;padding:11px 6px 10px;border-radius:16px;background:#FAFBFE;border:1px solid transparent;transition:.15s}
.ad-qn:hover{background:#fff;border-color:#E3E8F4;box-shadow:var(--ad-sh-sm);transform:translateY(-1px)}
.ad-qn-ico{width:36px;height:36px;border-radius:12px;background:#fff;display:grid;place-items:center;color:var(--ad-b);box-shadow:0 3px 10px rgba(22,26,40,.06)}
.ad-qn-ico .ico{width:19px;height:19px}
.ad-qn b{font-size:11.5px;font-weight:600;color:var(--ad-ink2);text-align:center;line-height:1.3}
.ad-qn i{position:absolute;top:7px;right:calc(50% - 28px);min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--ad-r);color:#fff;font-size:10px;font-weight:700;font-style:normal;display:grid;place-items:center;line-height:1}

.ad-grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.ad-grid2 .ad-panel{margin-bottom:0}
.ad-grid2 .ad-tbl td{padding:11px 10px}
.ad-grid2 .ad-tbl th{padding:9px 10px}
.ad-grid2 .ad-panel{padding:20px}
.ad-mini{display:flex;flex-wrap:wrap;gap:20px;margin:-6px 0 10px}
.ad-mini div{display:flex;align-items:baseline;gap:6px}
.ad-mini span{font-size:11.5px;color:var(--ad-ink3);font-weight:600}
.ad-mini b{font-size:20px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.5px}
/* ===================== 自主批改申请 ===================== */
.sa-alert{display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:12px;
  background:#F4F7FF;color:#3E52C4;font-size:12.5px;font-weight:600;margin-bottom:14px}
.sa-alert b{font-size:15px;font-weight:800;color:#D93B3B}
.sa-alert .r{margin-left:auto;display:flex;align-items:center;gap:4px}
.sa-f{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin-bottom:12px}
.sa-f .fi{display:flex;flex-direction:column;gap:5px}
.sa-f label{font-size:11.5px;color:var(--ad-ink3);font-weight:600}
.sa-f select,.sa-f input{height:36px;border:1.5px solid var(--ad-line);border-radius:10px;
  padding:0 10px;font-size:12.5px;background:#fff;color:var(--ad-ink);min-width:130px;font-family:inherit}
.sa-f input{min-width:176px}
.sa-f select:focus,.sa-f input:focus{outline:none;border-color:#AFC0FA;box-shadow:0 0 0 3px rgba(91,124,250,.1)}
.sa-btns{display:flex;gap:8px;margin-left:auto}
.sa-bulk{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:11px;
  background:#FAFBFE;border:1px solid var(--ad-line);margin-bottom:8px;font-size:12.5px;color:var(--ad-ink2)}
.sa-bulk .r{margin-left:auto;display:flex;gap:8px;align-items:center}
.sa-bulk b{color:var(--ad-ink);font-weight:800}
.sa-wrap{overflow-x:auto}
.sa-tbl{min-width:1024px}
.sa-tbl th{background:#fff}
.sa-tbl td{padding:10px 9px}
.sa-tbl .ck{width:34px;padding-right:0}
.sa-tbl th:last-child,.sa-tbl td:last-child{min-width:84px}
.sa-tbl .ck input{width:15px;height:15px;accent-color:var(--ad-b);cursor:pointer;display:block}
.sa-tbl tr.sel{background:#F6F8FF}
.sa-tbl tr.sel:hover{background:#F0F4FF}
.sa-id{display:block;font-size:10.5px;color:var(--ad-ink3);font-weight:600;margin-top:1px}
/* 「刚交」：学员 30 分钟内提交、伴学师还没点开看过 —— 一键同意会先停下来问一句 */
.sa-new{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:7px;background:#FFF1E4;color:#C9741A;
  font-size:10.5px;font-weight:800;vertical-align:1px}
.sa-info{max-width:184px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ad-ink)}
.sa-pg{display:flex;align-items:center;gap:6px;justify-content:flex-end;margin-top:14px;font-size:12px;color:var(--ad-ink3);flex-wrap:wrap}
.sa-pg button{min-width:28px;height:28px;border-radius:8px;background:#fff;border:1px solid var(--ad-line);
  font-size:12px;color:var(--ad-ink2);cursor:pointer;padding:0 7px}
.sa-pg button.on{background:var(--ad-b);border-color:var(--ad-b);color:#fff;font-weight:700}
.sa-pg button:disabled{opacity:.4;cursor:default}
.sa-pg select{height:28px;border:1px solid var(--ad-line);border-radius:8px;font-size:12px;padding:0 4px;background:#fff;font-family:inherit}
.sa-pg input{width:46px;height:28px;border:1px solid var(--ad-line);border-radius:8px;text-align:center;font-size:12px;font-family:inherit}

/* 学员考勤提示条（从首页快捷入口进来时显示） */
.att-bar{display:flex;align-items:center;gap:9px;padding:10px 13px;border-radius:12px;
  background:#F0F6FF;color:#2C5FD6;font-size:12.5px;font-weight:600;margin-bottom:14px}
.att-bar svg{width:15px;height:15px;flex:none}
.att-bar b{font-weight:800}
.att-bar .r{margin-left:auto;display:flex;gap:10px;align-items:center;font-weight:600}
/* ---- 批改弹层 ---- */
.ad-modal.sa{width:min(1020px,96vw);max-height:92vh;overflow:auto;padding:22px 22px 18px}
.ad-modal.sa .ad-modal-foot{position:sticky;bottom:-18px;background:#fff;padding:14px 0 4px;margin-top:16px}
.ad-modal.sa .ad-modal-foot .ad-btn{min-width:0;white-space:nowrap;padding-left:10px;padding-right:10px}
.ad-modal.sa p{margin-bottom:14px}
.sa-split{display:grid;grid-template-columns:1fr 288px;gap:16px}
.sa-split-h{font-size:12.5px;font-weight:700;color:var(--ad-ink);margin-bottom:8px;display:flex;align-items:center;gap:8px}
.sa-split-h span{font-size:11.5px;color:var(--ad-ink3);font-weight:600}
.sa-shot{border-radius:12px;background:#E9ECF2;padding:14px 12px}
.sa-paper{background:#fff;border-radius:3px;padding:15px 16px 18px;transform:rotate(-.6deg);
  box-shadow:0 8px 22px rgba(20,26,44,.12);min-height:300px}
.sa-paper-h{display:flex;justify-content:space-between;font-size:10.5px;color:#98A2B3;
  border-bottom:1px dashed #DDE3EC;padding-bottom:7px;margin-bottom:10px}
.sa-line{font-size:12px;color:#2B3245;line-height:1.7;margin-bottom:9px}
.sa-line>b{color:#111827;font-weight:700}
.sa-hand{font-family:"Xingkai SC","STXingkai","Kaiti SC","KaiTi",cursive;color:#1B3A8F;
  font-size:14px;line-height:1.85;margin-top:1px;padding-left:14px;letter-spacing:.3px}
.sa-thumbs{display:flex;gap:8px;margin-top:10px}
.sa-thumb{padding:0 10px;height:30px;line-height:26px;border-radius:7px;background:#fff;border:2px solid transparent;
  box-shadow:inset 0 0 0 1px var(--ad-line);font-size:11.5px;color:#7A8699;cursor:pointer;font-weight:600}
.sa-thumb.on{border-color:var(--ad-b);background:#EEF2FF;color:var(--ad-b)}
.sa-qs{border:1px solid var(--ad-line);border-radius:12px;padding:8px;max-height:376px;overflow:auto}
.sa-q{display:flex;align-items:flex-start;gap:8px;padding:7px 8px;border-radius:8px;font-size:12px;
  color:var(--ad-ink2);cursor:pointer;line-height:1.5}
.sa-q:hover{background:#FAFBFE}
.sa-q input{margin-top:2px;width:14px;height:14px;accent-color:var(--ad-b);flex:none;cursor:pointer}
.sa-q.on{background:#F6F8FF;color:var(--ad-b);font-weight:600}
.sa-sum{margin-top:10px;padding:10px 12px;border-radius:10px;background:#F4F7FF;font-size:12px;color:#3E52C4;line-height:1.8}

.ad-mini-g{color:#16A87B}
.ad-mini-r{color:var(--ad-r)}
.ad-mini-w{color:#D9880B}
.ad-info{width:15px;height:15px;border-radius:50%;background:#F0F2F7;color:#A6ADBB;font-size:10px;font-weight:700;display:grid;place-items:center;cursor:help;flex:none;font-style:normal}
.ad-left-warn{color:var(--ad-r)!important;font-weight:700}
.ad-sec{display:flex;align-items:baseline;gap:10px;margin:22px 2px 12px}
.ad-sec h2{font-size:15px;font-weight:800;margin:0;letter-spacing:.1px}
.ad-sec span{font-size:11.5px;color:var(--ad-ink3)}
@media (max-width:1200px){
  .ad-grid2{grid-template-columns:minmax(0,1fr)}
  .ad-quick{grid-template-columns:repeat(5,minmax(0,1fr))}
  .ad-qn{padding:9px 4px 8px}
  .ad-qn-ico{width:32px;height:32px}
}
.ad-bar i.bad{background:linear-gradient(90deg,#FF9B9B,#FF6B6B)}
.ad-bar i.warn{background:linear-gradient(90deg,#FFD08A,#FFAB2E)}
.ad-bar i.good{background:linear-gradient(90deg,#2BB673,#0F8A4E)}
.ad-bar i.ok{background:linear-gradient(90deg,#7FE3C6,#22C391)}
.ad-empty{font-size:13px;color:var(--ad-ink3);text-align:center;padding:36px 0}

/* ---- 左侧详情 ---- */
.ad-side{position:sticky;top:100px}
.ad-detail-h{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.ad-detail-h .ad-av{width:46px;height:46px;border-radius:15px;font-size:17px}
.ad-detail-h b{display:block;font-size:17px;font-weight:800}
.ad-detail-h span{display:block;font-size:12px;color:var(--ad-ink3);margin-top:3px}
.ad-kp{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid #F5F6FA}
.ad-kp:last-child{border-bottom:0}
.ad-kp b{font-size:13px;font-weight:600;width:104px;flex:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ad-ink)}
.ad-kp .ad-bar{flex:1}
.ad-kp i{font-size:12px;font-style:normal;width:40px;text-align:right;flex:none;font-weight:700}

/* ---- 批改 ---- */
.ad-paper-list{display:flex;flex-direction:column;gap:9px}
/* 批学生提交的随堂练习：照片位 + 题目清单 + 两个动作 */
.pp-shots{display:flex;gap:9px;margin-bottom:12px}
.pp-shot{flex:1;height:74px;border-radius:12px;border:1.5px dashed #D8E1EF;background:#FAFCFF;
  color:#93A1B5;font-size:11px;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:5px}
.pp-shot .ico{width:17px;height:17px;color:#B4C0D2}
.pp-qs{border-top:1px solid #F2F5FA}
.pp-q{display:flex;gap:9px;padding:10px 0;border-bottom:1px solid #F5F6FA}
.pp-q .n{width:20px;flex:none;font-size:11px;color:#93A1B5;font-variant-numeric:tabular-nums;padding-top:1px}
.pp-q b{display:block;font-size:12.5px;font-weight:600;color:var(--ad-ink);line-height:1.55}
.pp-q span{display:block;font-size:11px;color:var(--ad-ink3);margin-top:3px;line-height:1.5}
.pp-acts{display:flex;gap:9px;margin-top:12px}
/* ===== 词书打印：左边词书列表 / 右边单元勾选 ===== */
.wpp-wrap{display:flex;gap:14px;align-items:flex-start}
.wpp-left{width:328px;flex:none}
.wpp-right{flex:1;min-width:0}
.wpp-search{display:flex;align-items:center;gap:7px;background:#F7FAFF;border:1px solid #E6ECF5;
  border-radius:10px;padding:8px 11px;margin-bottom:10px}
.wpp-search svg{width:14px;height:14px;color:#9AA6B9;flex:none}
.wpp-search input{flex:1;min-width:0;border:0;background:none;outline:none;font-size:12.5px;color:var(--ad-ink)}
.wpp-list{max-height:calc(100vh - 330px);min-height:260px;overflow:auto;display:flex;flex-direction:column;gap:8px}
.wpp-book{border:1.5px solid #EFF2F8;background:#fff;border-radius:12px;padding:10px 12px;text-align:left;
  cursor:pointer;font-family:inherit;transition:.14s}
.wpp-book:hover{border-color:#C3D0FB;background:#FAFBFF}
.wpp-book.on{border-color:#5B7CFA;background:#F5F8FF;box-shadow:0 0 0 3px rgba(91,124,250,.09)}
.wpp-book b{display:block;font-size:12.8px;font-weight:700;color:var(--ad-ink);
  line-height:1.45;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wpp-book span{display:block;font-size:11px;color:var(--ad-ink3);margin-top:3px;line-height:1.5}
.wpp-book .wpp-meta{display:flex;gap:8px;margin-top:5px;font-size:10.5px;color:#8A96AB}
.wpp-book .wpp-meta i{font-style:normal;background:#F2F5FA;border-radius:5px;padding:1px 6px}
.wpp-book.on .wpp-meta i{background:#E6EDFF;color:#3E63D8}
.wpp-units{display:grid;grid-template-columns:repeat(auto-fill,minmax(186px,1fr));gap:9px;
  max-height:calc(100vh - 400px);min-height:200px;overflow:auto;padding:2px}
.wpp-unit{display:flex;align-items:center;gap:9px;border:1.5px solid #EFF2F8;background:#fff;
  border-radius:11px;padding:9px 11px;cursor:pointer;transition:.14s}
.wpp-unit:hover{border-color:#C3D0FB;background:#FAFBFF}
.wpp-unit.on{border-color:#5B7CFA;background:#F4F7FF}
.wpp-unit input{width:15px;height:15px;flex:none;accent-color:#5B7CFA;cursor:pointer;margin:0}
.wpp-unit .t{flex:1;min-width:0}
.wpp-unit .t b{display:block;font-size:12px;font-weight:700;color:var(--ad-ink)}
.wpp-unit .t span{display:block;font-size:10.5px;color:var(--ad-ink3);margin-top:2px}
.wpp-unit em{font-style:normal;font-size:10.5px;color:#8A96AB;background:#F2F5FA;border-radius:5px;padding:2px 6px;flex:none}
.wpp-unit.on em{background:#E6EDFF;color:#3E63D8}
.wpp-foot{display:flex;align-items:center;gap:10px;margin-top:12px;padding-top:11px;border-top:1px solid #EFF2F8}
.wpp-foot .sum{font-size:12px;color:var(--ad-ink3)}
.wpp-foot .sum b{color:var(--ad-ink);font-weight:800;font-size:13px}
.wpp-foot .r{margin-left:auto;display:flex;gap:9px}
.wpp-foot .ad-btn{width:auto;padding:0 18px;height:38px}
@media (max-width:1180px){ .wpp-wrap{flex-direction:column} .wpp-left{width:100%} }
/* 这本书开给了谁 */
.wpp-who{border:1px solid #EFF2F8;border-radius:11px;background:#FBFCFE;padding:10px 12px;margin-top:11px}
.wpp-who .h{display:flex;align-items:baseline;gap:9px;margin-bottom:7px}
.wpp-who .h b{font-size:12px;font-weight:800;color:var(--ad-ink)}
.wpp-who .h span{font-size:10.5px;color:var(--ad-ink3)}
.wpp-who .n{display:flex;flex-wrap:wrap;gap:6px}
.wpp-who .n i{font-style:normal;font-size:11px;color:#3E63D8;background:#EEF3FF;border-radius:6px;padding:3px 8px}
.wpp-who .n em{font-style:normal;font-size:11px;color:var(--ad-ink3)}
/* ===== 本地资源上传 ===== */
.up-form{border:1px solid #EFF2F8;border-radius:12px;padding:13px 14px;background:#FCFDFF}
.up-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:11px}
.up-row>label{font-size:12px;color:var(--ad-ink3);flex:none;width:70px}
.up-kinds{display:flex;gap:7px}
.up-kinds button{border:1.5px solid #E7ECF4;background:#fff;border-radius:9px;padding:6px 13px;
  font-size:12px;font-family:inherit;color:var(--ad-ink2);cursor:pointer;transition:.14s}
.up-kinds button:hover{border-color:#C3D0FB;color:#3E63D8}
.up-kinds button.on{border-color:#5B7CFA;background:#F2F6FF;color:#3E63D8;font-weight:700}
.up-file{display:flex;align-items:center;gap:9px;flex:1;min-width:0}
.up-hidden{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;pointer-events:none}
.up-file .ad-btn{width:auto;flex:none}
.up-file span{font-size:11px;color:var(--ad-ink3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.up-row select,.up-ref{height:32px;border:1px solid #E7ECF4;border-radius:8px;padding:0 9px;
  font-size:12px;font-family:inherit;color:var(--ad-ink);background:#fff;outline:none}
.up-ref{width:210px}
.up-chips{display:flex;flex-wrap:wrap;gap:6px;width:100%;margin-top:4px;padding-left:79px}
.up-chip{border:1px solid #E7ECF4;background:#fff;border-radius:7px;padding:4px 9px;font-size:11.5px;
  font-family:inherit;color:var(--ad-ink2);cursor:pointer}
.up-chip.on{border-color:#5B7CFA;background:#F2F6FF;color:#3E63D8;font-weight:700}
.up-acts{display:flex;align-items:center;gap:10px;padding-top:10px;border-top:1px dashed #E7ECF4}
.up-hint{font-size:11.5px;color:var(--ad-ink3);flex:1}
.up-acts .ad-btn{width:auto;padding:0 18px;height:36px}
/* 学生端长什么样的小样机 */
.up-ph{border:1px solid #E6ECF5;border-radius:14px;padding:12px;background:#F7FAFE;margin-bottom:14px}
.up-ph-h{display:flex;align-items:baseline;gap:8px;margin-bottom:10px}
.up-ph-h span{font-size:10.5px;color:#8A96AB}
.up-ph-h b{font-size:12px;font-weight:800;color:var(--ad-ink)}
.up-ph-card{display:flex;gap:10px;background:#fff;border:1px solid #EFF2F8;border-radius:11px;padding:11px}
.up-ph-ic{width:38px;height:38px;flex:none;border-radius:9px;background:#EEF3FF;color:#3E63D8;
  display:flex;align-items:center;justify-content:center;font-size:16px}
.up-ph-card b{display:block;font-size:12.5px;font-weight:700;color:var(--ad-ink)}
.up-ph-card span{display:block;font-size:11px;color:var(--ad-ink3);margin-top:3px}
.up-ph-card em{display:block;font-size:10.5px;font-style:normal;color:#A0AABB;margin-top:3px}
.up-ph-to{font-size:10.5px;color:var(--ad-ink3);margin-top:9px;padding-left:2px}
/* 打印预览：一张「纸」的样子 */
.wpp-paper{border:1px solid #E6ECF5;border-radius:12px;padding:14px;background:#FCFDFF;margin-bottom:14px}
.wpp-paper-h{display:flex;align-items:baseline;gap:10px;margin-bottom:10px;padding-bottom:9px;border-bottom:1px dashed #DCE5F2}
.wpp-paper-h b{font-size:13px;font-weight:800;color:var(--ad-ink)}
.wpp-paper-h span{font-size:11px;color:var(--ad-ink3)}
.wpp-cards{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.wpp-card{display:flex;gap:8px;border:1px solid #EDF1F7;border-radius:9px;background:#fff;padding:8px 9px}
.wpp-card i{width:16px;height:16px;flex:none;border-radius:4px;background:#EEF3FB;color:#5B7CFA;
  font-size:9.5px;font-style:normal;font-weight:800;display:flex;align-items:center;justify-content:center;margin-top:1px}
.wpp-card b{display:block;font-size:12.5px;font-weight:800;color:var(--ad-ink);letter-spacing:.2px}
.wpp-card span{display:block;font-size:10.5px;color:#8A96AB;margin-top:2px}
.wpp-card em{display:block;font-size:11px;font-style:normal;color:var(--ad-ink2);margin-top:3px;line-height:1.45}
/* 审批弹窗里的「学生做的题」快照 */
.sa-snap{border:1px solid #EFF2F8;border-radius:10px;overflow:hidden;margin-bottom:10px}
.sa-snap-row{display:flex;gap:8px;padding:8px 10px;border-bottom:1px solid #F5F6FA}
.sa-snap-row:last-child{border-bottom:0}
.sa-snap-row i{width:17px;height:17px;flex:none;border-radius:50%;background:#EEF3FB;color:#5B7CFA;
  font-size:10px;font-style:normal;font-weight:800;display:flex;align-items:center;justify-content:center;margin-top:1px}
.sa-snap-row b{display:block;font-size:11.5px;font-weight:600;color:var(--ad-ink);line-height:1.5}
.sa-snap-row span{display:block;font-size:10.5px;color:var(--ad-ink3);margin-top:2px;line-height:1.5}
.pp-acts .ad-btn{width:auto}
.ad-paper{
  display:flex;align-items:center;gap:12px;padding:14px 15px;border-radius:16px;
  background:#FAFBFD;border:1.5px solid transparent;cursor:pointer;text-align:left;width:100%;
  transition:.15s;
}
.ad-paper:hover{background:#F5F7FC}
.ad-paper.on{border-color:#C9D6FB;background:#fff;box-shadow:var(--ad-sh-sm)}
.ad-paper b{font-size:13.5px;font-weight:700;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ad-ink)}
.ad-paper span{font-size:11.5px;color:var(--ad-ink3)}
.ad-q{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid #F5F6FA}
.ad-q:last-child{border-bottom:0}
.ad-q .no{width:22px;font-size:11.5px;color:var(--ad-ink3);flex:none;font-variant-numeric:tabular-nums}
.ad-q select{
  flex:1;min-width:0;font-size:12.5px;padding:8px 10px;border:1.5px solid var(--ad-line);
  border-radius:11px;background:#FAFBFC;color:var(--ad-ink2);outline:none;font-family:inherit;
}
.ad-q select:focus{border-color:#C9D6FB;background:#fff}
.ad-seg{display:flex;border:1.5px solid var(--ad-line);border-radius:11px;overflow:hidden;flex:none;background:#FAFBFC}
.ad-seg button{font-size:12px;padding:7px 12px;color:var(--ad-ink3);background:transparent;font-weight:600}
.ad-seg button.on.ok{background:var(--ad-g-soft);color:#12916D}
.ad-seg button.on.no{background:var(--ad-r-soft);color:#D64545}

/* ---- 课表 ---- */
.ad-week{display:grid;grid-template-columns:70px repeat(7,minmax(0,1fr));gap:8px;font-size:11.5px}
.ad-week .hd{text-align:center;color:var(--ad-ink3);padding:4px 0;font-weight:600;font-size:11.5px}
.ad-week .tm{color:var(--ad-ink3);padding-top:14px;font-variant-numeric:tabular-nums;font-weight:600}
.ad-cell{
  min-height:86px;border-radius:14px;background:#FAFBFD;padding:10px;
  font-size:11.5px;line-height:1.5;color:var(--ad-ink2);
}
.ad-cell.empty{background:transparent;border:1.5px dashed #E4E7EE;display:grid;place-items:center;color:#C3C8D4}
.ad-cell b{display:block;font-size:12px;font-weight:700;color:var(--ad-ink);margin-bottom:3px}
.ad-cell i{display:block;font-style:normal;color:var(--ad-ink3);font-size:10.5px}
.ad-cell .tag{display:inline-block;font-size:9.5px;padding:2px 7px;border-radius:999px;background:var(--ad-b-soft);color:var(--ad-b);margin-top:4px;font-weight:600}

/* ---- 弹层 ---- */
.ad-mask{position:fixed;inset:0;background:rgba(18,22,32,.45);z-index:120;display:grid;place-items:center;padding:24px}
.ad-modal{
  width:448px;background:#fff;border-radius:24px;padding:26px;
  box-shadow:0 40px 90px rgba(16,20,32,.3);
}
.ad-modal h3{font-size:19px;margin:0 0 6px;font-weight:800;letter-spacing:-.2px}
.ad-modal p{font-size:12px;color:var(--ad-ink3);margin:0 0 20px;line-height:1.8}
/* 只用来「问一句」的确认框（一键同意前）：句子长、按钮多，单独放宽一点，别把按钮挤成两行 */
.ad-modal.sa-ask{width:min(560px,94vw);border-radius:20px;padding:24px 24px 20px}
.ad-modal.sa-ask p{font-size:13px;color:var(--ad-ink2);line-height:1.85;margin:0 0 18px}
.ad-modal.sa-ask b{color:var(--ad-ink)}
.ad-modal.sa-ask .ad-modal-foot{margin-top:0;gap:10px}
.ad-modal.sa-ask .ad-modal-foot .ad-btn{flex:1 1 0;min-width:0;white-space:nowrap;
  padding:13px 10px;font-size:14px;letter-spacing:0}
.ad-row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ad-code{display:flex;gap:9px}
.ad-code input{flex:1}
.ad-code button{
  flex:none;font-size:12.5px;padding:0 14px;border-radius:13px;border:1.5px solid #D8DEF8;
  color:var(--ad-b);background:#fff;white-space:nowrap;font-weight:700;
}
.ad-code button:disabled{color:#B6BCC9;border-color:#E8EBF2;background:#F8F9FC}
.ad-modal-foot{display:flex;gap:12px;margin-top:22px}
.ad-modal-foot .ad-btn{flex:1}
.ad-modal-foot .ad-btn.ghost{background:#fff;color:var(--ad-ink2);border:1.5px solid var(--ad-line);box-shadow:none}
.ad-tip{margin-top:12px;font-size:11.5px;color:var(--ad-ink3);line-height:1.8}
.ad-tip b{color:#C07A05;font-weight:700}

/* ---- 代理商模块：工具条 / 搜索 / 详情弹层 ---- */
.agx-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.agx-in{height:32px;border:1.5px solid var(--ad-line);background:#fff;border-radius:10px;padding:0 11px;
  font-size:12.5px;color:var(--ad-ink);outline:none;width:150px;font-family:inherit}
.agx-in:focus{border-color:#C3D0FB;box-shadow:0 0 0 3px rgba(91,124,250,.08)}
.agx-sel{height:32px;border:1.5px solid var(--ad-line);background:#fff;border-radius:10px;padding:0 6px;
  font-size:12.5px;color:var(--ad-ink);outline:none;font-family:inherit}
.agx-kv{display:grid;grid-template-columns:92px 1fr;gap:9px 14px;font-size:12.5px}
.agx-kv span{color:var(--ad-ink3)}
.agx-kv b{font-weight:700;color:var(--ad-ink)}
.agx-sec{font-size:12px;font-weight:800;color:var(--ad-ink);margin:18px 0 8px;letter-spacing:.2px}
.agx-sec:first-child{margin-top:0}
.agx-mini{width:100%;border-collapse:collapse;font-size:12px}
.agx-mini th{text-align:left;font-weight:600;color:var(--ad-ink3);padding:6px 8px;border-bottom:1px solid var(--ad-line)}
.agx-mini td{padding:7px 8px;border-bottom:1px solid #F0F2F7;color:var(--ad-ink2)}
.agx-mini tr:last-child td{border-bottom:none}
.agx-empty{padding:14px 0;text-align:center;color:var(--ad-ink3);font-size:12px}
.agx-emptys{padding:26px 0 22px;text-align:center;color:var(--ad-ink3);font-size:12.5px;line-height:1.9}
.agx-emptys .ad-btn{margin-top:12px}
.agx-ck{display:flex;gap:9px;align-items:flex-start;margin:6px 0 2px;font-size:12px;
  color:var(--ad-ink2);line-height:1.65;cursor:pointer}
.agx-ck input{margin:2px 0 0;accent-color:var(--ad-b);flex:none;width:14px;height:14px}
/* 学科多选：标签式（比 select multiple 省高度、看得清选中态） */
.nm-chips{display:grid;grid-template-columns:repeat(9,1fr);gap:6px}
.nm-chips label{display:flex;align-items:center;justify-content:center;gap:5px;height:32px;
  border:1.5px solid var(--ad-line);border-radius:9px;font-size:12.5px;color:var(--ad-ink2);
  cursor:pointer;background:#fff;transition:.15s}
.nm-chips label input{display:none}
.nm-chips label:hover{border-color:#C3D0FB}
.nm-chips label:has(input:checked){border-color:var(--ad-b);background:#F6F8FF;color:var(--ad-b);font-weight:700}
/* 新增会员弹层字段多，单独收紧间距，保证一屏放得下 */
.nm-modal{max-height:94vh;padding-bottom:0}
.nm-modal .ad-field{margin-bottom:10px}
.nm-modal .ad-field label{margin-bottom:4px}
.nm-modal p{margin-bottom:12px;line-height:1.65}
/* 底部按钮贴底但仍在文档流里，内容照常滚动、按钮始终可见 */
.nm-modal .ad-modal-foot{position:sticky;bottom:0;background:#fff;padding:12px 0 20px;margin-top:10px}
/* 新增会员：卡类型（正式 / 体验） */
.nm-kinds{display:flex;gap:8px}
.nm-kinds button{border:1.5px solid #E7ECF4;background:#fff;border-radius:9px;padding:7px 15px;
  font-size:12.5px;font-family:inherit;color:var(--ad-ink2);cursor:pointer;transition:.14s}
.nm-kinds button:hover{border-color:#C3D0FB;color:#3E63D8}
.nm-kinds button.on{border-color:#5B7CFA;background:#F2F6FF;color:#3E63D8;font-weight:700}
.nm-tip{font-size:11.5px;color:var(--ad-ink3);line-height:1.7;margin-top:7px}
.nm-tip b{color:var(--ad-ink2)}

/* ===== 学习规划向导：选学生 → 选课程 → 排日期 ===== */
.pw{
  /* 向导挂在 body 上，不在 #admin 内，必须自己带一份设计令牌，否则按钮和配色全透明 */
  --ad-bg:#F3F4F8; --ad-card:#fff;
  --ad-ink:#14161F; --ad-ink2:#5E6472; --ad-ink3:#9AA0AE; --ad-line:#ECEEF3;
  --ad-b:#5B7CFA; --ad-b-soft:#ECF0FE;
  --ad-grad:linear-gradient(135deg,#6D8DFB 0%,#8B6CF0 100%);
  --ad-g:#22C391; --ad-g-soft:#E6F8F2; --ad-w:#FFAB2E; --ad-w-soft:#FDF4E3;
  --ad-r:#FF6B6B; --ad-r-soft:#FDECEC;
  position:fixed;inset:0;z-index:9200;background:#fff;display:flex;flex-direction:column;
  color:var(--ad-ink);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Helvetica Neue",sans-serif;
}
.pw.hide{display:none}
.pw-h{display:flex;align-items:center;gap:18px;padding:13px 22px;border-bottom:1px solid var(--ad-line);flex:none}
.pw-h h2{font-size:17px;font-weight:800;margin:0;letter-spacing:.1px}
.pw-steps{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ad-ink3)}
.pw-steps span{display:inline-flex;align-items:center;gap:5px;padding:5px 13px;border-radius:20px;
  background:#F3F5FA;white-space:nowrap;cursor:pointer}
.pw-steps span.on{background:var(--ad-b);color:#fff;font-weight:700}
.pw-steps span.done{background:#E7F7EF;color:#2FA672;font-weight:700}
.pw-steps i{font-style:normal;color:#C9CFDB}
.pw-home{display:flex;align-items:center;gap:6px;border:1.5px solid var(--ad-line);background:#fff;
  border-radius:10px;padding:6px 12px;font-size:12.5px;font-weight:600;color:var(--ad-ink2);
  cursor:pointer;font-family:inherit;flex:none;transition:.14s}
.pw-home:hover{border-color:#C3D0FB;color:var(--ad-b);background:#F6F8FF}
.pw-all{border:1.5px solid var(--ad-line);background:#fff;border-radius:10px;padding:6px 12px;
  font-size:12.5px;font-weight:600;color:var(--ad-ink3);cursor:pointer;font-family:inherit;
  flex:none;transition:.14s}
.pw-all:hover{border-color:#C3D0FB;color:var(--ad-ink2);background:#F8F9FC}
.pw-x{margin-left:auto;width:30px;height:30px;border-radius:9px;border:none;background:#F3F5FA;
  color:var(--ad-ink3);cursor:pointer;font-size:15px;line-height:1}
.pw-x:hover{background:#E8EBF2;color:var(--ad-ink)}
.pw-b{flex:1;min-height:0;display:flex;overflow:hidden}
.pw-f{flex:none;padding:11px 22px;border-top:1px solid var(--ad-line);display:flex;align-items:center;
  gap:12px;background:#fff}
.pw-f .pw-sum{font-size:12.5px;color:var(--ad-ink3)}
.pw-f .pw-sum b{color:var(--ad-ink);font-weight:800}
.pw-f .r{margin-left:auto;display:flex;gap:10px}
.pw-f .ad-btn{width:auto;flex:none;padding:0 20px;height:40px}
/* 向导里「差一项填不了」的字段：红框 + 抖一下，比只弹一句提示更容易被看见 */
.pw-bad{animation: pwBad .42s ease}
.pw-bad textarea,.pw-bad input,.pw-bad.pw-bad-self{border-color:#E5484D !important;box-shadow:0 0 0 3px rgba(229,72,77,.14) !important}
@keyframes pwBad{
  0%,100%{transform:translateX(0)}
  20%{transform:translateX(-5px)} 40%{transform:translateX(5px)}
  60%{transform:translateX(-3px)} 80%{transform:translateX(3px)}
}
.pw-side .ad-btn{width:100%}

/* step1 选学生 */
.pw-side{width:262px;flex:none;border-right:1px solid var(--ad-line);padding:14px;overflow:auto}
.pw-side h3{font-size:12.5px;font-weight:800;margin:0 0 10px;color:var(--ad-ink)}
.pw-side .ad-field{margin-bottom:11px}
.pw-main{flex:1;overflow:auto;padding:14px 18px}
.pw-stus{display:grid;grid-template-columns:repeat(auto-fill,minmax(238px,1fr));gap:10px}
.pw-stu{border:1.5px solid var(--ad-line);border-radius:12px;padding:11px 12px;cursor:pointer;
  display:flex;align-items:center;gap:10px;background:#fff;transition:.14s}
.pw-stu:hover{border-color:#C3D0FB}
.pw-stu.on{border-color:var(--ad-b);background:#F6F8FF;box-shadow:0 4px 14px rgba(91,124,250,.12)}
.pw-stu input{width:15px;height:15px;accent-color:var(--ad-b);flex:none;margin:0}
.pw-stu-b{min-width:0}
.pw-stu-b b{display:block;font-size:13px;font-weight:700;color:var(--ad-ink)}
.pw-stu-b span{display:block;font-size:11px;color:var(--ad-ink3);margin-top:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ===== 词书授权：学员列表（照截图 1） ===== */
.wba-bar{background:#F7F8FB;border:1px solid var(--ad-line);border-radius:12px;padding:10px 12px 4px;margin-bottom:12px}
.wba-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.wba-row > label{font-size:12px;color:var(--ad-ink2);font-weight:700;width:74px;flex:none;text-align:right}
.wba-row input,.wba-row select{height:32px;border:1px solid var(--ad-line);border-radius:8px;
  padding:0 10px;font-size:12px;background:#fff;font-family:inherit;color:var(--ad-ink);outline:none;min-width:120px}
.wba-row input:focus,.wba-row select:focus{border-color:var(--ad-b)}
.wba-row .ad-btn{width:auto;flex:none;height:32px;padding:0 14px;font-size:12px}
.wba-top{display:flex;align-items:center;gap:10px;margin-bottom:11px}
.wba-top .ad-btn{width:auto;flex:none}
.wba-icon{width:32px;height:32px;border-radius:9px;border:1px solid var(--ad-line);background:#fff;
  display:grid;place-items:center;color:var(--ad-ink3);cursor:pointer;flex:none}
.wba-icon:hover{color:var(--ad-b);border-color:#C9D6FB}
.wba-tag{display:inline-block;font-size:10.5px;border-radius:6px;padding:1px 7px;
  background:#F3F5FA;color:var(--ad-ink2);margin-right:4px}
.wba-tag.b{background:#EEF2FF;color:#3E52C4}
.wba-tag.g{background:#E6F8F2;color:#0F8A4E}
.wba-tag.w{background:#FDF4E3;color:#C07A05}
.wba-tag.f{background:#FDECEC;color:#C33B3B}
/* 词书进度条（授权列表里那一列） */
.wba-pgb{height:5px;border-radius:3px;background:#EDF1F8;overflow:hidden}
.wba-pgb i{display:block;height:100%;background:linear-gradient(90deg,#4C6BE0,#3E52C4);border-radius:3px}
.wba-pgb.fin i{background:linear-gradient(90deg,#2BB673,#0F8A4E)}
/* 顶部「有 N 个学员词书已背完」的催办条 */
.wba-todo{display:flex;align-items:center;gap:10px;background:#FFF7E8;border:1px solid #F3E0BC;
  border-radius:11px;padding:10px 13px;margin-bottom:12px}
.wba-todo b{font-size:12.5px;color:#96601A;flex:none}
.wba-todo span{font-size:11px;color:#A8874A;flex:1}
.wba-todo .ad-btn{width:auto;flex:none;background:#96601A;border-color:#96601A;color:#fff}
.wba-todo .ad-btn:hover{background:#7E4F12}

/* ===== 授权向导（照截图 2） ===== */
.wba-wiz .pw-b{background:#F7F8FB}
.wba-steps{display:flex;align-items:center;gap:10px;margin-left:auto;font-size:12.5px;color:var(--ad-ink3)}
.wba-steps span{display:flex;align-items:center;gap:5px}
.wba-steps span.on{color:var(--ad-b);font-weight:800}
.wba-steps span.done{color:#0F8A4E}
.wba-steps i{font-style:normal;color:#C9CFDB;font-size:11px}

/* 第 1 步：选学生 */
.wba-pane{flex:1;min-width:0;overflow:auto;padding:16px 20px}
.wba-search{height:34px;width:300px;max-width:100%;border:1px solid var(--ad-line);border-radius:9px;
  padding:0 12px;font-size:12.5px;background:#fff;font-family:inherit;color:var(--ad-ink);outline:none}
.wba-search:focus{border-color:var(--ad-b);box-shadow:0 0 0 3px rgba(91,124,250,.1)}
.wba-stus{display:grid;grid-template-columns:repeat(auto-fill,minmax(228px,1fr));gap:10px}
.wba-stu{border:1.5px solid var(--ad-line);border-radius:12px;padding:11px 12px;min-height:58px;cursor:pointer;
  background:#fff;transition:.14s;display:flex;align-items:center;gap:10px}
.wba-stu:hover{border-color:#C9DBFF}
.wba-stu.on{border-color:var(--ad-b);background:#F6F8FF;box-shadow:0 4px 14px rgba(91,124,250,.12)}
.wba-stu input{width:15px;height:15px;accent-color:var(--ad-b);margin:0;flex:none}
.wba-stu-b{min-width:0}
.wba-stu-b b{display:block;font-size:13px;font-weight:700}
.wba-stu-b span{display:block;font-size:10.5px;color:var(--ad-ink3);margin-top:3px}

/* 第 2 步：三栏选词书 */
.wba-cols{display:flex;flex:1;min-height:0;overflow:hidden}
.wba-cat{width:170px;flex:none;border-right:1px solid var(--ad-line);background:#fff;padding:10px 8px;overflow:auto}
.wba-cat button{display:block;width:100%;text-align:left;border:0;background:none;border-radius:9px;
  padding:9px 12px;font-size:12.5px;color:var(--ad-ink2);cursor:pointer;font-family:inherit;margin-bottom:3px}
.wba-cat button:hover{background:#F5F8FF}
.wba-cat button.on{background:var(--ad-b);color:#fff;font-weight:700}
.wba-mid{flex:1;min-width:0;background:#fff;border-right:1px solid var(--ad-line);
  display:flex;flex-direction:column;overflow:hidden}
.wba-mid-h{padding:12px 14px 9px;border-bottom:1px solid var(--ad-line);flex:none}
.wba-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:9px}
.wba-filters select{height:30px;border:1px solid var(--ad-line);border-radius:8px;padding:0 9px;
  font-size:11.5px;background:#fff;font-family:inherit;outline:none;color:var(--ad-ink)}
.wba-filters input{height:30px;border:1px solid var(--ad-line);border-radius:8px;padding:0 10px;
  font-size:11.5px;flex:1;min-width:140px;outline:none;font-family:inherit}
.wba-mid-l{flex:1;overflow:auto;padding:4px 14px 12px}
.wba-book{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px dashed #EFF2F7;cursor:pointer}
.wba-book:last-child{border-bottom:0}
.wba-book input{width:15px;height:15px;accent-color:var(--ad-b);margin:0;flex:none}
.wba-book-b{flex:1;min-width:0}
.wba-book-b b{display:block;font-size:12.5px;font-weight:700;color:var(--ad-ink);line-height:1.5}
.wba-book-b span{display:flex;gap:6px;flex-wrap:wrap;margin-top:5px;font-size:10.5px;color:var(--ad-ink3)}
.wba-n{flex:none;font-size:10.5px;color:var(--ad-ink3);font-variant-numeric:tabular-nums}
.wba-right{width:258px;flex:none;background:#fff;display:flex;flex-direction:column;overflow:hidden}
.wba-right-h{display:flex;align-items:center;padding:12px 14px 9px;border-bottom:1px solid var(--ad-line);flex:none}
.wba-right-h b{font-size:12.5px;font-weight:800}
.wba-right-h .ad-link{margin-left:auto;font-size:11px;color:var(--ad-ink3)}
.wba-right-b{flex:1;overflow:auto;padding:8px 12px}
.wba-pick{display:flex;align-items:center;gap:8px;background:#F4F7FF;border:1px solid #DDE6FB;
  border-radius:10px;padding:9px 11px;margin-bottom:8px}
.wba-pick span{flex:1;min-width:0;font-size:11.5px;color:#22376E;line-height:1.5}
.wba-pick em{font-style:normal;color:#8A94A6;cursor:pointer;font-size:13px;flex:none}
.wba-empty{padding:26px 10px;text-align:center;font-size:11.5px;color:var(--ad-ink3);line-height:1.9}

/* 第 3 步：规则 */
.wba-rule{padding:22px 26px;max-width:660px}
.wba-rule .ad-field{margin-bottom:13px}
.wba-rule .tip{font-size:11.5px;color:var(--ad-ink3);line-height:1.8;margin-top:10px}
.wba-sum{background:#F7F8FB;border:1px solid var(--ad-line);border-radius:12px;padding:12px 14px;margin-bottom:16px}
.wba-sum > b{font-size:12.5px;font-weight:800;display:block;margin-bottom:7px}
.wba-sum div{font-size:11.5px;color:var(--ad-ink2);line-height:1.9}
.wba-sum div b{display:inline;font-weight:800;color:var(--ad-ink);margin:0}

/* 背诵顺序（授权第 3 步）：第一本 = 学生端当前在背 */
.wba-ord{border-top:1px solid var(--ad-line);margin-top:2px}
.wba-ord-r{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px dashed var(--ad-line)}
.wba-ord-r:last-child{border-bottom:0}
.wba-ord-r.first{background:#F0F7FF;border:1px solid #D8E5FA;padding:7px 6px;border-radius:9px;margin:2px 0 4px}
.wba-ord-i{width:18px;height:18px;flex:none;border-radius:50%;background:#E7ECF7;color:#5A6B8C;
  font-size:10.5px;font-weight:800;display:flex;align-items:center;justify-content:center}
.wba-ord-r.first .wba-ord-i{background:#2E6BE6;color:#fff}
.wba-ord-n{flex:1;min-width:0;font-size:12px;color:var(--ad-ink);line-height:1.5}
.wba-ord-n em{display:block;font-style:normal;font-size:10.5px;color:var(--ad-ink3);margin-top:1px}
.wba-ord-tag{display:inline-block;font-size:10px;font-weight:800;border-radius:5px;padding:0 5px;
  margin-left:6px;background:#EFF2F7;color:#7A879E;vertical-align:1px}
.wba-ord-tag.on{background:#E6F0FF;color:#1D5BD6}
.wba-ord-tag.fin{background:#E8F7EF;color:#0F8A4E}
.wba-ord-tag.warn{background:#FFF1DC;color:#B2690A}
.wba-ord-a{display:flex;gap:4px;flex:none}
.wba-ord-a button{border:1px solid var(--ad-line);background:#fff;border-radius:6px;color:#5A6B8C;
  font-size:11px;padding:2px 6px;cursor:pointer;line-height:1.4}
.wba-ord-a button:hover:not(:disabled){border-color:#B9CDF3;color:#2E6BE6}
.wba-ord-a button:disabled{opacity:.35;cursor:not-allowed}
.wba-ord-a button.top{color:#1D5BD6;border-color:#C9DBFF;background:#F3F8FF}
.wba-ord-tip{font-size:11px;color:var(--ad-ink3);line-height:1.75;margin-top:9px;padding-top:8px;
  border-top:1px dashed var(--ad-line)}
.wba-ord-tip b{color:var(--ad-ink2)}

/* ===== 统计四页（学习时长 / 服务数据 / 门店 / 在籍会员） ===== */
.sx-head{display:flex;align-items:flex-start;gap:12px;margin:0 0 10px}
.sx-head h2{margin:0;font-size:15px;font-weight:800;color:var(--ad-ink);letter-spacing:.2px}
.sx-head p{margin:3px 0 0;font-size:11px;color:var(--ad-ink3);line-height:1.5}

.sx-top{display:flex;gap:12px;align-items:stretch;margin-bottom:14px}
.sx-kpis{flex:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;min-width:0}
.sx-kpis-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.sx-kpi{background:#fff;border:1px solid #E8EEF7;border-top:2px solid var(--sxc,#4D7CF3);
  border-radius:10px;padding:11px 13px 10px;display:flex;flex-direction:column;
  min-height:118px;min-width:0;box-shadow:0 1px 2px rgba(16,20,32,.03)}
.sx-kpi-t{font-size:11.5px;color:var(--ad-ink2);font-weight:600;display:flex;align-items:center;gap:5px}
.sx-kpi-t i{width:13px;height:13px;border-radius:50%;border:1px solid #C9D3E3;color:#93A0B5;
  font-size:8px;font-style:normal;display:inline-flex;align-items:center;justify-content:center;cursor:help}
.sx-kpi-n{font-size:26px;font-weight:800;color:#1B2230;letter-spacing:-.5px;margin:5px 0 0;line-height:1.15}
.sx-kpi-n em{font-style:normal;font-size:12.5px;font-weight:600;color:#3A4658;margin-left:2px}
.sx-kpi-d{font-size:10px;color:#93A0B5;line-height:1.55;margin-top:auto;padding-top:8px}
.sx-kpi2{justify-content:center;min-height:104px}
.sx-two{display:flex;gap:10px;margin-top:8px}
.sx-two > div{flex:1;min-width:0;border-left:1px dashed #E4EAF4;padding-left:9px}
.sx-two > div:first-child{border-left:0;padding-left:0}
.sx-two b{font-size:23px;font-weight:800;color:#1B2230;letter-spacing:-.4px;line-height:1.1}
.sx-two em{font-style:normal;font-size:11px;font-weight:600;color:#3A4658;margin-left:1px}
.sx-two span{display:block;font-size:10px;color:#93A0B5;margin-top:3px;line-height:1.35}
.sx-tag{display:inline-flex;align-items:center;height:17px;padding:0 7px;border-radius:5px;
  font-size:10px;font-weight:700;background:#EEF4FF;color:#2E6BE6}
.sx-tag.g{background:#E8F7EF;color:#0F8A4E}
.sx-tag.w{background:#FFF4E3;color:#C07A05}

.sx-period{width:118px;flex:none;display:flex;flex-direction:column;gap:7px}
.sx-period button{height:40px;border-radius:8px;border:1px solid #C9DBFF;background:#fff;color:#2E6BE6;
  font-size:12.5px;font-weight:600;cursor:pointer;transition:.15s}
.sx-period button:hover{background:#F5F9FF}
.sx-period button.on{background:#4D7CF3;border-color:#4D7CF3;color:#fff;box-shadow:0 2px 6px rgba(77,124,243,.3)}

.sx-panel{padding:14px 16px 12px}
.sx-p-h{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}
.sx-p-h > b{font-size:12.5px;font-weight:800;color:var(--ad-ink)}
.sx-p-h > span{font-size:10.5px;color:var(--ad-ink3)}
.sx-p-h .r{margin-left:auto}
.sx-duo{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.sx-duo-g > .sx-panel{display:flex;align-items:center;justify-content:center;min-height:172px}

.sx-duo > .sx-panel{display:flex;flex-direction:column}
.sx-duo > .sx-panel > .sx-hbl{flex:1;justify-content:center}
.sx-hbl{display:flex;flex-direction:column;gap:11px;padding:8px 2px 4px}
.sx-hb{display:flex;align-items:center;gap:8px}
.sx-hb-k{width:52px;flex:none;font-size:11px;color:var(--ad-ink2);text-align:right;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sx-hb-t{flex:1;height:20px;background:#F4F8FE;border-radius:4px;overflow:hidden;min-width:0}
.sx-hb-t i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#9CC0FA,#5B8DEF)}
.sx-hb-v{width:74px;flex:none;font-size:10.5px;color:var(--ad-ink2)}

.sx-svg{width:100%;height:auto;display:block}
.sx-gauge{width:186px;flex:none;overflow:visible}
.sx-gauge-wrap{display:flex;align-items:center;gap:14px;width:100%}
.sx-gauge-tx{min-width:0}
.sx-gauge-tx b{display:block;font-size:12px;font-weight:800;color:var(--ad-ink);margin-bottom:4px}
.sx-gauge-tx span{font-size:10.5px;color:var(--ad-ink3);line-height:1.6}

.sx-donut{display:flex;align-items:center;gap:10px;padding:4px 0 2px}
.sx-donut svg{width:158px;height:158px;flex:none}
.sx-lg{flex:none;display:flex;flex-direction:column;gap:7px}
.sx-lg-i{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--ad-ink2)}
.sx-lg-i i{width:8px;height:8px;border-radius:50%;flex:none}
.sx-lg-i span{white-space:nowrap}
.sx-lg-i b{font-weight:800;color:var(--ad-ink)}
.sx-sub-filter{display:flex;align-items:center;gap:6px;margin-top:8px;padding-top:9px;border-top:1px dashed var(--ad-line)}
.sx-sub-filter select{font-size:11px;border:1px solid var(--ad-line);border-radius:6px;padding:3px 6px;background:#fff;color:var(--ad-ink2);max-width:120px}
.sx-sub-filter input{font-size:11px;border:1px solid var(--ad-line);border-radius:6px;padding:2px 5px;background:#fff;color:var(--ad-ink2);width:112px}
.sx-sub-filter em{font-style:normal;font-size:11px;color:var(--ad-ink3)}
.sx-sub-filter .ad-btn{flex:none;width:auto;margin-left:auto}
.sx-sub-filter .ad-btn.pri{background:#2E6BE6;border-color:#2E6BE6;color:#fff}

.sx-tabs{display:flex;align-items:center;gap:2px;border-bottom:1px solid var(--ad-line);margin:-4px -2px 10px}
.sx-tabs button{border:0;background:none;font-size:12.5px;color:var(--ad-ink3);font-weight:600;
  padding:9px 13px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}
.sx-tabs button:hover{color:var(--ad-ink2)}
.sx-tabs button.on{color:#2E6BE6;border-bottom-color:#2E6BE6}
.sx-tabs .r{margin-left:auto;padding-bottom:4px}

.sx-chips{display:flex;align-items:center;flex-wrap:wrap;gap:14px;padding:2px 0 10px}
.sx-chip{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;color:var(--ad-ink2)}
.sx-chip i{font-style:normal;font-size:10px;width:12px;text-align:center}
.sx-chip b{font-weight:800;color:var(--ad-ink)}
.sx-chip.r b{color:#E85454}
.sx-chip.r i{color:#E85454}
.sx-chip.g b{color:#0F8A4E}
.sx-chip.g i{color:#0F8A4E}
.sx-chip.n b{color:#2E6BE6}
.sx-chip-sep{width:1px;height:13px;background:var(--ad-line);display:inline-block}

.sx-tblwrap{overflow-x:auto;margin:0 -2px}
.sx-tbl{width:100%;font-size:11.5px}
.sx-tbl th{white-space:nowrap}
.sx-tbl th.num,.sx-tbl td.num{text-align:right;white-space:nowrap}
.sx-tbl tfoot td{background:#FAFBFE;border-top:1px solid var(--ad-line);font-size:11.5px}
.sx-rt{font-weight:700}
.sx-rt.g{color:#0F8A4E}
.sx-rt.b{color:#2E6BE6}
.sx-rt.r{color:#C07A05}

.sx-pager{display:flex;align-items:center;justify-content:flex-end;gap:7px;padding:10px 2px 2px;font-size:11px;color:var(--ad-ink3)}
.sx-pager select{font-size:11px;border:1px solid var(--ad-line);border-radius:6px;padding:2px 5px;background:#fff;color:var(--ad-ink2)}
.sx-pager button{min-width:26px;height:26px;border:1px solid var(--ad-line);background:#fff;border-radius:6px;
  font-size:11.5px;color:var(--ad-ink2);cursor:pointer;padding:0 6px}
.sx-pager button.on{background:#4D7CF3;border-color:#4D7CF3;color:#fff;font-weight:700}
.sx-pg-dot{padding:0 2px}

.sx-filter{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.sx-filter label{font-size:11.5px;color:var(--ad-ink2);flex:none;white-space:nowrap}
.sx-filter select,.sx-filter input{font-size:11.5px;border:1px solid var(--ad-line);border-radius:7px;
  padding:4px 7px;background:#fff;color:var(--ad-ink2);height:30px}
.sx-filter select{width:112px}
.sx-filter input{width:104px}
.sx-filter input[type=date]{width:126px}
.sx-filter em{font-style:normal;color:var(--ad-ink3);font-size:11px}
.sx-filter .ad-btn{flex:none;width:auto;margin-left:0;padding:0 11px;height:30px}
.sx-filter .ad-btn.pri{background:#2E6BE6;border-color:#2E6BE6;color:#fff}
.sx-filter .ad-btn.warn{background:#F5A623;border-color:#F5A623;color:#fff}

.sx-ops{display:flex;flex-direction:column;gap:1px;align-items:flex-start}
.sx-ops .ad-link{font-size:10.5px;white-space:nowrap;line-height:1.3;font-weight:600}
.sx-tbl{font-size:11px}
.sx-tbl th,.sx-tbl td{padding-left:7px;padding-right:7px}

/* ===== 周学情（接口预留版：只出骨架，不出假数字） ===== */
.wk-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}
.wk-head p{font-size:11.5px;color:var(--ad-ink3);margin:0;line-height:1.6;flex:1;min-width:0}
.wk-st{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;
  border-radius:20px;padding:5px 11px;flex:none;white-space:nowrap;margin-top:2px}
.wk-st i{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none;display:block}
.wk-st.idle{background:#FFF6E6;color:#B2690A;border:1px solid #F3E3C2}
.wk-st.demo{background:#EDF3FF;color:#2E5AA8;border:1px solid #D3E0F8}
.wk-st.ready{background:#E8F7EF;color:#0F8A4E;border:1px solid #CDEBDA}
.wk-st.err{background:#FDECEC;color:#C0392B;border:1px solid #F5D3D3}

.wk-filter{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.wk-filter label{font-size:11px;color:var(--ad-ink3);margin-right:-3px;white-space:nowrap}
.wk-filter select,.wk-filter input{font-size:11.5px;border:1px solid var(--ad-line);border-radius:7px;
  padding:0 8px;background:#fff;color:var(--ad-ink);height:30px;line-height:28px}
.wk-filter select{min-width:100px;cursor:pointer}
.wk-filter input{width:104px}
.wk-filter select:hover,.wk-filter input:hover{border-color:#B9CDF3}

.wk-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin-bottom:13px}
.wk-kpi{background:#fff;border:1px solid var(--ad-line);border-radius:12px;padding:13px 15px;
  box-shadow:0 1px 2px rgba(16,32,64,.03)}
.wk-kpi-n{display:flex;align-items:baseline;gap:3px;min-height:26px}
.wk-kpi-n b{font-size:23px;font-weight:800;line-height:1.1;color:var(--ad-ink);
  font-variant-numeric:tabular-nums;letter-spacing:-.4px}
.wk-kpi-n b.na{color:#C6CFDC;font-weight:600}
.wk-kpi-n em{font-style:normal;font-size:11px;font-weight:600;color:var(--ad-ink3)}
.wk-kpi > span{display:block;font-size:11.5px;color:var(--ad-ink2);margin-top:4px;line-height:1.5;font-weight:600}
.wk-kpi > i{display:block;font-style:normal;font-size:10px;color:var(--ad-ink3);
  margin-top:3px;line-height:1.55;opacity:.9}

.wk-duo{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:11px;margin-bottom:13px}
.wk-ph{display:flex;align-items:baseline;gap:8px;font-size:12px;font-weight:700;
  color:var(--ad-ink);margin-bottom:10px}
.wk-ph > span{font-size:10.5px;font-weight:400;color:var(--ad-ink3)}
.wk-ph .r{margin-left:auto;font-size:10.5px;font-weight:400;color:var(--ad-ink3);font-style:normal}

.wk-blank{border:1px dashed #D9E2F0;border-radius:10px;background:#FAFCFF;
  padding:24px 18px;text-align:center}
.wk-blank .ic{font-size:20px;line-height:1;margin-bottom:9px;color:#B8C4D6}
.wk-blank b{display:block;font-size:12px;color:var(--ad-ink2);font-weight:700;margin-bottom:6px}
.wk-blank span{display:block;font-size:11px;color:var(--ad-ink3);line-height:1.8}

.wk-rank{padding:9px 0;border-bottom:1px dashed #EEF2F8}
.wk-rank:last-child{border-bottom:0;padding-bottom:2px}
.wk-rank-t{display:flex;align-items:baseline;gap:7px;margin-bottom:6px}
.wk-rank-t b{font-size:11.5px;font-weight:700;color:var(--ad-ink);flex:1;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wk-rank-t em{font-style:normal;font-size:10px;color:var(--ad-ink3);flex:none}
.wk-rank-b{position:relative;height:16px;border-radius:5px;background:#F1F5FB;overflow:hidden}
.wk-rank-b i{display:block;height:100%;border-radius:5px;
  background:linear-gradient(90deg,#FFD08A,#F2A03C)}
.wk-rank-b span{position:absolute;right:7px;top:0;line-height:16px;font-size:9.5px;
  font-weight:700;color:#8A6A2C}

/* ===== 学习规划记录：勾选 + 打印 ===== */
.plg-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:2px 0 11px}
.plg-q{width:210px;height:30px;border:1px solid var(--ad-line);border-radius:7px;
  padding:0 10px;font-size:11.5px;background:#fff;color:var(--ad-ink)}
.plg-q:focus{outline:0;border-color:#8FB4F2;box-shadow:0 0 0 3px rgba(76,107,224,.1)}
.plg-sel{height:30px;border:1px solid var(--ad-line);border-radius:7px;padding:0 8px;
  font-size:11.5px;background:#fff;color:var(--ad-ink);cursor:pointer}
.plg-cnt{font-size:11px;color:var(--ad-ink3);margin-left:2px}
.plg-cnt b{color:#2E5AA8;font-weight:800}
.plg-go{margin-left:auto;background:#2E6BE6;border-color:#2E6BE6;color:#fff}
.plg-go:hover{background:#1D5BD6;border-color:#1D5BD6}
.plg-go[disabled]{background:#DDE5F2;border-color:#DDE5F2;color:#8C9AB3;cursor:not-allowed}

.plg-tbl{font-size:11.5px}
.plg-tbl th,.plg-tbl td{padding:8px 7px}
.plg-tbl .plg-c{width:34px;text-align:center;padding-left:9px;padding-right:2px}
.plg-tbl .plg-c input{width:14px;height:14px;cursor:pointer;accent-color:#2E6BE6}
.plg-tbl tbody tr{cursor:default}
.plg-tbl tbody tr.plg-on{background:#F4F8FF}
.plg-tbl tbody tr.plg-on td:first-child{box-shadow:inset 3px 0 0 #2E6BE6}
.plg-tbl .plg-w{width:82px}
.plg-tbl .plg-w2{width:132px}
.plg-tbl .plg-w3{width:64px}
.plg-tbl .plg-w4{width:112px}
.plg-ops{display:flex;flex-wrap:nowrap;gap:7px}

/* ---- 打印设置弹层 ---- */
.pld-wrap{display:grid;grid-template-columns:404px minmax(0,1fr);gap:16px;align-items:start}
.pld-l{min-width:0}
.pld-l-h{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.pld-l-h b{font-size:11.5px;color:var(--ad-ink)}
.pld-l-h span{margin-left:auto;font-size:10.5px;color:var(--ad-ink3)}
.pld-l-h a{cursor:pointer;color:#2E6BE6}
.pld-l-h a:hover{text-decoration:underline}
.pld-list{border:1px solid var(--ad-line);border-radius:10px;background:#FCFDFF;padding:7px}
.pld-stu{border:1px solid #E7EDF6;border-radius:9px;background:#fff;margin-bottom:6px}
.pld-stu:last-child{margin-bottom:0}
.pld-stu.cur{border-color:#B9CFF2;box-shadow:0 0 0 2px rgba(46,107,230,.08)}
.pld-stu.off{opacity:.55;background:#FAFBFD}
.pld-stu-h{display:flex;align-items:center;gap:7px;padding:8px 9px;cursor:pointer}
.pld-stu-h input{width:14px;height:14px;cursor:pointer;accent-color:#2E6BE6;flex:none}
.pld-stu-h b{font-size:12px;font-weight:700;color:var(--ad-ink)}
.pld-stu-h em{font-style:normal;font-size:10px;color:var(--ad-ink3)}
.pld-stu-pg{margin-left:auto;font-size:10.5px;font-weight:700;color:#2E5AA8;
  background:#EDF3FF;border-radius:5px;padding:1px 6px;flex:none}
.pld-stu.off .pld-stu-pg{background:#F0F3F8;color:#8C9AB3}
.pld-arw{font-style:normal;font-size:10px;color:#8C9AB3;flex:none;padding:0 2px}
.pld-pgs{padding:0 9px 9px 30px}
.pld-pg{display:flex;align-items:center;gap:6px;padding:3px 0;cursor:pointer;font-size:10.5px}
.pld-pg input{width:12px;height:12px;cursor:pointer;accent-color:#2E6BE6;flex:none}
.pld-pg span{flex:1;min-width:0;color:var(--ad-ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pld-pg em{font-style:normal;font-size:9.5px;color:var(--ad-ink3);flex:none}
.pld-at{font-style:normal;font-size:9px;color:#7A879E;background:#F2F5FA;border-radius:4px;padding:0 4px;margin-left:3px}
.pld-at.warn{background:#FFF4E3;color:#B2690A}
.pld-les-t{display:flex;align-items:baseline;gap:6px;font-size:10px;font-weight:700;
  color:var(--ad-ink3);margin:9px 0 3px;padding-top:7px;border-top:1px dashed #EDF1F7}
.pld-les-t em{margin-left:auto;font-style:normal;font-size:9.5px;font-weight:400}

.pld-r{position:sticky;top:0;min-width:0}
.pld-r-h{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.pld-r-h b{font-size:11.5px;color:var(--ad-ink)}
.pld-tabs{margin-left:auto;display:flex;background:#F1F5FB;border-radius:8px;padding:2px}
.pld-tabs button{border:0;background:none;font-size:10.5px;color:#7A879E;padding:3px 9px;
  border-radius:6px;cursor:pointer}
.pld-tabs button.on{background:#fff;color:#2C5FD6;box-shadow:0 1px 3px rgba(44,95,214,.14)}

.pld-paper{position:relative;width:100%;max-width:340px;margin:0 auto;aspect-ratio:1/1.414;
  background:#fff;border:1px solid #DCE3EF;border-radius:3px;
  box-shadow:0 4px 16px rgba(16,32,64,.1);overflow:hidden}
/* 百分比高度在 aspect-ratio 容器里会失效，用绝对定位撑满整张纸 */
.pld-p-in{position:absolute;inset:0;padding:16px 15px 12px;
  display:flex;flex-direction:column;overflow:hidden}
.pld-p-hd{display:flex;justify-content:space-between;align-items:baseline;
  font-size:7.5px;color:#93A0B5;padding-bottom:5px;border-bottom:1px solid #E7EDF6;margin-bottom:9px}
.pld-p-hd span{font-weight:700;color:#5A6B8C;letter-spacing:.3px}
.pld-p-t{font-size:10px;font-weight:800;color:#1B2A45;text-align:center;margin:2px 0 8px;letter-spacing:1px}
.pld-p-tbl{width:100%;border-collapse:collapse;font-size:7px}
.pld-p-tbl th{background:#F4F7FC;color:#5A6B8C;font-weight:700;padding:3px 3px;
  border:1px solid #E4EAF3;text-align:left}
.pld-p-tbl td{padding:3px;border:1px solid #EDF1F7;color:#3D4C63;line-height:1.5}
.pld-p-sign{font-size:7px;color:#7A879E;margin-top:auto;padding-top:8px}
.pld-p-name{font-size:11px;font-weight:800;color:#1B2A45;margin-bottom:3px}
.pld-p-name span{font-size:8px;font-weight:400;color:#7A879E}
.pld-card{border:1px solid #E4EAF3;border-radius:5px;padding:7px 8px;margin:6px 0}
.pld-card > div{display:flex;gap:6px;font-size:7.5px;line-height:1.9}
.pld-card em{font-style:normal;color:#8C9AB3;width:38px;flex:none}
.pld-card b{color:#1B2A45;font-weight:600}
.pld-p-tip{font-size:7px;color:#8C9AB3;line-height:1.8;margin-top:6px}
.pld-p-sub{font-size:7.5px;color:#5A6B8C;margin-bottom:8px}
.pld-q{margin-top:2px}
.pld-q-i{display:flex;align-items:flex-end;gap:4px;font-size:7.5px;color:#3D4C63;margin-bottom:14px}
.pld-q-i b{flex:none;font-weight:700}
.pld-q-i i{display:block;height:1px;background:#DDE4EE;flex:1}
.pld-q-i i.s{flex:0 0 26%}
.pld-p-ft{position:absolute;left:15px;right:15px;bottom:8px;text-align:center;
  font-size:7px;color:#B4BECD;padding-top:5px;border-top:1px solid #F0F4FA}

.pld-copies{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--ad-ink3);
  margin-right:auto;padding-left:2px}
.pld-copies select{height:28px;border:1px solid var(--ad-line);border-radius:6px;
  padding:0 6px;font-size:11px;background:#fff;color:var(--ad-ink)}
@media (max-width:1000px){
  .pld-wrap{grid-template-columns:minmax(0,1fr)}
  .pld-r{position:static}
}

/* 按讲分组 */
.pld-les{margin:7px 0 2px;padding:6px 7px;border:1px solid #EDF1F7;border-radius:7px;background:#FCFDFF}
.pld-les-h{display:flex;align-items:baseline;gap:5px;margin-bottom:2px}
.pld-les-h b{font-size:10.5px;font-weight:700;color:var(--ad-ink);flex:none}
.pld-les-h span{font-size:9.5px;color:var(--ad-ink3);flex:1;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pld-les-h em{font-style:normal;font-size:9px;color:#5A6B8C;background:#F1F5FB;
  border-radius:4px;padding:0 5px;flex:none}
.pld-les-h em.warn{background:#FFF4E3;color:#B2690A}
.pld-les .pld-pg{padding:2px 0}

/* 讲义预览 */
.pld-doc-k{font-size:8.5px;font-weight:800;color:#1B2A45;margin:2px 0 5px}
.pld-doc-li{font-size:8px;color:#3D4C63;line-height:1.8;margin-bottom:3px}
.pld-doc-e{border:1px solid #E7EDF6;border-radius:4px;padding:5px 6px;margin:6px 0;background:#FCFDFF}
.pld-doc-e b{font-size:8px;font-weight:800;color:#2E5AA8;margin-right:4px}
.pld-doc-e i.ln{display:block;height:3px;background:#EDF1F7;border-radius:2px;margin:4px 0}
.pld-doc-e i.ln.s{width:62%}
.pld-doc-step{display:flex;align-items:center;gap:4px;font-size:7px;color:#8C9AB3;margin-top:5px}
.pld-doc-step i{display:block;height:1px;background:#E2E8F2;flex:1}
.pld-doc-step i.s{flex:0 0 30%}
.pld-doc-m{display:flex;align-items:center;gap:4px;font-size:7.5px;color:#3D4C63;margin:6px 0}
.pld-doc-m b{flex:none;font-weight:700}
.pld-doc-m i{display:block;height:2.5px;background:#EDF1F7;border-radius:2px;flex:1}
.pld-doc-m i.s{flex:0 0 38%}
.pld-doc-note{font-size:7px;color:#8C9AB3;line-height:1.9;margin-top:8px;padding-top:6px;
  border-top:1px dashed #E4EAF3}

/* 预览：学习要求 / 练习单题干条 */
.pld-p-req{font-size:7px;color:#7A879E;line-height:1.9;margin-top:9px;
  padding:6px 7px;background:#FAFBFD;border-left:2px solid #D9E4F5;border-radius:2px}
.pld-p-req b{color:#5A6B8C;margin-right:3px}
.pld-p-bottom{margin-top:auto;padding-top:12px}
.pld-p-back{font-size:7px;color:#7A879E;padding-top:8px;border-top:1px dashed #E4EAF3}
.pld-q-i{display:flex;align-items:center;gap:4px;font-size:7.5px;color:#3D4C63;margin-top:9px}
.pld-q-i b{flex:none;font-weight:700}
.pld-q-i i.ln{display:block;height:3px;background:#EDF1F7;border-radius:2px;flex:1}
.pld-q-a{display:flex;gap:4px;margin-top:5px;padding-left:9px}
.pld-q-a i{display:block;height:1px;background:#DDE4EE;flex:1}
.pld-q-a i.s{flex:0 0 34%}

/* 演示数据横幅 */
.wk-demo{display:flex;align-items:center;gap:11px;background:#FFF9EC;border:1px solid #F5E3BE;
  border-radius:11px;padding:11px 14px;margin-bottom:12px}
.wk-demo.idle{background:#F7F9FC;border-color:#E2E8F2}
.wk-demo .ic{width:26px;height:26px;flex:none;border-radius:9px;background:#FCEBC8;color:#B2690A;
  display:flex;align-items:center;justify-content:center;font-size:13px}
.wk-demo.idle .ic{background:#EAF0F9;color:#6B7C99}
.wk-demo > div{flex:1;min-width:0}
.wk-demo b{display:block;font-size:11.5px;font-weight:800;color:#7A5205;margin-bottom:2px}
.wk-demo.idle b{color:var(--ad-ink2)}
.wk-demo span{display:block;font-size:10.5px;color:#8A6A2C;line-height:1.65}
.wk-demo.idle span{color:var(--ad-ink3)}
.wk-demo code{font-family:ui-monospace,monospace;font-size:10px;background:#fff;
  border:1px solid #EFDCB6;border-radius:4px;padding:0 4px}
.wk-demo-x{flex:none;border:1px solid #EBD5A8;background:#fff;color:#8A6A2C;font-size:11px;
  font-weight:600;border-radius:8px;padding:6px 11px;cursor:pointer;white-space:nowrap}
.wk-demo-x:hover{background:#FFF3DC;border-color:#DFC083}
.wk-demo.idle .wk-demo-x{border-color:#D6DEEB;color:#4A5C7A}
.wk-demo.idle .wk-demo-x:hover{background:#EEF3FA}

.wk-count{margin-left:auto;font-size:10.5px;color:var(--ad-ink3);white-space:nowrap}

/* 主表 */
.wk-tbl{font-size:11px}
.wk-tbl th,.wk-tbl td{padding:7px 7px}
.wk-tbl th:first-child,.wk-tbl td:first-child{padding-left:9px}
.wk-link{cursor:pointer;border-bottom:1px dashed transparent}
.wk-link:hover{color:#2E6BE6;border-bottom-color:#A9C4F0}

/* 薄弱考点小标签 */
.wk-chip{display:inline-flex;align-items:baseline;gap:3px;background:#FFF4E6;color:#9A6510;
  border:1px solid #F5E1C2;border-radius:6px;font-size:10px;font-weight:600;
  padding:1px 6px;margin:0 4px 3px 0;cursor:pointer;white-space:nowrap}
.wk-chip:hover{background:#FFEBCE;border-color:#EBCB96}
.wk-chip i{font-style:normal;font-size:9px;font-weight:700;color:#B9761A;opacity:.85}

.wk-up{font-weight:700;color:#0F8A4E}
.wk-down{font-weight:700;color:#D0463B}

/* 排行可点 */
.wk-few{font-size:10px;color:var(--ad-ink3);background:#F2F5FA;border-radius:4px;padding:1px 6px}
.wk-rank-tip{font-size:10px;color:var(--ad-ink3);margin-top:8px;padding-top:8px;
  border-top:1px dashed #EEF2F8;line-height:1.6}
.wk-rank{cursor:pointer;padding:9px 6px;margin:0 -6px;border-radius:8px;border-bottom:1px dashed #EEF2F8}
.wk-rank:hover{background:#F7FAFF}
.wk-rank:last-child{border-bottom:0}

/* 三段式弹层的底栏：按钮不撑满，靠右 */
.ad-modal.pg-modal .ad-modal-foot{justify-content:flex-end}
.ad-modal.pg-modal .ad-modal-foot .ad-btn{flex:0 0 auto;width:auto;min-width:104px;
  padding:10px 22px;font-size:13px;border-radius:11px}

/* 弹层内部 */
.wk-modal-sub{font-size:11px;font-weight:700;color:var(--ad-ink2);margin:12px 0 7px}
.wk-modal-sub:first-child{margin-top:2px}
.wk-kps{display:flex;flex-wrap:wrap;gap:2px 0;margin-bottom:4px}
.wk-paper{cursor:pointer}
.wk-paper:hover td{background:#F5F9FF}
.wk-paper:hover .ad-link{color:#1D5BD6}
.wk-sub{display:inline-block;font-size:10px;font-weight:700;color:#2E5AA8;background:#EDF3FF;
  border-radius:5px;padding:1px 6px}
.wk-bad td{background:#FFFBFB}
.wk-y{color:#0F8A4E;font-weight:700}
.wk-n{color:#D0463B;font-weight:700}
.wk-star{font-style:normal;font-size:9px;color:#E8A93A;letter-spacing:-.5px}

.wk-flow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0}
.wk-flow-i{position:relative;padding:12px 16px 4px 0}
.wk-flow-i > span{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;
  border-radius:50%;background:#EEF4FF;color:#2E6BE6;font-size:10.5px;font-weight:700;margin-bottom:8px}
.wk-flow-i > b{display:block;font-size:12px;font-weight:700;color:var(--ad-ink);margin-bottom:5px}
.wk-flow-i > i{display:block;font-style:normal;font-size:10.5px;color:var(--ad-ink3);line-height:1.7;
  padding-right:14px}
.wk-flow-i > em{position:absolute;right:6px;top:14px;font-style:normal;font-size:15px;color:#C8D3E4}
@media (max-width:1180px){
  .wk-flow{grid-template-columns:repeat(2,minmax(0,1fr))}
  .wk-flow-i > em{display:none}
}

.wk-api{width:100%;border-collapse:separate;border-spacing:0;font-size:11px}
.wk-api th{background:#F6F8FC;color:var(--ad-ink2);font-weight:700;text-align:left;
  padding:8px 10px;border-bottom:1px solid var(--ad-line);white-space:nowrap}
.wk-api td{padding:9px 10px;border-bottom:1px solid #F1F4F9;color:var(--ad-ink2);
  vertical-align:top;line-height:1.75}
.wk-api tbody tr:last-child td{border-bottom:0}
.wk-api code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10.5px;
  background:#F3F6FB;border:1px solid #E4EAF3;border-radius:4px;padding:1px 5px;
  color:#2E5AA8;white-space:nowrap;margin:0 2px 2px 0;display:inline-block}
.wk-api .m{font-family:ui-monospace,monospace;font-size:9.5px;font-weight:700;border-radius:4px;
  padding:2px 6px;background:#E8F7EF;color:#0F8A4E;letter-spacing:.3px}
@media (max-width:1180px){
  .wk-duo{grid-template-columns:minmax(0,1fr)}
  .wk-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
}

.sx-dts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:6px 0 2px}
.sx-dt{background:#F8FAFE;border:1px solid #EDF2FA;border-radius:8px;padding:8px 10px}
.sx-dt span{display:block;font-size:10.5px;color:var(--ad-ink3)}
.sx-dt b{display:block;font-size:13px;font-weight:800;color:var(--ad-ink);margin-top:2px}
.sx-empty{padding:30px 0;text-align:center;font-size:11.5px;color:var(--ad-ink3)}
@media (max-width:1180px){
  .sx-kpis,.sx-kpis-4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sx-duo{grid-template-columns:1fr}
}


/* ===== 单词学习：计划 + 记录 一页两块 ===== */
.wl-sec{display:flex;align-items:baseline;gap:9px;margin:20px 0 9px;padding-left:1px}
.wl-sec:first-of-type{margin-top:6px}
.wl-sec > b{font-size:12.5px;font-weight:800;color:var(--ad-ink);letter-spacing:.2px;flex:none}
.wl-sec > span{font-size:11px;color:var(--ad-ink3);flex:1;min-width:0}
.wl-sec > em{font-style:normal;font-size:11px;color:var(--ad-ink3);flex:none}
.wl-sec::before{content:'';width:3px;height:12px;border-radius:2px;background:var(--ad-grad);flex:none}
.wl-f{display:flex;align-items:center;gap:8px;flex:none}
.wl-f > span{font-size:11px;color:var(--ad-warn,#B2690A);background:#FFF6E6;
  border:1px solid #F3E3C2;border-radius:6px;padding:1px 7px}
.wl-f select{font-size:11.5px;border:1px solid var(--ad-line);border-radius:7px;padding:3px 7px;
  background:#fff;color:var(--ad-ink2);cursor:pointer}
.wl-sel{font-size:11.5px;border:1px solid var(--ad-line);border-radius:7px;padding:3px 6px;
  background:#fff;color:var(--ad-ink2);cursor:pointer;width:112px}
.wl-sel:hover{border-color:#B9CDF3;color:var(--ad-ink)}
#wlPlan tr.wl-on{background:#F3F8FF}
#wlPlan tr.wl-on td:first-child{box-shadow:inset 3px 0 0 #2E6BE6}
#wlPlan tr{cursor:default}
.wl-tg{border:1px solid var(--ad-line);background:#fff;color:var(--ad-ink3);border-radius:7px;
  font-size:11px;padding:3px 9px;cursor:pointer;line-height:1.5}
.wl-tg:hover{border-color:#B9CDF3;color:var(--ad-ink2)}
.wl-tg.on{background:#EEF4FF;border-color:#C9DBFF;color:#1D5BD6;font-weight:600}
/* 规划第 3 步的「一键打印这次资料」：次要按钮，但带点存在感 */
.ad-btn.pw-print{border-color:#C9DBFF;color:#1D5BD6;background:#F5F9FF}
.ad-btn.pw-print:hover{background:#EAF2FF;border-color:#A9C6FA}

/* ===== 学员进步：成绩曲线 ===== */
.pg-bar{display:flex;align-items:center;gap:10px;margin:2px 0 12px;flex-wrap:wrap}
.pg-tabs{display:flex;background:#F1F5FB;border-radius:9px;padding:2px;flex:none}
.pg-tabs button{border:0;background:none;font-size:12px;color:#7A879E;cursor:pointer;
  padding:5px 13px;border-radius:7px;line-height:1.4;white-space:nowrap}
.pg-tabs button.on{background:#fff;color:#1D5BD6;font-weight:700;box-shadow:0 1px 3px rgba(44,95,214,.14)}
.pg-search{flex:1;min-width:150px;max-width:260px;border:1px solid var(--ad-line);border-radius:8px;
  padding:5px 10px;font-size:12px;font-family:inherit;color:var(--ad-ink);outline:none;background:#fff}
.pg-search:focus{border-color:#AFC0FA;box-shadow:0 0 0 3px rgba(91,124,250,.1)}
.pg-sel{border:1px solid var(--ad-line);border-radius:8px;padding:5px 9px;font-size:12px;
  font-family:inherit;color:var(--ad-ink2);background:#fff;cursor:pointer;outline:none}
.pg-svg{display:block;overflow:visible}
.pg-na{font-size:11px;color:var(--ad-ink3)}
.pg-d{font-size:12px;font-weight:800;white-space:nowrap}
.pg-d.up{color:#0F8A4E}
.pg-d.down{color:#D93B3B}
.pg-d.flat{color:var(--ad-ink3);font-weight:600}
.pg-sub{display:inline-block;font-size:11px;border-radius:6px;padding:1px 6px;white-space:nowrap}
.pg-sub.up{background:#E9F7EF;color:#0F8A4E}
.pg-sub.down{background:#FDECEC;color:#C33B3B}
/* 详情弹层：内容有总分图 + 9 科小卡 + 明细表，三段式——头固定、中间滚、底固定 */
.ad-modal.pg-modal{
  max-width:880px;width:92vw;
  max-height:88vh;overflow:hidden;
  display:flex;flex-direction:column;
  padding:18px 22px 14px;
  position:relative;
}
.ad-modal.pg-modal h3{padding-right:40px;flex:none;margin-bottom:4px}
.ad-modal.pg-modal > p{flex:none;margin-bottom:8px;padding-bottom:9px;
  border-bottom:1px solid var(--ad-line)}
/* 右上角 ✕：不随内容滚动 */
.pg-top{position:absolute;top:14px;right:16px;z-index:6}
.pg-x{width:30px;height:30px;border-radius:50%;border:0;padding:0;
  background:#F1F4FA;color:#5A6B8C;font-size:13px;line-height:30px;text-align:center;
  cursor:pointer;box-shadow:0 1px 4px rgba(16,20,32,.1)}
.pg-x:hover{background:#E4EAF5;color:#2C3E5C}
/* 中间这一段才滚，头尾都不动 */
.pg-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;
  margin:0 -8px;padding:0 8px 6px}
.pg-body::-webkit-scrollbar{width:9px}
.pg-body::-webkit-scrollbar-thumb{background:#D6DDEA;border-radius:5px}
.pg-body::-webkit-scrollbar-track{background:transparent}
.ad-modal.pg-modal .ad-modal-foot{flex:none;margin-top:12px;padding-top:12px;
  border-top:1px solid var(--ad-line)}
.pg-h3g{font-size:12px;font-weight:600;color:#1D5BD6;background:#EEF4FF;border-radius:6px;
  padding:1px 7px;margin-left:6px;vertical-align:2px}
.pg-hero{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:4px 0 6px}
@media (max-width:760px){ .pg-hero{grid-template-columns:1fr} }
.pg-hero-b{border:1px solid var(--ad-line);border-radius:12px;padding:12px 12px 6px;background:#fff}
.pg-hero-t{display:flex;align-items:baseline;gap:8px;margin-bottom:4px}
.pg-hero-t b{font-size:12.5px;color:var(--ad-ink)}
.pg-hero-t span{font-size:10.5px;color:var(--ad-ink3)}
.pg-sec-t{font-size:12px;font-weight:800;color:var(--ad-ink2);margin:16px 0 8px;
  padding-left:8px;border-left:3px solid #3E6BE0;line-height:1.5}
.pg-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:10px}
.pg-card{border:1px solid var(--ad-line);border-radius:11px;padding:10px 10px 6px;background:#fff}
.pg-card-h{display:flex;align-items:baseline;justify-content:space-between;gap:6px}
.pg-card-h b{font-size:12px;color:var(--ad-ink)}
.pg-card-v{font-size:14px;font-weight:800;color:#1D5BD6}
.pg-card-v i{font-style:normal;font-size:9.5px;font-weight:400;color:var(--ad-ink3);margin-left:1px}
.pg-card-r{font-size:10.5px;color:var(--ad-ink3);margin:3px 0 4px}
.pg-card-r b{color:var(--ad-ink2);font-size:11.5px}
.pg-card-r em{font-style:normal;font-weight:800;margin-left:2px}
.pg-card-r em.up{color:#0F8A4E}
.pg-card-r em.down{color:#D93B3B}
.pg-card-r em.flat{color:var(--ad-ink3)}
.pg-card-f{font-size:10px;color:var(--ad-ink3);margin-top:2px}
.pg-tbl{margin-top:2px}
.pg-tbl th{font-size:11px}
.pg-tbl td{font-size:12px}

/* ===== 学习记录（管理端）：筛选条 + 明细表 + 分页 ===== */
.stl-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 7px;
  padding:10px 12px;background:#FAFBFD;border:1px solid var(--ad-line);border-radius:11px;margin-bottom:12px}
.stl-lab{font-size:11px;color:var(--ad-ink3);flex:none;white-space:nowrap}
.stl-lab:first-child{font-weight:700;color:var(--ad-ink2);margin-right:1px}
.stl-in{border:1px solid var(--ad-line);border-radius:7px;padding:4px 6px;font-size:11px;
  font-family:inherit;color:var(--ad-ink);background:#fff;outline:none;min-width:78px;cursor:pointer}
.stl-in:focus{border-color:#AFC0FA;box-shadow:0 0 0 3px rgba(91,124,250,.1)}
.stl-q{width:124px;cursor:text}
.stl-date{width:112px;cursor:text;padding:4px 5px}
.stl-tilde{color:var(--ad-ink3);font-size:11px;margin:0 -2px}
.stl-bts{display:flex;gap:6px;flex:none;flex-basis:100%;margin-top:2px}
.stl-bt{width:auto;flex:none;padding:4px 10px;font-size:11px;border-radius:7px}
.stl-bt.stl-exp{color:#1D5BD6;border-color:#C9DBFF;background:#F5F9FF}
.stl-tbl th{font-size:11px;white-space:nowrap;padding:9px 7px}
.stl-cut{max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11.5px}
.stl-tbl td{font-size:11.5px;padding:8px 8px;vertical-align:middle}
.stl-src{display:inline-block;font-size:10px;border-radius:5px;padding:1px 6px;
  background:#EEF2FF;color:#3E52C4;white-space:nowrap}
.stl-src.ai{background:#F3EDFF;color:#7A4FD6}
.stl-m{width:62px;height:6px;border-radius:3px;background:#EDF1F8;overflow:hidden;margin-bottom:2px}
.stl-m i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,#FFC46B,#F5A524)}
.stl-x{color:#D93B3B;font-size:9.5px;margin-right:1px}
.stl-o{color:#0F8A4E;font-size:9.5px;margin:0 1px 0 4px}
.stl-tbl td b{font-size:11.5px}
.stl-ok{color:#0F8A4E}
.stl-no{font-size:10.5px;color:var(--ad-ink3)}
.stl-done{font-size:10.5px;color:#0F8A4E;background:#E9F7EF;border-radius:5px;padding:1px 6px;white-space:nowrap}
.stl-foot{display:flex;align-items:center;gap:12px;margin-top:12px;flex-wrap:wrap}
.stl-foot > span{font-size:11.5px;color:var(--ad-ink3)}
.stl-sel{border:1px solid var(--ad-line);border-radius:7px;padding:3px 7px;font-size:11.5px;
  font-family:inherit;color:var(--ad-ink2);background:#fff;cursor:pointer;outline:none}
.stl-pgs{display:flex;align-items:center;gap:4px;margin-left:auto}
.stl-pg{min-width:26px;height:26px;border:1px solid var(--ad-line);background:#fff;border-radius:6px;
  font-size:11.5px;color:var(--ad-ink2);cursor:pointer;padding:0 5px;font-family:inherit;line-height:1}
.stl-pg:hover:not(:disabled){border-color:#B9CDF3;color:#1D5BD6}
.stl-pg.on{background:#1D5BD6;border-color:#1D5BD6;color:#fff;font-weight:700}
.stl-pg.nav{color:#8A94A6}
.stl-pg:disabled{opacity:.4;cursor:not-allowed}
.stl-dot{color:var(--ad-ink3);font-size:11px;padding:0 2px}
.stl-jump{font-size:11.5px;color:var(--ad-ink3);display:flex;align-items:center;gap:5px}
.stl-jump input{width:46px;border:1px solid var(--ad-line);border-radius:6px;padding:3px 6px;
  font-size:11.5px;font-family:inherit;text-align:center;outline:none;color:var(--ad-ink2)}


/* 打印内容预览弹层 */
.ad-pj-pv{border:1px solid var(--ad-line);border-radius:10px;overflow:hidden;margin-top:4px}
.ad-pj-row{display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:9px 12px;font-size:12px;color:var(--ad-ink2);border-bottom:1px dashed var(--ad-line)}
.ad-pj-row:last-child{border-bottom:0}
.ad-pj-row b{font-size:12px;color:var(--ad-ink);font-weight:600;flex:none}
.ad-pj-row.total{background:#F7F9FD;font-weight:600;color:var(--ad-ink)}

/* ===== 错题打印：左选孩子 / 右看题目勾选 ===== */
.wpr-l{width:266px;flex:none;border-right:1px solid var(--ad-line);padding:12px;overflow:auto;background:#FAFBFD}
.wpr-l h3{font-size:12px;font-weight:800;margin:0 0 9px;color:var(--ad-ink2);letter-spacing:.2px}
.wpr-stu{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:11px;cursor:pointer;
  border:1.5px solid transparent;margin-bottom:6px;background:#fff;transition:.14s}
.wpr-stu:hover{border-color:#C9DBFF}
.wpr-stu.on{border-color:var(--ad-b);background:#F6F8FF;box-shadow:0 4px 12px rgba(91,124,250,.12)}
.wpr-av{width:26px;height:26px;border-radius:8px;background:#EEF2FF;color:#3E52C4;font-size:11.5px;
  font-weight:800;display:grid;place-items:center;flex:none}
.wpr-stu-b{flex:1;min-width:0}
.wpr-stu-b b{display:block;font-size:12.5px;font-weight:700;color:var(--ad-ink)}
.wpr-stu-b span{display:block;font-size:10.5px;color:var(--ad-ink3);margin-top:2px}
.wpr-n{flex:none;font-size:10.5px;font-weight:800;color:#C74B36;background:#FDECEC;
  border-radius:6px;padding:2px 6px}
.wpr-n.zero{color:#0F8A4E;background:#E6F8F2}

.wpr-r{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}
.wpr-head{padding:13px 18px 10px;border-bottom:1px solid var(--ad-line);flex:none}
.wpr-who{display:flex;align-items:center;gap:10px;margin-bottom:9px}
.wpr-who b{font-size:15px;font-weight:800}
.wpr-who span{font-size:11.5px;color:var(--ad-ink3)}
.wpr-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.wpr-tools .ad-btn{width:auto;flex:none;height:30px;padding:0 11px;font-size:11.5px}
.wpr-sep{width:1px;height:16px;background:var(--ad-line);margin:0 3px}
.wpr-opt{display:flex;align-items:center;gap:5px;font-size:11.5px;color:var(--ad-ink2);cursor:pointer}
.wpr-opt input{width:13px;height:13px;accent-color:var(--ad-b);margin:0}

.wpr-body{flex:1;overflow:auto;padding:4px 18px 10px}
.wpr-item{display:flex;gap:11px;padding:11px 0;border-bottom:1px dashed #EFF2F7}
.wpr-item:last-child{border-bottom:0}
.wpr-item.off{opacity:.45}
.wpr-ck{flex:none;padding-top:2px}
.wpr-ck input{width:15px;height:15px;accent-color:var(--ad-b);margin:0;cursor:pointer}
.wpr-q{flex:1;min-width:0}
.wpr-q-t{font-size:12.5px;line-height:1.75;color:var(--ad-ink);margin-bottom:5px;word-break:break-word}
.wpr-q-m{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:10.5px;color:var(--ad-ink3)}
.wpr-tag{background:#F3F5FA;border-radius:5px;padding:1px 6px}
.wpr-tag.sb{background:#EEF2FF;color:#3E52C4}
.wpr-tag.kp{background:#F6F0FF;color:#7B54C6}
.wpr-tag.bad{background:#FDECEC;color:#C74B36}
.wpr-tag.ok{background:#E6F8F2;color:#0F8A4E}
.wpr-star{color:#FFB020;letter-spacing:1px}
.wpr-star i{font-style:normal;color:#E4E9F2}
.wpr-empty{padding:40px 0;text-align:center;color:var(--ad-ink3);font-size:12.5px;line-height:1.9}
.wpr-grp{margin:6px 0 14px;border:1px solid var(--ad-line);border-radius:12px;padding:0 12px 4px;background:#fff}
.wpr-grp-h{display:flex;align-items:center;gap:8px;padding:9px 0 7px;border-bottom:1px solid #F1F4F9;
  position:sticky;top:0;background:#fff;z-index:1}
.wpr-grp-h b{font-size:12.5px;font-weight:800;color:var(--ad-ink)}
.wpr-grp-h span{font-size:10.5px;color:var(--ad-ink3)}

/* 打印预览小样 */
.wpr-pv{background:#fff;border:1px solid var(--ad-line);border-radius:12px;padding:14px 16px;
  font-size:11.5px;line-height:1.9;color:#2A3340}
.wpr-pv h4{font-size:13px;margin:0 0 3px;font-weight:800}
.wpr-pv .sub{font-size:10.5px;color:#9AA0AE;margin-bottom:10px;
  padding-bottom:9px;border-bottom:1px dashed #E6EAF2}
.wpr-pv .q{margin-bottom:11px}
.wpr-pv .ln{border-bottom:1px solid #EDF0F6;height:17px;margin-top:5px}

/* ===== 撰写学习反馈：左数据 / 右表单 ===== */
.fb-l{width:404px;flex:none;border-right:1px solid var(--ad-line);background:#F7F8FB;
  padding:14px;overflow:auto}
.fb-r{flex:1;min-width:0;display:flex;flex-direction:column;overflow:auto;padding:16px 24px 18px}
.fb-card{background:#fff;border:1px solid var(--ad-line);border-radius:12px;padding:12px 13px;margin-bottom:11px}
.fb-card:last-child{margin-bottom:0}
.fb-ttl{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:800;color:var(--ad-ink);margin-bottom:10px}
.fb-ttl i{width:3px;height:12px;border-radius:2px;background:var(--ad-b);flex:none}
.fb-ttl .r{margin-left:auto;font-size:10.5px;font-weight:400;color:var(--ad-ink3)}
.fb-top{display:flex;align-items:baseline;gap:14px;padding-bottom:9px;border-bottom:1px dashed var(--ad-line);margin-bottom:9px}
.fb-top b{font-size:16px;font-weight:800;color:var(--ad-ink);font-variant-numeric:tabular-nums;letter-spacing:.2px}
.fb-top span{font-size:10.5px;color:var(--ad-ink3)}
.fb-mini{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.fb-mini > div{background:#F7F8FB;border-radius:9px;padding:8px 6px;text-align:center}
.fb-mini b{display:block;font-size:14.5px;font-weight:800;color:var(--ad-ink);font-variant-numeric:tabular-nums}
.fb-mini span{display:block;font-size:10px;color:var(--ad-ink3);margin-top:3px}
.fb-mini.g > b{color:#0F8A4E}
.fb-course{border:1px solid var(--ad-line);border-radius:10px;padding:10px 11px;margin-bottom:9px;background:#fff}
.fb-course:last-child{margin-bottom:0}
.fb-course-t{font-size:11.5px;font-weight:700;color:var(--ad-ink);line-height:1.55;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.fb-course-d{font-size:10px;color:var(--ad-ink3);margin:4px 0 8px;font-variant-numeric:tabular-nums}
.fb-bar{display:flex;align-items:center;gap:8px;font-size:10.5px;color:var(--ad-ink2);margin-top:6px}
.fb-bar > span:first-child{width:62px;flex:none;color:var(--ad-ink3)}
.fb-bar .t{flex:1;height:6px;border-radius:4px;background:#EEF1F6;overflow:hidden}
.fb-bar .t i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#6D8DFB,#8B6CF0)}
.fb-bar .t.g i{background:linear-gradient(90deg,#37D0A0,#22C391)}
.fb-bar b{width:44px;text-align:right;font-weight:800;color:var(--ad-ink);font-variant-numeric:tabular-nums}
.fb-empty{padding:18px 0;text-align:center;font-size:11.5px;color:var(--ad-ink3)}
/* 科目 / 考点 chips */
.fb-subrow{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.fb-schip{font-size:11px;font-weight:700;padding:3px 9px;border-radius:7px;
  background:#EEF2FF;color:#3E52C4;border:1px solid #DDE6FB}
.fb-schip em{font-style:normal;font-weight:400;opacity:.7;margin-left:3px}
.fb-schip.off{background:#F3F5FA;color:#9AA0AE;border-color:#E9EDF5}
.fb-pt{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px dashed #EFF2F7;
  cursor:pointer;font-size:12px;color:var(--ad-ink)}
.fb-pt:last-child{border-bottom:0}
.fb-pt input{width:14px;height:14px;accent-color:var(--ad-b);margin:0;flex:none}
.fb-pt .n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fb-pt .from{flex:none;font-size:10px;color:var(--ad-ink3);background:#F3F5FA;border-radius:5px;padding:1px 6px}
.fb-pt .sb{flex:none;font-size:10px;color:#3E52C4;background:#EEF2FF;border-radius:5px;padding:1px 6px}
.fb-pt.off .n,.fb-pt.off .from,.fb-pt.off .sb{opacity:.45}
.fb-picked{font-size:11.5px;color:var(--ad-ink3);line-height:1.75;margin-bottom:8px}
.fb-picked b{color:#3E52C4;font-weight:700}
/* 家长端：科目 / 考点标签 */
.ppf-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.ppf-tags span{font-size:10.5px;font-weight:600;padding:3px 9px;border-radius:7px;
  background:#EEF2FF;color:#3E52C4;border:1px solid #DDE6FB}
.ppf-tags em{font-style:normal;font-size:10.5px;padding:3px 9px;border-radius:7px;
  background:#F3F5FA;color:#7A8699;border:1px solid #E9EDF5}
.fb-sub-small{font-size:10px;color:#3E52C4;background:#EEF2FF;border-radius:5px;
  padding:1px 6px;display:inline-block;margin-top:4px}

/* 右栏表单 */
.fb-frow{display:flex;align-items:center;gap:12px;margin-bottom:13px}
.fb-frow.grow{flex:1;min-height:0;align-items:stretch}
.fb-frow.grow > label{padding-top:9px}
.fb-frow > label{width:70px;flex:none;font-size:12.5px;font-weight:700;color:var(--ad-ink2)}
.fb-frow select,.fb-frow input[type=date]{height:38px;border:1.5px solid var(--ad-line);border-radius:10px;
  padding:0 11px;font-size:12.5px;color:var(--ad-ink);background:#fff;font-family:inherit;outline:none;min-width:0}
.fb-frow select:focus,.fb-frow input:focus{border-color:var(--ad-b)}
.fb-frow .who{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ad-ink)}
.fb-unbind{font-size:10.5px;color:#C07A05;background:#FDF4E3;border-radius:6px;padding:2px 7px}
.fb-tabs{display:flex;gap:6px;background:#F3F5FA;border-radius:10px;padding:3px}
.fb-tabs button{border:0;background:none;border-radius:8px;padding:6px 13px;font-size:12px;font-weight:600;
  color:var(--ad-ink3);cursor:pointer;font-family:inherit}
.fb-tabs button.on{background:#fff;color:var(--ad-b);box-shadow:0 2px 7px rgba(22,26,40,.09)}
.fb-tpl{height:38px;border:1.5px solid var(--ad-line);border-radius:10px;padding:0 11px;font-size:12.5px;
  background:#fff;font-family:inherit;color:var(--ad-ink);outline:none;max-width:270px}
.fb-ta{width:100%;flex:1;min-height:150px;border:1.5px solid var(--ad-line);border-radius:12px;
  padding:12px 14px;font-size:13px;line-height:1.95;color:var(--ad-ink);resize:vertical;
  font-family:inherit;outline:none;background:#fff}
.fb-ta:focus{border-color:var(--ad-b);box-shadow:0 0 0 4px rgba(91,124,250,.08)}
.fb-count{font-size:10.5px;color:var(--ad-ink3);margin-top:6px;text-align:right}
.fb-stars{display:flex;align-items:center;gap:6px}
.fb-stars button{border:0;background:none;padding:0 1px;font-size:23px;line-height:1;color:#DFE4EE;
  cursor:pointer;transition:.12s;font-family:inherit}
.fb-stars button:hover{transform:scale(1.12)}
.fb-stars button.on{color:#FFB020}
.fb-score{font-size:12.5px;color:var(--ad-ink3);margin-left:6px}
.fb-score b{color:var(--ad-ink);font-weight:800;font-size:14px}
.fb-hint{font-size:11px;color:var(--ad-ink3);line-height:1.75;margin-top:9px}
.fb-hint b{color:#C07A05}
.fb-tools{display:flex;align-items:center;gap:9px;margin-bottom:9px}
.fb-tools .ad-btn{width:auto;flex:none;height:32px;padding:0 13px;font-size:12px}

/* 家长收到的样子 */
.fb-ph{width:340px;background:#EDEDED;border-radius:16px;padding:0 0 14px;overflow:hidden}
.fb-ph-top{background:#3C4650;color:#fff;font-size:11.5px;text-align:center;padding:7px 0 6px}
.fb-ph-card{background:#fff;margin:10px 10px 0;border-radius:12px;padding:13px 14px;line-height:1.85;
  font-size:12.5px;color:#2A3340}
.fb-ph-h{display:flex;align-items:center;gap:9px;padding-bottom:10px;margin-bottom:10px;
  border-bottom:1px solid #EFF2F7}
.fb-ph-av{width:32px;height:32px;border-radius:9px;background:linear-gradient(135deg,#6D8DFB,#8B6CF0);
  color:#fff;font-size:13px;font-weight:800;display:grid;place-items:center;flex:none}
.fb-ph-h b{display:block;font-size:12.5px;font-weight:700;color:#14161F}
.fb-ph-h span{display:block;font-size:10.5px;color:#9AA0AE;margin-top:2px}
.fb-ph-body{white-space:pre-wrap;word-break:break-word}
.fb-ph-st{display:flex;align-items:center;gap:5px;font-size:11px;color:#9AA0AE;margin-top:10px;
  padding-top:9px;border-top:1px dashed #EFF2F7}
.fb-ph-st b{color:#FFB020;font-size:13px;letter-spacing:1px}
.fb-ph-btn{margin:10px 10px 0;background:#fff;border-radius:12px;padding:12px 0;text-align:center;
  font-size:12.5px;font-weight:700;color:#3E6BE8}

/* 列表页 */
.fb-st{display:inline-flex;gap:2px;color:#FFB020;font-size:11.5px;letter-spacing:.5px}
.fb-st i{font-style:normal;color:#DFE4EE}

/* step2 选课程 */
.pw-subj{width:104px;flex:none;border-right:1px solid var(--ad-line);padding:10px 8px;overflow:auto}
.pw-subj button{display:block;width:100%;padding:9px 10px;border-radius:9px;border:none;background:transparent;
  font-size:13px;color:var(--ad-ink2);text-align:left;cursor:pointer;margin-bottom:3px;font-family:inherit}
.pw-subj button:hover{background:#F5F7FB}
.pw-subj button.on{background:var(--ad-b);color:#fff;font-weight:700}
.pw-tree{flex:1;overflow:auto;padding:12px 16px}
.pw-tree-h{display:flex;align-items:center;gap:10px;margin-bottom:10px;font-size:12px;color:var(--ad-ink3)}
/* 第 2 步：搜单元 / 讲次 */
.pw-search{display:flex;align-items:center;gap:7px;margin:0 0 10px;padding:0 10px;height:34px;
  background:#F7F9FD;border:1px solid var(--ad-line);border-radius:9px}
.pw-search .ico{width:14px;height:14px;color:#A8B4C8;flex:none}
.pw-search input{flex:1;min-width:0;border:0;background:transparent;font-size:12.5px;color:var(--ad-ink);outline:none}
.pw-search input::placeholder{color:#A8B4C8}
.pw-search-x{flex:none;border:0;background:none;color:#A8B4C8;font-size:12px;cursor:pointer;padding:2px 2px}
.pw-search-x:hover{color:var(--ad-ink3)}
.pw-search-n{flex:none;font-size:11px;color:#A8B4C8;font-variant-numeric:tabular-nums}
.pw-mk{background:#FFF0BF;color:inherit;border-radius:3px;padding:0 1px}
.pw-unit{border:1px solid var(--ad-line);border-radius:11px;margin-bottom:9px;overflow:hidden;background:#fff}
.pw-unit-h{display:flex;align-items:center;gap:9px;padding:9px 12px;background:#FAFBFE;
  font-size:12.5px;font-weight:700;color:var(--ad-ink);cursor:pointer;user-select:none}
.pw-unit-h span{font-weight:500;color:var(--ad-ink3);font-size:11.5px}
.pw-unit-h input{width:14px;height:14px;accent-color:var(--ad-b);margin:0}
.pw-less{display:flex;align-items:center;gap:10px;padding:9px 12px;border-top:1px solid #F2F4F9;cursor:pointer}
.pw-less:hover{background:#FCFDFF}
.pw-less input{width:14px;height:14px;accent-color:var(--ad-b);flex:none;margin:0}
.pw-less-b{min-width:0;flex:1}
.pw-less-b b{display:block;font-size:12.5px;color:var(--ad-ink);font-weight:600}
.pw-less-b span{display:block;font-size:11px;color:var(--ad-ink3);margin-top:2px}
.pw-less em{font-style:normal;font-size:11px;color:#98A0B0;flex:none}
.pw-picked{width:296px;flex:none;border-left:1px solid var(--ad-line);padding:12px;overflow:auto;background:#FBFCFE}
.pw-pk{margin-bottom:12px}
.pw-pk-h{display:flex;align-items:center;justify-content:space-between;font-size:12px;
  font-weight:800;color:var(--ad-ink);margin-bottom:6px}
.pw-pk-h span{font-weight:500;color:var(--ad-ink3);font-size:11px}
.pw-pk-i{display:flex;align-items:center;gap:8px;padding:7px 9px;background:#fff;
  border:1px solid var(--ad-line);border-radius:9px;margin-bottom:5px;font-size:12px}
.pw-pk-i b{font-weight:600;color:var(--ad-ink);flex:1;min-width:0;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.pw-pk-i em{font-style:normal;color:#A8AFBE;cursor:pointer;font-size:13px}
.pw-pk-i em:hover{color:#E85454}
.pw-empty{padding:26px 10px;text-align:center;color:var(--ad-ink3);font-size:12px;line-height:1.9}

/* step3 排日期 */
.pw-cal-wrap{flex:1;overflow:auto;padding:12px 16px}
.pw-cal-bar{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.pw-cal-bar b{font-size:14px;font-weight:800}
.pw-cal-h,.pw-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}
.pw-cal-h{font-size:11.5px;color:var(--ad-ink3);text-align:center;margin-bottom:6px}
.pw-day{min-height:88px;border:1.5px solid var(--ad-line);border-radius:10px;padding:5px 6px;
  background:#fff;cursor:pointer;transition:.13s;overflow:hidden}
.pw-day:hover{border-color:#9FB4FF;background:#FBFCFF}
.pw-day.out{background:#F8F9FC;border-color:#F0F2F7;cursor:default}
.pw-day.out:hover{border-color:#F0F2F7;background:#F8F9FC}
.pw-day.out .pw-day-n{color:#C9CFDB}
.pw-day.today{border-color:var(--ad-b)}
.pw-day-n{font-size:11.5px;font-weight:700;color:var(--ad-ink2)}
.pw-day-sum{font-size:10px;color:#7A8298;margin-top:1px;line-height:1.5}
.pw-ev{font-size:9.5px;line-height:1.5;border-radius:5px;padding:2px 5px;margin-top:3px;
  background:#EEF2FF;color:#3E52C4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  position:relative}
.pw-ev.t2{background:#E7F7EF;color:#1F8A5B}
.pw-ev.t3{background:#FFF4E0;color:#A86A08}
.pw-ev.t4{background:#FDECEC;color:#B33A3A}

/* 待排课程池：一讲一张卡，可拖到日历 */
.pw-pool{display:grid;gap:6px;margin-top:2px}
.pw-chip{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1.5px solid var(--ad-line);
  border-radius:10px;background:#fff;cursor:grab;font-size:12px;transition:.13s;user-select:none}
.pw-chip:hover{border-color:#9FB4FF;box-shadow:0 3px 10px rgba(91,124,250,.14)}
.pw-chip.dragging{opacity:.4;transform:scale(.98)}
.pw-chip b{color:var(--ad-b);font-weight:700;flex:none}
.pw-chip span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ad-ink2)}
.pw-chip i{font-style:normal;color:var(--ad-ink3);font-size:11px;flex:none}
.pw-day.over{border-color:var(--ad-b);background:#F2F6FF;box-shadow:0 0 0 3px rgba(91,124,250,.14)}
.pw-ev{padding-right:13px}
.pw-ev em{position:absolute;right:3px;top:0;font-style:normal;font-size:10px;color:#B6BCC9;
  cursor:pointer;display:none;line-height:1.6}
.pw-ev:hover em{display:block}
.pw-ev em:hover{color:#E85454}
.pw-opt{display:grid;gap:5px}
.pw-opt button{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;
  padding:8px 11px;border:1.5px solid var(--ad-line);border-radius:9px;background:#fff;
  font-family:inherit;font-size:12.5px;color:var(--ad-ink2);cursor:pointer;transition:.14s}
.pw-opt button:hover{border-color:#C3D0FB}
.pw-opt button.on{border-color:var(--ad-b);background:#F6F8FF;color:var(--ad-b);font-weight:700}
.pw-opt button i{font-style:normal;color:var(--ad-ink3);font-size:11.5px}
.pw-opt button.on i{color:var(--ad-b)}
.pw-opt button i.r{color:#E39A2B;font-weight:700}
.pw-stu{position:relative}
.pw-stu-s{position:absolute;right:9px;top:9px;font-style:normal;font-size:10px;
  padding:1px 6px;border-radius:20px;line-height:1.7}
.pw-stu-s.done{background:#E7F7EF;color:#2FA672}
.pw-stu-s.todo{background:#FFF4E0;color:#C08018}
.pw-seg{display:flex;gap:4px;background:#F3F5FA;border-radius:10px;padding:3px;flex:none}
.pw-seg button{border:none;background:transparent;font-family:inherit;font-size:12.5px;color:var(--ad-ink2);
  padding:6px 13px;border-radius:8px;cursor:pointer;white-space:nowrap}
.pw-seg button:hover{color:var(--ad-ink)}
.pw-seg button.on{background:#fff;color:var(--ad-b);font-weight:700;box-shadow:0 2px 6px rgba(22,26,40,.08)}
.pw-q{display:flex;align-items:center;gap:8px;width:100%;border:1.5px solid var(--ad-line);
  border-radius:10px;padding:0 11px;height:38px;background:#fff;transition:.14s}
.pw-q:focus-within{border-color:#C3D0FB;box-shadow:0 0 0 3px rgba(91,124,250,.09)}
.pw-q .pw-q-i{display:flex;align-items:center;color:#A8AFBE;flex:none}
.pw-q input{border:none;outline:none;flex:1;min-width:0;font-size:13px;background:transparent;
  font-family:inherit;color:var(--ad-ink)}
.pw-q input::placeholder{color:#B4BECC}

.pw-side .pw-sec{font-size:11.5px;font-weight:800;color:var(--ad-ink2);margin:16px 0 7px;
  display:flex;align-items:center;justify-content:space-between}
.pw-side .pw-sec span{font-weight:500;color:var(--ad-ink3);font-size:11px}

.agx-picks{max-height:176px;overflow:auto;border:1.5px solid var(--ad-line);border-radius:12px;
  padding:9px 12px;display:grid;gap:7px;background:#FCFDFF}
.agx-picks label{display:flex;gap:9px;align-items:center;font-size:12.5px;color:var(--ad-ink2);cursor:pointer}
.agx-picks label input{accent-color:var(--ad-b);width:14px;height:14px;flex:none;margin:0}
.agx-picks .n{color:var(--ad-ink3);font-size:11px;margin-left:auto}
.agx-picks .empty{color:var(--ad-ink3);font-size:12px;text-align:center;padding:8px 0}

/* ---- 侧栏二级小标题 / 财务条 ---- */
.ad-nav-sub{font-size:10.5px;font-weight:800;color:#A9B0C0;letter-spacing:.8px;
  padding:10px 12px 3px 15px}
.fin-bars{display:grid;gap:10px;margin:2px 0 4px}
.fin-bar{display:grid;grid-template-columns:80px 1fr 100px;align-items:center;gap:11px;
  font-size:12px;color:var(--ad-ink2)}
.fin-bar b{text-align:right;font-weight:700;color:var(--ad-ink);font-variant-numeric:tabular-nums}
.fin-track{height:8px;background:#EEF1F7;border-radius:99px;overflow:hidden}
.fin-track i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#8AA0FF,#5B7CFA)}
.fin-track i.g{background:linear-gradient(90deg,#5FD3A0,#2FA672)}
.fin-track i.r{background:linear-gradient(90deg,#FF9C9C,#E85454)}
.fin-track i.y{background:linear-gradient(90deg,#FFC978,#E39A2B)}
.fin-cols{display:grid;grid-template-columns:1fr 1fr;gap:26px}
.fin-note{font-size:11.5px;color:var(--ad-ink3);line-height:1.9;margin-top:10px}
@media(max-width:1080px){.fin-cols{grid-template-columns:1fr}}

/* ===== 学情档案 ===== */
.lf-hero{
  background:linear-gradient(135deg,#2E4A8F,#4C6BE0);border-radius:18px;
  padding:18px 20px;color:#fff;margin-bottom:14px;
}
.lf-hero-top{display:flex;justify-content:space-between;font-size:11.5px;opacity:.86;margin-bottom:14px}
.lf-hero-main{display:flex;align-items:flex-end;gap:14px}
.lf-hero-main b{font-size:40px;line-height:1;font-weight:600;letter-spacing:-1px}
.lf-hero-tx{flex:1;min-width:0;padding-bottom:4px}
.lf-hero-tx span{display:block;font-size:11.5px;opacity:.86}
.lf-hero-tx i{display:block;font-style:normal;font-size:11px;margin-top:3px;opacity:.9}
.lf-hero-bot{
  margin-top:14px;padding-top:12px;border-top:1px solid rgba(255,255,255,.18);
  font-size:11.5px;opacity:.9;line-height:1.7;
}

.lf-subs{display:grid;grid-template-columns:1fr;gap:8px}
body.layout-tablet .lf-subs{grid-template-columns:1fr 1fr;gap:8px 14px}
.lf-sub{
  display:flex;align-items:center;gap:10px;padding:10px 12px;text-align:left;
  border:1px solid var(--line);border-radius:12px;background:#fff;width:100%;
}
.lf-sub.on{border-color:#BFD5FF;background:#F6FAFF}
.lf-sub-n{font-size:13px;font-weight:500;flex:none;width:34px}
.lf-sub-bar{flex:1;height:7px;border-radius:4px;background:#EDF2FA;overflow:hidden;min-width:0}
.lf-sub-bar i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#7FA8FF,#3E7BF6)}
.lf-sub.bad .lf-sub-bar i{background:linear-gradient(90deg,#FFA99B,#F4705A)}
.lf-sub.warn .lf-sub-bar i{background:linear-gradient(90deg,#FFD08A,#F5A524)}
.lf-sub b{font-size:13px;font-weight:600;flex:none;width:42px;text-align:right}
.lf-sub em{font-size:10.5px;font-style:normal;color:var(--ink-3);flex:none;width:46px;text-align:right}

.lf-kps{display:flex;flex-direction:column;gap:11px}
.lf-kp{padding-bottom:10px;border-bottom:1px dashed #EEF3FA}
.lf-kp:last-child{border-bottom:0;padding-bottom:0}
.lf-kp-h{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}
.lf-kp-h b{font-size:13.5px;font-weight:500}
.lf-tag{font-size:10px;padding:1px 6px;border-radius:5px;flex:none}
.lf-tag.bad{background:var(--coral-l);color:#C4452F}
.lf-tag.warn{background:var(--amber-l);color:#A26A08}
.lf-tag.ok{background:var(--teal-l);color:#0E8A6A}
.lf-tag.thin{background:#F1F4FA;color:#93A1B5}
.lf-kp-bar i{min-width:2px}
.lf-kp-h i{font-size:12px;font-style:normal;font-weight:600;margin-left:auto;flex:none}
.lf-kp-h i.bad{color:var(--coral)}
.lf-kp-h i.warn{color:#B4780E}
.lf-kp-h i.ok{color:var(--teal)}
.lf-kp-bar{height:6px;border-radius:4px;background:#EEF3FA;overflow:hidden}
.lf-kp-bar i{display:block;height:100%;border-radius:4px}
.lf-kp-bar i.bad{background:linear-gradient(90deg,#FFB0A2,#F4705A)}
.lf-kp-bar i.warn{background:linear-gradient(90deg,#FFD69B,#F5A524)}
.lf-kp-bar i.ok{background:linear-gradient(90deg,#8FE3C6,#16B48A)}
.lf-kp-meta{font-size:10.5px;color:var(--ink-3);margin-top:5px}
.lf-more{font-size:11.5px;color:var(--blue-d);padding:9px 0 0}

.lf-trend{display:flex;align-items:flex-end;gap:10px;height:110px}
.lf-trend .col{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:5px;height:100%}
.lf-trend .col u{width:100%;max-width:38px;border-radius:7px 7px 3px 3px;background:linear-gradient(180deg,#B7CCFF,#7FA8FF);text-decoration:none}
.lf-trend .col.now u{background:linear-gradient(180deg,#7FA8FF,#2E5AD6)}
.lf-trend .col b{font-size:10.5px;color:var(--ink-2);font-weight:500}
.lf-trend .col span{font-size:10px;color:var(--ink-3)}

.lf-papers{display:flex;flex-direction:column;gap:8px}
.lf-paper{border:1px solid var(--line);border-radius:12px;overflow:hidden}
.lf-paper-h{display:flex;align-items:center;gap:9px;padding:11px 12px;cursor:pointer}
.lf-paper-h:active{background:#F8FBFF}
.lf-paper-tag{font-size:10px;padding:1px 6px;border-radius:5px;flex:none;background:var(--blue-l);color:var(--blue-d)}
.lf-paper-h b{font-size:13px;font-weight:500;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lf-paper-h em{font-size:11px;font-style:normal;color:var(--ink-3);flex:none}
.lf-paper-h i{font-size:12px;font-style:normal;font-weight:600;flex:none;width:44px;text-align:right}
.lf-paper-h i.bad{color:var(--coral)}
.lf-paper-h i.warn{color:#B4780E}
.lf-paper-h i.ok{color:var(--teal)}
.lf-paper-items{display:none;padding:0 12px 11px;border-top:1px dashed #EEF3FA}
.lf-paper.open .lf-paper-items{display:block}
.lf-item{display:flex;align-items:center;gap:8px;padding:7px 0;font-size:12px;border-bottom:1px dashed #F2F6FC}
.lf-item:last-child{border-bottom:0}
.lf-item .no{width:22px;color:var(--ink-3);flex:none;font-size:11px}
.lf-item .kp{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lf-item .res{flex:none;font-size:11px;padding:1px 7px;border-radius:5px}
.lf-item .res.ok{background:var(--teal-l);color:#0E8A6A}
.lf-item .res.no{background:var(--coral-l);color:#C4452F}
.lf-foot{font-size:11px;color:var(--ink-3);line-height:1.75;margin:2px 4px 0;text-align:center}

.rd-step{
  display:inline-block;font-size:10.5px;color:var(--blue-d);background:var(--blue-l);
  padding:2px 8px;border-radius:6px;margin-bottom:9px;
}
.rd-head h1{font-size:19px;margin:0 0 5px;font-weight:500}
.rd-head span{font-size:12px;color:var(--ink-3)}
.rd-text{font-size:14px;line-height:1.95;color:var(--ink-2);margin:16px 0}
.rd-text p{margin:0 0 13px}
.rd-text p:last-child{margin-bottom:0}
.rd-k{
  color:var(--ink);font-weight:600;padding:0 1px;border-radius:2px;
  background:linear-gradient(180deg,transparent 60%, #FFE7A3 60%);
}
.rd-trans{
  font-size:11.5px;color:var(--blue-d);background:var(--blue-l);
  padding:4px 10px;border-radius:8px;margin-bottom:12px;
}
.rd-cn{
  font-size:12.5px;line-height:1.9;color:var(--ink-3);background:#F7FAFF;
  border-radius:10px;padding:11px 12px;margin:-4px 0 12px;white-space:pre-wrap;
}
.rd-words{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0 10px}
.rd-w{
  font-size:11.5px;color:var(--ink-2);background:#F4F8FF;border:1px solid #E3EDFF;
  border-radius:8px;padding:3px 8px;
}
.rd-w:active{background:var(--blue-l);border-color:#D6E4FF}
.rd-tip{
  display:flex;gap:7px;align-items:center;font-size:11.5px;color:var(--ink-3);
  background:#F7FAFF;padding:9px 11px;border-radius:10px;line-height:1.6;
}
.rd-tip .ico{width:15px;height:15px;color:var(--blue);flex:none}

/* 科目选择 */
.subj-row{display:flex;gap:4px;overflow-x:auto;padding:2px 0 12px;margin-bottom:2px}
.subj-row::-webkit-scrollbar{display:none}
.subj{display:flex;flex-direction:column;align-items:center;gap:6px;flex:none;width:56px;padding:4px 0}
.s-ico{
  width:40px;height:40px;border-radius:13px;display:grid;place-items:center;
  font-size:14px;font-weight:500;transition:.18s;
}
.subj span:last-child{font-size:11px;color:#C2CCDA;white-space:nowrap}
.subj.on span:last-child{color:var(--ink-2)}
.subj.active .s-ico{box-shadow:0 0 0 2px #fff,0 0 0 3.5px var(--blue)}
.subj.active span:last-child{color:var(--blue-d);font-weight:500}
.subj.off .s-ico{opacity:.5}
.subj.off span:last-child{color:#B9C4D4}

body.layout-tablet .subj-row{
  display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:4px;
  overflow:visible;padding-bottom:12px;
}
body.layout-tablet .subj{width:auto;padding:8px 0;border-radius:14px;transition:.18s}
body.layout-tablet .subj.active{background:#F4F8FF}

.subj-head{display:flex;align-items:center;gap:10px;margin:0 0 12px;padding:0 2px}
.subj-head b{font-size:15px;font-weight:500;flex:none}
.subj-head span{font-size:11.5px;color:var(--ink-3);flex:none}
.subj-head .pbar{flex:1;height:6px;border-radius:3px;background:#EDF2FA;overflow:hidden;max-width:240px}
.subj-head .pbar i{display:block;height:100%;background:var(--blue);border-radius:3px}

.off-card{text-align:center;padding:30px 20px}
body.layout-tablet .off-card{grid-column:1 / -1}
.off-card .ico{width:34px;height:34px;color:#B9C4D4;margin:0 auto 12px}
.off-card b{font-size:14.5px;font-weight:500;display:block;margin-bottom:7px}
.off-card p{font-size:12.5px;color:var(--ink-3);line-height:1.85;margin:0 0 16px}

/* 错题筛选 */
.wf-bar{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;
  gap:8px;align-items:end;margin-bottom:10px;
}
.wf-field{display:flex;flex-direction:column;gap:5px;min-width:0}
.wf-field>span{font-size:10.5px;color:var(--ink-3);padding-left:3px;letter-spacing:.2px}
.wf-field select{
  -webkit-appearance:none;appearance:none;
  width:100%;padding:9px 28px 9px 11px;border-radius:11px;
  border:1px solid var(--line);background-color:#fff;color:var(--ink);
  font-size:12.5px;outline:none;cursor:pointer;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.6L6 7.4L9 4.6' fill='none' stroke='%2393A1B5' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 9px center;background-size:12px;
  text-overflow:ellipsis;white-space:nowrap;
}
.wf-field select:focus{border-color:#BFD4F6}
.wf-reset{
  height:36px;padding:0 13px;border-radius:11px;font-size:12px;color:var(--ink-3);
  background:#F5F8FD;border:1px solid var(--line);white-space:nowrap;
}
.wf-reset:active{background:#EAF0FA}
.wf-reset.hide{display:none}
.wf-count{font-size:11.5px;color:var(--ink-3);margin:0 2px 10px}
.wf-count b{color:var(--ink);font-weight:500}
.wf-empty{
  text-align:center;padding:34px 20px;background:#fff;border:1px solid var(--line);
  border-radius:var(--r-md);font-size:12.5px;color:var(--ink-3);line-height:1.9;
}
body.layout-tablet .wf-bar{max-width:520px}

/* 错题统计条 */
.stat-strip{
  display:flex;align-items:center;justify-content:space-around;
  background:#fff;border:1px solid var(--line);border-radius:14px;
  padding:12px 6px;margin-bottom:12px;
}
.stat-strip>div{text-align:center;flex:1}
.stat-strip b{display:block;font-size:17px;font-weight:600;color:var(--ink);line-height:1.2}
.stat-strip span{font-size:10.5px;color:var(--ink-3)}
.stat-strip>i{width:1px;height:24px;background:#F0F4FA;flex:none}

/* 选择题目的工具条 */
.wrong-head{display:flex;align-items:center;gap:10px;margin:0 2px 10px}
.pick-toggle{
  margin-left:auto;font-size:12px;color:var(--blue-d);padding:5px 12px;
  border-radius:9px;background:var(--blue-l);flex:none;
}
.pick-toggle:active{background:#DCE8FF}

.wq.pickable{cursor:pointer}
.wq.picked{border-color:#7FA9F5;box-shadow:0 0 0 2px rgba(62,123,246,.13)}
.wq-check{
  position:absolute;right:12px;top:12px;width:18px;height:18px;border-radius:50%;
  border:1.5px solid #CBD8EA;background:#fff;
}
.wq.picked .wq-check{
  background:var(--blue);border-color:var(--blue);
}
.wq.picked .wq-check::after{
  content:'';position:absolute;left:5.5px;top:2.5px;width:4px;height:8px;
  border:solid #fff;border-width:0 2px 2px 0;transform:rotate(42deg);
}
.wq{position:relative}
.wq.pickable .wq-head{padding-right:26px}

.pick-bar{
  position:sticky;bottom:0;margin-top:12px;padding:11px 14px;
  display:none;align-items:center;gap:10px;
  background:rgba(255,255,255,.94);border-top:1px solid var(--line);
  backdrop-filter:blur(8px);z-index:20;
}
.pick-bar.on{display:flex}
.pick-bar>span{font-size:12.5px;color:var(--ink-2);flex:1}
.pb-btn{
  padding:9px 20px;border-radius:11px;background:var(--blue);color:#fff;
  font-size:13px;font-weight:500;flex:none;
}
.pb-btn.ghost{background:#F2F6FD;color:var(--ink-2)}
.pb-btn.text{background:transparent;color:var(--blue-d);font-weight:400;padding:9px 4px}
.pb-btn.hide{display:none}

/* 打印预览 */
#p-print{padding-top:0}
.print-tools{
  display:flex;align-items:center;gap:14px;padding:14px 0 12px;
  position:sticky;top:0;background:#F7FAFE;z-index:5;
}
body.bare #p-print{padding:0 16px 24px}
.pt-back{font-size:13px;color:var(--ink-2);flex:none;padding:4px 0}
.pt-count{font-size:11.5px;color:var(--ink-3);flex:1;padding-left:2px}
.seg{display:flex;background:#E9EFF9;border-radius:9px;padding:2px;flex:none}
.seg button{padding:5px 10px;border-radius:7px;font-size:11.5px;color:#7A8AA3;line-height:1.2}
.seg button.on{background:#fff;color:var(--ink);font-weight:500;box-shadow:0 1px 3px rgba(20,40,80,.12)}
.pq-ans{
  margin-top:10px;padding:10px 12px;background:#F4F8FD;border-left:3px solid #7FA9F5;
  border-radius:0 8px 8px 0;font-size:11.5px;line-height:1.85;color:#33415A;
}
.pq-ans b{color:#1B4FA8;font-weight:600}
.paper-tag-ver{font-size:10.5px;color:#888;margin-left:8px;font-weight:400}
.pt-do{
  display:flex;align-items:center;gap:5px;padding:8px 16px;border-radius:11px;
  background:var(--blue);color:#fff;font-size:13px;font-weight:500;flex:none;
}
.pt-do .ico{width:15px;height:15px}

.paper{
  background:#fff;border:1px solid var(--line);border-radius:12px;
  padding:26px 24px;font-size:13px;color:#111;
  box-shadow:0 6px 20px rgba(30,50,90,.06);
}
body.layout-tablet .paper{max-width:740px;margin:0 auto}
.paper-head{border-bottom:1.5px solid #222;padding-bottom:10px;margin-bottom:18px}
.ph-title{font-size:16px;font-weight:600;margin-bottom:8px;letter-spacing:.5px}
.ph-sub{display:flex;gap:24px;flex-wrap:wrap;font-size:12px;color:#555;letter-spacing:.5px}
.pq{display:flex;gap:10px;margin-bottom:20px;page-break-inside:avoid}
.pq-no{font-weight:600;width:18px;flex:none;line-height:1.7}
.pq-main{flex:1;min-width:0}
.pq-tag{font-size:10.5px;color:#888;margin-bottom:5px}
.pq-text{line-height:1.9;margin-bottom:12px}
.pq-lines i{display:block;border-bottom:1px solid #D8D8D8;height:26px}
.paper-ans{margin-top:22px;padding-top:14px;border-top:1px dashed #bbb;page-break-inside:avoid}
.pa-title{font-size:12.5px;font-weight:600;margin-bottom:10px;color:#444}
.print-foot{
  position:sticky;bottom:0;margin-top:14px;padding:12px 0 14px;
  display:flex;gap:10px;background:linear-gradient(180deg,rgba(247,250,254,0),#F7FAFE 32%);
}
.pf-btn{
  flex:1;display:flex;align-items:center;justify-content:center;gap:6px;
  padding:13px 8px;border-radius:14px;background:var(--blue);color:#fff;
  font-size:13.5px;font-weight:500;
}
.pf-btn.ghost{background:#fff;color:var(--ink-2);border:1px solid var(--line);flex:0 0 96px}
.pf-btn .ico{width:16px;height:16px}
.pf-btn:disabled{opacity:.6}
body.bare #p-print{padding-bottom:8px}

.paper-foot{
  margin-top:18px;padding-top:12px;border-top:1px dashed #ccc;
  font-size:11px;color:#999;text-align:center;letter-spacing:.3px;
}
.pa-item{font-size:11.5px;color:#555;line-height:1.85;margin-bottom:6px}

@page{margin:14mm 12mm}
@media print{
  #topbar,.rail,.tabbar,#toolbar,.print-tools{display:none!important}
  #app{display:block!important;height:auto!important;box-shadow:none!important}
  #views{overflow:visible!important}
  #p-print{padding:0!important}
  .paper{border:0!important;box-shadow:none!important;border-radius:0!important;padding:0!important;max-width:none!important}
  body{background:#fff!important}
}

/* 同类题练习 */
.sim-prog{
  display:flex;align-items:center;gap:2px;margin-top:11px;padding-top:11px;
  border-top:1px solid #F0F4FA;font-size:11.5px;color:var(--ink-3);
}
.sim-prog b{color:var(--blue-d);font-weight:500;margin:0 2px}
.opts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0 10px}
body.layout-tablet .opts{grid-template-columns:repeat(4,minmax(0,1fr))}
.opts .opt{margin-bottom:0}
.opt.sel{border-color:var(--blue);background:var(--blue-l)}
.opt.sel b{background:var(--blue);color:#fff}
.opt.ok{border-color:#8FDCBF;background:#E9F9F3}
.opt.ok b{background:var(--ok);color:#fff}
.opt.bad{border-color:#F3B3A9;background:#FDEEEC}
.opt.bad b{background:var(--bad);color:#fff}
.opt.lock{cursor:default;pointer-events:none}
.q-submit{
  width:100%;padding:10px;border-radius:11px;background:#EDF2FA;color:#93A1B5;
  font-size:12.5px;transition:.18s;
}
.q-submit.ready{background:var(--blue);color:#fff;font-weight:500}
.q-verdict{font-size:12px;font-weight:500;margin-top:9px;display:none}
.q-verdict.good{display:block;color:#0E8A69}
.q-verdict.bad{display:block;color:#C74B36}

#p-similar{padding-bottom:86px}
body.layout-tablet #p-similar{padding-bottom:92px}
.sim-head{margin-bottom:12px}
.sim-kp{
  display:inline-flex;align-items:center;gap:6px;font-size:11px;color:#5B4BD6;
  background:var(--purple-l);padding:4px 11px;border-radius:20px;margin-bottom:11px;
}
.sim-origin{font-size:12.5px;color:var(--ink-2);line-height:1.8}
.sim-origin b{color:var(--ink);font-weight:500}
.sim-how{
  display:flex;gap:8px;align-items:flex-start;margin-top:12px;padding:10px 12px;
  background:#F7FAFF;border-radius:11px;font-size:11.5px;line-height:1.75;color:var(--ink-2);
}
.sim-how .ico{width:15px;height:15px;color:var(--blue);flex:none;margin-top:2px}
.sim-how b{color:var(--blue-d);font-weight:500}

.sim-group{margin-bottom:18px}
.sim-ghead{display:flex;align-items:center;gap:8px;margin-bottom:5px}
.sim-ghead b{font-size:14.5px;font-weight:500}
.sim-ghead .lv{font-size:10px;padding:2px 8px;border-radius:8px;background:var(--blue-l);color:var(--blue-d)}
.sim-ghead .lv.hard{background:var(--amber-l);color:#B4780E}
.sim-ghead span.cnt{font-size:11px;color:var(--ink-3);margin-left:auto}
.sim-tip{font-size:11.5px;color:var(--ink-3);margin:0 0 11px 0;line-height:1.6}

.q-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 15px;margin-bottom:10px}
/* 刚上完一节：首页顶部提示条 */
.home-sum{display:flex;align-items:center;gap:10px;background:#F2F8F5;border:1px solid #CFE9DC;
  border-radius:14px;padding:11px 13px;margin-bottom:12px}
.home-sum .hs-ic{width:26px;height:26px;flex:none;border-radius:50%;background:var(--ok);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700}
.home-sum .hs-tx{flex:1;min-width:0}
.home-sum .hs-tx b{display:block;font-size:13px;color:#12694F}
.home-sum .hs-tx span{display:block;font-size:11.5px;color:#4E7C6B;margin-top:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.home-sum .hs-go{flex:none;border:0;background:none;color:#0E8A69;font-size:12px;font-weight:600;
  padding:6px 4px;cursor:pointer}
.home-sum .hs-x{flex:none;border:0;background:none;color:#8FB2A4;font-size:12px;padding:6px 4px;cursor:pointer}
.home-sum .hs-btns{display:flex;align-items:center;gap:6px;flex:none}
.home-sum .hs-go.on{background:#0E8A69;color:#fff;border-radius:8px;padding:5px 9px;font-size:11.5px}
.q-top{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.q-body{display:flex;gap:9px}
.q-body .q-no{margin-top:4px}
.q-no{
  width:22px;height:22px;border-radius:50%;background:var(--blue-l);color:var(--blue-d);
  font-size:11px;display:grid;place-items:center;flex:none;
}
.q-tag{font-size:10px;color:var(--ink-3);background:#F5F8FD;padding:2px 8px;border-radius:8px}
.q-body{font-size:13.5px;line-height:1.9;margin-bottom:12px}
.q-ops{display:flex;gap:8px}
.q-ans{
  display:none;margin-top:12px;padding:11px 13px;background:#F6FAF8;border-radius:11px;
  font-size:12.5px;line-height:1.85;color:var(--ink-2);
}
.q-ans.open{display:block;animation:fade .18s ease}
.q-ans b{color:#0E8A69;font-weight:500;display:block;margin-bottom:4px}
.q-ans i{font-style:normal;color:var(--coral)}


.sim-how{display:none}
body.layout-tablet #p-similar .q-card{padding:12px 14px}
body.layout-tablet #p-similar .opt{padding:9px 11px;font-size:12.5px}
body.layout-tablet #p-similar .q-body{font-size:13px;margin-bottom:10px}
body.layout-tablet #p-similar .opts{margin:10px 0 8px}
body.layout-tablet .sim-group{margin-bottom:14px}

/* ===== 12. 工具条 ===== */
#toolbar{
  position:fixed;right:14px;bottom:14px;opacity:.7;transition:opacity .2s;z-index:99;
  display:flex;align-items:center;gap:4px;padding:5px;
  background:rgba(255,255,255,.94);border:1px solid #DFE7F3;border-radius:14px;
  box-shadow:0 8px 24px rgba(20,40,80,.14);backdrop-filter:blur(10px);
  font-size:12px;color:var(--ink-2);
}
#toolbar button{padding:7px 13px;border-radius:10px;font-size:12px;color:var(--ink-2)}
#toolbar button.on{background:var(--ink);color:#fff}
#tbHint{padding:0 10px 0 6px;font-size:11px;color:var(--ink-3);border-left:1px solid #E7EDF7}
.tb-zoom{width:26px;height:26px;border-radius:50%;font-size:15px;line-height:1;color:var(--ink-2)}
.tb-zoom:hover{background:#EEF3FA}
.tb-pct{font-size:11px;color:var(--ink-2);padding:0 8px;font-variant-numeric:tabular-nums}
.tb-pct:hover{color:var(--blue)}

/* 提示浮层 */
#toast{
  /* z-index 必须高于全屏向导 .pw(9200)，否则「确定发布」被拦下时的提示被向导白底盖住，
     点了就像完全没反应 */
  position:fixed;left:50%;top:26px;transform:translate(-50%,-14px);z-index:9300;
  background:rgba(27,42,69,.94);color:#fff;font-size:12.5px;padding:10px 18px;border-radius:12px;
  box-shadow:0 8px 24px rgba(16,20,32,.28);
  opacity:0;pointer-events:none;transition:.22s;
}
#toast.on{opacity:1;transform:translate(-50%,0)}
/* 全屏向导（撰写反馈 / 制定规划）里，提示落到顶栏右侧的空白处：
   底部按钮上方只有十几像素，会压住「整体表现」那行星级；顶部居中又会压副标题 */
#toast.in-pw{top:13px;left:auto;right:70px;transform:none}
#toast.in-pw.on{transform:none}
#loading{
  position:fixed;inset:0;background:rgba(247,250,254,.9);backdrop-filter:blur(6px);
  display:none;place-items:center;z-index:150;
}
#loading.on{display:grid}
.spinner{
  width:42px;height:42px;border-radius:50%;border:3px solid #DCE7F8;border-top-color:var(--blue);
  animation:spin .8s linear infinite;margin:0 auto 14px;
}
@keyframes spin{to{transform:rotate(360deg)}}
#loading p{font-size:13px;color:var(--ink-2);text-align:center;margin:0}

/* ===== 语法模块 ===== */
.gm-hero{
  border-radius:var(--r-lg);padding:16px;margin-bottom:14px;color:#fff;position:relative;overflow:hidden;
  background:linear-gradient(125deg,#4C6BF5 0%,#6D5BE8 58%,#8B5CF6 100%);
}
.gm-hero::after{
  content:'Aa';position:absolute;right:-8px;bottom:-26px;font-size:96px;font-weight:700;
  color:rgba(255,255,255,.10);line-height:1;letter-spacing:-.04em;
}
.gm-h-top{display:flex;align-items:center;justify-content:space-between;font-size:11.5px;opacity:.86;margin-bottom:10px}
.gm-h-tag{background:rgba(255,255,255,.18);padding:2px 9px;border-radius:20px;font-size:11px}
.gm-h-name{font-size:19px;font-weight:500;line-height:1.3;margin-bottom:3px}
.gm-h-sub{font-size:12px;opacity:.82;margin-bottom:14px}
.gm-h-bar{height:5px;border-radius:5px;background:rgba(255,255,255,.24);overflow:hidden;margin-bottom:8px}
.gm-h-bar i{display:block;height:100%;border-radius:5px;background:#fff}
.gm-h-foot{display:flex;align-items:center;justify-content:space-between;font-size:11.5px;opacity:.82}
.gm-h-btn{
  position:relative;z-index:2;background:#fff;color:#4C6BF5;font-size:13px;font-weight:500;
  padding:9px 18px;border-radius:11px;margin-top:14px;width:100%;
}

.gm-sec{font-size:12px;color:var(--ink-3);margin:18px 2px 9px;display:flex;align-items:center;gap:7px}
.gm-sec b{font-size:13px;color:var(--ink);font-weight:500}

.gm-map{display:flex;gap:8px;overflow-x:auto;padding:2px 0 6px;scrollbar-width:none}
.gm-map::-webkit-scrollbar{display:none}
.gm-node{
  flex:none;min-width:84px;background:#fff;border:1px solid var(--line);border-radius:12px;
  padding:10px 11px;position:relative;cursor:pointer;
}
.gm-node b{display:block;font-size:12.5px;font-weight:500;margin-bottom:2px}
.gm-node span{font-size:10.5px;color:var(--ink-3)}
.gm-node.on{border-color:#B9C9FF;background:linear-gradient(150deg,#EFF3FF,#F7F2FF)}
.gm-node.on b{color:var(--blue-d)}
.gm-node.lock{opacity:.5}
.gm-node em{
  position:absolute;top:-6px;right:-4px;background:var(--teal);color:#fff;font-size:9.5px;
  font-style:normal;padding:1px 6px;border-radius:20px;
}

.gm-fam{
  display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);
  border-radius:var(--r-md);padding:13px 14px;margin-bottom:10px;cursor:pointer;
}
.gm-fam.lock{opacity:.62}
.gm-f-ico{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;flex:none}
.gm-f-ico .ico{width:20px;height:20px}
.gm-f-tx{flex:1;min-width:0}
.gm-f-tx b{font-size:14px;font-weight:500;display:block;margin-bottom:2px}
.gm-f-tx span{font-size:11.5px;color:var(--ink-3);display:block;margin-bottom:6px}
.gm-f-bar{height:4px;border-radius:4px;background:#EDF2FA;overflow:hidden}
.gm-f-bar i{display:block;height:100%;border-radius:4px}
.gm-f-num{font-size:11px;color:var(--ink-3);flex:none;text-align:right;line-height:1.5}
.gm-f-num b{display:block;font-size:15px;color:var(--ink);font-weight:500}

.gm-diag-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:15px 16px;margin-bottom:14px}
.gm-dc-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.gm-dc-head b{font-size:14.5px;font-weight:500}
.gm-dc-head .tag{margin-left:auto;font-size:10.5px;color:var(--ink-3)}
.gm-chain{display:flex;align-items:center;gap:0;margin-bottom:12px}
.gm-chain .cs{flex:1;text-align:center}
.gm-chain .cs i{
  display:block;height:26px;line-height:26px;border-radius:8px;font-size:11px;font-style:normal;
  background:#F0F5FD;color:var(--ink-3);margin-bottom:5px;font-weight:500;
}
.gm-chain .cs.ok i{background:var(--teal-l);color:#0E9C78}
.gm-chain .cs.no i{background:var(--coral-l);color:#D9482F}
.gm-chain .cs b{font-size:11px;font-weight:500;color:var(--ink-3)}
.gm-chain .ar{color:#D3DEEE;font-size:12px;padding:0 2px;margin-bottom:18px}
.gm-dc-note{font-size:12.5px;color:var(--ink-2);line-height:1.65;background:#F7FAFF;border-radius:10px;padding:10px 12px}
.gm-dc-note b{color:var(--ink);font-weight:500}

/* 分步诊断（沉浸） */
#p-gdiag{
  position:absolute;inset:0;overflow-y:auto;
  background:linear-gradient(180deg,#EEF4FF 0%,#F7FAFF 46%,#FBFCFF 100%);
}
.gd-wrap{padding:16px 16px 30px;min-height:100%;display:flex;flex-direction:column}
body.layout-tablet .gd-wrap{padding:22px 30px 32px}
.gd-top{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.gd-back{width:34px;height:34px;border-radius:11px;background:#fff;border:1px solid var(--line);display:grid;place-items:center;flex:none}
.gd-back .ico{width:17px;height:17px;color:var(--ink-2)}
.gd-prog{flex:1}
.gd-prog .gp-t{display:flex;justify-content:space-between;font-size:11.5px;color:var(--ink-3);margin-bottom:6px}
.gd-prog .gp-b{height:5px;border-radius:5px;background:#E3EBF7;overflow:hidden}
.gd-prog .gp-b i{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,#4C6BF5,#8B5CF6)}
.gd-stem{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:15px 16px;margin-bottom:14px}
.gd-stem .gs-en{font-size:16px;line-height:1.75;margin-bottom:6px}
.gd-stem .gs-en u{text-decoration:none;border-bottom:1.5px solid var(--ink-3);padding:0 14px;margin:0 2px}
.gd-stem .gs-zh{font-size:12.5px;color:var(--ink-3)}
.gd-steps{display:flex;gap:5px;margin-bottom:12px}
.gd-steps i{flex:1;height:3px;border-radius:3px;background:#E3EBF7;font-style:normal}
.gd-steps i.on{background:#4C6BF5}
.gd-steps i.ok{background:var(--teal)}
.gd-steps i.no{background:var(--coral)}
.gd-q{font-size:14px;font-weight:500;margin:0 2px 10px;display:flex;gap:6px}
.gd-q em{
  font-style:normal;font-size:10.5px;background:#EFF3FF;color:var(--blue-d);border-radius:6px;
  padding:2px 7px;flex:none;height:19px;line-height:15px;margin-top:1px;
}
.gd-opt{
  display:block;width:100%;text-align:left;background:#fff;border:1px solid var(--line);
  border-radius:12px;padding:12px 14px;margin-bottom:9px;font-size:13.5px;line-height:1.5;
  transition:border-color .16s,background .16s;
}
.gd-opt:active{transform:scale(.995)}
.gd-opt.ok{border-color:#8EE0C6;background:#EBFAF5;color:#0E8C6C}
.gd-opt.no{border-color:#F8BEB2;background:#FEF0ED;color:#D9482F}
.gd-fb{font-size:12.5px;line-height:1.7;border-radius:10px;padding:0 12px;max-height:0;overflow:hidden;transition:.2s;color:var(--ink-2)}
.gd-fb.on{max-height:180px;padding:10px 12px;margin-bottom:10px;background:#fff;border:1px solid var(--line)}
.gd-fb b{font-weight:500}
.gd-fb .code{font-size:10.5px;background:#FDECEA;color:#D9482F;border-radius:5px;padding:1px 6px;margin-right:5px}
.gd-fb.good{background:#EBFAF5!important;border-color:#B7EBDC!important;color:#0E8C6B!important}
.gd-fb.good .code{background:#CFF3E8;color:#0E8C6B}

.gd-done{margin-top:6px}
.gd-ring{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:20px 18px;margin-bottom:14px;text-align:center}
.gd-ring .gr-ico{width:54px;height:54px;border-radius:50%;margin:0 auto 12px;display:grid;place-items:center}
.gd-ring .gr-ico .ico{width:26px;height:26px}
.gd-ring h3{font-size:16px;font-weight:500;margin:0 0 6px}
.gd-ring p{font-size:12.5px;color:var(--ink-2);line-height:1.7;margin:0}
.gd-block{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:14px 15px;margin-bottom:12px}
.gd-block h4{font-size:13px;font-weight:500;margin:0 0 9px;display:flex;align-items:center;gap:6px}
.gd-block h4 .dot{width:6px;height:6px;border-radius:50%;background:var(--blue)}
.gd-kv{display:flex;justify-content:space-between;font-size:12.5px;padding:7px 0;border-bottom:1px dashed #EDF2FA}
.gd-kv:last-child{border-bottom:0;padding-bottom:0}
.gd-kv span{color:var(--ink-3)}
.gd-kv b{font-weight:500}
.gd-btn{width:100%;padding:13px;border-radius:13px;font-size:14px;font-weight:500;background:linear-gradient(120deg,#4C6BF5,#7C5BF0);color:#fff}
.gd-btn.ghost{background:#fff;color:var(--ink-2);border:1px solid var(--line);margin-top:9px}
/* ===================== 学生端：纸质作业交批改 ===================== */
.ps-entry{display:flex;align-items:center;gap:10px;background:#fff;border-radius:16px;padding:13px 14px;
  box-shadow:0 6px 18px rgba(22,26,40,.05);margin-bottom:12px}
.ps-entry-l{flex:1;min-width:0}
.ps-entry-l b{display:block;font-size:13.5px;font-weight:800;color:#14161F}
.ps-entry-l span{display:block;font-size:11.5px;color:#8A94A6;margin-top:2px;line-height:1.5}
.ps-entry button{flex:none;height:32px;padding:0 13px;border-radius:9px;background:#5B7CFA;color:#fff;
  font-size:12.5px;font-weight:700;border:0}
.ps-mask{position:absolute;inset:0;background:rgba(16,20,32,.42);z-index:60;display:flex;align-items:flex-end}
.ps-mask.hide{display:none}
.ps-sheet{width:100%;background:#fff;border-radius:22px 22px 0 0;padding:16px 16px 16px;max-height:92%;overflow:auto}
.ps-h{display:flex;align-items:center;margin-bottom:14px}
.ps-h b{font-size:16px;font-weight:800}
.ps-h span{margin-left:auto;color:#9AA4B6;font-size:18px;cursor:pointer;line-height:1}
.ps-lab{font-size:12px;color:#8A94A6;font-weight:700;margin:11px 0 6px}
.ps-chips{display:flex;flex-wrap:wrap;gap:7px}
.ps-chip{padding:7px 12px;border-radius:9px;border:1.5px solid #E7EAF0;font-size:12.5px;color:#5A6B85;
  background:#fff;cursor:pointer}
.ps-chip.on{border-color:#5B7CFA;background:#F5F8FF;color:#3E52C4;font-weight:700}
.ps-shots{display:flex;gap:9px;flex-wrap:wrap}
.ps-shot{width:76px;height:86px;border-radius:10px;border:1.5px dashed #D5DBE6;background:#FAFBFE;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  font-size:11px;color:#93A0B4;cursor:pointer;padding:0;font-family:inherit}
.ps-shot.done{border:1.5px solid #5B7CFA;background:#fff;color:#3E52C4;justify-content:flex-start;
  padding:9px 4px 0;font-size:10.5px;font-weight:700;
  background-image:repeating-linear-gradient(#fff,#fff 10px,#EEF1F7 10px,#EEF1F7 11px)}
.ps-shot.done i{font-style:normal;font-size:9px;color:#8A94A6;font-weight:600;margin-top:2px}
.ps-tip{font-size:11.5px;color:#9AA4B6;line-height:1.65;margin-top:8px}
.ps-submit{width:100%;height:44px;border-radius:14px;background:#5B7CFA;color:#fff;font-size:15px;
  font-weight:800;margin-top:13px;border:0;font-family:inherit}
.ps-submit:disabled{background:#C9D4F5}
