/* 羽动青训 · 学员管理后台 */
:root{
  /* F71K-R40 语义收敛 token：绿色四档 / 强调色 / 弱化强文本（全站引用，替代散落硬编码） */
  --green-700:#1E6B4A;   /* 主色绿（= --primary） */
  --green-600:#2E7D57;   /* 常规绿（状态存活等） */
  --on-accent:#ffffff;   /* rLBrZb-R3：accent 底上的文字色（浅底时代=白） */
  --row-h:44px;   /* F71K-M1-GR4 R4-4：表格标准行高 */
  --text-soft:#565d80;   /* F71K-M1-GR4 R4-5：正文降一档，dawn 浅底 */
  --green-500:#2E9E5B;   /* 成功/强调绿 */
  --green-100:#E7F1EC;   /* 浅绿底（= --primary-light） */
  --danger-text:#C00000; /* 破坏性文字红（= --danger） */
  --warn-text:#E65100;   /* 警示橙（= --warn） */
  --muted-strong:#455A64;/* 次级强文本（深蓝灰） */

  /* ===== 设计语言 Token（阶段F F1 统一，全站引用，禁止散落硬编码色值）===== */
  /* 品牌色板 palette */
  --primary:#1E6B4A;         /* 阶段F P4 苗侗靛蓝染·沉绿加深 */
  --primary-dark:#14483A;
  --primary-light:#E7F1EC;
  --accent:#4CAF50;          /* 常规成功态保留 */
  --accent-ethnic:#B23A2F;   /* 阶段F P4 苗银/朱砂·民族强调色（主按钮hover/当前页高亮描边/关键数字强调） */
  --danger:#C00000;
  --warn:#E65100;
  --text:#333333;
  --muted:#5A6B61;
  --border:#D6E2DA;
  --bg:#F4F8F5;
  --card:#FFFFFF;
  --bg-sub:#F2F4F3;   /* F71K-R86 P1：soft 中性副背景（返回键等）浅中性灰 */
  /* 涨跌语义色（中国习惯：涨红跌绿）F1 统一 token */
  --color-up:var(--color-up);
  --color-up-bg:var(--color-up-bg);
  --color-up-border:#E8B4B4;
  --color-down:var(--green-500);
  --color-down-bg:var(--green-100);
  --color-down-border:#A8D5B9;
  /* 状态语义色（F5）：终态 / 账号存活 / 后台权限 */
  --color-terminal:#8A97A5;
  --color-terminal-bg:#EEF1F3;
  --color-live:var(--green-600);
  --color-live-bg:#E7F3EC;
  --color-access-on:var(--green-500);
  --color-access-on-bg:var(--green-100);
  --color-access-off:var(--color-up);
  --color-access-off-bg:var(--color-up-bg);
  /* 间距 spacing */
  --space-xs:4px; --space-sm:8px; --space-md:12px; --space-lg:16px; --space-xl:24px;
  /* 圆角 radius */
  --radius-sm:6px; --radius:10px; --radius-lg:16px;
  /* 阴影 shadow */
  --shadow-sm:0 1px 2px rgba(31,92,66,.06);
  --shadow:0 1px 4px rgba(31,92,66,.10);
  --shadow-lg:0 8px 30px rgba(31,92,66,.14);
  /* YQ-REQ-20260928-U1 B1 新增收敛 token：橙系背景 / 蓝系（勾选、标签、渐变、浅蓝） */
  --warn-bg:#FFF3E0;
  --blue:#3B82F6;  --blue-deep:#1A5276;  --blue-tag:#1F5FA8;
  --blue-grad:#7EB8FF;  --blue-bg:#EAF2FF;  --blue-border:#B8D4E8;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:"Microsoft YaHei","PingFang SC",sans-serif;
  color:var(--text);background:var(--bg);font-size:15px;   /* YQ-REQ-20260930-F63：正斑14→15px */
}
button{font-family:inherit;cursor:pointer;border:none;background:none}
input,select,textarea{font-family:inherit;font-size:13px;color:var(--text)}
a{text-decoration:none;color:var(--primary)}

/* 布局 */
.app{display:flex;min-height:100vh}
.layout{display:flex;min-height:100vh}   /* F71K-R8：补 .layout（index.html:28 用的是 layout 不是 app），修移动端主容器无 flex 高度约束导致内容拉不上来 */
/* YQ-REQ-20260929-F62：侧边栏改浅色（白底深字），打破老后台观感 */
.sidebar{
  width:230px;background:var(--card);color:var(--text);border-right:1px solid var(--border);
  display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:10;
}
.brand{padding:20px 20px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px}
.brand-mark{flex:0 0 auto;color:var(--primary);display:block} /* 阶段F P4 银饰几何纹(全站唯一) */
.brand-text{min-width:0}
.brand h1{font-size:17px;font-weight:700;letter-spacing:.5px;margin:0;color:var(--primary-dark)}
.brand p{font-size:12px;color:var(--muted);margin-top:4px}
.nav{flex:1;overflow-y:auto;padding:10px 0}
.nav-item{
  display:flex;align-items:center;gap:10px;padding:10px 14px;margin:2px 10px;border-radius:8px;cursor:pointer;
  color:var(--muted);font-size:14px;transition:background .15s,color .15s;
}
.nav-item:hover{background:var(--bg);color:var(--text)}
/* YQ-REQ-20260929-F62：选中项改整块浅绿圆角，去掉朱砂红左竖条 */
.nav-item.active{background:var(--primary-light);color:var(--primary-dark);font-weight:600}
.nav-item .ic{width:18px;text-align:center;font-size:15px}

.main{flex:1;margin-left:230px;padding:24px 32px 48px;min-width:0}
.main > *{max-width:1280px;margin-inline:auto}   /* F71K-R25-D1：主内容区最大宽度 1280 + 居中 */
.page-head{margin-bottom:16px}
.page-head h2{font-size:20px;color:var(--primary-dark)}
.page-head p{font-size:12px;color:var(--muted);margin-top:4px}

/* 卡片 */
.cards{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));margin-bottom:16px}
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;border:1px solid var(--border)}
.card .label{font-size:12px;color:var(--muted)}
.card .value{font-size:28px;font-weight:700;margin-top:10px;color:var(--accent-ethnic)} /* F63：主数字28px，标签与数字间距10px（原P4注释保留：朱砂红强调） */
.card .sub{font-size:12px;color:var(--muted);margin-top:4px}
.card .card-label{font-size:12px;color:var(--muted)}
.card .card-value{font-size:24px;font-weight:700;margin:6px 0 2px;color:var(--accent-ethnic)} /* 阶段F P4 关键数字朱砂红强调 */
.card .card-sub{font-size:12px;color:var(--muted)}
/* 环比箭头 + 达成进度条 */
.card-delta{display:inline-block;font-size:12px;font-weight:700;margin:2px 0 4px;padding:1px 7px;border-radius:10px}
.card-delta.up{color:var(--color-up);background:var(--color-up-bg)} /* 涨=红(中国习惯) */
.card-delta.down{color:var(--color-down);background:var(--color-down-bg)} /* 跌=绿(中国习惯) */
.card-delta.flat{color:var(--muted);background:var(--color-terminal-bg)}
.card-delta.na{color:var(--muted);background:transparent;padding-left:0}
.card-prog{display:flex;align-items:center;gap:6px;margin-top:6px}
.card-prog-bar{flex:1;height:5px;border-radius:3px;background:var(--bg);overflow:hidden}
.card-prog-bar i{display:block;height:100%;border-radius:3px;background:var(--primary)}
.card-prog span{font-size:12px;color:var(--muted);white-space:nowrap}
/* 看板KPI卡 = 行动入口：可点击卡片 */
.card.clickable{cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s}
.card.clickable:hover{border-color:var(--primary);box-shadow:var(--shadow);transform:translateY(-1px)}
.card.clickable .card-label::after{content:' ›';color:var(--primary);font-weight:700}
/* 学员档案筛选胶囊（看板下钻） */
.stu-chip{display:inline-flex;align-items:center;gap:6px;margin-left:8px;padding:5px 10px;border-radius:20px;background:var(--primary);color:var(--card);font-size:12px;cursor:default}
.stu-chip b{cursor:pointer;font-size:14px;line-height:1;padding:0 2px;opacity:.85}
.stu-chip b:hover{opacity:1}
/* 教练产能榜 / 班型经营榜 */
.rank-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:4px}
.rank-grid .panel{margin-bottom:0}
.rank-insight{display:inline-block;margin-left:10px;padding:2px 10px;border-radius:12px;background:var(--primary);color:var(--card);font-size:12px;font-weight:600;vertical-align:middle}
.panel-tag{margin-left:8px;padding:1px 8px;border-radius:10px;background:var(--muted);color:var(--card);font-size:12px;font-weight:600;vertical-align:middle}
.rank-row{display:grid;grid-template-columns:84px 1fr auto;grid-template-rows:auto auto;gap:2px 10px;align-items:center;padding:8px 6px;border-radius:8px;cursor:pointer;transition:background .12s}
.rank-row:hover{background:var(--bg)}
.rank-name{font-weight:600;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rank-bar{grid-column:2;grid-row:1/3;height:18px;border-radius:9px;background:var(--color-terminal-bg);overflow:hidden}
.rank-bar i{display:block;height:100%;border-radius:9px;background:linear-gradient(90deg,var(--primary),var(--blue-grad))}
.rank-val{grid-column:3;grid-row:1;font-weight:700;font-size:13px;color:var(--primary-dark);text-align:right;white-space:nowrap}
.rank-sub{grid-column:3;grid-row:2;font-size:12px;color:var(--muted);text-align:right;white-space:nowrap}
@media(max-width:899px){.rank-grid{grid-template-columns:1fr}}
/* 准学员已转正标签 */
.tag-paid{display:inline-block;padding:2px 8px;border-radius:10px;background:var(--color-live-bg);color:var(--color-live);font-size:12px;font-weight:600}
/* 时间维度切换器 */
.range-switch{display:inline-flex;gap:0;margin-bottom:16px;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--card)}
.range-btn{border:none;background:transparent;padding:7px 18px;font-size:13px;color:var(--muted);cursor:pointer;transition:all .15s}
.range-btn+.range-btn{border-left:1px solid var(--border)}
.range-btn:hover{color:var(--primary)}
.range-btn.active{background:var(--primary);color:var(--card);font-weight:600}
/* 异常预警条（看板置顶） */
.alert-strip{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}
.alert-strip.ok{opacity:.8}
.alert-item{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:10px;border:1px solid var(--border);background:var(--card);cursor:pointer;transition:all .15s;font-size:13px}
.alert-item:hover{border-color:var(--primary);box-shadow:var(--shadow);transform:translateY(-1px)}
.alert-item.red .alert-dot{background:var(--danger)}
.alert-item.yellow .alert-dot{background:var(--warn)}
.alert-item.ok .alert-dot{background:var(--color-down)}
.alert-dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.alert-t{color:var(--text)}
.alert-item.red .alert-t{color:var(--danger)} /* 预警红 token 化 */
.alert-n{font-weight:700;color:var(--primary-dark);min-width:20px;text-align:right}
.alert-go{color:var(--muted)}
/* 数据看板 · 今日待办 */
.todo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.todo-item{display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--border);border-radius:10px;cursor:pointer;background:var(--card);transition:all .15s}
.todo-item:hover{border-color:var(--primary);box-shadow:var(--shadow);transform:translateY(-1px)}
.todo-item .todo-n{font-size:20px;font-weight:700;color:var(--primary-dark);min-width:34px}
.todo-item .todo-t{font-size:13px;color:var(--text);flex:1}
.todo-item .todo-go{color:var(--muted)}
.card.trend .value{color:var(--danger)}

/* 面板 */
.panel{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--border);margin-bottom:16px}
.panel-head{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--border)}
.panel-head h3{font-size:15px;color:var(--primary-dark)}
.panel-body{padding:16px 20px;overflow-x:auto}

/* 按钮 */
/* F63：去悬停变色与阴影位移，统一圆角，高度≥34px */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border-radius:8px;
  font-size:14px;font-weight:600;transition:background .15s;background:var(--primary);color:var(--card);min-height:34px;
}
.btn:hover{background:var(--primary)} /* F63：悬停不再变朱砂红 */
.btn.sm{padding:5px 10px;font-size:12px;border-radius:6px}
.btn.ghost{background:var(--card);color:var(--primary);border:1px solid var(--primary)}
.btn.ghost:hover{background:var(--primary-light)}
.btn.danger{background:var(--card);color:var(--danger);border:1px solid var(--color-up-border)}
.btn.danger:hover{background:var(--color-up-bg)}
.btn.disabled{opacity:.5;pointer-events:none}
.btn.full{width:100%;justify-content:center}
.sidebar-actions{padding:12px 14px;display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--border)}
.sidebar-actions .btn.full{font-size:12px;padding:8px 10px}
/* F71K-R87-C3 D7'：操作列统一容器（右对齐、不换行、按钮等宽） */
.ops{display:inline-flex;gap:6px;align-items:center;justify-content:flex-end;white-space:nowrap}
.ops .btn{min-width:56px;justify-content:center}
td.ops-cell,th.ops-col{text-align:right}
.btn[disabled]{opacity:.45;cursor:not-allowed;pointer-events:none}
/* F71K-R87-C3 D6'：只读字段（学号/跟进人等）统一样式，复制按钮内联 */
.readonly-val{display:flex;align-items:center;gap:6px;min-height:36px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg-sub);color:var(--muted-strong);word-break:break-all}
.readonly-val .code-copy{flex:0 0 auto}

/* 表格 */
table{width:100%;border-collapse:collapse;font-size:13.5px}
/* YQ-REQ-20260930-F63：表头浅灰绿底深灰字（保留吸顶），行高加大，划过高亮 */
th,td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--border);vertical-align:top}
td.num,th.num{white-space:nowrap}   /* F71K-R25-D2：只给数字列保留不换行 */
th{background:var(--th-bg);color:var(--th-fg);font-weight:600;position:sticky;top:0;white-space:nowrap}   /* F71K-R53C：全局列头禁止竖排 */
/* ===== F71K-R53C：逐页布局整改新增类 ===== */
.col-name{white-space:nowrap}   /* 姓名/员工列 */
.col-key{white-space:nowrap}    /* 课酬/短标签列 */
.col-summary{width:52%}         /* 课酬「金额（一眼看懂）」吸收列 */
.sum-row{white-space:nowrap}   /* F71K-R56：课酬摘要按级别分行，行内不折行 */
.cell-chips{display:flex;flex-wrap:wrap;gap:4px 8px}   /* F71K-R56补做：多段内容chip流式换行 */
.cell-chips .chip{white-space:nowrap}
.td-nowrap{white-space:nowrap}  /* 消课状态 / 日志时间用户IP */
.mini-table th{white-space:nowrap;font-size:12px}
.mini-table td{padding:6px 8px}
.stu-tight td{padding:6px 8px}
.stu-tight .badge{display:inline-flex;margin:0 2px;white-space:nowrap}
.campus-abbr{min-width:22px;text-align:center}
.sal-tight td{padding:9px}
.parent-contact .pc-name{font-weight:600}
.parent-contact .pc-rel{color:var(--muted);font-size:12px}
.parent-contact .pc-phone{color:var(--primary);white-space:nowrap}
.parent-contact .pc-school{font-size:11px;color:var(--muted);line-height:1.4;white-space:normal}
.pros-tbl td,.renew-tbl td,.pay-tbl td,.recruit-cm td{padding:9px 12px}   /* 招生漏斗行密度 */

tbody tr:hover{background:var(--row-hover)}
tbody tr:nth-child(even){background:var(--bg)}
td .num{font-variant-numeric:tabular-nums}
.muted{opacity:.8;color:var(--muted);font-size:12px}
.badge{display:inline-block;padding:2px 10px;border-radius:20px;font-size:12px;font-weight:600}
.badge.green{background:var(--color-live-bg);color:var(--color-live)}   /* rLBrZb-R2 GR2-2：fg 随主题亮/深字配对 */
.badge.red{background:var(--color-up-bg);color:var(--danger)}
.badge.gray{background:var(--color-terminal-bg);color:var(--text)}   /* rLBrZb-R3 GR3-4 */
/* rLBrZb-R3 GR3-3：表单控件平铺规则（禁止嵌套；--card/--text/--border 已随主题变化） */
input,select,textarea{background:var(--card);color:var(--text);border:1px solid var(--border)}
.badge.orange{background:var(--warn-bg);color:var(--warn)}
.warn-red{color:var(--danger);font-weight:700}
.warn-green{color:var(--color-down);font-weight:700} /* 阶段F P1：正常值绿 token 化 */
.table-wrap{max-height:none;overflow:auto;border:1px solid var(--border);border-radius:8px}

/* 表单 */
.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}
.field.span2{grid-column:span 2}
.field.full{grid-column:1/-1}
@media(max-width:899px){.field.span2,.field.full{grid-column:auto}}  /* F71K-R87-C2 D0：模块化表单网格工具类 */
.field{display:flex;flex-direction:column;gap:5px}
.field label{font-size:12px;color:var(--muted);font-weight:600}
.field input,.field select,.field textarea{
  padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--card);transition:border .15s;
}
/* YQ-REQ-20260930-F65：输入框清晰边框+聚焦光环 */
.field input,.field select,.field textarea{border:1px solid var(--border);background:var(--card)}
.field input::placeholder,.field textarea::placeholder{color:var(--muted)}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(30,107,74,.12)}
.field textarea{min-height:60px;resize:vertical}
.form-actions{display:flex;gap:10px;margin-top:16px}
.hint{font-size:12px;color:var(--muted);margin-top:6px}

/* 筛选 */
.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:14px}
.toolbar input,.toolbar select{padding:7px 10px;border:1px solid var(--border);border-radius:8px;background:var(--card)}
.toolbar input:focus,.toolbar select:focus{outline:none;border-color:var(--primary)}

/* 空态/加载 */
.empty{text-align:center;padding:40px 20px;color:var(--muted)}
.empty .big{font-size:40px;margin-bottom:8px;opacity:.4}
.spinner{width:26px;height:26px;border:3px solid var(--primary-light);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite;margin:40px auto}
@keyframes spin{to{transform:rotate(360deg)}}

/* toast */
#toast{
  position:fixed;top:18px;right:22px;z-index:99;min-width:200px;max-width: 360px;
  background:var(--primary-dark);color:var(--card);padding:12px 18px;border-radius:8px;
  box-shadow:0 4px 12px rgba(0,0,0,.2);opacity:0;transform:translateY(-8px);
  transition:all .25s;font-size:13px;pointer-events:none;
}
#toast.show{opacity:1;transform:translateY(0)}
#toast.err{background:var(--danger)}

/* 弹窗 */
.modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.4);display:none;align-items:flex-start;justify-content:center;z-index:50;padding:40px 16px;overflow-y:auto}
#modal.open .modal-mask{display:flex}
.modal{position:relative;background:var(--card);border-radius:12px;width:100%;max-width: 760px;box-shadow:0 8px 30px rgba(0,0,0,.25);will-change:transform}
.modal-head{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border);cursor:move;user-select:none}
.modal-head h3{font-size:16px;color:var(--primary-dark)}
.modal-close{font-size:22px;color:var(--muted);line-height:1;padding:4px}
.modal-close:hover{color:var(--danger)}
.modal-body{padding:20px;max-height:70vh;overflow-y:auto}
.modal-foot{padding:14px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px}

/* 图表占位 */
.chart-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:1279px){.chart-row{grid-template-columns:1fr}}

/* ===== 响应式 =====

/* K-2：删除 900-1279px 收窄为图标条的平板块（图标已随 K-1 移除，该块会导致侧栏空白条），900-1279px 沿用 ≥1280px 完整文字侧栏 */

/* 手机：抽屉式侧边栏 + 全宽内容 */
@media(max-width:899px){
  .menu-btn{display:none}   /* F71K-R8：去左侧抽屉，汉堡键手机也隐藏 */
  .sidebar{display:none}   /* F71K-R8：去左侧抽屉菜单（不再 translateX 抽屉） */
  .main{margin-left:0;padding:14px 12px}
  .topbar{margin-left:0}
  .side-mask.show{display:block}
  .page-head h2{font-size:18px}
  .cards{grid-template-columns:1fr;gap:10px}
  .card{padding:14px 16px}
  .card .value{font-size:21px}
  .card .card-value{font-size:21px}
  .todo-grid{grid-template-columns:1fr}
  .panel-head{padding:12px 14px}
  .panel-head h3{font-size:14px}
  .panel-body{padding:12px 10px}
  .form-grid{grid-template-columns:1fr;gap:12px}
  .perm-grid{grid-template-columns:repeat(2,1fr)}
  .form-sec{padding:12px}
  .toolbar{gap:8px}
  .topbar{padding:0 10px;gap:8px}
  .topbar .uname{max-width:72px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .topbar #topbarUser{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}   /* F71K-R7-B：姓名区可收缩截断 */
  .topbar .topbar-camp{display:none}   /* F71K-R7-B：手机不点名校区（缩短顶栏） */
  .topbar .logout{flex:none}   /* F71K-R7-B：退出登录保证永不被压缩/挤出 */
  .topbar .campus-switch,.topbar #topbarUser,.topbar .logout{display:none}   /* F71K-R8：顶栏只留标题 */
  .top-title{display:block}   /* F71K-R8：手机顶栏标题 */
  .main-wrap{flex:1;min-height:0;display:flex;flex-direction:column}   /* F71K-R8：主容器可滚不被固定底栏盖 */
  .main{flex:1;min-height:0;overflow-y:auto}   /* F71K-R8：内容在视口内滚动 */
  .campus-switch .seg-lab{display:none}
  .campus-switch select{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .modal-mask{padding:16px 10px}
  .modal{max-height:92vh;display:flex;flex-direction:column}
  .modal-body{max-height:none;flex:1}
  .modal-head{padding:14px 16px}
  .modal-foot{padding:12px 16px}
  .table-wrap{max-height:100%}
  .chart-row{grid-template-columns:1fr}
  .login-card{width:auto;max-width:92%;padding:34px 24px;margin:0 12px}
  .login-card h1{font-size:21px}
  /* K-3：手机端菜单改为两列方格按键（APP式）；R-3：侧栏是白底，改用浅灰边+浅底，选中态显式写回（原 rgba(255,255,255,*) 在白底上等于隐形） */
  .sidebar .nav-group-body{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;padding:2px 12px 10px}
  .sidebar .nav-item,.sidebar .nav-group .nav-item{min-height:56px;border:1px solid var(--border);border-radius:10px;justify-content:center;text-align:center;padding:8px 6px;background:var(--bg);box-sizing:border-box;color:var(--text)}
  .sidebar .nav-item.active,.sidebar .nav-group .nav-item.active{background:var(--primary-light);border-color:var(--primary);color:var(--primary-dark);font-weight:600}
  .sidebar .nav-item:active,.sidebar .nav-group .nav-item:active{background:var(--primary-light);transform:scale(.96)}
  .sidebar .nav-group-head{padding:12px 20px 4px}
  /* R3-4：方格内角标改右上角定位，不与文字挤成一坨 */
  .sidebar .nav-item{position:relative}
  .sidebar .nav-item .nav-badge{position:absolute;top:5px;right:6px;margin-left:0 !important}
}

/* 超小屏 */
@media(max-width:599px){
  .topbar .uname{max-width:72px}
  .campus-switch select{max-width: 110px}
  .perm-grid{grid-template-columns:1fr}
}

/* ===== 登录页 ===== */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--primary-dark),var(--color-live) 55%,var(--color-live));}
.login-card{background:var(--card);border-radius:16px;padding:40px 38px;width:360px;box-shadow:0 20px 50px rgba(0,0,0,.25);}
.login-card h1{font-size:24px;color:var(--primary-dark);margin:0 0 4px;text-align:center}
.login-card .sub{color:var(--muted);text-align:center;margin-bottom:28px;font-size:13px}
.login-card .field{margin-bottom:16px}
.login-card label{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}
.login-card input{width:100%;padding:11px 12px;border:1px solid var(--border);border-radius:8px;font-size:14px;box-sizing:border-box}
.login-card input:focus{outline:none;border-color:var(--color-live);box-shadow:0 0 0 3px rgba(46,125,87,.12)}
.login-card .btn{width:100%;justify-content:center;margin-top:6px;padding:12px}
.login-card .err{margin-top:12px;color:var(--danger);font-size:13px;text-align:center}
.login-card .tip{margin-top:18px;text-align:center;color:var(--muted);font-size:12px}

/* 角色/状态徽章 */
.badge{padding:2px 8px;border-radius:10px;font-size:12px;display:inline-block}
.badge.green{background:var(--color-live-bg);color:var(--color-live)} /* 正常态绿 token 化 */
.badge.gray{background:var(--border);color:var(--text)}   /* rLBrZb-R3 GR3-4 */
.badge.orange{background:var(--warn-bg);color:var(--warn)}

/* 顶栏用户信息 */
.topbar{display:flex;align-items:center;gap:10px;padding:0 16px;height:52px;background:var(--card);border-bottom:1px solid var(--border);font-size:13px;color:var(--muted);margin-left:230px}
.top-title{display:none}   /* F71K-R8：手机顶栏标题元素，桌面不显示 */
.topbar-spacer{flex:1}
.topbar .uname{font-weight:600;color:var(--primary-dark)}
.topbar .logout{margin-left:6px;color:var(--danger);cursor:pointer;white-space:nowrap}
.topbar .logout:hover{text-decoration:underline}
/* 汉堡菜单按钮（桌面隐藏，手机显示） */
.menu-btn{display:none;width:38px;height:38px;border-radius:8px;font-size:20px;color:var(--primary-dark);background:var(--card);border:1px solid var(--border);align-items:center;justify-content:center;flex:none}
.menu-btn:hover{background:var(--primary-light)}
/* 手机抽屉侧边栏遮罩 */
.side-mask{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:9;display:none}
/* 校区选择 */
.campus-switch{margin-right:16px}
.campus-switch select{border:1px solid var(--border);border-radius:6px;padding:4px 8px;font-size:13px}

/* 权限打勾面板 */
.form-sec{margin-top:16px;padding:14px;background:var(--bg);border:1px solid var(--primary-light);border-radius:8px}
.form-sec .sec-label{font-weight:600;color:var(--primary-dark);margin-bottom:10px;font-size:14px}
.perm-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.perm-item{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text);cursor:pointer;padding:4px 6px;border-radius:6px}
.perm-item:hover{background:var(--primary-light)}
.perm-item input{width:auto;accent-color:var(--color-live)}
.form-sec .hint{margin-top:10px;color:var(--muted);font-size:12px}
/* 账号列表权限列 */
.perm-cell{font-size:12px;color:var(--muted);max-width: 220px;line-height:1.5}

/* 修复：汉堡按钮在手机端显示（需置于.menu-btn基础display:none之后才生效） */
@media(max-width:899px){.menu-btn{display:none}}   /* F71K-R8：汉堡键手机隐藏（去抽屉） */

/* 修复：手机端防止表格把容器撑宽，强制容器内横向滚动 */
.main-wrap{min-width:0;width:100%}
@media(max-width:899px){
  .main-wrap{min-width:0;width:100%;max-width:100%;overflow-x:hidden}
  .main{min-width:0}
  .table-wrap{width:100%;max-width:100%;min-width:0}
}

/* 修复：手机端权限网格2列 + 弹窗内容可滚动（置于基础样式之后生效） */
@media(max-width:899px){
  .perm-grid{grid-template-columns:repeat(2,1fr)}
  .modal-body{max-height:none;flex:1;overflow-y:auto}
  .modal{max-height:92vh;display:flex;flex-direction:column}
}
@media(max-width:599px){.perm-grid{grid-template-columns:1fr}}

/* "其他"下拉：选中后显示具体名称输入框 */
.other-field{display:flex;flex-direction:column;gap:6px}
.other-field select{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--card);font-size:13px}
.other-field input{width:100%;box-sizing:border-box;padding:8px 10px;border:1px solid var(--primary);border-radius:8px;background:var(--bg);font-size:13px}
.other-field input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px rgba(46,125,87,.12)}

/* 学员可搜索选择器 */
.ss-wrap{position:relative;width:100%}
.ss-input{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--card);font-size:13px}
.ss-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px rgba(46,125,87,.12)}
.ss-list{position:absolute;top:100%;left:0;right:0;margin-top:2px;max-height:340px;overflow-y:auto;background:var(--card);border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 18px rgba(0,0,0,.12);z-index:999;display:none}
.ss-list.open{display:block}
.ss-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;cursor:pointer;font-size:13px;border-bottom:1px solid var(--border)}
.ss-item:hover{background:var(--primary-light)}
.ss-left{display:flex;flex-direction:column;gap:2px;min-width:0}
.ss-right{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex-shrink:0}
.ss-name{font-weight:600;font-size:14px;color:var(--text);white-space:nowrap}
.ss-sub{font-size:12px;color:var(--muted);white-space:nowrap}
.ss-hours{font-size:13px;font-weight:700;white-space:nowrap}
.ss-phone{font-size:12px;color:var(--muted);white-space:nowrap}
.ss-empty{padding:10px 12px;color:var(--muted);font-size:12px;text-align:center}
/* 学员档案：完整展开（不设滚动高度限制） */
.table-wrap.stu-full{max-height:none}

/* 批量消课：可搜索多选学员列表 */
.bc-list{border:1px solid var(--border);border-radius:8px;max-height:240px;overflow-y:auto;margin-top:4px;background:var(--card)}
.bc-item{display:flex;align-items:center;gap:8px;padding:7px 12px;cursor:pointer;font-size:13px}
.bc-item:hover{background:var(--primary-light)}
.bc-item input{accent-color:var(--primary);cursor:pointer}
.bc-name{font-weight:600;color:var(--text)}
.bc-sub{font-size:12px;color:var(--muted)}
.bc-empty{padding:10px 12px;color:var(--muted);font-size:12px;text-align:center}

.bc-count{color:var(--primary);font-weight:600}
.bc-toolbar{display:flex;gap:8px;margin-top:6px;align-items:center}
.bc-toolbar .btn.sm{white-space:nowrap;flex-shrink:0}
.bc-item.bc-checked{background:var(--primary-light);box-shadow:inset 3px 0 0 var(--primary)}
.bc-item.bc-checked .bc-name{color:var(--primary)}

/* 教练工资 · 按天查询区块标题 */
.sec-title{margin:12px 0 6px;font-size:13px;font-weight:600;color:var(--text)}

/* 编辑课酬标准 · 分档行 */
.pay-sched-row{display:flex;align-items:center;gap:6px;padding:5px 0;flex-wrap:wrap}
.pay-sched-row .pay-rng{width:86px;font-weight:600;color:var(--text);font-size:13px}
.pay-sched-row label{font-size:12px;color:var(--muted)}
.pay-sched-row .pay-inp{width:64px;padding:4px 6px;border:1px solid var(--border);border-radius:6px;font-size:13px}
.pay-sched-row .pay-inp:focus{outline:none;border-color:var(--primary)}
/* 阶段D S1：提成类别编辑行 */
.cc-row{display:flex;align-items:center;gap:6px;padding:5px 0;flex-wrap:wrap}
.cc-row label{font-size:12px;color:var(--muted)}
.cc-row .pay-inp{padding:4px 6px;border:1px solid var(--border);border-radius:6px;font-size:13px}

/* 招生管理 · 标签页 */
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px;padding:6px;background:var(--bg);border-radius:10px;border:1px solid var(--border)}
.tab-btn{padding:8px 18px;border:none;border-radius:8px;background:transparent;color:var(--muted);font-size:13px;font-weight:600;cursor:pointer;transition:all .15s}
.tab-btn:hover{background:var(--primary-light);color:var(--primary-dark)}
.tab-btn.active{background:var(--primary);color:var(--card);box-shadow:0 2px 8px rgba(46,125,87,.28)}
.tab-btn.off{opacity:.45}
.tab-n{display:inline-block;margin-left:4px;font-size:12px;opacity:.7}

/* ===== 整体视觉精修（交付前统一优化） ===== */
/* 滚动条美化 */
*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}
*::-webkit-scrollbar{width:8px;height:8px}
*::-webkit-scrollbar-thumb{background:var(--border);border-radius:8px}
*::-webkit-scrollbar-thumb:hover{background:var(--primary)}

/* 按钮层级与动效统一（F63：阴影位移全部移除） */
.btn{box-shadow:none;transition:background .15s}
.btn:hover{box-shadow:none;transform:none}
.btn:active{transform:none;box-shadow:none}
.btn.ghost{background:var(--card);border:1px solid var(--primary)}
.btn.ghost:hover{background:var(--primary-light);box-shadow:none;transform:none}
.btn.danger{border:1px solid var(--danger)}
.btn.danger:hover{background:var(--color-up-bg);box-shadow:none;transform:none}
.btn.sm:hover{transform:none}

/* 卡片微交互 */
.card{transition:box-shadow .2s,border-color .2s}
.card:hover{box-shadow:0 4px 16px rgba(31,92,66,.14);border-color:var(--border)}
.card .card-value{color:var(--accent-ethnic)} /* 阶段F P4 关键数字朱砂红(覆盖精修段) */
.card .card-sub{color:var(--muted)}

/* 面板悬浮感 */
.panel{transition:box-shadow .2s}
.panel:hover{box-shadow:0 3px 14px rgba(31,92,66,.10)}

/* 表格细节 */
th{padding:11px 12px;letter-spacing:.4px;border-bottom:1px solid var(--border)}
tbody tr{transition:background .12s}
td.num{color:var(--primary-dark);font-weight:600}
td.warn-red{font-weight:700}
td.warn-green{font-weight:700}
.table-wrap{border-radius:10px;box-shadow:inset 0 1px 2px rgba(0,0,0,.02)}

/* 表单控件统一高度与聚焦态 */
.field input,.field select,.field textarea,
.toolbar input,.toolbar select,
.ss-input,.other-field select,.other-field input{
  height:36px;box-sizing:border-box;
}
.field textarea{height:auto;min-height:60px}
.field input:focus,.field select:focus,.field textarea:focus,
.toolbar input:focus,.toolbar select:focus,.ss-input:focus,
.other-field input:focus{
  border-color:var(--primary);box-shadow:0 0 0 3px rgba(46,125,87,.12)
}
.field label{color:var(--muted);letter-spacing:.2px}

/* 空状态统一增强 */
.empty{padding:44px 20px;color:var(--muted);line-height:1.8}

/* 标签页微调 */
.tabs{box-shadow:inset 0 1px 2px rgba(0,0,0,.02)}
.tab-btn{transition:all .15s}

/* 标题层级 */
.page-head h2{letter-spacing:.4px}
.panel-head h3{font-weight:700;letter-spacing:.3px}

/* 提示条统一（浅绿底+左边条） */
/* YQ-REQ-20260930-F65：提示条不再像输入框——灰底白字、去绿杠，加信息图标 */
.hint{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px 12px;color:var(--muted);line-height:1.6}
.panel .hint:not(.hint-plain)::before,.form-sec .hint::before{content:'ⓘ ';color:var(--accent-sky);font-weight:700;margin-right:2px}
.hint.hint-plain{background:none;border:none;padding:0}
/* 徽章对齐 */
.badge{vertical-align:middle}

/* 侧边栏导航增强（F62：active 竖条已废，改浅绿圆角块） */
.nav-item{font-weight:500}
.nav-item.active{font-weight:600}
.brand{border-bottom-color:var(--border)}

/* 登录页动效与细节 */
.login-card{animation:fadeUp .4s ease}
@keyframes fadeUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.login-card .btn{transition:all .2s}
.login-card .btn:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(46,125,87,.30)}
.login-card input{transition:border .2s,box-shadow .2s}

/* 数据看板今日待办 */
.todo-item{border-color:var(--border)}
.todo-item:hover{border-color:var(--primary);box-shadow:0 4px 14px rgba(31,92,66,.14)}

/* ===== 表头点击排序 ===== */
.sort-th{cursor:pointer;user-select:none;white-space:nowrap}
.sort-th:hover{background:var(--primary);color:var(--card)}
.sort-th.active{background:var(--primary);color:var(--card)}
.sort-arrow{font-size:12px;opacity:.75;margin-left:2px}

/* ===== 学员档案 · 移动端卡片式列表（试点，仅 .stu-full） ===== */
@media (max-width:899px) {
  .stu-full table, .stu-full tbody, .stu-full thead { display: block; width: 100%; }
  .stu-full thead { display: none; }
  .stu-full tbody { padding: 0; }
  .stu-full tr {
    display: block;
    border: 1px solid var(--border);
    border-radius: 12px;
    padding: 10px 12px;
    margin: 0 0 10px 0;
    background: var(--card);
    box-shadow: 0 1px 3px rgba(16,42,67,.05);
  }
  .stu-full td {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 3px 0;
    border: none;
    font-size: 13px;
  }
  /* 统一 label 宽度并右对齐，值左对齐，整卡对齐整齐 */
  .stu-full td::before {
    content: attr(data-label);
    color: var(--color-terminal);
    font-size: 12px;
    flex: 0 0 78px;
    margin-right: 8px;
    text-align: right;
    overflow: hidden;
    white-space: nowrap;
  }
  .stu-full td.stu-name {
    font-size: 17px;
    font-weight: 700;
    color: var(--primary);
    margin-bottom: 2px;
  }
  .stu-full td.stu-name::before { display: none; }
  .stu-full td.remain {
    font-size: 16px;
    font-weight: 700;
  }
  .stu-full td[data-label="校区"], .stu-full td[data-label="学员状态"], .stu-full td[data-label="身份证"] { display: none; }
  .stu-full td.stu-ops {
    display: flex;
    gap: 8px;
    margin-top: 4px;
    border-top: 1px dashed var(--border);
    padding-top: 8px;
  }
  .stu-full td.stu-ops::before { display: none; }
  .stu-full td.stu-ops .btn { flex: 0 0 auto; }
}
/* ===== 顶部视角切换（组织单元下拉） ===== */
.campus-seg{display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--card);flex:0 0 auto;white-space:nowrap}
.seg-lab{font-size:12px;color:var(--muted);padding:0 4px 0 10px;font-weight:600;flex:0 0 auto}
.seg-sel{border:none;background:var(--card);padding:5px 10px 5px 2px;font-size:13px;color:var(--text);height:32px;outline:none;cursor:pointer;max-width: 240px;font-family:inherit}
.campus-switch{flex:0 0 auto}
.campus-seg .seg-btn{border:none;background:var(--card);padding:5px 12px;font-size:13px;cursor:pointer;color:var(--muted);border-right:1px solid var(--border);white-space:nowrap}
.campus-seg .seg-btn:last-child{border-right:none}
.campus-seg .seg-btn:hover{background:var(--primary-light)}
.campus-seg .seg-btn.active{background:var(--primary);color:var(--card);font-weight:600}
@media (max-width:899px){
  .campus-seg .seg-btn{padding:4px 8px;font-size:12px;white-space:nowrap}
}

/* 教练多校区勾选（教练盘） */
.multi-camps{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.camp-chk{display:inline-flex;align-items:center;gap:4px;padding:6px 10px;border:1px solid var(--border);border-radius:6px;cursor:pointer;background:var(--bg);font-size:13px;user-select:none;transition:all .15s}
.camp-chk input{margin:0;accent-color:var(--blue)}
.camp-chk:has(input:checked){border-color:var(--blue);background:var(--blue-bg);color:var(--blue);font-weight:500}

/* 账号多角色勾选 */
.role-multi{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.role-chk{display:inline-flex;align-items:center;gap:4px;padding:6px 10px;border:1px solid var(--border);border-radius:6px;cursor:pointer;background:var(--bg);font-size:13px;user-select:none;transition:all .15s}
.role-chk input{margin:0;accent-color:var(--blue)}
.role-chk:has(input:checked){border-color:var(--blue);background:var(--blue-bg);color:var(--blue);font-weight:500}

/* 学员档案：中宽屏保证横向滚动可见"操作"列（修复华为浏览器等溢出截断） */
@media(min-width:900px){
  .table-wrap.stu-full{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .table-wrap.stu-full table{min-width:980px}
}

.date-grp td{background:var(--blue-bg);border-top:2px solid var(--blue-border);padding:7px 12px;font-size:12px;}
.date-grp-tag{font-weight:700;color:var(--blue-tag);letter-spacing:.5px;}

/* ===== IA-A3 分组导航（六组折叠，参照 8006 运动家分组侧边栏）===== */
.nav-group{margin-bottom:2px}
.nav-group-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:10px 20px 6px;cursor:pointer;user-select:none;
  font-size:12px;font-weight:600;   /* K-4：去掉 letter-spacing:1px 与 text-transform:uppercase（中文无大小写意义，字被拉开是怪样根源）；灰色、12px 保留 */
  color:var(--muted);
  padding-top:8px;padding-bottom:8px;
}
.nav-group-head:hover{color:var(--text)}
.nav-arrow{
  font-size:12px;transition:transform .18s ease;   /* F63：全站最小12px */
  display:inline-block;opacity:.7;
}
.nav-group.collapsed .nav-arrow{transform:rotate(-90deg)}
.nav-group-body{display:block}
.nav-group.collapsed .nav-group-body{display:none}
.nav-group .nav-item{padding:9px 20px 9px 22px;font-size:13.5px}

/* K-2：删除 900-1279px 组标题退化为分隔线的平板块（随 K-1 一并移除） */
/* 手机抽屉：正常分组展示 */
@media(max-width:899px){
  .nav-group-head{padding:12px 20px 6px}
}

/* ===== F71K-R53C：权限面板分组改为行式流式（组名定宽72px + checkbox横向wrap，≤899px降纵向） ===== */
.perm-grid-grouped{display:flex;flex-direction:column;gap:8px}
.perm-group{
  display:flex;align-items:flex-start;gap:12px;padding:8px 12px;
  border:1px solid var(--primary-light);border-radius:8px;
  background:var(--card);
}
.perm-group-label{
  flex:0 0 72px;font-size:12px;font-weight:600;color:var(--primary-dark);
  padding-top:4px;border-bottom:0;margin:0;letter-spacing:.5px;
}
.perm-group-items{display:flex;flex-wrap:wrap;gap:2px 16px;flex:1}
.perm-item{display:inline-flex;align-items:center;gap:6px;font-size:13px;padding:3px 0;cursor:pointer;white-space:nowrap}
.perm-item input{accent-color:var(--blue);margin:0}
.perm-item span{color:var(--text)}
@media(max-width:899px){.perm-group{flex-direction:column;gap:4px}.perm-group-label{flex:0 0 auto}}

/* ===== IA-C10 分页条 ===== */
.pager{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pager .btn[disabled]{opacity:.4;cursor:not-allowed}

/* ===== IA-C9 学员360°画像网格 ===== */
.kv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px 12px}
.kv-grid .kv{display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--primary-light);border-radius:8px;padding:8px 10px}
.kv-grid .kv .k{font-size:12px;color:var(--muted)}
.kv-grid .kv b{font-size:14px;color:var(--primary-dark);margin-top:2px;word-break:break-all}
@media(max-width:899px){.kv-grid{grid-template-columns:repeat(2,1fr)}}

/* =========================================================
   阶段F 视觉改版（F1-F6）
   ========================================================= */

/* ---- F2 面包屑 ---- */
.crumb{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);margin-bottom:10px;flex-wrap:wrap}
.crumb .sep{color:var(--muted)}   /* F71K-M1-GR4 R4-5：分隔符不用半透明 border 色（实测 15-19:1 刺眼） */
.crumb .grp{color:var(--muted);font-weight:500}
.crumb .cur{color:var(--primary-dark);font-weight:700}

/* ---- F4 跨校区对比：指标卡 + 图表 ---- */
.cmp-cards{display:grid;gap:var(--space-md);grid-template-columns:repeat(auto-fit,minmax(230px,1fr));margin-bottom:var(--space-lg)}
.cmp-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:var(--space-lg);position:relative;transition:box-shadow .2s}
.cmp-card:hover{box-shadow:var(--shadow-lg)}
.cmp-campus{font-size:13px;color:var(--muted);margin-bottom:6px;display:flex;align-items:center;gap:6px}
.cmp-campus b{color:var(--primary-dark);font-size:15px}
.cmp-label{font-size:12px;color:var(--muted);font-weight:600}
.cmp-value{font-size:26px;font-weight:700;color:var(--primary-dark);margin-top:4px}
.cmp-delta{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;margin-top:6px;padding:2px 9px;border-radius:12px}
.cmp-delta.up{color:var(--color-up);background:var(--color-up-bg)}
.cmp-delta.down{color:var(--color-down);background:var(--color-down-bg)}
.cmp-delta.flat{color:var(--muted);background:var(--color-terminal-bg)}
.cmp-tag{display:inline-block;font-size:12px;font-weight:600;padding:2px 10px;border-radius:12px;margin-top:6px}
.cmp-tag.missing{background:var(--color-access-off-bg);color:var(--color-access-off)}   /* D43 待填报徽标 */
.cmp-tag.health{background:var(--color-up-bg);color:var(--color-up)}                    /* D32/D43 数据待补全 */
.cmp-health{display:block;font-size:12px;font-weight:600;margin-top:8px;color:var(--color-up);background:var(--color-up-bg);padding:6px 10px;border-radius:6px}
.cmp-chart-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-lg);margin-bottom:var(--space-lg)}
.cmp-chart-box{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:var(--space-lg)}
.cmp-chart-box h4{font-size:14px;color:var(--primary-dark);margin:0 0 10px;font-weight:700}
.cmp-chart-box .echart{width:100%;height:280px}
.cmp-switch{display:inline-flex;gap:4px;background:var(--primary-light);border:1px solid var(--border);border-radius:8px;padding:3px;flex:0 0 auto}
.cmp-switch button{border:none;background:transparent;padding:6px 14px;font-size:12px;border-radius:6px;cursor:pointer;color:var(--muted);font-family:inherit}
.cmp-switch button.active{background:var(--primary);color:var(--card);font-weight:600}

/* ---- F5 状态徽章（终态/账号存活/后台权限两态） ---- */
.badge.terminal{background:var(--color-terminal-bg);color:var(--color-terminal)}
.badge.live{background:var(--color-live-bg);color:var(--color-live)}
.badge.access-on{background:var(--color-access-on-bg);color:var(--color-access-on)}
.badge.access-off{background:var(--color-access-off-bg);color:var(--color-access-off)}
.badge.locked{background:var(--color-terminal-bg);color:var(--color-terminal)}

/* ---- F6 骨架屏 / 空态引导 / toast ---- */
.skeleton{display:flex;flex-direction:column;gap:10px;padding:16px}
.sk-line{height:14px;border-radius:6px;background:linear-gradient(90deg,var(--bg) 25%,var(--bg) 37%,var(--bg) 63%);background-size:400% 100%;animation:sk 1.4s ease infinite}
.sk-line.w40{width:40%}.sk-line.w60{width:60%}.sk-line.w80{width:80%}
@keyframes sk{0%{background-position:100% 50%}100%{background-position:0 50%}}
.empty{display:flex;flex-direction:column;align-items:center;gap:10px}
.empty .big{font-size:44px;opacity:.35;line-height:1}
.empty .tip{font-size:13px;color:var(--muted)}
.empty .action{margin-top:4px}
#toast.err{font-weight:600}

/* ---- F3 教练工作台布局（原缺样式，补齐全/响应式） ---- */
.bench-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--space-lg);align-items:start}
.bench-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:var(--space-lg);transition:box-shadow .2s}
.bench-card:hover{box-shadow:var(--shadow-lg)}
.bench-card-head{font-size:14px;font-weight:700;color:var(--primary-dark);margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}
.bench-stats{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md);margin-bottom:10px}
.bench-stats .stat{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px}
.stat-num{font-size:22px;font-weight:700;color:var(--primary-dark)}
.stat-lab{font-size:12px;color:var(--muted);margin-top:2px}

/* ---- F3 课表周视图：容器内横向滚动，禁止页面横向溢出 ---- */
.sched-table{min-width:760px}
.sched-table th.sched-first,.sched-table td.sched-first{position:sticky;left:0;background:var(--card);z-index:1;font-weight:600;color:var(--primary-dark)}
.sched-table thead th.sched-first{background:var(--primary);color:var(--card);z-index:2}

/* ---- F3 触控区 ≥44px（手机） ---- */
@media(max-width:899px){
  .bench-grid{grid-template-columns:1fr !important}
  .bench-card{padding:var(--space-md)}
  .cmp-cards{grid-template-columns:1fr}
  .cmp-chart-row{grid-template-columns:1fr}
  .cmp-chart-box .echart{height:220px}
  .nav-item{min-height:44px}
  .nav-group .nav-item{min-height:44px}
  .btn{padding-top:9px;padding-bottom:9px;min-height:40px}
  .toolbar .btn,.panel-head .btn,.toolbar select,.panel-head select{min-height:40px}
  .range-btn{min-height:40px}
  .pager .btn{min-height:40px}
  td .btn,td button{min-height:44px}
  .cmp-switch{flex-wrap:wrap}
  .sched-table{min-width:640px}
  .crumb{font-size:12px}
}

/* ---- YQ-REQ-20260926 电子劳动合同样式 ---- */
.ctr-text{background:var(--card);border:1px solid var(--border);border-radius:6px;padding:18px 22px;font-family:"SimSun",serif;font-size:14px;line-height:1.9;color:var(--text);max-height:60vh;overflow:auto;white-space:pre-wrap;word-break:break-word}
/* YQ-REQ-20260927：签署区内嵌公司公章/法人私章 + 乙方楷体签名（仅 signed 合同显示） */
.ctr-text .seal-company{width:120px;height:120px;opacity:.85;display:inline-block;vertical-align:middle;margin:-6px 0 0 8px;pointer-events:none}
.ctr-text .seal-legal{width:60px;height:60px;opacity:.85;display:inline-block;vertical-align:middle;margin:-6px 0 0 8px;pointer-events:none}
.ctr-text .sign-name{font-family:"楷体",KaiTi,STKaiti,serif;font-size:22px;letter-spacing:2px;border-bottom:1px solid var(--text);padding:0 12px}
.ctr-text .unsigned{color:var(--muted)}
@media print{.ctr-text .seal-company,.ctr-text .seal-legal{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
.ctr-stamp{position:relative;height:0;margin:0}
.ctr-stamp .stamp{width:96px;height:96px;opacity:.82;position:absolute;pointer-events:none;z-index:2}
/* 默认把两枚印章叠在弹窗正文底部签署区附近（不遮正文文字） */
.ctr-stamp .stamp:nth-child(1){top:-120px;right:26%;transform:rotate(-8deg)}
.ctr-stamp .stamp:nth-child(2){top:-84px;right:12%;transform:rotate(-4deg)}
@media print{.ctr-stamp .stamp{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
.ctr-text pre{background:var(--card);border:1px solid var(--border);border-radius:6px;padding:18px 22px;font-family:"SimSun",serif;font-size:14px;line-height:1.9;color:var(--text);max-height:60vh;overflow:auto;white-space:pre-wrap;word-break:break-word}
.sign-box{margin-top:14px;border-top:1px dashed var(--border);padding-top:12px;display:flex;flex-direction:column;gap:10px}
.sign-box input[type=checkbox]{width:auto;margin-right:6px}
.modal-footer .btn:disabled{opacity:.5;cursor:not-allowed}
/* YQ-REQ-20260927：员工页瘦身——身份/状态列第二行小字（聘任、账号/后台） */
.emp-sub{font-size:12px;color:var(--muted);margin-top:2px;line-height:1.2}
/* YQ-REQ-20260927：消课防错告警（专属课程课时错配）——用现有告警色，不引入新色板 */
.warn-strong{background:var(--color-up-bg);color:var(--danger);border:1px solid var(--color-up-border);border-radius:6px;padding:8px 12px;font-weight:600;margin-top:8px}
/* YQ-REQ-20260927：缴费筛选 chip（显式筛选标识，浅底+主色边） */
.chip{display:inline-flex;align-items:center;gap:6px;background:var(--blue-bg);color:var(--blue-deep);border:1px solid var(--blue-border);border-radius:999px;padding:3px 6px 3px 10px;font-size:12px}
.chip button{border:none;background:transparent;color:var(--blue-deep);cursor:pointer;font-size:12px;padding:0 2px;font-weight:600}


/* ===== YQ-REQ-20260928-U1 B3 表格窄屏：横向滚动 + 首列(姓名)冻结 ===== */
@media(max-width:899px){
  .table-wrap.stu-full{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .table-wrap.stu-full table{min-width:980px}
  .table-wrap.stu-full table th:first-child,
  .table-wrap.stu-full table td:first-child{position:sticky;left:0;z-index:2}
  .table-wrap.stu-full table td:first-child{background:var(--card)}
  .table-wrap.stu-full table tbody tr:nth-child(even) td:first-child{background:var(--bg)}
  .table-wrap.stu-full table th:first-child{background:var(--primary);z-index:3}
  .table-wrap.stu-full table td:first-child{box-shadow:2px 0 0 var(--border)}
}

/* ===== YQ-REQ-20260928-U1 B8 课酬标准页折叠分区 ===== */
.ps-block{margin:10px 0;border:1px solid var(--border);border-radius:8px;background:var(--card);overflow:hidden}
.ps-block summary{cursor:pointer;padding:10px 14px;font-weight:600;color:var(--text);background:var(--bg);list-style:none}
.ps-block summary::-webkit-details-marker{display:none}
.ps-block summary::before{content:'▸ ';color:var(--primary)}
.ps-block[open] summary::before{content:'▾ '}
.ps-block[open] summary{border-bottom:1px solid var(--border)}
.ps-block > div{padding:10px 14px}

/* ===== YQ-REQ-20260928-U1 B4 表单分层「更多（选填）」折叠 ===== */
.form-more{margin-top:12px;border:1px solid var(--border);border-radius:8px;background:var(--card)}
.form-more summary{cursor:pointer;padding:8px 12px;font-weight:600;color:var(--muted);background:var(--bg);list-style:none;border-radius:7px}
.form-more summary::-webkit-details-marker{display:none}
.form-more summary::before{content:'▸ ';color:var(--primary)}
.form-more[open] summary::before{content:'▾ '}
.form-more .form-grid{padding:10px 12px}

/* ===== YQ-REQ-20260928-U1 B9 加载态统一：spinner 动画 + 统一文案（dashboard/employees/logs/backup 均用 .spinner）===== */
.spinner::after{content:'加载中…';display:block;text-align:center;color:var(--muted);font-size:13px;margin-top:8px}
.mp-loading{color:var(--muted);text-align:center;padding:24px 0;font-size:13px}
.mp-loading::before{content:'';display:block;width:22px;height:22px;margin:0 auto 8px;border:3px solid var(--primary-light);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}

/* ===== YQ-REQ-20260928-F33 三条线对账页 ===== */
.recon-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:4px 0 14px}
.recon-card{border:1px solid var(--border);border-radius:10px;padding:14px 16px;background:var(--card)}
.rc-num{font-size:22px;font-weight:700;color:var(--primary)}
.rc-sub{font-size:12px;font-weight:400;color:var(--muted);margin-left:4px}
.rc-lab{margin-top:4px;font-size:13px;color:var(--muted)}
.recon-check{padding:8px 12px;border-radius:6px;margin-bottom:10px;font-size:13px}
.recon-check.ok{background:var(--color-down-bg);color:var(--color-down);border:1px solid var(--color-down-border)}
.recon-check.bad{background:var(--color-up-bg);color:var(--color-up);border:1px solid var(--color-up-border)}
.recon-check.warn{background:var(--warn-bg);color:var(--warn);border:1px solid var(--border)}
.recon-tbl{min-width:880px}
@media(max-width:899px){.recon-cards{grid-template-columns:1fr}}

/* YQ-REQ-20260928-F41V3：搜索时命中的终态(结业/流失)学员行淡化 */
.terminal-row td { opacity: .65; }
.terminal-row td .badge.terminal { opacity: 1; }

/* YQ-REQ-20260929-F62：系统设置收纳页卡片 */
.cfg-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}
.cfg-card{display:flex;align-items:center;gap:10px;padding:14px 16px;background:var(--card);border:1px solid var(--border);border-radius:10px;cursor:pointer;min-height:56px;transition:border-color .15s,background .15s}
.cfg-card:hover{border-color:var(--primary);background:var(--primary-light)}
.cfg-ic{width:22px;text-align:center;font-size:16px;color:var(--primary)}
.cfg-tx{flex:1;font-size:14px;color:var(--text)}
.cfg-go{color:var(--muted);font-weight:700}
@media(max-width:899px){.cfg-grid{grid-template-columns:1fr}}

/* ==================== YQ-REQ-20260930-F63：界面清爽化（三期+四期） ==================== */
/* 新增 token（只增不改：--primary/--border/--radius 等原有 token 一字未动） */
:root{
  --th-bg:#EEF2F0;      /* F63 表头浅灰绿底 */
  --th-fg:#3A4A42;      /* F63 表头深灰字 */
  --row-hover:#F7FAF8;  /* F63 表格划过高亮 */
  --tabbar-h:56px;      /* F63 手机底部快捷栏高度 */
}
/* 手机底部 5 格快捷栏：仅 ≤768px 显示 */
.tabbar{display:none;position:fixed;left:0;right:0;bottom:0;height:var(--tabbar-h);
  background:var(--card);border-top:1px solid var(--border);z-index:60;
  padding-bottom:env(safe-area-inset-bottom,0);
  overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}   /* F71K-R86 P1：7 组可横滚 */
.tabbar button{flex:0 0 auto;min-width:56px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;   /* F71K-R86 P1：7 组按钮保宽可横滚 */
  background:none;border:none;font-size:12px;color:var(--muted);min-height:var(--tabbar-h);cursor:pointer}
.tabbar button .ic{font-size:18px;line-height:1}
.tabbar button.active{color:var(--primary-dark);background:var(--primary-light);font-weight:600}
.tabbar button.active .ic{color:var(--primary)}
@media(max-width:899px){
  .tabbar{display:flex}
  body{padding-bottom:calc(var(--tabbar-h) + 8px)}
  /* F63 触控目标 ≥44px */
  .btn,.tab-btn,.range-btn{min-height:44px}
  th,td{padding:13px 14px}
  table{font-size:14px}
}

/* ==================== YQ-REQ-20260930-F65：待办分页（F67：侧栏快捷区已删） ==================== */
/* 待办页 5 类分 Tab */
.todo-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.todo-tab{padding:9px 14px;border-radius:8px;border:1px solid var(--border);background:var(--card);color:var(--muted);font-size:14px;cursor:pointer;min-height:34px}
.todo-tab.active{background:var(--primary-light);color:var(--primary-dark);border-color:var(--primary);font-weight:600}
.todo-tab .n{display:inline-block;margin-left:6px;background:var(--bg-sub);color:var(--text);border-radius:9px;padding:0 7px;font-size:12px}   /* rLBrZb-R3 GR3-4 */
.todo-tab.zero .n{background:var(--bg-sub);color:var(--muted)}   /* rLBrZb-R3 GR3-4 */

/* ===== YQ-REQ-20260930-F66 P1-3 手机端性能降级：≤599 关阴影/渐变/动效，600-1279 关入场动画 ===== */
@media(max-width:599px){
  .panel,.card,.btn,.table-wrap{box-shadow:none !important}
  .panel,.card,.btn,.card .value{background-image:none !important}
  .card .value,.card .card-value{color:var(--green-700) !important}  /* F66：≤599 关渐变时必须恢复实心色，防 @supports 内 color:transparent 导致大数隐形 */
  *,*::before,*::after{animation:none !important;transition:none !important}
  .btn{min-height:44px}
  .btn.sm{min-height:40px}
}
@media(min-width:600px) and (max-width:1279px){
  *,*::before,*::after{animation:none !important}
  .panel,.card{box-shadow:var(--shadow-1,0 1px 3px rgba(31,92,66,.06),0 4px 14px rgba(31,92,66,.05)) !important}
}

/* ===== YQ-REQ-20260930-F66 P2-1 新增 token（只增不改，独立 :root 块追加） ===== */
:root{
  --brand-grad:linear-gradient(135deg,var(--green-700) 0%,var(--green-600) 55%,var(--green-500) 100%);
  --accent-lime:var(--green-500);
  --accent-coral:var(--color-up);
  --accent-sky:#3EC1D3;
  --accent-amber:var(--warn);
  --bg-page:#F3F8F5; --bg-card:#FFFFFF; --bg-sunken:#EAF3EE;
  --shadow-1:0 1px 3px rgba(31,92,66,.06),0 4px 14px rgba(31,92,66,.05);
  --shadow-2:0 2px 8px rgba(31,92,66,.08),0 12px 32px rgba(31,92,66,.08);
  --radius:12px; --radius-lg:16px;
  --ok:var(--green-500); --bad:var(--danger); --warn:var(--warn);
}

/* ===== F66 P2-2 组件覆盖（只覆盖不删；渐变只用于主按钮，一屏≤1渐变） ===== */
.panel{background:var(--bg-card);box-shadow:var(--shadow-1);border-radius:var(--radius-lg);border:none;transition:box-shadow .2s,transform .2s}
.panel:hover{box-shadow:var(--shadow-2)}
.btn:not(.ghost){background-color:var(--primary);background-image:var(--brand-grad);color:var(--card);border:none;border-radius:var(--radius);transition:filter .15s}   /* F71K-R7-A：底色与渐变拆开，≤599px 抹渐变后仍回落实心绿底 */
.btn:not(.ghost):hover{filter:brightness(1.06)}
.table-wrap table thead th{background-image:linear-gradient(90deg,var(--green-600),var(--green-500));background-size:100% 2px;background-position:0 100%;background-repeat:no-repeat}
td.num,th.num{font-variant-numeric:tabular-nums}
/* ===== F71K-R84：全站表格规范（序号列 + 合计行 + 斑马纹；纯展示层） ===== */
.sn-col{width:44px;text-align:center;font-variant-numeric:tabular-nums;white-space:nowrap}
td.sn-col{color:var(--muted)}
.foot-sum td{font-weight:700;background:var(--bg-sub,var(--green-100));border-top:2px solid var(--border)}
.table-wrap table thead th:first-child{border-top-left-radius:0}
@media(max-width:599px){.sn-col{min-width:32px}}
/* 斑马纹（与现有紧凑表一致；仅长数据表用，避免与已有 .recon-tbl 等冲突） */
.table-wrap table.zebra tbody tr:nth-child(even){background:var(--bg-sub,var(--green-100))}
.nav-item{position:relative}
.nav-item.active::before{content:'';position:absolute;left:0;top:20%;height:60%;width:3px;border-radius:2px;background:var(--accent-lime)}
.nav-badge{background:var(--accent-coral) !important;border-radius:999px !important;vertical-align:super;padding:1px 7px !important;line-height:14px !important;font-size:11px !important}

/* ===== F66 P2-3 大数渐变：必须 @supports 兜底，不许裸透明（红线级） ===== */
.card .value,.card .card-value{color:var(--green-700)}
@supports ((-webkit-background-clip:text) or (background-clip:text)){
  .card .value,.card .card-value{background:var(--brand-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
}

/* ===== F71K-R6：随机编号复制符号（⧉）===== */
.code-copy {
  vertical-align: middle;
  margin-left: 4px;
  border: 1px solid var(--line, var(--green-100));
  border-radius: 5px;
  background: var(--bg, #fff);
  color: var(--muted, #7a8b99);
  font-size: 14px;
  user-select: none;
  line-height: 1;
}
.code-copy:hover { color: var(--primary, #1470cc); border-color: var(--primary, #1470cc); }
/* 手机端触控区 ≥44px（codeCopyHtml 已含 min-width/height，此处兜底） */
@media (max-width: 640px) {
  .code-copy { min-width: 44px; min-height: 44px; }
}

/* F71K-R25-D5：空状态统一——直接给现有 .empty 加统一容器样式（需求单 B 方案；不新增类、不改 HTML） */
.empty{padding:48px 16px;text-align:center;color:var(--muted);border:1px dashed var(--border);border-radius:12px;background:var(--bg-sunken)}

/* ==== F71K-R40 开始：AC3 表格数值列对齐 / AC5 导航层级 ==== */
/* AC3 金额/数量/课时等数值列统一右对齐 + 数字等宽（纵向对齐） */
td.num,th.num,td[class*="num"],th[class*="num"]{text-align:right;font-variant-numeric:tabular-nums}
/* AC5 导航层级拉开：一级菜单字重/字号提升，次级项弱化 */
.nav .nav-item{font-weight:600;font-size:14.5px;letter-spacing:.3px}
.nav-group .nav-item,.nav-group-body .nav-item{font-weight:500;font-size:13px}
/* 红角标与文字间距修正 */
.nav-item .ic{margin-right:2px}
/* ==== F71K-R40 结束 ==== */

/* ===================== F71K-R54：样式/布局收敛（U1-U5 专属 + A/B/C 走查） ===================== */
/* A0：备注/说明/标题/表格文本全局可换行兜底（防长文本撑破、横溢）；数字列保留 white-space:nowrap 不受影响 */
.hint,.note,.empty,.desc,.sub,.remark,
.page-head h2,.page-head p,.panel-head h3,.panel-body,
td,th,label,.ss-sub,.rank-sub,.card-prog span,.perm-cell{
  overflow-wrap:anywhere;word-break:break-word;
}
/* A1：课酬标准卡片长文本竖排换行、行距可读（每种教练/规则单独一行、行内换行不撑破） */
.cards .card .hint,.card .hint{line-height:1.7;white-space:normal}
/* A2：弹窗内容多时自适应放大：max-width 放宽到 min(92vw,880px)；内容区滚动；底部保存按钮固定可见 */
.modal{max-width:min(92vw,880px)}
.modal-body{max-height:72vh}
/* A3：主内容区充分用视口，下方大块留白收敛 */
.main{padding:20px 28px 36px}
@media(max-width:899px){.main{padding:14px 12px 24px}}

/* ===== F71K-M1-G / rLBrZb-R1：五套可切换主题（4 黑底 + 1 浅底，默认霓虹描边）=====
   色值逐字取自 原型-视觉v3-黑底三色-…-20261023.html（青鉴提供映射段）；承接 R59 主题引擎机制。
   组件规范沿用 docs/组件规范-五套主题-M1G-20261024.md 的 token 纪律；黑底下 --card/--text 成对为深底浅字。 */
/* ① 霓虹描边（墨绿黑，默认） */
[data-theme="neon"]{
  --text-soft:#a5c9c1;   /* F71K-M1-GR4 R4-5：正文降一档 */
  /* rLBrZb-R3 GR3-2：语义 token 反转（暗底下当标题/金额色的 token 必须亮 >=0.45） */
  --primary-dark:#45e4b9; --green-700:#45e4b9;
  --on-accent:#0a1410;   /* accent 底（--warn/--green-500/--danger 暗下变亮）上用深字 */
  --bg-page:#070a12;   /* rLBrZb-R3：--bg-page 随主题 */
  /* rLBrZb-R2 GR2-1：双变量体系随主题覆盖（白底残留清零）+ 徽章深底亮字 */
  --bg-card:#0c1219; --bg-sunken:#0a0e15; --th-bg:#0f1a22; --th-fg:#9fe8dc; --row-hover:#101b24;
  --color-live:#3ce6b0; --color-live-bg:rgba(0,230,160,.14);
  --color-up-bg:rgba(255,95,126,.16); --color-terminal-bg:rgba(255,255,255,.06);
  --warn-bg:rgba(255,201,60,.14); --danger:#ff5f7e;
  --blue-bg:rgba(0,230,160,.12); --blue-tag:#9fe8dc; --blue-border:rgba(0,230,160,.30);
  --bg:radial-gradient(900px 520px at 50% -10%,#0b2b31 0%,#070a12 55%,#05060b 100%);
  --card:#0c1219; --bg-sub:#070a12;
  --text:#b8d8d0;   /* F71K-M1-GR4 R4-5：全文降档 ≤13:1（bg-page 最暗底实测） */ --border:rgba(0,255,209,.22); --muted:#7fa9a9; --muted-strong:#54716f;
  --primary:#00e6a0; --primary-dark:#45e4b9; --primary-light:#0b2b31;
  --primary-grad:linear-gradient(115deg,#00ffc8,#22d3ee 55%,#38bdf8); --brand-grad:var(--primary-grad);
  --accent:#22d3ee; --accent-ethnic:#b23a2f;
  --green-700:#45e4b9; --green-600:#00e6a0; --green-500:#22d3ee; --green-100:#0b2b31;
  --ok:#00e6a0; --warn:#ffc93c; --bad:#ff5f7e; --neutral:#5d7f86;
  --shadow:0 0 0 1px rgba(0,255,209,.10), inset 0 0 24px -12px rgba(0,255,209,.5);
  --shadow-lg:0 0 0 1px rgba(0,255,209,.4), 0 0 32px -8px rgba(0,255,209,.42);
}
/* ② 曜石金（纯黑 + 香槟金） */
[data-theme="obsidian"]{
  --text-soft:#c6ba9d;   /* F71K-M1-GR4 R4-5：正文降一档 */
  /* rLBrZb-R3 GR3-2：语义 token 反转（暗底下当标题/金额色的 token 必须亮 >=0.45） */
  --primary-dark:#f5d67b; --green-700:#f5d67b;
  --on-accent:#0a1410;   /* accent 底（--warn/--green-500/--danger 暗下变亮）上用深字 */
  --bg-page:#0a0908;   /* rLBrZb-R3：--bg-page 随主题 */
  /* rLBrZb-R2 GR2-1：双变量体系随主题覆盖（白底残留清零）+ 徽章深底亮字 */
  --bg-card:#131210; --bg-sunken:#0e0d0b; --th-bg:#1c1915; --th-fg:#e3cf9a; --row-hover:#1a1713;
  --color-live:#7ee2a8; --color-live-bg:rgba(111,207,151,.14);
  --color-up-bg:rgba(235,87,87,.16); --color-terminal-bg:rgba(255,255,255,.05);
  --warn-bg:rgba(242,201,76,.14); --danger:#ff7b7b;
  --blue-bg:rgba(212,160,23,.14); --blue-tag:#e3cf9a; --blue-border:rgba(212,160,23,.32);
  --bg:radial-gradient(1000px 560px at 20% 0%,#1b1710 0%,#0d0c0a 45%,#070707 100%);
  --card:#131210; --bg-sub:#0d0c0a;
  --text:#dbd0b4;   /* F71K-M1-GR4 R4-5 */ --border:rgba(212,160,23,.22); --muted:#b3a482; --muted-strong:#7d735c;
  --primary:#d4a017; --primary-dark:#f5d67b; --primary-light:#1b1710;
  --primary-grad:linear-gradient(115deg,#fff1c1,#f5d67b 40%,#d4a017 75%,#a9761a); --brand-grad:var(--primary-grad);
  --accent:#f5d67b; --accent-ethnic:#b23a2f;
  --green-700:#f5d67b; --green-600:#d4a017; --green-500:#f5d67b; --green-100:#1b1710;
  --ok:#6fcf97; --warn:#f2c94c; --bad:#eb5757; --neutral:#8c8574;
  --shadow:0 2px 10px -4px rgba(0,0,0,.9), inset 0 1px 0 rgba(245,214,123,.10);
  --shadow-lg:0 18px 40px -18px rgba(212,160,23,.55), inset 0 1px 0 rgba(245,214,123,.18);
}
/* ③ 深空冰蓝（黑蓝 + 冰蓝） */
[data-theme="ice"]{
  --text-soft:#accbe2;   /* F71K-M1-GR4 R4-5：正文降一档 */
  /* rLBrZb-R3 GR3-2：语义 token 反转（暗底下当标题/金额色的 token 必须亮 >=0.45） */
  --primary-dark:#7dd3fc; --green-700:#7dd3fc;
  --on-accent:#0a1410;   /* accent 底（--warn/--green-500/--danger 暗下变亮）上用深字 */
  --bg-page:#060b12;   /* rLBrZb-R3：--bg-page 随主题 */
  /* rLBrZb-R2 GR2-1：双变量体系随主题覆盖（白底残留清零）+ 徽章深底亮字 */
  --bg-card:#0c1219; --bg-sunken:#080d14; --th-bg:#101d2b; --th-fg:#a8d8f8; --row-hover:#12202e;
  --color-live:#4ade80; --color-live-bg:rgba(74,222,128,.13);
  --color-up-bg:rgba(251,113,133,.15); --color-terminal-bg:rgba(255,255,255,.06);
  --warn-bg:rgba(251,191,36,.13); --danger:#fb7185;
  --blue-bg:rgba(125,211,252,.12); --blue-tag:#a8d8f8; --blue-border:rgba(125,211,252,.30);
  --bg:radial-gradient(1000px 560px at 78% 4%,#0e2233 0%,#080d14 48%,#04060a 100%);
  --card:#0c1219; --bg-sub:#080d14;
  --text:#bfdaee;   /* F71K-M1-GR4 R4-5 */ --border:rgba(125,211,252,.18); --muted:#8fb0c8; --muted-strong:#5c7590;
  --primary:#38bdf8; --primary-dark:#7dd3fc; --primary-light:#0e2233;
  --primary-grad:linear-gradient(115deg,#e0f2fe,#7dd3fc 45%,#38bdf8 78%,#2563eb); --brand-grad:var(--primary-grad);
  --accent:#7dd3fc; --accent-ethnic:#b23a2f;
  --green-700:#7dd3fc; --green-600:#38bdf8; --green-500:#7dd3fc; --green-100:#0e2233;
  --ok:#4ade80; --warn:#fbbf24; --bad:#fb7185; --neutral:#6b8299;
  --shadow:0 2px 12px -4px rgba(0,0,0,.9), inset 0 1px 0 rgba(125,211,252,.10);
  --shadow-lg:0 18px 40px -16px rgba(56,189,248,.42), inset 0 1px 0 rgba(125,211,252,.16);
}
/* ④ 晶格流光（深蓝紫） */
[data-theme="violet"]{
  --text-soft:#b6bde9;   /* F71K-M1-GR4 R4-5：正文降一档 */
  /* rLBrZb-R3 GR3-2：语义 token 反转（暗底下当标题/金额色的 token 必须亮 >=0.45） */
  --primary-dark:#c4b5fd; --green-700:#c4b5fd;
  --on-accent:#0a1410;   /* accent 底（--warn/--green-500/--danger 暗下变亮）上用深字 */
  --bg-page:#0f1120;   /* rLBrZb-R3：--bg-page 随主题 */
  /* rLBrZb-R2 GR2-1：双变量体系随主题覆盖（白底残留清零）+ 徽章深底亮字 */
  --bg-card:#181b34; --bg-sunken:#12142a; --th-bg:#1f2342; --th-fg:#c3c9f5; --row-hover:#1f2340;
  --color-live:#34d399; --color-live-bg:rgba(52,211,153,.13);
  --color-up-bg:rgba(251,113,133,.14); --color-terminal-bg:rgba(255,255,255,.06);
  --warn-bg:rgba(251,191,36,.12); --danger:#fb7185;
  --blue-bg:rgba(124,108,240,.16); --blue-tag:#c3c9f5; --blue-border:rgba(124,108,240,.32);
  --bg:radial-gradient(1100px 620px at 8% 4%,#232255 0%,#141634 38%,#0b0d1c 100%);
  --card:#181b34; --bg-sub:#141634;
  --text:#c9cff2;   /* F71K-M1-GR4 R4-5 */ --border:rgba(255,255,255,.13); --muted:#9aa4c8; --muted-strong:#6c7599;
  --primary:#a78bfa; --primary-dark:#c4b5fd;   /* rLBrZb-R3：primary 提亮至对暗底 >=4.5 */ --primary-light:#232255;
  --primary-grad:linear-gradient(115deg,#5eead4,#60a5fa 40%,#a78bfa 72%,#f472b6); --brand-grad:var(--primary-grad);
  --accent:#a78bfa; --accent-ethnic:#b23a2f;
  --green-700:#c4b5fd; --green-600:#a78bfa; --green-500:#a78bfa;   /* rLBrZb-R3：green-600 提亮至对暗底 >=4.5 */ --green-100:#232255;
  --ok:#34d399; --warn:#fbbf24; --bad:#fb7185; --neutral:#8792b8;
  --shadow:0 10px 26px -14px rgba(0,0,0,.9), inset 0 1px 0 rgba(255,255,255,.09);
  --shadow-lg:0 20px 42px -16px rgba(96,165,250,.45), inset 0 1px 0 rgba(255,255,255,.14);
}
/* ⑤ 晨曦流光（浅底对照，唯一浅色） */
[data-theme="dawn"]{
  --bg-page:#F3F8F5;   /* rLBrZb-R3：dawn 保持浅底 */
  /* rLBrZb-R2 GR2-1：双变量体系随主题覆盖（浅底对照，保持浅色） */
  --bg-card:#ffffff; --bg-sunken:#f2f5ff; --th-bg:#eef2fb; --th-fg:#3c4468; --row-hover:#f5f8ff;
  --color-live:#0e9f6e; --color-live-bg:#e7f6ef;
  --color-up-bg:#fdeaea; --color-terminal-bg:#eef1f6;
  --warn-bg:#fff4dd; --danger:#dc2626;
  --bg:linear-gradient(160deg,#f6f7fd 0%,#eef3ff 45%,#fdf2f8 100%);
  --card:#ffffff; --bg-sub:#f7f9ff;
  --text:#3a4160;   /* F71K-M1-GR4 R4-5 */ --border:#e4e8f3; --muted:#666d8c; --muted-strong:#98a0bb;
  --primary:#6366f1; --primary-dark:#4f46e5; --primary-light:#eef3ff;
  --primary-grad:linear-gradient(115deg,#6366f1,#8b5cf6 45%,#d946ef); --brand-grad:var(--primary-grad);
  --accent:#8b5cf6; --accent-ethnic:#b23a2f;
  --green-700:#4f46e5; --green-600:#6366f1; --green-500:#8b5cf6; --green-100:#eef3ff;
  --ok:#10b981; --warn:#f59e0b; --bad:#ef4444; --neutral:#8b93ad;
  --shadow:0 4px 14px -6px rgba(76,86,180,.22), 0 1px 2px rgba(30,33,56,.05);
  --shadow-lg:0 18px 34px -14px rgba(109,94,252,.4), 0 1px 2px rgba(30,33,56,.06);
}


/* ===== F71K-M1-G2：主操作按钮流光溢彩（虹彩扫光 + 柔光晕；克制循环；主题色 token 不被覆盖；respect prefers-reduced-motion） ===== */
@keyframes yqSheen { 0% { background-position: -220% 0; } 100% { background-position: 220% 0; } }
@keyframes yqGlow {
  0%, 100% { box-shadow: 0 2px 6px rgba(0,0,0,.10); }
  50% { box-shadow: 0 3px 10px rgba(59,130,246,.16); }
}   /* rLBrZb-R2 GR2-5：光晕强度收敛 .30→.16 */
.btn:not(.ghost):not(.danger):not(.sm), .theme-seg .seg-btn.active {
  position: relative; overflow: hidden; animation: yqGlow 4.2s ease-in-out infinite !important;   /* F66 性能降级(≤1279 animation:none !important)与本单「流光溢彩」冲突：特异性更高+important 胜出，老板点名的核心动效不受降级 */
}
.btn:not(.ghost):not(.danger):not(.sm)::after, .theme-seg .seg-btn.active::after {
  content: ''; position: absolute; top: 0; bottom: 0; left: 0; width: 45%;
  background: linear-gradient(105deg,
    rgba(255,255,255,0) 18%,
    rgba(255,255,255,.24) 40%,
    rgba(255,214,120,.30) 50%,
    rgba(255,255,255,.24) 60%,
    rgba(255,255,255,0) 82%);
  background-size: 220% 100%;
  animation: yqSheen 3.6s linear infinite !important;   /* rLBrZb-R2 GR2-5：扫光宽度/亮度/频率收敛 */
  pointer-events: none;
}
@media (prefers-reduced-motion: reduce) {
  .btn, .theme-seg .seg-btn { animation: none !important; }
  .btn::after, .theme-seg .seg-btn::after { animation: none !important; display: none; }
}
/* F71K-M1-GR4 R4-5：正文（表格单元格）降一档，关键数字/标题保留高对比 */
#main td{color:var(--text-soft)}
#main td.num{color:var(--text)}
/* rLBrZb-R3 GR3-3：表单控件平铺规则（禁止嵌套；--card/--text/--border 已随主题变化） */
input,select,textarea{background:var(--card);color:var(--text);border:1px solid var(--border)}
/* rLBrZb-R3 GR3-4：对比度修死 */
.nav-badge{background:var(--danger) !important;color:var(--on-accent) !important}
.chip{background:var(--bg-sub) !important;color:var(--muted) !important;border:1px solid var(--border)}
.chip button{color:var(--muted) !important}

/* F71K-M1-GR4 R4-4：课程清单表格规格（平铺规则） */
.f69-tbl{table-layout:fixed;width:100%}
.f69-tbl th,.f69-tbl td{height:var(--row-h);padding:4px 10px;white-space:normal;word-break:break-word;vertical-align:middle}
.f69-tbl .emp-sub{font-size:11px;line-height:1.15;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.f69-tbl td.col-act,.f69-tbl th.col-act{min-width:150px;white-space:nowrap}
.f69-tbl td.col-act .btn{min-width:64px;margin-right:6px}
.f69-tbl td.center,.f69-tbl th.center{text-align:center;white-space:nowrap}
.f69-tbl td.num{text-align:right;font-variant-numeric:tabular-nums}
.f69-sum-link{color:var(--primary);cursor:pointer;text-decoration:underline;text-underline-offset:3px}

/* F71K-M1-S1：面板头「更多」下拉（平铺规则） */
.more-dd{position:relative;display:inline-block}
.more-menu{position:absolute;right:0;top:calc(100% + 4px);background:var(--card);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);padding:6px;min-width:230px;z-index:60}
.more-menu button{display:block;width:100%;text-align:left;background:none;border:0;padding:8px 10px;color:var(--text);cursor:pointer;font-size:13px;border-radius:6px}
.more-menu button:hover{background:var(--bg-sunken)}
.mm-group{font-size:11px;color:var(--muted);padding:6px 10px 2px;border-top:1px solid var(--border);margin-top:4px}
.mm-group:first-child{border-top:0;margin-top:0}
/* F71K-M1-S1 S1-2：课程清单表随内容收缩（px colgroup 精确生效） */
.f69-tbl{width:auto;min-width:60%}   /* 实宽由内联 style 定（978/886px） */
