:root{
  --bg:#f4f6fb; --panel:#ffffff; --panel-2:#fafbfe; --line:#e4e8f2; --line-2:#eef1f7;
  --text:#1c2333; --text-2:#5a6580; --text-3:#8b95ab;
  --brand:#3055d8; --brand-2:#eaf0ff; --brand-3:#1f3ea8;
  --ok:#0f9d58; --ok-bg:#e8f7ee; --warn:#e8912d; --warn-bg:#fdf3e4;
  --risk:#d9363e; --risk-bg:#fdecec; --gold:#c9911a;
  --shadow:0 1px 2px rgba(28,35,51,.05),0 6px 20px rgba(28,35,51,.06);
  --shadow-lg:0 12px 40px rgba(28,35,51,.14);
  --r:12px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  background:var(--bg);color:var(--text);font-size:13px;line-height:1.55;-webkit-font-smoothing:antialiased;
  -webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;
}
button,input,select,textarea{font:inherit;color:inherit}
input,textarea,select{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}
button{cursor:pointer;border:none;background:none}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:#c9d1e2;border-radius:6px}
::-webkit-scrollbar-thumb:hover{background:#aab6ce}
::-webkit-scrollbar-track{background:transparent}

/* ---------- 登录 ---------- */
#login{position:fixed;inset:0;z-index:999;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#22307a 0%,#3055d8 45%,#5b8cf0 100%);}
#login::before{content:"";position:absolute;inset:0;
  background:radial-gradient(circle at 18% 22%,rgba(255,255,255,.22),transparent 42%),
             radial-gradient(circle at 82% 78%,rgba(255,255,255,.16),transparent 45%);}
.login-card{position:relative;width:394px;background:#fff;border-radius:18px;padding:38px 36px 30px;box-shadow:var(--shadow-lg)}
.login-logo{width:52px;height:52px;border-radius:14px;background:linear-gradient(135deg,var(--brand),#6d94ff);
  display:flex;align-items:center;justify-content:center;color:#fff;font-size:23px;font-weight:800;margin-bottom:18px;letter-spacing:-1px}
.login-card h1{font-size:20px;font-weight:700;letter-spacing:-.2px}
.login-card .sub{color:var(--text-3);font-size:12.5px;margin:6px 0 26px}
.fld{margin-bottom:14px}
.fld label{display:block;font-size:12px;color:var(--text-2);margin-bottom:6px;font-weight:600}
.fld input{width:100%;height:42px;border:1.5px solid var(--line);border-radius:10px;padding:0 13px;background:var(--panel-2);transition:.15s}
.fld input:focus{outline:none;border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px var(--brand-2)}
.btn-primary{width:100%;height:44px;border-radius:10px;background:var(--brand);color:#fff;font-weight:600;font-size:14px;margin-top:10px;transition:.15s}
.btn-primary:hover{background:var(--brand-3)}
#btnGuest{width:100%;margin-top:4px;height:40px}
.login-err{color:var(--risk);font-size:12.5px;min-height:19px;margin-top:9px;text-align:center}
.login-foot{text-align:center;color:var(--text-3);font-size:11.5px;margin-top:16px;border-top:1px solid var(--line-2);padding-top:14px}

/* ---------- 布局 ---------- */
#app{display:none;height:100vh;flex-direction:column}
header{height:54px;flex:none;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;
  gap:14px;padding:0 18px;box-shadow:0 1px 3px rgba(28,35,51,.04);z-index:20}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:15px;letter-spacing:-.2px}
.brand .mark{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,var(--brand),#6d94ff);
  color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:800}
.brand small{font-weight:500;color:var(--text-3);font-size:11.5px;margin-left:2px}
.user-badge{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:#243b6b;
  background:linear-gradient(135deg,var(--brand-2),#eaf0ff);border:1px solid #c9d8ff;border-radius:20px;padding:5px 13px;white-space:nowrap}
.user-badge .ub-role{font-size:11px;font-weight:700;color:#fff;background:var(--brand);border-radius:10px;padding:1px 7px;margin-left:2px}
.hdr-stat{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.chip{background:var(--panel-2);border:1px solid var(--line);border-radius:20px;padding:4px 12px;font-size:12px;color:var(--text-2);white-space:nowrap}
.chip b{color:var(--brand);font-weight:700}
.btn-ghost{border:1px solid var(--line);border-radius:8px;padding:6px 13px;font-size:12.5px;color:var(--text-2);background:#fff;transition:.15s}
.btn-ghost:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-2)}
main{flex:1;display:flex;min-height:0}

/* ---------- 左栏 ---------- */
#side{width:322px;flex:none;background:#fff;border-right:1px solid var(--line);overflow-y:auto;padding:15px}
.card{background:var(--panel-2);border:1px solid var(--line-2);border-radius:var(--r);padding:14px;margin-bottom:13px}
.card h3{font-size:12.5px;font-weight:700;color:var(--text);margin-bottom:12px;display:flex;align-items:center;gap:7px}
.card h3::before{content:"";width:3px;height:13px;background:var(--brand);border-radius:2px}
.card h3 .tag{margin-left:auto;font-weight:500;font-size:11px;color:var(--text-3)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.f label{display:block;font-size:11px;color:var(--text-3);margin-bottom:4px;font-weight:600}
.f input,.f select{width:100%;height:33px;border:1px solid var(--line);border-radius:8px;padding:0 9px;background:#fff;font-size:12.5px;transition:.15s}
.f textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:7px 9px;background:#fff;font-size:12.5px;resize:vertical;min-height:52px}
.f input:focus,.f select:focus,.f textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 2.5px var(--brand-2)}
.f.full{grid-column:1/-1}

/* 可搜索单选下拉（毕业高中等） */
.search-select-wrap{position:relative;width:100%;min-width:0}
.search-select-input{width:100%;height:33px;padding:0 28px 0 9px;border:1px solid var(--line);border-radius:8px;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2394a3b8' d='M6 8L1 3h10z'/%3E%3C/svg%3E") no-repeat right 10px center;font-size:12.5px;color:var(--text);outline:none;box-sizing:border-box}
.search-select-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 2.5px var(--brand-2)}
.search-select-list{position:absolute;left:0;right:0;top:100%;margin-top:4px;max-height:240px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.12);z-index:50}
.search-select-opt{padding:8px 11px;font-size:12.5px;color:var(--text-2);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.search-select-opt:hover,.search-select-opt.active{background:var(--brand-2);color:var(--brand)}
.search-select-empty{padding:10px 11px;font-size:12.5px;color:var(--text-3)}

/* 学考成绩 */
.subj{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px dashed var(--line-2)}
.subj:last-child{border-bottom:none}
.subj .nm{width:34px;font-size:12.5px;color:var(--text-2);font-weight:600;flex:none}
.seg{display:flex;gap:3px;flex:1}
.seg button{flex:1;height:27px;border-radius:6px;background:#fff;border:1px solid var(--line);
  font-size:12px;font-weight:700;color:var(--text-3);transition:.12s}
.seg button:hover{border-color:#b9c4dc;color:var(--text-2)}
.seg button.on{color:#fff;border-color:transparent}
.seg button.on[data-g="A"]{background:#0f9d58}
.seg button.on[data-g="B"]{background:#3055d8}
.seg button.on[data-g="C"]{background:#7a5bd6}
.seg button.on[data-g="D"]{background:#e8912d}
.seg button.on[data-g="E"]{background:#98a2b8}
.quick{display:flex;gap:6px;margin-top:11px}
.quick button{flex:1;height:28px;border-radius:7px;border:1px solid var(--line);background:#fff;font-size:11.5px;color:var(--text-2);transition:.15s}
.quick button:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-2)}
.tip{font-size:11px;color:var(--text-3);line-height:1.6;background:var(--brand-2);border-radius:8px;padding:8px 10px;margin-top:10px}

/* ---------- 右栏 ---------- */
#mainpane{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}
#filters{flex:none;background:#fff;border-bottom:1px solid var(--line);padding:12px 16px 13px}
.fl-row{display:flex;gap:9px;align-items:flex-end;flex-wrap:wrap}
.fl{min-width:0}
.fl label{display:block;font-size:10.5px;color:var(--text-3);margin-bottom:4px;font-weight:700;letter-spacing:.2px}
.fl select,.fl input{height:32px;border:1px solid var(--line);border-radius:8px;padding:0 9px;background:var(--panel-2);font-size:12.5px;width:100%}
.fl select:focus,.fl input:focus{outline:none;border-color:var(--brand);background:#fff;box-shadow:0 0 0 2.5px var(--brand-2)}
.fl.kw{flex:0 0 300px}
.fl.w120{flex:0 0 120px}.fl.w104{flex:0 0 104px}.fl.w138{flex:0 0 138px}.fl.w160{flex:0 0 160px}
.rng{display:flex;gap:4px;align-items:center}
.rng input{width:100%;text-align:center;padding:0 4px}
.rng span{color:var(--text-3);font-size:11px}
.fl-row+.fl-row{margin-top:10px}
.pills{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.pill{border:1px solid var(--line);border-radius:16px;padding:4px 11px;font-size:11.5px;color:var(--text-2);background:var(--panel-2);transition:.15s;white-space:nowrap}
.pill:hover{border-color:var(--brand);color:var(--brand)}
.pill.on{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}
.pill-cnt{display:inline-block;margin-left:5px;color:var(--risk);font-weight:400;font-size:11px;letter-spacing:.2px}
.pill.on .pill-cnt{color:#fff;opacity:.92}
.sep{width:1px;height:18px;background:var(--line);margin:0 3px}
.pl{font-size:10.5px;color:var(--text-3);font-weight:700;margin-right:2px}
/* 重置全部条件按钮：默认浅色（无筛选时与其他控件一致）；有筛选条件时变深红提醒可以清除 */
.btn-reset-red{
  border:1px solid var(--line);background:#fff;color:var(--text-2);
  border-radius:16px;padding:0 14px;height:32px;
  font-size:12px;font-weight:600;white-space:nowrap;
  transition:.15s;align-self:flex-end;margin-bottom:0;
}
.btn-reset-red:hover{border-color:#b91c1c;color:#b91c1c}
.btn-reset-red.has-filter{background:#b91c1c;border-color:#b91c1c;color:#fff}
.btn-reset-red.has-filter:hover{background:#991b1b;border-color:#991b1b}
.btn-reset-red.has-filter:active{background:#7f1d1d}
/* 一键入围复选框：选中打勾为深红 */
.cb-red{accent-color:#b91c1c;width:14px;height:14px;cursor:pointer}
.chips{display:flex;gap:4px;flex-wrap:wrap;max-width:280px}
.chip-btn{border:1px solid var(--line);border-radius:14px;padding:3px 10px;font-size:11.5px;color:var(--text-2);background:var(--panel-2);transition:.15s;white-space:nowrap}
.chip-btn:hover{border-color:var(--brand);color:var(--brand)}
.chip-btn.on{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}
.btn-calc{width:100%;height:38px;border-radius:9px;background:linear-gradient(135deg,var(--brand),#5b8cf0);color:#fff;font-weight:700;font-size:13.5px;margin-top:11px;transition:.15s;box-shadow:0 4px 12px rgba(48,85,216,.28)}
.btn-calc:hover{background:linear-gradient(135deg,var(--brand-3),var(--brand));box-shadow:0 6px 16px rgba(48,85,216,.36)}

#toolbar{flex:none;display:flex;align-items:center;gap:10px;padding:9px 16px;background:var(--panel-2);border-bottom:1px solid var(--line);font-size:12.5px;color:var(--text-2);position:relative}
#toolbar .n{color:var(--brand);font-weight:700}
#toolbar .dot{color:var(--text-3)}
.btn-ghost.sm{padding:4px 11px;font-size:12px}
.col-panel{display:none;position:absolute;right:14px;top:46px;z-index:30;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-lg);padding:10px 12px;max-width:340px;max-height:60vh;overflow:auto}
.col-panel.show{display:block}
.col-ph{font-size:11px;font-weight:700;color:var(--text-3);margin-bottom:8px}
.col-opt{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--text-2);margin:3px 10px 3px 0;cursor:pointer;white-space:nowrap}
.col-opt input{accent-color:var(--brand)}

/* ---------- 表格 ---------- */
#tablewrap{flex:1;overflow:auto;background:#fff}
table{border-collapse:separate;border-spacing:0;font-size:12px;white-space:nowrap;table-layout:fixed}
thead th{position:sticky;top:0;z-index:5;background:#eef2fb;color:var(--text-2);font-weight:700;font-size:11px;
  padding:6px 6px;text-align:center;border-bottom:1px solid #dbe2f0;border-right:1px solid #e6ebf6;cursor:pointer;user-select:none;line-height:1.35;position:sticky}
thead th .rs{position:absolute;right:-6px;top:0;width:11px;height:100%;cursor:col-resize;z-index:7;border-radius:3px}
thead th .rs:hover{background:rgba(48,85,216,.22)}
thead th:hover{background:#e3ebfb;color:var(--brand)}
thead th.g1{background:#eef2fb}thead th.g2{background:#edf6f1}thead th.g3{background:#fdf4e9}thead th.g4{background:#f4eefb}
thead th .ar{color:var(--brand);font-size:9px;margin-left:2px}
tbody td{padding:5px 6px;border-bottom:1px solid var(--line-2);border-right:1px solid #f2f4f9;text-align:center;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;transition:background .12s}
tbody tr:hover td{background:#d6e3ff}
tbody td.maj{text-align:left;color:var(--text);font-weight:600;max-width:230px}
tbody td.uni{text-align:left;color:var(--text);font-weight:600}
/* 10-09：报考大学/服务大学列链到「校测案例录取数据库」 */
tbody td.uni a.uni-link{color:#1456b8;text-decoration:none;border-bottom:1px dashed #9dc0ea;cursor:pointer}
tbody td.uni a.uni-link:hover{color:#0c447c;border-bottom-color:#0c447c;background:#e6f1fb}
@media print{body td.uni a.uni-link{border:0;color:var(--text)}}
tbody td.num{font-variant-numeric:tabular-nums}
tbody td.mine{font-weight:800;color:var(--risk);background:#f3f6ff;font-variant-numeric:tabular-nums}
tbody td.note{text-align:left;color:var(--text-3);max-width:150px}
/* 主表建议「标注」高亮配色（较原值再深一点） */
.s-ok{color:#0a8a4a}.s-warn{color:#cf7d1f}.s-risk{color:#c41e26}.s-gold{color:#a9740a}.s-mute{color:var(--text-3)}
.badge{display:inline-block;padding:1.5px 7px;border-radius:11px;font-size:10.5px;font-weight:700}
.b-g{background:var(--ok-bg);color:var(--ok)}.b-b{background:var(--brand-2);color:var(--brand)}
.b-o{background:var(--warn-bg);color:var(--warn)}.b-r{background:var(--risk-bg);color:var(--risk)}.b-n{background:#eef0f5;color:var(--text-3)}
.b-ok{background:var(--ok-bg);color:var(--ok)}.b-risk{background:var(--risk-bg);color:var(--risk)}
.empty{padding:70px 20px;text-align:center;color:var(--text-3)}
.empty .big{font-size:34px;margin-bottom:10px;opacity:.5}

/* ---------- 弹层 ---------- */
.modal{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;background:rgba(20,26,44,.5);padding:24px}
.modal.show{display:flex}
.modal-box{background:#fff;border-radius:14px;max-width:780px;width:100%;max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg)}
.modal-hd{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;font-weight:700;font-size:14.5px}
.modal-hd button{margin-left:auto;color:var(--text-3);font-size:20px;line-height:1}
.modal-bd{padding:18px 20px;overflow-y:auto;font-size:12.5px;color:var(--text-2);line-height:1.75}
.modal-bd h4{color:var(--text);font-size:13px;margin:16px 0 7px}
.modal-bd h4:first-child{margin-top:0}
.algo-item{border:1px solid var(--line-2);border-radius:9px;padding:10px 12px;margin-bottom:8px;background:var(--panel-2)}
.algo-item b{color:var(--text);display:block;margin-bottom:3px;font-size:12.5px}
.algo-item .g{display:inline-block;background:var(--brand-2);color:var(--brand);border-radius:5px;padding:0 6px;font-size:10.5px;font-weight:700;margin-left:6px}
.algo-item .nt{color:var(--warn);font-size:11.5px;margin-top:4px}
.modal-bd table{width:100%;font-size:12px;white-space:normal}
.modal-bd td,.modal-bd th{border:1px solid var(--line);padding:6px 9px;text-align:left}
.modal-box.wide{max-width:1180px}
/* 学生推荐历史 modal（每次提交一条历史卡片） */
.rec-hist-body{max-height:65vh}
.rec-hist-card{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:8px;background:var(--panel-2);position:relative}
.rec-hist-card.cur{border-color:#14804f;background:#eefaf2;box-shadow:0 0 0 1px rgba(20,128,79,.18)}
.rec-hist-hd{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap}
.rec-hist-no{font-weight:700;color:var(--text);font-size:12.5px;min-width:34px}
.rec-hist-time{color:var(--text);font-size:12.5px;font-weight:600}
.rec-hist-tag{display:inline-block;font-size:11px;padding:1px 7px;border-radius:8px;background:#eefaf2;color:#14804f;border:1px solid #5fbf8e}
.rec-hist-by{color:var(--text-2);font-size:11.5px;margin-left:auto}
.rec-hist-xh{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.rec-hist-xh .tag{background:#e8eaf3;color:#3b3f63;border:1px solid #c8cce0;border-radius:6px;padding:1px 7px;font-size:11.5px;font-family:Menlo,Consolas,monospace}
.rec-hist-note{color:var(--text-3);font-size:11.5px;margin-top:4px;font-style:italic}
.rec-hist-empty{color:var(--text-3);text-align:center;padding:24px 0;font-size:12.5px}
/* Modal 全屏模式（通用）：覆盖 .modal/.modal-box/.modal-bd */
.modal.fs-mode{padding:0;align-items:stretch;justify-content:stretch}
.modal.fs-mode .modal-box{max-width:none!important;width:100vw;height:100vh;max-height:none;border-radius:0}
.modal.fs-mode .modal-bd{display:flex;flex-direction:column;overflow:hidden;flex:1 1 auto;padding-bottom:16}
/* Modal 全屏按钮（通用） */
.modal-fs-btn{margin-right:10px;font-size:13px;line-height:1;color:var(--text-3);background:transparent;border:1px solid var(--line);border-radius:7px;padding:4px 9px;cursor:pointer}
.modal-fs-btn:hover{border-color:var(--brand);color:var(--brand)}
.modal-fs-btn.active{background:var(--brand);color:#fff;border-color:var(--brand)}
/* 全屏模式下特定 Modal 的列表自适应（占满高度） */
#stuModal.fs-mode .stu-list{max-height:none;flex:1 1 auto;overflow-y:auto}
#recAdminModal.fs-mode .rec-admin-toolbar{flex-shrink:0}
#recAdminModal.fs-mode #recAdminList{max-height:none;flex:1 1 auto;overflow-y:auto;padding-right:4px}
.admin-add{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px;font-size:12.5px;color:var(--text-2)}
.admin-add input,.admin-add select{height:30px;border:1px solid var(--line);border-radius:7px;padding:0 9px;font-size:12.5px;background:#fff}
.admin-add input#na_u,.admin-add input#na_n{width:130px}
.admin-add input#na_p{width:110px}
.admin-add .msg{color:var(--ok);margin-left:4px}
.admin-tbl{width:100%;border-collapse:collapse;font-size:12px}
.admin-tbl th{background:#f4f7fc;color:var(--text-2);font-weight:700}
.admin-tbl td,.admin-tbl th{border:1px solid var(--line);padding:7px 9px;text-align:left;white-space:nowrap}
.admin-tbl td.ops{white-space:nowrap}
.admin-tbl .on{color:var(--ok);font-weight:700}
.admin-tbl .off{color:var(--text-3)}
.admin-tbl .muted{color:var(--text-3)}
.tbl-wrap{overflow-x:auto;width:100%;padding-bottom:4px}
.btn-mini{height:26px;padding:0 10px;border:1px solid var(--line);border-radius:6px;background:#fff;font-size:11.5px;color:var(--text-2);cursor:pointer;margin-right:6px}
.btn-mini:hover{background:#f4f7fc}
.btn-mini.danger{border-color:#f3c2c6;color:var(--risk)}
.btn-mini.danger:hover{background:#fdecee}
.btn-primary.sm{height:30px;padding:0 14px;background:var(--brand);color:#fff;border-radius:7px;font-size:12.5px;font-weight:600}
.btn-primary.sm:hover{background:var(--brand-2)}
.msg{font-size:12px}
.fld{margin-bottom:12px}
.fld label{display:block;font-size:12px;color:var(--text-2);margin-bottom:5px}
.fld input{width:100%;height:34px;border:1px solid var(--line);border-radius:8px;padding:0 11px;font-size:13px;background:#fff}

@media(max-width:1100px){
  main{flex-direction:column}
  #side{width:100%;max-height:44vh;border-right:none;border-bottom:1px solid var(--line)}
}

/* ---------- 学生信息卡收紧 ---------- */
.stu-card{padding:10px}
.stu-card .grid2{gap:5px}
.stu-card .f label{margin-bottom:2px}
.stu-card .f input,.stu-card .f select{height:30px}
.stu-card .f select#s_lang{height:27px;font-size:12px}
.stu-card .quick button{height:26px}
.stu-card .f .req{color:#dc2626;font-weight:700;margin-left:3px}
.stu-card .f input.field-invalid,
.stu-card .f select.field-invalid,
.stu-card .f .search-select-host.field-invalid{border-color:#dc2626 !important;box-shadow:0 0 0 2px rgba(220,38,38,.12)}
.stu-card .f input.phone-locked{background:#f3f4f6;color:#6b7280;cursor:not-allowed}

/* ---------- 左侧手机号查询状态（红字，紧跟标签） ---------- */
.phone-status-inline{font-size:11px;color:#e23b3b;font-weight:500;margin-left:2px}

/* ---------- 学生档案弹层 ---------- */
.stu-query label,.stu-row label{display:block;font-size:12px;color:var(--text-2);margin-bottom:5px;font-weight:600}
.stu-query input,.stu-row input{width:100%;height:34px;border:1px solid var(--line);border-radius:8px;padding:0 10px;font-size:13px;box-sizing:border-box;outline:none}
.stu-query input:focus,.stu-row input:focus{border-color:var(--brand)}
.stu-status{font-size:12px;margin-top:6px;min-height:16px;line-height:1.5}
.stu-status.ok{color:#1a9e57}
.stu-status.new{color:#2f6bff}
.stu-status.warn{color:#d9822b}

/* ---------- 跟进状态标签（仅学生档案 + 左侧学生面板，不在主表出现） ----------
   实色底 + 白字 + 高光/投影，醒目立体；每个状态一种颜色（暂未知黑=要跟进，报强化红=热度最高） */
.stu-status-badge,.side-status-badge{
  display:inline-flex;align-items:center;padding:2.5px 11px;border-radius:999px;
  font-size:11.5px;font-weight:800;line-height:17px;white-space:nowrap;vertical-align:middle;
  color:#fff;border:1px solid transparent;letter-spacing:.5px;flex:0 0 auto;
  text-shadow:0 1px 1px rgba(0,0,0,.30);
  box-shadow:0 2px 5px rgba(15,23,42,.25),inset 0 1px 0 rgba(255,255,255,.30),inset 0 -1px 0 rgba(0,0,0,.16);
}
.side-status-badge{margin-left:8px}
.stu-status-sel,.side-status-sel{
  height:27px;border:1px solid rgba(0,0,0,.08);border-radius:8px;padding:0 9px;
  font-size:12px;font-weight:800;outline:none;cursor:pointer;color:#fff;letter-spacing:.5px;
  text-shadow:0 1px 1px rgba(0,0,0,.30);
  box-shadow:0 2px 5px rgba(15,23,42,.22),inset 0 1px 0 rgba(255,255,255,.28);
}
.stu-status-sel:hover,.side-status-sel:hover{filter:brightness(1.08)}
.stu-status-sel:disabled,.side-status-sel:disabled{opacity:.6;cursor:wait}
.stu-status-row{margin:8px 0 2px;padding:8px 10px;border:1px dashed var(--line);border-radius:8px;background:#fafbff}
.side-status-row{
  display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;
  margin:0 0 10px;padding:7px 10px;border:1px dashed var(--line);border-radius:8px;background:#fafbff;
}
.side-status-row .stu-k{font-size:12px;color:var(--text-2);font-weight:600}
.side-divider{width:1px;height:18px;background:var(--line);margin:0 2px;flex:0 0 auto}
.side-qr-img{width:64px;height:64px;border:1px solid var(--line-2);border-radius:6px;background:#fff;display:block;flex-shrink:0}
.stu-status-cell{display:flex;align-items:center;gap:5px}
@media (max-width:768px){
  .stu-status-tip,.side-status-tip{display:none}
  .stu-status-badge,.side-status-badge{font-size:10.5px;padding:1.5px 8px}
}
.stu-row{margin-top:13px}
.stu-actions{display:flex;gap:10px;margin-top:14px;align-items:center}
.stu-actions .btn-calc{margin-top:0;flex:1}
.stu-list{margin-top:6px;display:flex;flex-direction:column;gap:7px;max-height:56vh;overflow:auto;padding-right:4px}
.stu-search{width:100%;height:36px;border:1px solid var(--line);border-radius:8px;padding:0 11px;font-size:13px;box-sizing:border-box;margin:4px 0 8px;outline:none;background:#fff}
.stu-search:focus{border-color:var(--brand)}
/* 「📤 推荐 N 项」合计标记（与收藏筛选同款风格，绿色主题匹配 ✓ 推荐列） */
.rec-stat{display:inline-flex;align-items:center;gap:5px;padding:0 8px;height:26px;border-radius:6px;font-size:12px;background:#eefaf2;color:#14804f;border:1px solid #cfe8d8;user-select:none;cursor:default}
.stu-toolbar-top{display:flex;gap:8px;align-items:center;margin:4px 0 8px}
.stu-toolbar-top .stu-search{flex:1;margin:0}
/* 学生档案：管理员/部门管理员的「范围」三选控件（segmented）——立体胶囊风 */
.stu-scope-pills{display:inline-flex;border:1px solid #d3dced;border-radius:10px;overflow:hidden;flex-shrink:0;background:linear-gradient(180deg,#fdfefe,#f2f5fb);height:36px;box-shadow:0 2px 6px rgba(23,43,99,.10),inset 0 1px 0 #fff}
.stu-scope-pills .seg{padding:0 14px;height:100%;background:transparent;border:none;border-right:1px solid #e2e8f5;font-size:12.5px;color:var(--text-2);cursor:pointer;transition:.15s;white-space:nowrap;text-shadow:0 1px 0 #fff}
.stu-scope-pills .seg:last-child{border-right:none}
.stu-scope-pills .seg:hover{background:linear-gradient(180deg,#ffffff,#ecf2fd);color:var(--brand)}
.stu-scope-pills .seg:active{transform:translateY(1px)}
.stu-scope-pills .seg.active{background:linear-gradient(180deg,#5b8cff,#2f55d8);color:#fff;font-weight:800;text-shadow:0 1px 1px rgba(0,0,0,.25);border-right-color:transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.35),inset 0 -1px 0 rgba(0,0,0,.14),0 2px 6px rgba(48,85,216,.38)}
/* 部门多选下拉（替代原 segmented；多选可同时看多个部门） */
.multi-select{position:relative;flex-shrink:0}
.multi-trigger{display:flex;align-items:center;gap:6px;height:36px;padding:0 14px;background:linear-gradient(180deg,#fdfefe,#f2f5fb);border:1px solid #d3dced;border-radius:10px;font-size:12.5px;color:var(--text-2);cursor:pointer;transition:.15s;text-shadow:0 1px 0 #fff;box-shadow:0 2px 6px rgba(23,43,99,.10),inset 0 1px 0 #fff}
.multi-trigger:hover{border-color:#9ab3ff;color:var(--brand);transform:translateY(-1px);box-shadow:0 4px 10px rgba(23,43,99,.16),inset 0 1px 0 #fff}
.multi-trigger:active{transform:translateY(1px)}
.multi-trigger.has-sel{background:linear-gradient(180deg,#5b8cff,#2f55d8);color:#fff;border-color:#2b4fc4;font-weight:800;text-shadow:0 1px 1px rgba(0,0,0,.25);box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 3px 8px rgba(48,85,216,.35)}
.multi-caret{font-size:9px;color:#8892a6;margin-left:2px}
.multi-trigger.has-sel .multi-caret{color:#fff}
.multi-panel{position:absolute;top:42px;right:0;min-width:220px;max-width:300px;max-height:340px;overflow-y:auto;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(40,56,90,.16);z-index:100}
.multi-actions{display:flex;gap:4px;padding:8px 10px;border-bottom:1px solid var(--line);background:#f7f9fc}
.multi-actions button{flex:1;height:28px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--text-2);font-size:12px;cursor:pointer;padding:0 6px}
.multi-actions button:hover{background:#eef3ff;color:var(--brand);border-color:var(--brand)}
.multi-actions button[data-act="close"]{background:var(--brand);color:#fff;border-color:var(--brand)}
.multi-options{padding:4px 0}
.multi-options label{display:flex;align-items:center;gap:8px;padding:8px 14px;font-size:13px;color:var(--text);cursor:pointer;user-select:none}
.multi-options label:hover{background:#f7f9fc}
.multi-options input[type=checkbox]{cursor:pointer;width:15px;height:15px}
.multi-options .dept-count{margin-left:auto;color:var(--text-3);font-size:11px}
.stu-item{border:1px solid var(--line-2);border-radius:9px;padding:8px 11px;background:var(--panel-2)}
.stu-item .stu-meta{font-size:12.5px;min-width:0}
.stu-item .stu-meta .tag{margin-left:4px}
.stu-item .stu-ops{display:flex;gap:6px;flex-shrink:0}
/* 学生档案列表（弹窗里）：单行布局 —— 左边信息 + 右边按钮，一行装下一个学生 */
.stu-main{display:flex;align-items:center;gap:10px}
.stu-main-l{flex:1;min-width:0;display:flex;align-items:center;gap:6px;cursor:pointer;overflow:hidden;white-space:nowrap;padding-right:8px}
.stu-main-l > *{flex:0 0 auto}
.stu-main-l .stu-name{font-size:13.5px;font-weight:700;color:var(--text);min-width:60px;max-width:120px;overflow:hidden;text-overflow:ellipsis}
.stu-main-l .stu-name b{font-weight:700;color:var(--text)}
.stu-main-l .stu-school{flex:1 1 auto;min-width:60px;font-size:12.5px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis}
.stu-main-l .stu-phone{font-size:12.5px;color:var(--text-2);min-width:110px}
.stu-main-l .stu-sex{font-size:12.5px;color:var(--text-2);min-width:30px}
.stu-main-l .stu-owner{font-size:12px;color:var(--text-2);max-width:120px;overflow:hidden;text-overflow:ellipsis}
.stu-main-l .stu-caret{font-size:12px;color:var(--text-3);margin-left:auto;transition:transform .2s}
.stu-main-l .stu-caret.open{transform:rotate(90deg)}
.stu-main-r{display:flex;align-items:center;gap:4px;flex-shrink:0}
.stu-main-r .btn-mini{height:24px;padding:0 8px;font-size:11px;margin-right:0;border-radius:5px}
/* 「载入」标签：红底白字、比其他小按钮大一号，一眼就能看到 */
.stu-main-r .btn-mini[data-act="load"]{height:28px;padding:0 14px;font-size:13px;font-weight:700;letter-spacing:.5px;background:linear-gradient(180deg,#e8443c,#c92a2a);border-color:#bf2620;color:#fff;box-shadow:0 2px 6px rgba(201,42,42,.30),inset 0 1px 0 rgba(255,255,255,.25)}
.stu-main-r .btn-mini[data-act="load"]:hover{background:linear-gradient(180deg,#f1554c,#d63b33);border-color:#bf2620;color:#fff}
.stu-main-r .btn-mini[data-act="load"]:active{transform:translateY(1px);box-shadow:0 1px 3px rgba(201,42,42,.35)}
/* 学生档案：勾选框 + 批量转移工具条 */
.stu-cb-wrap{display:flex;align-items:center;flex-shrink:0;margin-right:2px}
.stu-cb-wrap .stu-cb{width:16px;height:16px;cursor:pointer}
/* 学生档案：筛选条（跟进状态 + 毕业高中 + 清空 + 计数） */
.stu-filter-bar{display:flex;gap:6px;align-items:center;margin:0 0 6px;flex-wrap:wrap}
.stu-filter-chip{flex:0 0 auto;padding:5px 11px;background:linear-gradient(180deg,#fdfefe,#f2f5fb);border:1px solid #d3dced;border-radius:10px;font-size:12px;color:var(--text-2);cursor:pointer;display:flex;align-items:center;gap:5px;text-shadow:0 1px 0 #fff;box-shadow:0 2px 6px rgba(23,43,99,.10),inset 0 1px 0 #fff;transition:.15s}
.stu-filter-chip:hover{border-color:#9ab3ff;color:var(--brand);transform:translateY(-1px);box-shadow:0 4px 10px rgba(23,43,99,.16),inset 0 1px 0 #fff}
.stu-filter-chip:active{transform:translateY(1px)}
.stu-filter-chip.has-sel{background:linear-gradient(180deg,#5b8cff,#2f55d8);color:#fff;border-color:#2b4fc4;font-weight:800;text-shadow:0 1px 1px rgba(0,0,0,.25);box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 3px 8px rgba(48,85,216,.35)}
.stu-filter-chip .f-caret{font-size:9px;color:var(--text-3)}
.stu-filter-chip.has-sel .f-caret{color:#fff}
.stu-filter-clear{border:none;background:transparent;color:var(--risk);font-size:12px;cursor:pointer;padding:4px 6px}
.stu-filter-info{font-size:12px;color:var(--text-3);margin-left:auto}
/* 筛选 sheet（居中弹层，与手机端老师工作台 work.html 类似的样式） */
.f-mask{position:fixed;inset:0;background:rgba(20,30,80,.55);z-index:400;display:none;align-items:center;justify-content:center}
.f-mask.on{display:flex}
.f-sheet{background:#fff;width:100%;max-width:520px;border-radius:14px;padding:16px 18px;box-shadow:0 12px 36px rgba(20,30,80,.25);max-height:80vh;display:flex;flex-direction:column}
.f-sheet-hd{display:flex;align-items:center;margin-bottom:10px}
.f-sheet-hd h3{margin:0;flex:1;font-size:16px}
.f-sheet-close{width:30px;height:30px;border:none;background:transparent;font-size:22px;color:var(--text-3);cursor:pointer}
.f-sheet-ft{display:flex;gap:8px;padding:2px 0 12px;border-bottom:1px solid var(--line);margin-bottom:4px}
.f-sheet-ft button{flex:1;height:36px;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;border:1px solid var(--line);background:#fff;color:var(--text-2)}
.f-sheet-ft button.primary{background:var(--brand);color:#fff;border-color:var(--brand)}
.f-sheet-ft button:active{filter:brightness(.95)}
.f-search-wrap{display:flex;gap:6px;align-items:center;margin:0 0 6px}
.f-search{flex:1;min-width:0;padding:8px 10px;border:1px solid var(--line);border-radius:8px;outline:none;background:#f4f6fb;font-size:13px}
.f-search:focus{border-color:var(--brand);background:#fff}
.f-search-clear{border:none;background:transparent;color:var(--risk);font-size:14px;cursor:pointer;padding:4px 6px}
.f-body{max-height:46vh;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:2px 0}
.f-option{display:flex;align-items:center;gap:10px;padding:9px 8px;font-size:14px;border-bottom:1px solid var(--line);cursor:pointer;border-radius:6px}
.f-option:last-child{border-bottom:none}
.f-option:hover{background:#f6f8fd}
.f-option.checked .f-name{color:var(--brand);font-weight:700}
.f-option .f-cb{width:16px;height:16px;flex:0 0 auto;cursor:pointer}
.f-option .f-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;color:var(--text)}
.f-option .f-count{color:var(--text-3);font-size:12px;flex:0 0 auto}
.f-option .f-tag{display:inline-flex;align-items:center;padding:3px 11px;border-radius:999px;font-size:12px;font-weight:800;color:#fff;border:1px solid transparent;text-shadow:0 1px 1px rgba(0,0,0,.30);box-shadow:0 2px 4px rgba(15,23,42,.22),inset 0 1px 0 rgba(255,255,255,.30);min-width:88px;justify-content:center}
.stu-detail{border-top:1px dashed var(--line-2);margin-top:8px;padding-top:8px}
.stu-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px 14px}
.stu-field{font-size:12.5px;color:var(--text);display:flex;gap:6px}
.stu-field .stu-k{margin:0}
.stu-grades{margin-top:8px}
.stu-gtab{display:flex;flex-wrap:wrap;gap:5px;margin-top:4px}
.stu-gcell{font-size:11.5px;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:2px 7px;color:var(--text-2)}
/* 学生档案：勾选框 + 批量转移工具条 */
.stu-cb-wrap{display:flex;align-items:center;flex-shrink:0}
.stu-cb-wrap .stu-cb{width:16px;height:16px;cursor:pointer}
.stu-toolbar{display:flex;align-items:center;gap:12px;margin:6px 0 2px}
.stu-selall{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-2);cursor:pointer;user-select:none}
.stu-selall input{width:15px;height:15px;cursor:pointer}
.stu-transfer-sel{width:100%;height:36px;border:1px solid var(--line);border-radius:8px;padding:0 11px;font-size:13px;box-sizing:border-box;background:#fff;outline:none}
.stu-transfer-sel:focus{border-color:var(--brand)}
/* 批量转移弹窗：目标账号改成可搜索下拉后，避免下拉列表被 modal-bd 的滚动区裁切 */
#stuTransferModal .modal-box{max-width:460px}
#stuTransferModal .modal-bd{overflow:visible;min-height:200px}
#stuTransferModal .search-select-input{height:38px;font-size:13px}
#stuTransferModal .search-select-list{z-index:260;max-height:230px}
.stu-detail .stu-ops{margin-top:10px}
.stu-stats{margin-bottom:8px;padding:8px 10px;background:var(--panel-2);border:1px solid var(--line-2);border-radius:9px}
.stu-stats-hd{display:flex;align-items:center;justify-content:space-between;cursor:pointer;font-weight:600;color:var(--text)}
.stu-stat-t{font-size:12.5px}
.stu-caret{font-size:12px;color:var(--text-3);transition:transform .2s}
.stu-stats-bd{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
.stu-stat-chip{font-size:11.5px;background:#fff;border:1px solid var(--line);border-radius:20px;padding:2px 9px;color:var(--text-2)}

/* 提招志愿管理弹层工具栏（搜索 + 老师筛选 + 计数） */
.rec-admin-toolbar{display:flex;gap:8px;align-items:center;margin-bottom:10px}
.rec-admin-toolbar .filter-input{height:34px;border:1px solid var(--line);border-radius:8px;padding:0 10px;font-size:13px;background:#fff;color:var(--text);outline:none;box-sizing:border-box}
.rec-admin-toolbar .filter-input:focus{border-color:var(--brand)}

/* ---------- 账号登录设备 / 会话管理 ---------- */
.dev-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:14px;align-items:center}
.dev-list{display:flex;flex-direction:column;gap:8px}
.dev-item{display:flex;align-items:center;gap:12px;border:1px solid var(--line-2);border-radius:9px;padding:9px 11px;background:var(--panel-2)}
.dev-info{flex:1;min-width:0}
.dev-ua{font-size:12.5px;color:var(--text);font-weight:600;word-break:break-all}
.dev-meta{font-size:11px;color:var(--text-3);margin-top:3px;word-break:break-all}
.tag-online{display:inline-block;background:var(--brand-2);color:var(--brand);border-radius:5px;padding:0 6px;font-size:10.5px;font-weight:700;margin-left:6px}

/* ---------- 筛选区多选下拉 ---------- */
.fl-wrap{display:flex;gap:9px;flex-wrap:wrap;align-items:flex-end;margin-top:2px}
.ms{flex:1 1 0;min-width:104px;position:relative}
.ms>label{display:block;font-size:10.5px;color:var(--text-3);margin-bottom:4px;font-weight:700;letter-spacing:.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ms-box{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;height:32px;
  border:1px solid var(--line);border-radius:8px;background:var(--panel-2);padding:0 10px;font-size:12.5px;color:var(--text-2);transition:.15s}
/* 26备注：关键词输入框（视觉与 .ms-box 对齐） */
.ms-inbox{width:100%;height:32px;box-sizing:border-box;border:1px solid var(--line);border-radius:8px;
  background:var(--panel-2);padding:0 10px;font-size:12.5px;color:var(--text);outline:none;font-family:inherit;transition:.15s}
.ms-inbox:hover{border-color:var(--brand)}
.ms-inbox:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 2.5px var(--brand-2)}
.ms-inbox.on{border-color:var(--brand);background:var(--brand-2);color:var(--brand);font-weight:600}
.ms-inbox::placeholder{color:var(--text-3);font-weight:400}
.ms-box:hover{border-color:var(--brand);color:var(--brand)}
.ms-box.on{border-color:var(--brand);background:var(--brand-2);color:var(--brand);font-weight:600}
.ms-txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ms-caret{color:var(--text-3);font-size:10px;flex:none}
.ms-panel{display:none;position:absolute;z-index:40;top:100%;left:0;margin-top:5px;width:210px;
  background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-lg);padding:8px;max-height:280px;overflow:auto}
.ms-panel.show{display:block}
.ms-search{width:100%;height:30px;border:1px solid var(--line);border-radius:7px;padding:0 9px;font-size:12px;margin-bottom:7px;background:var(--panel-2)}
.ms-search:focus{outline:none;border-color:var(--brand);background:#fff;box-shadow:0 0 0 2.5px var(--brand-2)}
.ms-opts{display:flex;flex-direction:column;gap:1px}
.ms-opt{display:flex;align-items:center;gap:7px;padding:5px 7px;border-radius:6px;font-size:12.5px;color:var(--text-2);cursor:pointer;white-space:nowrap;overflow:hidden}
.ms-opt:hover{background:var(--brand-2)}
.ms-opt input{accent-color:var(--brand);flex:none}
.ms-opt span{overflow:hidden;text-overflow:ellipsis}
.ms-foot{margin-top:7px;padding-top:7px;border-top:1px solid var(--line-2);text-align:right}
.ms-clear{border:1px solid var(--line);border-radius:7px;padding:4px 12px;font-size:11.5px;color:var(--text-2);background:#fff;transition:.15s}
.ms-clear:hover{border-color:var(--risk);color:var(--risk)}
.ms-allrow{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--brand);padding:4px 2px 7px;margin-bottom:4px;border-bottom:1px dashed var(--line-2);cursor:pointer}
.ms-allrow input{accent-color:var(--brand);width:14px;height:14px}
.pills-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding-left:8px}

/* ---------- 保存结果浮层提示 ---------- */
.toast{position:fixed;top:18px;left:50%;transform:translate(-50%,-20px);z-index:9999;max-width:88vw;
  padding:11px 18px;border-radius:10px;font-size:13.5px;font-weight:600;color:#fff;
  background:#1a9e57;box-shadow:0 6px 22px rgba(0,0,0,.18);opacity:0;pointer-events:none;
  transition:opacity .25s ease,transform .25s ease;white-space:nowrap}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.warn{background:#d9822b}
.toast.err{background:#e23b3b}

/* ---------- 主表数据更新提示条（后台更新后前端实时刷新） ---------- */
.data-update-bar{position:fixed;left:0;right:0;top:0;z-index:10000;display:flex;align-items:center;
  justify-content:center;gap:14px;padding:11px 18px;font-size:13.5px;font-weight:600;color:#fff;
  background:linear-gradient(90deg,#1a6fe0,#1a9e57);box-shadow:0 4px 18px rgba(0,0,0,.18);
  transform:translateY(-100%);transition:transform .28s ease}
.data-update-bar.show{transform:translateY(0)}
.data-update-bar button{border:1px solid rgba(255,255,255,.7);background:rgba(255,255,255,.16);
  color:#fff;border-radius:7px;padding:4px 14px;font-size:12.5px;font-weight:600;cursor:pointer}
.data-update-bar button:hover{background:rgba(255,255,255,.3)}

/* 转移前对比面板 */
.transfer-compare{margin-top:12px;border:1px solid #e2e8f0;border-radius:10px;padding:12px 14px;background:#f8fafc;font-size:13px;line-height:1.6}
.compare-loading,.compare-err{color:#64748b}
.compare-err{color:#dc2626}
.compare-h{font-weight:600;color:#0f172a;margin-bottom:8px}
.compare-sub{font-weight:600;margin-top:6px}
.compare-sub.ok{color:#16a34a}
.compare-sub.skip{color:#d97706}
.compare-list{color:#334155;margin-top:2px;word-break:break-all}
.compare-list.skip{color:#b45309}
.compare-note{margin-top:6px;color:#16a34a;font-size:12.5px}

/* ---------- 移动端专用 ---------- */
.mob-menu-btn,.mob-nav{display:none}

@media(max-width:768px){
  #login .login-card{width:92%;max-width:360px;padding:30px 26px 24px}
  #app{padding-bottom:56px}
  header{height:auto;min-height:50px;padding:8px 12px;flex-wrap:nowrap;gap:8px}
  .brand{font-size:14px}
  .brand small{display:none}
  .brand .mark{width:26px;height:26px;font-size:12px}
  .user-badge{padding:4px 9px;font-size:11.5px;max-width:120px;overflow:hidden;text-overflow:ellipsis}
  .hdr-stat{display:none}
  .mob-menu-btn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;background:var(--panel-2);border:1px solid var(--line);font-size:18px;color:var(--text);flex:none}

  /* 底部快捷导航：一直固定在最顶层，任何弹层也可见 */
  .mob-nav{position:fixed;left:0;right:0;bottom:0;z-index:300;display:flex;height:56px;background:#fff;border-top:1px solid var(--line);box-shadow:0 -2px 10px rgba(28,35,51,.06)}
  .mob-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:10px;color:var(--text-3);background:#fff;border:none;padding:6px 0}
  .mob-nav-item.active{color:var(--brand);background:var(--brand-2)}
  .mob-nav-icon{font-size:18px;line-height:1}

  /* 左侧表单手机端：学生基本信息 → 开始计算分析 → 10 门学考，按自然顺序排列 */
  main{flex-direction:column}
  #side{
    width:100%;
    flex:0 0 auto;
    max-height:none;
    overflow:visible;
    border-right:none;
    border-bottom:1px solid var(--line);
    padding:10px 10px 12px;
    -webkit-overflow-scrolling:touch
  }
  /* 主栏随页面自然排布，下方表格区域足够高、可整体下拉查看 */
  #mainpane{flex:0 0 auto;min-height:auto;display:flex;flex-direction:column}
  /* 表格放大：单元格更高、字号更大，便于手机点选 */
  #tablewrap{font-size:13.5px}
  #tablewrap thead th{padding:10px 8px;font-size:12.5px}
  #tablewrap tbody td{padding:12px 8px}
  .stu-card{padding:12px}
  /* 姓名 / 性别等字段手机端排成 2 行（2 列），手机号与毕业高中仍占整行 */
  .stu-card .grid2{grid-template-columns:1fr 1fr;gap:10px}
  .stu-card .f.full{grid-column:1/-1}
  /* 手机端学生档案统计：置顶，默认 2 行，底部「更多查看」展开 */
  #stuModal .modal-bd{display:flex;flex-direction:column}
  #stuModal .modal-bd > #stuStats{order:-1;margin-bottom:4px}
  .stu-stats-bd{position:relative;max-height:56px;overflow:hidden}
  .stu-stats.open .stu-stats-bd{max-height:none}
  .stu-stats-bd::after{content:'';position:absolute;left:0;right:0;bottom:0;height:18px;background:linear-gradient(transparent,var(--panel-2));pointer-events:none}
  .stu-stats.open .stu-stats-bd::after{display:none}
  .stu-stats-more{text-align:right;font-size:12px;color:var(--brand);padding:4px 2px 0;cursor:pointer}
  .stu-stats-more .more-text{display:inline-block}
  /* 手机端学生卡片：严格 2 行 */
  .stu-main{flex-direction:column;align-items:stretch;gap:6px;position:relative;padding-right:18px}
  /* 手机端学生档案：单行紧凑布局（默认信息都显示；极窄屏自动 ellipsis） */
  .stu-main-l .stu-sex,.stu-main-l .stu-owner{display:none}
  .stu-main-l .stu-school{flex:1 1 auto;min-width:60px}
  .stu-main-r .btn-mini{font-size:10.5px;padding:0 6px;height:22px}
  .stu-main-r .btn-mini[data-act="load"]{font-size:12.5px;padding:0 11px;height:26px}
  .stu-card .f.full{grid-column:1/-1}
  .stu-card .f label{font-size:12px;margin-bottom:5px}
  .stu-card .f input,.stu-card .f select{height:40px;font-size:14px;padding:0 11px}
  .stu-card .f select#s_lang{height:40px;font-size:14px}
  .phone-status-inline{display:block;margin:4px 0 0 2px}

  /* 学考 */
  .subj{padding:7px 0;gap:10px}
  .subj .nm{width:52px;font-size:13px}
  .seg button{height:34px;font-size:13px}
  .quick{gap:8px;margin-top:12px}
  .quick button{height:34px;font-size:12.5px}
  .btn-calc{height:46px;font-size:15px;margin-top:12px}
  .tip{font-size:12px;padding:10px 12px}

  /* 筛选区 — 手机端只保留关键词输入 */
  #filters{padding:10px 12px 11px;background:#fff;border-bottom:1px solid var(--line)}
  .fl.kw{flex:1 1 100%;min-width:0;margin-bottom:0}
  .fl-row{gap:8px}
  .pills-row{display:none !important}
  #filterBar{display:none}
  #toolbar{display:none}

  /* 隐藏测算概览与按钮下方提示文字，减少手机端顶部占用 */
  #calcTip{display:none}
  #sumCard{display:none}

  /* 表格 — 手机端明确容器，确保不偏移、可滚动 */
  #tablewrap{
    flex:none;
    height:75vh;
    min-height:0;
    overflow:auto;
    background:#fff;
    border-top:1px solid var(--line);
    position:relative;
    -webkit-overflow-scrolling:touch;
    font-size:13.5px;
  }
  #tablewrap table{min-width:100%;border-collapse:collapse}
  #tablewrap thead{position:sticky;top:0;z-index:2;background:var(--panel-2)}
  #tablewrap tbody tr:nth-child(even){background:#fafbfe}
  table{table-layout:auto}
  thead th{padding:10px 8px;font-size:12.5px}
  tbody td{padding:12px 8px}

  /* 弹层手机端默认全屏（底部留 56px 给固定导航条） */
  .modal{padding:0;align-items:flex-end}
  .modal-box, #stuModal .modal-box, #stuModal.fs-mode .modal-box{
    max-width:100% !important; width:100% !important; height:100% !important;
    max-height:100% !important; border-radius:0 !important;
    padding-bottom:56px; box-sizing:border-box;
  }
  .modal-hd{padding:14px 16px;font-size:15px}
  .modal-bd{padding:16px}
  .modal-fs-btn, .stu-fs-btn{display:none}
  /* 推广链接输入框在手机端更大 */
  #promoModal .modal-bd .fld input{height:44px;font-size:14px}
  #promoModal .btn-primary{height:48px;font-size:15px}

  /* 抽屉菜单 */
  .mob-mask{position:fixed;inset:0;z-index:70;background:rgba(0,0,0,.45);display:none;opacity:0;transition:opacity .2s}
  .mob-mask.show{display:block;opacity:1}
  .mob-menu{position:fixed;right:0;top:0;bottom:0;width:70%;max-width:260px;z-index:80;background:#fff;transform:translateX(100%);transition:transform .25s ease;display:flex;flex-direction:column;box-shadow:-4px 0 20px rgba(0,0,0,.12)}
  .mob-menu.show{transform:translateX(0)}
  .mob-menu-hd{padding:16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-weight:700;font-size:15px}
  .mob-menu-hd button{font-size:22px;color:var(--text-3);width:32px;height:32px;display:flex;align-items:center;justify-content:center}
  .mob-menu-bd{flex:1;overflow-y:auto;padding:12px 0}
  .mob-menu-item{display:flex;align-items:center;width:100%;padding:14px 18px;font-size:14.5px;color:var(--text);background:#fff;border:none;border-bottom:1px solid var(--line-2);text-align:left}
  .mob-menu-item.danger{color:var(--risk)}
  .mob-menu-item:active{background:var(--brand-2)}
}

@media(max-width:480px){
  .brand{font-size:13px}
  .user-badge{max-width:96px}
  .stu-card .grid2{gap:9px}
  .subj .nm{width:46px;font-size:12.5px}
  .seg button{height:32px;font-size:12px}
}

/* ==================== 打印 / 导出 PDF 专用样式 ==================== */
/* 屏幕态：print-root 完全隐藏 */
.print-root{display:none}

/* 打印态：隐藏所有屏幕元素，仅渲染打印专用容器 */
@media print {
  /* @page：边距严格按需求 — 上20mm 下20mm 左10mm 右10mm */
  @page { size: A4 landscape; margin: 20mm 10mm 20mm 10mm; }
  @page :first { margin: 20mm 10mm 20mm 10mm; }
  html, body { margin: 0; padding: 0; background: #fff !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; color-adjust: exact; }
  body > *:not(.print-root) { display: none !important; }
  body.printing { background: #fff !important; padding: 0; }
  /* 📌 10-09 修：显示规则用 #printRoot id 选择器，不依赖 body.printing。
     原写法挂在 body.printing 上，而 afterprint / print 媒体变更会移除该类 ——
     典型踩坑：老师点「打印」后取消（或手机端导出 PDF），printing 类已被清掉，
     再次点击导出会得到全空白 PDF。id 选择器无状态依赖，任何时刻进入 print 媒体都能正常渲染。 */
  #printRoot { display: block !important; padding: 0; box-sizing: border-box; width: 100%; }

  .print-root { font-family: "Microsoft YaHei","PingFang SC",sans-serif; color: #1a2238; font-size: 9pt; line-height: 1.4; }

  /* CSS 重置继承：避免原主表的 th/td 大字号覆盖 */
  .print-root th, .print-root td, .print-root thead th, .print-root tbody td {
    font-size: inherit !important; font-weight: 400 !important; line-height: 1.3 !important;
  }
  .print-root * { box-sizing: border-box; }

  /* ==================== 通用 ==================== */
  a { color: inherit; text-decoration: none; }
  table { page-break-inside: auto; border-collapse: collapse !important; }
  tr { page-break-inside: avoid; page-break-after: auto; }
  .print-brand-bar { height: 6px; background: linear-gradient(90deg,#185fa5 0%,#378add 60%,#d85a30 100%); margin-bottom: 0; }

  /* 列精简：在 print 版中隐藏非关键列 */
  .print-hide-col { display: none !important; }

  /* ==================== 封面页 ==================== */
  .print-cover {
    page-break-after: always; break-after: page;
    padding: 0 4mm; position: relative; min-height: 155mm; height: 155mm;
    box-sizing: border-box; width: 100%;
  }
  .print-cover-watermark { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%) rotate(-22deg); font-size: 56pt; color: rgba(24,95,165,.07); font-weight: 700; letter-spacing: 8px; pointer-events: none; white-space: nowrap; z-index: 0; }
  .print-cover-inner { position: relative; z-index: 1; padding-top: 10mm; }
  .print-cover-brand { display: flex; align-items: center; gap: 10px; margin-bottom: 12mm; }
  .print-cover-logo { width: 30px; height: 30px; background: #185fa5; border-radius: 7px; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 16pt; font-weight: 700; }
  .print-cover-brand-name { font-size: 11pt; color: #185fa5; font-weight: 600; letter-spacing: 2px; }
  .print-cover-main { text-align: center; margin-bottom: 14mm; }
  .print-cover-eyebrow { font-size: 9pt; color: #888; letter-spacing: 6px; margin-bottom: 6mm; }
  .print-cover-title { font-size: 30pt; color: #185fa5; font-weight: 700; letter-spacing: 2px; line-height: 1.25; margin-bottom: 4mm; }
  .print-cover-subtitle { font-size: 13pt; color: #555; letter-spacing: 1px; }
  .print-cover-stu-card { border: 0.5px solid #c8d8e6; border-radius: 6px; padding: 5mm 6mm; margin: 0 auto; max-width: 150mm; background: #f5f9fd; display: grid; grid-template-columns: 1fr 1fr; column-gap: 8mm; row-gap: 3mm; }
  .print-cover-stu-row { display: flex; align-items: baseline; gap: 4mm; }
  /* 毕业高中独占一行：跨两列 */
  .print-cover-stu-row.print-cover-stu-full { grid-column: span 2; }
  .print-cover-stu-label { font-size: 10pt; color: #666; min-width: 22mm; flex: 0 0 auto; }
  .print-cover-stu-val { font-size: 12pt; color: #1a2238; font-weight: 600; }
  .print-cover-stu-val.hi { color: #185fa5; font-size: 14pt; font-weight: 700; }
  .print-cover-foot { position: absolute; bottom: 10mm; left: 4mm; right: 4mm; display: flex; justify-content: space-between; align-items: center; padding-top: 4mm; border-top: 0.5px solid #d8e3ef; font-size: 9pt; color: #666; }
  .print-cover-badge { display: inline-block; padding: 1.5mm 3mm; border-radius: 3mm; background: #fcecec; color: #a32d2d; font-size: 9pt; font-weight: 600; letter-spacing: 1px; }

  /* ==================== 主表页 ==================== */
  .print-pages { padding: 0; width: 100%; }
  .print-page-hdr { display: flex; justify-content: space-between; align-items: flex-start; padding: 0.6mm 0 1mm; border-bottom: 1.5px solid #185fa5; margin-bottom: 1.5mm; gap: 3mm; }
  .print-page-hdr-l { flex: 1; min-width: 0; }
  .print-page-hdr-brand { font-size: 6.5pt; color: #185fa5; font-weight: 600; letter-spacing: 2px; margin-bottom: 0.6mm; }
  .print-page-hdr-title { font-size: 11pt; color: #185fa5; font-weight: 700; letter-spacing: 1px; line-height: 1.15; margin-bottom: 1mm; }
  .print-page-hdr-stu { font-size: 7.5pt; color: #444; line-height: 1.3; }
  .print-page-hdr-stu b { color: #1a2238; font-weight: 600; }
  .print-page-hdr-warn { flex: 0 0 auto; max-width: 44mm; background: #fff8e6; border-left: 3px solid #d85a30; border-radius: 0 2px 2px 0; padding: 1mm 2mm; font-size: 6.5pt; color: #7a3a18; line-height: 1.3; }
  .print-page-hdr-warn b { display: block; color: #a32d2d; margin-bottom: 0.4mm; font-size: 7pt; letter-spacing: 1px; }

  /* 主表：用户要求"小五+每页多放学生"→ 字号 7pt（小五以下）+ 行高 8mm + 紧凑 padding */
  .print-body { margin-bottom: 2mm; }
  .print-table { width: 100%; border-collapse: collapse; font-size: 6.6pt; table-layout: fixed; }
  .print-table th, .print-table td { border: 0.5px solid #d8e3ef; padding: 0.3mm 0.6mm; text-align: center; vertical-align: middle; line-height: 1.1; }
  /* 数据单元格：允许必要换行，但行内不硬塞 */
  .print-table tbody td { white-space: normal; word-break: break-all; word-wrap: break-word; }
  /* 表头：行高适中 + 内容自动换行 */
  .print-table thead th { background: #185fa5 !important; color: #fff !important; font-weight: 600 !important; font-size: 6.8pt !important; border: 0.5px solid #144a85; padding: 1.2mm 0.6mm; white-space: normal; word-break: keep-all; line-height: 1.15; height: auto !important; min-height: 4mm; }
  /* 主数据行：行高 4mm 内（长文本 2 行自动增高），配合 459 行 → ≈ 12 页 */
  .print-table tbody tr { page-break-inside: avoid; }
  .print-table tbody td { padding-top: 0.5mm; padding-bottom: 0.5mm; }
  /* 偶数行斑马纹：去掉 !important，让彩色徽章（b-star-*）的 background 优先级胜出 */
  .print-table tbody tr:nth-child(even) td { background: #f5f9fd; }
  .print-table td b { color: #185fa5; font-weight: 600; }
  /* 我的入围分：用户要求红色字体（醒目显示该生分数） */
  .print-table td.cell-mine { color: #d8233a !important; font-weight: 700 !important; font-size: 7.5pt !important; }
  /* 26入围分=0 时灰色 "无公示" */
  .print-table td.s-mute { color: #9aa3b2; font-style: italic; }
  /* 26入围建议徽章（不再内嵌 HTML，直接用 td class 控制样式）*/
  .print-table td.b-star-3, .print-table td.b-star-2, .print-table td.b-star-1, .print-table td.b-star-rw, .print-table td.b-none {
    font-weight: 700; color: #fff; padding: 0.3mm 0 !important;
  }
  .print-table td.b-star-3 { background: #a32d2d !important; }
  .print-table td.b-star-2 { background: #d85a30 !important; }
  .print-table td.b-star-1 { background: #378add !important; }
  .print-table td.b-star-rw { background: #1d9e75 !important; }
  .print-table td.b-none { background: #9aa3b2 !important; }
  /* 26校测形式：单列文字版，加粗让文字清晰（用户要求"文字要看清"）*/
  .print-table td[data-col="26校测形式"] { font-weight: 600; color: #185fa5; }
  /* 文理：读取原表数据，普通样式（与屏幕主表一致）*/
  /* 26入围建议徽章 */
  .print-table .badge { display: inline-block; padding: 0.3mm 1.2mm; border-radius: 2px; font-size: 6.5pt; font-weight: 700; color: #fff; letter-spacing: 0.2px; line-height: 1.1; white-space: nowrap; }
  .print-table .b-star-3 { background: #a32d2d; }
  .print-table .b-star-2 { background: #d85a30; }
  .print-table .b-star-1 { background: #378add; }
  .print-table .b-star-rw { background: #1d9e75; }
  .print-table .b-none { background: #9aa3b2; color: #fff; padding: 0.3mm 1.2mm; border-radius: 2px; font-size: 6.5pt; }

  /* ==================== 校测形式拆分4 列（红蓝绿橙底白字） ==================== */
  .print-table .xc-th { background: #185fa5 !important; }
  .print-table .xc-h-m { background: #a32d2d !important; }   /* 表头·面试：红 */
  .print-table .xc-h-b { background: #185fa5 !important; }   /* 表头·笔试：深蓝 */
  .print-table .xc-h-d { background: #1d9e75 !important; }   /* 表头·技能：绿 */
  .print-table .xc-h-h { background: #d85a30 !important; }   /* 表头·其他：橙 */
  .print-table .xc-cell { padding: 0.5mm 0 !important; text-align: center; vertical-align: middle; }
  .print-table .xc-pill { display: inline-block; width: 6mm; height: 3.6mm; line-height: 3.6mm; border-radius: 2px; font-size: 8pt; font-weight: 700; color: #fff; text-align: center; letter-spacing: 0; }
  .print-table .xc-pill-m { background: #a32d2d; }  /* 面试红 */
  .print-table .xc-pill-b { background: #185fa5; }  /* 笔试深蓝 */
  .print-table .xc-pill-d { background: #1d9e75; }  /* 技能绿 */
  .print-table .xc-pill-h { background: #d85a30; }  /* 其他橙 */
  .print-table .xc-no { color: #c8d1de; font-size: 8pt; }

  /* ==================== 末页：老师卡 ==================== */
  .print-endpage { page-break-before: always; break-before: page; padding: 0; min-height: 155mm; box-sizing: border-box; width: 100%; }
  .print-end-h2 { text-align: center; font-size: 20pt; color: #185fa5; margin: 4mm 0 2mm; letter-spacing: 2px; font-weight: 700; }
  .print-end-sub { text-align: center; font-size: 10pt; color: #666; margin-bottom: 5mm; letter-spacing: 1px; }
  .print-disclaim { font-size: 10pt; color: #3a2a18; background: linear-gradient(90deg,#fff8e6 0%,#fff 100%); border-left: 3px solid #d85a30; border-radius: 0 4px 4px 0; padding: 3mm 4mm; margin-bottom: 5mm; line-height: 1.7; }
  .print-disclaim b { color: #a32d2d; }
  .print-teacher-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 5mm; margin-bottom: 5mm; }
  .print-teacher-card { border: 0.5px solid #d8e3ef; border-radius: 4px; overflow: hidden; background: #fff; text-align: center; }
  .print-teacher-top { height: 4mm; background: linear-gradient(90deg,#185fa5,#378add); }
  .print-teacher-avatar { width: 22mm; height: 22mm; margin: -11mm auto 0; border-radius: 50%; background: #185fa5; color: #fff; display: flex; align-items: center; justify-content: center; font-size: 14pt; font-weight: 700; border: 2px solid #fff; box-shadow: 0 2px 4px rgba(24,95,165,.2); }
  .print-teacher-name { font-size: 12pt; color: #1a2238; font-weight: 700; margin: 3mm 0 1mm; }
  .print-teacher-role { font-size: 8.5pt; color: #888; margin-bottom: 2mm; }
  .print-teacher-wx { display: inline-block; background: #f5f9fd; border: 0.5px solid #d8e3ef; border-radius: 3px; padding: 1mm 3mm; font-size: 8.5pt; color: #185fa5; font-family: Consolas,monospace; margin-bottom: 2mm; }
  .print-teacher-qr { width: 28mm; height: 28mm; margin: 0 auto 3mm; border: 0.5px solid #d8e3ef; border-radius: 3px; display: flex; align-items: center; justify-content: center; color: #9aa3b2; font-size: 7.5pt; background: #fff; overflow: hidden; }
  .print-teacher-qr img { width: 100%; height: 100%; object-fit: contain; display: block;
    /* 部分老师上传的二维码是深底浅块（反色），打印时变全黑——强制反色恢复白底深块可扫 */
    filter: invert(1);
  }
  .print-teacher-empty-body { padding: 18mm 4mm; text-align: center; color: #888; font-size: 11pt; line-height: 1.6; }
  .print-teacher-slogan { font-size: 8.5pt; color: #666; padding: 2mm 3mm 3mm; border-top: 0.5px solid #eef2f7; background: #fafbff; }
  .print-end-tip { text-align: center; font-size: 9pt; color: #888; margin-top: 4mm; padding-top: 3mm; border-top: 0.5px dashed #d8e3ef; }

  /* ==================== 页码：不再显示，让主表数据自然连续 ==================== */
  .print-page-foot, .print-page-foot-cell { display: none !important; }
  /* 隐藏旧的 fixed 页脚（也不显示）*/
  .print-footer { display: none !important; }
}
