/* ============ 电脑端管理后台样式(养眼绿主题·第2期换肤 2026-10-04,主色 #14A178) ============ */
* { margin: 0; padding: 0; box-sizing: border-box; }
:root {
  --green: #14A178;
  --green-deep: #0B7552;
  --green-mid: #3DBE95;
  --green-light: #E7F7F0;
  --ink: #163a2d;
  --ink-2: #497263;
  --ink-3: #73988a;
  --bg: #F4F6FA;
  --card: #FFF;
  --line: #e6f2ed;
  --red: #E6473D;
  --success: #0B7552;
  --amber: #F59E0B;
  --blue: #14a178;
  --blue-light: #e9fef6;
  --radius: 14px;
  --shadow: 0 2px 14px rgba(22,58,45,0.05);
  --focus-ring: 0 0 0 3px rgba(20, 161, 120, 0.22);
  --sidebar: #0B7552;
  --sidebar-text: #D9EFE6;
  --sidebar-muted: #9CCBBB;
  --header-h: 58px;
  --on-accent: #FFFFFF; /* 品牌色块上的文字 */
}
body {
  font-family: 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif;
  background: var(--bg);
  color: var(--ink);
  font-size: 14px;
}
button { font-family: inherit; cursor: pointer; border: none; }
input, textarea, select { font-family: inherit; font-size: 14px; }

/* ---- 登录页(20261009 方案1绿系 SaaS 设计稿版:浅灰背景+白色轻阴影卡片+纯色主按钮) ---- */
.login-view {
  min-height: 100vh;
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--bg);
  background-image:
    radial-gradient(720px 420px at 12% -8%, rgba(20, 161, 120, 0.10), transparent 60%),
    radial-gradient(640px 400px at 108% 112%, rgba(11, 117, 82, 0.10), transparent 60%);
}
.login-view::before {
  content: '';
  position: absolute;
  top: -84px;
  right: -84px;
  width: 230px;
  height: 230px;
  border-radius: 50%;
  border: 55px solid rgba(20, 161, 120, 0.07);
}
.login-view::after {
  content: '';
  position: absolute;
  bottom: -100px;
  left: -100px;
  width: 270px;
  height: 270px;
  border-radius: 50%;
  border: 60px solid rgba(20, 161, 120, 0.05);
}
.login-view[hidden] { display: none !important; }
.login-card {
  width: 420px;
  max-width: calc(100vw - 32px);
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 18px;
  padding: 36px 36px 28px;
  box-shadow: 0 16px 60px rgba(22,58,45,0.09);
  display: flex;
  flex-direction: column;
}
/* 品牌图标:浅绿圆角方块 + 绿色线性学校 SVG(index.html 内联) */
.login-brand {
  width: 64px;
  height: 64px;
  margin: 0 auto;
  border-radius: 18px;
  background: #E7F7F0;
  display: flex;
  align-items: center;
  justify-content: center;
}
.login-brand svg { width: 34px; height: 34px; }
.login-card h1 { margin: 14px 0 0; text-align: center; font-size: 23px; font-weight: 800; color: var(--ink); letter-spacing: .02em; }
.login-sub { text-align: center; color: #14A178; font-size: 13px; margin: 8px 0 26px; }
.login-card label { font-size: 13px; font-weight: 600; color: var(--ink); display: block; margin-bottom: 16px; }
.login-card input {
  width: 100%;
  margin-top: 8px;
  border: 1px solid var(--line);
  border-radius: 9px;
  padding: 10px 12px;
  font-size: 14px;
  outline: none;
  background: var(--card);
  transition: border-color 0.15s, box-shadow 0.15s;
}
.login-card input::placeholder { color: var(--ink-3); }
.login-card input:focus { border-color: #14A178; box-shadow: 0 0 0 2px rgba(20, 161, 120, 0.18); }
/* 错误态(纯 CSS,:has 判断错误区非空 → 密码框红边框),不改登录 JS 逻辑 */
.login-err { color: #E6473D; font-size: 12px; line-height: 18px; min-height: 18px; margin: -10px 0 10px; text-align: left; }
.login-card:has(.login-err:not(:empty)) input[type="password"] { border-color: #E6473D; }
.login-card:has(.login-err:not(:empty)) input[type="password"]:focus { box-shadow: 0 0 0 2px rgba(230, 71, 61, 0.15); }
/* 登录按钮:作用域限定在登录卡片内,不改全局 .btn-primary(其他页面按钮不受影响) */
.login-card .btn-primary {
  background: #14A178;
  color: var(--on-accent);
  font-weight: 600;
  font-size: 15px;
  letter-spacing: 2px;
  border-radius: 8px;
  padding: 13px 0;
  margin-top: 6px;
  transition: background 0.15s;
}
.login-card .btn-primary:hover { background: #0B7552; opacity: 1; }
.login-card .btn-primary[disabled] { opacity: 0.5; cursor: default; }
.login-tip { color: var(--ink-3); font-size: 12px; margin-top: 14px; text-align: center; line-height: 1.7; }
/* 第8期批3:登录页「记住账号」行(复选框不与账号密码输入框同宽) */
.login-remember { display: flex !important; align-items: center; gap: 6px; font-size: 13px; font-weight: 400; color: var(--ink-2); margin: -6px 0 12px !important; cursor: pointer; }
.login-remember input { width: auto !important; margin-top: 0 !important; cursor: pointer; accent-color: #14A178; }
.login-remember .lr-tip { color: var(--ink-3); font-size: 12px; font-weight: 400; }

/* ---- 主框架 ---- */
.app-view { display: flex; min-height: 100vh; }
.sidebar {
  width: 232px;
  flex: none;
  background: #0B7552;
  color: #D9EFE6;
  display: flex;
  flex-direction: column;
}
.logo {
  height: 72px;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0 20px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.logo-mark {
  width: 34px;
  height: 34px;
  flex: none;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.14);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 17px;
}
.logo-txt b { display: block; font-size: 15px; font-weight: 800; color: var(--on-accent); line-height: 1.2; letter-spacing: .2px; }
.logo-txt i { display: block; font-style: normal; font-size: 10px; letter-spacing: .06em; color: #9CCBBB; opacity: .68; margin-top: 3px; }
.menu { flex: 1; overflow-y: auto; padding: 13px 10px 20px; }
.menu-group { font-size: 11px; font-weight: 800; letter-spacing: .07em; color: #9CCBBB; padding: 15px 11px 6px; }
.menu-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0 10px;
  min-height: 39px;
  border-radius: 9px;
  font-size: 13px;
  cursor: pointer;
  color: #D9EFE6;
  margin-bottom: 2px;
}
.menu-item:focus-visible { outline: none; box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.45); }
.menu-item:hover { background: rgba(255, 255, 255, 0.12); color: var(--on-accent); }
.menu-item.active { background: var(--green-light); color: var(--green-deep); font-weight: 800; }
.menu-item.disabled { opacity: 0.4; cursor: default; }
.side-foot { padding: 16px; border-top: 1px solid rgba(255, 255, 255, 0.15); }
.who { font-size: 12px; color: #A9D4C2; margin-bottom: 10px; line-height: 1.6; }
.btn-ghost {
  width: 100%;
  background: transparent;
  border: 1px solid rgba(255, 255, 255, 0.3);
  color: #D9EFE6;
  border-radius: 8px;
  padding: 8px 0;
  font-size: 13px;
}
.btn-ghost:hover { background: rgba(255, 255, 255, 0.08); }

.main { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.topbar {
  background: var(--card);
  border-bottom: 1px solid var(--line);
  padding: 0 28px;
  height: 58px;
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 16px;
  font-weight: 800;
}
.content { max-width: 1800px; margin: 0 auto; width: 100%; padding: 24px 28px 48px; box-sizing: border-box; }

/* ---- 通用组件 ---- */
.card { background: var(--card); border: 1px solid var(--line); border-radius: 14px; box-shadow: 0 2px 14px rgba(22,58,45,0.05); padding: 20px 22px; margin-bottom: 20px; }
.card h2 { font-size: 16px; margin-bottom: 16px; }
.stat-row { display: flex; gap: 18px; }
.stat {
  flex: 1;
  background: linear-gradient(135deg, #3DBE95, #0B7552);
  color: var(--on-accent);
  border-radius: 14px;
  padding: 24px;
}
.stat .num { font-size: 34px; font-weight: 900; }
.stat .lb { font-size: 13px; opacity: 0.85; margin-top: 6px; }
.form-row { display: flex; align-items: center; gap: 14px; margin-bottom: 18px; }
.form-row label { width: 150px; flex: none; color: var(--ink-2); font-size: 14px; }
.form-row input, .form-row textarea, .form-row select {
  flex: 1;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 10px 12px;
  outline: none;
}
.form-row input:focus, .form-row textarea:focus { border-color: var(--green); }
.form-actions { margin-left: 164px; }
.btn-save { background: var(--green); color: var(--on-accent); border-radius: 8px; padding: 10px 30px; font-weight: 700; }
.btn-save:hover { background: var(--green-deep); }
.tip { color: var(--ink-3); font-size: 13px; line-height: 1.8; }
.tag { display: inline-block; font-size: 12px; padding: 2px 10px; border-radius: 99px; background: var(--green-light); color: var(--green); margin-left: 8px; }
.placeholder {
  border: 2px dashed var(--line);
  border-radius: 14px;
  padding: 60px 20px;
  text-align: center;
  color: var(--ink-3);
  font-size: 14px;
  line-height: 2;
}

/* ---- Toast(设计稿右下角卡片式) ---- */
.toast {
  position: fixed;
  bottom: 22px;
  right: 24px;
  max-width: min(390px, calc(100vw - 32px));
  background: #1d3b30;
  color: var(--on-accent);
  padding: 11px 15px;
  border-radius: 10px;
  font-size: 12px;
  line-height: 1.6;
  box-shadow: 0 8px 26px rgba(0, 0, 0, 0.2);
  z-index: 9999;
  animation: toast-up 0.18s ease-out;
}
@keyframes toast-up { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
/* 第8期批3:toast 分型配色(默认深色不变) */
.toast-success { background: #12663F; }
.toast-error { background: #9F2723; }
.toast-warn { background: #8A5700; }

/* ============ ④-4 重操作页面通用 ============ */
.toolbar {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 16px;
  flex-wrap: wrap;
}
.toolbar b { font-size: 15px; }

/* 表单输入 */
.inp {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 9px 12px;
  outline: none;
  background: var(--card);
  color: var(--ink);
}
.inp:focus { border-color: var(--green); }
.w60 { width: 60px; }
.w70 { width: 70px; }
.w80 { width: 80px; }
.w100 { width: 100px; }
.w110 { width: 110px; }
.w120 { width: 120px; }
.w140 { width: 140px; }
.w160 { width: 160px; }

/* 按钮 */
.abtn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 36px;
  background: var(--green);
  color: var(--on-accent);
  border-radius: 8px;
  padding: 8px 16px;
  font-size: 13px;
  font-weight: 600;
  white-space: nowrap;
  transition: background .16s, border-color .16s, color .16s, transform .16s;
}
.abtn:active:not(:disabled) { transform: translateY(1px); }
.abtn:hover { background: var(--green-deep); }
.abtn.primary { background: linear-gradient(135deg, #3DBE95, #14A178); }
.abtn.ghost {
  background: var(--card);
  color: var(--green);
  border: 1px solid var(--green);
}
.abtn.ghost:hover { background: var(--green-light); }
.abtn.small { padding: 6px 12px; font-size: 12px; }
.abtn.danger-text {
  background: transparent;
  color: var(--red);
  padding: 6px 10px;
}
.abtn.danger-text:hover { background: #FDECEB; }
.abtn:disabled { opacity: .5; cursor: default; }
/* 键盘焦点环(设计稿 focus-visible):按钮与表单控件统一 */
.abtn:focus-visible { outline: none; box-shadow: var(--focus-ring); }
.inp:focus-visible,
.form-row input:focus-visible,
.form-row textarea:focus-visible,
.form-row select:focus-visible,
.tbl input:focus-visible,
.tbl select:focus-visible { border-color: var(--green); box-shadow: var(--focus-ring); }

/* 表格(设计稿:表体12px、表头11px/800、绿色调行悬停) */
.tbl { width: 100%; border-collapse: collapse; font-size: 12px; }
.tbl th, .tbl td {
  padding: 11px 13px;
  border-bottom: 1px solid var(--line);
  text-align: center;
  vertical-align: middle;
}
.tbl th { background: var(--bg); color: var(--ink-2); font-weight: 800; font-size: 11px; letter-spacing: .01em; white-space: nowrap; }
.tbl td.l, .tbl th.l { text-align: left; }
.tbl tbody tr:hover { background: color-mix(in srgb, var(--green) 4%, var(--card)); }
.tbl .empty { padding: 36px 0; color: var(--ink-3); }
.tbl input:not([type="checkbox"]):not([type="radio"]), .tbl select {
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 6px 8px;
  font-size: 13px;
  outline: none;
  max-width: 100%;
}
.tbl input:focus, .tbl select:focus { border-color: var(--green); }
.ops a { color: var(--green); cursor: pointer; margin: 0 6px; white-space: nowrap; }
.ops a:hover { text-decoration: underline; }
.ops a.danger, a.danger { color: var(--red); }
.dim { color: var(--ink-3); font-size: 12px; }

/* 状态灯(设计稿:圆角小矩形+圆点+软底高对比文字) */
.pill { display: inline-flex; align-items: center; gap: 5px; padding: 4px 8px; border-radius: 6px; font-size: 11px; font-weight: 800; line-height: 1.4; white-space: nowrap; }
.pill::before { content: ''; width: 5px; height: 5px; border-radius: 50%; background: currentColor; flex: none; }
.pill.green { background: #E7F7EC; color: #15803D; }
.pill.amber { background: #FFF7E6; color: #B77908; }
.pill.red { background: #FDECEB; color: #E6473D; }
.pill.blue { background: #e9fef6; color: #14a178; }
.pill.gray { background: #edf6f3; color: var(--ink-3); }

/* 导入结果 */
.import-result { max-width: 860px; margin: 0 auto; }
.import-result h2 { font-size: 18px; margin-bottom: 14px; }
.import-result ul { margin: 10px 0 0 20px; line-height: 1.9; }
.err-text { color: var(--red); }
.err-tbl th { background: #FDF1F0; }

/* 学校字段编辑器 */
.ed-sec {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 12px;
  margin-bottom: 12px;
  overflow: hidden;
}
.ed-sec > summary {
  padding: 13px 18px;
  font-weight: 700;
  cursor: pointer;
  user-select: none;
  background: #FAFBFE;
}
.ed-body { padding: 16px 18px; }
.ef { display: flex; flex-direction: column; gap: 6px; margin-bottom: 12px; font-size: 13px; color: var(--ink-2); }
.ef input, .ef select, .ef textarea {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 9px 12px;
  outline: none;
  font-size: 13px;
  color: var(--ink);
}
.ef input:focus, .ef select:focus, .ef textarea:focus { border-color: var(--green); }
.ef textarea { resize: vertical; line-height: 1.7; }
.grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0 20px; }
.sub-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
  flex-wrap: nowrap;
}
.sub-row.wrap { flex-wrap: wrap; }
.sub-row input, .sub-row select {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 8px 10px;
  outline: none;
  font-size: 13px;
  min-width: 0;
}
.sub-row input:focus, .sub-row select:focus { border-color: var(--green); }
.mini { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--ink-3); }
.mini input, .mini select { min-width: 130px; }
.sub-sec {
  border: 1px solid var(--line);
  border-radius: 10px;
  margin-bottom: 10px;
  background: #FCFDFF;
}
.sub-sec > summary { padding: 10px 14px; cursor: pointer; font-weight: 600; }
.sub-sec > summary .danger { margin-left: 10px; font-size: 12px; }
.sub-sec .sub-row { padding: 0 14px; }
.sub-sec .sub-row:first-of-type { padding-top: 12px; }
.sub-sec .sub-row:last-of-type { padding-bottom: 12px; }

.save-bar {
  position: sticky;
  bottom: 0;
  background: rgba(244, 246, 250, 0.92);
  padding: 14px 0;
  display: flex;
  align-items: center;
  z-index: 5;
}

/* 复选行 */
.ck { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--ink-2); white-space: nowrap; }
.ck input { width: 15px; height: 15px; }

/* 预约日期时段 */
.day-card {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 14px 16px;
  margin-bottom: 12px;
  background: #FCFDFF;
}
.day-head { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; }
.day-head input[type="date"] {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 8px 10px;
}
.slot-box { padding-left: 4px; }

/* 名额小统计 */
.stat-mini {
  flex: 1;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 16px 20px;
}
.stat-mini b { font-size: 24px; color: var(--green); display: block; }
.stat-mini span { font-size: 12px; color: var(--ink-3); }

/* 素材 */
.media-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; margin-bottom: 8px; }
.media-box {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 14px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  align-items: flex-start;
}
.media-box h4 { font-size: 14px; }
.media-box .inp { width: 100%; }
.thumb {
  width: 100%;
  height: 130px;
  border-radius: 10px;
  background: var(--bg);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.thumb img { width: 100%; height: 100%; object-fit: cover; }
.fid { word-break: break-all; line-height: 1.6; }
.cell-img {
  width: 130px;
  max-height: 84px;
  border-radius: 8px;
  object-fit: cover;
  background: #000;
  display: block;
}

/* 题库 */
.opt-card {
  border: 1px solid var(--line);
  border-left: 3px solid var(--green);
  border-radius: 10px;
  padding: 12px 14px;
  margin-bottom: 10px;
  background: #FCFDFF;
}

/* 公告/直播 页签 */
.news-tabs-x { display: flex; gap: 10px; margin-bottom: 16px; }

/* 老师管理-学校选择 */
.school-pick {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px 16px;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 14px 16px;
}
.school-pick .pick { color: var(--ink); white-space: normal; }

/* ============ ④-5 业务处理页 ============ */
/* 筛选条 */
.filter-bar { display: flex; flex-direction: column; gap: 12px; }
.filter-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.w150 { width: 150px; }
.seg { display: inline-flex; border: 1px solid var(--line); border-radius: 10px; overflow: hidden; align-self: flex-start; }
.seg a {
  padding: 8px 18px;
  font-size: 13px;
  cursor: pointer;
  color: var(--ink-2);
  background: var(--card);
  border-right: 1px solid var(--line);
  user-select: none;
}
.seg a:last-child { border-right: none; }
.seg a:hover { color: var(--green); }
.seg a.on { background: var(--green); color: var(--on-accent); font-weight: 600; }

/* 状态灯补色 */
.pill.amber { background: #FEF3E2; color: #B45309; }
.pill.red { background: #FDECEB; color: var(--red); }

/* 文本单元格 */
.cell-text { max-width: 340px; line-height: 1.6; white-space: pre-wrap; word-break: break-all; }
.reply-text {
  margin-top: 6px;
  padding: 8px 10px;
  background: var(--green-light);
  border-radius: 8px;
  font-size: 12px;
  color: var(--ink-2);
  line-height: 1.6;
  white-space: pre-wrap;
  word-break: break-all;
}
.stars { color: var(--amber); letter-spacing: 2px; white-space: nowrap; }
.nowrap { white-space: nowrap; }
.detail-cell { max-width: 320px; word-break: break-all; }
code {
  background: #F2F4F9;
  border-radius: 6px;
  padding: 2px 8px;
  font-size: 12px;
  color: var(--green-deep);
  white-space: nowrap;
}

/* 阶段标签 */
.stage-tag {
  display: inline-block;
  padding: 3px 12px;
  border-radius: 99px;
  font-size: 12px;
  white-space: nowrap;
}
.stage-tag.s1 { background: #edf6f3; color: var(--ink-3); }
.stage-tag.s2 { background: #FEF3E2; color: #B45309; }
.stage-tag.s3 { background: var(--green-light); color: var(--green); }
.stage-tag.s4 { background: #e7fff6; color: #0b5e48; }
.stage-tag.s5 { background: #E7F7EC; color: var(--success); }
/* CRM-2 批3:新7阶段补 2 色(s6=已报名 蓝 / s7=已流失 红灰) */
.stage-tag.s6 { background: #dbfdf1; color: #0b7552; }
.stage-tag.s7 { background: #FEE2E2; color: #991B1B; }

/* CRM-2 批3:三视图切换条 + 卡片视图 + 标签chip */
.lead-viewbar { display: flex; align-items: center; gap: 12px; padding: 10px 14px; background: var(--card); border: 1px solid var(--line); border-radius: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.lead-viewtip { font-size: 12px; }
.tag-chip { display: inline-block; padding: 2px 8px; margin: 1px 2px 1px 0; background: var(--green-light); color: var(--green-deep); border-radius: 99px; font-size: 11px; line-height: 1.5; white-space: nowrap; }
/* CRM-2 遗留项:标签颜色变体(对应 leadCfgSave 的 leadTags[].color,7色) */
.tag-chip.tc-red    { background:#FEF2F2; color:#B91C1C; }
.tag-chip.tc-orange { background:#FFF7ED; color:#C2410C; }
.tag-chip.tc-gold   { background:#FFFBEB; color:#A16207; }
.tag-chip.tc-green  { background:#ECFDF5; color:#047857; }
.tag-chip.tc-blue   { background:#effff9; color:#0b7552; }
.tag-chip.tc-purple { background:#f5fffb; color:#0b5e48; }
.tag-chip.tc-gray   { background:#F3F4F6; color:#4b635a; }
.tag-real-chip.tc-red:hover    { background:#FEE2E2; }
.tag-real-chip.tc-orange:hover { background:#FFEDD5; }
.tag-real-chip.tc-gold:hover   { background:#FEF3C7; }
.tag-real-chip.tc-green:hover  { background:#D1FAE5; }
.tag-real-chip.tc-blue:hover   { background:#dbfdf1; }
.tag-real-chip.tc-purple:hover { background:#e7fff6; }
.tag-real-chip.tc-gray:hover   { background:#E5E7EB; }
.cell-tags { max-width: 200px; overflow: hidden; }
.lead-card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; padding: 4px 0 12px; }
.lead-card { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; box-shadow: 0 1px 4px rgba(0,0,0,.05); transition: box-shadow .15s, transform .15s; }
.lead-card:hover { box-shadow: 0 4px 14px rgba(0,0,0,.1); transform: translateY(-2px); }
.lead-card .lc-top { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.lead-card .lc-name { font-size: 14px; color: var(--ink); flex: 1; }
.lead-card .lc-stage-row { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; flex-wrap: wrap; }
.lead-card .lc-line { font-size: 12px; color: var(--ink-2); margin: 3px 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lead-card .lc-tags { margin: 6px 0 2px; }
.lead-card .lc-foot { display: flex; align-items: center; gap: 6px; margin-top: 10px; padding-top: 8px; border-top: 1px dashed var(--line); font-size: 12px; }
.lead-card .lc-act { color: var(--green); cursor: pointer; font-weight: 600; }
.lead-card .lc-act:hover { text-decoration: underline; }
.kanban-card .kc-tags { margin: 4px 0 2px; }

/* CRM-2 批4:客户360 区块"这是什么"说明 + 空块 + 真实标签增删 */
.c360-sec-desc { font-size: 12px; color: var(--ink-3); line-height: 1.7; margin: 2px 0 10px; padding: 6px 10px; background: var(--bg); border-left: 3px solid var(--green-light); border-radius: 4px; }
.c360-empty-block { padding: 14px 16px; background: #fafbfc; border: 1px dashed #d6e3de; border-radius: 10px; font-size: 12px; color: var(--ink-2); line-height: 1.8; }
.tag-real { display: flex; flex-wrap: wrap; gap: 4px; padding: 8px 0; }
.tag-real-chip { cursor: pointer; display: inline-flex; align-items: center; gap: 4px; }
.tag-real-chip:hover { background: #d5efe2; }
.tag-real-chip .tc-x { font-style: normal; font-weight: 700; color: var(--green-deep); opacity: .6; }
.tag-real-chip:hover .tc-x { opacity: 1; color: var(--red); }
.tag-add-bar { display: flex; align-items: center; gap: 8px; padding: 8px 0; flex-wrap: wrap; }

/* 弹层 */
.modal-mask {
  position: fixed;
  inset: 0;
  background: rgba(22,58,45,0.45);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 500;
  padding: 30px;
}
.modal {
  background: var(--card);
  width: 560px;
  max-width: 100%;
  max-height: 86vh;
  border-radius: 14px;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  box-shadow: 0 18px 50px rgba(11, 117, 82, 0.22);
}
.modal.wide { width: 760px; }
.modal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 15px 20px;
  border-bottom: 1px solid var(--line);
  font-size: 15px;
}
.modal-x { font-size: 22px; color: var(--ink-3); cursor: pointer; line-height: 1; }
.modal-x:hover { color: var(--red); }
.modal-body { padding: 18px 20px; overflow-y: auto; }

/* 改期日历 */
.date-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 10px;
  margin-top: 12px;
}
.date-cell {
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--card);
  padding: 10px 6px;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  font-size: 13px;
}
.date-cell b { font-size: 14px; }
.date-cell span { color: var(--ink-3); font-size: 12px; }
.date-cell em { font-style: normal; font-size: 11px; color: var(--success); }
.date-cell i {
  font-style: normal;
  font-size: 10px;
  color: #B45309;
  background: #FEF3E2;
  border-radius: 6px;
  padding: 1px 6px;
}
.date-cell:hover:not(:disabled) { border-color: var(--green); }
.date-cell.sel { border-color: var(--green); background: var(--green-light); }
.date-cell.off, .date-cell:disabled {
  background: #F7F8FB;
  color: var(--ink-3);
  cursor: not-allowed;
}
.date-cell:disabled em { color: var(--ink-3); }
.slot-grid { display: flex; flex-wrap: wrap; gap: 10px; }
.slot-cell {
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--card);
  padding: 10px 18px;
  cursor: pointer;
  font-size: 13px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
}
.slot-cell em { font-style: normal; font-size: 11px; color: var(--success); }
.slot-cell:hover:not(:disabled) { border-color: var(--green); }
.slot-cell.sel { border-color: var(--green); background: var(--green-light); }
.slot-cell:disabled { background: #F7F8FB; color: var(--ink-3); cursor: not-allowed; }
.slot-cell:disabled em { color: var(--ink-3); }

/* ============ ④-5 看板 ============ */
.stat-cards {
  display: grid;
  grid-template-columns: repeat(8, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}
@media (max-width: 1200px) { .stat-cards { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 900px) { .stat-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.kpi {
  background: var(--card);
  border-radius: 13px;
  border: 1px solid var(--line);
  padding: 17px 18px;
  text-align: center;
  transition: background .16s, border-color .16s, box-shadow .16s;
}
.kpi:hover { box-shadow: var(--shadow); }
.kpi b { display: block; font-size: 27px; font-weight: 800; margin-bottom: 4px; }
.kpi span { font-size: 12px; color: var(--ink-3); white-space: nowrap; }
.kpi.blue b { color: var(--green); }
.kpi.green b { color: var(--success); }
.kpi.amber b { color: var(--amber); }
.kpi.red b { color: var(--red); }
.kpi.gray b { color: var(--ink-3); }

.dash-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-bottom: 16px;
}
@media (max-width: 900px) { .dash-grid { grid-template-columns: 1fr; } }
.funnel { display: flex; flex-direction: column; gap: 12px; margin-top: 12px; }
.funnel-row { display: flex; align-items: center; gap: 12px; font-size: 13px; }
.funnel-row .fl { width: 70px; color: var(--ink-2); flex-shrink: 0; }
.funnel-row .ft { flex: 1; height: 22px; background: var(--bg); border-radius: 6px; overflow: hidden; }
.funnel-row .ft i { display: block; height: 100%; border-radius: 6px; transition: width .3s; }
.funnel-row:nth-child(1) .ft i { background: #8FDBC0; }
.funnel-row:nth-child(2) .ft i { background: #3DBE95; }
.funnel-row:nth-child(3) .ft i { background: var(--green); }
.funnel-row:nth-child(4) .ft i { background: #0e8c6b; }
.funnel-row:nth-child(5) .ft i { background: #F59E0B; }
.funnel-row:nth-child(6) .ft i { background: var(--success); }
.funnel-row b { width: 40px; text-align: right; }

.trend {
  display: flex;
  align-items: flex-end;
  gap: 3px;
  height: 160px;
  margin-top: 14px;
  border-bottom: 1px solid var(--line);
  padding-bottom: 2px;
}
.trend-col {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: center;
  height: 100%;
  gap: 3px;
  min-width: 0;
}
.trend-col i {
  width: 100%;
  max-width: 18px;
  background: linear-gradient(180deg, #3DBE95, var(--green));
  border-radius: 3px 3px 0 0;
  min-height: 2px;
}
.trend-col span { font-size: 9px; color: var(--ink-3); transform: scale(0.9); }

.tag.red { background: #FDECEB; color: var(--red); }

/* ============ ④-5 导出 ============ */
.export-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 12px; }
.export-opt {
  border: 1.5px solid var(--line);
  border-radius: 12px;
  padding: 16px 18px;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  gap: 6px;
  position: relative;
}
.export-opt:hover { border-color: #bfe8d9; }
.export-opt.sel { border-color: var(--green); background: var(--green-light); }
.export-opt b { font-size: 14px; }
.export-opt input { align-self: flex-start; }
.export-opt .ex-date { font-style: normal; font-size: 11px; color: #B45309; }

/* ============ ④-5 分页 ============ */
.pager {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  margin: 18px 0 40px;
}

/* ============ M-06 线索跟进 CRM ============ */
.pill.blue { background: var(--green-light); color: var(--green); }

.ld-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.ld-head h3 { font-size: 17px; margin: 0 0 6px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ld-head .dim { font-size: 13px; }
.ld-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 12px;
  background: var(--bg);
  border-radius: 10px;
  padding: 12px 14px;
  margin-top: 12px;
  font-size: 13px;
}
.ld-grid label { display: block; color: var(--ink-3); font-size: 12px; margin-bottom: 3px; }
.ld-sec { margin: 20px 0 10px; font-size: 14px; }
.tbl.sm { font-size: 12px; }
.tbl.sm th, .tbl.sm td { padding: 7px 10px; }

.ld-msgs { display: flex; flex-direction: column; gap: 8px; }
.ld-msg { border: 1px solid var(--line); border-radius: 10px; padding: 9px 12px; font-size: 13px; line-height: 1.7; }
.ld-msg .dim { font-size: 12px; margin-bottom: 2px; }

/* 跟进时间线 */
.tl { list-style: none; margin: 0; padding: 0 0 0 6px; }
.tl-item { position: relative; padding: 0 0 14px 22px; }
.tl-item::before {
  content: '';
  position: absolute;
  left: 5px; top: 14px; bottom: -4px;
  width: 2px; background: var(--line);
}
.tl-item:last-child::before { display: none; }
.tl-dot {
  position: absolute;
  left: 0; top: 4px;
  width: 12px; height: 12px;
  border-radius: 50%;
  background: var(--card);
  border: 3px solid var(--green);
  box-sizing: border-box;
}
.tl-dot.o { border-color: #B45309; }
.tl-dot.d { border-color: var(--success); }
.tl-card {
  background: var(--bg);
  border-radius: 10px;
  padding: 9px 12px;
}
.tl-meta { display: flex; align-items: center; gap: 8px; font-size: 12px; flex-wrap: wrap; }
.tl-meta .dim { font-size: 12px; }
.tl-content { margin-top: 5px; font-size: 13px; line-height: 1.7; white-space: pre-wrap; word-break: break-all; }

.ld-form-row { display: flex; align-items: flex-end; gap: 14px; margin-top: 10px; flex-wrap: wrap; }
.ld-form-row label { font-size: 12px; color: var(--ink-3); display: flex; flex-direction: column; gap: 4px; }
.ld-form-row .inp { width: 130px; }
.ld-form-row #lf-date { width: 150px; }

/* 重复线索合并 */
.dp-group { border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; margin-bottom: 14px; }
.dp-head { font-weight: 600; margin-bottom: 8px; }
.dp-item { display: flex; align-items: flex-start; gap: 10px; padding: 8px 4px; border-top: 1px dashed var(--line); cursor: pointer; }
.dp-main { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 13px; }
.dp-main .dim { font-size: 12px; }
.dp-ops { text-align: right; margin-top: 6px; }

/* ============ 七期批2:顶栏环境/模式徽章 + 生产红色横幅 + 概览状态卡 ============ */
.topbar { justify-content: space-between; }
.env-badges { display: flex; align-items: center; gap: 8px; }
.env-badge, .mode-badge {
  display: inline-block; font-size: 12px; line-height: 1;
  padding: 5px 10px; border-radius: 99px; white-space: nowrap;
}
.env-badge.env-prod { background: #FDECEB; color: #C0392B; border: 1px solid #F5B7B1; font-weight: 600; }
.env-badge.env-test { background: #FFF4E5; color: #B45309; border: 1px solid #F8DCA8; }
.env-badge.env-dev { background: #E8F5E9; color: #1E7E34; border: 1px solid #BBE5C0; }
.env-badge.env-unknown { background: #FDECEB; color: #C0392B; border: 1px solid #F5B7B1; font-weight: 600; }
.mode-badge { background: var(--green-light); color: var(--green); }
.prod-banner {
  background: #C0392B; color: var(--on-accent); text-align: center;
  padding: 8px 16px; font-size: 13px; font-weight: 600; letter-spacing: 1px;
}
.st-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 10px; margin-top: 12px; }
.st-item { border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; font-size: 13px; line-height: 1.8; }
.st-item .st-k { color: var(--ink-3); font-size: 12px; display: block; }
.st-item .st-v { font-weight: 600; word-break: break-all; }
.st-item.warn .st-v { color: #C0392B; }
.st-item.ok .st-v { color: var(--success); }
.chip-row { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.chip { font-size: 12px; padding: 3px 10px; border-radius: 99px; background: #f1faf7; color: #47695c; border: 1px solid #e3f5ee; }
.chip.off { background: #FDECEB; color: #C0392B; border-color: #F5B7B1; }
.chip.on { background: #E8F5E9; color: #1E7E34; border-color: #BBE5C0; }
.auth-tbl { width: 100%; border-collapse: collapse; font-size: 13px; margin-top: 10px; }
.auth-tbl th, .auth-tbl td { border-bottom: 1px solid var(--line); padding: 7px 10px; text-align: left; }
.auth-tbl th { color: var(--ink-3); font-weight: 500; font-size: 12px; }

/* ============ UI 一期批1:预备样式类(纯新增,未接入任何页面,不影响现有表现) ============ */

/* ---- 按钮层级补充:次按钮/文字按钮/实心危险钮(与现有 .abtn.primary/.ghost/.small/.danger-text 并存) ---- */
.abtn.secondary { background: var(--green-light); color: var(--green); }
.abtn.secondary:hover { background: #dcfbef; }
.abtn.text { background: transparent; color: var(--green); padding: 6px 10px; }
.abtn.text:hover { background: var(--green-light); }
.abtn.danger { background: var(--red); color: var(--on-accent); }
.abtn.danger:hover { background: #C93A31; }

/* ---- 通用空态块预留(与现有 .tbl .empty/.placeholder 并存,不替换不修改) ---- */
.empty-block { text-align: center; padding: 60px 24px; }
.empty-block .eb-title { font-size: 15px; font-weight: 600; color: var(--ink-2); }
.empty-block .eb-desc { font-size: 13px; color: var(--ink-3); margin-top: 8px; line-height: 1.8; }
.empty-block .eb-action { margin-top: 20px; display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }

/* ============ 七期UI批1(P7-全局):表格可读性 + 页面标题区 + 危险操作弹窗 ============
   说明:纯追加,不改既有类;仅 .tbl tbody tr:hover/.tbl .empty 为后到规则微调,不影响结构 */

/* ---- 表头固定:.content 无 overflow(窗口级滚动),表头吸附视口顶部;th 已有底色 #F7F9FD 防透出 ---- */
.tbl thead th { position: sticky; top: 0; z-index: 3; box-shadow: inset 0 -1px 0 var(--line); }

/* ---- 行悬停高亮强化(原 #FAFBFE 对比过低,数据行定位更醒目) ---- */
.tbl tbody tr:hover { background: color-mix(in srgb, var(--green) 4%, var(--card)); }

/* ---- 长文本省略:批2 起各页对长文本列加 .cell-ell,悬停 title 查看完整内容 ---- */
.cell-ell { max-width: 240px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ---- 表格空数据:居中 + 留白加大(与 .empty-block 整页空态并存) ---- */
.tbl .empty { text-align: center; padding: 48px 0; }

/* ---- 页面标题区(七期统一骨架:页面标题 + 统计摘要「共 N 条」) ---- */
.page-head { display: flex; align-items: flex-end; gap: 12px; margin-bottom: 20px; }
.page-head .ph-title { font-size: 23px; font-weight: 800; letter-spacing: -.02em; }
.page-head .ph-desc { font-size: 12px; font-weight: 400; color: var(--ink-3); margin-top: 5px; }
.page-head .ph-total { font-size: 13px; color: var(--ink-3); padding-bottom: 2px; }
.page-head .ph-total b { color: var(--green); font-size: 15px; }

/* ---- 危险操作弹窗:红色头部 + 影响说明区(确认前必须说清影响范围,不只写「确定吗」) ---- */
.modal.danger .modal-head { border-bottom: 2px solid var(--red); }
.modal.danger .modal-head b { color: var(--red); }
.dg-impact { background: #FDECEB; border: 1px solid #F5C6C3; border-radius: 10px; padding: 12px 14px; font-size: 13px; color: #8A2A24; line-height: 1.8; margin: 12px 0; }
.dg-impact b { color: var(--red); }

/* ============================================================
   第1期:全局框架新增组件样式(纯追加,不修改既有类)
   色板严格使用 :root 变量;动效 150~300ms;尊重 prefers-reduced-motion
   ============================================================ */

/* ---- 面包屑 ---- */
.breadcrumb { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--ink-3); margin-bottom: 10px; flex-wrap: wrap; }
.breadcrumb a { color: var(--ink-3); cursor: pointer; }
.breadcrumb a:hover { color: var(--green); }
.breadcrumb .sep { color: var(--ink-3); opacity: .5; }
.breadcrumb .cur { color: var(--ink); font-weight: 600; }

/* ---- 页面标题区增强:功能说明行 + 帮助按钮 ---- */
.page-head .ph-desc { font-size: 13px; color: var(--ink-3); margin-top: 4px; line-height: 1.6; }
.page-head .ph-right { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.help-btn {
  display: inline-flex; align-items: center; gap: 4px;
  background: var(--green-light); color: var(--green);
  border: 1px solid #c7fbe7; border-radius: 99px;
  padding: 4px 12px; font-size: 12px; cursor: pointer;
}
.help-btn:hover { background: #dcfbef; }

/* ---- tooltip(悬停提示) ---- */
[data-tip] { position: relative; cursor: help; }
[data-tip]::after {
  content: attr(data-tip);
  position: absolute; bottom: calc(100% + 6px); left: 50%;
  transform: translateX(-50%) translateY(4px);
  background: rgba(22,58,45,0.92); color: var(--on-accent);
  font-size: 12px; line-height: 1.5; padding: 6px 10px; border-radius: 6px;
  white-space: nowrap; max-width: 280px; white-space: normal;
  opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s;
  z-index: 100;
}
[data-tip]:hover::after { opacity: 1; transform: translateX(-50%) translateY(0); }

/* ---- 骨架屏 ---- */
.skeleton { background: var(--card); border-radius: 14px; padding: 20px; }
.sk-line { height: 14px; background: linear-gradient(90deg, #edf6f3 25%, #F7F9FC 37%, #edf6f3 63%); background-size: 400% 100%; border-radius: 6px; margin-bottom: 12px; animation: sk-shimmer 1.4s ease infinite; }
.sk-line.w50 { width: 50%; } .sk-line.w70 { width: 70%; } .sk-line.w30 { width: 30%; }
.sk-card { height: 100px; background: linear-gradient(90deg, #edf6f3 25%, #F7F9FC 37%, #edf6f3 63%); background-size: 400% 100%; border-radius: 12px; animation: sk-shimmer 1.4s ease infinite; }
@keyframes sk-shimmer { 0% { background-position: 100% 50%; } 100% { background-position: 0 50%; } }

/* ---- 批量工具条(悬浮底部) ---- */
.batch-bar {
  position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%) translateY(20px);
  background: linear-gradient(135deg, #14A178, #0B7552); color: var(--on-accent);
  border-radius: 12px; padding: 10px 18px;
  display: flex; align-items: center; gap: 14px;
  box-shadow: 0 8px 28px rgba(11, 117, 82, 0.32);
  z-index: 998; opacity: 0; pointer-events: none;
  transition: opacity .25s, transform .25s;
}
.batch-bar.show { opacity: 1; transform: translateX(-50%) translateY(0); pointer-events: auto; }
.batch-bar .bb-count { font-size: 14px; font-weight: 700; }
.batch-bar .bb-ops { display: flex; gap: 8px; }
.batch-bar .abtn { background: rgba(255,255,255,0.18); color: var(--on-accent); border: 1px solid rgba(255,255,255,0.3); }
.batch-bar .abtn:hover { background: rgba(255,255,255,0.28); }
.batch-bar .abtn.danger { background: var(--red); border-color: var(--red); }
.batch-bar .bb-close { cursor: pointer; opacity: .7; font-size: 18px; line-height: 1; }
.batch-bar .bb-close:hover { opacity: 1; }

/* ---- 空状态增强 ---- */
.empty-block .eb-icon { font-size: 48px; margin-bottom: 12px; }
.empty-block .eb-action .abtn { min-width: 120px; }

/* ---- 侧边栏分组折叠 ---- */
.menu-group { cursor: pointer; display: flex; align-items: center; justify-content: space-between; user-select: none; }
.menu-group .gt-arrow { transition: transform .2s; font-size: 10px; opacity: .6; }
.menu-group.collapsed .gt-arrow { transform: rotate(-90deg); }
.menu-group.collapsed + .menu-group-items { display: none; }

/* ---- 抽屉 ---- */
.drawer-mask {
  position: fixed; inset: 0; background: rgba(22,58,45,0.45);
  z-index: 600; opacity: 0; pointer-events: none; transition: opacity .2s;
}
.drawer-mask.show { opacity: 1; pointer-events: auto; }
.drawer {
  position: fixed; top: 0; right: 0; height: 100vh; width: 420px; max-width: 90vw;
  background: var(--card); z-index: 601;
  transform: translateX(100%); transition: transform .25s;
  display: flex; flex-direction: column;
  box-shadow: -8px 0 30px rgba(22,58,45,0.12);
}
.drawer.show { transform: translateX(0); }
.drawer-head { padding: 16px 20px; border-bottom: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; font-weight: 700; }
.drawer-body { flex: 1; overflow-y: auto; padding: 16px 20px; }

/* ---- 帮助面板 ---- */
.help-panel { background: #F7F9FD; border: 1px solid var(--line); border-radius: 10px; padding: 14px 18px; margin-bottom: 16px; font-size: 13px; line-height: 1.8; color: var(--ink-2); }
.help-panel b { color: var(--ink); }
.help-panel ul { margin: 6px 0 0 20px; }
.help-panel code { background: #eef8f4; }

/* ---- 确认弹窗(基于 .modal 扩展) ---- */
.confirm-dialog .modal-body { text-align: center; padding: 28px 24px; }
.confirm-dialog .cd-icon { font-size: 40px; margin-bottom: 12px; }
.confirm-dialog .cd-msg { font-size: 15px; color: var(--ink); margin-bottom: 8px; line-height: 1.6; }
.confirm-dialog .cd-impact { font-size: 12px; color: var(--ink-3); margin-bottom: 18px; }
.confirm-dialog .cd-actions { display: flex; gap: 10px; justify-content: center; }

/* ---- 顶栏右侧扩展(搜索/通知/账号) ---- */
.topbar-right { display: flex; align-items: center; gap: 14px; }
.topbar-search {
  position: relative; display: flex; align-items: center;
  background: var(--bg); border: 1px solid var(--line); border-radius: 99px;
  padding: 6px 14px; width: 260px;
}
.topbar-search input { border: none; background: transparent; outline: none; flex: 1; font-size: 13px; }
.topbar-search .ts-icon { color: var(--ink-3); margin-right: 6px; }
.topbar-bell {
  position: relative; width: 36px; height: 36px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; color: var(--ink-2); font-size: 16px;
}
.topbar-bell:hover { background: var(--bg); }
.topbar-bell .bell-dot {
  position: absolute; top: 6px; right: 7px;
  width: 8px; height: 8px; border-radius: 50%; background: var(--red);
  border: 2px solid var(--card);
}
.topbar-user { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--ink-2); }
.topbar-user .tu-name { font-weight: 600; color: var(--ink); }
.topbar-user .tu-role { font-size: 11px; color: var(--ink-3); background: var(--green-light); padding: 2px 8px; border-radius: 99px; }

/* ---- 通知下拉 ---- */
.notif-panel {
  position: absolute; top: 48px; right: 0; width: 320px;
  background: var(--card); border-radius: 12px; box-shadow: 0 12px 40px rgba(22,58,45,0.15);
  z-index: 500; overflow: hidden;
}
.notif-panel .np-head { padding: 12px 16px; border-bottom: 1px solid var(--line); font-weight: 700; font-size: 14px; }
.notif-panel .np-empty { padding: 32px 16px; text-align: center; color: var(--ink-3); font-size: 13px; }

/* ---- 搜索结果下拉 ---- */
.search-panel {
  position: absolute; top: 42px; left: 0; right: 0; width: 260px;
  background: var(--card); border-radius: 10px; box-shadow: 0 8px 28px rgba(22,58,45,0.15);
  z-index: 500; max-height: 360px; overflow-y: auto;
}
.search-panel .sp-empty { padding: 24px 16px; text-align: center; color: var(--ink-3); font-size: 13px; }

/* ---- 第8期批1:通知中心 + 全局搜索 增强 ---- */
/* 铃铛红点升级为数字徽章 */
.topbar-bell .bell-dot {
  min-width: 16px; height: 16px; width: auto; padding: 0 4px;
  display: flex; align-items: center; justify-content: center;
  font-size: 10px; font-weight: 700; color: var(--on-accent); line-height: 1;
  border: 2px solid var(--card);
}
/* 通知面板 */
.notif-panel .np-head { display: flex; align-items: center; justify-content: space-between; }
.notif-panel .np-refresh { cursor: pointer; font-size: 13px; opacity: .6; transition: opacity .15s; }
.notif-panel .np-refresh:hover { opacity: 1; }
.notif-panel .np-row {
  display: flex; align-items: center; gap: 10px; padding: 11px 16px;
  text-decoration: none; color: var(--ink); font-size: 13px;
  border-bottom: 1px solid var(--line); transition: background .15s; cursor: pointer;
}
.notif-panel .np-row:hover { background: var(--green-light); }
.notif-panel .np-icon { font-size: 15px; }
.notif-panel .np-label { flex: 1; }
.notif-panel .np-num {
  min-width: 20px; height: 20px; border-radius: 99px; background: var(--red); color: var(--on-accent);
  display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; padding: 0 5px;
}
.notif-panel .np-num.np-zero { background: var(--line); color: var(--ink-3); }
.notif-panel .np-num.np-err { background: transparent; color: var(--ink-3); }
.notif-panel .np-foot { padding: 8px 16px; font-size: 11px; color: var(--ink-3); background: var(--bg); }
/* AI-10 批5:任务到期提醒通知 */
.notif-panel .np-sep { border-top: 1px solid var(--line); margin: 0; }
.notif-panel .np-section { padding: 4px 0; }
.notif-panel .np-sec-head { padding: 8px 16px 4px; font-size: 12px; font-weight: 700; color: var(--ink-2); display: flex; align-items: center; gap: 6px; }
.notif-panel .np-badge { background: #dc2626; color: var(--on-accent); font-size: 11px; padding: 1px 6px; border-radius: 999px; font-weight: 600; }
.notif-panel .np-task-row { display: flex; align-items: center; gap: 8px; padding: 7px 16px; cursor: pointer; font-size: 13px; transition: background .15s; }
.notif-panel .np-task-row:hover { background: var(--green-light); }
.notif-panel .np-task-row.np-read { opacity: .5; }
.notif-panel .np-task-icon { flex-shrink: 0; }
.notif-panel .np-task-title { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.notif-panel .np-task-date { flex-shrink: 0; font-size: 11px; color: var(--ink-3); }
.notif-panel .np-more { padding: 4px 16px; font-size: 11px; }
.notif-panel .np-readall { padding: 6px 16px 8px; font-size: 12px; color: var(--blue); cursor: pointer; text-align: right; }
.notif-panel .np-readall:hover { text-decoration: underline; }
/* 搜索面板:加宽 + 分节 */
.search-panel { width: 420px; left: auto; right: 0; max-height: 70vh; }
.search-panel .sp-sec { border-bottom: 1px solid var(--line); }
.search-panel .sp-sec:last-of-type { border-bottom: none; }
.search-panel .sp-sec-title { padding: 8px 14px 4px; font-size: 11px; font-weight: 700; color: var(--ink-3); letter-spacing: .5px; }
.search-panel .sp-row {
  display: flex; align-items: center; gap: 8px; padding: 9px 14px;
  text-decoration: none; transition: background .15s; cursor: pointer;
}
.search-panel .sp-row:hover { background: var(--green-light); }
.search-panel .sp-main { font-size: 13px; color: var(--ink); font-weight: 600; }
.search-panel .sp-sub { font-size: 11px; color: var(--ink-3); margin-left: auto; max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.search-panel .sp-none { padding: 8px 14px 10px; font-size: 12px; color: var(--ink-3); }
.search-panel .sp-foot { padding: 8px 14px; font-size: 11px; color: var(--ink-3); background: var(--bg); }

/* ---- 首登引导 tour ---- */
.tour-mask {
  position: fixed; inset: 0; background: rgba(22,58,45,0.55);
  z-index: 800; display: flex; align-items: center; justify-content: center;
  animation: fade-in .25s;
}
.tour-card {
  background: var(--card); border-radius: 16px; width: 440px; max-width: 90vw;
  padding: 24px; box-shadow: 0 20px 60px rgba(0,0,0,0.25);
}
.tour-card .tc-step { font-size: 12px; color: var(--green); font-weight: 700; margin-bottom: 6px; }
.tour-card h3 { font-size: 18px; margin-bottom: 10px; }
.tour-card p { color: var(--ink-2); font-size: 14px; line-height: 1.7; margin-bottom: 18px; }
.tour-card .tc-actions { display: flex; justify-content: space-between; align-items: center; }

/* ============ 第3期:招生业务模块样式 ============ */

/* ---- 三视图切换(列表/看板/日历) ---- */
.view-switch { display: inline-flex; background: #eef7f4; border-radius: 8px; padding: 3px; }
.view-switch a { padding: 5px 14px; border-radius: 6px; font-size: 13px; color: var(--ink-2); cursor: pointer; transition: all .2s; }
.view-switch a.on { background: var(--card); color: var(--green); font-weight: 600; box-shadow: 0 1px 3px rgba(0,0,0,.08); }

/* ---- 看板视图 ---- */
.kanban { display: flex; gap: 12px; overflow-x: auto; padding: 4px 0 12px; min-height: 400px; }
.kanban-col { flex: 0 0 240px; background: var(--bg); border-radius: 12px; padding: 10px; display: flex; flex-direction: column; }
.kanban-col.kc-overdue { background: #fef2f2; }
.kanban-col.kc-preview { background: #faf5ee; }
.kanban-col .kc-head { display: flex; align-items: center; justify-content: space-between; padding: 4px 6px 10px; border-bottom: 1px solid #e6f0ec; margin-bottom: 8px; }
.kanban-col .kc-head b { font-size: 13px; color: var(--ink); }
.kanban-col .kc-head .kc-count { background: var(--card); border-radius: 10px; padding: 1px 8px; font-size: 12px; color: var(--ink-2); box-shadow: 0 1px 2px rgba(0,0,0,.06); }
.kanban-col.kc-preview .kc-head .kc-count { background: #fff7ed; color: #b45309; }
.kanban-col .kc-preview-tag { font-size: 10px; color: #b45309; background: #fef3c7; padding: 1px 6px; border-radius: 6px; margin-left: 4px; }
.kanban-cards { flex: 1; display: flex; flex-direction: column; gap: 8px; min-height: 60px; }
.kanban-card { background: var(--card); border-radius: 10px; padding: 10px 12px; box-shadow: 0 1px 4px rgba(0,0,0,.06); cursor: grab; transition: box-shadow .15s, transform .15s; border: 1px solid #edf6f3; }
.kanban-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,.1); }
.kanban-card.dragging { opacity: .5; transform: scale(.98); }
.kanban-card .kc-school { font-weight: 600; font-size: 13px; color: var(--ink); margin-bottom: 2px; }
.kanban-card .kc-parent { font-size: 12px; color: var(--ink-2); }
.kanban-card .kc-meta { font-size: 11px; color: var(--ink-3); margin-top: 4px; }
.kanban-card .kc-phone { font-size: 11px; color: var(--green); margin-top: 2px; cursor: pointer; }
.kanban-col .kc-drop-hint { text-align: center; font-size: 11px; color: var(--ink-3); padding: 8px; border: 1px dashed #d6e3de; border-radius: 8px; margin-top: auto; }
.kanban-col.drag-over { background: #E7F7F0; outline: 2px dashed var(--green); outline-offset: -2px; }

/* ---- 日历视图 ---- */
.cal-nav { display: flex; align-items: center; gap: 12px; padding: 8px 0; }
.cal-nav button { padding: 4px 12px; border-radius: 6px; border: 1px solid #d8e8e2; background: var(--card); cursor: pointer; font-size: 13px; }
.cal-nav button:hover { border-color: var(--green); color: var(--green); }
.cal-nav .cal-title { font-weight: 600; font-size: 15px; min-width: 120px; text-align: center; }
.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.cal-cell { background: var(--card); border: 1px solid #edf6f3; border-radius: 10px; min-height: 110px; padding: 8px; display: flex; flex-direction: column; }
.cal-cell.cal-head { background: var(--bg); min-height: 32px; text-align: center; font-weight: 600; font-size: 12px; color: var(--ink-2); padding: 6px; }
.cal-cell.cal-other { background: #fafbfc; opacity: .5; }
.cal-cell.cal-today { border-color: var(--green); background: #f5fffb; }
.cal-cell .cal-day { font-size: 12px; font-weight: 600; color: var(--ink-2); margin-bottom: 4px; }
.cal-cell .cal-evts { flex: 1; display: flex; flex-direction: column; gap: 3px; overflow: hidden; }
.cal-evt { font-size: 11px; background: #E7F7F0; color: var(--green-deep); padding: 2px 6px; border-radius: 4px; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cal-evt:hover { background: var(--green); color: var(--on-accent); }
.cal-evt.cal-confirmed { background: #dcfce7; color: #15803d; }
.cal-evt.cal-pending { background: #fef3c7; color: #b45309; }
.cal-cell .cal-more { font-size: 10px; color: var(--ink-3); text-align: center; cursor: pointer; }

/* ---- AI-10 批2:日历视图增强 ---- */
.cal-toolbar { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin-bottom: 14px; }
.cal-nav-group { display: flex; gap: 8px; align-items: center; }
.cal-title { font-size: 16px; font-weight: 700; color: var(--ink); margin-left: 6px; }
.cal-filter-group { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.cal-filter-label { font-size: 13px; color: var(--ink-2); display: flex; align-items: center; gap: 4px; cursor: pointer; }
.cal-filter-label input { cursor: pointer; }
.cal-status-select { font-size: 13px; padding: 4px 8px; border: 1px solid #d8e8e2; border-radius: 6px; background: var(--card); color: var(--ink); }
.cal-status-select:disabled { opacity: .5; cursor: not-allowed; }
/* 事件类型着色 */
.cal-evt.cal-evt-task { background: #dbfdf1; color: #0b7552; }
.cal-evt.cal-evt-task:hover { background: #14a178; color: var(--on-accent); }
.cal-evt.cal-evt-appt { background: #d1fae5; color: #047857; }
.cal-evt.cal-evt-appt:hover { background: #10b981; color: var(--on-accent); }
.cal-evt.cal-evt-overdue { background: #fee2e2; color: #b91c1c; }
.cal-evt.cal-evt-overdue:hover { background: #ef4444; color: var(--on-accent); }
/* 完成/取消状态弱化 */
.cal-evt.cal-evt-done { text-decoration: line-through; opacity: .6; }
.cal-evt.cal-evt-cancelled { text-decoration: line-through; opacity: .4; }
.cal-evt-time { font-size: 10px; color: inherit; opacity: .8; margin-right: 2px; }
/* 详情面板 */
.cal-detail, .cal-day-list { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,.45); display: flex; align-items: center; justify-content: center; z-index: 900; padding: 16px; }
.cal-detail-card { background: var(--card); border-radius: 12px; padding: 20px; max-width: 420px; width: 100%; box-shadow: 0 20px 60px rgba(0,0,0,.2); max-height: 80vh; overflow-y: auto; }
.cal-detail-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.cal-detail-type { font-size: 12px; padding: 2px 8px; border-radius: 10px; font-weight: 600; }
.cal-detail-type.type-task { background: #dbfdf1; color: #0b7552; }
.cal-detail-type.type-appt { background: #d1fae5; color: #047857; }
.cal-detail-close { background: none; border: none; font-size: 20px; color: var(--ink-3); cursor: pointer; padding: 0 4px; }
.cal-detail-close:hover { color: var(--ink); }
.cal-detail-title { font-size: 16px; font-weight: 700; color: var(--ink); margin-bottom: 10px; }
.cal-detail-row { font-size: 13px; color: var(--ink-2); margin-bottom: 6px; display: flex; gap: 6px; }
.cal-detail-label { color: var(--ink-3); width: 64px; flex-shrink: 0; }
.cal-detail-actions { margin-top: 14px; display: flex; gap: 8px; }
.cal-badge-overdue { background: #fee2e2; color: #b91c1c; font-size: 11px; padding: 1px 6px; border-radius: 8px; font-weight: 600; }
/* 日事件列表 */
.cal-day-events { display: flex; flex-direction: column; gap: 6px; }
.cal-day-evt { font-size: 13px; padding: 6px 10px; border-radius: 6px; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ---- 进度条(咨询进度) ---- */
.progress-track { background: #edf6f3; border-radius: 8px; height: 8px; overflow: hidden; min-width: 120px; }
.progress-bar { height: 100%; background: linear-gradient(90deg, #14A178, #3DBE95); border-radius: 8px; transition: width .4s ease; }
.progress-bar.warn { background: linear-gradient(90deg, #f59e0b, #fbbf24); }
.progress-bar.danger { background: linear-gradient(90deg, #e6473d, #f87171); }
.stay-days { font-size: 12px; color: var(--ink-2); }
.stay-days.overdue { color: var(--red); font-weight: 600; }

/* ---- 快捷回复模板 ---- */
.quick-reply-box { background: var(--bg); border-radius: 10px; padding: 10px 12px; margin-bottom: 12px; }
.quick-reply-box .qr-title { font-size: 12px; color: var(--ink-2); margin-bottom: 6px; font-weight: 600; }
.quick-reply-box .qr-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.quick-reply-box .qr-tag { font-size: 12px; padding: 3px 10px; background: var(--card); border: 1px solid #d8e8e2; border-radius: 14px; cursor: pointer; color: var(--ink); transition: all .15s; }
.quick-reply-box .qr-tag:hover { border-color: var(--green); color: var(--green); background: #f0fff9; }
.quick-reply-box .qr-tag.qr-using { background: var(--green); color: var(--on-accent); border-color: var(--green); }

/* ---- 评分统计 ---- */
.rating-stats { display: flex; align-items: center; gap: 16px; padding: 12px 16px; background: var(--bg); border-radius: 10px; margin-bottom: 12px; }
.rating-stats .rs-avg { font-size: 28px; font-weight: 800; color: var(--amber); }
.rating-stats .rs-bars { flex: 1; }
.rating-stats .rs-row { display: flex; align-items: center; gap: 8px; font-size: 12px; }
.rating-stats .rs-row .rs-star { width: 40px; color: var(--ink-2); }
.rating-stats .rs-row .rs-bar { flex: 1; height: 6px; background: #edf6f3; border-radius: 3px; overflow: hidden; }
.rating-stats .rs-row .rs-bar i { display: block; height: 100%; background: var(--amber); }
.rating-stats .rs-row .rs-cnt { width: 32px; text-align: right; color: var(--ink-2); }

/* ---- 批量条增强(第1期已有 .batch-bar,此处补充) ---- */
.batch-bar .bb-info { color: #D6F0E5; font-size: 13px; }

/* ---- 名额进度条 ---- */
.quota-progress { display: flex; align-items: center; gap: 10px; }
.quota-progress .qp-bar { flex: 1; height: 10px; background: #edf6f3; border-radius: 6px; overflow: hidden; }
.quota-progress .qp-bar i { display: block; height: 100%; background: linear-gradient(90deg, #14A178, #3DBE95); border-radius: 6px; transition: width .3s; }
.quota-progress .qp-bar.warn i { background: linear-gradient(90deg, #f59e0b, #fbbf24); }
.quota-progress .qp-bar.danger i { background: linear-gradient(90deg, #e6473d, #f87171); }
.quota-progress .qp-text { font-size: 12px; color: var(--ink-2); white-space: nowrap; }
.quota-alert-badge { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: var(--red); background: #fef2f2; padding: 2px 8px; border-radius: 10px; font-weight: 600; }

/* ---- 问卷拖拽排序 ---- */
.opt-card.dragging { opacity: .4; }
.opt-card.drag-over { border-top: 3px solid var(--green); }
.bf-preview { background: var(--bg); border-radius: 10px; padding: 16px; margin-top: 12px; }
.bf-preview .bfp-title { font-size: 13px; font-weight: 600; margin-bottom: 10px; color: var(--ink-2); }
.bf-preview .bfp-item { margin-bottom: 12px; }
.bf-preview .bfp-item .bfp-label { font-size: 13px; margin-bottom: 4px; }
.bf-preview .bfp-item .bfp-required { color: var(--red); margin-left: 2px; }
.bf-preview .bfp-item input[type="text"], .bf-preview .bfp-item textarea { width: 100%; padding: 8px; border: 1px solid #d8e8e2; border-radius: 6px; font-size: 13px; }
.bf-preview .bfp-opts { display: flex; flex-wrap: wrap; gap: 8px; }
.bf-preview .bfp-opts label { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; }

/* ---- 手机号操作 ---- */
.phone-cell { display: inline-flex; align-items: center; gap: 4px; }
.phone-cell .ph-dial { color: var(--green); cursor: pointer; font-size: 12px; }
.phone-cell .ph-copy { color: var(--ink-3); cursor: pointer; font-size: 12px; }
.phone-cell .ph-copy:hover { color: var(--green); }
.tour-card .tc-dots { display: flex; gap: 6px; }
.tour-card .tc-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--line); }
.tour-card .tc-dot.on { background: var(--green); }

/* ---- 动效:页面淡入 ---- */
.page-fade-in { animation: page-fade .25s ease; }
@keyframes page-fade { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }

/* ---- 动效:弹窗缩放(覆盖原 .modal 入场) ---- */
.modal { animation: modal-pop .2s ease; }
@keyframes modal-pop { from { opacity: 0; transform: scale(0.96); } to { opacity: 1; transform: scale(1); } }
.modal-mask { animation: fade-in .2s ease; }
@keyframes fade-in { from { opacity: 0; } to { opacity: 1; } }

/* ---- 动效:toast 滑入 ---- */
.toast { animation: toast-in .25s ease; }
@keyframes toast-in { from { opacity: 0; transform: translate(-50%, -10px); } to { opacity: 1; transform: translate(-50%, 0); } }

/* ---- 动效:弹窗退出(第9期) ---- */
.modal-mask.closing { animation: fade-out .2s ease forwards; pointer-events: none; }
.modal.closing { animation: modal-pop-out .2s ease forwards; }
@keyframes fade-out { from { opacity: 1; } to { opacity: 0; } }
@keyframes modal-pop-out { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(.96); } }
/* 原生 div 弹窗(cloud.js/pages-config.js/pages-insight.js)退出复用同一动画 */
.modal-mask-native.closing { animation: fade-out .2s ease forwards; pointer-events: none; }

/* ---- 响应式:表格横向滚动包裹(第9期) ---- */
.table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.table-wrap > table { margin: 0; }
/* 卡片内表格包裹继承卡片圆角,overflow-x 自动裁剪表格边角 */
.card > .table-wrap { border-radius: inherit; }
/* 非直接子元素(如工具条+表格)也给圆角,避免溢出卡片 */
.card .table-wrap { border-radius: 12px; }

/* ---- 可访问性:focus-visible 焦点环(第9期) ---- */
:focus-visible {
  outline: 2px solid var(--green);
  outline-offset: 2px;
  border-radius: 4px;
}
button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid var(--green);
  outline-offset: 2px;
}

/* ---- 按钮按压反馈 ---- */
.abtn:active { transform: scale(0.97); }
.abtn { transition: background .15s, transform .1s; }

/* ---- 尊重系统「减少动态效果」 ---- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}

/* ============================================================
   CRM-3:AI 招生工作台样式
   ============================================================ */
.ai-workbench {
  display: grid;
  grid-template-columns: 200px 1fr 320px;
  gap: 16px;
  height: calc(100vh - 180px);
  min-height: 500px;
}
/* AI-7 批1:右侧面板收起时,第三列缩为窄条 */
.ai-workbench.ai-right-collapsed-mode {
  grid-template-columns: 200px 1fr 36px;
}
/* 修复:类选择器 display:flex 会覆盖 hidden 属性,需显式补回隐藏规则 */
.ai-right-col[hidden], .ai-right-collapsed[hidden] { display: none !important; }

/* AI-7 批1:左侧窄栏 */
.ai-side-rail {
  display: flex;
  flex-direction: column;
  gap: 12px;
  background: var(--card);
  border-radius: 12px;
  border: 1px solid var(--line);
  padding: 12px;
  overflow-y: auto;
}
.ai-new-chat {
  width: 100%;
  justify-content: center;
  font-size: 13px;
  padding: 8px 0;
}
.ai-rail-group {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.ai-rail-title {
  font-size: 12px;
  color: var(--ink-3);
  padding: 4px 2px;
  border-bottom: 1px solid var(--line);
  margin-bottom: 4px;
}
.ai-rail-item {
  padding: 7px 8px;
  border-radius: 8px;
  font-size: 13px;
  color: var(--ink);
  cursor: pointer;
  transition: background .15s;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ai-rail-item:hover {
  background: var(--bg-soft);
  color: var(--green);
}
.ai-rail-recent { flex: 1; min-height: 0; }
.ai-recent-list {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.ai-recent-item {
  padding: 6px 8px;
  border-radius: 6px;
  font-size: 12px;
  color: var(--ink-3);
  cursor: pointer;
  transition: all .15s;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ai-recent-item:hover {
  background: var(--bg-soft);
  color: var(--green);
}
.ai-rail-loading, .ai-rail-empty {
  font-size: 12px;
  padding: 8px;
  text-align: center;
}

/* AI-7 批1:输入框底部(模型标识 + 免责声明) */
.ai-input-foot {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 6px 16px;
  border-top: 1px solid var(--line);
  background: var(--bg-soft);
  font-size: 11px;
}
.ai-model-badge {
  color: var(--ink-3);
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 2px 8px;
  font-size: 11px;
}
.ai-disclaimer {
  color: var(--ink-3);
  font-size: 11px;
}

/* AI-7 批1:右侧面板容器(含标题栏) */
.ai-right-col {
  display: flex;
  flex-direction: column;
  background: var(--card);
  border-radius: 12px;
  border: 1px solid var(--line);
  overflow: hidden;
}
.ai-right-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 12px;
  border-bottom: 1px solid var(--line);
  background: var(--bg-soft);
}
.ai-right-title {
  font-size: 13px;
  font-weight: 500;
  color: var(--ink);
}
.ai-collapse-btn {
  font-size: 11px;
  padding: 2px 8px;
}
/* 右侧折叠后的窄条 */
.ai-right-collapsed {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 12px 4px;
  background: var(--card);
  border-radius: 12px;
  border: 1px solid var(--line);
  cursor: pointer;
}
.ai-expand-btn {
  width: 24px;
  height: 24px;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: var(--card);
  cursor: pointer;
  font-size: 12px;
  color: var(--ink-3);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all .15s;
}
.ai-expand-btn:hover {
  border-color: var(--green);
  color: var(--green);
}
.ai-collapsed-text {
  writing-mode: vertical-rl;
  font-size: 12px;
  color: var(--ink-3);
  letter-spacing: 2px;
}

/* 左侧聊天面板 */
.ai-chat-panel {
  display: flex;
  flex-direction: column;
  background: var(--card);
  border-radius: 12px;
  border: 1px solid var(--line);
  overflow: hidden;
}

/* 技能切换标签 */
.ai-skill-tabs {
  display: flex;
  border-bottom: 1px solid var(--line);
  background: var(--bg-soft);
  padding: 0 8px;
}
.ai-skill-tabs a {
  padding: 12px 16px;
  font-size: 13px;
  color: var(--ink-3);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: all .15s;
  white-space: nowrap;
}
.ai-skill-tabs a:hover { color: var(--ink); }
.ai-skill-tabs a.on {
  color: var(--green);
  border-bottom-color: var(--green);
  font-weight: 500;
}

/* 聊天记录区 */
.ai-chat-history {
  flex: 1;
  overflow-y: auto;
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.ai-empty {
  text-align: center;
  padding: 60px 20px;
  color: var(--ink-3);
}
.ai-empty-icon { font-size: 48px; margin-bottom: 12px; }
.ai-empty p { margin: 4px 0; }

/* 消息气泡 */
.ai-msg {
  display: flex;
  gap: 10px;
  max-width: 85%;
}
.ai-msg-user {
  align-self: flex-end;
  flex-direction: row-reverse;
}
.ai-msg-avatar {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  flex-shrink: 0;
  background: var(--bg-soft);
}
.ai-msg-content {
  background: var(--bg-soft);
  border-radius: 12px;
  padding: 10px 14px;
  font-size: 13px;
  line-height: 1.6;
}
.ai-msg-user .ai-msg-content {
  background: var(--green);
  color: var(--on-accent);
}
.ai-msg-user .ai-msg-content .dim { color: rgba(255,255,255,.7); }
.ai-msg-text { word-break: break-word; }
.ai-msg-time {
  font-size: 11px;
  color: var(--ink-3);
  margin-top: 4px;
  opacity: .7;
}
.ai-msg-user .ai-msg-time { color: rgba(255,255,255,.6); }
.ai-msg-loading .ai-msg-text {
  color: var(--ink-3);
  font-style: italic;
}

/* 引用数据卡片 */
.ai-ref-data {
  margin-top: 8px;
  padding: 10px;
  background: rgba(255,255,255,.8);
  border-radius: 8px;
  border: 1px solid var(--line);
}
.ai-msg-user .ai-ref-data {
  background: rgba(255,255,255,.15);
  border-color: rgba(255,255,255,.2);
}
.ai-ref-title {
  font-size: 12px;
  color: var(--ink-3);
  margin-bottom: 6px;
}
.ai-msg-user .ai-ref-title { color: rgba(255,255,255,.8); }
.ai-ref-item {
  display: block;
  padding: 6px 8px;
  border-radius: 6px;
  font-size: 12px;
  cursor: pointer;
  transition: background .15s;
}
.ai-ref-item:hover { background: rgba(0,0,0,.04); }
.ai-msg-user .ai-ref-item:hover { background: rgba(255,255,255,.1); }

/* 推荐问题 */
.ai-suggests {
  padding: 10px 16px;
  border-top: 1px solid var(--line);
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  background: var(--bg-soft);
}
.ai-suggests a {
  padding: 4px 10px;
  border-radius: 12px;
  background: var(--card);
  border: 1px solid var(--line);
  font-size: 12px;
  color: var(--ink-3);
  cursor: pointer;
  transition: all .15s;
}
.ai-suggests a:hover {
  border-color: var(--green);
  color: var(--green);
}

/* 输入框 */
.ai-input-bar {
  display: flex;
  gap: 8px;
  padding: 12px 16px;
  border-top: 1px solid var(--line);
  background: var(--card);
}
.ai-input-bar input {
  flex: 1;
  padding: 10px 14px;
  border: 1px solid var(--line);
  border-radius: 20px;
  font-size: 13px;
  outline: none;
  transition: border-color .15s;
}
.ai-input-bar input:focus { border-color: var(--green); }
.ai-input-bar .abtn { border-radius: 20px; padding: 8px 20px; }

/* 右侧信息面板(AI-7 批1:嵌套在 .ai-right-col 内,去掉外层卡片样式) */
.ai-info-panel {
  flex: 1;
  padding: 16px;
  overflow-y: auto;
  background: transparent;
  border: none;
  border-radius: 0;
}
.ai-info-empty {
  text-align: center;
  padding: 60px 20px;
  color: var(--ink-3);
}
.ai-info-icon { font-size: 48px; margin-bottom: 12px; }
.ai-info-empty p { margin: 4px 0; font-size: 13px; }

/* 家长摘要卡 */
.ai-lead-card {
  background: var(--bg-soft);
  border-radius: 12px;
  overflow: hidden;
}
.ai-lead-head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px;
  background: linear-gradient(135deg, var(--green) 0%, #0a9d6c 100%);
  color: var(--on-accent);
}
.ai-lead-avatar {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: rgba(255,255,255,.2);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
}
.ai-lead-name { font-size: 16px; font-weight: 600; }
.ai-lead-body { padding: 12px 16px; }
.ai-lead-row {
  display: flex;
  justify-content: space-between;
  padding: 8px 0;
  font-size: 13px;
  border-bottom: 1px solid var(--line);
}
.ai-lead-row:last-child { border-bottom: none; }
.ai-lead-row span { color: var(--ink-3); }
.ai-lead-row b { font-weight: 500; }
.ai-lead-actions {
  display: flex;
  gap: 8px;
  padding: 12px 16px;
  background: var(--card);
  border-top: 1px solid var(--line);
}
.ai-lead-actions .abtn { flex: 1; }

/* 响应式:窄屏时隐藏左栏和右侧面板 */
@media (max-width: 1400px) {
  .ai-workbench { grid-template-columns: 180px 1fr 280px; }
}
@media (max-width: 1200px) {
  .ai-workbench { grid-template-columns: 1fr; }
  .ai-side-rail, .ai-right-col, .ai-right-collapsed { display: none; }
}

/* ============================================================
   CRM-4:聊天记录导入向导
   ============================================================ */
.ci-steps {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 8px 0 22px;
  flex-wrap: wrap;
}
.ci-step { display: flex; align-items: center; gap: 8px; color: var(--ink-3); font-size: 13px; }
.ci-step-dot {
  width: 26px; height: 26px; border-radius: 50%;
  background: var(--bg-soft); border: 1px solid var(--line);
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 600;
}
.ci-step.on .ci-step-dot { background: var(--green); color: var(--on-accent); border-color: var(--green); }
.ci-step.on .ci-step-label { color: var(--ink); font-weight: 600; }
.ci-step.done .ci-step-dot { background: #e6f7f0; border-color: var(--green); color: var(--green); }
.ci-step-line { width: 34px; height: 1px; background: var(--line); }
.ci-body { min-height: 300px; }

/* 上传区 */
.ci-upload {
  border: 2px dashed var(--line);
  border-radius: 14px;
  padding: 54px 20px;
  text-align: center;
  cursor: pointer;
  transition: all .18s;
  background: var(--bg-soft);
}
.ci-upload:hover, .ci-upload.drag {
  border-color: var(--green);
  background: #f0faf6;
}
.ci-upload-icon { font-size: 44px; margin-bottom: 10px; }
.ci-upload p { margin: 4px 0; }
.ci-parse-tip {
  margin-top: 12px; padding: 12px 16px;
  background: #fff8e6; border: 1px solid #f0d9a0; border-radius: 10px;
  font-size: 13px;
}

/* 格式预览 */
.ci-preview-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 16px; margin-bottom: 14px; flex-wrap: wrap;
}
.ci-chat-type select { margin-left: 6px; padding: 5px 8px; }
.ci-speaker-tbl label { margin-right: 12px; font-size: 13px; white-space: nowrap; }
.ci-tip-line { margin-top: 10px; font-size: 12px; }

/* 操作按钮条 */
.ci-actions {
  display: flex; justify-content: space-between; gap: 10px;
  margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--line);
}

/* 人员卡片 */
.ci-persons { display: flex; flex-direction: column; gap: 14px; }
.ci-person {
  border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px;
  background: var(--card);
}
.ci-person-head {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 10px; flex-wrap: wrap; gap: 6px;
}
.ci-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px 14px;
}
.ci-grid label { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--ink-3); }
.ci-grid input, .ci-grid select {
  padding: 7px 10px; border: 1px solid var(--line); border-radius: 8px; font-size: 13px; color: var(--ink);
}
.ci-grid input:focus, .ci-grid select:focus { border-color: var(--green); outline: none; }
.ci-grid-full { grid-column: 1 / -1; }
.ci-tags-row {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  margin-top: 10px; font-size: 12px;
}
.ci-tag-chips { display: flex; gap: 6px; flex-wrap: wrap; }
.ci-tag-chips .tag-chip a { cursor: pointer; margin-left: 2px; }
.ci-tag-add {
  padding: 4px 10px; border: 1px dashed var(--line); border-radius: 12px;
  font-size: 12px; outline: none;
}
.ci-tag-add:focus { border-color: var(--green); }
.ci-hit-kws { margin-top: 8px; font-size: 12px; }

/* 历史 */
.ci-hist-head {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 14px;
}
.ci-empty-hist { text-align: center; padding: 60px 20px; color: var(--ink-3); }

/* 批2.5:整体情况面板 */
.ci-summary {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 14px 16px;
  background: linear-gradient(180deg, #f7fbf9 0%, #fff 100%);
}
.ci-summary-title { font-size: 14px; font-weight: 700; margin-bottom: 12px; }
.ci-stats {
  display: flex; flex-wrap: wrap; gap: 10px;
}
.ci-stat {
  min-width: 110px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 10px 14px;
  display: flex; flex-direction: column; gap: 4px;
}
.ci-stat-n { font-size: 16px; font-weight: 700; color: var(--ink); }
.ci-stat-l { font-size: 11px; color: var(--ink-3); line-height: 1.5; }
.ci-summary-warn {
  margin-top: 12px;
  padding: 10px 14px;
  background: #fff8e6;
  border: 1px solid #f0d9a0;
  border-radius: 10px;
  font-size: 12.5px;
  line-height: 1.7;
  color: #8a5a00;
}

/* 批2.5:低置信度人员卡 */
.ci-person-warn { border-color: #f0d9a0; background: #fffdf6; }
.ci-lowconf-bar {
  background: #fff8e6;
  border: 1px solid #f0d9a0;
  color: #8a5a00;
  border-radius: 8px;
  padding: 8px 12px;
  font-size: 12.5px;
  line-height: 1.6;
  margin-bottom: 10px;
}
.ci-field-hint {
  font-size: 11px; line-height: 1.5; margin-top: 2px;
}

/* 批2.5:下一步计划 */
.ci-nextsteps {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px dashed var(--line);
}
.ci-nextsteps-title { font-size: 13px; font-weight: 700; margin-bottom: 8px; }
.ci-step-adv {
  display: flex; align-items: flex-start; gap: 8px;
  padding: 7px 12px;
  border-radius: 8px;
  font-size: 12.5px;
  line-height: 1.6;
  margin-bottom: 6px;
}
.ci-step-adv.high { background: #fdeceb; color: #a8332a; }
.ci-step-adv.mid { background: #eefff8; color: #0b7552; }
.ci-step-adv.low { background: #f3f4f6; color: var(--ink-3); }
.ci-nextsteps-note { font-size: 11px; margin-top: 6px; }

/* CRM-4.5:AI 深度分析 */
.ci-ai-toolbar {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  margin: 12px 0 10px; padding: 12px 14px;
  background: #f4fffa; border: 1px solid #d8fff0; border-radius: 10px;
}
.ci-ai-toolbar .abtn[disabled] { opacity: .55; cursor: not-allowed; }
.ci-ai-toolbar .dim { font-size: 12px; line-height: 1.6; }
.ci-ai-progress {
  margin: 0 0 12px; padding: 12px 14px;
  background: #f7fbf9; border: 1px solid var(--line); border-radius: 10px;
  font-size: 13px; line-height: 1.8;
}
.ci-ai-bar { height: 8px; background: #eef0f3; border-radius: 99px; overflow: hidden; margin: 8px 0 4px; }
.ci-ai-bar span { display: block; height: 100%; background: linear-gradient(90deg, var(--green), #4fc3a1); transition: width .3s; }
.ci-ai-prog-ok { color: #047857; }
.ci-ai-prog-warn { color: #b45309; line-height: 1.8; }
.ci-ai-prog-err { color: #a8332a; line-height: 1.8; }
.ci-ai-box {
  margin-top: 12px; padding: 12px 14px;
  border: 1px solid #c8ffeb; border-radius: 10px;
  background: linear-gradient(180deg, #f6fffb 0%, #fff 60%);
}
.ci-ai-box.ci-ai-err { border-color: #f0c4c0; background: #fdf6f5; }
.ci-ai-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
.ci-ai-head .dim { font-size: 11.5px; }
.ci-ai-adopt-all { font-size: 12px; padding: 4px 12px; }
.ci-ai-row { display: flex; align-items: flex-start; gap: 8px; font-size: 12.5px; line-height: 1.9; margin-top: 4px; flex-wrap: wrap; }
.ci-ai-k { min-width: 78px; color: var(--ink-3); font-weight: 600; }
.ci-ai-tags { display: flex; gap: 4px; flex-wrap: wrap; }
.tag-chip.tc-amber { background: #FEF3E2; color: #B45309; }
.ci-ai-adopt { color: #0b7552; cursor: pointer; font-size: 12px; text-decoration: underline; align-self: center; }
.ci-ai-fields { display: flex; flex-direction: column; gap: 4px; margin: 6px 0 2px; }
.ci-ai-field {
  display: flex; align-items: center; gap: 8px; font-size: 12.5px;
  background: var(--card); border: 1px solid var(--line); border-radius: 8px; padding: 5px 10px;
}
.ci-ai-field .ci-ai-new { color: #b45309; }
.ci-ai-advice { background: #eefff8; border-radius: 8px; padding: 6px 10px; }
.ci-ai-script { background: #f0fbf4; border-radius: 8px; padding: 6px 10px; align-items: center; }
.ci-ai-copy { color: var(--green); cursor: pointer; font-size: 12px; text-decoration: underline; white-space: nowrap; }
.ci-ai-foot { font-size: 11px; margin-top: 8px; line-height: 1.6; }

/* AI-3 招生漏斗 15 阶段 pill(导入页与线索页共用) */
.fn-stage-pill {
  display: inline-block; padding: 2px 10px; border-radius: 999px;
  font-size: 12px; font-weight: 600; white-space: nowrap; line-height: 1.7;
}
.fn-stage-new      { background:#edf6f3; color:#47695c; }
.fn-stage-contact  { background:#FEF3E2; color:#B45309; }
.fn-stage-qualified{ background:#ECFDF5; color:#047857; }
.fn-stage-convert  { background:#e7fff6; color:#0b5e48; }
.fn-stage-enrolled { background:#dbfdf1; color:#0b7552; }
.fn-stage-risk     { background:#FEE2E2; color:#991B1B; }
.fn-stage-dormant  { background:#f0f9f6; color:#638b7c; }
.fn-stage-recycle  { background:#FFEDD5; color:#C2410C; }
.ci-stage-select { font-weight: 600; }
.ci-stage-src { font-weight: 400; font-size: 11px; }
.ci-stage-badge {
  font-size: 11px; padding: 1px 8px; border-radius: 999px; white-space: nowrap;
}
.ci-stage-badge.cb-ai   { background:#ECFDF5; color:#047857; border:1px solid #A7F3D0; }
.ci-stage-badge.cb-rule { background:#FFF7ED; color:#C2410C; border:1px solid #FED7AA; }
.ci-quote { color:#92400E; font-style: italic; }
.ci-ai-evidence { background:#FFFBEB; border-radius: 8px; padding: 6px 10px; }
.ci-risk-row { margin-top: 6px; }
.ci-stage-evidence { font-size: 12px; margin: 6px 0 0 2px; }

/* AI-3 线索页:详情漏斗块/卡片风险标记/看板细阶段行 */
.c360-risks { margin-left: 4px; }
.c360-funnel {
  margin-top: 10px; border: 1px solid var(--line); border-radius: 10px;
  padding: 8px 12px; background: #FAFBFC; display: flex; flex-direction: column; gap: 6px;
}
.c360-funnel .cf-row { display: flex; gap: 10px; font-size: 13px; align-items: baseline; }
.c360-funnel .cf-row label { width: 84px; color: var(--ink-3); flex-shrink: 0; }
.lc-risk { color: #B91C1C; font-weight: 700; cursor: help; }
.lc-next-action, .kc-next-action {
  font-size: 12px; color: #0b5e48; background: #f5fffb; border-radius: 6px;
  padding: 2px 8px; margin: 4px 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.kc-stage { margin: 2px 0 4px; }

/* 批3:第4步查重确认 */
.ci-dup-summary {
  display: flex; flex-wrap: wrap; align-items: center; gap: 10px;
  padding: 12px 14px;
  background: #f7fbf9;
  border: 1px solid var(--line);
  border-radius: 10px;
  margin-bottom: 14px;
}
.ci-dup-person.new { border-left: 3px solid var(--success); }
.ci-dup-person.merge { border-left: 3px solid #14a178; }
.ci-dup-person.manual { border-left: 3px solid #f59e0b; }
.ci-dup-person.invalid { border-left: 3px solid var(--red); opacity: 0.85; }
.ci-dup-err {
  background: #fdeceb; border: 1px solid #f3b8b4; color: #a8332a;
  border-radius: 10px; padding: 16px;
}
.ci-act-row {
  display: flex; flex-wrap: wrap; gap: 18px;
  padding: 8px 0 4px;
  font-size: 13px;
}
.ci-act-row label { display: inline-flex; align-items: center; gap: 5px; cursor: pointer; font-weight: 400; }
.ci-match-list {
  display: flex; flex-direction: column; gap: 8px;
  margin: 6px 0 4px 22px;
}
.ci-match-item {
  display: flex; justify-content: space-between; align-items: center; gap: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 8px 12px;
  background: var(--card);
  transition: border-color .15s, background .15s;
}
.ci-match-item.sel { border-color: #14a178; background: #f0fff9; }
.ci-match-pick { display: inline-flex; align-items: center; gap: 8px; font-weight: 400 !important; margin: 0 !important; }
.ci-match-dims { font-size: 12px; color: var(--ink-3); white-space: nowrap; }

/* 批3:第5步入库报告 */
.ci-report {
  text-align: center;
  padding: 40px 20px 20px;
}
.ci-report-icon { font-size: 56px; line-height: 1; }
.ci-report h2 { margin: 14px 0 6px; }
.ci-report-stats {
  display: flex; flex-wrap: wrap; justify-content: center; gap: 12px;
  margin: 22px 0;
}
.ci-report .ci-stat { min-width: 120px; }
.ci-report-ok {
  color: var(--success);
  background: #ecf8f1;
  border: 1px solid #bfe6cf;
  border-radius: 10px;
  padding: 10px 14px;
  max-width: 520px;
  margin: 0 auto;
  font-size: 13px;
}
.ci-fail-box {
  text-align: left;
  max-width: 620px;
  margin: 0 auto 16px;
  background: #fdeceb;
  border: 1px solid #f3b8b4;
  border-radius: 10px;
  padding: 12px 16px;
  font-size: 13px;
  line-height: 1.7;
}
.ci-fail-box ul { margin: 8px 0 8px 20px; }

/* 批3:批次历史逐人明细 */
.ci-hist-detail-row td { background: #fafbfc; padding: 10px 16px !important; }
.ci-hist-persons {
  display: flex; flex-wrap: wrap; gap: 8px;
}
.ci-hist-person {
  display: inline-flex; align-items: center; gap: 8px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 4px 12px;
  font-size: 12.5px;
}
.ci-hist-detail { cursor: pointer; }

/* 批4:批量上传分析 */
.ci-mode-tabs {
  display: flex; gap: 10px; margin-bottom: 16px;
}
.ci-mode-tab {
  flex: 0 0 auto;
  padding: 9px 20px;
  border: 1px solid var(--line);
  background: var(--card);
  border-radius: 10px;
  font-size: 14px;
  cursor: pointer;
  transition: all .15s;
}
.ci-mode-tab.on {
  border-color: var(--green);
  background: var(--green-light);
  color: var(--green);
  font-weight: 700;
}
.ci-upload-batch { border-style: dashed; }
.ci-batch-toolbar {
  display: flex; align-items: center; gap: 12px;
  margin: 14px 0 10px;
}
.ci-batch-list {
  display: flex; flex-direction: column; gap: 8px;
}
.ci-fitem {
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--card);
  overflow: hidden;
}
.ci-fitem.error { border-color: #f3b8b4; background: #fff8f7; }
.ci-frow {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 14px;
  flex-wrap: wrap;
}
.ci-ficon { font-size: 18px; }
.ci-fname {
  font-weight: 600; font-size: 13.5px; max-width: 340px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.ci-fstatus { font-size: 12.5px; white-space: nowrap; }
.ci-fstatus.ok { color: var(--success); }
.ci-fstatus.error { color: var(--red); }
.ci-fstatus.parsing { color: var(--ink-3); }
.ci-f-del {
  border: none; background: transparent; color: var(--ink-3);
  font-size: 18px; line-height: 1; cursor: pointer; padding: 2px 8px;
  border-radius: 6px;
}
.ci-f-del:hover { background: #fdeceb; color: var(--red); }
.ci-froles {
  padding: 0 14px 12px 14px;
  border-top: 1px dashed var(--line);
}
.ci-froles .ci-chat-type { display: inline-flex; align-items: center; gap: 6px; margin: 10px 0; font-size: 13px; }
.ci-froles .ci-speaker-tbl { margin-top: 4px; }

/* 批量分组标题(第3/4步) */
.ci-file-group {
  margin-bottom: 18px;
}
.ci-file-group-head {
  display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
  position: sticky; top: 0; z-index: 2;
  background: #f0f5f2;
  border: 1px solid #d6e4dd;
  border-radius: 8px;
  padding: 8px 14px;
  margin-bottom: 10px;
  font-size: 13.5px;
}
.ci-file-group .ci-person { margin-bottom: 10px; }

/* 批量入库进度 */
.ci-batch-progress {
  text-align: center; padding: 60px 20px;
}
.ci-bp-icon { font-size: 52px; }
.ci-batch-progress h2 { margin: 14px 0 8px; }
.ci-bp-bar {
  max-width: 420px; height: 8px; margin: 22px auto 0;
  background: #edf6f3; border-radius: 999px; overflow: hidden;
}
.ci-bp-bar span {
  display: block; height: 100%;
  background: linear-gradient(90deg, var(--green-light), var(--green));
  border-radius: 999px;
  transition: width .3s;
}
.ci-batch-report-tbl { max-width: 860px; margin: 0 auto 18px; }

/* CRM-5 知识库 */
.kb-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 14px; }
.kb-sel { padding: 7px 10px; border: 1px solid var(--line); border-radius: 8px; font-size: 13px; background: var(--card); }
.kb-kw { padding: 7px 12px; border: 1px solid var(--line); border-radius: 8px; font-size: 13px; width: 200px; max-width: 100%; }
@media (max-width: 900px) { .kb-kw { flex: 1 1 160px; width: auto; } }
.kb-pager { display: flex; align-items: center; gap: 12px; justify-content: center; margin-top: 14px; }
.kb-empty { text-align: center; padding: 40px 0; }
.kb-err { color: var(--red); padding: 20px; text-align: center; }
.kb-pill { background: #eefff8; color: #128c69; }
.kb-detail-head { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; flex-wrap: wrap; }
.kb-chunks { display: flex; flex-direction: column; gap: 10px; }
.kb-chunk { border: 1px solid var(--line); border-radius: 10px; padding: 10px 14px; background: #fafbfc; }
.kb-chunk-idx { font-size: 12px; color: var(--green); font-weight: 700; margin-bottom: 4px; }
.kb-chunk-text { font-size: 13px; line-height: 1.7; white-space: pre-wrap; color: #333; }
.kb-hit { border: 1px solid var(--line); border-radius: 10px; padding: 10px 14px; margin-bottom: 10px; }
.kb-hit-head { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; flex-wrap: wrap; }
.kb-hit-text { font-size: 13px; line-height: 1.7; color: #333; }
.kb-form { display: flex; flex-direction: column; gap: 12px; max-width: 640px; }
.kb-form label { display: flex; flex-direction: column; gap: 6px; font-size: 13px; font-weight: 600; }
.kb-form input, .kb-form select { padding: 8px 12px; border: 1px solid var(--line); border-radius: 8px; font-size: 14px; }

/* AI-11 批1:AI 摘要/标签/建议分类 */
.kb-sum-card { border: 1px solid #cffeed; border-radius: 10px; padding: 12px 16px; margin-bottom: 14px; background: #f5fffb; }
.kb-sum-none { color: var(--dim, #89a399); font-size: 13px; }
.kb-sum-title { font-size: 13px; font-weight: 700; margin-bottom: 6px; }
.kb-sum-body { font-size: 13px; line-height: 1.7; color: #333; margin-bottom: 6px; }
.kb-sum-cell { max-width: 280px; }
.kb-sum { font-size: 12px; line-height: 1.6; color: #555; }
.kb-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.kb-tag { font-size: 12px; padding: 2px 8px; border-radius: 10px; background: #eefff8; color: #128c69; border: 1px solid #d6ffef; }
.kb-aicat { font-size: 12px; margin-top: 8px; display: flex; align-items: center; gap: 8px; }
[data-theme="dark"] .kb-sum-card { background: #1b342a; border-color: #2c5545; }
[data-theme="dark"] .kb-sum-body, [data-theme="dark"] .kb-sum { color: #c6dad2; }
[data-theme="dark"] .kb-tag { background: #214a3b; color: #8fe0c4; border-color: #2c5545; }
/* AI-11 批2:话术生成器弹层 */
.kb-script-mask { position: fixed; inset: 0; background: rgba(22,58,45,0.45); display: flex; align-items: center; justify-content: center; z-index: 500; padding: 30px; }
.kb-script-modal { background: var(--card); width: 640px; max-width: 100%; max-height: 86vh; border-radius: 14px; display: flex; flex-direction: column; overflow: hidden; box-shadow: 0 18px 50px rgba(11, 117, 82, 0.22); }
.kb-script-head { display: flex; align-items: center; gap: 10px; padding: 15px 20px; border-bottom: 1px solid var(--line); font-size: 15px; flex-wrap: wrap; }
.kb-script-ask { display: flex; gap: 10px; padding: 14px 20px 0; }
.kb-script-ask input { flex: 1; padding: 9px 12px; border: 1px solid var(--line); border-radius: 8px; font-size: 14px; }
.kb-script-result { padding: 14px 20px 18px; overflow-y: auto; font-size: 13px; }
.kb-script-card { border: 1px solid #cffeed; border-radius: 10px; padding: 14px 16px; background: #f5fffb; }
.kb-script-sec-title { font-size: 13px; font-weight: 700; margin: 10px 0 6px; }
.kb-script-sec-title:first-child { margin-top: 0; }
.kb-script-text { font-size: 14px; line-height: 1.8; color: #333; white-space: pre-wrap; background: var(--card); border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px; }
.kb-script-points { margin: 0; padding-left: 20px; font-size: 13px; line-height: 1.8; color: #333; }
.kb-script-actions { margin-top: 12px; display: flex; justify-content: flex-end; }
.kb-script-empty { padding: 20px; text-align: center; color: #92610e; background: #fdf6e5; border: 1px solid #f0dfae; border-radius: 10px; font-size: 13px; line-height: 1.7; }
[data-theme="dark"] .kb-script-modal { background: #142b22; }
[data-theme="dark"] .kb-script-ask input { background: #1b342a; color: #daeee7; border-color: #2c5545; }
[data-theme="dark"] .kb-script-card { background: #1b342a; border-color: #2c5545; }
[data-theme="dark"] .kb-script-text { background: #10271e; color: #daeee7; border-color: #2c5545; }
[data-theme="dark"] .kb-script-points { color: #c6dad2; }
[data-theme="dark"] .kb-script-empty { background: #2a2410; color: #e8c96a; border-color: #4a3d16; }

/* AI-12 批2:数据看板「问问数据」自然语言查数据 */
.insight-ask { display: flex; align-items: center; gap: 10px; }
.insight-ask-icon { font-size: 18px; }
.insight-ask-inp { flex: 1; padding: 9px 12px; border: 1px solid var(--line); border-radius: 8px; font-size: 14px; background: var(--card); color: inherit; }
.insight-ans-head { display: flex; align-items: center; gap: 10px; margin: 12px 0 8px; }
.insight-tbl td { padding: 7px 12px; font-size: 13px; }
.insight-conclusion { margin-top: 10px; padding: 10px 12px; background: #f0fff9; border: 1px solid #cffeed; border-radius: 8px; font-size: 13px; line-height: 1.8; color: #333; }
.insight-unsupport { padding: 12px 14px; background: #fdf6e5; border: 1px solid #f0dfae; border-radius: 8px; font-size: 13px; line-height: 1.7; color: #92610e; margin-top: 10px; }
[data-theme="dark"] .insight-ask-inp { background: #1b342a; color: #daeee7; border-color: #2c5545; }
[data-theme="dark"] .insight-conclusion { background: #163a2c; border-color: #2c5545; color: #daeee7; }
[data-theme="dark"] .insight-unsupport { background: #2a2410; color: #e8c96a; border-color: #4a3d16; }

/* CRM-6 批B2 招生活动 */
.act-stats { display: flex; gap: 16px; margin-bottom: 14px; }
.act-stat { flex: 1; text-align: center; padding: 14px; border: 1px solid var(--line); border-radius: 10px; background: #fafbfc; }
.act-stat-num { font-size: 24px; font-weight: 700; color: var(--green); }
.act-stat-label { font-size: 12px; color: #888; margin-top: 4px; }

@media (max-width: 1100px) {
  .ci-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 700px) {
  .ci-grid { grid-template-columns: 1fr; }
  .ci-step-label { display: none; }
}

/* ============================================================
   第2期:工作台/看板/渠道 专用样式
   ============================================================ */

/* ---- 卡片头部(标题 + 口径 tooltip + 操作按钮) ---- */
.card-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.card-head h2 { margin: 0; font-size: 15px; font-weight: 700; }
.card-actions { display: flex; gap: 8px; }
.abtn.sm { padding: 4px 10px; font-size: 12px; }

/* ---- 图表文字解读区 ---- */
.insight-box { background: #F7F9FD; border: 1px solid var(--line); border-radius: 10px; padding: 12px 16px; margin-top: 14px; }
.insight-row { display: flex; align-items: flex-start; gap: 10px; font-size: 13px; line-height: 1.7; color: var(--ink-2); margin-bottom: 4px; }
.insight-row:last-child { margin-bottom: 0; }
.insight-tag { display: inline-block; padding: 1px 8px; border-radius: 4px; font-size: 11px; font-weight: 700; flex-shrink: 0; margin-top: 2px; }
.insight-tag.c { background: var(--green-light); color: var(--green); }
.insight-tag.w { background: #FEF3E6; color: var(--amber); }
.insight-tag.a { background: #E8F7EE; color: var(--success); }

/* ---- KPI 卡增强(环比箭头 + 口径 tooltip) ---- */
.kpi { position: relative; }
.kpi .kpi-arrow { position: absolute; top: 12px; right: 14px; font-size: 12px; }
.kpi .kpi-arrow.up { color: var(--success); }
.kpi .kpi-arrow.down { color: var(--red); }
.kpi b { font-size: 27px; font-weight: 800; }

/* ---- 快捷入口网格 ---- */
.quick-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 10px; margin-top: 12px; }
.quick-item { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 16px 10px; background: var(--bg); border-radius: 10px; cursor: pointer; text-align: center; transition: background .15s; }
.quick-item:hover { background: var(--green-light); }
.quick-item .qi-icon { font-size: 24px; }
.quick-item .qi-label { font-size: 13px; color: var(--ink); }

/* ---- 趋势图(可复用) ---- */
.trend { display: flex; align-items: flex-end; gap: 4px; height: 160px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.trend-col { flex: 1; display: flex; flex-direction: column; align-items: center; height: 100%; justify-content: flex-end; }
.trend-col i { display: block; width: 100%; background: linear-gradient(180deg, #3DBE95, #14A178); border-radius: 3px 3px 0 0; min-height: 2px; transition: height .4s; }
.trend-col span { font-size: 10px; color: var(--ink-3); margin-top: 4px; }

/* ---- 时间范围筛选(自定义) ---- */
.range-bar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.range-bar .seg { display: inline-flex; }
.range-bar input[type="date"] { padding: 5px 8px; border: 1px solid var(--line); border-radius: 6px; font-size: 13px; }

/* ---- 空状态增强(图表内) ---- */
.chart-empty { text-align: center; padding: 40px 20px; color: var(--ink-3); font-size: 13px; }
.chart-empty .ce-icon { font-size: 36px; margin-bottom: 8px; }

/* ---- ECharts 通用容器(高度用内联 style 按图调整) ---- */
.ec-box { width: 100%; height: 300px; }
.ec-box.h260 { height: 260px; }
.ec-box.h300 { height: 300px; }
.ec-box.h340 { height: 340px; }
.ec-box.h440 { height: 440px; }

/* ---- 错误状态(含重试) ---- */
.chart-error { text-align: center; padding: 30px 20px; }
.chart-error .err-text { color: var(--red); margin-bottom: 12px; }

/* ================================================================== */
/* ====== 第4期:CRM 基础模块样式(工作台/公海/客户/看板/提醒/业绩) ====== */
/* ================================================================== */

/* CRM KPI 卡片网格(复用 .kpi 配色) */
.crm-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(156px, 1fr)); gap: 12px; }
.crm-grid .kpi { cursor: pointer; transition: transform .15s, box-shadow .15s; }
.crm-grid .kpi:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(22,58,45,.09); }
.crm-grid .kpi.no-link { cursor: default; }
.crm-grid .kpi.no-link:hover { transform: none; box-shadow: none; }
.crm-grid .kpi .kpi-sub { font-size: 11px; color: var(--ink-3); margin-top: 2px; }

/* CRM 区块标题 */
.crm-sec { display: flex; align-items: center; gap: 8px; font-size: 15px; font-weight: 700; color: var(--ink); margin: 20px 0 10px; }
.crm-sec .cs-hint { font-size: 12px; font-weight: 400; color: var(--ink-3); }
.crm-two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 1100px) { .crm-two-col { grid-template-columns: 1fr; } }

/* 公海池:接口待接入提示面板 */
.crm-notice { border: 1px solid #fde68a; background: #fffbeb; border-radius: 14px; padding: 22px 24px; margin: 14px 0; }
.crm-notice.cn-info { border-color: #A3D9C4; background: #f0fff9; }
.crm-notice.cn-lock { border-color: #e2f0ea; background: var(--bg); }
.crm-notice .cn-title { font-size: 15px; font-weight: 700; color: #92400e; margin-bottom: 8px; display: flex; align-items: center; gap: 6px; }
.crm-notice.cn-info .cn-title { color: var(--green-deep); }
.crm-notice .cn-body { font-size: 13px; color: var(--ink-2); line-height: 1.9; }
.crm-notice ul { margin: 6px 0 0; padding-left: 20px; }
.crm-notice code { background: rgba(0,0,0,.06); padding: 1px 6px; border-radius: 4px; font-size: 12px; }

/* 待接入字段小标记 */
.tag-pending { display: inline-block; font-size: 10px; color: #b45309; background: #fef3c7; border-radius: 4px; padding: 1px 6px; margin-left: 4px; vertical-align: middle; }

/* 阶段看板:复用 .kanban 系列,补充 CRM 卡片信息 */
.kb-card .kb-assign { font-size: 10px; color: var(--ink-3); margin-top: 4px; }
.kb-card .kb-next { font-size: 11px; margin-top: 4px; }
.kb-card .kb-next.over { color: var(--red); font-weight: 600; }
.kb-empty-col { flex: 1; border: 1px dashed #d6e3de; border-radius: 8px; display: flex; align-items: center; justify-content: center; color: var(--ink-3); font-size: 12px; min-height: 70px; text-align: center; padding: 6px; }

/* CRM 漏斗 */
.crm-funnel .cf-row { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.crm-funnel .cf-label { width: 84px; flex: none; font-size: 12px; color: var(--ink-2); text-align: right; }
.crm-funnel .cf-track { flex: 1; background: #edf6f3; border-radius: 6px; height: 20px; overflow: hidden; }
.crm-funnel .cf-bar { height: 100%; background: linear-gradient(90deg, #3DBE95, #14A178); border-radius: 6px; transition: width .4s; min-width: 2px; }
.crm-funnel .cf-num { width: 120px; flex: none; font-size: 12px; color: var(--ink); }
.crm-funnel .cf-num b { font-size: 14px; }
.crm-funnel .cf-rate { color: var(--success); font-weight: 600; }

/* 业绩/工作量排名 */
.rank-no { display: inline-block; width: 20px; height: 20px; line-height: 20px; text-align: center; border-radius: 50%; background: #edf6f3; color: var(--ink-2); font-size: 11px; font-weight: 700; }
.rank-no.top1 { background: #fef3c7; color: #b45309; }
.rank-no.top2 { background: #e8f4f0; color: #47695c; }
.rank-no.top3 { background: #fde8d7; color: #b45309; }

/* CRM 详情 360:未来字段空槽 */
.crm-slot-empty { border: 1px dashed #d6e3de; border-radius: 10px; padding: 12px 14px; color: var(--ink-3); font-size: 12px; line-height: 1.8; background: #fafbfc; }
.crm-phone-btn { color: var(--green); cursor: pointer; font-size: 12px; margin-left: 6px; }

/* 提醒中心计数条 */
.remind-strip { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; margin-bottom: 14px; }
.remind-strip .rs-item { background: var(--card); border: 1px solid #edf6f3; border-radius: 12px; padding: 12px 14px; cursor: pointer; transition: border-color .15s, box-shadow .15s; }
.remind-strip .rs-item:hover { border-color: var(--green); box-shadow: 0 4px 14px rgba(22,58,45,.07); }
.remind-strip .rs-item.active { border-color: var(--green); background: var(--green-light); }
.remind-strip .rs-num { font-size: 22px; font-weight: 800; color: var(--ink); }
.remind-strip .rs-num.red { color: var(--red); }
.remind-strip .rs-num.amber { color: var(--amber); }
.remind-strip .rs-label { font-size: 12px; color: var(--ink-3); margin-top: 2px; }

/* ==================================================================
   ====== 第6期:UI/UX 升级辅助样式(预览/提示/警告/复制/差异/预览) ======
   ================================================================== */

/* 字段 ❓ 提示标记 */
.p6-q { display:inline-block; color:#9fd1be; font-size:12px; cursor:help; user-select:none; margin-left:2px }
.p6-q:hover { color:var(--green); }

/* 预览/差异/警告/说明 通用条 */
.p6-warn { background:#FEF3E2; color:#92400E; border:1px solid #F5D9A8; border-radius:10px; padding:10px 14px; font-size:13px; margin:0 0 12px; }
.p6-note { background:#E7F7F0; color:#0B7552; border:1px solid #A3D9C4; border-radius:10px; padding:10px 14px; font-size:13px; margin:0 0 12px; }

/* 家长端预览手机外壳(抽屉内) */
.p6-phone { background:#fafbfd; border:1px solid #e5f3ed; border-radius:12px; padding:14px; font-size:13px; line-height:1.8 }
.p6-ph-title { font-weight:700; color:var(--ink); margin-top:12px; margin-bottom:4px; }
.p6-ph-row { padding:2px 0; color:var(--ink-2); word-break:break-all }
.p6-pv-name { font-size:15px; font-weight:700; color:var(--ink); margin-bottom:6px }

/* ==================================================================
   ====== 第5期:CRM 客户360 深度样式(分区/阶段条/方式/标签原型/合并) ======
   ================================================================== */

/* 360 顶部操作区 */
.c360-top { gap: 16px; }
.c360-actions { display: flex; flex-direction: column; align-items: flex-end; gap: 8px; flex: none; }

/* 分区标题(比 ld-sec 更有层次) */
.c360-sec-title {
  margin: 18px 0 10px; font-size: 14px; font-weight: 700; color: var(--ink);
  padding-left: 9px; border-left: 3px solid var(--green); line-height: 1.3;
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
.c360-sec-title .cs-hint { font-size: 11px; font-weight: 400; color: var(--ink-3); border: none; padding: 0; }

/* 信息网格(基本信息/意向信息) */
.c360-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px 14px;
  border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; background: #fcfdff;
}
.c360-info label { display: block; font-size: 11px; color: var(--ink-3); margin-bottom: 3px; }
.c360-info > div { font-size: 13px; color: var(--ink); line-height: 1.5; word-break: break-all; }
@media (max-width: 1100px) { .c360-grid { grid-template-columns: repeat(2, 1fr); } }

/* 5 步阶段进度条 */
.stage-steps { display: flex; align-items: flex-start; margin: 6px 0 0; }
.c360-step { flex: none; width: 96px; text-align: center; }
.st-dot {
  display: inline-flex; align-items: center; justify-content: center;
  width: 26px; height: 26px; border-radius: 50%; font-size: 12px; font-weight: 700;
  background: #edf6f3; color: var(--ink-3); border: 1px solid #e2f0ea; transition: all .2s;
}
.st-name { display: block; font-size: 11px; color: var(--ink-3); margin-top: 5px; line-height: 1.3; }
.st-line { flex: 1; height: 2px; background: #e2f0ea; margin: 13px 4px 0; border-radius: 2px; }
.c360-step.done .st-dot { background: #E7F7F0; color: var(--green-deep); border-color: #A3D9C4; }
.c360-step.done .st-name { color: var(--green-deep); }
.c360-step.on .st-dot { background: linear-gradient(135deg, #3DBE95, #14A178); color: var(--on-accent); border-color: var(--green); box-shadow: 0 3px 10px rgba(20, 161, 120,.3); transform: scale(1.08); }
.c360-step.on .st-name { color: var(--green); font-weight: 700; }

/* 跟进方式 / 快捷话术 */
.way-bar, .tpl-bar { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin: 6px 0; }
.tpl-bar { margin-bottom: 8px; }
.way-chip, .tpl-chip {
  border: 1px solid #d6e3de; background: var(--card); color: var(--ink-2); border-radius: 999px;
  padding: 3px 12px; font-size: 12px; cursor: pointer; transition: all .15s; line-height: 1.6;
}
.way-chip:hover, .tpl-chip:hover { border-color: var(--green); color: var(--green); background: var(--green-light); }
.way-chip.on { background: var(--green); border-color: var(--green); color: var(--on-accent); }
.tpl-chip { border-style: dashed; color: var(--ink-3); }

/* 时间线方式徽章 */
.tl-way { display: inline-flex; align-items: center; gap: 2px; font-size: 11px; font-weight: 600; color: var(--green-deep); background: var(--green-light); border-radius: 6px; padding: 1px 7px; }

/* 同号重复客户 */
.dup-list { display: flex; flex-direction: column; gap: 8px; margin: 10px 0; }
.dup-card {
  display: flex; align-items: flex-start; gap: 10px; border: 1px solid var(--line);
  border-radius: 10px; padding: 10px 12px; cursor: pointer; transition: border-color .15s, background .15s;
}
.dup-card:hover { border-color: var(--green); background: #f8fbff; }
.dup-card .dc-main { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 13px; }
.dup-card .dc-main .dim { width: 100%; font-size: 12px; margin-top: 2px; }

/* 标签只读原型 */
.tag-proto { display: flex; gap: 8px; flex-wrap: wrap; border: 1px dashed #d6e3de; border-radius: 12px; padding: 12px 14px; background: #fafbfc; }
.tag-chip-locked {
  font-size: 12px; color: var(--ink-3); background: #f0f9f6; border: 1px solid #e2f0ea;
  border-radius: 999px; padding: 3px 12px; cursor: not-allowed; user-select: none; line-height: 1.6;
}

/* ============ 第8期批2:表格增强 ============ */
/* 密度 */
.tbl-compact th, .tbl-compact td { padding: 6px 8px !important; font-size: 12px !important; }
.tbl-comfy th, .tbl-comfy td { padding: 14px 16px !important; font-size: 14px !important; }
/* 排序列 */
.tbl th.sortable { cursor: pointer; user-select: none; }
.tbl th.sortable:hover { color: var(--green); }
.tbl th .sort-ic { margin-left: 4px; font-size: 10px; color: var(--ink-3); }
.tbl th.sort-asc .sort-ic, .tbl th.sort-desc .sort-ic { color: var(--green); }
/* 设置按钮(绝对定位在表格右上角) */
.tbl-settings-btn {
  position: absolute; top: 6px; right: 10px; z-index: 10;
  background: transparent; border: none; font-size: 16px; cursor: pointer;
  padding: 4px 6px; border-radius: 6px; line-height: 1;
}
.tbl-settings-btn:hover { background: var(--green-light); }
.tbl-settings-panel {
  position: absolute; top: 36px; right: 10px; z-index: 20;
  background: var(--card); border: 1px solid var(--line); border-radius: 12px;
  padding: 12px 14px; min-width: 180px; max-height: 380px; overflow-y: auto;
  box-shadow: 0 12px 32px rgba(22,58,45,.14);
}
.tbl-settings-panel[hidden] { display: none !important; }
.tsp-title { font-size: 12px; font-weight: 700; color: var(--ink-2); margin-bottom: 6px; }
.tsp-col { display: flex; align-items: center; gap: 8px; padding: 4px 0; font-size: 13px; color: var(--ink); cursor: pointer; }
.tsp-col input { cursor: pointer; }
.tsp-seg { margin-top: 4px; }
.tsp-seg a { padding: 4px 10px; font-size: 12px; }
.tsp-foot { margin-top: 10px; border-top: 1px solid var(--line); padding-top: 8px; }
.tsp-foot a { font-size: 12px; color: var(--ink-3); cursor: pointer; }
.tsp-foot a:hover { color: var(--green); }

/* ====== AI-7 批2:AI 工具确认卡片(写操作确认后才执行) ====== */
.ai-tool-card { border: 1px solid var(--line); border-radius: 12px; padding: 10px 12px; background: var(--card); }
.ai-tool-title { font-weight: 600; margin-bottom: 6px; }
.ai-tool-row { font-size: 13px; line-height: 1.8; }
.ai-tool-opts { margin-top: 8px; display: flex; flex-direction: column; gap: 4px; }
.ai-tool-opt { font-size: 13px; cursor: pointer; display: block; }
.ai-tool-tip { margin-top: 8px; font-size: 12px; color: #B45309; }
.ai-tool-card-btns { margin-top: 10px; display: flex; gap: 8px; }
.ai-tool-card-done { opacity: .78; }

/* ====== AI-10 批3:一句话建任务输入区(任务中心页顶) ====== */
.nl-create-card { margin-bottom: 12px; }
.nl-create-head { font-weight: 600; font-size: 14px; margin-bottom: 8px; }
.nl-create-row { display: flex; gap: 8px; align-items: center; }
.nl-input { flex: 1; padding: 8px 12px; border: 1px solid var(--line); border-radius: 8px; font-size: 13px; background: var(--card); color: var(--ink); }
.nl-input:focus { outline: none; border-color: var(--blue); box-shadow: 0 0 0 2px rgba(42,230,161,.12); }
.nl-tip { font-size: 12px; margin-top: 6px; }
.nl-msg { margin-top: 10px; padding: 8px 12px; font-size: 13px; background: rgba(180, 83, 9, .06); border-left: 3px solid #B45309; border-radius: 6px; }
.nl-card { margin-top: 10px; }
.nl-row { display: flex; align-items: center; gap: 8px; margin-top: 8px; font-size: 13px; }
.nl-label { min-width: 56px; color: var(--ink-3); flex-shrink: 0; }
.nl-field { padding: 6px 10px; border: 1px solid var(--line); border-radius: 6px; font-size: 13px; background: var(--card); color: var(--ink); }
.nl-field:focus { outline: none; border-color: var(--blue); }

/* ====== AI-10 批4:聊天提取待办(报告页 AI 建议任务) ====== */
.ci-hint-row { display: flex; align-items: center; gap: 8px; padding: 6px 0; border-bottom: 1px dashed var(--line); font-size: 13px; }
.ci-hint-row:last-child { border-bottom: none; }
.ci-hint-name { min-width: 80px; font-weight: 600; flex-shrink: 0; }
.ci-hint-text { flex: 1; color: var(--ink-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ci-hint-btn { flex-shrink: 0; }
.nl-ops { display: flex; gap: 8px; margin-top: 10px; }

/* ====== AI-8 批1:家长 360 AI 摘要卡 ====== */
.ai-summary-card { border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; background: linear-gradient(135deg, #f0fdf4 0%, #f8fafc 100%); margin: 16px 0; }
.ai-summary-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.ai-summary-body { min-height: 60px; }
.ai-summary-loading { text-align: center; padding: 24px; color: var(--ink-3); font-size: 14px; }
.ai-summary-empty { text-align: center; padding: 20px; color: var(--ink-3); font-size: 13px; }
.ai-summary-content { display: flex; flex-direction: column; gap: 12px; }
.ai-summary-text { font-size: 14px; line-height: 1.6; color: var(--ink); padding: 8px 12px; background: rgba(20, 161, 120, .06); border-radius: 8px; border-left: 3px solid var(--green); }
.ai-score-row { display: flex; align-items: center; gap: 14px; }
.ai-score-circle { width: 56px; height: 56px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 20px; font-weight: 800; color: var(--on-accent); flex-shrink: 0; }
.ai-score-high { background: linear-gradient(135deg, #10b981, #059669); box-shadow: 0 2px 8px rgba(16, 185, 129, .3); }
.ai-score-mid { background: linear-gradient(135deg, #f59e0b, #d97706); box-shadow: 0 2px 8px rgba(245, 158, 11, .3); }
.ai-score-low { background: linear-gradient(135deg, #ef4444, #dc2626); box-shadow: 0 2px 8px rgba(239, 68, 68, .3); }
.ai-score-info { flex: 1; }
.ai-score-label { font-size: 13px; font-weight: 600; color: var(--ink-2); margin-bottom: 4px; }
.ai-score-reasons { display: flex; flex-wrap: wrap; gap: 4px; }
.ai-reason-tag { font-size: 12px; padding: 2px 8px; border-radius: 4px; background: rgba(20, 161, 120, .1); color: var(--green); }
.ai-risk-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.ai-risk-label { font-size: 13px; font-weight: 600; color: #dc2626; flex-shrink: 0; }
.ai-risk-tag { font-size: 12px; padding: 2px 8px; border-radius: 4px; background: rgba(239, 68, 68, .1); color: #dc2626; border: 1px solid rgba(239, 68, 68, .2); }
.ai-next-step { display: flex; align-items: flex-start; gap: 8px; font-size: 13px; line-height: 1.5; }
.ai-next-label { font-weight: 600; color: var(--green); flex-shrink: 0; }
.ai-summary-meta { font-size: 12px; text-align: right; margin-top: 4px; }

/* AI-8 批1.5:批量 AI 分析进度条 */
.batch-progress-track { height: 8px; background: var(--card); border-radius: 999px; overflow: hidden; }
.batch-progress-bar { height: 100%; background: linear-gradient(90deg, var(--green-light), var(--green)); border-radius: 999px; transition: width .3s; }

/* AI-8 批2A:客户360 待办任务区 + AI 确认卡片时间控件 */
.c360-task-card { border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; background: var(--card); margin: 16px 0; }
.c360-task-row { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; padding: 10px 0; border-top: 1px dashed var(--line); }
.c360-task-row:first-child { border-top: none; }
.c360-task-main { flex: 1; min-width: 0; }
.c360-task-topic { font-size: 14px; font-weight: 600; color: var(--ink); margin-bottom: 2px; }
.c360-task-content { font-size: 13px; line-height: 1.5; color: var(--ink-2); word-break: break-all; }
.c360-task-due { font-size: 12px; color: var(--ink-3); margin-top: 4px; }
.c360-task-meta { font-size: 12px; margin-top: 4px; }
.c360-task-actions { display: flex; gap: 6px; flex-shrink: 0; }
.c360-task-empty { text-align: center; padding: 16px; font-size: 13px; }
.ai-tool-due { width: 100%; max-width: 260px; padding: 6px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--card); color: var(--ink); font-size: 13px; }

/* ====== AI-10 批1:任务中心 + 今日待办 ====== */
.task-card { border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; background: var(--card); margin-bottom: 10px; }
.task-card.overdue { border-color: rgba(230, 71, 61, .4); background: rgba(230, 71, 61, .03); }
.task-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.task-topic { font-size: 14px; font-weight: 600; color: var(--ink); }
.task-content { font-size: 13px; color: var(--ink-2); line-height: 1.5; margin-top: 6px; word-break: break-all; }
.task-meta { display: flex; flex-wrap: wrap; gap: 12px; font-size: 12px; margin-top: 8px; }
.task-ops { display: flex; gap: 8px; margin-top: 10px; }
.task-ops a { font-size: 13px; color: var(--green); cursor: pointer; }
.task-ops a:hover { text-decoration: underline; }
.task-ops a.danger { color: var(--red); }
.tk-pager { display: flex; align-items: center; justify-content: center; gap: 14px; padding: 12px 0 4px; }
.td-item { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 8px 0; border-top: 1px dashed var(--line); font-size: 13px; }
.td-item:first-child { border-top: none; }
.td-item.overdue { color: var(--red); }
.td-item.danger { color: var(--red); }
[data-theme="dark"] .task-card { background: var(--card); }
[data-theme="dark"] .task-card.overdue { background: rgba(230, 71, 61, .08); }

/* AI-8 批2B:AI 摘要卡 建议话术 + 建议任务 */
.ai-draft-sec, .ai-sug-sec { margin-top: 10px; border-top: 1px dashed var(--line); padding-top: 8px; }
.ai-sec-title { font-size: 13px; font-weight: 600; color: var(--ink); margin-bottom: 6px; }
.ai-draft-topic { width: 100%; margin-bottom: 6px; padding: 6px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--card); color: var(--ink); font-size: 13px; }
.ai-draft-body { width: 100%; resize: vertical; padding: 6px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--card); color: var(--ink); font-size: 13px; line-height: 1.5; }
.ai-draft-points { margin: 6px 0; font-size: 12px; color: var(--ink-3); }
.ai-draft-points ul { margin: 4px 0 0 16px; }
.ai-draft-ops { display: flex; gap: 8px; margin-top: 6px; }
.ai-sec-empty { font-size: 12px; padding: 4px 0; }
.ai-sug-row { display: flex; align-items: flex-start; gap: 8px; padding: 6px 0; border-bottom: 1px dashed var(--line); }
.ai-sug-row:last-of-type { border-bottom: none; }
.ai-sug-main { flex: 1; min-width: 0; font-size: 13px; color: var(--ink); }
.ai-sug-c { font-size: 12px; color: var(--ink-3); margin-top: 2px; word-break: break-all; }
.ai-sug-due { font-size: 12px; margin-top: 2px; }
.ai-sug-btn { flex-shrink: 0; }
.ai-besttime { font-size: 12px; margin-top: 6px; }

/* ===== AI-8 批3:有新动态提示条 + 更新前后对比 ===== */
.ai-stale-bar { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 8px 0; padding: 8px 12px; background: #fff7e6; border: 1px solid #ffd591; border-radius: 8px; }
.ai-stale-bar[hidden] { display: none !important; }
.ai-stale-text { font-size: 12px; color: #ad6800; line-height: 1.6; }
.ai-cmp-sec { margin: 8px 0; padding: 8px 12px; background: #f6ffed; border: 1px solid #b7eb8f; border-radius: 8px; font-size: 12px; }
.ai-cmp-sec[hidden] { display: none !important; }
.ai-cmp-sec summary { cursor: pointer; font-weight: 600; color: #389e0d; }
.ai-cmp-body { margin-top: 6px; }
.ai-cmp-row { display: flex; gap: 8px; padding: 4px 0; border-bottom: 1px dashed var(--line); }
.ai-cmp-row:last-child { border-bottom: none; }
.ai-cmp-row label { flex-shrink: 0; width: 64px; color: var(--ink-3); }
.ai-cmp-row > div { flex: 1; min-width: 0; word-break: break-all; }
.ai-cmp-old { color: var(--ink-3); text-decoration: line-through; }
.ai-cmp-new { color: #389e0d; }
.ai-cmp-up { color: #cf1322; font-weight: 600; }
.ai-cmp-down { color: #389e0d; font-weight: 600; }
.ai-cmp-eq { color: var(--ink-3); }
/* AI-8 批4修复:线索列表风险列(允许换行,完整显示所有风险标签) */
.ai-risk-cell { max-width: 260px; display: flex; flex-wrap: wrap; gap: 2px; }
.ai-risk-cell .ai-risk-chip { white-space: normal; line-height: 1.4; }

/* AI-8 批5:卡片/看板视图 AI 评分+风险展示 */
.lc-ai-row, .kc-ai-row { display: flex; align-items: center; gap: 4px; margin-top: 4px; flex-wrap: wrap; }

/* AI-8 批6:下一步建议建为任务按钮 */
.ai-next-step { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ai-next-step .ai-next-task-btn { margin-left: auto; flex-shrink: 0; }

/* AI-8 批7:摘要待更新标记 */
.ai-stale-dot { color: #d9d9d9; font-size: 10px; margin-left: 4px; cursor: help; }
.ai-stale-dot:hover { color: #faad14; }

/* AI-8 批8:最佳跟进时间 */
.ai-best-time { display: flex; align-items: center; gap: 8px; margin-top: 8px; font-size: 13px; }
.ai-best-time .ai-best-label { font-weight: 600; color: #0e9aa7; flex-shrink: 0; }
.ai-best-time .ai-best-insufficient { color: #999; font-style: italic; }
.ai-best-time .ai-best-none { color: #ccc; }

/* AI-9 批2:批量意向快筛结果卡片 */
.ci-bai-results { margin-top: 12px; border: 1px solid #e8e8e8; border-radius: 8px; background: #fafafa; padding: 12px 14px; }
.ci-bai-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.ci-bai-head b { color: #0B7552; }
.ci-bai-card { background: var(--card); border: 1px solid #f0f0f0; border-radius: 6px; padding: 10px 12px; margin-bottom: 8px; }
.ci-bai-card.error { border-color: #ffccc7; background: #fff2f0; }
.ci-bai-row1 { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ci-bai-score { font-size: 12px; padding: 1px 8px; border-radius: 10px; font-weight: 600; }
.ci-bai-score.high { background: #f6ffed; color: #52c41a; border: 1px solid #b7eb8f; }
.ci-bai-score.mid { background: #fffbe6; color: #faad14; border: 1px solid #ffe58f; }
.ci-bai-score.low { background: #fff2f0; color: #ff4d4f; border: 1px solid #ffccc7; }
.ci-bai-score.none { background: #fafafa; color: #999; border: 1px solid #e8e8e8; }
.ci-bai-tag { font-size: 12px; padding: 1px 8px; border-radius: 10px; background: #e6f7f4; color: #0B7552; border: 1px solid #b2dfd4; }
.ci-bai-flag { font-size: 12px; padding: 1px 8px; border-radius: 10px; background: #fff7e6; color: #d46b08; border: 1px solid #ffd591; }
.ci-bai-summary { margin-top: 6px; font-size: 13px; color: #595959; line-height: 1.6; }
.ci-bai-err { color: #ff4d4f; font-size: 13px; margin-left: 8px; }

/* AI-9 批3: 批次总结面板 */
.ci-bai-summary-panel { background: var(--bg); border: 1px solid #e2f0ea; border-radius: 8px; padding: 16px; margin-bottom: 12px; }
.ci-bai-summary-title { font-size: 14px; font-weight: 600; color: #0B7552; margin-bottom: 12px; }
.ci-bai-summary-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 12px; }
.ci-bai-stat { text-align: center; padding: 8px; background: var(--card); border-radius: 6px; border: 1px solid #e8e8e8; }
.ci-bai-stat-num { display: block; font-size: 20px; font-weight: 700; color: #262626; }
.ci-bai-stat-num.high { color: #52c41a; }
.ci-bai-stat-num.mid { color: #faad14; }
.ci-bai-stat-num.low { color: #ff4d4f; }
.ci-bai-stat-num.err { color: #ff4d4f; }
.ci-bai-stat-label { display: block; font-size: 12px; color: #8c8c8c; margin-top: 2px; }
.ci-bai-common-issues { font-size: 13px; color: #595959; padding-top: 12px; border-top: 1px dashed #e8e8e8; }
.ci-bai-follow-ups { font-size: 13px; color: #595959; padding-top: 10px; border-top: 1px dashed #e8e8e8; }
.ci-bai-risk-alerts { font-size: 13px; color: #d46b08; padding-top: 10px; border-top: 1px dashed #e8e8e8; }
.ci-bai-summary-status { font-size: 12px; color: #8c8c8c; }

/* AI-9 批3: 工具栏 */
.ci-bai-toolbar { display: flex; align-items: center; gap: 12px; padding: 10px 12px; background: #fafafa; border: 1px solid #e8e8e8; border-radius: 6px; margin-bottom: 12px; flex-wrap: wrap; }
.ci-bai-check { display: flex; align-items: center; gap: 4px; font-size: 13px; color: #595959; cursor: pointer; }
.ci-bai-check input[type="checkbox"] { width: 14px; height: 14px; accent-color: #14A178; }
.ci-bai-toolbar-sep { color: #d9d9d9; }

/* AI-9 批3: 意向对比占位 */
.ci-bai-compare { margin-top: 8px; padding-top: 8px; border-top: 1px dashed #e8e8e8; }
.ci-bai-compare-title { font-size: 12px; color: #0B7552; font-weight: 600; }
.ci-bai-compare-content { font-size: 12px; margin-top: 4px; }

/* ===== 深色模式 ===== */
[data-theme="dark"] {
  --bg: #0d1613;
  --card: #16221d;
  --line: #303d38;
  --ink: #e6f3ee;
  --ink-2: #c9d9d3;
  --ink-3: #8a9e97;
  --green-light: rgba(20,161,120,0.2);
  /* 深色状态色(设计稿 F87171/4ADE80/FBBF24),避免浅色红绿在深底刺眼 */
  --red: #F87171;
  --success: #4ADE80;
  --amber: #FBBF24;
  --blue: #7fe0c0;
  --blue-light: rgba(57,202,149,0.18);
  --shadow: 0 2px 14px rgba(0, 0, 0, 0.25);
}
[data-theme="dark"] .pill.green { background: rgba(22, 163, 74, 0.18); color: var(--success); }
[data-theme="dark"] .pill.amber { background: rgba(245, 158, 11, 0.18); color: var(--amber); }
[data-theme="dark"] .pill.red { background: rgba(248, 113, 113, 0.18); color: var(--red); }
[data-theme="dark"] .pill.blue { background: rgba(57,202,149,0.18); color: var(--blue); }
[data-theme="dark"] .pill.gray { background: #212d28; color: var(--ink-3); }
[data-theme="dark"] body { background: var(--bg); color: var(--ink); }
[data-theme="dark"] .topbar { background: #16221d; border-color: #303d38; }
[data-theme="dark"] .content { background: #0d1613; }
[data-theme="dark"] .card { background: #16221d; box-shadow: 0 2px 14px rgba(0,0,0,0.25); }
[data-theme="dark"] .login-card { background: #16221d; }
[data-theme="dark"] .modal { background: #16221d; }
[data-theme="dark"] .modal-head { border-color: #303d38; }
[data-theme="dark"] .drawer { background: #16221d; }
[data-theme="dark"] .lead-card { background: #16221d; }
[data-theme="dark"] .lead-viewbar { background: #16221d; }
[data-theme="dark"] .sidebar { background: #0d1613; }
[data-theme="dark"] .menu-group { color: #8a9e97; }
[data-theme="dark"] .menu-item { color: #c9d9d3; }
[data-theme="dark"] .menu-item.active { background: rgba(20,161,120,0.25); color: var(--on-accent); }
[data-theme="dark"] .menu-item:hover { color: var(--on-accent); }
[data-theme="dark"] .tbl th { background: #1c2823; color: var(--ink-2); }
[data-theme="dark"] .tbl td { color: var(--ink); }
[data-theme="dark"] .tbl tbody tr:hover { background: color-mix(in srgb, var(--green) 6%, var(--card)); }
[data-theme="dark"] .tbl thead th { box-shadow: inset 0 -1px 0 #303d38; }
[data-theme="dark"] .tbl input:not([type="checkbox"]):not([type="radio"]),
[data-theme="dark"] .ef input,
[data-theme="dark"] .tbl select,
[data-theme="dark"] .inp,
[data-theme="dark"] select,
[data-theme="dark"] textarea { background: #0d1613; border-color: #303d38; color: var(--ink); }
[data-theme="dark"] .inp:focus,
[data-theme="dark"] select:focus,
[data-theme="dark"] textarea:focus,
[data-theme="dark"] .tbl input:focus,
[data-theme="dark"] .tbl select:focus { border-color: var(--green); }
[data-theme="dark"] .abtn { background: var(--green); }
[data-theme="dark"] .abtn.ghost { background: transparent; color: var(--green); border: 1px solid var(--green); }
[data-theme="dark"] .abtn.ghost:hover { background: rgba(20,161,120,0.15); }
[data-theme="dark"] .abtn.secondary { background: rgba(20,161,120,0.15); color: var(--green-mid); }
[data-theme="dark"] .abtn.text { color: var(--green-mid); }
[data-theme="dark"] .abtn.text:hover { background: rgba(20,161,120,0.15); }
[data-theme="dark"] .search-panel,
[data-theme="dark"] .notif-panel { background: #16221d; border-color: #303d38; box-shadow: 0 8px 30px rgba(0,0,0,0.5); }
[data-theme="dark"] .dim { color: var(--ink-3); }
[data-theme="dark"] .modal-mask,
[data-theme="dark"] .drawer-mask { background: rgba(0,0,0,0.7); }
[data-theme="dark"] ::-webkit-scrollbar { background: #0d1613; }
[data-theme="dark"] ::-webkit-scrollbar-thumb { background: #303d38; border-radius: 4px; }
[data-theme="dark"] .seg a { background: #16221d; color: var(--ink-2); border-color: #303d38; }
[data-theme="dark"] .ed-sec { background: #16221d; }
[data-theme="dark"] .stat-mini { background: #16221d; }
[data-theme="dark"] .date-cell { background: #16221d; }
[data-theme="dark"] .slot-cell { background: #16221d; }
[data-theme="dark"] .kpi { background: #16221d; }
[data-theme="dark"] .tl-dot { background: #16221d; }
[data-theme="dark"] .btn-ghost { color: var(--ink-2); }
[data-theme="dark"] .btn-ghost:hover { background: rgba(255,255,255,0.06); }
[data-theme="dark"] .topbar-search input { color: var(--ink); }
/* 20261009 登录页改版深色适配(方案1绿系):修复标题/标签写死深色导致深色模式下不可读、页面背景未跟随变暗 */
[data-theme="dark"] .login-view {
  background: #0d1613;
  background-image:
    radial-gradient(720px 420px at 12% -8%, rgba(20, 161, 120, 0.08), transparent 60%),
    radial-gradient(640px 400px at 108% 112%, rgba(20, 161, 120, 0.06), transparent 60%);
}
[data-theme="dark"] .login-view::before,
[data-theme="dark"] .login-view::after { border-color: rgba(20, 161, 120, 0.10); }
[data-theme="dark"] .login-card { box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4); }
[data-theme="dark"] .login-brand { background: rgba(20, 161, 120, 0.2); }
[data-theme="dark"] .login-card h1 { color: #e6f3ee; }
[data-theme="dark"] .login-sub { color: #3ecfa3; }
[data-theme="dark"] .login-card label { color: #e6f3ee; }
[data-theme="dark"] .login-card input { background: #0d1613; border-color: #303d38; color: #e6f3ee; }
[data-theme="dark"] .login-card input::placeholder { color: #6e817a; }
[data-theme="dark"] .login-card input:focus { border-color: var(--green); box-shadow: 0 0 0 2px rgba(20, 161, 120, 0.25); }
[data-theme="dark"] .login-err { color: #f87171; }
[data-theme="dark"] .login-card:has(.login-err:not(:empty)) input[type="password"] { border-color: #f87171; }
[data-theme="dark"] .login-tip { color: #6e817a; }
[data-theme="dark"] .login-remember { color: #c9d9d3; }
[data-theme="dark"] .login-remember .lr-tip { color: #6e817a; }
/* AI-10 批2:日历深色模式适配 */
[data-theme="dark"] .cal-cell { background: #16221d; border-color: #303d38; }
[data-theme="dark"] .cal-cell.cal-head { background: #1c2823; color: var(--ink-2); }
[data-theme="dark"] .cal-cell.cal-other { background: #0d1613; }
[data-theme="dark"] .cal-cell.cal-today { border-color: var(--green); background: rgba(20,161,120,.08); }
[data-theme="dark"] .cal-cell .cal-day { color: var(--ink-2); }
[data-theme="dark"] .cal-status-select { background: #0d1613; border-color: #303d38; color: var(--ink); }
[data-theme="dark"] .cal-filter-label { color: var(--ink-2); }
[data-theme="dark"] .cal-title { color: var(--ink); }
[data-theme="dark"] .cal-detail-card { background: #16221d; }
[data-theme="dark"] .cal-detail-title { color: var(--ink); }
[data-theme="dark"] .cal-detail-row { color: var(--ink-2); }
[data-theme="dark"] .cal-detail-close { color: var(--ink-3); }
[data-theme="dark"] .cal-detail-close:hover { color: var(--ink); }
[data-theme="dark"] .cal-day-evt { color: var(--ink); }
/* AI-10 批3:一句话建任务 深色模式 */
[data-theme="dark"] .nl-msg { background: rgba(217, 145, 37, .12); }
[data-theme="dark"] .nl-input, [data-theme="dark"] .nl-field { background: #0d1613; border-color: #303d38; }
[data-theme="dark"] .ci-hint-row { border-bottom-color: #303d38; }
[data-theme="dark"] .ci-hint-text { color: #8a9e97; }
[data-theme="dark"] .ci-hint-name { color: #c9d9d3; }
/* AI-10 批5:任务通知深色模式 */
[data-theme="dark"] .notif-panel .np-task-row:hover { background: #212d28; }
[data-theme="dark"] .notif-panel .np-task-date { color: #8a9e97; }
[data-theme="dark"] .notif-panel .np-sec-head { color: #c9d9d3; }
[data-theme="dark"] .notif-panel .np-readall { color: #5cd3a8; }
[data-theme="dark"] .topbar-search input::placeholder { color: var(--ink-3); }
[data-theme="dark"] .tu-role { background: rgba(20,161,120,0.2); color: var(--green-mid); }
[data-theme="dark"] .toast-success { background: rgba(22,122,62,0.9); }
[data-theme="dark"] .toast-error { background: rgba(180,40,30,0.9); }
[data-theme="dark"] .toast-warn { background: rgba(170,110,10,0.9); }
[data-theme="dark"] .ci-bai-results { background: #0d1613; border-color: #303d38; }
[data-theme="dark"] .ci-bai-card { background: #16221d; border-color: #303d38; }
[data-theme="dark"] .ci-bai-score.none { background: #212d28; color: #8a9e97; border-color: #303d38; }
[data-theme="dark"] .ci-bai-summary { color: var(--ink-2); }

/* ============ AI-12 批4:重复档案检测/周报月报 ============ */
.dupe-group { background: var(--bg-2); border: 1px solid var(--line); border-radius: 10px; margin-bottom: 14px; overflow: hidden; }
.dupe-head { padding: 12px 14px; font-weight: 600; font-size: 15px; border-bottom: 1px solid var(--line); display: flex; gap: 8px; align-items: center; }
.report-complete { background: #fffbe6; color: #ad6800; border: 1px solid #ffe58f; border-radius: 8px; padding: 10px 12px; font-size: 13px; margin-bottom: 8px; }
[data-theme="dark"] .report-complete { background: #2b2110; border-color: #554412; color: #d4a843; }
[data-theme="dark"] .dupe-group { background: #0d1613; border-color: #303d38; }
[data-theme="dark"] .dupe-head { border-color: #303d38; }

/* ============ AI-12 批3:风险视图 ============ */
.rk-tabs { display: flex; gap: 8px; align-items: center; padding: 12px 14px 0; flex-wrap: wrap; }
.rk-tab { border: 1px solid var(--line, #dfece7); background: var(--bg-2, #f6f8fa); color: var(--ink-2); border-radius: 8px; padding: 7px 14px; cursor: pointer; font-size: 14px; }
.rk-tab.on { background: var(--brand, #14a178); border-color: var(--brand, #14a178); color: var(--on-accent); }
.rk-tab.on .dim { color: rgba(255,255,255,0.75); }
.rk-rules { margin-left: auto; font-size: 12px; }
.rk-body { padding: 14px; overflow-x: auto; }
.rk-tbl th, .rk-tbl td { vertical-align: middle; }
.rk-score { display: inline-block; min-width: 26px; text-align: center; border-radius: 12px; padding: 2px 8px; font-weight: 700; color: var(--on-accent); }
.rk-s1 { background: #8aaa9e; }
.rk-s2 { background: #e07b00; }
.rk-s3 { background: #d23b3b; }
.rk-tag { display: inline-block; background: rgba(210,59,59,0.1); color: #c43434; border: 1px solid rgba(210,59,59,0.25); border-radius: 6px; padding: 1px 6px; margin: 1px 3px 1px 0; font-size: 12px; white-space: nowrap; }
.rk-never { color: #c43434; font-weight: 600; }
.rk-overdue { color: #c43434; font-weight: 600; }
.rk-empty { padding: 40px 0; text-align: center; color: var(--ink-2); font-size: 15px; }
.rk-tbl .ops a { margin-right: 8px; cursor: pointer; color: var(--brand, #14a178); }
[data-theme="dark"] .rk-tab { background: #16221d; border-color: #303d38; color: #8a9e97; }
[data-theme="dark"] .rk-tab.on { background: #0e8c6b; border-color: #0e8c6b; color: var(--on-accent); }
[data-theme="dark"] .rk-tag { background: rgba(210,59,59,0.18); color: #f08a8a; border-color: rgba(210,59,59,0.35); }
[data-theme="dark"] .rk-never, [data-theme="dark"] .rk-overdue { color: #f08a8a; }
[data-theme="dark"] .rk-empty { color: #8a9e97; }


/* 全局响应式兜底：宽度较小时保持导航可滚动、表单可操作、弹窗不超出视口。 */
@media (max-width: 900px) {
  .topbar { padding: 10px 16px; height: auto; min-height: 54px; gap: 10px; flex-wrap: wrap; }
  .topbar-right { min-width: 0; flex-wrap: wrap; gap: 10px; }
  .content { padding: 18px 16px 32px; }
  .card { padding: 18px; }
  .form-row { align-items: stretch; flex-direction: column; gap: 6px; }
  .form-row label { width: auto; }
  .form-actions { margin-left: 0; }
  .stat-row, .act-stats { flex-wrap: wrap; }
  .stat-row > *, .act-stats > * { min-width: min(100%, 180px); }
  .modal, .drawer { max-width: calc(100vw - 24px); }
}

@media (max-width: 700px) {
  .login-card { width: min(380px, calc(100vw - 28px)); padding: 28px 22px 22px; }
  .app-view { display: block; }
  .sidebar { width: 100%; max-height: none; }
  .logo { padding: 10px 14px; font-size: 15px; }
  .menu { display: flex; align-items: center; gap: 4px; overflow-x: auto; overflow-y: hidden; padding: 4px 8px 10px; max-height: 58px; flex: none; -webkit-overflow-scrolling: touch; }
  .menu-group { display: none; }
  .menu-item { flex: 0 0 auto; white-space: nowrap; padding: 8px 10px; font-size: 12px; margin: 0; }
  .side-foot { display: none; }
  .topbar { align-items: flex-start; padding: 10px 12px; font-size: 15px; }
  .topbar-right { width: 100%; justify-content: flex-start; }
  .topbar-search { max-width: 100%; flex: 1 1 180px; }
  .content { padding: 12px 10px 28px; overflow-x: auto; }
  .card { padding: 14px; margin-bottom: 12px; }
  .card-head { align-items: flex-start; gap: 8px; flex-wrap: wrap; }
  .card-actions, .form-actions { display: flex; flex-wrap: wrap; gap: 8px; }
  .tbl { min-width: 620px; }
  .login-card h1 { font-size: 20px; }
  .placeholder { padding: 36px 16px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}

/* ============ 第17期修订:今日概览 KPI 图标/环比行/趋势标注/漏斗轨道(A稿,只增不改) ============ */
/* KPI 图标芯片:仅新渲染结构(.kpi-ico)生效,不影响其他页面旧结构 */
.kpi .kpi-ico {
  display: inline-flex; align-items: center; justify-content: center;
  width: 39px; height: 39px; border-radius: 11px; margin-bottom: 10px;
}
.kpi .kpi-ico svg { width: 19px; height: 19px; }
.kpi.blue .kpi-ico { background: #E7F7F0; color: var(--green); }
.kpi.green .kpi-ico { background: #E8F7EE; color: var(--success); }
.kpi.amber .kpi-ico { background: #FEF3E6; color: var(--amber); }
.kpi.red .kpi-ico { background: #FDECEB; color: var(--red); }

/* KPI 环比行:available=false 时 .na 灰色「—」,永不生成虚假箭头 */
.kpi-cmp {
  display: flex; align-items: center; justify-content: center; gap: 4px;
  margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--line);
  font-size: 11px; color: var(--ink-3); white-space: nowrap;
}
.kpi-cmp b { font-weight: 700; font-size: 11px; }
.kpi-cmp b.up { color: var(--success); }
.kpi-cmp b.down { color: var(--red); }
.kpi-cmp b.flat { color: var(--ink-3); font-weight: 500; }
.kpi-cmp i { font-style: normal; color: var(--ink-3); opacity: .85; }
.kpi-cmp.na b { color: #b7cec5; font-weight: 500; }

/* 今日概览页头帮助按钮:绿色描边修饰类(仅本页 JS 添加,不改全局 .help-btn) */
.help-btn.help-btn-green { border-color: var(--green); }
.help-btn.help-btn-green:hover { background: #DFF3EA; }

/* 趋势图:Y 轴刻度 + 网格线 + 柱顶数值(仅新渲染结构 .trend-wrap 生效,不影响其他页面旧 .trend) */
.trend-wrap { display: flex; gap: 8px; margin-top: 14px; }
.trend-y {
  display: flex; flex-direction: column; justify-content: space-between;
  height: 160px; min-width: 34px; text-align: right;
  font-size: 9px; color: var(--ink-3); padding-bottom: 18px; flex-shrink: 0;
}
.trend-y i { font-style: normal; line-height: 1; transform: translateY(2px); }
.trend-plot { flex: 1; position: relative; min-width: 0; }
.trend-plot .trend { margin-top: 0; }
.trend-grid { position: absolute; left: 0; right: 0; top: 0; bottom: 18px; pointer-events: none; }
.trend-grid i { position: absolute; left: 0; right: 0; height: 1px; background: var(--line); opacity: .55; font-style: normal; }
.trend-col em { font-style: normal; font-size: 9px; line-height: 1.1; color: var(--ink-2); }

/* 转化漏斗:右侧百分比 + 数值列宽(限今日概览 #dash-body,不影响其他页面) */
#dash-body .funnel-row b { width: auto; min-width: 44px; }
.funnel-row .fp { width: 52px; text-align: right; font-size: 11px; color: var(--ink-3); flex-shrink: 0; }

/* 今日概览解读条:浅绿(仅本页,其他页面解读条保持原样) */
#dash-body .insight-box { background: #F0FAF5; border-color: #CBEADD; }

/* ---- 深色模式适配(第17期修订新增元素) ---- */
[data-theme="dark"] .kpi .kpi-ico.blue,
[data-theme="dark"] .kpi .kpi-ico.green { background: rgba(20, 161, 120, .16); }
[data-theme="dark"] .kpi .kpi-ico.amber { background: rgba(245, 158, 11, .16); }
[data-theme="dark"] .kpi .kpi-ico.red { background: rgba(239, 68, 68, .16); }
[data-theme="dark"] .kpi-cmp { border-top-color: var(--line); }
[data-theme="dark"] .kpi-cmp.na b { color: #6e817a; }
[data-theme="dark"] .help-btn.help-btn-green { border-color: var(--green); }
[data-theme="dark"] .help-btn.help-btn-green:hover { background: rgba(20, 161, 120, .18); }
[data-theme="dark"] .trend-grid i { background: var(--line); opacity: .5; }
[data-theme="dark"] .trend-col em { color: #c6dad2; }
[data-theme="dark"] #dash-body .insight-box { background: #12261E; border-color: #1F4D3A; }

/* ============ 第17期修订 B:今日概览下半部分(设计稿B,只增不改) ============ */
/* 卡1:平台状态 - 2列网格(沿用 .st-item 既有边框圆角,仅改网格列数与底部 chips) */
#dash-body .dash-st-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 12px; }
#dash-body .dash-st-foot { margin-top: 12px; }
#dash-body .dash-st-foot .st-k { color: var(--ink-3); font-size: 12px; }

/* 灰色 chip(已关闭/不可用/测试标记):不覆盖全局 .chip.off(红色),仅本页新增 .chip.gray */
#dash-body .chip.gray { background: #f1faf7; color: var(--ink-3); border-color: #e3f5ee; }

/* 卡2:学校授权 - 到期日期灰色 */
#dash-body .dim-date { color: var(--ink-3); }

/* 卡3:待办中心 - 4×2白格 + 22px大数字(有数绿/0灰) */
#dash-body .dash-todo-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-top: 12px; }
#dash-body .dash-todo { display: block; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; cursor: pointer; transition: border-color .15s; text-decoration: none; }
#dash-body .dash-todo:hover { border-color: var(--green); }
#dash-body .dash-todo b { font-size: 22px; font-weight: 700; line-height: 1.2; }
#dash-body .dash-todo b.has { color: var(--green); }
#dash-body .dash-todo b.zero { color: var(--ink-3); }
#dash-body .dash-todo span { display: block; color: var(--ink-2); font-size: 13px; margin-top: 2px; }

/* 卡4:快捷入口 - 6项横向 + 32px浅绿底图标块 + SVG线性图标 */
#dash-body .dash-quick-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px; margin-top: 12px; }
#dash-body .dash-quick-item { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 14px 8px; border-radius: 10px; cursor: pointer; transition: background .15s; }
#dash-body .dash-quick-item:hover { background: var(--green-light); }
#dash-body .dash-quick-item .qi-ico-box { width: 32px; height: 32px; border-radius: 8px; background: var(--green-light); display: flex; align-items: center; justify-content: center; color: var(--green); }
#dash-body .dash-quick-item .qi-ico-box svg { width: 18px; height: 18px; }
#dash-body .dash-quick-item .qi-label { font-size: 12px; color: var(--ink-3); }

/* ---- 深色模式适配(第17期修订B下半部分) ---- */
[data-theme="dark"] #dash-body .chip.gray { background: #2a3631; color: #6e817a; border-color: #303d38; }
[data-theme="dark"] #dash-body .dash-todo { border-color: #303d38; }
[data-theme="dark"] #dash-body .dash-todo:hover { border-color: var(--green); }
[data-theme="dark"] #dash-body .dash-todo b.zero { color: #6e817a; }
[data-theme="dark"] #dash-body .dash-todo span { color: #c6dad2; }
[data-theme="dark"] #dash-body .dash-quick-item:hover { background: rgba(20, 161, 120, .16); }
[data-theme="dark"] #dash-body .dash-quick-item .qi-ico-box { background: rgba(20, 161, 120, .16); }
[data-theme="dark"] #dash-body .dash-quick-item .qi-label { color: #8ba49b; }

/* 窄屏适配:待办4列→2列,快捷6列→3列,平台状态2列→1列 */
@media (max-width: 720px) {
  #dash-body .dash-todo-grid { grid-template-columns: repeat(2, 1fr); }
  #dash-body .dash-quick-grid { grid-template-columns: repeat(3, 1fr); }
  #dash-body .dash-st-grid { grid-template-columns: 1fr; }
}

/* =====================================================================
   BC 方案阶段一(20261015):四页面(今日概览/CRM工作台/线索管理/数据看板)
   暗色查漏补缺 + KPI 细节统一 + 页内批量条收编。本块为纯追加,不改动上方任何已有规则。
   暗色值与现网 GitHub 风色板(L2767-2782)一致:bg #0d1613 / card #16221d /
   elevated #1c2823·#212d28 / line #303d38;语义色沿用 --red/--success/--amber/--blue 暗值。
   ===================================================================== */

/* ---- 1. 骨架屏(四页面加载态;shimmer 改深灰渐变,保留原 1.4s 动画) ---- */
[data-theme="dark"] .skeleton { background: #16221d; }
[data-theme="dark"] .sk-line,
[data-theme="dark"] .sk-card {
  background: linear-gradient(90deg, #1c2823 25%, #22332c 37%, #1c2823 63%);
  background-size: 400% 100%;
}

/* ---- 2. 漏斗轨道(柱条彩色保持不变) ---- */
[data-theme="dark"] .funnel-row .ft { background: #212d28; }
[data-theme="dark"] .crm-funnel .cf-track { background: #212d28; }

/* ---- 3. CRM 工作量排行:前三徽标(金/银灰/铜) ---- */
[data-theme="dark"] .rank-no { background: #212d28; color: var(--ink-2); }
[data-theme="dark"] .rank-no.top1 { background: rgba(245, 158, 11, .20); color: var(--amber); }
[data-theme="dark"] .rank-no.top2 { background: #294037; color: #c6dad2; }
[data-theme="dark"] .rank-no.top3 { background: #3a2a1c; color: #e8a05c; }

/* ---- 4. CRM 提示条三态:黄=警告 / 蓝=信息 / 灰=无权限或失败 ---- */
[data-theme="dark"] .crm-notice { background: #2b2110; border-color: #554412; }
[data-theme="dark"] .crm-notice .cn-title { color: #d4a843; }
[data-theme="dark"] .crm-notice.cn-info { background: #102a20; border-color: #1f5a44; }
[data-theme="dark"] .crm-notice.cn-info .cn-title { color: var(--success); }
[data-theme="dark"] .crm-notice.cn-lock { background: #16221d; border-color: #303d38; }
[data-theme="dark"] .crm-notice code { background: rgba(255, 255, 255, .08); }

/* ---- 5. 线索管理:7 段报名阶段标签(语义色透明底 + 同系亮字) ---- */
[data-theme="dark"] .stage-tag.s1 { background: #212d28; color: var(--ink-3); }
[data-theme="dark"] .stage-tag.s2 { background: rgba(245, 158, 11, .16); color: var(--amber); }
[data-theme="dark"] .stage-tag.s3 { background: rgba(20, 161, 120, .18); color: #3ecfa3; }
[data-theme="dark"] .stage-tag.s4 { background: rgba(89,243,187,.18); color: #a7dcc6; }
[data-theme="dark"] .stage-tag.s5 { background: rgba(74, 222, 128, .15); color: var(--success); }
[data-theme="dark"] .stage-tag.s6 { background: rgba(57,202,149,.22); color: var(--blue); }
[data-theme="dark"] .stage-tag.s7 { background: rgba(248, 113, 113, .18); color: var(--red); }

/* ---- 6. 线索管理:标签 chip(默认绿 + 8 个修饰色) ---- */
[data-theme="dark"] .tag-chip { background: rgba(20, 161, 120, .2); color: #3ecfa3; }
[data-theme="dark"] .tag-chip.tc-red    { background: rgba(248, 113, 113, .16); color: #f0a0a0; }
[data-theme="dark"] .tag-chip.tc-orange { background: rgba(251, 146, 60, .16); color: #fdba74; }
[data-theme="dark"] .tag-chip.tc-gold   { background: rgba(245, 158, 11, .16); color: var(--amber); }
[data-theme="dark"] .tag-chip.tc-green  { background: rgba(74, 222, 128, .15); color: var(--success); }
[data-theme="dark"] .tag-chip.tc-blue   { background: rgba(57,202,149,.22); color: var(--blue); }
[data-theme="dark"] .tag-chip.tc-purple { background: rgba(89,243,187,.18); color: #a7dcc6; }
[data-theme="dark"] .tag-chip.tc-gray   { background: #212d28; color: var(--ink-3); }
[data-theme="dark"] .tag-chip.tc-amber  { background: rgba(245, 158, 11, .16); color: var(--amber); }

/* ---- 7. 线索管理:看板视图(列/卡片/计数/预览列/拖放区;卡片视图 .lead-card 已在 L2796 适配) ---- */
[data-theme="dark"] .kanban-col { background: #16221d; }
[data-theme="dark"] .kanban-col.kc-overdue { background: rgba(248, 113, 113, .08); }
[data-theme="dark"] .kanban-col.kc-preview { background: rgba(245, 158, 11, .08); }
[data-theme="dark"] .kanban-col .kc-head { border-bottom-color: #303d38; }
[data-theme="dark"] .kanban-col .kc-head .kc-count { background: #212d28; color: var(--ink-2); box-shadow: none; }
[data-theme="dark"] .kanban-col.kc-preview .kc-head .kc-count { background: rgba(245, 158, 11, .14); color: var(--amber); }
[data-theme="dark"] .kanban-col .kc-preview-tag { background: rgba(245, 158, 11, .16); color: var(--amber); }
[data-theme="dark"] .kanban-card { background: #1c2823; border-color: #303d38; box-shadow: none; }
[data-theme="dark"] .kanban-card:hover { box-shadow: 0 4px 12px rgba(0, 0, 0, .4); }
[data-theme="dark"] .kanban-col .kc-drop-hint,
[data-theme="dark"] .kb-empty-col { border-color: #303d38; }
[data-theme="dark"] .kanban-col.drag-over { background: rgba(20, 161, 120, .12); }

/* ---- 8. 顶栏环境徽章四态(生产/未知=红,测试=琥珀,开发=绿) ---- */
[data-theme="dark"] .env-badge.env-prod,
[data-theme="dark"] .env-badge.env-unknown { background: rgba(248, 113, 113, .14); color: var(--red); border-color: rgba(248, 113, 113, .3); }
[data-theme="dark"] .env-badge.env-test { background: rgba(245, 158, 11, .14); color: var(--amber); border-color: rgba(245, 158, 11, .3); }
[data-theme="dark"] .env-badge.env-dev { background: rgba(74, 222, 128, .12); color: var(--success); border-color: rgba(74, 222, 128, .3); }

/* ---- 9. 通用 chip 三态(不覆盖上方已有 #dash-body .chip.gray 专属规则) ---- */
[data-theme="dark"] .chip { background: #212d28; color: var(--ink-2); border-color: #303d38; }
[data-theme="dark"] .chip.on { background: rgba(20, 161, 120, .16); color: #3ecfa3; border-color: rgba(20, 161, 120, .35); }
[data-theme="dark"] .chip.off { background: rgba(248, 113, 113, .14); color: var(--red); border-color: rgba(248, 113, 113, .3); }

/* ---- 10. 页头帮助面板 ---- */
[data-theme="dark"] .help-panel { background: #16221d; border-color: #303d38; }
[data-theme="dark"] .help-panel code { background: #212d28; }

/* ---- 11. 行内代码(help-panel/crm-notice 内的同名元素由各自更高特异性规则接管) ---- */
[data-theme="dark"] code { background: #212d28; }

/* ---- 12. 危险操作影响区(.dg-impact 当前为预留样式;.cd-impact 无背景、文字用 ink-3 变量自动适配) ---- */
[data-theme="dark"] .dg-impact { background: rgba(248, 113, 113, .10); border-color: rgba(248, 113, 113, .3); color: #f0a0a0; }

/* ---- 13. KPI 数字等宽:滚动/刷新时字宽不跳动(仅字体特性,不改字号字重) ---- */
.kpi b { font-variant-numeric: tabular-nums; }

/* ---- 14. CRM 第 8 卡(灰)图标芯片:补齐蓝/绿/琥珀/红之外的 gray 配色 ---- */
.kpi.gray .kpi-ico { background: #f1faf7; color: var(--ink-3); }
[data-theme="dark"] .kpi.gray .kpi-ico { background: #212d28; color: var(--ink-3); }

/* ---- 15. 页内批量条(线索管理 #ld-batch;品牌深绿渐变,明暗通用;替代原写死内联色)
   与 fixed 底部通用 .batch-bar 视觉同源,但定位/交互完全独立,互不影响 ---- */
.batch-inline {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 12px; margin-bottom: 12px; border-radius: 8px;
  background: linear-gradient(135deg, #14A178, #0B7552);
  border: 1px solid rgba(20, 161, 120, .5);
  color: #D6F0E5;
}
.batch-inline .abtn,
[data-theme="dark"] .batch-inline .abtn {
  background: rgba(255, 255, 255, .18); color: var(--on-accent);
  border: 1px solid rgba(255, 255, 255, .3);
}
.batch-inline .abtn:hover,
[data-theme="dark"] .batch-inline .abtn:hover { background: rgba(255, 255, 255, .28); }

/* ---- 16. 联调目检补遗:线索页实际渲染、首轮清单漏统的子样式(纯暗色追加) ---- */
/* 16.1 招生漏斗 15 细阶段 pill(.fn-stage-pill 8 组;线索页与聊天导入页共用组件) */
[data-theme="dark"] .fn-stage-new      { background: #212d28; color: var(--ink-3); }
[data-theme="dark"] .fn-stage-contact  { background: rgba(245, 158, 11, .16); color: var(--amber); }
[data-theme="dark"] .fn-stage-qualified { background: rgba(74, 222, 128, .15); color: var(--success); }
[data-theme="dark"] .fn-stage-convert  { background: rgba(89,243,187,.18); color: #a7dcc6; }
[data-theme="dark"] .fn-stage-enrolled { background: rgba(57,202,149,.22); color: var(--blue); }
[data-theme="dark"] .fn-stage-risk     { background: rgba(248, 113, 113, .18); color: var(--red); }
[data-theme="dark"] .fn-stage-dormant  { background: #2a3631; color: #99b2a9; }
[data-theme="dark"] .fn-stage-recycle  { background: rgba(251, 146, 60, .16); color: #fdba74; }
/* 16.2 AI「下一步动作」提示条(线索卡 .lc-next-action / 看板卡 .kc-next-action) */
[data-theme="dark"] .lc-next-action,
[data-theme="dark"] .kc-next-action { background: rgba(89,243,187,.14); color: #a7dcc6; }
/* 16.3 客户 360 详情:漏斗块/区块说明条/空块/风险字(弹窗内,属线索页范围) */
[data-theme="dark"] .c360-funnel { background: #16221d; }
[data-theme="dark"] .c360-sec-desc { background: #16221d; }
[data-theme="dark"] .c360-empty-block { background: #16221d; border-color: #303d38; }
[data-theme="dark"] .lc-risk { color: var(--red); }

/* ---- 17. 批量上传 - 全屏预览模态框 ---- */
/* 重构:扁平化 DOM,modal 自身是遮罩,所有子元素直接 absolute 定位 */
.mb-vp-modal {
  position: fixed; inset: 0; z-index: 9999;
  background: #000;
  font-family: inherit;
  cursor: zoom-out;
}
.mb-vp-modal[hidden] { display: none; }
.mb-vp-bar {
  position: absolute; top: 0; left: 0; right: 0;
  height: 50px; box-sizing: border-box;
  display: flex; align-items: center; gap: 16px;
  padding: 14px 24px;
  color: #eee; font-size: 14px;
  cursor: default;
  z-index: 10;
}
.mb-vp-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mb-vp-close {
  cursor: pointer; padding: 4px 10px; border-radius: 4px;
  user-select: none; font-size: 18px;
}
.mb-vp-close:hover { background: rgba(255,255,255,.1); }
.mb-vp-cropbtn, .mb-vp-applycrop, .mb-vp-cancelcrop {
  cursor: pointer; padding: 5px 12px; border-radius: 5px;
  font-size: 13px; border: 1px solid rgba(255,255,255,.25); background: rgba(255,255,255,.08);
  color: #eee; user-select: none; font-family: inherit;
}
.mb-vp-cropbtn:hover, .mb-vp-applycrop:hover, .mb-vp-cancelcrop:hover {
  background: rgba(255,255,255,.2);
}
.mb-vp-applycrop { border-color: #5ac46a; background: rgba(90,196,106,.18); color: #a8e5af; }
.mb-vp-cancelcrop { border-color: rgba(255,255,255,.15); color: #bbb; }
/* 修复(2026-10-19):上面 3 个按钮的行内样式带了 display:inline-flex,会顶掉 hidden 属性,
   导致「裁剪/应用裁剪/取消裁剪」在非裁剪态也常显(点应用裁剪无反应)。用 !important 让 hidden 生效。 */
.mb-vp-cropbtn[hidden], .mb-vp-applycrop[hidden], .mb-vp-cancelcrop[hidden] { display: none !important; }
/* stage: bar 之下、hint 之上 */
.mb-vp-stage {
  position: absolute; top: 50px; bottom: 45px; left: 0; right: 0;
  overflow: hidden; background: #000;
  z-index: 1;
}
.mb-vp-stage video,
.mb-vp-stage img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: #000;
  transition: transform .15s ease-out;
  z-index: 2;
  /* 强制提升合成层,避免浏览器 GPU 合成器把 video 渲染层放到背景后面 */
  transform: translate3d(0,0,0);
  backface-visibility: hidden;
}
.mb-vp-stage video[hidden],
.mb-vp-stage img[hidden] { display: none; }
.mb-vp-zoom { font-size: 13px; opacity: .8; }

/* === 视频控制条 === */
.mb-vp-controls {
  position: absolute; bottom: 45px; left: 12px; right: 12px;
  height: 36px; box-sizing: border-box;
  display: flex; align-items: center; gap: 10px;
  padding: 0 10px;
  background: rgba(0,0,0,.55);
  border-radius: 8px;
  z-index: 20;
}
.mb-vp-controls[hidden] { display: none !important; }
.mb-vp-playbtn {
  background: rgba(255,255,255,.15); border: none; color: var(--on-accent);
  width: 30px; height: 26px; border-radius: 6px;
  font-size: 14px; cursor: pointer; display: flex; align-items: center; justify-content: center;
}
.mb-vp-playbtn:hover { background: rgba(255,255,255,.3); }
.mb-vp-time {
  color: rgba(255,255,255,.85); font-size: 12px; font-variant-numeric: tabular-nums;
  min-width: 86px; text-align: center;
}
.mb-vp-seek {
  flex: 1; height: 6px; background: rgba(255,255,255,.2); border-radius: 3px;
  position: relative; cursor: pointer;
}
.mb-vp-seek-fill {
  height: 100%; background: #4CAF50; border-radius: 3px; width: 0%;
  transition: width .08s linear;
}
.mb-vp-seek-thumb {
  position: absolute; top: 50%; width: 12px; height: 12px;
  background: var(--card); border-radius: 50%;
  transform: translate(-50%, -50%); left: 0%;
  box-shadow: 0 1px 3px rgba(0,0,0,.4);
  cursor: grab;
}
.mb-vp-seek-thumb:active { cursor: grabbing; transform: translate(-50%, -50%) scale(1.15); }

.mb-vp-hint {
  position: absolute; bottom: 0; left: 0; right: 0;
  height: 45px; box-sizing: border-box;
  text-align: center; padding: 12px;
  color: rgba(255,255,255,.55); font-size: 12px;
  z-index: 10;
  cursor: default;
}
.mb-vp-hint dim { opacity: .5; }

/* loading / error 覆盖在 stage 上面,z-index 最高(但 hidden 时必须 display:none) */
.mb-vp-loading {
  position: absolute; top: 50px; bottom: 45px; left: 0; right: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px;
  background: rgba(0,0,0,.45);
  z-index: 5;
}
.mb-vp-loading[hidden] { display: none !important; }
.mb-vp-spinner {
  width: 44px; height: 44px;
  border: 3px solid rgba(255,255,255,.2);
  border-top-color: var(--card);
  border-radius: 50%;
  animation: mb-vp-spin 0.8s linear infinite;
}
@keyframes mb-vp-spin { to { transform: rotate(360deg); } }
.mb-vp-loading-text { color: var(--on-accent); font-size: 14px; }

.mb-vp-error {
  position: absolute; top: 50px; bottom: 45px; left: 0; right: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px;
  background: rgba(0,0,0,.7);
  color: var(--on-accent); text-align: center; padding: 20px;
  z-index: 5;
}
.mb-vp-error[hidden] { display: none !important; }
.mb-vp-err-icon { font-size: 42px; }
.mb-vp-err-text { font-size: 14px; max-width: 400px; line-height: 1.6; }
.mb-vp-err-btn {
  padding: 8px 24px; border-radius: 4px;
  background: #14a178; color: var(--on-accent); border: none;
  cursor: pointer; font-size: 14px;
}
.mb-vp-err-btn:hover { background: #0b7552; }

/* ---- 18. 第20期:M-20 笔记富文本编辑器(左侧悬浮工具条,滚动长文时始终可见可点) ---- */
/* 结构:.nt-edit-wrap = 左侧工具条(.nt-rail)+ 右侧编辑区(.nt-edit-main)
   工具条用 position:sticky(top:12px)实现「悬浮」:滚轮滚动正文时固定在视口左上,随时点选格式。
   注意:外层卡片不能再写 overflow:hidden —— 会形成新的滚动容器,使 sticky 失效。 */
.nt-edit-card { padding: 0; }
.nt-edit-wrap { display: flex; align-items: flex-start; }
.nt-rail {
  position: sticky; top: 12px; z-index: 8;
  flex: none; align-self: flex-start;
  display: grid; grid-template-columns: repeat(3, 34px); gap: 3px;
  margin: 12px 0 12px 12px; padding: 8px 6px;
  background: var(--card); border: 1px solid #e3f1ec; border-radius: 12px;
  box-shadow: 0 8px 24px rgba(22,58,45,0.10);
}
.nt-tb-btn {
  width: 34px; height: 34px; padding: 0; flex: none;
  display: inline-flex; align-items: center; justify-content: center;
  border: none; border-radius: 8px; background: transparent; color: #436e5e; cursor: pointer;
  transition: background-color .15s ease, transform .08s ease, color .15s ease;
  -webkit-tap-highlight-color: transparent;
}
.nt-tb-btn:hover { background: #edfbf6; }
.nt-tb-btn:active { transform: scale(.92); background: #dbf7ed; }
.nt-tb-btn.on { background: #E7F7F0; color: var(--green); }
.nt-tb-btn svg { display: block; width: 24px; height: 24px; }
/* 竖排工具条内的分隔线:横线,整行通栏 */
.nt-rail .nt-tb-sep { grid-column: 1 / -1; width: auto; height: 1px; margin: 3px 2px; background: #edf7f3; flex: none; }
.nt-tb-smart { color: var(--green); }
.nt-tb-ai { color: var(--green); }
.nt-edit-main { flex: 1; min-width: 0; border-radius: 0 14px 14px 0; overflow: hidden; }
.nt-edit-tip { padding: 8px 16px 14px; line-height: 1.7; }
/* 工具条上的浮层(AI 写作菜单/更多菜单)改为向右展开 */
.nt-rail .nt-more-pop { left: calc(100% + 8px); right: auto; top: 8px; }
/* AI 写作按钮在工具条最后一排,菜单贴底弹出更贴近触发点 */
.nt-rail .nt-ai-pop { top: auto; bottom: 8px; }
/* ===== 学校快捷栏(2026-10-21):工具栏 🏫 面板,按星级分段、胶囊横向换行 ===== */
.nt-tb-schools { color: var(--green, #14A178); }
.nt-schools-pop {
  position: absolute; left: calc(100% + 8px); top: 8px; z-index: 31;
  width: 340px; display: none; flex-direction: column; gap: 6px;
  padding: 10px; background: var(--card); border: 1px solid #e3f1ec; border-radius: 12px;
  box-shadow: 0 14px 34px rgba(22,58,45,.18);
  max-height: calc(100vh - 40px);
}
.nt-schools-pop.show { display: flex; }
/* 字号面板:与学校面板同一弹出位置,两者互斥 */
.nt-tb-font { font-size: 12px; font-weight: 700; letter-spacing: .5px; }
.nt-font-pop {
  position: absolute; left: calc(100% + 8px); top: 8px; z-index: 31;
  width: 214px; display: none; padding: 10px;
  background: var(--card); border: 1px solid #e3f1ec; border-radius: 12px;
  box-shadow: 0 14px 34px rgba(22,58,45,.18);
}
.nt-font-pop.show { display: block; }
.nt-font-head { font-size: 12px; font-weight: 700; color: #1f4335; margin-bottom: 8px; }
.nt-font-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.nt-font-grid button {
  padding: 6px 0; border: 1px solid #e3f1ec; border-radius: 8px; background: var(--card);
  color: #1f4335; font-size: 12px; cursor: pointer;
  transition: background-color .12s ease, border-color .12s ease, color .12s ease;
}
.nt-font-grid button:hover { background: #edfbf6; border-color: #B7E6D3; color: #0B7552; }
.nt-font-tip { margin-top: 8px; font-size: 11px; color: #8bb2a3; line-height: 1.5; }
[data-theme="dark"] .nt-font-pop { background: #1c2823; border-color: #303d38; }
[data-theme="dark"] .nt-font-head { color: var(--ink); }
[data-theme="dark"] .nt-font-grid button { background: #1c2823; border-color: #303d38; color: var(--ink); }
[data-theme="dark"] .nt-font-grid button:hover { background: #212d28; border-color: #1F4A3C; color: #7FE0BC; }
.nt-schools-head { display: flex; align-items: center; gap: 6px; font-size: 13px; color: #1f4335; }
.nt-schools-list { flex: 1; min-height: 120px; max-height: 56vh; overflow: auto; padding: 2px; }
.nt-schools-tip { font-size: 11px; line-height: 1.6; }
/* ===== 待选笔记(2026-10-21):工具栏 📥 面板,与学校/字号面板同一弹出位置 ===== */
.nt-tb-src { font-size: 17px; line-height: 1; }
.nt-tb-br { font-size: 17px; line-height: 1; }
.nt-src-pop {
  position: absolute; left: calc(100% + 8px); top: 8px; z-index: 31;
  width: 360px; display: none; flex-direction: column; gap: 6px;
  padding: 10px; background: var(--card); border: 1px solid #e3f1ec; border-radius: 12px;
  box-shadow: 0 14px 34px rgba(22,58,45,.18);
  max-height: calc(100vh - 40px);
}
.nt-src-pop.show { display: flex; }
.nt-src-head { display: flex; align-items: center; gap: 6px; font-size: 13px; color: #1f4335; }
.nt-src-list { flex: 1; min-height: 120px; max-height: 56vh; overflow: auto; display: flex; flex-direction: column; gap: 4px; padding: 2px; }
.nt-src-item {
  display: flex; align-items: center; gap: 8px; width: 100%; text-align: left;
  padding: 7px 9px; border: 1px solid #e3f1ec; border-radius: 9px; background: var(--card);
  color: #1f4335; font-size: 12.5px; cursor: pointer;
  transition: background-color .12s ease, border-color .12s ease;
}
.nt-src-item:hover { background: #edfbf6; border-color: #B7E6D3; }
.nt-src-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
.nt-src-meta { flex: none; font-size: 11px; color: #8bb2a3; }
.nt-src-tip { font-size: 11px; line-height: 1.6; }
.nt-src-ask { display: flex; flex-direction: column; gap: 8px; margin-top: 14px; }
.nt-src-ask .abtn { width: 100%; justify-content: center; }
[data-theme="dark"] .nt-src-pop { background: #1c2823; border-color: #303d38; }
[data-theme="dark"] .nt-src-head { color: var(--ink); }
[data-theme="dark"] .nt-src-item { background: #16221d; border-color: #303d38; color: var(--ink); }
[data-theme="dark"] .nt-src-item:hover { background: #212d28; border-color: #1F4A3C; }
[data-theme="dark"] .nt-src-meta { color: var(--ink-3); }
.nt-sc-grp {
  position: sticky; top: 0; z-index: 1;
  display: flex; align-items: center; gap: 4px;
  margin: 6px 0 3px; padding: 3px 6px;
  background: var(--bg); border-radius: 6px;
  font-size: 11px; color: #8A5300;
}
.nt-sc-grp i { font-style: normal; color: #8bb2a3; margin-left: auto; }
/* 学校胶囊:先横向排,排满自动换下一行 */
.nt-sc-grid { display: flex; flex-wrap: wrap; gap: 6px; padding: 2px 2px 8px; }
.nt-sc-chip {
  display: inline-flex; align-items: center; gap: 1px; max-width: 100%;
  padding: 3px 8px; border: 1px solid #e3f1ec; border-radius: 8px;
  background: var(--card); color: #1f4335; font-size: 12px; line-height: 1.5; cursor: pointer;
  transition: background-color .12s ease, border-color .12s ease, color .12s ease;
}
.nt-sc-chip:hover { background: #edfbf6; }
.nt-sc-chip.on { background: #E7F7F0; border-color: #B7E6D3; color: #0B7552; font-weight: 700; }
.nt-sc-name { max-width: 106px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nt-sc-edit {
  flex: none; border: none; background: transparent; color: #8bb2a3;
  cursor: pointer; font-size: 11px; padding: 0 1px; opacity: 0;
  transition: opacity .12s ease, color .12s ease;
}
.nt-sc-chip:hover .nt-sc-edit { opacity: 1; }
.nt-sc-edit:hover { color: var(--green, #14A178); }
@media (max-width: 900px) { .nt-schools-pop { display: none !important; } }
[data-theme="dark"] .nt-schools-pop { background: #1c2823; border-color: #303d38; box-shadow: 0 14px 34px rgba(0, 0, 0, .5); }
[data-theme="dark"] .nt-schools-head { color: var(--ink); }
[data-theme="dark"] .nt-sc-grp { background: #16221d; color: #F0C883; }
[data-theme="dark"] .nt-sc-chip { background: #1c2823; border-color: #303d38; color: var(--ink); }
[data-theme="dark"] .nt-sc-chip:hover { background: #212d28; }
[data-theme="dark"] .nt-sc-chip.on { background: #17382F; border-color: #1F4A3C; color: #7FE0BC; }
@media (max-width: 900px) {
  /* 窄屏:工具条折回顶部横排,仍保持 sticky */
  .nt-edit-wrap { flex-direction: column; }
  .nt-rail {
    position: sticky; top: 0; width: calc(100% - 24px); margin: 12px 12px 0;
    grid-template-columns: repeat(auto-fill, 34px);
  }
  .nt-rail .nt-tb-sep { grid-column: auto; width: 1px; height: 20px; margin: 0 4px; }
  .nt-rail .nt-more-pop { left: auto; right: 8px; top: calc(100% - 4px); }
  .nt-edit-main { width: 100%; border-radius: 0 0 14px 14px; }
}
/* ===== 批3:右侧常驻素材侧栏(2026-10-21) =====
   与左侧工具条同为 sticky,不随正文滚走;窄屏(≤900px)整体隐藏,改用工具栏「从素材库选择」弹窗。 */
.nt-side {
  /* 2026-10-22:宽度改为可拖拽变量(默认 300px),由 pages-note.js 写入 --nt-side-w 并记忆 */
  flex: none; width: var(--nt-side-w, 300px); position: sticky; top: 12px; align-self: flex-start;
  display: flex; flex-direction: column; gap: 6px;
  margin: 12px 12px 12px 0; padding: 10px;
  background: var(--card); border: 1px solid #e3f1ec; border-radius: 12px;
  box-shadow: 0 8px 24px rgba(22,58,45,0.10);
  max-height: calc(100vh - 24px);
}
.nt-side.off { display: none; }
/* 2026-10-22:侧栏左边缘拖拽条(拖左变宽 / 拖右变窄;双击恢复 300px) */
.nt-side-resize {
  position: absolute; left: -7px; top: 0; bottom: 0; width: 12px; z-index: 6;
  cursor: col-resize; touch-action: none;
}
.nt-side-resize::after {
  content: ''; position: absolute; left: 5px; top: 50%; transform: translateY(-50%);
  width: 2px; height: 42px; border-radius: 2px; background: rgba(20, 161, 120, .28);
  transition: background-color .15s ease, height .15s ease;
}
.nt-side-resize:hover::after { background: rgba(20, 161, 120, .72); height: 72px; }
body.nt-side-resizing { cursor: col-resize; user-select: none; }
body.nt-side-resizing .nt-side-resize::after { background: rgba(20, 161, 120, .9); height: 72px; }
.nt-side-head { display: flex; align-items: center; gap: 6px; font-size: 13px; color: #1f4335; }
.nt-side-x {
  border: none; background: transparent; cursor: pointer; padding: 2px 4px;
  font-size: 14px; line-height: 1; color: #8bb2a3;
}
.nt-side-x:hover { color: #E6473D; }
.nt-side-input {
  width: 100%; box-sizing: border-box; padding: 6px 8px; font-size: 12px;
  border: 1px solid #d7ece4; border-radius: 8px; outline: none; background: var(--card); color: #1f4335;
}
.nt-side-input:focus { border-color: var(--green, #14A178); }
.nt-side-tabs { display: flex; flex-wrap: wrap; gap: 4px; }
.nt-side-tab {
  border: 1px solid #e3f1ec; background: var(--bg); color: #436e5e; cursor: pointer;
  font-size: 11px; padding: 3px 8px; border-radius: 999px; line-height: 1.5;
}
.nt-side-tab:hover { background: #edfbf6; }
.nt-side-tab.on { background: #E7F7F0; border-color: #B7E6D3; color: #0B7552; font-weight: 700; }
.nt-side-sub { display: flex; align-items: center; gap: 6px; }
.nt-side-sub select {
  flex: none; font-size: 12px; padding: 4px 6px;
  border: 1px solid #d7ece4; border-radius: 8px; background: var(--card); color: #1f4335;
}
.nt-side-sub span { font-size: 11px; }
.nt-side-grid {
  flex: 1; min-height: 120px; overflow: auto; display: grid;
  align-content: start; align-items: start; grid-auto-rows: max-content;
  /* 2026-10-22:固定 3 列 → 侧栏拉宽后卡片/视频缩略图同比变大(不再靠增加列数挤小卡片) */
  grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; padding: 4px;
  background: #FBFCFE; border: 1px solid #eef7f4; border-radius: 8px;
}
.nt-side-card {
  position: relative; cursor: pointer; overflow: hidden; background: var(--card);
  border: 2px solid transparent; border-radius: 8px;
}
.nt-side-card:hover { border-color: #B7E6D3; }
.nt-side-card.on { border-color: var(--green, #14A178); }
/* 2026-10-22 修正:缩略图按图片/视频封面自己的原始比例完整显示(不裁剪、不套固定框、不拉伸),
   高度随图片自然变化,网格内容变高时用侧栏滚动条查看;min-height 只用于懒加载时先撑出可见区域 */
.nt-side-thumb {
  display: block; width: 100%; min-height: 48px; overflow: hidden; background: #eef7f4;
}
.nt-side-thumb > img {
  display: block; width: 100%; height: auto; background: #eef7f4;
}
.nt-side-ph {
  display: flex; align-items: center; justify-content: center;
  width: 100%; min-height: 48px; background: #eef7f4; font-size: 22px;
}
.nt-side-nm {
  display: block; padding: 3px 4px; font-size: 10px; line-height: 1.35; color: #598c79;
  max-height: 30px; overflow: hidden;
}
.nt-side-vd {
  position: absolute; left: 4px; top: 4px; padding: 0 4px; border-radius: 4px;
  background: rgba(0, 0, 0, .55); color: var(--on-accent); font-size: 11px;
}
.nt-side-act { display: flex; gap: 6px; }
.nt-side-act .abtn { flex: 1; padding: 6px 4px; font-size: 12px; }
/* 2026-10-23:侧栏「🪄 自动修复视频预览图」按钮与进度行(只补封面,不改素材) */
.nt-side-fix {
  display: block; width: calc(100% - 20px); margin: 6px 10px 0; padding: 6px 8px;
  font-size: 12px; border: 1px dashed var(--line); border-radius: 8px;
  background: var(--card); color: #0b6b3a; cursor: pointer; text-align: left;
}
.nt-side-fix:hover { border-color: var(--green); background: #f3fbf6; }
.nt-side-fix[data-busy="1"] { border-style: solid; background: #f3fbf6; }
.nt-side-fixstat { font-size: 11px; padding: 3px 11px 0; min-height: 14px; line-height: 1.45; word-break: break-all; }
/* 2026-10-23:笔记编辑页「🔍 查找正文关键词」——位于素材侧栏顶部(纯高亮,不改正文) */
.nt-find { display: flex; align-items: center; gap: 6px; }
.nt-find input {
  flex: 1; min-width: 0; height: 30px; box-sizing: border-box; padding: 0 9px; font-size: 12px;
  border: 1px solid #d7ece4; border-radius: 8px; background: var(--card); color: #1f4335;
}
.nt-find input:focus { outline: none; border-color: var(--green, #14A178); }
.nt-find-btn {
  flex: none; width: 26px; height: 26px; padding: 0; font-size: 12px; line-height: 1;
  border: 1px solid #d7ece4; border-radius: 6px; background: var(--card); color: #4b635a; cursor: pointer;
}
.nt-find-btn:hover { border-color: var(--green, #14A178); color: #0b6b3a; background: #f3fbf6; }
.nt-find-bar { display: flex; align-items: center; gap: 6px; }
.nt-find-stat { flex: 1; padding: 2px 2px 0; min-height: 13px; font-size: 11px; line-height: 1.45; color: #6b8078; }
.nt-find-back {
  flex: none; padding: 3px 8px; font-size: 11px; line-height: 1.4;
  border: 1px solid #d7ece4; border-radius: 7px; background: var(--card); color: #436e5e; cursor: pointer;
}
.nt-find-back:hover:not(:disabled) { border-color: var(--green, #14A178); color: #0b6b3a; background: #f3fbf6; }
.nt-find-back:disabled { opacity: .45; cursor: default; }
::highlight(nt-find-all) { background-color: #fff3bf; }
::highlight(nt-find-cur) { background-color: #ffc107; color: #1f372e; }
/* 2026-10-23:素材侧栏批量框选矩形(在网格空白处按住拖动) */
.nt-side-box {
  position: fixed; z-index: 9999; display: none; pointer-events: none;
  border: 1px solid rgba(20, 161, 120, 0.9); border-radius: 4px;
  background: rgba(20, 161, 120, 0.12);
}
body.nt-side-boxing { user-select: none; }
/* ===== 批6:侧栏「点击放大 + 左下角勾选 + 右下角删除 + 撤销」 ===== */
/* 勾选圆圈(左上角):未选为半透明黑底空心圆,选中为绿底白勾 */
.nt-side-ck {
  position: absolute; left: 4px; top: 4px; z-index: 2;
  width: 18px; height: 18px; box-sizing: border-box; border-radius: 50%;
  border: 2px solid rgba(255, 255, 255, .92); background: rgba(20,44,35,.38);
  color: transparent; font-size: 11px; line-height: 14px; text-align: center;
  cursor: pointer; box-shadow: 0 1px 3px rgba(0, 0, 0, .30);
  transition: background-color .15s ease, color .15s ease;
}
.nt-side-ck:hover { background: rgba(20, 161, 120, .75); color: var(--on-accent); }
.nt-side-card.on .nt-side-ck { background: var(--green, #14A178); color: var(--on-accent); border-color: var(--card); }
/* 视频角标改到右上角,把左上角让给勾选圆圈 */
.nt-side-vd { left: auto; right: 4px; top: 4px; }
/* 右下角删除按钮:常驻显示,避免用户找不到 */
.nt-side-del {
  position: absolute; right: 2px; bottom: 2px; z-index: 3;
  width: 20px; height: 20px; padding: 0; border: none; border-radius: 6px;
  background: rgba(20,44,35,.62); color: var(--on-accent); font-size: 11px; line-height: 1;
  display: flex; align-items: center; justify-content: center; cursor: pointer;
  opacity: .92; transition: background-color .15s ease, opacity .15s ease;
}
.nt-side-del:hover { background: #E6473D; opacity: 1; }
/* 名称给删除按钮留出位置 */
.nt-side-nm { padding-right: 24px; }
/* 撤销提示条 */
.nt-side-undo {
  display: flex; align-items: center; gap: 6px; padding: 5px 8px;
  background: #FFF7E6; border: 1px solid #FFD8A8; border-radius: 8px;
  font-size: 11px; line-height: 1.5; color: #8A5300;
}
.nt-side-undo > span { flex: 1; }
.nt-side-undo-btn {
  flex: none; border: none; cursor: pointer; padding: 3px 8px; border-radius: 6px;
  background: var(--green, #14A178); color: var(--on-accent); font-size: 11px; font-weight: 700;
}
.nt-side-undo-btn:hover { background: #0B7552; }
/* 素材放大预览层(层级高于弹窗,低于长按预览) */
.nt-side-pv {
  /* 10050:必须高于「素材库」弹窗(z-index 10001),否则从素材库点开的视频预览会被弹窗盖住 */
  position: fixed; inset: 0; z-index: 10050; display: none;
  align-items: center; justify-content: center;
  background: rgba(12,27,22,.88); padding: 24px;
}
.nt-side-pv.show { display: flex; }
.nt-side-pv .nt-pv-box { position: relative; display: inline-flex; flex-direction: column; align-items: center; }
.nt-side-pv img {
  max-width: 90vw; max-height: 86vh; border-radius: 10px;
  box-shadow: 0 12px 40px rgba(0, 0, 0, .45); background: #000;
}
/* 视频给固定宽度,避免元数据未加载时缩成 300×150 的小黑条
   2026-10-22:宽度跟随侧栏宽度放大(侧栏宽 × 2.4,最低 560px,上限 90vw/960px) */
.nt-side-pv video {
  width: min(90vw, 960px, max(560px, calc(var(--nt-side-w, 300px) * 2.4)));
  height: auto; max-height: 86vh; border-radius: 10px;
  box-shadow: 0 12px 40px rgba(0, 0, 0, .45); background: #000;
}
.nt-side-pv .nt-pv-msg {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  z-index: 2; max-width: 80%; padding: 10px 16px; border-radius: 10px;
  background: rgba(0, 0, 0, .62); color: var(--on-accent); font-size: 13px; line-height: 1.6; text-align: center;
}
.nt-side-pv .nt-pv-msg a { color: #7FE0BC; text-decoration: underline; }
.nt-side-pv .nt-pv-nm {
  margin-top: 10px; max-width: 80vw; color: var(--on-accent); font-size: 12px;
  background: rgba(0, 0, 0, .45); padding: 4px 12px; border-radius: 999px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.nt-side-pv .nt-pv-tip { color: var(--on-accent); font-size: 13px; }
.nt-side-pv .nt-pv-close {
  position: absolute; right: -6px; top: -34px; width: 28px; height: 28px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%; background: rgba(255, 255, 255, .16); color: var(--on-accent);
  font-size: 14px; cursor: pointer; text-decoration: none;
}
.nt-side-pv .nt-pv-close:hover { background: rgba(255, 255, 255, .30); }
/* 暗色模式:浅黄高亮的行内底色不变,文字必须强制深色,否则白字压黄底看不见 */
[data-theme="dark"] .nt-editor span[style*="background-color"],
[data-theme="dark"] .nt-editor mark { color: #1f4335 !important; }
/* 收起后的悬浮入口(固定在视口右侧) */
.nt-side-open {
  position: fixed; right: 0; top: 42%; z-index: 21; cursor: pointer;
  display: flex; flex-direction: column; align-items: center; gap: 2px;
  padding: 8px 6px; font-size: 16px; color: #436e5e;
  background: var(--card); border: 1px solid #e3f1ec; border-right: none;
  border-radius: 10px 0 0 10px; box-shadow: -4px 0 16px rgba(22,58,45,0.10);
}
.nt-side-open span { font-size: 10px; }
@media (max-width: 1200px) { .nt-side { max-width: 86vw; } }
@media (max-width: 900px) {
  .nt-side { display: none !important; }
  .nt-side-open { display: none !important; }
}
[data-theme="dark"] .nt-side { background: #1c2823; border-color: #303d38; }
[data-theme="dark"] .nt-side-head { color: var(--ink); }
[data-theme="dark"] .nt-side-tab { background: #16221d; border-color: #303d38; color: var(--ink); }
[data-theme="dark"] .nt-side-tab.on { background: #17382F; border-color: #1F4A3C; color: #7FE0BC; }
[data-theme="dark"] .nt-side-input,
[data-theme="dark"] .nt-side-sub select { background: #16221d; border-color: #303d38; color: var(--ink); }
[data-theme="dark"] .nt-side-grid { background: #16221d; border-color: #303d38; }
[data-theme="dark"] .nt-side-card,
[data-theme="dark"] .nt-side-thumb,
[data-theme="dark"] .nt-side-thumb > img,
[data-theme="dark"] .nt-side-ph { background: #1c2823; }
[data-theme="dark"] .nt-side-open { background: #1c2823; border-color: #303d38; color: var(--ink); }
[data-theme="dark"] .nt-side-undo { background: #33280F; border-color: #57451C; color: #F0C883; }
[data-theme="dark"] .nt-side-del { background: rgba(255, 255, 255, .16); }
[data-theme="dark"] .nt-side-del:hover { background: #E6473D; }
.nt-editor {
  min-height: 380px; padding: 18px 20px; outline: none;
  font-size: 16px; line-height: 1.9; color: var(--ink, #1f4335);
  background: var(--card); word-break: break-word;
}
.nt-editor:empty:before { content: attr(data-ph); color: #9abeb0; }
.nt-editor p { margin: 0 0 10px; }
/* 2026-10-21:正文层级字号与加粗可读性
   标题=最大28 / 次标题=大24 / 次次标题=中20 / 正文=小16(最小14可用工具栏 Aa 手动设)
   编辑器正文与「智能排版」预览(.nt-ai-pane)共用同一套层级,预览看到的层级与写回后一致 */
:is(.nt-editor, .nt-ai-pane) h1,
:is(.nt-editor, .nt-ai-pane) h2,
:is(.nt-editor, .nt-ai-pane) h3,
:is(.nt-editor, .nt-ai-pane) h4,
:is(.nt-editor, .nt-ai-pane) h5,
:is(.nt-editor, .nt-ai-pane) h6 { margin: 18px 0 10px; font-weight: 800; line-height: 1.45; }
:is(.nt-editor, .nt-ai-pane) h1 { font-size: 32px; }
:is(.nt-editor, .nt-ai-pane) h2 { font-size: 28px; }
:is(.nt-editor, .nt-ai-pane) h3 { font-size: 24px; }
:is(.nt-editor, .nt-ai-pane) h4 { font-size: 20px; }
:is(.nt-editor, .nt-ai-pane) h5 { font-size: 18px; }
:is(.nt-editor, .nt-ai-pane) h6 { font-size: 16px; }
:is(.nt-editor, .nt-ai-pane) p,
:is(.nt-editor, .nt-ai-pane) li { font-size: 16px; }
/* 加粗(工具栏加粗与智能排版的 <strong> 同一口径):字重 800 + 极细描边加粗笔画,
   中文在雅黑/苹方下 700 与正文差别偏小,加描边后一眼能看出是加粗;只改字重/描边、不改颜色,
   避免覆盖智能排版里「标红/底纹」的重点色 */
:is(.nt-editor, .nt-ai-pane) :is(b, strong) { font-weight: 800; -webkit-text-stroke: 0.3px currentColor; }
.nt-editor ul, .nt-editor ol { margin: 8px 0; padding-left: 24px; }
.nt-editor li { margin: 4px 0; }
.nt-editor blockquote {
  margin: 10px 0; padding: 10px 14px;
  background: var(--green-light, #E7F7F0); border-left: 3px solid var(--green, #14A178);
  border-radius: 6px; color: var(--ink-2, #436e5e);
}
.nt-editor hr { border: none; border-top: 1px solid #daf0e8; margin: 16px 0; }
/* 第19期:后台编辑器内图片限宽 —— 「调小一点、与正文协调」。
   注意:插入图片时写进正文 HTML 的内联样式仍是 max-width:100%(会存库,家长端 rich-text 照旧整栏显示),
   这里用 !important 只覆盖「后台编辑器」的显示效果,不改动存库内容 —— 家长端显示不受影响。 */
.nt-editor img {
  display: block !important;
  max-width: 360px !important;
  max-height: 420px !important;
  margin: 8px auto !important;
  border-radius: 8px;
}
.nt-editor a { color: var(--green, #14A178); text-decoration: underline; cursor: pointer; }

/* 暗色主题适配 */
[data-theme="dark"] .nt-rail { background: #1c2823; border-color: #303d38; box-shadow: 0 8px 24px rgba(0, 0, 0, .5); }
[data-theme="dark"] .nt-tb-btn { color: var(--ink-2); }
[data-theme="dark"] .nt-tb-btn:hover { background: #212d28; }
[data-theme="dark"] .nt-tb-btn:active { background: #294037; }
[data-theme="dark"] .nt-tb-btn.on { background: rgba(20, 161, 120, .18); color: #3ecfa3; }
[data-theme="dark"] .nt-tb-sep { background: #303d38; }
[data-theme="dark"] .nt-editor { background: #16221d; color: var(--ink); }
[data-theme="dark"] .nt-editor hr { border-top-color: #303d38; }

/* ===== 素材批量上传:拖拽悬停高亮反馈(2026-10-18 新增) ===== */
/* 页面内拖拽移动素材(已有交互):虚线绿框 */
.mb-drop-hot { outline: 2px dashed #14A178; outline-offset: -2px; background: rgba(20, 161, 120, .10); }
/* 系统文件拖入:类型匹配该分类(实线绿框 + 深底) */
.mb-drop-ok { outline: 2px solid #14A178; outline-offset: -2px; background: rgba(20, 161, 120, .16); }
/* 系统文件拖入:类型与该分类不匹配(实线红框) */
.mb-drop-bad { outline: 2px solid #d9534f; outline-offset: -2px; background: rgba(217, 83, 79, .12); }
[data-theme="dark"] .mb-drop-hot { background: rgba(20, 161, 120, .16); }
[data-theme="dark"] .mb-drop-ok { background: rgba(20, 161, 120, .24); }
[data-theme="dark"] .mb-drop-bad { background: rgba(217, 83, 79, .20); }

/* ===== 素材拖拽排序(2026-10-20) ===== */
/* 批量上传页:拖到同组卡片上时的插入高亮(实线绿框指示落点) */
.mb-f-drop-over { outline: 2px solid #14A178; outline-offset: -2px; box-shadow: 0 0 0 3px rgba(20, 161, 120, .18); }
[data-theme="dark"] .mb-f-drop-over { box-shadow: 0 0 0 3px rgba(20, 161, 120, .30); }
/* 素材管理页:表格行拖拽落点高亮 */
.md-drop-over { outline: 2px dashed #14A178; outline-offset: -2px; background: rgba(20, 161, 120, .08); }
.md-grip:hover { color: #14A178; }

/* ===== 第19期批4:M-20 工具栏「更多」折叠 + 长按图片预览 ===== */
/* 「更多」按钮:折叠时出现在工具栏末尾,左侧竖线分隔 */
.nt-tb-more { margin-left: 2px; border-left: 1px solid #e3f1ec; border-radius: 0 8px 8px 0; }
.nt-tb-more:hover { background: #edfbf6; }
/* 「更多」/「AI 写作」下拉菜单(相对工具条定位;.nt-rail 为 sticky,可作定位基准) */
.nt-more-pop {
  position: absolute; right: 8px; top: calc(100% - 4px); z-index: 20;
  min-width: 172px; max-height: 320px; overflow-y: auto; padding: 6px; display: none;
  background: var(--card); border: 1px solid #e3f1ec; border-radius: 10px;
  box-shadow: 0 10px 26px rgba(31,67,53,.16);
}
.nt-more-pop.show { display: block; }
.nt-more-item {
  display: flex; align-items: center; gap: 10px; width: 100%;
  padding: 8px 10px; border: none; border-radius: 8px; background: transparent;
  color: #436e5e; font-size: 13px; cursor: pointer; text-align: left;
  transition: background-color .15s ease;
}
.nt-more-item:hover { background: #edfbf6; }
.nt-more-item svg { width: 20px; height: 20px; flex: none; }
/* 长按图片预览浮层 */
.nt-preview {
  position: fixed; inset: 0; z-index: 9999; display: none;
  align-items: center; justify-content: center;
  background: rgba(12,27,22,.82); cursor: zoom-out;
}
.nt-preview.show { display: flex; }
.nt-preview img { max-width: 92vw; max-height: 92vh; border-radius: 10px; box-shadow: 0 12px 40px rgba(0, 0, 0, .4); }
/* 暗色主题适配 */
[data-theme="dark"] .nt-tb-more { border-left-color: #303d38; }
[data-theme="dark"] .nt-more-pop { background: #1c2823; border-color: #303d38; box-shadow: 0 10px 26px rgba(0, 0, 0, .5); }
[data-theme="dark"] .nt-more-item { color: var(--ink-2); }
[data-theme="dark"] .nt-more-item:hover { background: #212d28; }

/* ===== 第23期(UI):笔记「拼图」工具 + 弹层 ===== */
/* 工具条上的拼图按钮(与智能排版/AI 写作同色,便于一眼找到) */
.nt-tb-collage { color: var(--green); }
/* 批5:段落配图 / 段落拼图沿用同一强调色,与普通排版按钮区分 */
.nt-tb-para, .nt-tb-pcollage { color: var(--green); }
/* 弹层内的模板卡片(弹层卡片恒为白底,沿用 AI 预览弹窗同一口径,故无暗色覆盖) */
.nt-cg-tpl {
  display: flex; flex-direction: column; gap: 5px; padding: 8px; cursor: pointer;
  background: var(--card); border: 1px solid #e3f1ec; border-radius: 10px; text-align: left;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.nt-cg-tpl:hover { border-color: #b8e6d5; }
.nt-cg-tpl.on { border-color: var(--green, #14A178); box-shadow: 0 0 0 2px rgba(20, 161, 120, .16); }
.nt-cg-thumb {
  position: relative; display: block; width: 100%; height: auto; overflow: hidden;
  border-radius: 6px; background: var(--card);
}
/* 背景花纹选择:胶囊,选中填充淡绿 */
.nt-cg-pats { display: flex; flex-wrap: wrap; gap: 8px; }
.nt-cg-pat {
  display: inline-flex; align-items: center; gap: 4px; height: 30px; padding: 0 12px;
  border: 1px solid #d7ece4; border-radius: 999px; background: var(--card);
  color: #466a5d; font-size: 12.5px; font-weight: 600; line-height: 1; cursor: pointer;
  transition: border-color .16s ease, color .16s ease, background .16s ease;
}
.nt-cg-pat:hover { border-color: #14A178; color: #14A178; background: #F1FBF7; }
.nt-cg-pat.on {
  border-color: #14A178; color: #14A178; background: #E4F7EF;
  box-shadow: 0 0 0 2px rgba(20, 161, 120, .12);
}
.nt-cg-name { font-size: 12.5px; font-weight: 700; color: #1f4335; }
.nt-cg-hint { font-size: 11px; color: #8bb2a3; line-height: 1.4; }
/* 拼图预览里的「单张可点开」热区:悬停描一圈绿边,提示这里可以点 */
.nt-cg-hot:hover { box-shadow: inset 0 0 0 2px rgba(20, 161, 120, .85); background: rgba(20, 161, 120, .08); }
/* 拼图弹层的「手动翻转」按钮:胶囊分段样式;已翻转时填充绿色高亮,一眼看出当前方向 */
.nt-cg-flips { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.nt-cg-flip-tip { flex: 1; min-width: 110px; font-size: 11.5px; color: #8bb2a3; }
.nt-cg-flip {
  display: inline-flex; align-items: center; gap: 5px; height: 32px; padding: 0 13px;
  border: 1px solid #d7ece4; border-radius: 999px; background: var(--card);
  color: #466a5d; font-size: 12.5px; font-weight: 600; line-height: 1; cursor: pointer;
  transition: border-color .16s ease, color .16s ease, background .16s ease, box-shadow .16s ease;
}
.nt-cg-flip i { font-style: normal; font-size: 14px; }
.nt-cg-flip:hover { border-color: #14A178; color: #14A178; background: #F1FBF7; }
.nt-cg-flip:active { transform: translateY(1px); }
.nt-cg-flip.on {
  border-color: transparent; color: var(--on-accent);
  background: linear-gradient(135deg, #19BE8C, #14A178);
  box-shadow: 0 3px 10px rgba(20, 161, 120, .3);
}
.nt-cg-flip.on:hover { color: var(--on-accent); background: linear-gradient(135deg, #19BE8C, #14A178); }

/* ===== 第25期:整篇笔记装饰(背景花纹 + 页眉页脚) =====
   与拼图图片内的页眉页脚互不影响:这里作用在「编辑画布」页面层级,
   全部用 CSS 渐变 / CSS 叶片形状实现,不引入任何图片资源。
   花纹只做低对比淡绿(13% 左右透明度),保证压在下面的正文照常可读。 */
.nt-pat-dots {
  background-color: #FCFEFD;
  background-image: radial-gradient(rgba(20, 161, 120, .13) 1.5px, transparent 1.6px);
  background-size: 22px 22px;
}
.nt-pat-wave {
  background-color: #FCFEFD;
  background-image:
    radial-gradient(circle at 100% 50%, transparent 20%, rgba(20, 161, 120, .12) 21%, rgba(20, 161, 120, .12) 34%, transparent 35%, transparent),
    radial-gradient(circle at 0% 50%, transparent 20%, rgba(20, 161, 120, .12) 21%, rgba(20, 161, 120, .12) 34%, transparent 35%, transparent);
  background-size: 30px 60px;
}
.nt-pat-leaf {
  background-color: #FCFEFD;
  background-image:
    radial-gradient(ellipse 3px 7px at 26% 34%, rgba(20, 161, 120, .16) 97%, transparent 98%),
    radial-gradient(ellipse 3px 7px at 74% 72%, rgba(20, 161, 120, .10) 97%, transparent 98%);
  background-size: 48px 54px;
}
/* 装饰打开时让编辑区透出卡片底色(否则 .nt-editor 的白底会盖住花纹) */
.nt-deco-on .nt-editor { background: transparent; }

.nt-deco-band {
  position: relative;
  display: flex; align-items: center; justify-content: center; gap: 10px;
  padding: 10px 16px;
  color: #14A178; font-size: 13px; font-weight: 700; line-height: 1.5;
}
.nt-deco-head {
  background: linear-gradient(180deg, #E4F7EF, #F9FDFB);
  border-bottom: 2px solid #14A178;
  border-radius: 14px 14px 0 0;
}
.nt-deco-foot {
  flex-direction: column; gap: 4px;
  background: linear-gradient(0deg, #E4F7EF, #F9FDFB);
  border-top: 2px solid #14A178;
  border-radius: 0 0 14px 14px;
}
.nt-deco-txt { max-width: 70%; text-align: center; word-break: break-all; }
/* CSS 叶片:两个对角圆角拼出尖头叶形(与拼图 canvas 里画的叶片同一配色) */
.nt-leaf {
  flex: none; width: 10px; height: 17px; background: #8AD8BB;
  border-radius: 0 100% 0 100%;
  transform: rotate(-38deg);
}
/* 相邻叶片一左一右交替倾斜,像一排铺开的小叶子 */
.nt-deco-band .nt-leaf:nth-child(2n) { transform: rotate(38deg); }
.nt-leaf-sm { width: 7px; height: 12px; }
.nt-deco-dots {
  width: 60%; height: 6px;
  background-image: radial-gradient(rgba(20, 161, 120, .28) 1.4px, transparent 1.5px);
  background-size: 12px 6px;
}

/* ===== 2026-10-20 笔记「从素材库选择」弹层 ===== */
.nt-lib-modal { width: 880px; }
.nt-lib-bar { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-bottom: 8px; }
.nt-lib-bar select {
  padding: 7px 10px; border: 1px solid var(--line); border-radius: 8px;
  background: var(--card); font-size: 13px; min-width: 140px;
}
.nt-lib-q {
  padding: 7px 10px; border: 1px solid var(--line); border-radius: 8px;
  font-size: 13px; width: 170px; background: var(--card);
}
.nt-lib-q:focus { outline: none; border-color: #14A178; }
.nt-lib-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 10px;
  max-height: 50vh; overflow: auto; padding: 2px;
}
.nt-lib-card {
  position: relative; border: 2px solid var(--line); border-radius: 10px; overflow: hidden;
  background: var(--card); cursor: pointer; display: flex; flex-direction: column;
  transition: border-color .15s, box-shadow .15s;
}
.nt-lib-card img { width: 100%; height: 88px; object-fit: cover; display: block; background: var(--bg); }
.nt-lib-card:hover { border-color: #8AD8BB; }
.nt-lib-card.on { border-color: #14A178; box-shadow: 0 0 0 2px rgba(20, 161, 120, .18); }
.nt-lib-card.on::after {
  content: '✓'; position: absolute; top: 4px; right: 4px; width: 18px; height: 18px;
  border-radius: 50%; background: #14A178; color: var(--on-accent); font-size: 12px; line-height: 18px;
  text-align: center; font-weight: 700;
}
.nt-lib-ph {
  height: 88px; display: flex; align-items: center; justify-content: center;
  font-size: 26px; background: var(--bg);
}
.nt-lib-badge {
  position: absolute; left: 4px; top: 4px; font-size: 10px; padding: 1px 6px;
  border-radius: 999px; background: rgba(0, 0, 0, .55); color: var(--on-accent);
}
.nt-lib-name {
  font-size: 11px; padding: 4px 6px; color: var(--ink-2);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.nt-lib-rec {
  position: absolute; left: 4px; top: 24px; font-size: 10px; padding: 1px 6px;
  border-radius: 999px; background: linear-gradient(135deg, #F59E0B, #FBBF24);
  color: var(--on-accent); font-weight: 700;
}
.nt-lib-empty { padding: 40px 10px; text-align: center; grid-column: 1 / -1; }

/* ---- 2026-10-20:正文编辑区「拖拽素材」高亮 ---- */
#nt-editor.nt-drop-on {
  outline: 2px dashed #14A178;
  outline-offset: -6px;
  background-color: #F2FBF7;
  border-radius: 10px;
}
#nt-editor.nt-drop-on::before {
  content: '⬇️ 松手即上传到当前光标位置(图片 / 视频 / PDF / Word)';
  display: block;
  padding: 6px 10px;
  margin-bottom: 8px;
  font-size: 12px;
  color: #14A178;
  background: #E4F7EF;
  border-radius: 8px;
  text-align: center;
}

/* ===== 2026-10-21:深色模式可读性修复 =====
   问题:不少输入框/下拉框写死了 background:#fff,深色模式下文字颜色继承 --ink(#e6f3ee),
   变成「白底白字」看不清;原生下拉展开的 option 也是白底浅字。
   这里统一兜底(放在文件末尾,同权重时覆盖前面写死的白底)。 */
/* 交给浏览器原生控件使用深色配色:下拉展开列表、日期选择器、滚动条都跟着变深 */
[data-theme="dark"] { color-scheme: dark; }
[data-theme="dark"] input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]),
[data-theme="dark"] select,
[data-theme="dark"] textarea {
  background: #0d1613;
  border-color: #303d38;
  color: var(--ink);
}
[data-theme="dark"] input::placeholder,
[data-theme="dark"] textarea::placeholder { color: #8a9e97; opacity: 1; }
/* 下拉展开的选项列表(Windows Chrome 会沿用 option 的 background/color) */
[data-theme="dark"] select option { background: #16221d; color: var(--ink); }
[data-theme="dark"] select option:disabled { color: #6e817a; }
/* 侧栏素材文件名:10px 深灰在深底上偏暗,提到 --ink-2 */
[data-theme="dark"] .nt-side-nm { color: var(--ink-2); }
/* 拖拽素材高亮块:深色下不要用浅绿底,否则正文变浅字看不清 */
[data-theme="dark"] #nt-editor.nt-drop-on { background-color: rgba(20, 161, 120, .10); }
[data-theme="dark"] #nt-editor.nt-drop-on::before { color: #7FE0BC; background: rgba(20, 161, 120, .18); }
/* 顶栏搜索框是嵌在胶囊里的输入框,保持透明底,不要被上面的兜底规则涂成实心块 */
[data-theme="dark"] .topbar-search input { background: transparent; border: none; }

/* ===== 2026-10-21:右侧素材侧栏「拖到正文」 ===== */
.nt-side-card[draggable="true"] { cursor: grab; }
.nt-side-card.nt-dragging { opacity: .45; cursor: grabbing; border-color: var(--green, #14A178); }
/* 侧栏素材拖入时换一句提示(与资源管理器拖文件的提示区分开) */
#nt-editor.nt-drop-on.nt-drop-asset::before {
  content: '⬇️ 松手即把这条素材插入到光标位置(不重复上传)';
}

/* ===== 2026-10-21:正文图片「选中 → ✂ 裁剪」 ===== */
.nt-img-bar { position: fixed; z-index: 9998; display: none; }
.nt-img-bar.show { display: block; }
.nt-img-bar button {
  border: none; cursor: pointer; padding: 5px 10px; border-radius: 8px;
  background: rgba(20,44,35,.90); color: var(--on-accent); font-size: 12px; font-weight: 700;
  line-height: 1.5; white-space: nowrap; box-shadow: 0 4px 14px rgba(14,42,32,.28);
}
.nt-img-bar button:hover { background: var(--green, #14A178); }

/* 裁剪弹窗 */
.nt-crop-mask {
  position: fixed; inset: 0; z-index: 9999; padding: 16px;
  background: rgba(14,42,32,.55);
  display: flex; align-items: center; justify-content: center;
}
.nt-crop-box {
  width: min(880px, 94vw); max-height: 92vh; overflow: auto; box-sizing: border-box;
  display: flex; flex-direction: column; gap: 10px;
  padding: 14px 16px; border-radius: 14px;
  background: var(--card, #fff); box-shadow: 0 12px 40px rgba(0, 0, 0, .28);
}
.nt-crop-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.nt-crop-head b { font-size: 15px; color: var(--ink, #1f4335); }
.nt-crop-hint { font-size: 11px; line-height: 1.6; color: var(--ink-3, #8bb2a3); flex: 1; min-width: 200px; }
.nt-crop-stage {
  position: relative; align-self: center; width: fit-content; max-width: 100%;
  line-height: 0; overflow: hidden; touch-action: none; user-select: none;
  background: #0e221b; border-radius: 8px;
}
.nt-crop-stage img { display: block; max-width: 100%; max-height: 62vh; width: auto; height: auto; }
.nt-crop-sel {
  position: absolute; box-sizing: border-box; cursor: move;
  border: 2px solid #14A178;
  box-shadow: 0 0 0 9999px rgba(8,24,18,.50);   /* 选区外压暗(被 stage 的 overflow 裁剪在图片内) */
}
.nt-crop-sel i {
  position: absolute; box-sizing: border-box; width: 12px; height: 12px;
  background: var(--card); border: 2px solid #14A178; border-radius: 3px;
}
.nt-crop-sel i[data-h="nw"] { left: 0; top: 0; cursor: nwse-resize; }
.nt-crop-sel i[data-h="n"]  { left: 50%; top: 0; margin-left: -6px; cursor: ns-resize; }
.nt-crop-sel i[data-h="ne"] { right: 0; top: 0; cursor: nesw-resize; }
.nt-crop-sel i[data-h="e"]  { right: 0; top: 50%; margin-top: -6px; cursor: ew-resize; }
.nt-crop-sel i[data-h="se"] { right: 0; bottom: 0; cursor: nwse-resize; }
.nt-crop-sel i[data-h="s"]  { left: 50%; bottom: 0; margin-left: -6px; cursor: ns-resize; }
.nt-crop-sel i[data-h="sw"] { left: 0; bottom: 0; cursor: nesw-resize; }
.nt-crop-sel i[data-h="w"]  { left: 0; top: 50%; margin-top: -6px; cursor: ew-resize; }
.nt-crop-foot { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 12px; }
.nt-crop-size { font-weight: 700; color: var(--green, #14A178); }
.nt-crop-tip { flex: 1; min-width: 160px; line-height: 1.6; color: var(--ink-3, #8bb2a3); }
[data-theme="dark"] .nt-crop-box { background: #16221d; }
[data-theme="dark"] .nt-crop-head b { color: var(--ink); }
[data-theme="dark"] .nt-crop-size { color: #7FE0BC; }

/* ===== 2026-10-21:素材视频「✂ 裁剪」 ===== */
/* 侧栏视频卡片右下角剪刀(挨着垃圾桶),只对视频显示 */
.nt-side-trim {
  position: absolute; right: 24px; bottom: 2px; z-index: 3;
  width: 20px; height: 20px; padding: 0; border: none; border-radius: 6px;
  background: rgba(20,44,35,.62); color: var(--on-accent); font-size: 11px; line-height: 1;
  display: flex; align-items: center; justify-content: center; cursor: pointer;
  opacity: .92; transition: background-color .15s ease, opacity .15s ease;
}
.nt-side-trim:hover { background: var(--green, #14A178); opacity: 1; }
/* 视频名称右侧要给剪刀 + 垃圾桶两个按钮留位置 */
.nt-side-card .nt-side-nm { padding-right: 44px; }
/* 放大预览层里的裁剪入口 */
.nt-side-pv .nt-pv-trim {
  position: absolute; right: 34px; top: -34px; height: 28px; padding: 0 10px;
  display: flex; align-items: center; justify-content: center; gap: 4px;
  border-radius: 14px; background: rgba(20, 161, 120, .92); color: var(--on-accent);
  font-size: 12px; cursor: pointer; text-decoration: none; white-space: nowrap;
}
.nt-side-pv .nt-pv-trim:hover { background: #0B7552; }

/* 视频裁剪弹窗 */
.nt-trim-mask {
  position: fixed; inset: 0; z-index: 9999; padding: 16px;
  background: rgba(14,42,32,.58);
  display: flex; align-items: center; justify-content: center;
}
.nt-trim-box {
  width: min(880px, 94vw); max-height: 92vh; overflow: auto; box-sizing: border-box;
  display: flex; flex-direction: column; gap: 10px;
  padding: 14px 16px; border-radius: 14px;
  background: var(--card, #fff); box-shadow: 0 12px 40px rgba(0, 0, 0, .28);
}
.nt-trim-tip { font-size: 13px; line-height: 1.7; color: var(--ink-3, #8bb2a3); padding: 10px 2px; }
.nt-trim-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.nt-trim-head b { font-size: 15px; color: var(--ink, #1f4335); }
.nt-trim-hint { font-size: 11px; line-height: 1.6; color: var(--ink-3, #8bb2a3); flex: 1; min-width: 200px; }
.nt-trim-stage {
  position: relative; align-self: center; width: fit-content; max-width: 100%;
  line-height: 0; overflow: hidden; touch-action: none; user-select: none;
  background: #0e221b; border-radius: 8px;
}
.nt-trim-stage video { display: block; max-width: 100%; background: #000; }
.nt-trim-sel {
  position: absolute; box-sizing: border-box; cursor: move;
  border: 2px solid #14A178;
  box-shadow: 0 0 0 9999px rgba(8,24,18,.50);
}
.nt-trim-sel i {
  position: absolute; box-sizing: border-box; width: 12px; height: 12px;
  background: var(--card); border: 2px solid #14A178; border-radius: 3px;
}
.nt-trim-sel i[data-h="nw"] { left: 0; top: 0; cursor: nwse-resize; }
.nt-trim-sel i[data-h="n"]  { left: 50%; top: 0; margin-left: -6px; cursor: ns-resize; }
.nt-trim-sel i[data-h="ne"] { right: 0; top: 0; cursor: nesw-resize; }
.nt-trim-sel i[data-h="e"]  { right: 0; top: 50%; margin-top: -6px; cursor: ew-resize; }
.nt-trim-sel i[data-h="se"] { right: 0; bottom: 0; cursor: nwse-resize; }
.nt-trim-sel i[data-h="s"]  { left: 50%; bottom: 0; margin-left: -6px; cursor: ns-resize; }
.nt-trim-sel i[data-h="sw"] { left: 0; bottom: 0; cursor: nesw-resize; }
.nt-trim-sel i[data-h="w"]  { left: 0; top: 50%; margin-top: -6px; cursor: ew-resize; }
.nt-trim-play {
  position: absolute; left: 8px; top: 8px; z-index: 2;
  width: 30px; height: 30px; padding: 0; border: none; border-radius: 50%;
  background: rgba(0, 0, 0, .58); color: var(--on-accent); font-size: 13px; line-height: 1;
  display: flex; align-items: center; justify-content: center; cursor: pointer;
}
.nt-trim-play:hover { background: rgba(20, 161, 120, .92); }
.nt-trim-times { display: flex; flex-direction: column; gap: 6px; }
.nt-trim-row { display: flex; align-items: center; gap: 10px; font-size: 12px; }
.nt-trim-lb { flex: none; width: 32px; font-weight: 700; color: var(--ink-3, #8bb2a3); }
.nt-trim-row input[type="range"] { flex: 1; min-width: 120px; accent-color: #14A178; cursor: pointer; }
.nt-trim-val { flex: none; width: 58px; text-align: right; color: var(--green, #14A178); font-variant-numeric: tabular-nums; }
.nt-trim-row .abtn { flex: none; white-space: nowrap; }
.nt-trim-foot { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 12px; }
.nt-trim-info { flex: 1; min-width: 180px; line-height: 1.6; color: var(--ink-3, #8bb2a3); }
#nt-trim-cropmode.on { border-color: #14A178; color: #14A178; font-weight: 700; }
[data-theme="dark"] .nt-trim-box { background: #16221d; }
[data-theme="dark"] .nt-trim-head b { color: var(--ink); }
[data-theme="dark"] .nt-trim-val { color: #7FE0BC; }
[data-theme="dark"] #nt-trim-cropmode.on { color: #7FE0BC; border-color: #7FE0BC; }

/* ===== 2026-10-21:单张图片「🎨 花纹文字」+ 正文多选「🧩 合并成拼图」 ===== */
/* 图片浮动工具条:从 1 个按钮扩到 3 个(裁剪 / 花纹文字 / 多选拼图),改成横排 */
.nt-img-bar.show { display: flex; gap: 4px; }
.nt-img-bar button.on { background: var(--green, #14A178); }
/* 已加入拼图选择的正文图片:绿框 + 淡绿光晕,一眼看出选了哪几张 */
.nt-editor img.nt-img-picked {
  outline: 3px solid #14A178; outline-offset: 1px;
  box-shadow: 0 0 0 6px rgba(20, 161, 120, .14);
}
/* 花纹文字弹窗:预览区 + 表单 */
.nt-decor-prev {
  align-self: center; max-width: 100%; line-height: 0;
  padding: 8px; border-radius: 10px;
  background: #F7F9FB; border: 1px solid #e4f0eb;
}
.nt-decor-prev canvas { display: block; max-width: 100%; max-height: 52vh; width: auto; height: auto; border-radius: 6px; }
.nt-decor-form { display: flex; flex-direction: column; gap: 6px; }
.nt-decor-lb { font-size: 12px; font-weight: 700; color: var(--ink-3, #8bb2a3); }
.nt-decor-form input {
  width: 100%; box-sizing: border-box; height: 34px; padding: 0 10px;
  border: 1px solid #d7ece4; border-radius: 8px;
  font-size: 13px; color: var(--ink, #1f4335); background: var(--card);
}
.nt-decor-form input:focus { border-color: #14A178; outline: none; box-shadow: 0 0 0 2px rgba(20, 161, 120, .14); }
[data-theme="dark"] .nt-decor-prev { background: #111d18; border-color: #253c33; }
[data-theme="dark"] .nt-decor-form input { background: #0f1a16; border-color: #2b443a; color: var(--ink); }
/* 多选拼图的底部悬浮提示条 */
.nt-selbar {
  position: fixed; left: 50%; bottom: 18px; z-index: 9998;
  transform: translate(-50%, 12px);
  display: none; align-items: center; gap: 10px; flex-wrap: wrap;
  max-width: calc(100vw - 24px); box-sizing: border-box;
  padding: 8px 10px 8px 14px; border-radius: 14px;
  background: rgba(20,44,35,.94); color: var(--on-accent);
  box-shadow: 0 10px 30px rgba(14,42,32,.35);
  opacity: 0; transition: opacity .16s ease, transform .16s ease;
}
.nt-selbar.show { display: flex; opacity: 1; transform: translate(-50%, 0); }
.nt-selbar-n { font-size: 12.5px; font-weight: 700; color: #7FE0BC; white-space: nowrap; }
.nt-selbar-tip { font-size: 11.5px; color: rgba(255, 255, 255, .72); }
.nt-selbar button {
  height: 30px; padding: 0 12px; border: none; border-radius: 8px; cursor: pointer;
  background: rgba(255, 255, 255, .14); color: var(--on-accent);
  font-size: 12px; font-weight: 700; white-space: nowrap;
}
.nt-selbar button:hover { background: rgba(255, 255, 255, .26); }
.nt-selbar button[data-sel="merge"] { background: #14A178; }
.nt-selbar button[data-sel="merge"]:hover { background: #0B7552; }
.nt-selbar button:disabled { opacity: .45; cursor: not-allowed; }

/* ---- 学校简章截图弹窗(笔记编辑页 📄,2026-10-21) ---- */
.nt-br-mask { padding: 18px; }
.nt-br-modal {
  width: min(1120px, 96vw); max-width: 96vw;
  height: 88vh; max-height: 88vh;
}
.nt-br-sub { flex: 1; min-width: 0; font-size: 11.5px; text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 0 10px; }
.nt-br-tools { display: flex; align-items: center; gap: 8px; padding: 10px 14px; border-bottom: 1px solid #e3f1ec; }
.nt-br-tools #nt-br-q { flex: 1; }
.nt-br-list { flex: 1; min-height: 0; overflow: auto; padding: 10px 14px; display: flex; flex-direction: column; gap: 5px; }
.nt-br-item {
  display: flex; align-items: center; gap: 8px; width: 100%; text-align: left;
  padding: 9px 11px; border: 1px solid #e3f1ec; border-radius: 9px; background: var(--card);
  color: #1f4335; font-size: 13px; cursor: pointer;
  transition: background-color .12s ease, border-color .12s ease;
}
.nt-br-item:hover { background: #edfbf6; border-color: #B7E6D3; }
.nt-br-ico { flex: none; }
.nt-br-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
.nt-br-meta { flex: none; font-size: 11px; color: #8bb2a3; }
.nt-br-view { flex: 1; min-height: 0; display: flex; flex-direction: column; }
.nt-br-bar { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; padding: 8px 14px; border-bottom: 1px solid #e3f1ec; background: var(--bg); }
.nt-br-pageno { font-size: 12px; font-weight: 700; color: #1f4335; padding: 0 4px; }
.nt-br-zoombox { display: inline-flex; align-items: center; gap: 4px; font-size: 11.5px; color: #8bb2a3; }
.nt-br-zoombox b { font-size: 11.5px; color: #1f4335; min-width: 38px; text-align: center; }
.nt-br-canvas { flex: 1; min-height: 0; overflow: auto; background: #eef6f3; padding: 12px; }
.nt-br-stage {
  position: relative; width: 100%; margin: 0 auto; line-height: 0;
  background: var(--card); box-shadow: 0 4px 18px rgba(22,58,45,.14);
}
.nt-br-stage img { width: 100%; height: auto; display: block; user-select: none; -webkit-user-drag: none; }
.nt-br-sel { position: absolute; border: 2px dashed #14A178; background: rgba(20, 161, 120, .14); pointer-events: none; }
.nt-br-tip { font-size: 11px; line-height: 1.7; padding: 7px 14px 9px; border-top: 1px solid #e3f1ec; }
[data-theme="dark"] .nt-br-tools, [data-theme="dark"] .nt-br-bar, [data-theme="dark"] .nt-br-tip { border-color: #303d38; }
[data-theme="dark"] .nt-br-bar { background: #16221d; }
[data-theme="dark"] .nt-br-item { background: #16221d; border-color: #303d38; color: var(--ink); }
[data-theme="dark"] .nt-br-item:hover { background: #212d28; border-color: #1F4A3C; }
[data-theme="dark"] .nt-br-canvas { background: #0f1a16; }


/* ===== 深色模式·全量补齐（2026-11-02 自动生成：浅色硬编码 → 深色等效） ===== */
[data-theme="dark"] .login-remember input { accent-color: #17A87F; }
[data-theme="dark"] .abtn.danger-text:hover { background: rgba(248,113,113,0.16); }
[data-theme="dark"] .err-tbl th { background: rgba(248,113,113,0.12); }
[data-theme="dark"] .ed-sec > summary { background: #16221d; }
[data-theme="dark"] .sub-sec { background: #16221d; }
[data-theme="dark"] .day-card { background: #16221d; }
[data-theme="dark"] .opt-card { background: #16221d; }
[data-theme="dark"] .tag-real-chip.tc-red:hover { background: rgba(248,113,113,0.18); }
[data-theme="dark"] .tag-real-chip.tc-orange:hover { background: rgba(249,115,22,0.18); }
[data-theme="dark"] .tag-real-chip.tc-gold:hover { background: rgba(245,158,11,0.18); }
[data-theme="dark"] .tag-real-chip.tc-green:hover { background: rgba(22,163,74,0.20); }
[data-theme="dark"] .tag-real-chip.tc-blue:hover { background: rgba(57,202,149,0.20); }
[data-theme="dark"] .tag-real-chip.tc-purple:hover { background: rgba(62,233,170,0.20); }
[data-theme="dark"] .tag-real-chip.tc-gray:hover { background: rgba(255,255,255,0.10); }
[data-theme="dark"] .tag-real-chip:hover { background: rgba(20,161,120,0.22); }
[data-theme="dark"] .date-cell i { color: #FBBF24; background: rgba(245,158,11,0.16); }
[data-theme="dark"] .date-cell.off,
[data-theme="dark"] .date-cell:disabled { background: rgba(255,255,255,0.04); }
[data-theme="dark"] .slot-cell:disabled { background: rgba(255,255,255,0.04); }
[data-theme="dark"] .funnel-row:nth-child(4) .ft i { background: #9fdcc4; }
[data-theme="dark"] .tag.red { background: rgba(248,113,113,0.16); }
[data-theme="dark"] .export-opt:hover { border-color: rgba(57,202,149,0.45); }
[data-theme="dark"] .export-opt .ex-date { color: #FBBF24; }
[data-theme="dark"] .tl-dot.o { border-color: #FBBF24; }
[data-theme="dark"] .st-item.warn .st-v { color: #F87171; }
[data-theme="dark"] .abtn.secondary:hover { background: rgba(57,202,149,0.24); }
[data-theme="dark"] .help-btn:hover { background: rgba(57,202,149,0.24); }
[data-theme="dark"] .view-switch { background: rgba(255,255,255,0.06); }
[data-theme="dark"] .cal-nav button { border: 1px solid #303d38; }
[data-theme="dark"] .cal-evt { background: rgba(20,161,120,0.18); }
[data-theme="dark"] .cal-evt.cal-confirmed { background: rgba(22,163,74,0.18); color: #4ADE80; }
[data-theme="dark"] .cal-evt.cal-pending { background: rgba(245,158,11,0.18); color: #FBBF24; }
[data-theme="dark"] .cal-evt.cal-evt-task { background: rgba(57,202,149,0.20); color: #7fe0c0; }
[data-theme="dark"] .cal-evt.cal-evt-appt { background: rgba(22,163,74,0.20); color: #4ADE80; }
[data-theme="dark"] .cal-evt.cal-evt-overdue { background: rgba(248,113,113,0.18); color: #F87171; }
[data-theme="dark"] .cal-detail-type.type-task { background: rgba(57,202,149,0.20); color: #7fe0c0; }
[data-theme="dark"] .cal-detail-type.type-appt { background: rgba(22,163,74,0.20); color: #4ADE80; }
[data-theme="dark"] .cal-badge-overdue { background: rgba(248,113,113,0.18); color: #F87171; }
[data-theme="dark"] .progress-track { background: rgba(255,255,255,0.06); }
[data-theme="dark"] .quick-reply-box .qr-tag { border: 1px solid #303d38; }
[data-theme="dark"] .quick-reply-box .qr-tag:hover { background: rgba(57,202,149,0.14); }
[data-theme="dark"] .rating-stats .rs-row .rs-bar { background: rgba(255,255,255,0.06); }
[data-theme="dark"] .quota-progress .qp-bar { background: rgba(255,255,255,0.06); }
[data-theme="dark"] .quota-alert-badge { background: rgba(248,113,113,0.16); }
[data-theme="dark"] .bf-preview .bfp-item input[type="text"],
[data-theme="dark"] .bf-preview .bfp-item textarea { border: 1px solid #303d38; }
[data-theme="dark"] .ai-lead-head { background: linear-gradient(135deg, var(--green) 0%, #17A87F 100%); }
[data-theme="dark"] .ci-step.done .ci-step-dot { background: rgba(20,161,120,0.16); }
[data-theme="dark"] .ci-upload:hover,
[data-theme="dark"] .ci-upload.drag { background: rgba(20,161,120,0.12); }
[data-theme="dark"] .ci-parse-tip { background: rgba(245,158,11,0.16); border: 1px solid rgba(245,158,11,0.40); }
[data-theme="dark"] .ci-summary { background: linear-gradient(180deg, rgba(20,161,120,0.10) 0%, var(--card) 100%); }
[data-theme="dark"] .ci-summary-warn { background: rgba(245,158,11,0.16); border: 1px solid rgba(245,158,11,0.40); color: #FBBF24; }
[data-theme="dark"] .ci-person-warn { border-color: rgba(245,158,11,0.40); background: rgba(245,158,11,0.08); }
[data-theme="dark"] .ci-lowconf-bar { background: rgba(245,158,11,0.16); border: 1px solid rgba(245,158,11,0.40); color: #FBBF24; }
[data-theme="dark"] .ci-step-adv.high { background: rgba(248,113,113,0.16); color: #F87171; }
[data-theme="dark"] .ci-step-adv.mid { background: rgba(57,202,149,0.18); color: #7fe0c0; }
[data-theme="dark"] .ci-step-adv.low { background: rgba(255,255,255,0.06); }
[data-theme="dark"] .ci-ai-toolbar { background: rgba(57,202,149,0.12); border: 1px solid rgba(57,202,149,0.40); }
[data-theme="dark"] .ci-ai-progress { background: rgba(20,161,120,0.10); }
[data-theme="dark"] .ci-ai-bar { background: rgba(255,255,255,0.06); }
[data-theme="dark"] .ci-ai-prog-ok { color: #4ADE80; }
[data-theme="dark"] .ci-ai-prog-warn { color: #FBBF24; }
[data-theme="dark"] .ci-ai-prog-err { color: #F87171; }
[data-theme="dark"] .ci-ai-box { border: 1px solid rgba(57,202,149,0.45); background: linear-gradient(180deg, rgba(57,202,149,0.12) 0%, var(--card) 60%); }
[data-theme="dark"] .ci-ai-box.ci-ai-err { border-color: rgba(248,113,113,0.40); background: rgba(248,113,113,0.12); }
[data-theme="dark"] .ci-ai-adopt { color: #7fe0c0; }
[data-theme="dark"] .ci-ai-field .ci-ai-new { color: #FBBF24; }
[data-theme="dark"] .ci-ai-advice { background: rgba(57,202,149,0.18); }
[data-theme="dark"] .ci-ai-script { background: rgba(20,161,120,0.12); }
[data-theme="dark"] .ci-stage-badge.cb-ai { background: rgba(22,163,74,0.18); color: #4ADE80; border: 1px solid rgba(22,163,74,0.40); }
[data-theme="dark"] .ci-stage-badge.cb-rule { background: rgba(249,115,22,0.16); color: #FDBA74; border: 1px solid rgba(249,115,22,0.40); }
[data-theme="dark"] .ci-quote { color: #FBBF24; }
[data-theme="dark"] .ci-ai-evidence { background: rgba(245,158,11,0.16); }
[data-theme="dark"] .ci-dup-summary { background: rgba(20,161,120,0.10); }
[data-theme="dark"] .ci-dup-person.merge { border-left: 3px solid #6fd8b6; }
[data-theme="dark"] .ci-dup-person.manual { border-left: 3px solid #FBBF24; }
[data-theme="dark"] .ci-dup-err { background: rgba(248,113,113,0.16); border: 1px solid rgba(248,113,113,0.40); color: #F87171; }
[data-theme="dark"] .ci-match-item.sel { background: rgba(57,202,149,0.18); }
[data-theme="dark"] .ci-report-ok { background: rgba(20,161,120,0.14); border: 1px solid rgba(20,161,120,0.40); }
[data-theme="dark"] .ci-fail-box { background: rgba(248,113,113,0.16); border: 1px solid rgba(248,113,113,0.40); }
[data-theme="dark"] .ci-hist-detail-row td { background: rgba(255,255,255,0.04); }
[data-theme="dark"] .ci-fitem.error { border-color: rgba(248,113,113,0.40); background: rgba(248,113,113,0.10); }
[data-theme="dark"] .ci-f-del:hover { background: rgba(248,113,113,0.16); }
[data-theme="dark"] .ci-file-group-head { background: rgba(255,255,255,0.04); border: 1px solid rgba(20,161,120,0.35); }
[data-theme="dark"] .ci-bp-bar { background: rgba(255,255,255,0.06); }
[data-theme="dark"] .kb-pill { background: rgba(57,202,149,0.18); color: #7fe0c0; }
[data-theme="dark"] .kb-chunk { background: rgba(255,255,255,0.04); }
[data-theme="dark"] .kb-chunk-text { color: #e6f3ee; }
[data-theme="dark"] .kb-hit-text { color: #e6f3ee; }
[data-theme="dark"] .act-stat { background: rgba(255,255,255,0.04); }
[data-theme="dark"] .act-stat-label { color: #8a9e97; }
[data-theme="dark"] .insight-box { background: rgba(255,255,255,0.04); }
[data-theme="dark"] .insight-tag.w { background: rgba(245,158,11,0.16); }
[data-theme="dark"] .insight-tag.a { background: rgba(22,163,74,0.18); }
[data-theme="dark"] .tag-pending { color: #FBBF24; background: rgba(245,158,11,0.18); }
[data-theme="dark"] .crm-slot-empty { border: 1px dashed #303d38; background: rgba(255,255,255,0.04); }
[data-theme="dark"] .remind-strip .rs-item { border: 1px solid rgba(255,255,255,0.06); }
[data-theme="dark"] .p6-q { color: #8a9e97; }
[data-theme="dark"] .p6-warn { background: rgba(245,158,11,0.16); color: #FBBF24; border: 1px solid rgba(245,158,11,0.40); }
[data-theme="dark"] .p6-note { background: rgba(20,161,120,0.18); border: 1px solid rgba(20,161,120,0.35); }
[data-theme="dark"] .p6-phone { background: rgba(255,255,255,0.04); border: 1px solid #303d38; }
[data-theme="dark"] .c360-grid { background: #16221d; }
[data-theme="dark"] .st-dot { background: rgba(255,255,255,0.06); border: 1px solid #303d38; }
[data-theme="dark"] .st-line { background: #303d38; }
[data-theme="dark"] .c360-step.done .st-dot { background: rgba(20,161,120,0.18); border-color: rgba(20,161,120,0.35); }
[data-theme="dark"] .way-chip,
[data-theme="dark"] .tpl-chip { border: 1px solid #303d38; }
[data-theme="dark"] .dup-card:hover { background: rgba(57,202,149,0.10); }
[data-theme="dark"] .tag-proto { border: 1px dashed #303d38; background: rgba(255,255,255,0.04); }
[data-theme="dark"] .tag-chip-locked { background: rgba(255,255,255,0.06); border: 1px solid #303d38; }
[data-theme="dark"] .ai-tool-tip { color: #FBBF24; }
[data-theme="dark"] .ai-summary-card { background: linear-gradient(135deg, rgba(22,163,74,0.12) 0%, #16221d 100%); }
[data-theme="dark"] .ai-score-mid { background: linear-gradient(135deg, #f59e0b, #FBBF24); }
[data-theme="dark"] .ai-risk-label { color: #F87171; }
[data-theme="dark"] .ai-risk-tag { color: #F87171; }
[data-theme="dark"] .ai-stale-bar { background: rgba(245,158,11,0.16); border: 1px solid rgba(245,158,11,0.40); }
[data-theme="dark"] .ai-stale-text { color: #FBBF24; }
[data-theme="dark"] .ai-cmp-sec { background: rgba(22,163,74,0.18); border: 1px solid rgba(22,163,74,0.40); }
[data-theme="dark"] .ai-cmp-sec summary { color: #4ADE80; }
[data-theme="dark"] .ai-cmp-new { color: #4ADE80; }
[data-theme="dark"] .ai-cmp-up { color: #F87171; }
[data-theme="dark"] .ai-cmp-down { color: #4ADE80; }
[data-theme="dark"] .ai-stale-dot { color: #6e817a; }
[data-theme="dark"] .ai-stale-dot:hover { color: #FBBF24; }
[data-theme="dark"] .ai-best-time .ai-best-label { color: #7fe0c0; }
[data-theme="dark"] .ai-best-time .ai-best-insufficient { color: #8a9e97; }
[data-theme="dark"] .ai-best-time .ai-best-none { color: #6e817a; }
[data-theme="dark"] .ci-bai-card.error { border-color: rgba(248,113,113,0.40); background: rgba(248,113,113,0.16); }
[data-theme="dark"] .ci-bai-score.high { background: rgba(22,163,74,0.18); color: #4ADE80; border: 1px solid rgba(22,163,74,0.40); }
[data-theme="dark"] .ci-bai-score.mid { background: rgba(245,158,11,0.16); color: #FBBF24; border: 1px solid rgba(245,158,11,0.40); }
[data-theme="dark"] .ci-bai-score.low { background: rgba(248,113,113,0.16); color: #F87171; border: 1px solid rgba(248,113,113,0.40); }
[data-theme="dark"] .ci-bai-tag { background: rgba(20,161,120,0.16); border: 1px solid rgba(20,161,120,0.40); }
[data-theme="dark"] .ci-bai-flag { background: rgba(245,158,11,0.16); color: #FDBA74; border: 1px solid rgba(245,158,11,0.40); }
[data-theme="dark"] .ci-bai-err { color: #F87171; }
[data-theme="dark"] .ci-bai-summary-panel { border: 1px solid #303d38; }
[data-theme="dark"] .ci-bai-stat { border: 1px solid #303d38; }
[data-theme="dark"] .ci-bai-stat-num { color: #e6f3ee; }
[data-theme="dark"] .ci-bai-stat-num.high { color: #4ADE80; }
[data-theme="dark"] .ci-bai-stat-num.mid { color: #FBBF24; }
[data-theme="dark"] .ci-bai-stat-num.low { color: #F87171; }
[data-theme="dark"] .ci-bai-stat-num.err { color: #F87171; }
[data-theme="dark"] .ci-bai-stat-label { color: #8a9e97; }
[data-theme="dark"] .ci-bai-common-issues { color: #8a9e97; border-top: 1px dashed #303d38; }
[data-theme="dark"] .ci-bai-follow-ups { color: #8a9e97; border-top: 1px dashed #303d38; }
[data-theme="dark"] .ci-bai-risk-alerts { color: #FDBA74; border-top: 1px dashed #303d38; }
[data-theme="dark"] .ci-bai-summary-status { color: #8a9e97; }
[data-theme="dark"] .ci-bai-toolbar { background: rgba(255,255,255,0.05); border: 1px solid #303d38; }
[data-theme="dark"] .ci-bai-check { color: #8a9e97; }
[data-theme="dark"] .ci-bai-check input[type="checkbox"] { accent-color: #17A87F; }
[data-theme="dark"] .ci-bai-toolbar-sep { color: #6e817a; }
[data-theme="dark"] .ci-bai-compare { border-top: 1px dashed #303d38; }
[data-theme="dark"] .kpi.blue .kpi-ico { background: rgba(20,161,120,0.18); }
[data-theme="dark"] .kpi.green .kpi-ico { background: rgba(22,163,74,0.18); }
[data-theme="dark"] .kpi.amber .kpi-ico { background: rgba(245,158,11,0.16); }
[data-theme="dark"] .kpi.red .kpi-ico { background: rgba(248,113,113,0.16); }
[data-theme="dark"] .mb-vp-bar { color: #e6f3ee; }
[data-theme="dark"] .mb-vp-cropbtn,
[data-theme="dark"] .mb-vp-applycrop,
[data-theme="dark"] .mb-vp-cancelcrop { color: #e6f3ee; }
[data-theme="dark"] .mb-vp-cancelcrop { color: #8a9e97; }
[data-theme="dark"] .nt-rail .nt-tb-sep { background: rgba(255,255,255,0.06); }
[data-theme="dark"] .nt-font-tip { color: #8a9e97; }
[data-theme="dark"] .nt-sc-grp i { color: #8a9e97; }
[data-theme="dark"] .nt-sc-edit { color: #8a9e97; }
[data-theme="dark"] .nt-side-x { color: #8a9e97; }
[data-theme="dark"] .nt-side-x:hover { color: #F87171; }
[data-theme="dark"] .nt-side-tab:hover { background: rgba(255,255,255,0.08); }
[data-theme="dark"] .nt-side-card:hover { border-color: rgba(20,161,120,0.35); }
[data-theme="dark"] .nt-side-fix { color: #4ADE80; }
[data-theme="dark"] .nt-side-fix:hover { background: rgba(20,161,120,0.12); }
[data-theme="dark"] .nt-side-fix[data-busy="1"] { background: rgba(20,161,120,0.12); }
[data-theme="dark"] .nt-find input { border: 1px solid #303d38; color: #e6f3ee; }
[data-theme="dark"] .nt-find-btn { border: 1px solid #303d38; color: #8a9e97; }
[data-theme="dark"] .nt-find-btn:hover { color: #4ADE80; background: rgba(20,161,120,0.12); }
[data-theme="dark"] .nt-find-stat { color: #8a9e97; }
[data-theme="dark"] .nt-find-back { border: 1px solid #303d38; color: #c9d9d3; }
[data-theme="dark"] .nt-find-back:hover:not(:disabled) { color: #4ADE80; background: rgba(20,161,120,0.12); }
[data-theme="dark"] .nt-editor:empty:before { color: #8a9e97; }
[data-theme="dark"] .md-drop-over { outline: 2px dashed #17A87F; }
[data-theme="dark"] .md-grip:hover { color: #17A87F; }
[data-theme="dark"] .nt-tb-more:hover { background: rgba(255,255,255,0.08); }
[data-theme="dark"] .nt-cg-tpl { border: 1px solid #303d38; }
[data-theme="dark"] .nt-cg-tpl:hover { border-color: rgba(255,255,255,0.22); }
[data-theme="dark"] .nt-cg-pat { border: 1px solid #303d38; color: #c9d9d3; }
[data-theme="dark"] .nt-cg-pat:hover { color: #17A87F; background: rgba(20,161,120,0.12); }
[data-theme="dark"] .nt-cg-pat.on { color: #17A87F; background: rgba(20,161,120,0.16); }
[data-theme="dark"] .nt-cg-name { color: #e6f3ee; }
[data-theme="dark"] .nt-cg-hint { color: #8a9e97; }
[data-theme="dark"] .nt-cg-flip-tip { color: #8a9e97; }
[data-theme="dark"] .nt-cg-flip { border: 1px solid #303d38; color: #c9d9d3; }
[data-theme="dark"] .nt-cg-flip:hover { color: #17A87F; background: rgba(20,161,120,0.12); }
[data-theme="dark"] .nt-pat-dots { background-color: #16221d; }
[data-theme="dark"] .nt-pat-wave { background-color: #16221d; }
[data-theme="dark"] .nt-pat-leaf { background-color: #16221d; }
[data-theme="dark"] .nt-deco-band { color: #17A87F; }
[data-theme="dark"] .nt-deco-head { background: linear-gradient(180deg, rgba(20,161,120,0.16), #16221d); border-bottom: 2px solid #17A87F; }
[data-theme="dark"] .nt-deco-foot { background: linear-gradient(0deg, rgba(20,161,120,0.16), #16221d); border-top: 2px solid #17A87F; }
[data-theme="dark"] .nt-leaf { background: rgba(20,161,120,0.35); }
[data-theme="dark"] .nt-lib-card:hover { border-color: rgba(20,161,120,0.35); }
[data-theme="dark"] .nt-crop-sel { border: 2px solid #17A87F; }
[data-theme="dark"] .nt-crop-sel i { border: 2px solid #17A87F; }
[data-theme="dark"] .nt-trim-sel { border: 2px solid #17A87F; }
[data-theme="dark"] .nt-trim-sel i { border: 2px solid #17A87F; }
[data-theme="dark"] .nt-trim-row input[type="range"] { accent-color: #17A87F; }
[data-theme="dark"] .nt-editor img.nt-img-picked { outline: 3px solid #17A87F; }
[data-theme="dark"] .nt-br-meta { color: #8a9e97; }
[data-theme="dark"] .nt-br-pageno { color: #e6f3ee; }
[data-theme="dark"] .nt-br-zoombox { color: #8a9e97; }
[data-theme="dark"] .nt-br-zoombox b { color: #e6f3ee; }
[data-theme="dark"] .nt-br-sel { border: 2px dashed #17A87F; }

/* ===== 深色模式·内联样式补齐（JS 里写死的 inline style 用属性选择器兜底，2026-11-02） ===== */
[data-theme="dark"] [style*="color:#555"] { color: #8a9e97 !important; }
[data-theme="dark"] [style*="background:#f6f8f7"], [style*="background-color:#f6f8f7"], [style*="background:#F6F8F7"], [style*="background-color:#F6F8F7"] { background: rgba(255,255,255,0.04) !important; }
[data-theme="dark"] [style*="background:#fef3e2"], [style*="background-color:#fef3e2"], [style*="background:#FEF3E2"], [style*="background-color:#FEF3E2"] { background: rgba(245,158,11,0.16) !important; }
[data-theme="dark"] [style*="color:#b45309"], [style*="color:#B45309"] { color: #FBBF24 !important; }
[data-theme="dark"] [style*="solid #f5d9a8"], [style*="dashed #f5d9a8"], [style*="border-color:#f5d9a8"], [style*="solid #F5D9A8"], [style*="dashed #F5D9A8"], [style*="border-color:#F5D9A8"] { border-color: rgba(245,158,11,0.40) !important; }
[data-theme="dark"] [style*="color:#92400e"], [style*="color:#92400E"] { color: #FBBF24 !important; }
[data-theme="dark"] [style*="background:#eef7f4"], [style*="background-color:#eef7f4"], [style*="background:#eef7f4"], [style*="background-color:#eef7f4"] { background: rgba(255,255,255,0.05) !important; }
[data-theme="dark"] [style*="solid #dff2eb"], [style*="dashed #dff2eb"], [style*="border-color:#dff2eb"], [style*="solid #dff2eb"], [style*="dashed #dff2eb"], [style*="border-color:#dff2eb"] { border-color: #303d38 !important; }
[data-theme="dark"] [style*="color:#999"] { color: #8a9e97 !important; }
[data-theme="dark"] [style*="color:#c0392b"], [style*="color:#C0392B"] { color: #F87171 !important; }
[data-theme="dark"] [style*="color:#888"] { color: #8a9e97 !important; }
[data-theme="dark"] [style*="color:#b88230"], [style*="color:#B88230"] { color: #FBBF24 !important; }
[data-theme="dark"] [style*="background:#fff7e8"], [style*="background-color:#fff7e8"], [style*="background:#FFF7E8"], [style*="background-color:#FFF7E8"] { background: rgba(245,158,11,0.16) !important; }
[data-theme="dark"] [style*="solid #f5deb3"], [style*="dashed #f5deb3"], [style*="border-color:#f5deb3"], [style*="solid #F5DEB3"], [style*="dashed #F5DEB3"], [style*="border-color:#F5DEB3"] { border-color: rgba(245,158,11,0.40) !important; }
[data-theme="dark"] [style*="background:#f6f8fa"], [style*="background-color:#f6f8fa"], [style*="background:#F6F8FA"], [style*="background-color:#F6F8FA"] { background: rgba(255,255,255,0.04) !important; }
[data-theme="dark"] [style*="solid #e2f0ea"], [style*="dashed #e2f0ea"], [style*="border-color:#e2f0ea"], [style*="solid #e2f0ea"], [style*="dashed #e2f0ea"], [style*="border-color:#e2f0ea"] { border-color: #303d38 !important; }
[data-theme="dark"] [style*="background:#fef2f2"], [style*="background-color:#fef2f2"], [style*="background:#FEF2F2"], [style*="background-color:#FEF2F2"] { background: rgba(248,113,113,0.16) !important; }
[data-theme="dark"] [style*="solid #fecaca"], [style*="dashed #fecaca"], [style*="border-color:#fecaca"], [style*="solid #FECACA"], [style*="dashed #FECACA"], [style*="border-color:#FECACA"] { border-color: rgba(248,113,113,0.40) !important; }
[data-theme="dark"] [style*="color:#991b1b"], [style*="color:#991B1B"] { color: #F87171 !important; }
[data-theme="dark"] [style*="solid #e8e8e8"], [style*="dashed #e8e8e8"], [style*="border-color:#e8e8e8"], [style*="solid #E8E8E8"], [style*="dashed #E8E8E8"], [style*="border-color:#E8E8E8"] { border-color: #303d38 !important; }
[data-theme="dark"] [style*="solid #14a178"], [style*="dashed #14a178"], [style*="border-color:#14a178"], [style*="solid #14A178"], [style*="dashed #14A178"], [style*="border-color:#14A178"] { border-color: #17A87F !important; }
[data-theme="dark"] [style*="solid #d9d9d9"], [style*="dashed #d9d9d9"], [style*="border-color:#d9d9d9"], [style*="solid #D9D9D9"], [style*="dashed #D9D9D9"], [style*="border-color:#D9D9D9"] { border-color: #6e817a !important; }
[data-theme="dark"] [style*="background:#f0fff9"], [style*="background-color:#f0fff9"], [style*="background:#f0fff9"], [style*="background-color:#f0fff9"] { background: rgba(57,202,149,0.14) !important; }
[data-theme="dark"] [style*="background:#e5fff5"], [style*="background-color:#e5fff5"], [style*="background:#e5fff5"], [style*="background-color:#e5fff5"] { background: rgba(57,202,149,0.16) !important; }
[data-theme="dark"] [style*="color:#0e9aa7"], [style*="color:#0e9aa7"] { color: #7fe0c0 !important; }
[data-theme="dark"] [style*="color:#faad14"], [style*="color:#FAAD14"] { color: #FBBF24 !important; }
[data-theme="dark"] [style*="color:#0e8c6b"], [style*="color:#0e8c6b"] { color: #7fe0c0 !important; }
[data-theme="dark"] [style*="background:#f7f8fa"], [style*="background-color:#f7f8fa"], [style*="background:#F7F8FA"], [style*="background-color:#F7F8FA"] { background: rgba(255,255,255,0.04) !important; }
[data-theme="dark"] [style*="solid #e5e7eb"], [style*="dashed #e5e7eb"], [style*="border-color:#e5e7eb"], [style*="solid #E5E7EB"], [style*="dashed #E5E7EB"], [style*="border-color:#E5E7EB"] { border-color: rgba(255,255,255,0.10) !important; }
[data-theme="dark"] [style*="solid #52c41a"], [style*="dashed #52c41a"], [style*="border-color:#52c41a"], [style*="solid #52C41A"], [style*="dashed #52C41A"], [style*="border-color:#52C41A"] { border-color: #4ADE80 !important; }
[data-theme="dark"] [style*="color:#ff4d4f"], [style*="color:#FF4D4F"] { color: #F87171 !important; }
[data-theme="dark"] [style*="background:#fde8e8"], [style*="background-color:#fde8e8"], [style*="background:#FDE8E8"], [style*="background-color:#FDE8E8"] { background: rgba(248,113,113,0.16) !important; }
[data-theme="dark"] [style*="color:#aaa"], [style*="color:#AAA"] { color: #8a9e97 !important; }
[data-theme="dark"] [style*="background:#e7fcf4"], [style*="background-color:#e7fcf4"], [style*="background:#e7fcf4"], [style*="background-color:#e7fcf4"] { background: rgba(57,202,149,0.18) !important; }
[data-theme="dark"] [style*="color:#0b7552"], [style*="color:#0b7552"] { color: #7fe0c0 !important; }
[data-theme="dark"] [style*="background:#e6fff6"], [style*="background-color:#e6fff6"], [style*="background:#e6fff6"], [style*="background-color:#e6fff6"] { background: rgba(57,202,149,0.18) !important; }
[data-theme="dark"] [style*="color:#0e8c6b"], [style*="color:#0e8c6b"] { color: #7fe0c0 !important; }
[data-theme="dark"] [style*="background:#fdf3d8"], [style*="background-color:#fdf3d8"], [style*="background:#FDF3D8"], [style*="background-color:#FDF3D8"] { background: rgba(245,158,11,0.16) !important; }
[data-theme="dark"] [style*="color:#9a6a00"], [style*="color:#9A6A00"] { color: #FBBF24 !important; }
[data-theme="dark"] [style*="background:#eef6ee"], [style*="background-color:#eef6ee"], [style*="background:#EEF6EE"], [style*="background-color:#EEF6EE"] { background: rgba(20,161,120,0.18) !important; }
[data-theme="dark"] [style*="solid #333"], [style*="dashed #333"], [style*="border-color:#333"] { border-color: #e6f3ee !important; }
[data-theme="dark"] [style*="color:#c26a00"], [style*="color:#C26A00"] { color: #FDBA74 !important; }
[data-theme="dark"] [style*="solid #14795a"], [style*="dashed #14795a"], [style*="border-color:#14795a"], [style*="solid #14795A"], [style*="dashed #14795A"], [style*="border-color:#14795A"] { border-color: #14795A !important; }
[data-theme="dark"] [style*="background:#f0faf6"], [style*="background-color:#f0faf6"], [style*="background:#F0FAF6"], [style*="background-color:#F0FAF6"] { background: rgba(20,161,120,0.12) !important; }
[data-theme="dark"] [style*="solid #0b7552"], [style*="dashed #0b7552"], [style*="border-color:#0b7552"], [style*="solid #0b7552"], [style*="dashed #0b7552"], [style*="border-color:#0b7552"] { border-color: #7fe0c0 !important; }
[data-theme="dark"] [style*="solid #d7ece4"], [style*="dashed #d7ece4"], [style*="border-color:#d7ece4"], [style*="solid #d7ece4"], [style*="dashed #d7ece4"], [style*="border-color:#d7ece4"] { border-color: #303d38 !important; }
[data-theme="dark"] [style*="background:#fbfcfe"], [style*="background-color:#fbfcfe"], [style*="background:#FBFCFE"], [style*="background-color:#FBFCFE"] { background: #16221d !important; }
[data-theme="dark"] [style*="solid #e3f1ec"], [style*="dashed #e3f1ec"], [style*="border-color:#e3f1ec"], [style*="solid #e3f1ec"], [style*="dashed #e3f1ec"], [style*="border-color:#e3f1ec"] { border-color: #303d38 !important; }
[data-theme="dark"] [style*="color:#1f4335"], [style*="color:#1f4335"] { color: #e6f3ee !important; }
[data-theme="dark"] [style*="background:#f7f8fa"], [style*="background-color:#f7f8fa"], [style*="background:#F7F8FA"], [style*="background-color:#F7F8FA"] { background: rgba(255,255,255,0.04) !important; }
[data-theme="dark"] [style*="color:#333"] { color: #e6f3ee !important; }
[data-theme="dark"] [style*="color:#4f7a6c"], [style*="color:#4f7a6c"] { color: #7fe0c0 !important; }
[data-theme="dark"] [style*="color:#666"] { color: #8a9e97 !important; }
[data-theme="dark"] [style*="color:#b9d6cb"], [style*="color:#b9d6cb"] { color: rgba(255,255,255,0.22) !important; }
[data-theme="dark"] [style*="color:#8bb2a3"], [style*="color:#8bb2a3"] { color: #8a9e97 !important; }
[data-theme="dark"] [style*="solid #ffd8a8"], [style*="dashed #ffd8a8"], [style*="border-color:#ffd8a8"], [style*="solid #FFD8A8"], [style*="dashed #FFD8A8"], [style*="border-color:#FFD8A8"] { border-color: rgba(245,158,11,0.40) !important; }
[data-theme="dark"] [style*="color:#b25e09"], [style*="color:#B25E09"] { color: #FBBF24 !important; }
[data-theme="dark"] [style*="color:#9abeb0"], [style*="color:#9abeb0"] { color: #8a9e97 !important; }
[data-theme="dark"] [style*="color:#598c79"], [style*="color:#598c79"] { color: #8a9e97 !important; }
[data-theme="dark"] [style*="color:#14a178"], [style*="color:#14A178"] { color: #17A87F !important; }
[data-theme="dark"] [style*="color:#d9534f"], [style*="color:#D9534F"] { color: #F87171 !important; }
[data-theme="dark"] [style*="color:#0a7a43"], [style*="color:#0A7A43"] { color: #4ADE80 !important; }
[data-theme="dark"] [style*="background:#fdf0e1"], [style*="background-color:#fdf0e1"], [style*="background:#FDF0E1"], [style*="background-color:#FDF0E1"] { background: rgba(245,158,11,0.16) !important; }
[data-theme="dark"] [style*="color:#d6f0e5"], [style*="color:#D6F0E5"] { color: #D6F0E5 !important; }
[data-theme="dark"] [style*="color:#99ada6"], [style*="color:#99ada6"] { color: #8a9e97 !important; }
[data-theme="dark"] [style*="color:#e6473d"], [style*="color:#E6473D"] { color: #F87171 !important; }

/* ===== 深色模式·内联样式补充（2026-11-02 第三轮：AI 洞察 / 笔记 / 媒体页残留） ===== */
[data-theme="dark"] [style*="background:#f6ffed"], [data-theme="dark"] [style*="background-color:#f6ffed"], [data-theme="dark"] [style*="background:#F6FFED"], [data-theme="dark"] [style*="background-color:#F6FFED"] { background: rgba(22,163,74,0.16) !important; }
[data-theme="dark"] [style*="color:#111"] { color: #e6f3ee !important; }
[data-theme="dark"] [style*="3px solid #0e8c6b"], [data-theme="dark"] [style*="3px solid #0e8c6b"] { border-left-color: #7fe0c0 !important; }
[data-theme="dark"] [style*="1px solid #eee"], [data-theme="dark"] [style*="1px solid #EEE"] { border-color: #303d38 !important; }
