/* ============================================
   HR简历管理系统 - 飞书风格设计系统 v2.0
   主色 #3370FF | 浅色侧边栏 | 柔和阴影 | 圆角
   ============================================ */

/* ===== 覆盖 Element Plus 主题色 ===== */
:root {
  --el-color-primary: #3370FF;
  --el-color-primary-light-3: #6696FF;
  --el-color-primary-light-5: #99B8FF;
  --el-color-primary-light-7: #CCDAFF;
  --el-color-primary-light-8: #E6ECFF;
  --el-color-primary-light-9: #F0F4FF;
  --el-color-primary-dark-2: #2A5AE0;
  --el-border-radius-base: 6px;
  --el-border-radius-small: 4px;
  --el-box-shadow-light: 0 1px 4px rgba(0,0,0,0.04);
  --el-box-shadow: 0 2px 12px rgba(0,0,0,0.06);
  --feishu-bg: #F5F6F7;
  --feishu-sidebar: #FFFFFF;
  --feishu-sidebar-active: #EBF0FF;
  --feishu-sidebar-hover: #F3F4F6;
  --feishu-text-primary: #1F2329;
  --feishu-text-secondary: #646A73;
  --feishu-text-tertiary: #8F959E;
  --feishu-border: #DEE0E3;
  --feishu-success: #34C724;
  --feishu-warning: #FF9F1F;
  --feishu-danger: #F54A45;
  --feishu-card-shadow: 0 1px 3px rgba(0,0,0,0.05), 0 0 0 1px rgba(0,0,0,0.02);
}

/* ===== 全局 ===== */
html, body {
  margin: 0;
  padding: 0;
  height: 100%;
  font-family: -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Helvetica Neue", sans-serif;
  background: var(--feishu-bg);
  color: var(--feishu-text-primary);
  font-size: 14px;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
#app { height: 100%; }
.app-loading { padding: 40px; text-align: center; color: var(--feishu-text-tertiary); }

/* ===== 布局 ===== */
.app-container { height: 100%; }

/* 侧边栏 - 飞书白色风格 */
.app-aside {
  background: var(--feishu-sidebar);
  border-right: 1px solid var(--feishu-border);
  /* overflow-x: hidden 会让 overflow-y 计算成 auto，矮视口下最后一项被硬裁；
     显式声明 y 轴可滚动，配合菜单底部余量，保证「周报」始终能完整看到 */
  overflow: hidden auto;
  transition: width 0.2s ease;
  /* 纵向 flex：让左下角账号区靠 margin-top:auto 固定到底部 */
  display: flex;
  flex-direction: column;
}

/* ===== 侧边栏左下角账号区（借鉴交付管理系统：头像 + 姓名 + 角色 + 退出 + 模式） ===== */
.sidebar-footer {
  margin-top: auto;      /* 关键：把账号区推到底部 */
  flex-shrink: 0;
  padding: 10px 12px 14px;
  border-top: 1px solid var(--feishu-border);
  background: var(--feishu-sidebar);
}
.sidebar-user {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px;
  border: 1px solid var(--feishu-border);
  border-radius: 8px;
  background: #fff;
}
.su-avatar {
  width: 32px;
  height: 32px;
  flex: 0 0 32px;
  border-radius: 50%;
  background: var(--el-color-primary);
  color: #fff;
  font-size: 14px;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.su-info { flex: 1; min-width: 0; }
.su-name {
  font-size: 14px;
  font-weight: 600;
  color: var(--feishu-text-primary);
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.su-role {
  font-size: 12px;
  color: var(--feishu-text-tertiary);
  line-height: 1.5;
}
.su-gear {
  display: inline-flex;
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
  color: var(--feishu-text-tertiary);
  cursor: pointer;
  opacity: 0.72;
}
.su-gear:hover { opacity: 1; color: var(--el-color-primary); }
.su-gear svg { display: block; }
.su-logout {
  width: 100%;
  margin-top: 8px;
  height: 32px;
  color: var(--feishu-text-secondary);
  border-color: var(--feishu-border);
  background: #fff;
}
.su-logout:hover {
  color: var(--el-color-primary);
  border-color: var(--el-color-primary);
  background: #fff;
}
/* 2026-10-24 删除「云端模式」绿点：写死的装饰，不反映任何真实状态（服务器挂了也照样绿） */
.app-logo {
  height: 56px;
  line-height: 56px;
  text-align: center;
  color: var(--feishu-text-primary);
  font-size: 16px;
  font-weight: 600;
  border-bottom: 1px solid var(--feishu-border);
  letter-spacing: 0.5px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}
.app-logo .logo-icon {
  width: 28px;
  height: 28px;
  background: var(--el-color-primary);
  border-radius: 6px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-size: 14px;
  font-weight: 700;
}

/* 菜单 */
.app-aside .el-menu {
  border-right: none;
  background: transparent;
  /* 底部 16px 余量，避免最后一项（周报）贴着容器底边 */
  padding: 8px 8px 16px;
}
/* 上面这条 .el-menu 规则会连带命中内联子菜单（el-menu--inline），导致子项被二次缩进 8px；
   这里显式清零，保证子项图标能与父级图标落在同一竖线上 */
.app-aside .el-menu--inline {
  padding: 0;
}
.app-aside .el-menu-item {
  color: var(--feishu-text-secondary);
  border-radius: 6px;
  margin-bottom: 2px;
  height: 40px;
  /* 垂直居中完全交给 flex；line-height 不再参与行盒计算，消除图标的基线偏移 */
  line-height: 1;
  font-size: 14px;
  transition: all 0.15s ease;
  display: flex;
  align-items: center;
  /* 图标与文字间距的唯一来源，替代原来 .menu-icon 的 margin-right */
  gap: 10px;
  /* 覆盖 Element Plus 的 calc(20px + level*20px)，减小默认过大左内边距 */
  padding-left: 14px !important;
  padding-right: 10px;
  overflow: visible;
}
.app-aside .el-menu-item:hover {
  background: var(--feishu-sidebar-hover);
  color: var(--feishu-text-primary);
}
.app-aside .el-menu-item.is-active {
  color: var(--el-color-primary);
  background: var(--feishu-sidebar-active);
  font-weight: 500;
}
/* 覆盖菜单项与子菜单标题两处的图标（原来只覆盖 .el-menu-item，子菜单标题图标没被覆盖到） */
.app-aside .menu-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  /* 固定尺寸且禁止压缩，这是防止图标被压扁/裁切的关键 */
  flex: 0 0 18px;
  margin-right: 0;
  font-size: 16px;
  opacity: 0.8;
}
/* 消除内联 SVG 的基线行为（配合 Element Plus 的 .el-menu-item * { vertical-align: bottom }） */
.app-aside .menu-icon svg {
  display: block;
}

/* 顶栏 */
.app-header {
  background: #fff;
  border-bottom: 1px solid var(--feishu-border);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 24px;
  height: 56px;
}
.app-header .header-title {
  font-size: 16px;
  font-weight: 600;
  color: var(--feishu-text-primary);
}
.app-header .header-right {
  display: flex;
  align-items: center;
}
.app-header .header-user {
  font-size: 14px;
  color: var(--feishu-text-primary);
  font-weight: 500;
}
.app-header .el-button--text {
  color: var(--feishu-text-tertiary);
  font-size: 13px;
}
.app-header .el-button--text:hover {
  color: var(--feishu-danger);
}

/* 主内容区 */
.app-main {
  padding: 24px;
  background: var(--feishu-bg);
  overflow-y: auto;
}

/* ===== 登录页 - 飞书风格居中卡片 ===== */
.login-fullscreen {
  height: 100%;
}
.login-page {
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #F5F6F7;
  position: relative;
  overflow: hidden;
}

/* 背景装饰 */
.login-bg-decor {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
}
.decor-grid {
  position: absolute;
  inset: 0;
  opacity: 0.6;
}
.decor-circle {
  position: absolute;
  border-radius: 50%;
}
.decor-c1 {
  width: 500px; height: 500px;
  top: -180px; right: -100px;
  background: radial-gradient(circle, rgba(51,112,255,0.07) 0%, transparent 70%);
}
.decor-c2 {
  width: 360px; height: 360px;
  bottom: -120px; left: -80px;
  background: radial-gradient(circle, rgba(52,199,36,0.05) 0%, transparent 70%);
}
.decor-c3 {
  width: 200px; height: 200px;
  top: 40%; left: 15%;
  background: radial-gradient(circle, rgba(255,159,31,0.04) 0%, transparent 70%);
}

/* 登录卡片 */
.login-card {
  width: 360px;
  padding: 40px 36px 28px;
  background: #fff;
  border-radius: 16px;
  box-shadow: 0 4px 24px rgba(0,0,0,0.04), 0 12px 48px rgba(0,0,0,0.06);
  position: relative;
  z-index: 1;
}

/* 标题区 */
.login-title-area {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 36px;
}
.login-icon {
  width: 36px;
  height: 36px;
  background: var(--el-color-primary);
  border-radius: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  flex-shrink: 0;
}
.login-title {
  font-size: 20px;
  font-weight: 600;
  color: var(--feishu-text-primary);
  letter-spacing: 0.5px;
}

/* 登录按钮 */
.login-btn {
  width: 100%;
  border-radius: 8px;
  font-weight: 500;
  font-size: 15px;
  letter-spacing: 4px;
}

/* 版权 */
.login-footer {
  text-align: center;
  font-size: 11px;
  color: #C0C4CC;
  margin-top: 28px;
  line-height: 1.6;
}

/* 表单输入框 */
.login-card .el-input__wrapper {
  border-radius: 8px;
  box-shadow: 0 0 0 1px var(--feishu-border) inset;
  transition: all 0.15s ease;
}
.login-card .el-input__wrapper:hover {
  box-shadow: 0 0 0 1px var(--feishu-border) inset, 0 0 0 3px rgba(51,112,255,0.04);
}
.login-card .el-input__wrapper.is-focus {
  box-shadow: 0 0 0 1px var(--el-color-primary) inset, 0 0 0 3px rgba(51,112,255,0.08);
}
.login-card .el-button--primary {
  border-radius: 8px;
  font-weight: 500;
}

/* ===== 通用页面 ===== */
.page { }
.page-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 20px;
}
.page-title {
  font-size: 20px;
  font-weight: 600;
  color: var(--feishu-text-primary);
  margin: 0;
}

/* ===== Element Plus 卡片覆盖 ===== */
.el-card {
  border: 1px solid var(--feishu-border);
  border-radius: 10px;
  box-shadow: var(--feishu-card-shadow);
  transition: box-shadow 0.2s ease;
}
.el-card__header {
  border-bottom: 1px solid var(--feishu-border);
  padding: 14px 20px;
  font-weight: 500;
  color: var(--feishu-text-primary);
  font-size: 14px;
}
.el-card__body {
  padding: 20px;
}

/* ===== 统计卡片 ===== */
.stat-card {
  text-align: center;
  border: 1px solid var(--feishu-border);
  border-radius: 10px;
  box-shadow: var(--feishu-card-shadow);
  transition: transform 0.15s ease, box-shadow 0.15s ease;
  cursor: default;
}
.stat-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 16px rgba(0,0,0,0.08);
}
.stat-card .stat-value {
  font-size: 32px;
  font-weight: 700;
  color: var(--el-color-primary);
  line-height: 1.2;
}
.stat-card .stat-label {
  font-size: 13px;
  color: var(--feishu-text-tertiary);
  margin-top: 6px;
}
.stat-card.stat-scored .stat-value { color: var(--feishu-success); }
.stat-card.stat-rejected .stat-value { color: var(--feishu-danger); }

/* ===== 简历列表 - 统计概览行 ===== */
.stats-row {
  display: flex;
  gap: 10px;
  margin-bottom: 12px;
}
.stats-row .stat-card {
  flex: 1;
  padding: 10px 8px;
  border-radius: 8px;
  background: #fff;
  border: 1px solid var(--feishu-border);
  box-shadow: var(--feishu-card-shadow);
}
.stats-row .stat-card .stat-number {
  font-size: 24px;
  font-weight: 700;
  line-height: 1.2;
}
.stats-row .stat-card .stat-label {
  font-size: 11px;
  color: var(--feishu-text-tertiary);
  margin-top: 4px;
}
.stat-total .stat-number { color: var(--feishu-text-primary); }
.stat-high .stat-number { color: var(--feishu-success); }
.stat-mid .stat-number { color: var(--feishu-warning); }
.stat-low .stat-number { color: var(--feishu-danger); }
.stat-unscored .stat-number { color: var(--feishu-text-tertiary); }

/* ===== 简历列表 - 来源邮箱列 ===== */
.sender-email {
  font-size: 12px;
  color: var(--feishu-text-primary);
  font-family: -apple-system, "SF Mono", monospace;
  display: block;
}
.sender-tag {
  margin-top: 3px;
  font-size: 10px !important;
}

/* ===== 简历列表 - 候选人姓名 ===== */
.candidate-name {
  font-weight: 600;
  color: var(--feishu-text-primary);
  font-size: 14px;
  /* 简历列表与简历库共用：允许折行，长文件名宁可排两行也不截断
     （用户要求「所有信息都显示出来」；两列宽度也统一为 360） */
  display: block;
  white-space: normal;
  word-break: break-word;
  overflow-wrap: anywhere;
  line-height: 1.45;
}

/* 折行后行高会撑开，去掉固定 44px 的画面切割感（两个列表都适用） */
.resume-table .el-table__row,
.library-table .el-table__row { height: auto; min-height: 44px; }

/* ===== 简历列表 - 评分进度条 ===== */
.score-cell {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  justify-content: center;
}
.score-bar-wrapper {
  width: 50px;
  height: 6px;
  background: #EBEDF0;
  border-radius: 3px;
  overflow: hidden;
}
.score-bar {
  height: 100%;
  border-radius: 3px;
  transition: width 0.3s ease;
  min-width: 2px;
}
.score-num {
  font-weight: 700;
  font-size: 15px;
  min-width: 24px;
  text-align: right;
}
.score-level {
  font-size: 10px !important;
  transform: scale(0.85);
}

/* AI 评分 */
.ai-score {
  font-weight: 700;
  font-size: 14px;
}
.ai-high { color: var(--feishu-success); }
.ai-mid { color: var(--feishu-warning); }
.ai-low { color: var(--feishu-danger); }
.no-score { color: #C0C4CC; }

/* ===== 简历列表 · 子目录页签（2026-10-19） =====
   候选人推进到「邀约面试」后从「简历筛选」移出，归入「面试与录用」。
   纯 CSS 自绘页签，不依赖 el-tabs —— Element Plus 2.9 的 tabs DOM 是
   [content, header] 反序结构，接管 flex 时容易把标签栏甩到容器底部（10-19 踩过）。 */
.folder-tabs {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 12px;
}
.folder-tab {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 38px;
  padding: 0 18px;
  border: 1px solid var(--feishu-border);
  border-radius: 10px;
  background: #fff;
  color: var(--feishu-text-secondary);
  font-size: 14px;
  font-weight: 500;
  font-family: inherit;
  cursor: pointer;
  transition: background .16s ease, border-color .16s ease, color .16s ease;
}
.folder-tab:hover {
  border-color: #C9CDD4;
  background: #F7F8FA;
  color: var(--feishu-text-primary);
}
.folder-tab.active {
  background: var(--el-color-primary-light-9);
  border-color: var(--el-color-primary-light-5);
  color: var(--el-color-primary-dark-2);
  font-weight: 600;
}
.folder-tab-name { line-height: 1; }
.folder-count {
  min-width: 22px;
  height: 20px;
  padding: 0 7px;
  border-radius: 10px;
  background: #F2F3F5;
  color: var(--feishu-text-tertiary);
  font-size: 12px;
  font-weight: 600;
  line-height: 20px;
  text-align: center;
}
.folder-tab.active .folder-count {
  background: var(--el-color-primary);
  color: #fff;
}
.folder-hint {
  margin-left: auto;
  font-size: 12px;
  color: var(--feishu-text-tertiary);
}
@media (max-width: 900px) {
  .folder-hint { display: none; }
}

/* ===== 面试跟进（2026-10-19 二次调整：只在评分详情浮窗左栏出现） =====
   列表里已经没有「面试跟进」列了 —— 两个子目录的表格与「简历筛选」完全一致，
   跟进信息唯一的落点是点行打开评分详情后的左栏卡片。 */
.iv-stage-hint {
  font-size: 12.5px;
  color: var(--feishu-text-secondary);
  line-height: 1.6;
}
/* 候选人身份（2026-11-02）：姓名 / 手机号自动识别、可人工修改，常驻在跟进卡顶部。
   它不属于任何流程阶段（新简历也要能看能改），所以用一个浅底小方块和下面的折叠组区分开，
   并排两列 —— 左栏只有 9/24 宽，竖排会让卡片一打开就把折叠组挤出可视区。 */
.iv-identity {
  margin: 2px 0 10px;
  padding: 8px 10px 2px;
  border: 1px solid var(--feishu-border);
  border-radius: 6px;
  background: #FAFAFB;
}
.iv-identity-head {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-bottom: 4px;
}
.iv-identity-title { font-size: 12.5px; font-weight: 600; }
.iv-identity-hint { font-size: 12px; color: var(--feishu-text-secondary); }
.iv-identity-form { display: flex; gap: 10px; }
.iv-identity-form .el-form-item { flex: 1 1 0; min-width: 0; margin-bottom: 6px; }
/* 候选人查重提示（2026-10-19）：谁先填「推荐时间」业绩就归谁，
   后填的人在这里看红字，下面的「推荐时间 / 客户简称」同时被锁。
   收窄上下留白，别把左栏顶下去。 */
.iv-owner-tip {
  margin-bottom: 10px;
  padding: 6px 10px;
  border-radius: 6px;
}
.iv-owner-tip .el-alert__title {
  font-size: 12.5px;
  line-height: 1.5;
}
.iv-group-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--feishu-text-primary);
}
.iv-group-badge {
  padding: 0 6px;
  border-radius: 8px;
  background: #FFF1F0;
  border: 1px solid #FFCCC7;
  color: #CF1322;
  font-size: 11.5px;
  line-height: 17px;
}
.iv-group-lock {
  font-size: 12px;
  color: var(--feishu-text-tertiary);
}

/* 评分浮窗左栏：面试跟进（替代规则评分卡片） */
.iv-head-badge {
  padding: 1px 7px;
  border-radius: 9px;
  background: #FFF1F0;
  border: 1px solid #FFCCC7;
  color: #CF1322;
  font-size: 12px;
  font-weight: 600;
}
.iv-head-ok {
  padding: 1px 7px;
  border-radius: 9px;
  background: #F6FFED;
  border: 1px solid #D9F7BE;
  color: #389E0D;
  font-size: 12px;
  font-weight: 600;
}
/* 「新简历」：跟进一步都没走。中性灰，跟「待填」(红) /「已齐」(绿) 明显区分，
   避免被误读成"已完成"。2026-11-02 起浮窗左栏恒显示面试跟进卡，这个态才会被看到。 */
.iv-head-idle {
  padding: 1px 7px;
  border-radius: 9px;
  background: #F2F3F5;
  border: 1px solid #E5E6EB;
  color: #8F959E;
  font-size: 12px;
  font-weight: 600;
}
/* 新简历时「保存跟进」是禁用态，右边补一句原因，否则灰按钮看着像坏了 */
.iv-side-card .iv-save-hint {
  margin-left: 8px;
  font-size: 12px;
  color: #8F959E;
}
.iv-side-card .el-card__body { padding: 10px 14px 12px; }
.iv-side-card .iv-stage-hint { font-size: 12px; line-height: 1.6; }
/* 折叠面板：去掉内外多余留白，标题行紧凑 */
.iv-collapse { border-top: 1px solid var(--feishu-border); }
.iv-collapse .el-collapse-item__header {
  height: 34px;
  line-height: 34px;
  padding-left: 8px;
  gap: 6px;
  font-size: 13px;
}
.iv-collapse .el-collapse-item__wrap { background: transparent; }
.iv-collapse .el-collapse-item__content { padding: 0 8px 6px; }
.iv-side-form .el-form-item { margin-bottom: 8px; }
/* 面试时间 = 可粘贴的输入框 + 右边「选择」按钮（点开是月历 → 当日日程表） */
.iv-dt { display: flex; gap: 6px; width: 100%; }
.iv-dt .iv-dt-input { flex: 1 1 auto; min-width: 0; }
.iv-dt .iv-dt-pick { flex: 0 0 52px; padding: 0 8px; }

/* 面试形式 / 是否到岗：下拉改按钮组（2026-10-20 用户要求）。
   点中项后用「清除」取消 —— radio-group 点已选项不会反选，否则点错就改不回空。 */
.iv-btns-wrap { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; width: 100%; }
.iv-btns-wrap .iv-btns { flex: 1 1 auto; min-width: 0; }
.iv-btns-wrap .iv-btns .el-radio-button__inner { padding: 5px 10px; font-size: 12px; }
.iv-btns-wrap .iv-btn-clear { flex: 0 0 auto; color: #8F959E; }

/* ===== 面试时间选择器：月历（第一步）+ 当日日程表（第二步） ===== */
.iv-pick-dialog .el-dialog__body { padding-top: 4px; }
.iv-cal { user-select: none; }
.iv-cal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
}
.iv-cal-title { font-size: 14px; font-weight: 600; color: #1F2329; }
.iv-cal-nav { font-size: 18px; line-height: 1; padding: 0 10px; color: #646A73; }
.iv-cal-week {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  text-align: center;
  font-size: 12px;
  color: #8F959E;
  margin-bottom: 4px;
}
.iv-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.iv-cal-d {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 34px;
  font-size: 13px;
  color: #1F2329;
  border-radius: 6px;
  cursor: pointer;
}
.iv-cal-d:hover { background: #F2F3F5; }
/* 上/下月补位格只用来占位，点了不切月，所以给灰色 + 不跟随 hover */
.iv-cal-d.is-out { color: #C9CDD4; cursor: default; }
.iv-cal-d.is-out:hover { background: transparent; }
.iv-cal-d.is-today { color: #3370FF; font-weight: 600; }
.iv-cal-d.is-sel { background: #3370FF; color: #fff; font-weight: 600; }

.iv-day-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 8px;
}
/* 第二步：上午 / 下午 / 晚上 三张档位卡
   （2026-10-20 用户反馈：整段 28 格一次列出来太乱，先选半天再看时段） */
.iv-seg-list { display: flex; flex-direction: column; gap: 8px; }
.iv-seg {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border: 1px solid #E5E6EB;
  border-radius: 8px;
  cursor: pointer;
  transition: background .15s, border-color .15s;
}
.iv-seg:hover { background: #F7F8FA; border-color: #C9CDD4; }
.iv-seg.is-sel { border-color: #3370FF; background: #F0F4FF; }
.iv-seg-name { min-width: 36px; font-size: 14px; font-weight: 600; color: #1F2329; }
.iv-seg.is-sel .iv-seg-name { color: #3370FF; }
.iv-seg-hint { flex: 1 1 auto; font-size: 12px; color: #8F959E; }
.iv-seg-n { font-size: 12px; color: #8F959E; white-space: nowrap; }
.iv-day-date { font-size: 14px; font-weight: 600; color: #1F2329; }
/* 日程表：08:00–22:00 半小时一格共 28 行，限高滚动，别把对话框撑出屏幕 */
.iv-sched {
  display: grid;
  grid-template-columns: 46px 1fr;
  gap: 2px 6px;
  max-height: 356px;
  overflow-y: auto;
  padding-right: 2px;
}
.iv-sched-h { font-size: 12px; color: #8F959E; line-height: 26px; text-align: right; }
.iv-sched-s {
  font-size: 12px;
  color: #1F2329;
  line-height: 26px;
  padding: 0 10px;
  border: 1px solid transparent;
  border-radius: 5px;
  cursor: pointer;
  white-space: nowrap;
}
.iv-sched-s:hover { background: #F2F3F5; }
.iv-sched-s.is-picked { background: #3370FF; color: #fff; }
.iv-cal-foot { margin-top: 10px; font-size: 12px; color: #8F959E; line-height: 1.7; }
.iv-side-form .el-form-item__label {
  font-size: 12px;
  color: var(--feishu-text-secondary);
  padding-bottom: 2px;
  line-height: 18px;
}
/* 折叠标题里的「待填 N」/「走到 X 后填」与组名拉开一点距离（flex gap 在
   el-collapse 的 header 里不稳），顺手把保存条钉在可视区底部，
   否则字段一多，按钮就滚到看不见的地方了 */
.iv-collapse .iv-group-badge,
.iv-collapse .iv-group-lock { margin-left: 6px; }
.iv-side-card .iv-save-bar {
  position: sticky;
  bottom: 0;
  margin-top: 6px;
  padding: 8px 0 2px;
  text-align: right;
  background: #fff;
  border-top: 1px solid var(--feishu-border);
}

/* 表格底部 */
.table-footer {
  margin-top: 8px;
  padding-top: 6px;
  border-top: 1px solid var(--feishu-border);
  font-size: 12px;
  color: var(--feishu-text-secondary);
}
.footer-hint {
  margin-left: 12px;
  font-size: 11px;
  color: var(--feishu-text-tertiary);
}

/* 表格行紧凑模式 */
.el-table .el-table__row { height: 44px; }
.el-table .el-table__cell { padding: 5px 0; }
.resume-row:hover {
  cursor: default;
}

/* ===== Element Plus 表格覆盖 ===== */
.el-table {
  font-size: 13px;
  --el-table-border-color: var(--feishu-border);
  --el-table-header-bg-color: #F7F8FA;
  --el-table-row-hover-bg-color: #F7F8FA;
}
.el-table th.el-table__cell {
  background: #F7F8FA !important;
  color: var(--feishu-text-secondary);
  font-weight: 500;
  font-size: 13px;
}
.el-table td.el-table__cell {
  border-bottom: 1px solid #F0F1F2;
}

/* ===== 表头竖向分割线 + 收紧单元格内边距（2026-10-19）
   病根：两个表所有 th 的 border-right 实测都是 0px，列与列之间只剩相邻两个
   .cell 的 12+12=24px 内边距撑着，看上去就是一整条没有分界的横带，
   「规则分 76px 只放一个 30px 的数字」「AI评价 84px 只放一个 5px 的短横」
   这类窄列尤其像悬在空白里。这里只给表头补竖线，表体保持干净不加网格。
   最后一列不画：右固定「操作」列的左边界由上一列的右线负责。 */
.resume-table .el-table__header-wrapper th.el-table__cell,
.library-table .el-table__header-wrapper th.el-table__cell {
  border-right: 1px solid #E5E6EB;
}
.resume-table .el-table__header-wrapper th.el-table__cell:last-child,
.library-table .el-table__header-wrapper th.el-table__cell:last-child,
.resume-table .el-table__header-wrapper th.el-table__cell.gutter,
.library-table .el-table__header-wrapper th.el-table__cell.gutter {
  border-right: none;
}
/* 内边距 12 → 10：相邻两列之间的空白由 24px 收到 20px（9 列共省 32px 横向空间） */
.resume-table .el-table__header-wrapper th .cell,
.library-table .el-table__header-wrapper th .cell,
.resume-table .el-table__body-wrapper td .cell,
.library-table .el-table__body-wrapper td .cell {
  padding-left: 10px;
  padding-right: 10px;
}

/* 简历列表行可点击 */
.el-table .resume-row {
  cursor: pointer;
}
.el-table .resume-row:hover td.el-table__cell {
  background: #EDF4FF !important;
}

/* ===== 评分浮窗 =====
   2026-10-19：加宽（92% 视口，最大 1320px）+ 左右两栏改 9/15 分配。
   规则评分全是短字段与进度条，半屏宽度纯属浪费；AI 侧长文本多，需要更多横向空间。 */
.score-dialog {
  max-width: 1320px;
}
.score-dialog .el-dialog__body {
  padding: 14px 22px 22px;
}
.score-card {
  height: 100%;
  border: 1px solid var(--feishu-border);
}
.score-card .el-card__header {
  padding: 12px 16px;
  background: #F7F8FA;
}
.score-card .el-card__body {
  padding: 16px 18px;
  /* 350 是实测出来的：浮窗 top 4vh + 标题 + 流程条 + 阶段/推进两条工具栏 ≈ 275px，
     再留 20px 底部呼吸，卡片才不会长到视口外面去（原先 260 时左栏带头部到 1081px，
     950 高的屏幕直接看不到「保存跟进」）。 */
  max-height: calc(100vh - 400px);
  min-height: 240px;
  overflow-y: auto;
}

/* —— 浮窗内的小节标题与键值块 —— */
.score-section { margin-bottom: 16px; }
.score-section:last-child { margin-bottom: 0; }
.score-section-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--feishu-text-secondary);
  margin-bottom: 8px;
  padding-left: 8px;
  border-left: 3px solid var(--el-color-primary-light-7);
  line-height: 1.3;
}
.score-section-title.is-review { color: #4080FF; border-left-color: #4080FF; }
.score-section-title.is-pros { color: var(--feishu-success); border-left-color: var(--feishu-success); }
.score-section-title.is-cons { color: var(--feishu-danger); border-left-color: var(--feishu-danger); }

/* AI 评分出处：模型名 + 评分时间（2026-10-25）。让人一眼确认「谁评的、什么时候评的」 */
.score-meta {
  margin: -2px 0 6px 8px;
  font-size: 12px;
  color: var(--feishu-text-tertiary);
  line-height: 1.5;
}
.score-meta b { font-weight: 600; color: #646A73; }

.kv-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
.kv-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.kv-cell {
  background: #F7F8FA;
  border: 1px solid #E5E6EB;
  border-radius: 8px;
  padding: 8px 10px;
  min-width: 0;
}
.kv-cell.warn { background: #FFF8E6; border-color: #FFD666; }
.kv-label { font-size: 12px; color: var(--feishu-text-secondary); line-height: 1.5; }
.kv-cell.warn .kv-label { color: #B25E00; }
.kv-value {
  font-size: 13px;
  color: var(--feishu-text-primary);
  margin-top: 2px;
  line-height: 1.55;
  word-break: break-word;
}
.kv-cell.warn .kv-value { color: #B25E00; font-weight: 600; }

/* 长字段整行：左标签定宽，右内容自适应换行 */
.kv-rows { display: flex; flex-direction: column; gap: 6px; margin-top: 8px; }
.kv-row {
  display: flex;
  gap: 10px;
  align-items: baseline;
  background: #F7F8FA;
  border: 1px solid #E5E6EB;
  border-radius: 8px;
  padding: 8px 10px;
}
.kv-row.warn { background: #FFF8E6; border-color: #FFD666; }
.kv-row-label {
  flex: 0 0 64px;
  font-size: 12px;
  color: var(--feishu-text-secondary);
  line-height: 1.6;
}
.kv-row.warn .kv-row-label { color: #B25E00; }
.kv-row-value {
  flex: 1 1 auto;
  min-width: 0;
  font-size: 13px;
  color: var(--feishu-text-primary);
  line-height: 1.6;
  word-break: break-word;
}
.kv-row.warn .kv-row-value { color: #B25E00; font-weight: 600; }

.kv-warn-bar {
  margin-top: 8px;
  font-size: 12px;
  color: #B25E00;
  background: #FFF8E6;
  border: 1px solid #FFD666;
  border-radius: 6px;
  padding: 6px 8px;
  line-height: 1.6;
}
.kv-note { margin-top: 6px; font-size: 12px; color: #B25E00; line-height: 1.6; }
.ai-prose {
  white-space: pre-wrap;
  font-size: 13px;
  color: var(--feishu-text-primary);
  line-height: 1.75;
}

/* 卡片 header 弹性布局（左侧标题 + 右侧按钮） */
.card-header-flex {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

/* 浮窗内流程操作栏 */
.dialog-pipeline-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 14px;
  margin-bottom: 14px;
  background: linear-gradient(135deg, #F0F5FF 0%, #F7F8FA 100%);
  border: 1px solid #D6E4FF;
  border-radius: 8px;
}
.dialog-pipeline-info {
  display: flex;
  align-items: center;
  gap: 6px;
}
.dialog-pipeline-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

/* ===== 评分 ===== */
.score-badge { font-weight: 700; }
.score-high { color: var(--feishu-success); }
.score-mid { color: var(--feishu-warning); }
.score-low { color: var(--feishu-danger); }

.keyword-tag { margin: 2px; }
.matched { color: var(--feishu-success); }
.missing { color: var(--feishu-danger); }

/* ===== 规则评分明细 v2 ===== */
.rule-detail {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin-top: 8px;
}
.detail-item {
  background: #F7F8FA;
  border-radius: 8px;
  padding: 10px 12px;
  border: 1px solid var(--feishu-border);
}
.detail-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 6px;
}
.detail-label {
  font-size: 13px;
  font-weight: 600;
  color: var(--feishu-text-primary);
}
.detail-score {
  font-size: 13px;
  font-weight: 700;
  color: var(--el-color-primary);
}
.detail-tags {
  margin-top: 6px;
  display: flex;
  flex-wrap: wrap;
  gap: 2px;
}
.detail-info {
  font-size: 12px;
  color: var(--feishu-text-secondary);
  margin-top: 4px;
  line-height: 1.6;
}

/* 智能体结论下的原文依据小字（简历详情 - 匹配解释） */
.ai-evidence {
  font-size: 12px;
  color: var(--feishu-text-tertiary);
  margin-top: 2px;
  line-height: 1.6;
  word-break: break-all;
}

.pros-list li { color: var(--feishu-success); }
.cons-list li { color: var(--feishu-danger); }

.resume-text {
  white-space: pre-wrap;
  word-break: break-all;
  max-height: 500px;
  overflow-y: auto;
  background: #F7F8FA;
  padding: 16px;
  border-radius: 8px;
  border: 1px solid var(--feishu-border);
  font-size: 13px;
  line-height: 1.8;
}

/* ===== 仪表盘 - 流程漏斗（2026-10-20 用户要求整块去掉，样式同时删除）=====
   删掉的类：.funnel-container / -stage / -row / -label / -bar-wrapper / -bar / -count /
   -pool / -pct / -legend* / -empty / -arrow* / -drop。
   ⚠️ 这里不留空壳，如果哪天要加回来，从 _bak_app.css 或 git 外备份里找。 */
/* ===== 仪表盘 - KPI列表 ===== */
.kpi-list { display: flex; flex-direction: column; gap: 14px; }
.kpi-item {
  padding: 14px;
  background: #F7F8FA;
  border-radius: 8px;
  border: 1px solid var(--feishu-border);
}
.kpi-value { font-size: 24px; font-weight: 700; }
.kpi-label { font-size: 12px; color: var(--feishu-text-tertiary); margin-top: 4px; }
.kpi-detail { font-size: 11px; color: #C0C4CC; margin-top: 2px; }

/* ===== 仪表盘 - 淘汰卡片 ===== */
.stat-rejected .stat-value { color: var(--feishu-danger); }

/* ===== Element Plus 按钮微调 ===== */
.el-button--primary {
  --el-button-bg-color: var(--el-color-primary);
  --el-button-border-color: var(--el-color-primary);
  --el-button-hover-bg-color: var(--el-color-primary-light-3);
  --el-button-hover-border-color: var(--el-color-primary-light-3);
  font-weight: 500;
}
.el-button {
  border-radius: 6px;
}

/* ===== Element Plus 标签微调 ===== */
.el-tag {
  border-radius: 4px;
  font-size: 12px;
}
.el-tag--mini { font-size: 10px; }

/* 应聘岗位标签：撑满列宽、超长省略号截断、hover 显示全名（title）
   根因：岗位名很长（如「招投标数据标注专员261008_北京·8-10K」），
   固定 130px 列宽会把文字硬切一半。 */
.el-table .cell > .job-title-tag {
  display: inline-block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: middle;
}

/* 「待分配 · 去指派」：可点击的人工指派入口（2026-10-20）。
   以前这里只是个死标签，后端 assign-job 接口没人调得到。 */
.el-table .cell > .assign-tag {
  cursor: pointer;
}
.el-table .cell > .assign-tag:hover {
  background: #FDF6EC;
  border-color: #E6A23C;
  color: #B88230;
}

/* ===== Element Plus 对话框微调 ===== */
.el-dialog {
  border-radius: 12px;
}
.el-dialog__header {
  border-bottom: 1px solid var(--feishu-border);
  padding: 16px 20px;
}
.el-dialog__body {
  padding: 20px;
}
.el-dialog__footer {
  border-top: 1px solid var(--feishu-border);
  padding: 12px 20px;
}

/* ===== Element Plus 输入框微调 ===== */
.el-input__wrapper {
  border-radius: 6px;
}
.el-select .el-input__wrapper {
  border-radius: 6px;
}

/* ===== Element Plus 步骤条微调 ===== */
.el-steps {
  --el-color-primary: var(--el-color-primary);
}

/* ===== 滚动条美化 ===== */
::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}
::-webkit-scrollbar-track {
  background: transparent;
}
::-webkit-scrollbar-thumb {
  background: #D0D3D6;
  border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
  background: #B0B3B6;
}

/* ===== 过渡动画 ===== */
.el-card, .el-button, .el-tag, .el-menu-item {
  transition: all 0.15s ease;
}

/* ===== 页面进入动画 ===== */
.page {
  animation: fadeIn 0.2s ease;
}
@keyframes fadeIn {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}

/* ===== 侧边栏子菜单 ===== */
/* 与 .el-menu-item 保持完全同构的 flex 规则，否则标题行仍会错位 */
.app-aside .el-sub-menu__title {
  color: var(--feishu-text-secondary);
  border-radius: 6px;
  margin-bottom: 2px;
  height: 40px;
  line-height: 1;
  font-size: 14px;
  display: flex;
  align-items: center;
  gap: 10px;
  /* 仅覆盖左内边距；右内边距保留 Element Plus 的值，给展开箭头留位置 */
  padding-left: 14px !important;
  overflow: visible;
}
.app-aside .el-sub-menu__title:hover {
  background: var(--feishu-sidebar-hover);
  color: var(--feishu-text-primary);
}
/* 子项与父级同列：图标 x = 侧栏 padding 8 + 本 padding 14 = 22px，
   与父级菜单项图标 x 完全一致；文字同落 x = 22 + 18 + 10 = 50px */
.app-aside .el-sub-menu .el-menu-item {
  min-width: 0;
  padding-left: 14px !important;
}

.el-tag.tag-rejected {
  background: #FEF0F0;
  border-color: #FBC4C4;
  color: #F54A45;
}

/* ===== 剩余 HC 红黄绿 ===== */
.hc-badge {
  display: inline-block;
  min-width: 22px;
  padding: 0 6px;
  border-radius: 10px;
  font-weight: 600;
  font-size: 12px;
  line-height: 20px;
  text-align: center;
}
.hc-red { color: #F54A45; background: #FEF0F0; }
.hc-yellow { color: #E68A00; background: #FFF7E6; }
.hc-green { color: #2E9E1B; background: #E8F5E9; }

/* ===== 事件时间线 ===== */
.event-timeline {
  display: flex;
  flex-direction: column;
}
.timeline-item {
  display: flex;
  gap: 12px;
  position: relative;
  padding-bottom: 16px;
}
.timeline-item:last-child { padding-bottom: 0; }
.timeline-item::before {
  content: '';
  position: absolute;
  left: 4px;
  top: 14px;
  bottom: 0;
  width: 2px;
  background: #E5E6EB;
}
.timeline-item:last-child::before { display: none; }
.timeline-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #3370FF;
  flex-shrink: 0;
  margin-top: 4px;
  z-index: 1;
}
.dot-green { background: #34C724; }
.dot-orange { background: #FF9F1F; }
.dot-red { background: #F54A45; }
.dot-gray { background: #C0C4CC; }
.timeline-content { flex: 1; min-width: 0; }
.timeline-head {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.timeline-label {
  font-size: 13px;
  font-weight: 600;
  color: var(--feishu-text-primary);
}
.timeline-meta {
  font-size: 12px;
  color: var(--feishu-text-tertiary);
  margin-top: 2px;
}
.timeline-note {
  font-size: 12px;
  color: var(--feishu-text-secondary);
  background: #F7F8FA;
  border: 1px solid var(--feishu-border);
  border-radius: 6px;
  padding: 6px 10px;
  margin-top: 6px;
  line-height: 1.6;
  white-space: pre-wrap;
  word-break: break-all;
}

/* ===== 周报 6 口径大字卡片 ===== */
.report-card {
  background: #fff;
  border: 1px solid var(--feishu-border);
  border-radius: 10px;
  box-shadow: var(--feishu-card-shadow);
  padding: 16px 20px;
  margin-bottom: 16px;
  text-align: center;
}
.report-card-label {
  font-size: 13px;
  color: var(--feishu-text-tertiary);
}
.report-card-value {
  font-size: 32px;
  font-weight: 700;
  color: var(--el-color-primary);
  line-height: 1.2;
  margin-top: 6px;
}
.report-card-sub {
  font-size: 16px;
  font-weight: 500;
  color: var(--feishu-text-tertiary);
}

/* ===== 左下角账号卡可点击态 + 右箭头（HR / admin 都进「账号与同步」整页） ===== */
.sidebar-user.is-clickable { cursor: pointer; transition: border-color .15s ease, box-shadow .15s ease; }
.sidebar-user.is-clickable:hover {
  border-color: var(--el-color-primary);
  box-shadow: 0 1px 6px rgba(51, 112, 255, 0.12);
}
.sidebar-user.is-clickable:hover .su-arrow { color: var(--el-color-primary); transform: translateX(1px); }
.su-arrow {
  display: inline-flex;
  width: 14px;
  height: 14px;
  flex: 0 0 14px;
  color: var(--feishu-text-tertiary);
  opacity: .6;
  transition: color .15s ease, transform .15s ease;
}
.su-arrow svg { display: block; }

/* ===================================================================
   账号与同步（普通整页，2026-10-20 三轮定稿）
   用户明确要求「与其他子模块展示方式一样、整屏展示，只是入口放在左下角」，
   所以这里**不再有任何特殊版式**：页面用通用的 .page/.page-header，
   内容就是全宽 el-card 纵向堆叠（与 users.js / jobs.js 完全同一套骨架）。
   下面只保留三类必要的辅助样式：卡片间距、卡片头部标题、说明性小字。
   =================================================================== */
.acct-card { margin-bottom: 16px; }
.acct-card:last-child { margin-bottom: 0; }
.acct-card .el-card__header { padding: 12px 16px; }
.acct-card .el-card__body { padding: 14px 16px; }
.acct-card-head { display: flex; align-items: baseline; gap: 8px; }
.acct-card-head > span:first-child { font-size: 14px; font-weight: 600; color: var(--feishu-text-primary); }
.acct-card-head > .el-button { margin-left: auto; }
.acct-card-head > .el-button + .acct-card-sub { margin-left: 0; }
.acct-card-sub {
  margin-left: auto;
  font-size: 12px;
  font-weight: 400;
  color: var(--feishu-text-tertiary);
}
/* 说明性小字（管理员只读提示、白名单口径等） */
.acct-note {
  margin-top: 10px;
  font-size: 12px;
  line-height: 1.8;
  color: var(--feishu-text-tertiary);
}

/* 系统设置分组标题（admin 才渲染；与上方卡片对齐、留出上一块的间距） */
.acct-settings { margin-top: 16px; }
.acct-settings-title {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin: 0 0 12px;
}
.acct-settings-title > span:first-child { font-size: 15px; font-weight: 600; color: var(--feishu-text-primary); }
.acct-settings .acct-card:last-child { margin-bottom: 0; }

/* ── 以下 sp-* 从原抽屉样式沿用（邮箱行 / 空态 / 提示块） ── */

/* 邮箱卡片行 */
.sp-mail {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  margin-bottom: 8px;
  border: 1px solid var(--feishu-border);
  border-radius: 8px;
  background: #fff;
  transition: border-color .15s ease;
}
.sp-mail:hover { border-color: var(--el-color-primary-light-5, #a0cfff); }
.sp-mail-main { flex: 1; min-width: 0; }
.sp-mail-top { display: flex; align-items: center; gap: 8px; }
.sp-mail-name { font-size: 13px; font-weight: 600; color: var(--feishu-text-primary); }
.sp-mail-sub {
  font-size: 12px;
  color: var(--feishu-text-tertiary);
  line-height: 1.7;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.sp-mail-sub.sp-mono { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
.sp-mail-ops { flex: 0 0 auto; display: flex; align-items: center; gap: 2px; }
.sp-add { width: 100%; margin-top: 4px; }

/* 空态 */
.sp-empty { padding: 28px 16px; text-align: center; }
.sp-empty-title { font-size: 14px; font-weight: 600; color: var(--feishu-text-primary); }
.sp-empty-desc { font-size: 12px; color: var(--feishu-text-tertiary); margin-top: 6px; }

/* AI 评价 */
.sp-blurb {
  font-size: 12px;
  line-height: 1.8;
  color: var(--feishu-text-secondary);
  background: #f7f9fc;
  border-radius: 6px;
  padding: 10px 12px;
  margin-bottom: 12px;
}
.sp-score-status { margin-top: 14px; }
.sp-err-list { font-size: 12px; color: var(--feishu-text-tertiary); padding-left: 18px; margin: 0; line-height: 1.8; }
.sp-form-tip { font-size: 11px; color: var(--feishu-text-tertiary); margin-top: 2px; }
.sp-auth-tip {
  margin-top: 8px; padding: 10px 12px;
  background: #f5f7fa; border-radius: 6px;
  font-size: 12px; line-height: 1.8; color: #606266;
}

/* ===== BOSS 权益页（2026-10-29） ===== */
/* 与 users.js / account.js 同一骨架：.page > .page-header + 全宽 el-card 纵向堆叠。
   这里只排卡片内部，不加页面级 max-width、不做两列布局。 */
.bq-hint {
  font-size: 12px;
  color: var(--feishu-text-tertiary);
  margin: -4px 0 12px 2px;
}

/* 两张卡片纵向堆叠的间距（与 account.js 的 .acct-card 同一套做法） */
.bq-card { margin-bottom: 16px; }
.bq-card:last-child { margin-bottom: 0; }

.bq-grid {
  display: grid;
  /* auto-fit 而非 auto-fill：权益项少的时候让卡片横向铺满，不要挤在左边留一大片空白 */
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 16px;
}

.bq-item {
  background: #fff;
  border: 1px solid #E5E6EB;
  border-radius: 8px;
  padding: 14px 16px;
}

.bq-name {
  font-size: 14px;
  font-weight: 600;
  color: #1F2329;
}

/* 剩余量大数字 + 右侧「共 N」同一行基线对齐 */
.bq-amount {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  margin: 6px 0 8px;
}

.bq-remain {
  font-size: 24px;
  font-weight: 600;
  line-height: 1.2;
  color: #1F2329;
}
.bq-remain .bq-unit {
  font-size: 12px;
  font-weight: 400;
  color: #8F959E;
  margin-left: 2px;
}

.bq-total {
  font-size: 12px;
  color: #8F959E;
  white-space: nowrap;
}

.bq-delta {
  font-size: 12px;
  margin-top: 8px;
}
.bq-delta-down { color: #F54A45; }
.bq-delta-up { color: #00B42A; }
.bq-delta-flat, .bq-delta-first { color: #8F959E; }

.bq-meta {
  font-size: 12px;
  color: #8F959E;
  line-height: 1.6;
}

/* 卡片头部：左标题 + 右时间范围切换 */
.bq-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

/* 趋势表里「当天没采到」的占位 */
.bq-na { color: #8F959E; }

/* ===== 手动导入（2026-10-29） ===== */
.bq-hint-inline {
  font-size: 12px;
  color: #8F959E;
  font-weight: 400;
}

.bq-import-actions {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 12px;
}

.bq-import-note {
  font-size: 12px;
  color: var(--feishu-text-tertiary);
}

/* 采集健康 / 权益告急 的横幅间距 */
.bq-alert { margin: 0 0 12px 0; }


/* ===== 客户需求：左侧客户列表 + 右侧客户详情（2026-11-03 改为两级结构） ===== */
.demand-client-list {
  border: 1px solid #E5E6EB;
  border-radius: 10px;
  max-height: 640px;
  overflow-y: auto;
}

.demand-client-item {
  padding: 10px 12px;
  cursor: pointer;
  border-bottom: 1px solid #F2F3F5;
  transition: background 0.15s;
}

.demand-client-item:last-child { border-bottom: none; }
.demand-client-item:hover { background: #F7F8FA; }
.demand-client-item.is-active { background: #EAF0FF; }

.demand-client-name {
  font-size: 13px;
  color: #1F2329;
  font-weight: 500;
  line-height: 1.4;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  /* flex 容器里的子项必须 min-width:0，ellipsis 才会在「内容比容器宽」时生效；
     客户改成工商全称后常 20+ 字，不加这行会撑破 270px 侧栏（2026-11-06） */
  min-width: 0;
}

.demand-client-sub {
  margin-top: 3px;
  font-size: 12px;
  color: #8F959E;
  line-height: 1.4;
}

.demand-client-sub .is-idle { color: #B0B4BA; }

.demand-client-empty {
  padding: 24px 12px;
  text-align: center;
  font-size: 12px;
  color: #8F959E;
}

.demand-detail-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding-bottom: 12px;
  border-bottom: 1px solid #F2F3F5;
}

.demand-detail-name {
  font-size: 16px;
  font-weight: 600;
  color: #1F2329;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  /* 同上：客户全称变长后，flex 子项不缩就会把右侧按钮挤出可视区（2026-11-06） */
  min-width: 0;
}

.demand-profile {
  margin-top: 12px;
  padding: 12px 14px;
  background: #F7F8FA;
  border-radius: 8px;
}

.demand-profile-row {
  display: flex;
  gap: 12px;
  font-size: 12px;
  line-height: 1.9;
}

.demand-profile-label {
  flex: 0 0 64px;
  color: #8F959E;
}

.demand-profile-value {
  flex: 1;
  min-width: 0;
  color: #1F2329;
  white-space: pre-wrap;
  word-break: break-all;
}

.demand-profile-value.is-empty { color: #C0C4CC; }

/* 客户地址：逐行展示（最多 5 条，超出在 JS 侧截断并追加「等 N 个地址」） */
.demand-profile-line {
  display: block;
}

/* 项目：标签串（2026-11-06 新增）。el-tag 是 inline-block，
   父容器已 white-space: pre-wrap，标签会自动换行，这里只补间距。 */
.demand-profile-tag {
  margin: 0 6px 4px 0;
}

/* 客户弹窗里的多行编辑器（客户地址 / 项目名称，2026-11-06 新增）：
   地址通常 20+ 字，用 el-tag 会撑爆 720px 弹窗，所以改成纵向「一行一个输入框 + 行尾删除」 */
.demand-multi-list {
  width: 100%;
}

.demand-multi-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}

.demand-multi-row .el-input {
  flex: 1;
  min-width: 0;
}

.demand-table-head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 16px 0 10px;
}
