/* ============ 老师端布局 ============ */
.app { display: flex; min-height: 100vh; }

.sidebar {
  width: 220px; flex-shrink: 0; background: var(--bg);
  border-right: 1px solid var(--border);
  display: flex; flex-direction: column; padding: 18px 12px;
  position: sticky; top: 0; height: 100vh;
}
.brand { display: flex; align-items: center; gap: 9px; padding: 4px 8px 20px; }
.brand-mark {
  width: 28px; height: 28px; border-radius: 8px;
  background: linear-gradient(135deg, var(--primary), #7c3aed);
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-weight: 700; font-size: 14px;
}
.brand-name { font-weight: 700; font-size: 15px; letter-spacing: -.01em; }

.nav { display: flex; flex-direction: column; gap: 2px; }
.nav-item {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 10px; border-radius: var(--r-sm);
  color: var(--text-2); font-size: 13.5px; font-weight: 500;
  transition: all .1s ease;
}
.nav-item:hover { background: var(--bg-hover); color: var(--text); }
.nav-item.active { background: var(--primary-soft); color: var(--primary); }
.nav-item .ico { width: 18px; text-align: center; font-size: 15px; }
.nav-item .count {
  margin-left: auto; font-size: 11px; font-weight: 700;
  background: var(--danger); color: #fff; padding: 1px 7px; border-radius: 99px;
}
.nav-item.active .count { background: var(--primary); }
.sidebar-foot { margin-top: auto; padding: 10px 8px 4px; display: flex; align-items: center; gap: 9px; }
.avatar { width: 30px; height: 30px; border-radius: 50%; background: var(--primary-soft); color: var(--primary); display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 13px; }
.sidebar-foot .who { font-size: 13px; font-weight: 500; }
.sidebar-foot .role { font-size: 11px; color: var(--text-3); }

.main { flex: 1; min-width: 0; }
.topbar {
  height: 56px; border-bottom: 1px solid var(--border);
  display: flex; align-items: center; gap: 14px; padding: 0 28px;
  background: var(--bg); position: sticky; top: 0; z-index: 50;
}
.topbar h1 { font-size: 16px; font-weight: 600; }
.search {
  margin-left: auto; width: 240px; padding: 7px 12px;
  border: 1px solid var(--border-strong); border-radius: var(--r-sm);
  background: var(--bg-subtle); font-size: 13px; color: var(--text);
}
.search:focus { outline: none; border-color: var(--primary); background: var(--bg); }

.content { padding: 26px 28px; max-width: 1080px; }
.page-title { font-size: 22px; font-weight: 700; letter-spacing: -.02em; }
.page-sub { color: var(--text-2); font-size: 13px; margin-top: 3px; }

/* 待办卡 */
.todo-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin: 20px 0 26px; }
.todo {
  background: var(--bg); border: 1px solid var(--border); border-radius: var(--r);
  padding: 16px; display: flex; flex-direction: column; gap: 6px;
  transition: all .12s ease; cursor: pointer;
}
.todo:hover { border-color: var(--border-strong); box-shadow: var(--shadow); }
.todo .tlabel { display: flex; align-items: center; gap: 7px; font-size: 13px; color: var(--text-2); }
.todo .tnum { font-size: 26px; font-weight: 700; letter-spacing: -.02em; }
.todo .tgo { font-size: 12px; color: var(--primary); font-weight: 600; margin-top: 2px; }

/* 区段标题 */
.section-head { display: flex; align-items: center; justify-content: space-between; margin: 24px 0 12px; }
.section-head h2 { font-size: 14px; font-weight: 600; color: var(--text); }

/* 学生列表行 */
.list { background: var(--bg); border: 1px solid var(--border); border-radius: var(--r); overflow: hidden; }
.list-row {
  display: flex; align-items: center; gap: 14px; padding: 13px 16px;
  border-bottom: 1px solid var(--border); cursor: pointer; transition: background .1s;
}
.list-row:last-child { border-bottom: none; }
.list-row:hover { background: var(--bg-hover); }
.sname { font-weight: 600; font-size: 14px; min-width: 64px; }
.smeta { color: var(--text-2); font-size: 12.5px; }
.sstats { display: flex; gap: 14px; margin-left: auto; font-size: 12px; color: var(--text-2); }
.sstats b { color: var(--text); font-weight: 600; }

/* 学生详情头部 */
.detail-head { display: flex; align-items: flex-start; gap: 16px; padding: 22px 0; }
.detail-head .avatar { width: 52px; height: 52px; font-size: 20px; }
.detail-name { font-size: 20px; font-weight: 700; letter-spacing: -.02em; }
.detail-meta { color: var(--text-2); font-size: 13px; margin-top: 3px; }
.detail-stats { display: flex; gap: 22px; margin-top: 14px; }
.detail-stats .st b { font-size: 18px; font-weight: 700; }
.detail-stats .st span { font-size: 12px; color: var(--text-2); display: block; }

/* 梯队分组 */
.tier-group { margin-top: 8px; }
.tier-label {
  display: flex; align-items: center; gap: 8px; padding: 14px 0 8px;
  font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
}
.tier-label .bar { width: 3px; height: 13px; border-radius: 2px; }

/* 匹配行 */
.match-row {
  display: flex; align-items: center; gap: 14px; padding: 14px 16px;
  border: 1px solid var(--border); border-radius: var(--r); margin-bottom: 8px;
  background: var(--bg); transition: all .12s;
}
.match-row:hover { border-color: var(--border-strong); box-shadow: var(--shadow); }
.match-main { flex: 1; min-width: 0; }
.match-co { font-weight: 600; font-size: 14px; }
.match-reason { color: var(--text-2); font-size: 12.5px; margin-top: 3px; }
.match-score { font-size: 20px; font-weight: 700; min-width: 38px; text-align: center; letter-spacing: -.02em; }
.match-actions { display: flex; gap: 6px; }

/* 抽屉 */
.overlay { position: fixed; inset: 0; background: rgba(24,24,27,.32); z-index: 100; opacity: 0; pointer-events: none; transition: opacity .18s; }
.overlay.show { opacity: 1; pointer-events: auto; }
.drawer {
  position: fixed; right: 0; top: 0; height: 100vh; width: 440px; max-width: 92vw;
  background: var(--bg); z-index: 101; box-shadow: var(--shadow-lg);
  transform: translateX(100%); transition: transform .22s cubic-bezier(.2,.8,.2,1);
  display: flex; flex-direction: column;
}
.drawer.show { transform: translateX(0); }
.drawer-head { padding: 20px 22px 14px; border-bottom: 1px solid var(--border); }
.drawer-head h3 { font-size: 15px; font-weight: 600; }
.drawer-head .muted { font-size: 12px; margin-top: 3px; }
.drawer-body { flex: 1; overflow-y: auto; padding: 18px 22px; }
.drawer-foot { padding: 14px 22px; border-top: 1px solid var(--border); display: flex; gap: 8px; }
.pitch-box {
  width: 100%; min-height: 200px; padding: 14px; border: 1px solid var(--border-strong);
  border-radius: var(--r); font-size: 13.5px; line-height: 1.7; resize: vertical; color: var(--text);
}
.pitch-box:focus { outline: none; border-color: var(--primary); }

/* 看板行 */
.kanban-row {
  display: flex; align-items: center; gap: 12px; padding: 12px 16px;
  border-bottom: 1px solid var(--border);
}
.kanban-row:last-child { border-bottom: none; }
.kanban-stu { font-weight: 600; min-width: 60px; }
.kanban-job { color: var(--text-2); font-size: 13px; }
.kanban-days { margin-left: auto; font-size: 12px; color: var(--text-2); }
.kanban-days.urgent { color: var(--danger); font-weight: 600; }

/* 草稿卡 */
.draft-card { border: 1px solid var(--border); border-radius: var(--r); padding: 16px; margin-bottom: 12px; background: var(--bg); }
.draft-card .warn-tag { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 600; color: var(--danger); background: var(--danger-bg); padding: 2px 8px; border-radius: 99px; }
.draft-q { font-weight: 600; margin: 8px 0; font-size: 14px; }
.draft-a { background: var(--bg-subtle); border-radius: var(--r-sm); padding: 12px; font-size: 13px; line-height: 1.7; color: var(--text-2); border-left: 3px solid var(--warn); }

/* 空提示 */
.empty { text-align: center; padding: 50px 20px; color: var(--text-3); font-size: 13px; }

/* ============ v0.6 督战看板：执行力信号 / 通过概率 / 三宫格 ============ */

/* 督战预警卡（首页今日督战） */
.duty-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin: 18px 0 26px; }
.duty {
  background: var(--bg); border: 1px solid var(--border); border-left: 3px solid var(--border-strong);
  border-radius: var(--r); padding: 14px; display: flex; flex-direction: column; gap: 4px;
  transition: all .12s ease; cursor: pointer;
}
.duty:hover { border-color: var(--border-strong); box-shadow: var(--shadow); transform: translateY(-1px); }
.duty.s-stall { border-left-color: var(--danger); }
.duty.s-timid { border-left-color: #7c3aed; }
.duty.s-gap   { border-left-color: var(--text-3); }
.duty.s-frust { border-left-color: var(--warn); }
.duty .dlabel { display: flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--text-2); }
.duty .dnum { font-size: 24px; font-weight: 700; letter-spacing: -.02em; }
.duty .dact { font-size: 11.5px; color: var(--primary); font-weight: 600; }

/* 执行力信号徽章 */
.sig-badge { display: inline-flex; align-items: center; gap: 3px; padding: 2px 7px; border-radius: 99px; font-size: 11px; font-weight: 600; line-height: 1.6; white-space: nowrap; }
.sig-stall { color: var(--danger); background: var(--danger-bg); }
.sig-timid { color: #7c3aed; background: #f5f3ff; }
.sig-gap   { color: var(--text-2); background: var(--bg-hover); }
.sig-frust { color: var(--warn); background: var(--tier-reach-bg); }

/* 三宫格（学生详情 · 执行力全貌） */
.exec-grid { display: grid; grid-template-columns: 1fr 1.3fr 1fr; gap: 14px; margin: 6px 0 22px; }
.exec-cell { background: var(--bg); border: 1px solid var(--border); border-radius: var(--r); padding: 16px; }
.exec-cell .ec-title { font-size: 11.5px; font-weight: 700; color: var(--text-3); text-transform: uppercase; letter-spacing: .04em; margin-bottom: 12px; }
.exec-metrics { display: flex; gap: 18px; flex-wrap: wrap; }
.exec-metrics .em b { font-size: 20px; font-weight: 700; }
.exec-metrics .em span { display: block; font-size: 11.5px; color: var(--text-2); margin-top: 2px; }
.exec-sigs { display: flex; flex-direction: column; gap: 8px; }
.exec-sigs .es-row { display: flex; align-items: center; gap: 8px; font-size: 12.5px; }
.exec-sigs .es-row .es-desc { color: var(--text-2); font-size: 11.5px; }

/* 通过概率条 */
.lvl { display: inline-flex; align-items: center; gap: 6px; }
.lvl-bar { width: 42px; height: 5px; border-radius: 3px; background: var(--bg-hover); overflow: hidden; position: relative; }
.lvl-bar i { position: absolute; left: 0; top: 0; height: 100%; border-radius: 3px; }
.lvl-pct { font-size: 12px; font-weight: 700; }
.lvl-tag { font-size: 10.5px; font-weight: 600; padding: 1px 6px; border-radius: 99px; }
.lvl-high { color: var(--tier-safety); background: var(--tier-safety-bg); }
.lvl-mid  { color: var(--tier-match);  background: var(--tier-match-bg); }
.lvl-low  { color: var(--tier-reach);  background: var(--tier-reach-bg); }

/* 学生列表行：督战字段 */
.list-row .sexec { display: flex; gap: 5px; flex-wrap: wrap; max-width: 210px; justify-content: flex-end; }
.list-row .stut { min-width: 120px; font-size: 11.5px; color: var(--text-2); }
.list-row .stut b { color: var(--text); font-weight: 600; }

/* 折叠区（分梯队降权） */
.collapse-head { display: flex; align-items: center; gap: 8px; cursor: pointer; padding: 14px 0; color: var(--text-2); font-size: 13px; font-weight: 600; user-select: none; }
.collapse-head:hover { color: var(--text); }
.collapse-body { display: none; }
.collapse-body.open { display: block; }

/* 视图切换（board 督战待办 / 全部投递） */
.view-tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--border); }
.vtab { padding: 10px 16px; font-size: 13px; font-weight: 600; color: var(--text-2); border-bottom: 2px solid transparent; margin-bottom: -1px; cursor: pointer; }
.vtab:hover { color: var(--text); }
.vtab.active { color: var(--primary); border-bottom-color: var(--primary); }
.vtab-count { display: inline-block; margin-left: 5px; padding: 1px 7px; border-radius: 99px; background: var(--bg-hover); font-size: 11px; font-weight: 600; color: var(--text-2); }
.vtab.active .vtab-count { background: var(--primary-soft); color: var(--primary); }
.filter-sel { padding: 6px 10px; border: 1px solid var(--border-strong); border-radius: var(--r-sm); font-size: 13px; background: var(--bg); color: var(--text); }

/* 画像字段行（冷启动产物展示/审核） */
.pf-row { padding: 7px 0; font-size: 13px; border-bottom: 1px solid var(--border); }
.pf-row:last-child { border: none; }
.pf-row b { display: inline-block; width: 72px; color: var(--text-2); font-size: 12px; font-weight: 600; }
.pf-input { width: 100%; padding: 10px 12px; border: 1px solid var(--border-strong); border-radius: var(--r-sm); font-size: 13px; resize: vertical; min-height: 64px; font-family: inherit; }

/* 新学生服务启动清单 */
.startup-list { background: var(--bg); border: 1px solid var(--border); border-radius: var(--r); overflow: hidden; margin-bottom: 18px; }
.startup-row { display: grid; grid-template-columns: 28px minmax(180px, 1fr) 70px 90px; align-items: center; gap: 10px; padding: 11px 14px; border-bottom: 1px solid var(--border); }
.startup-row:last-child { border-bottom: 0; }
.startup-row.done .startup-label { color: var(--text-3); text-decoration: line-through; }
.startup-check { width: 22px; height: 22px; border: 1px solid var(--border-strong); border-radius: 5px; color: transparent; background: var(--bg); display: inline-flex; align-items: center; justify-content: center; font-size: 12px; }
.startup-row.done .startup-check { color: #fff; background: var(--tier-safety); border-color: var(--tier-safety); }
.startup-label { font-size: 13px; font-weight: 500; }
.startup-owner, .startup-due { font-size: 11.5px; color: var(--text-2); }
.startup-due.overdue { color: var(--danger); font-weight: 600; }
