:root{
  --red:#C8102E; --red-d:#A50D26; --blue:#185FA5; --blue-l:#E8F1FA;
  --gold:#B8860B; --ink:#1F2328; --ink2:#5A6472; --ink3:#8A93A0;
  --line:#E4E7EC; --line2:#EFF1F4; --bg:#F4F6F9; --card:#FFFFFF;
  --ok:#1F7A4D; --ok-bg:#EAF6F0; --warn:#B7791F; --warn-bg:#FFF8E6;
  --r:14px; --sh:0 1px 2px rgba(16,24,40,.05),0 1px 3px rgba(16,24,40,.06);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:var(--bg);color:var(--ink);
  font:15px/1.62 -apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  padding-bottom:96px;
}
a{color:var(--blue);text-decoration:none}
.hide{display:none!important}

/* ---------- 顶栏 ---------- */
.topbar{
  position:sticky;top:0;z-index:60;background:#fff;border-bottom:1px solid var(--line);
  display:flex;align-items:center;gap:14px;padding:10px 16px;flex-wrap:wrap;
}
.brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:16px;letter-spacing:.2px}
.brand .logo{
  background:linear-gradient(135deg,var(--red),#E23B52);color:#fff;border-radius:8px;
  padding:3px 8px;font-size:13px;font-weight:800;letter-spacing:1px;
}
.brand .sub{color:var(--ink3);font-weight:400;font-size:13px}
.topnav{margin-left:auto;display:flex;gap:4px}
.topnav a{
  color:var(--ink2);padding:6px 13px;border-radius:999px;font-size:14px;font-weight:500;
}
.topnav a.on{background:var(--blue-l);color:var(--blue);font-weight:600}
.topnav a:hover{background:var(--line2)}

/* ---------- 布局 ---------- */
.wrap{max-width:900px;margin:0 auto;padding:16px 14px 0}
.card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--sh);padding:16px 16px 18px;margin-bottom:14px;
}
.card>h2{
  font-size:15px;margin:0 0 12px;display:flex;align-items:center;gap:9px;font-weight:650;
}
.card>h2 i{
  font-style:normal;background:var(--blue);color:#fff;width:20px;height:20px;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex:none;
}
.card>h2 .hint{margin-left:auto;font-weight:400;font-size:12.5px;color:var(--ink3)}
.sec-note{color:var(--ink3);font-size:12.5px;margin:-4px 0 12px}

/* ---------- 分段控件 ---------- */
.seg{display:flex;gap:6px;flex-wrap:wrap}
.seg button{
  border:1px solid var(--line);background:#fff;color:var(--ink2);border-radius:10px;
  padding:8px 15px;font-size:14.5px;cursor:pointer;font-family:inherit;font-weight:500;
  transition:.13s;
}
.seg button:hover{border-color:#C7CDD6;background:#FAFBFC}
.seg button.on{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}
.seg button .n{font-size:11px;opacity:.72;margin-left:5px;font-weight:400}

/* ---------- 时段卡 ---------- */
.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:8px;margin-top:12px}
.slot{
  border:1px solid var(--line);border-radius:11px;padding:10px 12px;cursor:pointer;background:#fff;
  transition:.13s;position:relative;
}
.slot:hover{border-color:#B9C4D2;box-shadow:var(--sh)}
.slot.on{border-color:var(--blue);background:var(--blue-l);box-shadow:0 0 0 1px var(--blue) inset}
.slot .t{font-weight:600;font-size:14px}
.slot .d{color:var(--ink3);font-size:12px;margin-top:2px}
.slot .live{color:var(--ok);font-size:11px;font-weight:600}
/* 入校是两级的：上一排是学校，下一排是这所学校下的班级（乐天 2026-09-17） */
.slots.schools{grid-template-columns:repeat(auto-fill,minmax(132px,1fr));margin-top:12px}
.slots.schools + .slots{margin-top:8px}
.slot.sch{background:#F6F9FC}
.slot.sch .t{font-size:15px}
.slot.sch.on{background:var(--blue-l)}

/* ---------- 名单 chips ---------- */
.chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.chip{
  border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 14px;cursor:pointer;
  font-size:14px;display:inline-flex;align-items:center;gap:6px;transition:.12s;font-family:inherit;
  color:var(--ink);
}
.chip:hover{border-color:#B9C4D2}
.chip.on{background:var(--red);border-color:var(--red);color:#fff;font-weight:600}
.chip .lv{
  font-size:11px;border-radius:5px;padding:1px 6px;background:var(--warn-bg);color:var(--warn);
  font-weight:700;
}
.chip.on .lv{background:rgba(255,255,255,.26);color:#fff}
.chip .dot{width:6px;height:6px;border-radius:50%;background:var(--ok);flex:none}
.chip .sfx{font-size:11px;opacity:.7}
/* 名单三类标签：约课 / 试课（固定是默认多数，不打标） */
.chip .sfx.on-rsv{opacity:1;color:var(--red);font-weight:700;background:#FEF2F3;border-radius:5px;padding:1px 6px}
.chip .sfx.on-tri{opacity:1;color:#B7791F;font-weight:700;background:#FFF4E0;border-radius:5px;padding:1px 6px}
.chip.on .sfx.on-rsv,.chip.on .sfx.on-tri{color:#fff;background:rgba(255,255,255,.24)}
/* 班课实时名单：这一节课已经点评过的人打 √，还差谁一眼看得出来 */
.chip.done{border-color:#B9E0CC;background:var(--ok-bg)}
.chip .sfx.on-done{opacity:1;color:var(--ok);font-weight:700;background:#fff;border:1px solid #B9E0CC;border-radius:5px;padding:1px 6px}
.chip.on .sfx.on-done{background:#fff}
.chip.done.on{background:var(--red);border-color:var(--red)}
/* 带课时的那行：姓名一行、课时一行（班课点学员时要同时看到已上/剩余） */
.chip.has-hh{border-radius:13px;flex-wrap:wrap;max-width:230px}
/* 班课名单排成整齐两列，比宽度不一的胶囊好认 */
.chips.roster-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
.chips.roster-chips .chip.has-hh{max-width:100%;width:100%;justify-content:flex-start}
.chip.has-hh .hh{flex:1 0 100%;font-size:11px;opacity:.62;margin-top:3px;font-weight:400;text-align:left}
.chip.has-hh.on .hh{opacity:.86}
.chip.has-hh .lv{flex:none}
/* 入校名单：年级班号跟在姓名旁边（「三年7班」）——点评页多在手机上用，
   靠悬停出提示等于没有，必须直显（乐天 2026-09-17） */
.chip .gc{font-size:11px;color:var(--ink3);font-weight:400;flex:none;letter-spacing:.02em}
.chip.on .gc{color:rgba(255,255,255,.8)}

/* 档案页的日期 / 班次筛选 */
.filters{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:13px}
.filters label{font-size:12.5px;color:var(--ink3)}

.meta-line{
  margin-top:12px;padding:9px 12px;background:#F8FAFC;border:1px solid var(--line2);
  border-radius:10px;font-size:13px;color:var(--ink2);display:flex;gap:10px;flex-wrap:wrap;
  align-items:center;
}
.meta-line b{color:var(--ink);font-weight:650}
.meta-line .sp{margin-left:auto}
.btn{
  border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 14px;cursor:pointer;
  font-size:13.5px;font-family:inherit;color:var(--ink2);font-weight:500;transition:.13s;
}
.btn:hover{border-color:#B9C4D2;background:#FAFBFC}
.btn.pri{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}
.btn.pri:hover{background:#14538F}
.btn.red{background:var(--red);border-color:var(--red);color:#fff;font-weight:600}
.btn.red:hover{background:var(--red-d)}
.btn.ghost{background:transparent;border-color:transparent;color:var(--blue)}
.btn.sm{padding:5px 11px;font-size:12.5px}
.btn:disabled{opacity:.5;cursor:not-allowed}

/* ---------- 搜索 ---------- */
.searchbox{position:relative}
.searchbox input{
  width:100%;border:1px solid var(--line);border-radius:11px;padding:11px 14px 11px 40px;
  font-size:15px;font-family:inherit;outline:none;background:#fff;color:var(--ink);
}
.searchbox input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(24,95,165,.11)}
.searchbox::before{
  content:"";position:absolute;left:14px;top:50%;width:15px;height:15px;margin-top:-9px;
  background:no-repeat center/contain
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A93A0' stroke-width='2.4' stroke-linecap='round'><circle cx='11' cy='11' r='7'/><path d='M20 20l-3.5-3.5'/></svg>");
}
.results{margin-top:9px;max-height:290px;overflow:auto;border-radius:11px}
.results:empty{display:none}
.res{
  display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--line2);
  border-radius:10px;margin-bottom:6px;cursor:pointer;background:#fff;transition:.12s;
}
.res:hover{border-color:var(--blue);background:var(--blue-l)}
.res .rmain{flex:1;min-width:0}
.res .nm{font-weight:600;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.res .py{color:var(--ink3);font-size:12px;margin-top:2px}
.res .py.course{color:#5A6472}
.res .rt{margin-left:auto;display:flex;gap:8px;align-items:center}
/* 全量名册提示（px 每晚抓的名单） */
.dirline{margin-top:8px;color:var(--ink3);font-size:12.5px}
.dirline b{color:var(--ink2)}
.dirline .warn{color:var(--warn)}
.pill{border-radius:6px;padding:2px 8px;font-size:11.5px;font-weight:650}
.pill.lv{background:var(--blue-l);color:var(--blue)}
/* 掌握度：全场统一的「这项练到什么程度」徽章（2026-09-17） */
.pill.mv{background:var(--blue-l);color:var(--blue);font-weight:650}
.pill.gray{background:var(--line2);color:var(--ink3);font-weight:500}
.avatar{
  width:30px;height:30px;border-radius:50%;background:var(--line2);flex:none;object-fit:cover;
  display:flex;align-items:center;justify-content:center;font-size:12.5px;color:var(--ink3);font-weight:600;
}
.avatar.lg{width:56px;height:56px;font-size:18px}

/* ---------- 已选学员 ---------- */
.picked{display:none;margin-top:12px;border:1px solid #D6E3F0;background:#F7FAFE;border-radius:12px;padding:12px 14px}
.picked.on{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.picked .info{flex:1;min-width:150px}
.picked .info b{font-size:16px}
.picked .sub{color:var(--ink2);font-size:12.5px;margin-top:2px}

/* ---------- 题库 ---------- */
.grp{border:1px solid var(--line);border-radius:12px;margin-bottom:12px;overflow:hidden;background:#fff}
.grp>summary{
  list-style:none;cursor:pointer;padding:11px 14px;background:#FAFBFD;display:flex;
  align-items:center;gap:9px;font-weight:600;font-size:14.5px;border-bottom:1px solid transparent;
}
.grp[open]>summary{border-bottom-color:var(--line2)}
.grp>summary::-webkit-details-marker{display:none}
.grp>summary::after{content:"▾";margin-left:auto;color:var(--ink3);font-size:12px;transition:.18s}
.grp[open]>summary::after{transform:rotate(180deg)}
.grp .gsum{
  margin-left:auto;font-size:12.5px;font-weight:650;color:var(--blue);background:var(--blue-l);
  border-radius:7px;padding:2px 9px;
}
.grp>summary::after{margin-left:8px}
.gsub{color:var(--ink3);font-size:12.5px;padding:8px 14px 0}
.it{padding:11px 14px;border-top:1px solid var(--line2)}
.it:first-of-type{border-top:none}
.it .ih{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}
.it .in{font-weight:600;font-size:14px}
.it .imax{margin-left:auto;color:var(--ink3);font-size:11.5px;white-space:nowrap}
.opts{display:flex;flex-direction:column;gap:5px}
.opt{
  display:flex;gap:9px;align-items:flex-start;border:1px solid var(--line);border-radius:9px;
  padding:8px 11px;cursor:pointer;transition:.12s;background:#fff;font-size:14px;line-height:1.5;
}
.opt:hover{border-color:#B9C4D2;background:#FAFBFC}
.opt input{margin:3px 0 0;accent-color:var(--red);flex:none;width:16px;height:16px}
.opt .sc{
  flex:none;min-width:22px;height:22px;border-radius:6px;background:var(--line2);color:var(--ink2);
  font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px;
}
.opt.sel{border-color:var(--red);background:#FEF5F6}
.opt.sel .sc{background:var(--red);color:#fff}

/* 未评的项：左侧橙条 + 「待评」小标，一眼看到还差哪几项 */
.it.todo{border-left:3px solid #E8A33D;padding-left:11px}
.it.todo .in::after{
  content:"待评";margin-left:7px;font-size:11px;font-weight:600;color:#B7791F;
  background:#FFF4E0;border-radius:5px;padding:1px 6px;vertical-align:1px;
}
.it.flash{animation:itflash 1.1s ease 2}
@keyframes itflash{0%,100%{background:transparent}45%{background:#FFF3E4}}
.btn.dim{background:#FFF6E8;border-color:#F0D3A8;color:#B7791F}
.btn.dim:hover{background:#FFF1DC;border-color:#E8C48F}


/* ---------- 吸底分数条 ---------- */
.scorebar{
  position:sticky;bottom:0;z-index:55;background:#fff;border-top:1px solid var(--line);
  margin:0 -14px;padding:11px 16px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  box-shadow:0 -2px 12px rgba(16,24,40,.06);
}
.scorebar .big{font-size:21px;font-weight:800;color:var(--red);letter-spacing:-.4px}
.scorebar .big small{font-size:12.5px;color:var(--ink3);font-weight:500;margin-left:3px}
.scorebar .g{
  border-radius:8px;padding:3px 11px;font-size:12.5px;font-weight:700;background:var(--warn-bg);
  color:var(--warn);white-space:nowrap;
}
.scorebar .g.hi{background:var(--ok-bg);color:var(--ok)}
.scorebar .prog{flex:1;min-width:110px;height:7px;background:var(--line2);border-radius:99px;overflow:hidden}
.scorebar .prog i{display:block;height:100%;background:linear-gradient(90deg,var(--red),#E8556B);width:0;transition:.25s}
.scorebar .sub{color:var(--ink3);font-size:12px;width:100%;margin-top:-4px}

/* ---------- 表单 ---------- */
label.fl{display:block;font-size:13px;font-weight:600;color:var(--ink2);margin:0 0 6px}
textarea{
  width:100%;border:1px solid var(--line);border-radius:11px;padding:11px 13px;font:inherit;
  font-size:14.5px;resize:vertical;min-height:96px;outline:none;color:var(--ink);
}
textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(24,95,165,.11)}
.grid6{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:11px}
.score5{display:flex;gap:5px;margin-top:5px}
.score5 button{
  flex:1;border:1px solid var(--line);background:#fff;border-radius:8px;padding:7px 0;cursor:pointer;
  font-size:13.5px;font-family:inherit;color:var(--ink2);font-weight:600;transition:.12s;
}
.score5 button:hover{border-color:#B9C4D2}
.score5 button.on{background:var(--blue);border-color:var(--blue);color:#fff}

/* ---------- 照片 ---------- */
.photobox{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.thumb{width:78px;height:78px;border-radius:11px;object-fit:cover;border:1px solid var(--line)}
.uploader{
  width:78px;height:78px;border:1.5px dashed #C7CDD6;border-radius:11px;display:flex;
  flex-direction:column;align-items:center;justify-content:center;color:var(--ink3);cursor:pointer;
  font-size:11.5px;gap:3px;background:#FCFDFE;
}
.uploader:hover{border-color:var(--blue);color:var(--blue);background:var(--blue-l)}

/* ---------- 训练视频 ---------- */
.vidbox{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:12px}
.viditem{
  display:flex;align-items:center;gap:8px;padding:8px 11px;border:1px solid var(--line2);
  border-radius:11px;background:#F8FAFC;font-size:12.5px;color:var(--ink2);max-width:100%;
}
.viditem .vt{font-weight:600;color:var(--ink)}
.viditem .vs{color:var(--ink3);font-size:12px}
/* 传满 2 条时的提示，占掉「选视频」那个位置，让人一眼知道为什么点不了了 */
.vfull{
  padding:8px 12px;border:1px dashed var(--line2);border-radius:11px;background:#FBFCFE;
  color:var(--ink3);font-size:12.5px;
}
.vidstrip{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.vidstrip video{width:200px;max-width:100%;border-radius:10px;border:1px solid var(--line);background:#000}

/* ---------- 折叠卡 ---------- */
details.collapse>summary{
  cursor:pointer;list-style:none;display:flex;align-items:center;gap:9px;font-size:15px;font-weight:650;
}
details.collapse>summary::-webkit-details-marker{display:none}
details.collapse>summary::before{content:"▸";color:var(--ink3);transition:.18s;font-size:12px}
details.collapse[open]>summary::before{transform:rotate(90deg)}
details.collapse>summary .hint{margin-left:auto;font-weight:400;font-size:12.5px;color:var(--ink3)}
details.collapse[open]>summary{margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid var(--line2)}

/* ---------- 档案页 ---------- */
.timeline{position:relative;padding-left:20px}
.timeline::before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:2px;background:var(--line)}
.tl{position:relative;margin-bottom:12px}
.tl::before{
  content:"";position:absolute;left:-19px;top:16px;width:10px;height:10px;border-radius:50%;
  background:#fff;border:2.5px solid var(--blue);
}
.tl .hd{display:flex;align-items:center;gap:10px;flex-wrap:wrap;cursor:pointer}
.tl .when{font-weight:650;font-size:14.5px}
.tl .body{margin-top:10px;border-top:1px dashed var(--line);padding-top:11px}
table.mini{width:100%;border-collapse:collapse;font-size:13.5px}
table.mini th,table.mini td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line2)}
table.mini th{color:var(--ink3);font-weight:600;font-size:12.5px}
table.mini td.sc{white-space:nowrap;font-weight:650;color:var(--blue)}
table.mini tr.grprow td{background:#FAFBFD;font-weight:650;color:var(--ink)}
/* 课堂基础评价单独一张小表（原来拼成一行字，6 项挤一起看不出哪项弱，2026-09-18）；
   ≤3 分标红 —— 一眼看到该重点补哪一项 */
table.mini.basictab{margin-top:12px}
table.mini.basictab th.bc{width:24%}
table.mini td.sc.low{color:var(--red)}
.summarybox{
  background:#F7FAFE;border:1px solid #D6E3F0;border-radius:11px;padding:11px 13px;font-size:14px;
  line-height:1.7;margin-top:11px;
}
.summarybox .lbl{font-size:11.5px;font-weight:700;color:var(--blue);letter-spacing:.4px;margin-bottom:5px}
.photostrip{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.photostrip img{width:96px;height:96px;object-fit:cover;border-radius:10px;border:1px solid var(--line)}
.basicline{color:var(--ink2);font-size:13px;margin-top:9px}
.basicline b{color:var(--ink)}

/* ---------- 空态/提示 ---------- */
.empty{color:var(--ink3);font-size:13.5px;text-align:center;padding:22px 10px}
.toast{
  position:fixed;left:50%;bottom:34px;transform:translate(-50%,20px);background:#1F2328;color:#fff;
  padding:11px 20px;border-radius:11px;font-size:14px;opacity:0;pointer-events:none;transition:.22s;z-index:200;
  box-shadow:0 8px 26px rgba(0,0,0,.24);max-width:88vw;text-align:center;
}
.toast.on{opacity:1;transform:translate(-50%,0)}
.banner{
  border-radius:11px;padding:11px 14px;font-size:13.5px;margin-bottom:12px;
  background:var(--warn-bg);border:1px solid #F0D59A;color:#7A5A12;
}
.banner.err{background:#FEF2F2;border-color:#F5C6C6;color:#9B2C2C}
.banner.ok{background:var(--ok-bg);border-color:#B9E0CC;color:#1A6A44}
.spin{
  display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.4);
  border-top-color:#fff;border-radius:50%;animation:sp .7s linear infinite;vertical-align:-2px;margin-right:6px;
}
.spin.dark{border-color:rgba(24,95,165,.28);border-top-color:var(--blue)}
@keyframes sp{to{transform:rotate(360deg)}}

/* ---------- 登录 ---------- */
.login-wrap{max-width:340px;margin:14vh auto 0;padding:0 18px}
.login-wrap h1{font-size:19px;text-align:center;margin:0 0 4px}
.login-wrap p{text-align:center;color:var(--ink3);font-size:13px;margin:0 0 20px}
.login-wrap input{
  width:100%;border:1px solid var(--line);border-radius:11px;padding:12px 14px;font-size:15px;
  outline:none;font-family:inherit;text-align:center;letter-spacing:3px;
}
.login-wrap input:focus{border-color:var(--blue)}
.login-wrap .btn{width:100%;margin-top:12px;padding:12px;font-size:15px}

/* ══════════ 后台题库编辑器（2026-09-16） ══════════ */
.grow{flex:1;min-width:160px}
.btn.sm.danger{background:#fff;border-color:#F0C8CE;color:var(--red)}
.btn.sm.danger:hover{background:#FEF2F3;border-color:#E4A7B0}
.pill.warn{background:var(--warn-bg);color:var(--warn);font-weight:600}
.srt{
  width:26px;height:26px;flex:none;border:1px solid var(--line);background:#fff;
  border-radius:7px;cursor:pointer;color:var(--ink2);font-size:12px;line-height:1;
  font-family:inherit;padding:0;
}
.srt:hover:not(:disabled){border-color:#B9C4D2;background:#FAFBFC;color:var(--blue)}
.srt:disabled{opacity:.32;cursor:default}
.cbox,.grp>.cbody{overflow:hidden}
.grp>.cbody{padding:11px 14px 13px}
.cbox{border:1px solid var(--line);border-radius:11px;margin-bottom:9px;background:#fff}
.cbox>summary{
  display:flex;align-items:center;gap:9px;padding:10px 13px;cursor:pointer;
  font-size:14px;list-style:none;background:#FAFBFD;
}
.cbox>summary::-webkit-details-marker{display:none}
.cbox>summary::after{content:"▾";color:var(--ink3);font-size:12px;margin-left:2px}
.cbox[open]>summary::after{transform:rotate(180deg)}
.cbox[open]>summary{border-bottom:1px solid var(--line2)}
.cbox>.cbody{padding:11px 13px 13px}
.ord{
  flex:none;min-width:22px;height:22px;border-radius:6px;background:var(--line2);
  color:var(--ink2);font-size:12px;font-weight:700;display:flex;align-items:center;
  justify-content:center;padding:0 5px;
}
.cnm{font-size:13.5px}
.crow{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.lvpick{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:11px;font-size:12.5px;color:var(--ink3)}
.chipbtn{
  border:1px solid var(--line);background:#fff;border-radius:99px;padding:3px 12px;
  font:inherit;font-size:12.5px;color:var(--ink2);cursor:pointer;
}
.chipbtn:hover{border-color:#B9C4D2}
.chipbtn.on{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}
.hintx{color:var(--ink3);font-size:12.5px}
.irow{border:1px solid var(--line2);border-radius:10px;padding:10px 12px;margin-bottom:9px;background:#FCFDFE}
.irow.ro{background:#fff}
.ihd{display:flex;gap:8px;align-items:center;margin-bottom:8px;flex-wrap:wrap}
.ihd .ino{
  flex:none;min-width:20px;height:20px;border-radius:6px;background:var(--line2);
  color:var(--ink3);font-size:11.5px;font-weight:700;display:flex;align-items:center;
  justify-content:center;padding:0 4px;
}
.ihd .inm{font-size:13.5px}
.ihd .imax{color:var(--ink3);font-size:12px;flex:none}
.ihd .sp{flex:1}
.optline{display:flex;gap:8px;align-items:flex-start;font-size:13px;color:var(--ink2);padding:4px 0}
.optline .sc{
  flex:none;min-width:22px;text-align:center;border-radius:6px;background:var(--line2);
  color:var(--ink2);font-size:11.5px;font-weight:700;padding:1px 0;
}
.grpfoot{
  display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:12px;
  padding-top:11px;border-top:1px dashed var(--line);
}
.grpfoot .btn{margin-left:auto;flex:none}
.caddrow{margin-top:2px}

/* ══════════ 手机（点评页主要在手机上用：教务 / 教练单手操作）══════════
   三条口径：① 触摸目标抬到 44px 上下；② 输入框一律 16px；
   ③ 吸底条躲开 iPhone 底部横条。实测见 .workbuddy/memory/学员评级系统·手机端.md */
@media(max-width:560px){
  .brand .sub{display:none}
  .card{padding:14px 13px 16px}
  .scorebar{margin:0 -13px}

  /* ① 触摸目标：顶栏导航、班级/等级、教练与学员、按钮，一律够大点得准 */
  .topbar{padding:8px 12px;gap:8px}
  .topnav{gap:3px}
  .topnav a{
    display:inline-flex;align-items:center;justify-content:center;
    min-height:44px;padding:4px 11px;font-size:13px;
  }
  .seg button{min-height:44px;padding:10px 15px}
  .chip{min-height:44px;padding:6px 14px}
  .chip.has-hh{min-height:52px}
  .btn{min-height:44px;padding:9px 15px}
  .btn.sm{min-height:36px;padding:7px 12px}
  .score5 button{min-height:44px;padding:10px 0}
  .slot{padding:12px}

  /* ② 输入框 ≥16px：iOS Safari 上小于 16px 一聚焦就自动放大整页，得手动缩回来 */
  .searchbox input,textarea,.login-wrap input{font-size:16px}

  /* 标题 + 右侧小字在窄屏换行排，别互相挤成两截（折叠卡的标题在 summary 里，一并管） */
  .card>h2,details.collapse>summary{flex-wrap:wrap}
  .card>h2 .hint,details.collapse>summary .hint{font-size:12px}

  /* ③ 吸底分数条：给 iPhone 底部横条让位，别把内容压在下面 */
  .scorebar{bottom:env(safe-area-inset-bottom)}
  body{padding-bottom:calc(28px + env(safe-area-inset-bottom))}

  /* 辅助小字 11px → 12px，手机上「还剩几课时 / 约课 / 实时 / 满分 / 拍照」这些得看得清 */
  .seg button .n,.chip .lv,.chip .sfx,.chip.has-hh .hh,.slot .live,.it .imax,.uploader{font-size:12px}
}


/* ---------- 「写入小麦」弹层（教务 / 管理员 · 2026-09-18） ----------
   小麦的成长档案写进去删不掉，所以这一步必须停下来让人看一眼：
   内容可改、类型带「家长看不看得到」的说明、还要点两次才真写。 */
.xmscrim{
  position:fixed;inset:0;z-index:200;background:rgba(16,24,40,.46);
  display:flex;align-items:center;justify-content:center;padding:16px;
}
.xmsheet{
  background:#fff;border-radius:16px;width:100%;max-width:640px;max-height:88vh;
  display:flex;flex-direction:column;box-shadow:0 14px 44px rgba(16,24,40,.24);overflow:hidden;
}
.xmsheet .xmhd{
  display:flex;align-items:center;gap:9px;padding:14px 16px 11px;
  border-bottom:1px solid var(--line2);flex:none;
}
.xmsheet .xmhd b{font-size:15.5px}
.xmsheet .xmhd .who{color:var(--ink3);font-size:13px}
.xmsheet .xmhd .xbtn{
  margin-left:auto;border:0;background:transparent;color:var(--ink3);cursor:pointer;
  font-size:22px;line-height:1;padding:2px 8px;border-radius:8px;font-family:inherit;
}
.xmsheet .xmhd .xbtn:hover{background:var(--line2);color:var(--ink)}
.xmsheet .xmbd{padding:14px 16px 4px;overflow:auto}
.xmsheet .xmft{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding:12px 16px 14px;border-top:1px solid var(--line2);background:#FCFDFE;
}
.xmsheet .xmft .xmstep{color:var(--red);font-size:12.5px;font-weight:600}
.xmsheet .xlab{
  display:block;font-size:12.5px;color:var(--ink3);font-weight:600;margin:0 0 6px;
}
.xmsheet select{
  width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;
  background:#fff;color:var(--ink);font-family:inherit;font-size:16px;min-height:44px;
}
.xmsheet textarea{
  width:100%;min-height:190px;padding:11px 12px;border:1px solid var(--line);
  border-radius:10px;background:#fff;color:var(--ink);font-family:inherit;
  font-size:16px;line-height:1.62;resize:vertical;
}
.xmsheet select:focus,.xmsheet textarea:focus{outline:none;border-color:var(--blue)}
.xmsheet .xmtypehint{font-size:12.5px;color:var(--ink2);margin-top:6px}
.xmsheet .xmtip{color:var(--ink3);font-size:12.5px}
.xmsheet .xmwarn{
  background:var(--warn-bg);border:1px solid #F0D3A8;color:#8A5A12;
  border-radius:10px;padding:10px 12px;font-size:13px;line-height:1.6;
}
.xmsheet .xmwarn b{color:#7A4E0C}
.xmsheet .xmhist{margin-top:14px;border-top:1px dashed var(--line);padding-top:10px}
.xmsheet .xmhist summary{font-size:12.5px;color:var(--ink3);cursor:pointer}
.xmsheet .xmhist .xmrow{
  font-size:12.5px;color:var(--ink2);background:#FAFBFC;border:1px solid var(--line2);
  border-radius:8px;padding:8px 10px;margin-top:8px;white-space:pre-wrap;word-break:break-word;
}
.xmsheet .empty{padding:18px 0;color:var(--ink3);font-size:13.5px;text-align:center}

/* 点评记录里那行「写入小麦」 */
.xmline{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:10px}
.xmline .xmtip{color:var(--ink3);font-size:12.5px}
.xmline.done{background:var(--ok-bg);border:1px solid #CDE7DA;border-radius:10px;padding:8px 11px}
.xmline .xmok{color:var(--ok);font-weight:650;font-size:12.5px}
.xmline.done .xmtip{color:#2F6B4F}

/* 弹层里的按钮一律 ≥44px：手机上这几个是「点错就删不掉」的动作，
   手指按不准代价太大。`.btn.sm` 那个 36px 的例外在这儿不适用。 */
.xmsheet .btn{min-height:44px;padding:10px 16px;font-size:14px}
.xmsheet .btn.sm{min-height:44px;padding:10px 14px;font-size:13.5px}
.xmsheet .xbtn{min-width:44px;min-height:44px;display:inline-flex;align-items:center;
  justify-content:center}

/* 自动同步没成功那行（多为入校孩子：小麦里压根没建档案） */
.xmline .xmno{color:#8A5A12;font-weight:650;font-size:12.5px}

/* 手机上「写入小麦 / 再写一条 / 手动写入」要够大才点得准（乐天的三条硬指标之一）；
   桌面保持紧凑，只在窄屏放大。 */
@media (max-width:640px){
  .xmline .btn{min-height:44px;padding:10px 16px;font-size:13.5px}
  .xmline{gap:10px}
}

/* 写进小麦了，但接收人对不上（小麦那边撤不回，必须显眼）—— 2026-09-18 */
.xmline.bad{background:var(--bad-bg,#FDECEC);border:1px solid #F3C9C9;border-radius:10px;padding:8px 11px}
.xmline .xmbad{color:#B4231F;font-weight:650;font-size:12.5px}
.xmline.bad .xmtip{color:#8A3A36}

/* ---------- 备案 footer（上公网域名必备）---------- */
.beian{
  display:flex;flex-wrap:wrap;justify-content:center;align-items:center;
  gap:3px 14px;padding:14px 12px calc(16px + env(safe-area-inset-bottom));
  font-size:12px;color:var(--ink3);line-height:1.6;
}
.beian a{color:var(--ink3);text-decoration:none}
.beian a:hover{color:var(--ink2);text-decoration:underline}
