/* 睿课表 页面基础样式（全部引用 tokens.css 变量，圆润柔和） */
.app-shell{ min-height:100vh; display:flex; flex-direction:column; }

.brand-bar{
  display:flex; align-items:center; gap:12px;
  padding:12px 20px; background:var(--surface);
  border-bottom:1px solid var(--border);
  position:sticky; top:0; z-index:10;
}
.brand-logo{
  width:36px; height:36px; border-radius:12px;
  background:var(--brand-blue); color:#fff;
  display:flex; align-items:center; justify-content:center;
  font-weight:500; font-size:16px;
}
img.brand-logo{
  width:34px; height:34px; border-radius:9px; object-fit:cover; box-shadow:0 2px 6px rgba(0,0,0,.12);
  background:none;
}
.brand-name{ font-size:16px; font-weight:var(--fw-title); color:var(--text-1); }
.brand-sub{ font-size:12px; color:var(--text-3); margin-left:auto; }

.content{ flex:1; padding:var(--sp-4); max-width:1280px; width:100%; margin:0 auto; }

.card{
  background:var(--surface); border-radius:var(--radius-lg);
  box-shadow:var(--shadow-sm); padding:var(--sp-4) var(--sp-5); margin-bottom:var(--sp-3);
  border:1px solid rgba(223,234,229,.7);
}
.card h2{ font-size:var(--fs-18); font-weight:var(--fw-title); margin:0 0 10px; }
.card h3{ font-size:var(--fs-16); font-weight:var(--fw-title); margin:0 0 8px; }

.seg{ display:inline-flex; gap:4px; background:var(--surface-2); border-radius:var(--radius-pill); padding:3px; }
.seg button{
  border:none; background:transparent; border-radius:var(--radius-pill);
  padding:6px 14px; font-size:13px; color:var(--text-2); cursor:pointer; font-family:inherit;
  font-weight:var(--fw-label); transition:background var(--dur) var(--ease), color var(--dur) var(--ease);
}
.seg button:hover{ color:var(--text-1); }
/* v6.4 修「选中高亮白字看不清」：active 必须有实底，否则白字落在浅底上 = 不可见 */
.seg button.active{ color:#fff; background:var(--brand-blue); font-weight:700; box-shadow:0 1px 3px rgba(30,91,255,.28); }
.seg button.active.campus{ background:var(--line-campus); box-shadow:0 1px 3px rgba(30,91,255,.28); }
.seg button.active.program{ background:var(--line-program); box-shadow:0 1px 3px rgba(255,138,61,.30); }
.seg button.active.school{ background:var(--line-school); box-shadow:0 1px 3px rgba(124,108,240,.30); }
/* 10 个标签（8 门店 + 编程部 + 校企）需要更紧凑并可换行 */
.seg-scope{ flex-wrap:wrap; gap:3px; }
.seg-scope button{ padding:5px 11px; font-size:12.5px; }

.btn{
  border:none; border-radius:var(--radius-md); padding:9px 18px;
  font-size:13px; font-weight:500; cursor:pointer; font-family:inherit;
  background:var(--brand-blue); color:#fff;
}
.btn:hover{ background:var(--brand-blue-hover); }

.state-dot{ display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:6px; }
.state-dot.ok{ background:var(--success); }
.state-dot.warn{ background:var(--warning); }

.muted{ color:var(--text-2); font-size:13px; }

/* 课表网格 */
.user-card{ display:flex; align-items:center; gap:14px; }
.me-name{ font-size:16px; font-weight:500; color:var(--text-1); }
.me-en{ font-size:12px; color:var(--text-3); font-weight:400; }
.me-role{ display:flex; gap:6px; flex-wrap:wrap; }
.role-chip{ font-size:12px; padding:2px 10px; border-radius:999px; background:var(--surface-2); color:var(--text-2); }
.btn-ghost{ margin-left:auto; border:1px solid var(--border); background:transparent; color:var(--text-2); border-radius:var(--radius-md); padding:7px 14px; font-size:13px; cursor:pointer; font-family:inherit; }
.btn-ghost:hover{ color:var(--text-1); }
.btn-primary{ background:var(--brand-blue); color:#fff; border:none; border-radius:var(--radius-md); padding:9px 18px; font-size:13px; cursor:pointer; font-family:inherit; }
.dev-box{ display:flex; flex-direction:column; gap:10px; }
.dev-input{ border:1px solid var(--border); border-radius:var(--radius-md); padding:9px 12px; font-size:13px; font-family:inherit; }
.err{ color:#e5484d; }

.tt-toolbar{ display:flex; gap:16px; flex-wrap:wrap; align-items:center; justify-content:space-between; }
.tt-filters{ display:flex; gap:8px; flex-wrap:wrap; }
.sel{ border:1px solid var(--border); border-radius:var(--radius-md); padding:8px 12px; font-size:13px; color:var(--text-1); background:var(--surface); font-family:inherit; cursor:pointer; }
.inp{ border:1px solid var(--border); border-radius:var(--radius-md); padding:8px 12px; font-size:13px; font-family:inherit; flex:1; }

.tt-scroll{ overflow-x:auto; }
.tt-grid{ border-collapse:separate; border-spacing:0; width:100%; min-width:880px; }
.tt-grid th, .tt-grid td{ border:1px solid var(--border); }
.tt-corner{ background:var(--surface-2); color:var(--text-2); font-size:12px; font-weight:500; padding:10px 8px; width:96px; text-align:center; }
.tt-grid thead th{ background:var(--surface-2); color:var(--text-1); font-size:13px; font-weight:500; padding:10px 8px; position:sticky; top:0; }
.tt-period{ background:var(--surface-2); color:var(--text-1); width:96px; padding:8px; text-align:center; vertical-align:middle; }
.tt-seq{ font-size:13px; font-weight:500; }
.tt-time{ font-size:11px; color:var(--text-3); margin-top:2px; }
/* v6.5 单元格放大、单个课块缩小：同屏能看到更多班级与教室 */
.tt-cell{ min-height:96px; height:auto; width:140px; padding:4px; vertical-align:top; }
.tt-cell.editable{ cursor:pointer; }
.tt-cell.editable:hover{ background:var(--surface-2); }
/* 课块：叠一层暗化渐变，保证任何浅色课程色上白字都够对比 */
.tt-lesson{ border-radius:7px; padding:3px 6px; margin-bottom:3px; color:#fff; cursor:pointer; box-shadow:var(--shadow-sm);
  background-image:linear-gradient(rgba(0,0,0,.20),rgba(0,0,0,.20)); text-shadow:0 1px 1px rgba(0,0,0,.25); }
.tt-lesson:hover{ box-shadow:var(--shadow-md); }
.tt-course{ font-size:12px; font-weight:600; line-height:1.22; }
.tt-meta{ font-size:10.5px; opacity:.94; line-height:1.25; margin-top:1px; }

.modal-mask{ position:fixed; inset:0; background:rgba(16,28,24,.42); display:flex; align-items:center; justify-content:center; z-index:50; padding:16px; }
.modal{ background:var(--surface); border-radius:var(--radius-lg); box-shadow:var(--shadow-lg); padding:18px 20px; width:392px; max-width:100%; max-height:calc(100vh - 32px); overflow:auto; }
.modal h3{ margin:0; font-size:16px; font-weight:var(--fw-title); color:var(--text-1); }
.modal-row{ display:flex; align-items:center; gap:10px; margin-bottom:8px; }
.modal-row label{ width:44px; flex:none; font-size:13px; color:var(--text-2); font-weight:var(--fw-label); }
.modal-row .sel, .modal-row .inp{ flex:1; }
.modal-actions{ display:flex; gap:8px; justify-content:flex-end; margin-top:10px; }
/* v6.4 弹窗压缩：标题行右侧显示校区/校企徽标；成对字段同行 */
.modal-tight{ padding-bottom:14px; }
.modal-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px; }
.modal-badge{ font-size:12px; font-weight:var(--fw-title); padding:3px 11px; border-radius:var(--radius-pill); white-space:nowrap; }
.modal-badge.b-campus{ background:var(--brand-blue-tint); color:#1746CC; }
.modal-badge.b-school{ background:var(--line-school-tint); color:#5B4BD6; }
.modal-row.split{ display:grid; grid-template-columns:auto minmax(0,1fr) auto minmax(0,1fr); gap:8px; }
.modal-row.split label{ width:auto; }
/* 班级信息编辑弹窗：选中班级后展示的只读聚合信息（v6.4 压缩为紧凑三行） */
.class-info-box{ background:var(--surface-2); border-radius:var(--radius-md); padding:9px 11px; margin:2px 0 10px; }
.ci-line{ display:flex; align-items:baseline; gap:6px; font-size:13px; color:var(--text-1); line-height:1.45; }
.ci-line b{ font-size:14px; color:var(--brand-blue); }
.ci-sep{ color:var(--text-3); }
.ci-names{ color:var(--text-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ci-soft{ color:var(--text-2); font-size:12.5px; }
.ci-edit-line{ display:flex; align-items:center; gap:7px; flex-wrap:wrap; margin-top:7px; padding-top:7px; border-top:1px dashed var(--border); }
.ci-edit-line label{ font-size:12px; color:var(--text-2); font-weight:var(--fw-label); }
.inp-time{ width:104px; flex:none; padding:5px 8px; }
.inp-min{ width:74px; flex:none; padding:5px 8px; }
.ci-hours{ font-size:12px; color:var(--text-2); background:var(--surface); border-radius:var(--radius-sm); padding:3px 8px; }
.ci-edit-actions{ display:flex; align-items:center; gap:6px; margin-top:7px; }
.ci-edit-actions .btn, .ci-edit-actions .btn-ghost{ padding:5px 12px; font-size:12px; }
.ci-title{ font-size:12px; color:var(--text-2); margin-bottom:6px; font-weight:var(--fw-title); }
.ci-row{ display:flex; gap:10px; font-size:13px; padding:3px 0; }
.ci-label{ width:84px; flex:none; color:var(--text-2); }
.ci-val{ flex:1; color:var(--text-1); word-break:break-all; }
.ci-sub{ font-size:12px; font-weight:var(--fw-title); color:var(--text-1); margin:8px 0 2px; border-top:1px dashed var(--border); padding-top:8px; }
.muted.ok{ color:#1a9c5b; }
.tt-count{ font-weight:600; color:var(--text-2); background:var(--bg-2,#eef1f5); border-radius:8px; padding:1px 7px; display:inline-block; font-size:11px; }
.ci-row.inline-edit, .modal-row.inline-edit{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; row-gap:6px; }
.ci-row.inline-edit label, .modal-row.inline-edit label{ width:auto; flex:none; color:var(--text-2); font-size:12px; }
.inp-short{ width:104px; flex:none; max-width:100%; box-sizing:border-box; }
.inp, .sel{ max-width:100%; box-sizing:border-box; }
/* v6.1 课表视图内嵌校区概览：随课表滚动可见，无需切换页面 */
.campus-overview-embed{ margin-top:18px; }
.embed-title{ font-size:16px; font-weight:var(--fw-title); color:var(--text-1); margin:2px 0 10px; padding-left:10px; border-left:4px solid var(--brand-blue); line-height:1.3; }
.btn-danger{ background:#e5484d; color:#fff; border:none; border-radius:var(--radius-md); padding:9px 16px; font-size:13px; cursor:pointer; font-family:inherit; }
.btn-danger:hover{ background:#c93b40; }
.btn.sm, .btn-ghost.sm, .btn-danger.sm{ padding:5px 10px; font-size:12px; margin-left:0; }
.btn-ghost.sm{ border:1px solid var(--border); background:transparent; color:var(--text-2); border-radius:var(--radius-md); font-family:inherit; cursor:pointer; }
.btn-ghost.sm:hover{ color:var(--text-1); }
.ck{ display:inline-flex; align-items:center; gap:6px; font-size:13px; color:var(--text-2); }

/* 模块导航 */
.nav{ display:flex; gap:4px; margin-left:18px; flex-wrap:wrap; }
.nav-btn{ border:none; background:transparent; color:var(--text-2); border-radius:var(--radius-md); padding:7px 13px; font-size:13px; cursor:pointer; font-family:inherit; }
.nav-btn:hover{ background:var(--surface-2); color:var(--text-1); }
.nav-btn.active{ background:var(--brand-blue); color:#fff; }
.me-mini{ margin-left:auto; font-size:13px; color:var(--text-2); display:flex; align-items:center; gap:6px; }
.me-mini .btn-ghost{ margin-left:0; }

/* 业务模块列表 */
.biz-toolbar{ display:flex; gap:12px; flex-wrap:wrap; align-items:center; justify-content:space-between; }
.biz-filters{ display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.biz-filters .inp{ flex:none; width:180px; }
.biz-table{ border-collapse:separate; border-spacing:0; width:100%; }
.biz-table th, .biz-table td{ border-bottom:1px solid var(--border); padding:7px 10px; font-size:13px; text-align:left; }
.biz-table thead th{ background:var(--surface-2); color:var(--text-1); font-weight:var(--fw-title); }
.biz-table tbody tr:hover{ background:var(--surface-2); }
.row-actions{ display:flex; gap:6px; white-space:nowrap; }

/* 看板 */
.dash-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
.dash-cell{ background:var(--surface-2); border-radius:var(--radius-md); padding:11px 10px; text-align:center; }
.dash-cell b{ display:inline-block; min-width:44px; padding:5px 12px; margin-bottom:4px; font-size:23px; font-weight:var(--fw-strong); color:var(--text-1); background:var(--surface); border-radius:11px; box-shadow:0 1px 3px rgba(22,33,30,.10), inset 0 0 0 1px var(--border); }
.dash-cell span{ display:block; font-size:12px; color:var(--text-2); }
.dash-cell.warn b{ color:var(--warning); }
.bars{ display:flex; flex-direction:column; gap:10px; }
.bar-row{ display:flex; align-items:center; gap:10px; font-size:13px; }
.bar-label{ width:90px; color:var(--text-2); }
.bar-track{ flex:1; height:14px; background:var(--surface-2); border-radius:999px; overflow:hidden; }
.bar-fill{ display:block; height:100%; background:var(--brand-blue); border-radius:999px; }
.bar-val{ width:42px; text-align:right; color:var(--text-1); font-weight:500; }

/* 大屏 */
.screen-stats{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-bottom:var(--sp-5); }
.screen-card{ background:linear-gradient(135deg,var(--brand-blue),#6f9bff); color:#fff; border-radius:var(--radius-lg); padding:22px; box-shadow:var(--shadow-sm); }
.screen-card.warn{ background:linear-gradient(135deg,#f0a020,#f5c451); }
.screen-card .sc-num{ font-size:34px; font-weight:700; line-height:1.1; }
.screen-card .sc-label{ font-size:13px; opacity:.92; margin-top:4px; }
.screen-cols{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
.screen-list{ list-style:none; padding:0; margin:0; }
.screen-list li{ padding:8px 0; border-bottom:1px solid var(--border); font-size:13px; color:var(--text-1); }
.screen-list li.muted{ border:none; }

/* 大屏实时化（深色可投屏主题，整体作用域在 .screen 下） */
.screen{ background:linear-gradient(160deg,#0b1220,#0e1c34); color:#e6f0ff; border-radius:var(--radius-lg); padding:16px; min-height:72vh; box-shadow:0 0 0 1px rgba(255,255,255,.06) inset; }
.screen-top{ display:flex; align-items:center; gap:16px; flex-wrap:wrap; margin-bottom:14px; }
.screen-title{ font-size:20px; font-weight:800; letter-spacing:1px; color:#fff; }
.screen-sw{ display:flex; gap:8px; flex-wrap:wrap; }
.sw-btn{ background:rgba(255,255,255,.08); color:#cfe3ff; border:1px solid rgba(255,255,255,.16); border-radius:999px; padding:6px 14px; font-size:13px; cursor:pointer; font-family:inherit; }
.sw-btn:hover{ background:rgba(255,255,255,.14); }
.sw-btn.active{ background:var(--brand-blue); color:#fff; border-color:var(--brand-blue); }
.screen-tools{ margin-left:auto; display:flex; align-items:center; gap:10px; }
.screen-asof{ font-size:12px; color:#9fb3d1; }
.screen-kpis{ display:grid; grid-template-columns:repeat(6,1fr); gap:12px; }
.kp-card{ background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.12); border-radius:var(--radius-md); padding:14px; text-align:center; }
.kp-card.warn{ background:rgba(229,72,77,.16); border-color:rgba(229,72,77,.4); }
.kp-num{ font-size:30px; font-weight:800; color:#fff; line-height:1.1; }
.kp-card.warn .kp-num{ color:#ff9a9a; }
.kp-label{ font-size:12px; color:#9fb3d1; margin-top:4px; }
.screen-charts{ display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:12px; }
.chart-card{ background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.08); }
.chart-card h3{ color:#cfe3ff; margin:10px 0 0; font-size:14px; padding:0 12px; }
.chart-box{ width:100%; height:300px; }
.screen .screen-cols{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-top:12px; }
.screen .screen-cols .card{ background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.08); }
.screen .screen-cols h3{ color:#cfe3ff; margin:0 0 8px; font-size:14px; }
.screen .screen-list{ list-style:none; padding:0; margin:0; }
.screen .screen-list li{ padding:6px 0; border-bottom:1px solid rgba(255,255,255,.07); font-size:13px; color:#dbe7ff; }
.screen .screen-list li.muted{ border:none; color:#7e90ad; }
.screen .screen-list li.muted{ border:none; }
.screen .card h3{ color:#cfe3ff; }
@media (max-width:1000px){ .screen-kpis{ grid-template-columns:repeat(3,1fr);} .screen-charts,.screen .screen-cols{ grid-template-columns:1fr; } }
.biz-table td.names{ max-width:240px; white-space:normal; line-height:1.5; }
.ck-list{ display:flex; flex-wrap:wrap; gap:6px 14px; max-height:180px; overflow:auto; padding:6px 2px; }
.ck-list .ck{ font-weight:normal; margin:0; }
.btn-accent{ background:#37c871; color:#fff; border-color:#37c871; }

/* 表单内联校验 / 选择 / 批量 / 轻提示 */
.err-inp{ border-color:#e5484d !important; box-shadow:0 0 0 2px rgba(229,72,77,.18); }
.field-err{ color:#e5484d; font-size:12px; margin-top:-4px; margin-bottom:6px; flex-basis:100%; }
.batch-bar{ display:flex; align-items:center; gap:10px; background:var(--surface-2); }
.batch-bar .batch-info{ font-size:13px; color:var(--text-2); }
.batch-bar .batch-info b{ color:var(--text-1); }
.col-sel{ width:38px; text-align:center; }
.biz-table tbody tr.selrow{ background:rgba(79,134,247,.10); }
.btn-accent{ background:#37c871; color:#fff; border:none; border-radius:var(--radius-md); padding:9px 14px; font-size:13px; cursor:pointer; font-family:inherit; }
.btn-accent:hover{ background:#2fae61; }
.btn-accent.sm{ padding:5px 10px; font-size:12px; }
.toast{ position:fixed; left:50%; bottom:36px; transform:translateX(-50%); z-index:80; padding:11px 20px; border-radius:var(--radius-md); font-size:14px; font-family:inherit; box-shadow:var(--shadow-md,var(--shadow-sm)); }
.toast.ok{ background:#37c871; color:#fff; }
.toast.err{ background:#e5484d; color:#fff; }

/* v6.2 老师 & 通讯录 */
.btn-mini{ margin-left:8px; border:1px solid var(--border); background:var(--surface-2); color:var(--text-1); border-radius:var(--radius-md); padding:6px 10px; font-size:12px; cursor:pointer; font-family:inherit; }
.btn-mini:hover{ border-color:var(--brand,#4f86f7); color:var(--brand,#4f86f7); }
.tag-list{ display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.tag{ display:inline-block; padding:5px 11px; background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius-md); font-size:13px; color:var(--text-2); }
.sync-log{ background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius-md); padding:10px 12px; }
.log-line{ font-size:12px; color:var(--text-2); line-height:1.7; font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; }
.staff-view .card{ margin-bottom:16px; }
/* v6.3 可滚动卡片（老师名单 / 后台授权，条目多时不占用页面高度） */
.scroll-box{ max-height:300px; overflow:auto; border:1px solid var(--border); border-radius:var(--radius-md); }
.scroll-box .biz-table thead th{ position:sticky; top:0; z-index:1; }
.sel-sm{ padding:4px 8px; font-size:12px; }

/* v6.4 清新风补充：说明行、下拉可读性、勾选/标签对比度 */
.hint-line{ margin:8px 2px 0; font-size:12.5px; color:var(--text-2); line-height:1.55; }
.hint-line b{ color:var(--text-1); }
.sel{ color:var(--text-1); font-weight:var(--fw-label); }
.sel option{ color:var(--text-1); background:#fff; }
.sel:focus, .inp:focus{ outline:none; border-color:var(--brand-blue); box-shadow:0 0 0 3px rgba(30,91,255,.14); }
.tag{ background:var(--surface-2); border:1px solid var(--border); color:var(--text-1); font-weight:var(--fw-label); }
.role-chip{ background:var(--brand-blue-tint); color:#1746CC; font-weight:var(--fw-label); }
.muted{ color:var(--text-2); }
.tt-corner, .tt-period{ font-weight:var(--fw-title); }
.footer-note{ color:var(--text-3); font-size:12px; }

/* ===== v6.5 教室周视图：行=教室，列=星期，格内滚动 ===== */
.tt-week{ min-width:760px; }
.tt-week th.tt-corner{ width:92px; }
.tt-week .tt-period{ width:92px; }
.tw-cell{ width:auto; min-height:118px; max-height:150px; overflow-y:auto; padding:3px; vertical-align:top; }
.tw-cell.editable{ cursor:pointer; }
.tw-cell.editable:hover{ background:var(--surface-2); }
.tw-item{ display:flex; flex-wrap:wrap; align-items:baseline; gap:3px; border-radius:6px; padding:2px 5px; margin-bottom:3px;
  color:#fff; font-size:10.5px; line-height:1.3; cursor:pointer; box-shadow:0 1px 2px rgba(0,0,0,.12);
  text-shadow:0 1px 1px rgba(0,0,0,.22); }
.tw-item:hover{ filter:brightness(1.08); }
.tw-item .tw-per{ font-weight:700; opacity:.95; }
.tw-item .tw-t{ font-weight:600; }
.tw-item .tw-c{ opacity:.9; }
.tw-empty{ color:var(--text-3); font-size:10.5px; text-align:center; padding-top:26px; opacity:.65; }

/* ===== v6.5 管理后台 ===== */
.admin-head{ display:flex; align-items:baseline; gap:12px; margin:2px 0 12px; }
.admin-head h2{ margin:0; font-size:20px; font-weight:var(--fw-title, 700); color:var(--text-1); }
.perm-scroll{ max-height:520px; }
.perm-matrix th{ white-space:nowrap; }
.perm-matrix .pm-fn{ min-width:210px; }
.perm-matrix td.pm-cell{ text-align:center; width:88px; }
.perm-matrix td.pm-cell input{ width:15px; height:15px; cursor:pointer; }
.perm-matrix tr.pm-group td{ background:var(--surface-3, var(--surface-2)); font-weight:700; color:var(--text-1); font-size:12.5px; }
.pm-name{ display:block; color:var(--text-1); }
.pm-sub{ display:block; font-size:10.5px; color:var(--text-3); font-weight:400; }

/* ===== v7.0 课表「总表」视图（三视图聚合） ===== */
.tt-flat{ min-width:820px; }
.tt-flat th{ white-space:nowrap; }
.tt-flat tbody tr{ cursor:default; }
.tt-flat tbody tr.editable{ cursor:pointer; }
.tt-flat tbody tr.editable:hover{ background:var(--surface-2); }
.tt-flat .flat-dot{ display:inline-block; width:8px; height:8px; border-radius:2px; margin-right:6px; vertical-align:middle; }

/* ===== v7.0 大屏：时段筛选 + 7 KPI + 3 图表 ===== */
.screen-period{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:10px; padding:8px 12px;
  background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.10); border-radius:var(--radius-md); }
.screen-period .sp-label{ font-size:12.5px; color:#9fb3d1; }
.screen-period .sp-range{ margin-left:auto; font-size:12px; color:#9fb3d1; }
.screen-kpis{ grid-template-columns:repeat(7,1fr); }
.kp-card.good{ background:rgba(55,200,113,.14); border-color:rgba(55,200,113,.38); }
.kp-card.good .kp-num{ color:#8ef0b8; }
.screen-charts{ grid-template-columns:1fr 1fr 1fr; }
@media (max-width:1400px){ .screen-kpis{ grid-template-columns:repeat(4,1fr); } .screen-charts{ grid-template-columns:1fr 1fr; } }

/* ===== v7.0 学员库匹配器 / 班级入班出班 ===== */
.req-star{ color:#e5484d; margin-left:2px; }
.picker-field{ flex:1; min-width:0; }
.picker-list{ list-style:none; margin:6px 0 0; padding:0; max-height:180px; overflow:auto;
  border:1px solid var(--border); border-radius:var(--radius-md); background:var(--surface); }
.picker-list li{ display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:7px 10px; font-size:13px; color:var(--text-1); border-bottom:1px solid var(--border); }
.picker-list li:last-child{ border-bottom:none; }
.picker-list li .btn-mini{ margin-left:0; }
.picked-row{ display:flex; align-items:center; gap:8px; }
.tag-x{ color:#e5484d; text-decoration:none; margin-left:6px; font-weight:700; }
.tag-rm{ background:var(--brand-blue-tint); border-color:var(--brand-blue-tint); color:#1746CC; }
.member-row{ align-items:flex-start; }
.member-box{ flex:1; min-width:0; border:1px solid var(--border); border-radius:var(--radius-md); padding:10px; background:var(--surface-2); }
.member-cur{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:8px; max-height:150px; overflow:auto; }
.member-search .inp{ width:100%; }
.form-hint{ margin:2px 0 0; font-size:12px; line-height:1.5; }

/* ===== v7.0 打印（A4 自适应，横向）===== */
.print-only{ display:none; }
@media print{
  @page{ size:A4 landscape; margin:8mm; }
  html, body{ background:#fff !important; }
  .brand-bar, .nav, .nav-btn, .screen-tools, .toast, .modal-mask, .batch-bar,
  .tt-toolbar, .tt-filters, .hint-line, .campus-overview-embed, .user-card,
  .biz-toolbar, .row-actions, .btn-ghost, .btn-primary, .btn-danger, .btn-mini, .btn-accent { display:none !important; }
  .content{ padding:0 !important; margin:0 !important; }
  .card{ box-shadow:none !important; border:none !important; padding:0 !important; margin:0 !important; background:#fff !important; }
  .print-only{ display:block !important; }
  .print-head{ margin:0 0 6mm; text-align:center; color:#000; }
  .print-head h2{ margin:0; font-size:15pt; font-weight:700; color:#000; }
  .print-head span{ font-size:9pt; color:#444; }
  /* 课表表格：A4 横向自适应、字号收紧、避免跨页断行 */
  .tt-scroll{ overflow:visible !important; }
  .tt-grid, .tt-flat{ width:100% !important; min-width:0 !important; table-layout:fixed; font-size:8.5pt; }
  .tt-grid th, .tt-grid td, .tt-flat th, .tt-flat td{ padding:2px 3px !important; color:#000 !important; border:1px solid #999 !important; }
  .tt-grid thead th, .tt-flat thead th{ background:#eee !important; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  .tt-cell{ height:auto !important; max-height:none !important; overflow:visible !important; }
  .tw-cell{ height:auto !important; max-height:none !important; overflow:visible !important; }
  .tt-lesson, .tw-item{ box-shadow:none !important; text-shadow:none !important; -webkit-print-color-adjust:exact; print-color-adjust:exact; break-inside:avoid; font-size:7.5pt; }
  tr, td, th{ break-inside:avoid; page-break-inside:avoid; }
  thead{ display:table-header-group; }
}
@media (max-width:1000px){ .screen-kpis{ grid-template-columns:repeat(2,1fr); } .screen-charts{ grid-template-columns:1fr; } }
