* { margin: 0; padding: 0; box-sizing: border-box; }
:root{
  --topbar-h:60px;          /* 顶部操作区高度：app-sidebar/app-body/set-view 均按此计算 */
  --primary:#1a5cff; --primary-d:#0e46d6;
  --bg:#f5f7fa; --panel:#ffffff; --border:#e8ebf0;
  --text:#1d2129; --sub:#86909c; --muted:#c9cdd4;
  --green:#00b42a; --orange:#ff7d00; --red:#f53f3f;
  --shadow:0 2px 12px rgba(0,0,0,.06);

  /* z-index 阶梯 —— 避免覆盖冲突，新组件请按此分配 */
  --z-dropdown:60;       /* 下拉菜单（职位、阶段、导入等） */
  --z-tooltip:99;        /* 浮层提示 */
  --z-detail:1000;       /* 详情面板（覆盖全屏） */
  --z-assign-pos:1100;   /* 分配到职位下拉（在详情面板之上） */
  --z-modal:1500;        /* 弹窗（必须 > 详情面板，否则在详情里点弹窗会被遮） */
  --z-drop:1600;         /* 拖拽浮层 */
  --z-toast:2000;        /* toast 提示（最顶层，确保任何场景下用户都能看到） */
}
html,body{height:100%;}
body{
  font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;
  background:var(--bg); color:var(--text); font-size:14px;
}
#app{ display:flex; flex-direction:column; height:100vh; }

/* 顶栏 */
.topbar{
  height:var(--topbar-h); background:var(--panel); border-bottom:1px solid var(--border);
  display:flex; align-items:center; padding:0 22px; gap:24px; flex-shrink:0;
  /* v1.10.987：sticky 吸顶。原为普通流元素，滚动时会随内容上下移动 */
  position:sticky; top:0; z-index:var(--z-dropdown);
}
.brand{ display:flex; align-items:center; gap:11px; cursor:pointer; }
.logo{
  width:38px; height:38px; border-radius:9px;
  background:linear-gradient(135deg,var(--primary),#4d82ff);
  color:#fff; font-size:20px; font-weight:700;
  display:flex; align-items:center; justify-content:center;
}
/* v1.6.248：主界面左上角品牌区复用登录页「HR SaaS 招聘模块」灰字样式 */
.brand-line1{ font-size:12px; color:#8a93a6; line-height:1.3; }
.brand-line2{ font-size:11px; color:#a8aeb8; line-height:1.3; margin-top:2px; }
.stat-chips{ display:flex; gap:10px; margin-left:8px; }
.chip{
  background:var(--bg); border:1px solid var(--border); border-radius:8px;
  padding:5px 13px; font-size:12px; color:var(--sub); line-height:1.4;
}
.chip b{ display:block; font-size:17px; color:var(--text); font-weight:700; }
.chip.hl b{ color:var(--primary); }
.chip.warn b{ color:var(--orange); }
.topbar-actions{ margin-left:auto; display:flex; align-items:center; gap:10px; }
#syncDays{ width:56px; padding:7px 8px; border:1px solid var(--border);
  border-radius:7px; text-align:center; }

/* 同步简历弹窗（左侧 sheet + 右侧内容，整体结构/比例/样式与 #settingsModal 完全一致）
   左侧:右侧 = 1:4 —— 总宽 880px / 左侧 176px / 右侧 704px
   ⚠️ 用 #syncModal .modal.sync-modal 复合选择器，特异性 (1,2,0) 严格大于
   任何 .modal{width:400px} / .modal-lg{width:600px}，避免被覆盖 */
#syncModal .modal.sync-modal{
  width:100vw; height:100vh; max-width:100vw; max-height:100vh;
  border-radius:0; padding:0; overflow:hidden;
  display:flex; flex-direction:column;
}
.sync-modal-title{
  padding:16px 28px; border-bottom:1px solid var(--border);
  font-size:18px; font-weight:700;
  flex-shrink:0; margin:0; background:#fff;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
}
.sync-modal-title > span{ flex:1; }
.sync-modal-title .dh-icon-btn{ width:36px; height:36px; border-radius:10px; }
.sync-modal-body{
  display:flex; flex:1; min-height:0;
}
/* 左侧 sheet 导航：遵循设计规范 176px + 15px 标签字体 + active 浅蓝底 */
.sync-sheets{
  width:140px; flex-shrink:0;   /* v1.10.1010：与设置栏/职位设置栏统一 140px */
  border-right:1px solid var(--border);
  padding:10px 0;
  display:flex; flex-direction:column;
  background:#fff;
}
.sync-sheet-list{
  display:flex; flex-direction:column; gap:2px;
}
.sync-sheet-item{
  display:block;
  padding:12px 14px; background:none; border:none;
  cursor:pointer; font-size:14px; color:#5b6577;   /* v1.10.1010：与设置栏/职位设置栏统一 14px */
  border-left:3px solid transparent;
  font-family:inherit; text-align:left;
  outline:none;                       /* 与 .set-tab/.ps-tab 一致：去掉点击黑框 */
  -webkit-tap-highlight-color:transparent;
}
.sync-sheet-item:hover{ background:rgba(0,0,0,.04); }
.sync-sheet-item.active{
  color:var(--primary); border-left-color:var(--primary);
  background:rgba(26,92,255,.10); font-weight:600;
}

/* 右侧内容区：占满剩余宽度，自适应全屏 */
.sync-content{
  flex:1; min-width:0;
  display:flex; flex-direction:column;
  padding:24px 32px 0;
  overflow:hidden; background:#fff;
}
/* sheet 切换：默认不滚动，由弹窗整体高度撑开；日志 sheet 保留滚动 */
.sync-sheet-pane{ display:none; flex:1; min-height:0; flex-direction:column; overflow-y:visible; }
.sync-sheet-pane.active{ display:flex; }
.sync-sheet-pane#syncSheetLog{ overflow-y:auto; }
.sync-sheet-pane#syncSheetSchedule{ overflow-y:auto; }
.sync-sheet-pane label{
  display:block; font-size:13px; color:var(--text);
  margin-bottom:6px;
}
.sync-sheet-pane input[type="number"],
.sync-sheet-pane select{
  padding:6px 10px; border:1px solid var(--border); border-radius:6px;
  background:#fff; font-family:inherit; font-size:13px;
}
.sync-sheet-action{ margin-top:auto; padding-top:18px; display:flex; justify-content:flex-end; }
.sync-sheet-action .btn{ padding:8px 18px; }

/* 日志 sheet 让 sync-log-list 自适应撑满剩余高度（不像旧版 max-height:200） */
.sync-sheet-pane#syncSheetLog .sync-log-list{
  flex:1; min-height:300px; max-height:none;
}

/* 定时扫描启用开关（独占一行） */
.sync-schedule-toggle-row{
  display:flex; justify-content:center;
  padding:10px 0 14px;
  border-bottom:1px dashed var(--border); margin-bottom:14px;
}
.sync-schedule-toggle{
  display:inline-flex; align-items:center; gap:8px;
  cursor:pointer; font-size:14px; color:var(--text);
  font-weight:600;
}
.sync-schedule-toggle input{ width:16px; height:16px; accent-color:var(--primary); }

.sync-schedule-fields{
  display:flex; flex-wrap:wrap; align-items:center; gap:6px;
  font-size:13px; color:var(--text);
  margin-bottom:14px;
}
.sync-schedule-fields .sync-day-cb{
  display:inline-flex; align-items:center; gap:2px; cursor:pointer;
  font-size:12px; color:var(--sub); user-select:none;
  padding:2px 5px; border-radius:4px; transition:.12s;
}
.sync-schedule-fields .sync-day-cb:hover{ background:#eef3ff; color:var(--primary); }
.sync-schedule-fields .sync-day-cb input[type=checkbox]{ margin:0; }
.sync-schedule-actions{ display:flex; justify-content:flex-end; margin-bottom:14px; }
.sync-schedule-status{
  font-size:12px; color:var(--sub);
  padding:10px 12px;
  border-radius:6px; background:#fafbfd;
  border:1px solid var(--border);
  line-height:1.7;
}
.sync-schedule-status b{ color:var(--primary); font-weight:600; }
.sync-schedule-status .running{ color:var(--orange); font-weight:600; }

/* v1.6.397：多规则卡片 */
.sync-rule-card{
  background:#fff; border:1px solid var(--border); border-radius:10px;
  padding:14px 16px; margin-bottom:12px; box-shadow:var(--shadow);
}
.sync-rule-top{
  display:flex; align-items:center; gap:12px; margin-bottom:12px;
}
.sync-rule-name{
  flex:1; min-width:0; font-size:14px; font-weight:600;
  border:1px solid var(--border); border-radius:6px; padding:6px 10px;
}
.sync-rule-del{
  width:28px; height:28px; border-radius:6px; border:none;
  background:#fbeaea; color:#d23; cursor:pointer; font-size:13px; flex:none;
}
.sync-rule-del:hover{ background:#f6c9c9; }
.sync-rule-body{ display:flex; flex-direction:column; gap:10px; margin-bottom:10px; }
.sync-rule-row{
  display:flex; align-items:center; gap:6px; font-size:13px; color:var(--text); flex-wrap:wrap;
}
.sync-rule-row input[type=number]{
  padding:4px 6px; border:1px solid var(--border); border-radius:6px; font-size:13px; text-align:center;
}
.sync-rule-toggle{ display:inline-flex; align-items:center; gap:4px; cursor:pointer; white-space:nowrap; }
.sync-rule-toggle input{ width:16px; height:16px; accent-color:var(--primary); }
/* v1.6.397：修复日期勾选框与文字对齐 */
.sync-rule-row > .sync-day-cb{
  display:inline-flex; align-items:center; gap:3px;
  padding:2px 6px; border-radius:6px; cursor:pointer; user-select:none;
}
.sync-rule-row > .sync-day-cb:hover{ background:#eef3ff; color:var(--primary); }
.sync-rule-row > .sync-day-cb input[type=checkbox]{
  width:14px; height:14px; margin:0; vertical-align:middle; accent-color:var(--primary);
}
.sync-rule-footer{
  display:flex; align-items:center; justify-content:space-between;
  padding-top:8px; border-top:1px solid var(--border);
}
.sync-rule-last{ font-size:12px; color:var(--muted); }

/* 同步日志（位于独立 sheet 内） */
.sync-log-header{
  display:flex; align-items:center; justify-content:space-between;
  margin-bottom:8px;
}
.sync-log-header > span{ font-size:13px; font-weight:600; color:var(--text); }
.sync-log-list{
  overflow-y:auto; padding-right:4px;
  display:flex; flex-direction:column; gap:6px;
}
.sync-log-empty{ font-size:12px; color:var(--sub); padding:14px 0; text-align:center; }
.sync-log-item{
  display:flex; align-items:center; gap:10px;
  padding:8px 10px; border:1px solid var(--border); border-radius:6px;
  background:var(--panel); font-size:12px;
}
.sync-log-status{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:46px; padding:2px 8px; border-radius:10px;
  font-size:11px; font-weight:600;
}
.sync-log-status.success{ background:#e8f5e9; color:#2e7d32; }
.sync-log-status.error{ background:#fdecea; color:#c62828; }
.sync-log-status.interrupted{ background:#fff4e0; color:#e67e00; }
.sync-log-time{ flex:1; min-width:0; }
.sync-log-meta{
  display:flex; gap:12px; flex-wrap:wrap; color:var(--sub); font-size:11px; margin-top:2px;
}
.sync-log-meta b{ color:var(--text); font-weight:600; }
.sync-log-mode{ font-size:11px; color:var(--sub); margin-right:4px; }

.sync-modal .modal-actions{ padding:16px 28px 22px; border-top:1px solid var(--border); margin-top:0; flex-shrink:0; }

/* 同步进度提示（顶栏下方） */
.sync-progress{
  flex-shrink:0;
  display:flex; align-items:center; justify-content:center; gap:10px;
  padding:10px 18px;
  background:linear-gradient(90deg,#eef3ff,#fff);
  border-bottom:1px solid #d6e0ff;
  color:var(--text); font-size:13px;
  animation:syncSlideDown .25s ease;
}
.sync-progress-icon{
  width:18px; height:18px; line-height:18px; text-align:center;
  color:var(--primary); font-size:15px;
  animation:syncSpin 1.2s linear infinite;
}
.sync-progress.done .sync-progress-icon{
  animation:none; color:var(--green);
}
.sync-progress-text{ flex:1; text-align:center; }
.sync-progress-cancel{
  padding:5px 14px; border:1px solid var(--border); border-radius:7px;
  background:var(--panel); color:var(--red); font-size:12px; cursor:pointer;
  font-family:inherit; transition:.15s; flex-shrink:0;
}
.sync-progress-cancel:hover{ background:#fff0f0; border-color:#ffcdcd; }
.sync-progress-cancel:disabled{ color:var(--muted); border-color:var(--border); background:var(--bg); cursor:default; }
.sync-progress.done .sync-progress-cancel{ display:none; }
.sync-progress-close{
  width:22px; height:22px; border:none; background:transparent;
  color:var(--sub); font-size:18px; cursor:pointer; line-height:22px;
  flex-shrink:0;
}
.sync-progress-close:hover{ color:var(--text); }
.sync-progress.error{
  background:linear-gradient(90deg,#fff0f0,#fff);
  border-bottom-color:#ffcdcd;
  color:var(--red);
}
.sync-progress.error .sync-progress-icon{
  animation:none; color:var(--red);
}
.sync-progress.error .sync-progress-close:hover{ color:var(--red); }
@keyframes syncSpin{ to{ transform:rotate(360deg); } }
@keyframes syncSlideDown{ from{ opacity:0; transform:translateY(-6px); } to{ opacity:1; transform:translateY(0); } }

/* 按钮 */
.btn{
  border:1px solid var(--border); background:var(--panel); color:var(--text);
  padding:8px 15px; border-radius:8px; cursor:pointer; font-size:13px;
  transition:.15s; font-family:inherit;
}
.btn:hover{ background:var(--bg); }
.btn:disabled, .btn[disabled]{ opacity:0.5; cursor:not-allowed; }
.btn-primary{ background:var(--primary); color:#fff; border-color:var(--primary); }
.btn-primary:hover{ background:var(--primary-d); }
.btn-danger{ background:#fff; color:var(--red); border-color:#ffcdcd; }
.btn-danger:hover{ background:#fff2f2; }
.btn .ic{ display:inline-block; }
.btn.spin .ic{ animation:spin .8s linear infinite; }
@keyframes spin{ to{ transform:rotate(360deg); } }

/* 主体三栏 */
/* v2.0.1058：padding-top 12→20（与职位设置 .pos-settings-content 顶部间距一致）；
   gap 8→6（漏斗/筛选/简历行更贴近职位分类栏） */
.main{ flex:1; display:flex; overflow:hidden; padding:0 12px 12px 0; gap:6px; }
/* v2.0.1029：候选人 tab 显式给 .main 一个高度——原 tab-view.active 是 display:block，
   父级无高度时 .main 的 flex:1 算不出 100%，导致 .pos-list 拿不到高度、滚动条不出现 */
#tabCandidates .main{ height:calc(100vh - var(--topbar-h) - 32px); }

/* 左侧 */
.sidebar{
  width:236px; background:var(--panel); flex-shrink:0;
  /* v2.0.1055：右侧分隔线改为完整 1px 边框 + 10px 圆角（统一卡片风格） */
  border:1px solid var(--border); border-radius:10px;
  display:flex; flex-direction:column;
  overflow:hidden;   /* 内容不超出圆角 */
}
.side-head{
  display:flex; align-items:center; gap:6px;
  padding:14px 16px 10px; font-weight:600; color:var(--text); font-size:13px;
  border-bottom:1px solid var(--border);
}
.side-head > span{ flex-shrink:0; }
/* 职位小搜索框：标题和齿轮之间 */
.pos-filter-input{
  flex:1; min-width:0;
  font-size:12px; padding:4px 8px;
  border:1px solid #d3d8e0; border-radius:7px;
  background:#fff; color:var(--text);
  font-family:inherit; font-weight:400;
  transition:border-color .15s, box-shadow .15s;
}
.pos-filter-input:focus{
  outline:none; border-color:var(--primary); background:#fff;
  box-shadow:0 0 0 2px rgba(26,92,255,.12);
}
.pos-filter-input::placeholder{ color:var(--muted); font-weight:400; }
/* 定向搜索框（投递时间右侧）——与顶栏搜索统一设计 */
.dir-search-input{
  width:108px; padding:6px 10px; margin-left:4px;
  border:1px solid #d3d8e0; border-radius:7px;
  font-size:13px; font-family:inherit; background:#fff;
  transition:border-color .15s, box-shadow .15s;
  vertical-align:middle;
}
.dir-search-input:focus{
  outline:none; border-color:var(--primary);
  box-shadow:0 0 0 2px rgba(26,92,255,.15);
}
.dir-search-input::placeholder{ color:var(--muted); font-size:13px; }
.mini-btn{
  width:22px; height:22px; border:1px solid var(--border); background:var(--panel);
  border-radius:6px; cursor:pointer; color:var(--sub); font-size:15px; line-height:1;
}
.mini-btn:hover{ color:var(--primary); border-color:var(--primary); }
.pos-list{ list-style:none; overflow-y:auto; flex:1; min-height:0; padding:0 10px 12px; }
/* v2.0.1029：候选人 tab 职位栏滚动条（参考 .excel-multi-list 风格） */
.pos-list::-webkit-scrollbar{ width:6px; }
.pos-list::-webkit-scrollbar-thumb{ background:rgba(0,0,0,.18); border-radius:3px; }
.pos-list::-webkit-scrollbar-thumb:hover{ background:rgba(0,0,0,.30); }
.pos-item{
  display:flex; align-items:center; justify-content:space-between;
  padding:10px 12px; border-radius:10px; cursor:pointer; margin-bottom:3px;
  color:var(--text); position:relative;
}
.pos-item:hover{ background:var(--bg); }
.pos-item.active{ background:#eef3ff; color:var(--primary); font-weight:600; }
.pos-item .cnt{
  font-size:12px; color:var(--sub); background:var(--bg);
  padding:1px 8px; border-radius:10px; min-width:22px; text-align:center;
}
.pos-item.active .cnt{ background:#dbe6ff; color:var(--primary); }
.pos-item .edit{ display:none; font-size:12px; color:var(--muted); margin-left:6px; }
.pos-item:hover .edit{ display:inline; }
.pos-item .edit:hover{ color:var(--primary); }
.pos-divider{ height:1px; background:var(--border); margin:8px 12px; }

/* 侧边栏顶部固定筛选项：全部简历 / 未分配简历 */
.pos-item-special{ font-weight:500; }
.pos-item-special .pos-icon{
  display:inline-block; width:16px; text-align:center; margin-right:6px;
  color:var(--sub); font-size:13px;
}
.pos-item-special.active .pos-icon{ color:var(--primary); }
.pos-sep{
  list-style:none; height:1px; margin:8px 12px;
  background:linear-gradient(90deg, transparent, var(--border) 20%, var(--border) 80%, transparent);
  padding:0; cursor:default;
}
.pos-sep:hover{ background:linear-gradient(90deg, transparent, var(--border) 20%, var(--border) 80%, transparent); }

/* 职位搜索无结果提示 */
.pos-empty{
  list-style:none; padding:12px 18px;
  font-size:12px; color:var(--muted); text-align:center;
  cursor:default;
}

/* v1.8.838：职位分组标题（清爽缩进树：去 📁、去虚线、CSS 三角、数量统一 badge） */
.pos-group-title{
  list-style:none;
  padding:9px 12px;
  font-weight:600; color:var(--text); font-size:13px;
  display:flex; align-items:center; gap:7px;
  cursor:pointer; user-select:none; border-radius:10px;
  transition:background-color .12s;
}
.pos-group-title:hover{ background:#f5f7fa; }
/* CSS 绘制的小三角：展开向下、折叠向右（替代 ▶▼ 字符与 📁 emoji，去除视觉噪音） */
.pos-group-title .pos-group-arrow{
  width:0; height:0; flex:none;
  border-style:solid; border-width:4px 5px 0 5px;
  border-color:var(--muted) transparent transparent transparent;
  transition:transform .15s;
}
.pos-group-title.collapsed .pos-group-arrow{ transform:rotate(-90deg); }
.pos-group-title .pos-group-name{ flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
/* 数量统一圆角 badge —— 分组标题与职位项一致 */
.pos-group-title .pos-count,
.pos-item .pos-count{
  font-weight:400; color:var(--sub);
  background:#f2f3f5; padding:1px 8px; border-radius:10px;
  min-width:22px; text-align:center; font-size:12px; flex:none;
}
.pos-item.active .pos-count{ background:#dbe6ff; color:var(--primary); }
.pos-group-title.pos-group-unassigned{ color:var(--muted); }
/* 分组下的子职位项相对分组标题缩进，明确归属关系 */
.pos-item.pos-item-child{ padding-left:33px; }

/* ===== 职位设置弹窗（v1.6.260：仿 360 浏览器设置风格，全屏 + 左侧图标导航）===== */
#posSettingsModal .modal.modal-lg{
  width:100vw; height:100vh; max-width:100vw; max-height:100vh;
  display:flex; flex-direction:column;
  border-radius:0; padding:0; overflow:hidden;
}
#posSettingsModal .modal-title{
  padding:16px 28px; font-size:18px; font-weight:700;
  flex-shrink:0; margin:0;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  border-bottom:1px solid var(--border); background:#fff;
}
#posSettingsModal .modal-title > span{ flex:1; }
#posSettingsModal .modal-title .dh-icon-btn{ width:36px; height:36px; border-radius:10px; }
#posSettingsModal .modal-actions{
  padding:16px 28px 22px; flex-shrink:0;
  border-top:1px solid var(--border); margin:0;
}
.pos-settings-body{
  display:flex; flex:1; min-height:0; overflow:hidden;
}
/* 左侧 sheet 导航：遵循设计规范 176px + 15px 标签字体 */
.pos-settings-tabs{
  width:140px; flex-shrink:0;   /* v1.10.1000：与设置栏同步收窄 20%（176->140） */
  border-right:1px solid var(--border);
  padding:10px 0;
  display:flex; flex-direction:column; gap:2px;
  background:#fff;
}
.pos-settings-tabs .ps-tab{
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  padding:12px 14px; border:none; background:none; cursor:pointer;
  font-size:14px; color:#5b6577; border-left:3px solid transparent;
  font-family:inherit; text-align:left;
  outline:none;   /* v1.10.1000：去掉点击后的浏览器默认 focus 黑框 */
  -webkit-tap-highlight-color:transparent;   /* 防移动端/WebView 点击高亮块 */
}
.pos-settings-tabs .ps-tab:hover{ background:rgba(0,0,0,.04); }
.pos-settings-tabs .ps-tab.active{
  color:var(--primary); border-left-color:var(--primary);
  background:rgba(26,92,255,.10); font-weight:600;
}
.ps-tab-badge{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:18px; padding:1px 6px;
  background:#e0e3e8; color:#8a8f99; border-radius:9px;
  font-size:11px; font-weight:600;
  margin-left:4px;
}
/* sheet1: 绿色 badge；sheet2: 灰色（默认）；sheet3/sheet4: 隐藏 */
.ps-tab[data-ps-tab="open"] .ps-tab-badge{ background:#e6f7ee; color:#00b578; }
.ps-tab[data-ps-tab="open"].active .ps-tab-badge{ background:#00b578; color:#fff; }
.ps-tab[data-ps-tab="groups"] .ps-tab-badge,
.ps-tab[data-ps-tab="depts"] .ps-tab-badge{ display:none; }

/* 右侧内容区：填满剩余高度，scroll容器；各 sheet 内部 flex 列布局 */
.pos-settings-content{
  flex:1; min-width:0; min-height:0;
  padding:20px 28px; overflow-y:auto;
  display:flex; flex-direction:column;
}
.ps-pane{ display:none; }
.ps-pane.active{ display:flex; flex-direction:column; flex:1; min-height:0; }
.pos-settings-list{ display:flex; flex-direction:column; gap:8px; }

/* v1.5.143：分组行 */
.ps-group-row{
  display:flex; align-items:center; gap:10px;
  padding:10px 12px; border:1px solid var(--border); border-radius:8px; background:#fff;
}
.ps-group-row .ps-group-order{
  display:flex; flex-direction:column; align-items:center; gap:2px;
  min-width:32px;
}
.ps-group-row .ps-group-order .ps-order-idx{ font-size:11px; color:var(--sub); }
.ps-group-row input.ps-group-name-input{
  flex:1; padding:6px 10px; border:1px solid var(--border); border-radius:6px; font-size:13px; background:#fff;
}
.ps-group-row input.ps-group-name-input:focus{ border-color:var(--primary); box-shadow:0 0 0 2px rgba(26,92,255,.10); }
.ps-group-row .ps-group-count{ font-size:12px; color:var(--sub); margin-right:8px; white-space:nowrap; }

/* v1.5.143：分组管理底部输入区 */
/* 部门职位映射 sheet */
.ps-depts-header{ display:flex; align-items:center; gap:10px; padding:12px 0; border-bottom:1px solid var(--border); margin-bottom:14px; flex-wrap:wrap; }
.ps-depts-header input{ flex:0 1 240px; padding:6px 12px; border:1px solid var(--border); border-radius:6px; font-size:13px; }
.ps-depts-tip{ font-size:11px; color:var(--sub); margin-left:auto; }
.ps-depts-list{ display:flex; flex-direction:column; gap:14px; }
.ps-dept-block{ border:1px solid var(--border); border-radius:10px; overflow:hidden; background:#fff; }
.ps-dept-block.ps-dept-unassigned{ border-style:dashed; background:#fafbfc; }
.ps-dept-head{ display:flex; align-items:center; gap:8px; padding:10px 14px; background:#f8f9fb; border-bottom:1px solid var(--border); }
.ps-dept-block.ps-dept-unassigned .ps-dept-head{ background:#f0f2f5; }
.ps-dept-name{ font-size:14px; font-weight:700; color:var(--text); }
.ps-dept-count{ font-size:11px; color:var(--sub); background:#fff; padding:1px 8px; border-radius:10px; border:1px solid var(--border); margin-left:auto; }
.ps-dept-del{ border:none; background:transparent; color:var(--red); cursor:pointer; font-size:13px; padding:2px 8px; border-radius:4px; }
.ps-dept-del:hover{ background:#fbeaea; }
.ps-dept-pos-list{ padding:6px 0; }
.ps-dept-pos{ display:flex; align-items:center; gap:10px; padding:7px 14px; font-size:13px; border-bottom:1px solid #f2f3f5; }
.ps-dept-pos:last-child{ border-bottom:none; }
.ps-dept-pos-name{ flex:1; min-width:0; color:var(--text); font-weight:500; }
.ps-dept-pos-sel{ padding:4px 8px; border:1px solid var(--border); border-radius:6px; background:#fff; font-size:12px; color:var(--text); cursor:pointer; min-width:100px; max-width:180px; flex-shrink:0; }
.ps-dept-pos-name{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ps-dept-empty{ padding:14px; text-align:center; color:var(--sub); font-size:12px; }
/* v1.8.929：设置负责经办人按钮（部门级 + 岗位级） */
.ps-owner-btn{
  flex-shrink:0; margin-left:auto;
  padding:3px 10px; border:1px solid var(--border); border-radius:6px;
  background:#fff; color:var(--text); font-size:12px; font-family:inherit;
  cursor:pointer; white-space:nowrap; transition:all .12s;
}
.ps-owner-btn:hover{ border-color:var(--primary); color:var(--primary); background:#f0f4ff; }
.ps-owner-btn.partial{
  border-color:#ffd591; background:#fff7e6; color:#ad6800; font-weight:600;
}
.ps-dept-head .ps-owner-btn{ margin-left:8px; }

/* v1.6.366：部门内职位拖拽样式（仿 ps-ghost 效果） */
.ps-dept-pos{ transition:background-color .12s; }
.ps-dept-pos:hover{ background:#fafbfc; }
.ps-dept-pos-ghost{ opacity:0.35; background:#eef4ff; }
.ps-dept-pos-dragging{ box-shadow:0 4px 14px rgba(26,92,255,.18); }

/* v1.6.304：部门职位映射 sheet 拖拽排序（仿开放职位样式） */
.ps-dept-block{ position:relative; }
.ps-dept-drag-handle{
  display:inline-flex; align-items:center; justify-content:center;
  width:18px; height:18px; margin-left:auto;
  font-size:14px; line-height:1; color:var(--sub);
  cursor:grab; user-select:none;
  border-radius:4px;
  transition:color .15s, background .15s;
}
.ps-dept-drag-handle:hover{ color:var(--primary); background:rgba(26,92,255,.06); }
.ps-dept-drag-handle:active{ cursor:grabbing; }
/* v1.6.591：统一拖拽把手（开放职位 / 关闭职位 / 职位分组 行左侧） */
.ps-drag-handle{
  display:inline-flex; align-items:center; justify-content:center;
  width:18px; height:18px; flex:0 0 18px;
  font-size:14px; line-height:1; color:var(--sub);
  cursor:grab; user-select:none;
  border-radius:4px;
  transition:color .15s, background .15s;
}
.ps-drag-handle:hover{ color:var(--primary); background:rgba(26,92,255,.06); }
.ps-drag-handle:active{ cursor:grabbing; }
/* v1.6.591：部门职位映射——每个职位行左侧的拖拽把手 */
.ps-dept-pos-drag-handle{
  display:inline-flex; align-items:center; justify-content:center;
  width:18px; height:18px; flex:0 0 18px;
  font-size:14px; line-height:1; color:var(--sub);
  cursor:grab; user-select:none;
  border-radius:4px;
  transition:color .15s, background .15s;
}
.ps-dept-pos-drag-handle:hover{ color:var(--primary); background:rgba(26,92,255,.06); }
.ps-dept-pos-drag-handle:active{ cursor:grabbing; }
/* 「未分配」虚拟块不可拖 */
.ps-dept-block.ps-dept-unassigned .ps-dept-head{ cursor:default; }
.ps-dept-block.ps-dept-unassigned .ps-dept-head:active{ cursor:default; }
/* 拖拽 ghost / dragging 反馈 */
.ps-dept-block-ghost{ opacity:0.4; background:#f0f4ff !important; }
.ps-dept-block-dragging{
  background:#eef3ff !important;
  box-shadow:0 4px 16px rgba(26,92,255,.12);
  border-color:var(--primary);
}

.pos-groups-add{
  display:flex; align-items:center; gap:8px;
  padding:10px 24px; border-top:1px solid var(--border); background:var(--bg);
}
.pos-groups-add input{ flex:1; padding:7px 12px; border:1px solid var(--border); border-radius:6px; font-size:13px; }

/* 新增职位输入区（v1.6.263：移至"开放职位"sheet 顶部） */
.pos-settings-add{
  display:flex; gap:8px; padding:12px 28px;
  border-top:1px solid var(--border);
  background:var(--bg);
  flex-shrink:0;
}
.pos-settings-add input{ flex:1; padding:7px 12px; border:1px solid var(--border); border-radius:6px; font-size:13px; background:#fff; }
.pos-settings-add input:nth-of-type(2){ flex:1.5; }
/* 内联到 sheet 内部的版本：与该 sheet 强绑定，更紧凑 */
.pos-settings-add-inline{
  margin-bottom:12px; padding:12px 14px;
  background:var(--bg); border:1px solid var(--border);
  border-radius:8px;
}
.pos-settings-add-inline input{ padding:7px 12px; border:1px solid var(--border); border-radius:6px; font-size:13px; background:#fff; }
.pos-settings-add-inline input:focus{ border-color:var(--primary); box-shadow:0 0 0 3px rgba(26,92,255,.10); }
/* v1.6.263：顶部版本——无 margin-top，列表跟着排列 */
.pos-settings-add-top{ margin-top:0; }

/* v1.6.263：开放职位 sheet 顶部搜索框 */
.pos-settings-search{
  display:flex; align-items:center; gap:8px;
  margin-bottom:10px;
}
.pos-settings-search input{
  flex:1; padding:8px 12px; border:1px solid var(--border); border-radius:6px;
  font-size:13px; background:#fff; font-family:inherit;
}
.pos-settings-search input:focus{ border-color:var(--primary); box-shadow:0 0 0 3px rgba(26,92,255,.10); outline:none; }
.pos-settings-search-count{
  font-size:12px; color:var(--sub); white-space:nowrap;
}

/* 单行卡片式职位行（按 v1.5.120 设计规范：白底+1px 边框+10px 圆角+柔和阴影） */
/* v1.5.158：恢复 flex 布局（grid 会让 SortableJS ghost 渲染失败，导致拖拽失效）。
   列宽用 flex-basis 精确控制：序号 38 | 职位 140 | 关联词 238 | 分组 select 101 */
.ps-row{
  display:flex; align-items:center; gap:10px;
  padding:10px 12px; margin:0;
  background:var(--panel); border:1px solid var(--border); border-radius:10px;
  box-shadow:0 1px 2px rgba(0,0,0,.04);
  transition:border-color .15s, box-shadow .15s;
}
.ps-row:hover{ border-color:var(--primary); box-shadow:0 2px 8px rgba(26,92,255,.10); }
.ps-row-hidden{ opacity:0.85; }
/* 各列固定宽度（flex-basis），input 用 width:100% 占满 */
.ps-row .ps-order{ flex:0 0 38px; }
.ps-row .ps-name-input{ flex:0 0 140px; min-width:0; max-width:140px; }
.ps-row .ps-kw-input{ flex:0 0 238px; min-width:0; max-width:238px; }
.ps-row .ps-group-select{ flex:0 0 101px; min-width:0; max-width:101px; }
.ps-row .ps-count{ flex:0 1 auto; }
.ps-row .ps-ops{ flex:0 0 auto; }

/* 左侧：排序按钮组（上下置顶 + 序号） */
.ps-order{
  flex:none; display:flex; flex-direction:column; align-items:center; gap:2px;
  padding-right:8px; border-right:1px solid var(--border);
}
.ps-order-idx{ font-size:11px; color:var(--sub); min-width:14px; text-align:center; line-height:1; }
.ps-order-btn{
  width:20px; height:18px; padding:0; border:1px solid var(--border);
  border-radius:4px; background:#fff; color:var(--sub);
  font-size:10px; line-height:1; cursor:pointer; transition:all .15s;
  display:inline-flex; align-items:center; justify-content:center;
}
.ps-order-btn:hover:not(:disabled){
  background:var(--primary); color:#fff; border-color:var(--primary);
}
.ps-order-btn:disabled{ opacity:.35; cursor:not-allowed; }
/* 置顶按钮 hover orange */
.ps-order-top:hover:not(:disabled){
  background:#f57c00; color:#fff; border-color:#f57c00;
}

/* 中部：职位名 + 关联词（v1.5.154 由 grid 控制列宽，flex 无效可省略） */
.ps-name-input{ width:100%; min-width:0; }
.ps-kw-input{ width:100%; min-width:0; }
.ps-group-select{ width:100%; min-width:0; padding:6px 8px; border:1px solid var(--border); border-radius:6px; font-size:13px; background:#fff; }
.ps-count{
  flex:none; font-size:12px; color:var(--sub); padding:0 4px;
  white-space:nowrap;
}
.ps-hidden-tag{
  flex:none; font-size:11px; padding:2px 8px; border-radius:6px;
  background:#fff2f2; color:var(--red); font-weight:600;
}

/* 右侧：操作按钮组 */
.ps-ops{
  flex:none; display:flex; align-items:center; gap:6px; flex-wrap:wrap;
  justify-content:flex-end;
}
.ps-ops .btn{ padding:5px 12px; font-size:12.5px; white-space:nowrap; }
.ps-order-btn:disabled{
  opacity:0.3; cursor:not-allowed;
}
.ps-name-input,.ps-kw-input{
  display:block; width:100%; font-size:13px; padding:6px 8px;
  border:1px solid var(--border); border-radius:6px;
  margin-bottom:6px; font-family:inherit;
}
.ps-name-input{ font-weight:600; }
.ps-name-input:focus,.ps-kw-input:focus{ outline:none; border-color:var(--primary); }
.ps-count{ font-size:11px; color:var(--sub); }
/* v1.5.146：拖拽排序样式 */
.ps-ghost{ opacity:0.35; }
.ps-dragging{ background:#eef3ff !important; box-shadow:0 4px 16px rgba(26,92,255,.12); border-radius:10px; }
.ps-hidden-tag{ font-size:11px; color:#fff; background:#9aa3b2; padding:1px 7px; border-radius:10px; margin-left:4px; }
.ps-row-hidden .ps-name-input,
.ps-row-hidden .ps-kw-input{ background:#f3f4f6; color:var(--sub); }

/* v1.5.157：分组 sheet 中「未分组」虚拟分组（不可编辑/删除，可拖拽） */
.ps-group-row-virtual{
  background:#f5f7fa; border-style:dashed;
}
.ps-group-row-virtual .ps-group-name-input{ cursor:default; }
.ps-group-row-virtual .ps-group-name-virtual{
  flex:1; padding:6px 10px; border:1px dashed var(--border);
  border-radius:6px; font-size:13px; background:transparent;
  display:flex; align-items:center; user-select:none; color:var(--sub);
}
.ps-group-fixed-tag{
  font-size:11px; color:var(--sub); background:#e8eaef;
  padding:2px 8px; border-radius:6px; white-space:nowrap;
}
.ps-ops{ display:flex; gap:6px; flex-shrink:0; margin-top:2px; }
.ps-hide-btn{ color:#5b6577; border-color:#d7dce5; background:#fff; }
.ps-hide-btn:hover{ border-color:var(--primary); color:var(--primary); }


/* 中间列表 */
.list-panel{ flex:1; display:flex; flex-direction:column; overflow:hidden; min-width:340px; }
/* 顶栏导入模块（原列表区工具栏移入，UI 精简） */
.topbar-import{ display:flex; align-items:center; margin:0 6px; }
/* 顶栏主操作按钮（导入）与右侧应用菜单按钮视觉对齐 */
.topbar-import .btn-primary{
  height:34px; padding:0 13px; border-radius:8px;
  display:inline-flex; align-items:center; gap:4px;
  font-size:13px; font-weight:600; line-height:1;
  background:#fff; color:var(--primary); border-color:var(--primary);
  transition:background .15s, box-shadow .15s;
}
.topbar-import .btn-primary:hover{ background:#eef3ff; box-shadow:0 1px 4px rgba(26,92,255,.22); }

/* v2.0.1042 导入弹窗（3 tab × 左右分栏） */
#importModalPanel{
  display:flex; flex-direction:column;
  max-width:1100px; width:calc(100vw - 80px); height:680px;
  padding:0; overflow:hidden;
}
.imv-title{
  padding:14px 20px 0; margin:0 !important;
  display:flex; align-items:center; justify-content:space-between;
}
.imv-tabs{ display:flex; gap:28px; flex:1; }
.imv-tab{
  position:relative; padding:10px 0; font-size:15px;
  font-weight:500; color:var(--sub); cursor:pointer;
  transition:color .15s;
}
.imv-tab:hover{ color:var(--text); }
.imv-tab.active{ color:var(--primary); font-weight:600; }
.imv-tab.active::after{
  content:''; position:absolute; left:0; right:0; bottom:-1px; height:2px;
  background:var(--primary);
}

.imv-hint{
  padding:0 20px 8px; font-size:12px; color:var(--sub);
}
.imv-hint.hidden{ display:none; }
.imv-link{ color:var(--primary); cursor:pointer; }
.imv-link:hover{ text-decoration:underline; }
.imv-link-primary{ color:var(--primary); font-weight:600; }

.imv-body{
  flex:1; min-height:0;
  display:flex; gap:0;
  padding:0 20px 12px;
}
.imv-left{ position:relative; flex:1; min-width:0; display:flex; flex-direction:column; overflow:hidden; border-right:1px solid var(--border); padding-right:20px; }
.imv-right{ width:340px; flex-shrink:0; padding-left:20px; }

/* v2.0.1043：imv-pane 改 absolute 定位（避免 display:none↔flex 切换时 flex:1
   嵌套高度计算不稳导致字段被截断；3 个 pane 重叠在 imv-left 内） */
.imv-pane{ position:absolute; inset:0; display:none; flex-direction:column; }
.imv-pane.active{ display:flex; }

.imv-drop{
  flex:1; min-height:0;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  border:2px dashed var(--primary); border-radius:10px;
  background:#f5f8ff;
  padding:32px 20px; text-align:center; gap:14px;
  transition:background .15s, border-color .15s;
}
.imv-drop.drag-hover{ background:#dbe7ff; border-color:var(--primary-d); }
.imv-drop-icon{ font-size:36px; color:var(--primary); font-weight:200; line-height:1; }
.imv-drop-text{ font-size:14px; color:var(--text); }
.imv-drop-sub{ font-size:12px; color:var(--sub); line-height:1.7; }
.imv-drop-sm{ flex:0 0 200px; padding:20px 16px; gap:10px; }
.imv-drop-lg{ flex:1; }

.imv-preview{ flex:1; min-height:0; display:flex; flex-direction:column; }
.imv-preview-header{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding-bottom:8px;
}
.imv-preview-name{
  font-size:13px; color:var(--text); font-weight:500;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; flex:1;
}
.imv-preview-host{
  flex:1; min-height:0;
  border:1px solid var(--border); border-radius:8px;
  background:#fafbfc; overflow:auto;   /* v2.0.1044：改 auto——PDF.js canvas 多页渲染需要滚动 */
}
.imv-preview-host iframe{
  width:100%; height:100%; border:0; background:#fff;
}
.imv-preview-host .imv-img-preview{
  width:100%; height:100%; display:flex; align-items:center; justify-content:center;
  padding:16px; background:#fff;
}
.imv-preview-host .imv-img-preview img{
  max-width:100%; max-height:100%; object-fit:contain; box-shadow:0 1px 6px rgba(0,0,0,.08);
}
.imv-preview-host .imv-note{
  padding:18px; font-size:13px; color:var(--sub); line-height:1.7;
}

.imv-thumbs{ margin-top:12px; border-top:1px solid var(--border); padding-top:12px; display:flex; flex-direction:column; min-height:0; flex:1; }
.imv-thumbs-count{ font-size:13px; color:var(--text); margin-bottom:12px; font-weight:500; }
.imv-thumbs-list{
  display:grid; grid-template-columns:repeat(auto-fill, minmax(110px, 1fr));
  gap:12px; overflow:auto; flex:1; min-height:0;
  align-content:start;   /* v2.0.1129：行高不拉伸铺满容器，否则卡片被拉成窄长矩形 */
}
.imv-thumb-card{
  position:relative; border:1px solid var(--border); border-radius:6px;
  background:#fff; padding:10px 8px 8px; display:flex; flex-direction:column; align-items:center; gap:6px;
  aspect-ratio:1/1;      /* v2.0.1129：卡片强制正方形（宽=列宽，高=宽） */
  overflow:hidden;       /* 名字超长时裁切，不撑破方形 */
}
.imv-thumb-card .imv-thumb-icon{
  /* v2.0.1128：方形文件图标容器（替原 emoji，emoji 渲染差异大且常为窄长书脊） */
  width:48px; height:48px; display:flex; align-items:center; justify-content:center;
}
.imv-thumb-card .imv-thumb-name{
  font-size:11px; color:var(--text); max-width:100%; text-align:center;
  word-break:break-all; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
.imv-thumb-remove{
  position:absolute; top:4px; right:4px;
  width:18px; height:18px; border-radius:50%; border:none; background:rgba(0,0,0,.5);
  color:#fff; font-size:12px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center;
}
.imv-thumb-remove:hover{ background:var(--red); }

.imv-manual-scroll{ flex:1; min-height:0; overflow:auto; padding:0 6px 0 0; }
.imv-sec{ margin-bottom:14px; }
.imv-sec-title{
  font-size:13px; font-weight:600; color:var(--text);
  margin-bottom:6px;
  display:flex; align-items:center; gap:8px;
}
.imv-sec-title::before{
  content:''; display:inline-block; width:3px; height:13px;
  background:var(--primary); border-radius:2px;
}
.imv-grid{
  display:grid; grid-template-columns:1fr 1fr; gap:8px 12px;
  padding:10px; border:1px solid var(--border); border-radius:8px;
  background:#fcfcfd;
}
.imv-grid > div{ display:flex; flex-direction:column; min-width:0; }
.imv-grid label{ font-size:11px; color:var(--sub); margin:0 0 3px; line-height:1.2; }
.imv-grid input, .imv-grid select, .imv-grid input.ie-combo{
  height:32px; min-height:32px; padding:0 8px; border:1px solid var(--border); border-radius:6px;
  background:#fff; font-size:13px; color:var(--text); width:100%;
  box-sizing:border-box; line-height:normal;
}

.imv-right-title{
  font-size:14px; font-weight:600; color:var(--text);
  padding-bottom:10px; border-bottom:1px solid var(--border); margin-bottom:14px;
  display:flex; align-items:center; gap:8px;
}
.imv-pill{
  display:inline-flex; align-items:center; gap:4px;
  background:#e8f1ff; color:var(--primary);
  padding:2px 10px; border-radius:11px; font-size:12px; font-weight:600;
}
.imv-pill::before{
  content:''; width:3px; height:12px; background:var(--primary); border-radius:2px; display:inline-block;
}
.imv-right-hint{ font-size:11px; color:var(--muted); font-weight:400; }
.imv-right-body{ display:flex; flex-direction:column; gap:14px; }
.imv-field label{ display:block; font-size:12px; color:var(--sub); margin-bottom:5px; }
.imv-select{
  height:34px; padding:0 10px; border:1px solid var(--border); border-radius:6px;
  background:#fff; font-size:13px; color:var(--text); width:100%;
}
.imv-quick{ margin-top:6px; display:flex; flex-wrap:wrap; align-items:center; gap:6px; font-size:11px; color:var(--sub); }
.imv-quick-label{ color:var(--muted); }
.imv-quick-tag{
  display:inline-flex; align-items:center; gap:4px;
  padding:2px 8px; border:1px solid var(--border); border-radius:11px;
  background:#fafbfc; color:var(--text); cursor:pointer; font-size:11px;
  transition:all .15s;
}
.imv-quick-tag:hover{ border-color:var(--primary); color:var(--primary); }

.imv-footer{
  display:flex; align-items:center; justify-content:space-between;
  padding:12px 20px; border-top:1px solid var(--border); background:#fcfcfd;
}
.imv-help-btn{
  width:34px; height:34px; border-radius:50%; border:none;
  background:var(--primary); color:#fff; font-size:18px; font-weight:700;
  cursor:pointer; box-shadow:0 2px 8px rgba(26,92,255,.32);
  transition:transform .15s;
}
.imv-help-btn:hover{ transform:scale(1.05); }
.imv-footer-right{ display:flex; gap:10px; }

.modal-xl{ width:calc(100vw - 80px); }

/* 导入简历下拉菜单 */
.import-dropdown{ position:relative; display:inline-block; }
.import-menu{
  display:none; position:absolute; top:calc(100% + 6px); right:0; z-index:var(--z-dropdown);
  min-width:180px; padding:4px 0;
  background:#fff; border:1px solid var(--border); border-radius:8px;
  box-shadow:0 4px 16px rgba(0,0,0,.12);
}
.import-menu.show{ display:block; }
.import-item{
  padding:9px 14px; font-size:13px; cursor:pointer;
  color:var(--text); transition:background .15s;
}
.import-item:hover{ background:#f2f6ff; }
.import-item:first-child{ border-radius:7px 7px 0 0; }
.import-item:last-child{ border-radius:0 0 7px 7px; }
/* 顶部搜索栏（嵌入顶栏 header 内） */
.topbar-search{
  display:flex; gap:6px; align-items:center; flex:1;
  max-width:420px; margin:0 16px;
}
.topbar-search input{
  flex:1; padding:7px 12px; border:1px solid var(--border); border-radius:7px;
  font-size:13px; font-family:inherit; background:#fff; min-width:0;
}
.topbar-search input:focus{ outline:none; border-color:var(--primary); box-shadow:0 0 0 2px rgba(26,92,255,.15); }
.search-bar-top .btn-sm{ padding:8px 16px; font-size:13px; white-space:nowrap; }
.filters{ display:none; }
.cand-list{ flex:1; overflow-y:auto; padding:10px 10px; }
/* v2.0.1058：左 14→10（与漏斗/筛选三线对齐，整体贴近职位分类栏） */

/* 主界面批量流转工具栏（全选下列简历 + 目标阶段 + 批量流转） */
.batch-toolbar{
  display:flex; align-items:center; gap:12px;
  padding:6px 24px; margin:0;
  background:var(--panel); border:1px solid var(--border); border-radius:8px;
  min-height:34px;
  /* v2.0.1065：提层——简历列表滚动到筛选栏下方时，阴影不被 .cand-list 内容遮挡 */
  position:relative; z-index:5;
  /* v2.0.1067：下向阴影采用「标准」档（用户从 demo 选定）：0 4px 12px rgba(0,0,0,.08) */
  box-shadow:0 4px 12px rgba(0,0,0,.08);
  /* v2.0.1063：左边框左移到 .list-panel 边缘（margin-left 10→0，比漏斗更靠左），
     内部文字保持原位（padding-left 14→24 抵消）；margin-top 8→0（贴近漏斗 10px） */
}
/* v1.6.345：筛选按钮并入批量工具栏，与全选框同行、同设计语言（边框+圆角） */
.filter-slot{
  display:flex; align-items:center; gap:10px;
}
.filter-slot .excel-multi-root{
  width:auto; max-width:none;
}
/* v1.6.386：投递时间筛选器 — 统一样式与其他筛选器一致 */
.filter-time-select{
  padding:7px 8px; border:1px solid var(--border); border-radius:8px;
  background:#fff; font-size:13px; color:var(--ink); cursor:pointer;
  outline:none; height:34px;
}
.filter-time-select:focus{ border-color:var(--primary); box-shadow:0 0 0 2px rgba(26,92,255,.08); }
.filter-slot .excel-multi-trigger{
  width:auto; min-width:78px;
  padding:6px 10px; gap:6px;
  background:#fff; border:1px solid var(--border); border-radius:8px;
  font-size:13px; color:var(--text); box-shadow:none;
}
.filter-slot .excel-multi-trigger:hover{
  border-color:var(--primary); background:rgba(26,92,255,.04);
}
.filter-slot .excel-multi-label{
  flex:0 0 auto; color:var(--text); font-weight:500;
}
.filter-slot .excel-multi-label.has-sel{
  color:var(--primary); font-weight:600;
}
.filter-slot .excel-multi-arrow{
  font-size:10px; color:var(--sub); margin-left:2px;
}
.filter-slot .excel-multi-panel{
  top:36px !important; left:0 !important;
  min-width:180px; max-width:260px;
  border-radius:10px; box-shadow:0 4px 16px rgba(0,0,0,.08);
}
.filter-slot .excel-multi-search input{
  border-radius:6px;
}
.filter-slot .excel-multi-footer{
  display:none;
}
.batch-toolbar-row{ display:flex; align-items:center; gap:12px; flex:1; }
.batch-toolbar-idle .batch-toolbar-tip{ margin-left:10px; color:var(--sub); font-size:12px; }
.batch-toolbar-active b{ color:var(--primary); margin:0 4px; }
.batch-select-all-wrap{ display:inline-flex; align-items:center; gap:8px; cursor:pointer; }
.batch-toolbar-actions{ display:flex; align-items:center; gap:10px; margin-left:auto; }
.batch-toolbar-actions label{ font-size:13px; color:var(--text); display:inline-flex; align-items:center; gap:6px; }
.batch-toolbar-hint{ font-size:12px; color:var(--sub); }
.batch-stage-select{
  padding:6px 10px; border:1px solid var(--border); border-radius:6px;
  background:#fff; font-family:inherit; font-size:13px; min-width:120px;
}
/* 批量推进下一节点按钮：复用卡片底部 cc-act-btn 样式，直接点击生效 */

/* 候选人卡片选中态 + 复选框（复选框与姓名同行，位于姓名左侧） */
.cc-check,
.batch-select-all-wrap{ display:inline-flex; align-items:center; justify-content:center; cursor:pointer; flex:none; }
.cc-check-input,
#batchSelectAll{
  width:18px; height:18px; cursor:pointer;
  accent-color:var(--primary);   /* 选中时勾选为蓝色 */
}
/* 未选中状态：缩小 25%（18→14px）+ 透明度 0.35 + 灰度滤镜，几乎不可见 */
.cc-check-input:not(:checked),
#batchSelectAll:not(:checked){
  width:14px; height:14px; opacity:.35;
  filter: grayscale(1);
}
.cand-card.selected{ box-shadow:0 0 0 2px var(--primary) inset; }   /* 仅蓝色边框，无背景，无放大动画 */

.cand-list-footer{
  text-align:center; padding:18px 14px; font-size:12px; color:var(--sub);
  display:flex; align-items:center; justify-content:center; gap:8px;
}
.cand-list-footer .spinner{
  display:inline-block; width:14px; height:14px;
  border:2px solid var(--border); border-top-color:var(--primary);
  border-radius:50%; animation:spin .8s linear infinite;
}

/* 招聘漏斗条（Moka 风格：横向阶段计数 + 点击筛选） */
.funnel-bar{
  display:flex; gap:0; background:var(--panel);
  border:1px solid var(--border); border-radius:10px;
  margin:10px 10px 10px; overflow:hidden; user-select:none;
  /* v2.0.1061：margin-top 0→6（用户指定微调，与职位分类栏顶微留 6px） */
}
.fn-item{
  flex:1; min-width:0; text-align:center; padding:10px 6px;
  cursor:pointer; transition:.18s; border-right:1px solid var(--border);
  display:flex; flex-direction:column; align-items:center; gap:2px;
}
.fn-item:last-child{ border-right:none; }
.fn-item:hover{ background:#f5f8ff; }
.fn-item.active{
  background:var(--primary); color:#fff;
  box-shadow:inset 0 -3px 0 0 rgba(0,0,0,.08);
}
.fn-count{ font-size:20px; font-weight:700; line-height:1.3; }
.fn-label{ font-size:11.5px; opacity:.75; white-space:nowrap; }
.fn-item.active .fn-label{ opacity:.9; }
.fn-item.active .fn-count{ color:#fff; }
/* 淘汰阶段用红色高亮 */
.fn-item.danger.active{ background:var(--red); }
.fn-item.danger .fn-count{ color:var(--red); }
.fn-item.danger.active .fn-count{ color:#fff; }
/* 归档阶段用深灰色 */
.fn-item.archive .fn-count{ color:#5a6268; }
.fn-item.archive.active{ background:#5a6268; }
.fn-item.archive.active .fn-count{ color:#fff; }
.cand-card{
  background:var(--panel); border:1px solid var(--border); border-radius:10px;
  padding:13px 15px 42px 15px; margin-bottom:10px; cursor:pointer;
  position:relative;
}
.cand-card:hover{ border-color:var(--border); }
.cand-card.active{ border-color:var(--primary); }
.cc-top{ display:flex; align-items:center; gap:8px; margin-bottom:7px; }
.cc-name{ font-size:15px; font-weight:700; }
.cc-meta{ color:var(--sub); font-size:12px; }
.cc-tags{ display:flex; gap:6px; flex-wrap:wrap; margin-top:2px; }
.tag{ font-size:11px; padding:2px 8px; border-radius:5px; background:var(--bg); color:var(--sub); }
.tag.plat{ background:#eef3ff; color:var(--primary); }
.tag.s985{ background:#fff1e8; color:var(--orange); }
.tag.s211{ background:#e8f7ee; color:var(--green); }
.cc-line{ font-size:13px; color:var(--text); margin-top:6px; }
.cc-foot{ display:flex; justify-content:space-between; align-items:center; margin-top:8px; }

/* 列表卡片悬浮按钮：仅在悬停时显示（纯 CSS，0 JS 开销） */
.cc-actions{
  position:absolute; right:50%; bottom:10px; transform:translateX(50%);
  display:flex; gap:6px;
  opacity:0; pointer-events:none;
  transition:opacity .12s ease;
}
.cand-card:hover .cc-actions,
.cand-card.active .cc-actions{
  opacity:1; pointer-events:auto;
}
.cc-act-btn{
  font-size:12px; padding:5px 12px; border-radius:4px; cursor:pointer;
  border:1px solid transparent; font-weight:500;
  transition:background .12s, border-color .12s;
}
.cc-act-next{
  background:#1a5cff; color:#fff; border-color:#1a5cff;
}
.cc-act-next:hover{ background:#0e4ad9; }
.cc-act-elim{
  background:#fff; color:#c62828; border-color:#ef9a9a;
}
.cc-act-elim:hover{ background:#ffebee; }
.status-pill{ font-size:11px; padding:2px 9px; border-radius:11px; }
.st-新简历{ background:#eef3ff; color:var(--primary); }
.st-已邀约{ background:#fff1e8; color:var(--orange); }
.st-已面试{ background:#e8f7ee; color:var(--green); }
.st-已淘汰{ background:#f2f3f5; color:var(--sub); }
.cc-time{ font-size:12px; color:var(--muted); }

/* 简历详情面板（同页面内嵌覆盖层，点击列表卡片后显示） */
.detail-panel{
  display:none; position:fixed; top:0; left:0; right:0; bottom:0;
  z-index:var(--z-detail); background:var(--bg); flex-direction:column;
}
/* v1.6.502：全屏独立页面模式（/c/<id>）——顶部留空给返回按钮（缩窄）*/
.detail-panel.detail-page-mode{
  padding-top:14px;
}
.detail-panel.detail-page-mode .detail-body{
  max-width:1100px; margin:0 auto; width:100%;
}

/* 面试日历面板：全屏覆盖整个页面（包括顶部工具栏） */
.calendar-panel{
  display:none; position:fixed; top:0; left:0; right:0; bottom:0;
  z-index:var(--z-detail); background:var(--bg); flex-direction:column;
}
/* 日历顶部工具条（标题 + 关闭按钮） */
.cal-topbar{
  flex-shrink:0;
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 20px;
  border-bottom:1px solid var(--border);
  background:var(--bg);
}
.cal-topbar-title{ font-size:16px; font-weight:700; color:var(--text); }
.cal-topbar .dh-icon-btn{ width:36px; height:36px; border-radius:10px; }

/* 顶部 header：头像 + 姓名 + 状态标签 + 摘要行 + 关闭 */
.detail-header{ display:flex; flex-direction:column; gap:8px; padding:12px 20px;
  border-bottom:1px solid var(--border); flex-shrink:0; }
.dh-top-row{ display:flex; align-items:center; gap:12px; }
.dh-avatar{ width:40px; height:40px; border-radius:10px; flex:none;
  background:linear-gradient(135deg,var(--primary),#4d82ff); color:#fff;
  font-size:18px; font-weight:700; display:flex; align-items:center; justify-content:center; }
.dh-name-row{ flex:1; display:flex; align-items:center; gap:10px; min-width:0; }
.dh-top-actions{ flex:none; display:flex; align-items:center; gap:10px; }
.dh-share-btn{
  display:inline-flex; align-items:center; gap:5px;
  padding:6px 14px; height:36px; border-radius:8px;
  font-size:13px; font-family:inherit; font-weight:500;
  background:#fff; color:var(--primary); border:1px dashed var(--primary);
  cursor:pointer; transition:all .15s; white-space:nowrap;
}
.dh-share-btn:hover{ background:#eef3ff; border-style:solid; box-shadow:0 1px 4px rgba(26,92,255,.22); }
.dh-share-btn svg{ width:16px; height:16px; }
.dh-name{ font-size:22px; font-weight:700; }
.contact-dup-tag{
  cursor:pointer;
  background:#e8f0fe; color:#1967d2; border-color:#a8c7fa;
  transition:background .15s;
}
.contact-dup-tag:hover{ background:#d2e3fc; }

/* ===== 应用菜单按钮（九宫格）+ 下拉菜单 ===== */
.apps-menu-wrap{ position:relative; }
.apps-menu-btn{
  display:flex; align-items:center; justify-content:center;
  width:36px; height:36px; border-radius:10px; cursor:pointer;
  background:#fff; color:var(--primary); border:1px solid var(--primary);
  box-shadow:0 1px 3px rgba(26,92,255,.18);
  transition:background .15s, box-shadow .15s;
}
.apps-menu-btn:hover{ background:#eef3ff; border-color:var(--primary); box-shadow:0 1px 4px rgba(26,92,255,.28); }
.apps-menu-btn svg{ display:block; fill:var(--primary); }
.apps-menu{
  position:absolute; right:0; top:calc(100% + 8px);
  width:280px; background:#fff; border:1px solid #d0d8e8;
  border-radius:10px; box-shadow:0 8px 24px rgba(0,0,0,0.10);
  padding:6px; z-index:1000;
}
.apps-menu-item{
  display:grid; grid-template-columns:36px 1fr auto;
  align-items:center; gap:10px;
  padding:10px 12px; border-radius:6px; cursor:pointer;
  transition:background .12s;
}
.apps-menu-item:hover{ background:#f0f5ff; }
.apps-menu-icon{ font-size:20px; text-align:center; }
.apps-menu-label{ font-size:14px; font-weight:500; color:#333; }
.apps-menu-hint{ font-size:11px; color:#999; }
.apps-menu-hint input{
  width:48px; padding:1px 4px; font-size:12px;
  border:1px solid #d0d8e8; border-radius:4px; text-align:center;
  margin:0 2px;
}
.apps-menu-divider{ height:1px; background:#eee; margin:4px 8px; }
/* 左-右分栏：左侧月历 + 右侧面试详情 */
.cal-split{ flex:1; display:flex; overflow:hidden; background:var(--bg); }

/* 左侧月历 */
.cal-month{
  width:320px; flex-shrink:0; display:flex; flex-direction:column;
  padding:18px 18px 14px; border-right:1px solid var(--border);
  background:var(--panel); overflow-y:auto;
}
.cal-month-header{
  display:flex; align-items:center; justify-content:space-between;
  margin-bottom:16px;
}
/* v2.0.1031：日历标题顶部留白，避免贴着面板边 */
.cal-month-title{
  font-size:18px; font-weight:700; color:var(--text);
  padding:8px 0 4px;   /* 顶部留白 */
}
.cal-month-arrows{ display:flex; gap:8px; }
.cal-today-btn{
  align-self:flex-start; margin-bottom:12px; padding:5px 12px;
  border:1px solid var(--border); border-radius:6px; background:var(--bg);
  color:var(--primary); font-size:12px; cursor:pointer; transition:.15s;
}
.cal-today-btn:hover{ background:#f0f5ff; border-color:#a8c7fa; }
.cal-arrow{
  width:28px; height:28px; display:flex; align-items:center; justify-content:center;
  border:1px solid var(--border); border-radius:6px; background:var(--bg);
  color:var(--text); cursor:pointer; font-size:12px; transition:.15s;
}
.cal-arrow:hover{ background:#f0f5ff; border-color:#a8c7fa; }
.cal-weekdays{
  display:grid; grid-template-columns:repeat(7,1fr); gap:4px;
  margin-bottom:8px; text-align:center;
}
.cal-weekdays span{
  font-size:13px; color:#999; font-weight:500;
}
.cal-grid{
  display:grid; grid-template-columns:repeat(7,1fr); gap:4px;
}
.cal-cell{
  aspect-ratio:3/4; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px;
  border-radius:8px; cursor:pointer; transition:.15s; position:relative;
  font-size:14px; color:var(--text); background:transparent;
}
.cal-cell:hover{ background:#f5f8ff; }
.cal-cell-other{ color:#bbb; }
.cal-cell-today{ font-weight:700; color:var(--primary); }
.cal-cell-selected{ background:#1a5cff; color:#fff; }
.cal-cell-selected:hover{ background:#1a5cff; }
.cal-cell-selected.cal-cell-other{ color:#fff; }
.cal-cell-num{ z-index:1; line-height:1; font-size:14px; }
/* v2.0.1032：右上角场次小圆点已删除（用户反馈多余），仅保留徽章 */
/* v2.0.1031：场次徽章（圆角胶囊，按密度变色） */
.cal-cell-count{
  font-size:11px; line-height:1; font-weight:600;
  padding:2px 6px; border-radius:8px; min-width:16px; text-align:center;
  background:rgba(26,92,255,.12); color:#1a5cff;
}
/* 中等热度：3-5 场 */
.cal-cell-count.cal-count-warm{
  background:rgba(26,92,255,.22); color:#1a5cff;
}
/* 高热度：6+ 场（深红橙强调） */
.cal-cell-count.cal-count-hot{
  background:rgba(217,72,72,.12); color:#d94848;
  box-shadow:0 0 0 1px rgba(217,72,72,.18);
}
.cal-cell-selected .cal-cell-count{
  background:rgba(255,255,255,.25); color:#fff;
  box-shadow:none;
}

/* 右侧面试详情列表 */
.cal-day-list{
  flex:1; min-width:0; overflow-y:auto; padding:18px 22px;
}
.cal-list-title{
  font-size:14px; font-weight:600; color:#333; margin-bottom:12px;
  padding-bottom:6px; border-bottom:1px solid var(--border);
}
.cal-item{
  display:flex; gap:14px; padding:14px 16px; margin-bottom:10px;
  background:var(--panel); border:1px solid var(--border); border-left:none;
  border-radius:10px; cursor:pointer; transition:.15s;
  box-shadow:0 1px 2px rgba(0,0,0,.04);
}
.cal-item:hover{ background:#f8faff; border-color:#c4d8ff; box-shadow:0 4px 12px rgba(26,92,255,.10); transform:translateY(-1px); }
.cal-item-time{
  flex:none; font-size:18px; font-weight:700; color:#1a5cff;
  min-width:60px; text-align:center;
}
.cal-item-body{ flex:1; min-width:0; }
.cal-item-head{ display:flex; align-items:center; gap:8px; margin-bottom:4px; }
.cal-item-head b{ font-size:14px; }
.cal-item-round{ font-size:11px; padding:1px 6px; background:#e3f2fd; color:#1565c0; border-radius:8px; }
.cal-item-form{ font-size:11px; padding:1px 6px; background:#f5f5f5; color:#666; border-radius:8px; }
.cal-item-meta{ font-size:12px; color:#666; line-height:1.5; }
.cal-item-loc{ font-size:12px; color:#1a5cff; margin-top:4px; }
.cal-item-del{
  margin-left:auto; background:transparent; border:none; cursor:pointer;
  color:#bbb; font-size:14px; padding:2px 6px; border-radius:4px;
  opacity:0.6; transition:.15s;
}
.cal-item-del:hover{ opacity:1; background:#fee; color:#c62828; }
.cal-empty{
  text-align:center; color:#999; font-size:14px; padding:60px 0;
  font-style:italic;
}
.contact-dup-card{
  padding:12px 14px; margin:8px 0;
  border:1px solid #e0e0e0; border-left:4px solid #1a5cff; border-radius:6px;
  background:#fafbff; transition:background .15s;
}
.contact-dup-card:hover{ background:#f0f5ff; }
.contact-dup-head{
  display:flex; align-items:center; gap:10px; margin-bottom:6px;
}
.contact-dup-head b{ font-size:15px; color:#1967d2; }
.contact-dup-stage{
  font-size:11px; padding:2px 8px; background:#eef3ff; color:#1a5cff;
  border-radius:10px; font-weight:500;
}
.contact-dup-id{
  margin-left:auto; font-size:11px; color:#999; font-family:monospace;
}
.contact-dup-body{
  font-size:13px; color:#333; line-height:1.7;
}
.contact-dup-body .lbl{ color:#888; margin-right:4px; font-size:12px; }
.contact-dup-name-link{ text-decoration:none; }
.contact-dup-name-link:hover b{ text-decoration:underline; color:#1a5cff; }
.contact-dup-pos-link{ color:#1a5cff; text-decoration:none; font-weight:500; }
.contact-dup-pos-link:hover{ text-decoration:underline; }

/* 备注聚合：跨简历来源标签 */
.note-src-link{ font-size:11px; color:#1a5cff; margin-left:6px; text-decoration:none; font-weight:normal; }
.note-src-link:hover{ text-decoration:underline; }

/* tab 徽章（数字） */
.tab-badge{
  display:inline-block; min-width:18px; padding:1px 6px; margin-left:4px;
  background:#ff5252; color:#fff; border-radius:9px; font-size:11px;
  font-weight:600; text-align:center;
}
.dh-summary{ color:var(--sub); font-size:13px; margin-top:7px; line-height:1.6; word-break:break-all; }
.dh-summary .sep{ margin:0 8px; color:var(--muted); }
.dh-right{ flex:none; display:flex; align-items:center; gap:8px; }
/* 全屏覆盖型按钮（详情面板 / 面试日历 / 数据看板 / 提醒视图右上角的退出按钮）
   规范（图1 360浏览器菜单风格）：
   - 36×36 圆角矩形（10px）
   - 白底 + 1px 蓝色边框 + 蓝色 X 图标
   - hover 浅蓝背景 + 蓝色光晕
   - 用于所有"单独弹出的页面"的退出按钮（必须配 ESC 快捷键） */
.dh-icon-btn{
  width:36px; height:36px; border-radius:10px; padding:0;
  background:#fff; border:1px solid var(--primary);
  display:inline-flex; align-items:center; justify-content:center;
  cursor:pointer; color:var(--primary); transition:all .15s; font-size:14px;
  position:relative; box-shadow:0 1px 2px rgba(26,92,255,.08);
}
.dh-icon-btn:hover{ background:#eef3ff; box-shadow:0 1px 4px rgba(26,92,255,.22); }
.dh-icon-btn[style*="color:#e04545"]:hover,
.dh-icon-btn[style*="color:var(--red"]:hover{ background:#fff2f2; box-shadow:0 1px 4px rgba(224,69,69,.18); }
.dh-icon-btn:active{ background:#dde6ff; }
.dh-icon-btn .bi-icon{
  filter:none; opacity:1; color:inherit; font-size:16px; min-width:0;
  background:none;
}

/* 垃圾桶 CSS 图标 */
.trash-icon{
  width:13px; height:16px; display:inline-block; position:relative;
  top:-1px;
}
.trash-icon::before{  /* 盖子（比桶宽一点） */
  content:''; position:absolute;
  top:0; left:-1px; right:-1px; height:3px;
  background:currentColor; border-radius:2px;
}
.trash-icon::after{  /* 桶身 */
  content:''; position:absolute;
  top:3px; left:1px; right:1px; bottom:0;
  border:1.5px solid currentColor; border-top:none;
  border-radius:0 0 2px 2px;
}

/* 详情页头部三个徽章统一规格（尺寸/字体/行高）——v2.0.1087：高度 24→28px */
.badge-unified, .pos-badge, .pos-badge-inner, .stage-pill, .contact-dup-tag{
  display:inline-flex; align-items:center; justify-content:center;
  box-sizing:border-box; min-height:28px;
  padding:5px 12px; border-radius:6px;
  font-size:13px; font-weight:500; line-height:1; letter-spacing:0;
  border:1px solid transparent; white-space:nowrap;
}

/* 岗位标签（详情头部，姓名右侧）——v2.0.1084：白底 + 浅灰边框（非透明），职位名深色 */
.pos-badge{
  cursor:pointer;
  background:#fff; color:var(--text); border-color:var(--border); transition:background .15s;
}
.pos-badge:hover{ background:#f5f6f8; }
.pos-badge.pos-empty{ background:#f5f5f5; color:#999; border-color:#e0e0e0; }
.pos-arrow{ font-size:10px; margin-left:2px; opacity:.6; }

/* 阶段 pill（统一尺寸/字体，与 pos-badge/contact-dup-tag 一致） */
.stage-pill{
  background:#f0f0f0; color:#555; border-color:transparent;
}
.stage-pill.tag-blue   { background:#e3f2fd; color:#1565c0; border-color:#bbdefb; }
.stage-pill.tag-cyan   { background:#e0f7fa; color:#00838f; border-color:#b2ebf2; }
.stage-pill.tag-purple { background:#f3e5f5; color:#7b1fa2; border-color:#e1bee7; }
.stage-pill.tag-gold   { background:#fff8e1; color:#ef6c00; border-color:#ffe082; }
.stage-pill.tag-orange { background:#fff3e0; color:#e65100; border-color:#ffcc80; }
.stage-pill.tag-green  { background:#e8f5e9; color:#2e7d32; border-color:#a5d6a7; }
.stage-pill.tag-deep-green{ background:#c8e6c9; color:#1b5e20; border-color:#81c784; }
.stage-pill.tag-red    { background:#ffebee; color:#c62828; border-color:#ef9a9a; }
.stage-pill.tag-gray   { background:#f5f5f5; color:#616161; border-color:#e0e0e0; }
.stage-pill.tag-default{ background:#f0f0f0; color:#555; border-color:#ddd; }

/* 岗位名徽章（在 cc-top 左侧，与 stage pill 同高同字体） */
.stage-pill.pos-name-badge{
  background:#e0f2f1; color:#00695c; border-color:#b2dfdb;
}
/* 未分配岗位徽章（v1.8.832：加深对比度，用户能看清） */
.stage-pill.pos-empty-badge{
  background:#ececec; color:#666; border-color:#d0d0d0;
}

/* 列表卡片内联重复投递标记 */
/* 投递时间浮层 */
.pos-tooltip{
  position:absolute; z-index:var(--z-tooltip); margin-top:4px; padding:8px 12px;
  background:#333; color:#fff; border-radius:6px; font-size:12px; line-height:1.6;
  box-shadow:0 4px 16px rgba(0,0,0,.18); white-space:nowrap; pointer-events:none;
}
.pos-tooltip::before{
  content:''; position:absolute; top:-5px; left:20px;
  width:10px; height:10px; background:#333; transform:rotate(45deg);
}

/* 基础信息行（性别·年龄·手机号·邮箱·学历） */
.dh-basics{ display:flex; flex-wrap:wrap; gap:6px 14px; margin:0 0 0 52px; align-items:center; }
.bi-item{
  font-size:13px; color:var(--sub); white-space:nowrap;
  display:inline-flex; align-items:center;
}
.bi-icon{
  /* 基础信息行图标：浅灰圆底 + 深灰图标，无阴影；emoji 统一灰度化 */
  font-style:normal; font-size:12px; line-height:1;
  color:#6b7280;
  background:#f3f4f6;
  min-width:20px; height:20px; border-radius:50%;
  text-align:center;
  display:inline-flex; align-items:center; justify-content:center;
  filter:grayscale(1);
  margin-right:4px;
}
.bi-icon.bi-email{ font-size:13px; }
/* 「分配到职位」按钮内的图标稍大，间距与按钮文字协调 */
.assign-pos-btn .bi-icon{ font-size:15px; min-width:16px; margin-right:2px; }
/* v1.6.349：基础信息行用竖线分隔各项 */
.bi-item:not(:last-child)::after{
  content:'|';
  margin-left:10px;
  color:#d1d5db;
  font-size:12px;
}

/* v1.8.753：数据看板工具栏按钮（统一简约图标风格，招聘进度/周进度共用） */
.dash-toolbar-btn{
  display:inline-flex; align-items:center; justify-content:center;
  width:32px; height:32px; padding:0;
  background:#fff; color:#5f6368;
  border:1px solid var(--border,#d8d8d8); border-radius:6px;
  cursor:pointer; line-height:1; font-size:0;
}
.dash-toolbar-btn svg{ width:15px; height:15px; pointer-events:none; }
.dash-toolbar-btn:hover{ background:#f7f8fa; border-color:var(--primary,#1a5cff); color:var(--primary,#1a5cff); }
.dash-toolbar-btn:active{ background:#eef1f5; }

/* 分配到职位按钮——v2.0.1085：与职位徽章/阶段徽章统一规格（24px / 13px / 6px 圆角） */
.assign-pos-btn{
  margin-top:0; font-size:13px; font-weight:500; line-height:1;
  padding:3px 12px; min-height:24px; border-radius:6px;
  display:inline-flex; align-items:center; white-space:nowrap;
}
.btn-outline{ background:#fff; color:var(--text); border:1px solid var(--border); }
.btn-outline:hover{ background:#f7f8fa; border-color:var(--primary); color:var(--primary); }

/* 分配到职位下拉面板 */
.assign-pos-panel{
  display:none; position:absolute; z-index:var(--z-assign-pos);
  width:300px; background:#fff; border:1px solid var(--border);
  border-radius:10px; box-shadow:0 8px 32px rgba(0,0,0,.15);
  flex-direction:column; overflow:hidden;
}
.assign-pos-header{
  display:flex; justify-content:space-between; align-items:center;
  padding:10px 14px; border-bottom:1px solid var(--border); font-weight:600; font-size:14px;
}
.assign-pos-close{ background:none; border:none; font-size:16px; cursor:pointer; padding:2px 6px; color:var(--muted); }
.assign-pos-close:hover{ color:var(--text); }
.assign-pos-input{
  width:100%; padding:8px 12px; border:none; border-bottom:1px solid var(--border);
  font-size:13px; font-family:inherit; outline:none; box-sizing:border-box;
}
.assign-pos-input:focus{ border-color:var(--primary); }
.assign-pos-list{
  max-height:240px; overflow-y:auto; padding:4px 0;
}
.assign-pos-item{
  display:flex; justify-content:space-between; align-items:center;
  padding:8px 14px; cursor:pointer; font-size:13px; transition:background .12s;
}
.assign-pos-item:hover{ background:#f5f7ff; }
.assign-pos-item.active{ background:#eef3ff; color:var(--primary); font-weight:600; }
.ap-current{ font-size:11px; background:var(--primary); color:#fff; padding:1px 6px; border-radius:4px; }
.assign-pos-empty{ padding:20px 14px; text-align:center; color:var(--muted); font-size:13px; }
.assign-pos-footer{
  display:flex; justify-content:flex-end; gap:6px; padding:8px 14px;
  border-top:1px solid var(--border); background:#fafbfc;
}

/* 左右分栏：左主内容(~65%) + 右操作栏(35%) */
.detail-split{ flex:1; display:flex; overflow:hidden; }
.detail-id-footer{ padding:6px 20px; font-size:11px; color:#acb5c2; border-top:1px solid var(--border); text-align:right; flex-shrink:0; }
.detail-main{ flex:1; min-width:0; display:flex; flex-direction:column; background:var(--panel); overflow:hidden; }
.detail-side{ width:336px; flex-shrink:0; border-left:1px solid var(--border);
  background:var(--bg); overflow-y:auto; padding:18px 16px;
  scrollbar-width:none; -ms-overflow-style:none; }
.detail-side::-webkit-scrollbar{ display:none; }
.side-card{ background:var(--panel); border:1px solid var(--border); border-radius:10px;
  padding:14px 14px 16px; margin-bottom:14px; }
.side-title{ font-size:13px; font-weight:700; color:var(--text); margin-bottom:12px; }
.side-btn{ display:block; width:100%; text-align:left; padding:10px 12px; margin-bottom:8px;
  border:1px solid var(--border); border-radius:9px; background:var(--panel); color:var(--text);
  font-size:13.5px; cursor:pointer; font-family:inherit; transition:.15s; }
.side-btn:hover{ border-color:var(--primary); color:var(--primary); background:#f5f8ff; }
.side-btn.btn-primary{ background:var(--primary); color:#fff; border-color:var(--primary); }
.side-btn.btn-primary:hover{ background:var(--primary-d); color:#fff; }
.side-btn.danger{ color:var(--red); border-color:#ffcdcd; }
.side-btn.danger:hover{ background:#fff2f2; color:var(--red); border-color:var(--red); }
/* v1.8.909~911：详情页侧栏「面试评价」按钮——已恢复与「安排面试」等按钮完全一致（不再特殊配色） */
.side-btn.hl{ }
.side-info{ font-size:13px; line-height:1.95; }
.side-info .si-row{ display:flex; justify-content:space-between; gap:12px; padding:3px 0; }
.side-info .si-lb{ color:var(--sub); flex:none; }
.side-info .si-vl{ text-align:right; word-break:break-all; }
.detail-body{ padding:18px 22px; }
/* tab 内容区内的 detail-body 顶部留白减半，使 tab 标题与第一个 sec-title 更贴近 */
.tab-pane .detail-body{ padding-top:8px; }
.tab-pane .detail-body .sec-title:first-child{ margin-top:10px; }
.info-grid{ display:grid; grid-template-columns:1fr 1fr; gap:12px 16px; margin-bottom:8px; }
.info-item .lb{ font-size:11px; color:var(--sub); margin-bottom:2px; }
.info-item .vl{ font-size:14px; word-break:break-all; }
.sec-title{ font-size:13px; font-weight:700; color:var(--sub);
  margin:20px 0 10px; padding-bottom:6px; border-bottom:1px solid var(--border); }
.eval-sec-head{ display:flex; align-items:center; justify-content:space-between; gap:8px; }
.eval-sec-head .sec-label{ flex:1; }
.eval-print-btn{ display:inline-flex; align-items:center; gap:4px; padding:4px 12px; font-size:13px; font-family:inherit; border:1px solid var(--primary); border-radius:6px; background:#fff; color:var(--primary); cursor:pointer; transition:all .15s; flex:none; }
.eval-print-btn:hover{ background:var(--primary); color:#fff; }
/* v1.8.861：手机端隐藏打印按钮（打印仅适合电脑端） */
@media (max-width:768px){
  .eval-print-btn{ display:none !important; }
}
.field-row{ display:flex; gap:8px; align-items:center; margin-bottom:10px; }
.field-row select{ flex:1; padding:8px 10px; border:1px solid var(--border);
  border-radius:7px; font-family:inherit; font-size:13px; }
.actions-row{ display:flex; gap:8px; margin:14px 0 4px; }
.actions-row .btn{ flex:1; }
.note-box textarea{
  width:100%; border:1px solid var(--border); border-radius:8px; padding:10px;
  font-family:inherit; font-size:13px; resize:vertical; min-height:60px;
}
.note-add-row{ display:flex; justify-content:flex-end; margin-top:8px; }
.note-item{
  background:var(--bg); border-radius:8px; padding:10px 12px; margin-top:10px;
  font-size:13px; line-height:1.6; position:relative;
}
.note-item .nt-time{ font-size:11px; color:var(--muted); margin-top:5px; }
.note-item .nt-del{ position:absolute; top:8px; right:10px; color:var(--muted);
  cursor:pointer; font-size:12px; }
.note-item .nt-del:hover{ color:var(--red); }
.note-sys{ color:var(--sub); font-style:italic; }

/* 右下角侧边栏备注 */
.side-note-count{
  display:inline-block; margin-left:4px; font-size:11px; color:#888; font-weight:400;
}
.side-note-list{
  max-height:240px; overflow-y:auto; margin-bottom:8px;
}
.side-note-item{
  padding:6px 8px; margin-bottom:4px;
  border-left:none; background:#f8faff; border-radius:3px;
}
.side-note-meta{ font-size:10px; color:#888; margin-bottom:2px; display:flex; justify-content:space-between; align-items:center; gap:6px; }
.side-note-meta .note-actions{ margin-left:0; }
.side-note-text{ font-size:12px; color:#333; line-height:1.5; word-break:break-word; white-space:pre-wrap; }
.side-note-empty{ font-size:12px; color:#aaa; text-align:center; padding:12px 0; font-style:italic; }
.side-note-input{
  width:100%; box-sizing:border-box;
  border:1px solid #d0d8e8; border-radius:6px;
  padding:8px 10px; font-size:13px; line-height:1.5;
  background:#fff; color:#333;
  resize:vertical; min-height:60px; max-height:160px;
  transition:border-color .15s, box-shadow .15s;
  font-family:inherit;
}
.side-note-input:focus{
  outline:none; border-color:#1a5cff;
  box-shadow:0 0 0 3px rgba(26,92,255,0.10);
}
.side-note-input::placeholder{ color:#b0b8c1; font-style:italic; }

/* v1.6.376：右下角保存备注按钮——右下对齐，圆角主色按钮 */
.side-note-actions{
  display:flex; justify-content:flex-end;
  margin-top:8px;
}
.side-note-save-btn{
  padding:6px 16px; font-size:12px; font-weight:500;
}

/* CRM tab：保存提醒按钮（与侧边栏「保存备注」同样的小尺寸） */
.rem-save-btn{
  padding:6px 16px; font-size:12px; font-weight:500;
}

/* tab 区域内的备注列表（与侧边栏区分） */
.note-list{ display:flex; flex-direction:column; gap:8px; }
.note-actions{
  margin-left:auto; display:inline-flex; gap:4px;
}
.note-actions button{
  border:none; background:transparent; cursor:pointer; padding:2px 4px;
  color:#888; font-size:12px; border-radius:3px;
}
.note-actions button:hover{ background:#f0f0f0; color:#1a5cff; }
.note-time{ color:#999; font-size:11px; font-weight:400; margin-left:4px; }
.resume-text{ font-size:12.5px; color:#4e5969; line-height:1.7; white-space:pre-wrap;
  max-height:260px; overflow-y:auto; background:var(--bg); border-radius:8px; padding:12px; }

/* 原始简历 tab：完整展示区（含超链接） */
.orig-resume-host{ flex:1; min-height:0; }
.orig-section-title{ font-size:14px; font-weight:600; color:var(--ink,#37352f); margin:14px 0 8px; }
/* v1.8.749：原始 HTML 简历打印按钮（深色工具栏风格，对齐浏览器原生 PDF 阅读器工具栏） */
/* v1.8.760：打印按钮统一 dh-icon-btn 风格（白底蓝边框圆角） */
.orig-print-btn{
  display:inline-flex; align-items:center; justify-content:center;
  width:36px; height:36px; border-radius:10px; padding:0;
  background:#fff; border:1px solid var(--primary,#1a5cff);
  color:var(--primary,#1a5cff); cursor:pointer;
  transition:all .15s; font-size:14px;
}
.orig-print-btn:hover{ background:#eef3ff; box-shadow:0 1px 4px rgba(26,92,255,.22); }
/* v1.8.748→v1.8.760：下载按钮统一 dh-icon-btn 风格（白底蓝边框圆角） */
.orig-download-btn{
  display:inline-flex; align-items:center; justify-content:center;
  width:36px; height:36px; border-radius:10px; padding:0;
  background:#fff; border:1px solid var(--primary,#1a5cff);
  color:var(--primary,#1a5cff); cursor:pointer;
  transition:all .15s; font-size:15px;
}
.orig-download-btn:hover{ background:#eef3ff; box-shadow:0 1px 4px rgba(26,92,255,.22); }
/* v1.8.752：基本信息 tab 底部「只显示最新一份简历」的标识 */
.orig-latest-label{
  font-size:12px; color:var(--text-2,#8a8a8a); margin:2px 0 8px;
}
.orig-latest-label b{ color:var(--text,#222); font-weight:600; }
.orig-full-frame{
  width:100%; min-height:600px; border:1px solid var(--border);
  border-radius:10px; background:#fff; box-shadow:0 1px 4px rgba(0,0,0,.04);
}
.att-grid{ display:flex; flex-wrap:wrap; gap:8px; margin:0 0 10px; }
.att-link{
  display:inline-flex; align-items:center; gap:4px; padding:5px 10px;
  background:var(--bg); border:1px solid var(--border); border-radius:6px;
  font-size:12px; color:var(--sub); text-decoration:none; max-width:280px;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.att-link:hover{ color:var(--primary); border-color:var(--primary); background:#fff; }

/* 弹窗 —— z-index 必须高于 .detail-panel(1000) 和 .assign-pos-panel(1100)，否则在详情面板里点击弹窗会被遮住 */
.modal-mask{ position:fixed; inset:0; background:rgba(0,0,0,.4);
  display:none; align-items:center; justify-content:center; z-index:var(--z-modal); }
.modal-mask.show{ display:flex; }
/* 统一弹窗设计语言（图1 360浏览器菜单风格）：
   圆角 10px / 柔和阴影 0 6px 28px rgba(0,0,0,.12) / 无明显边框 */
.modal{ background:var(--panel); border-radius:10px; padding:24px; width:400px;
  box-shadow:0 6px 28px rgba(0,0,0,.12); }
/* v1.6.559：弹窗头——标题左 + ×按钮右上（flex space-between），符合设计规范 */
.modal-head{ display:flex; align-items:center; justify-content:space-between;
  margin:0 0 14px; padding-bottom:10px; border-bottom:1px solid var(--border,#eee); }
.modal-head .dh-icon-btn{ flex:none; }
.modal-lg{ width:600px; max-height:82vh; overflow-y:auto; border-radius:10px; }
/* 全屏弹窗（原始简历） */
.modal-fullscreen{ width:90vw; height:85vh; max-width:1400px; padding:0; overflow:hidden; display:flex; flex-direction:column; border-radius:10px; }
.modal-fullscreen .modal-title{
  display:flex; align-items:center; padding:16px 22px; border-bottom:1px solid var(--border);
  margin:0; font-size:16px; flex-shrink:0;
}
.orig-modal-body{ display:flex; flex-direction:column; flex:1; min-height:0; overflow-y:auto; padding:16px 22px; }
.orig-frame-full{ height:calc(85vh - 140px); min-height:500px; }
.modal-title{ font-size:17px; font-weight:700; margin-bottom:16px; }
.modal label{ display:block; font-size:12px; color:var(--sub); margin:12px 0 5px; }
.modal input, .modal textarea{
  width:100%; padding:9px 11px; border:1px solid var(--border); border-radius:8px;
  font-family:inherit; font-size:13px;
  transition:border-color .15s, box-shadow .15s;
}
.modal input:focus, .modal textarea:focus{
  outline:none; border-color:var(--primary);
  box-shadow:0 0 0 3px rgba(26,92,255,.10);
}
.modal textarea{ resize:vertical; line-height:1.7; }
.channel-hint{ font-size:12.5px; line-height:1.6; padding:10px 12px; border-radius:10px;
  margin-bottom:12px; background:var(--bg); color:var(--sub); }
.channel-hint.ok{ background:#e8f7ee; color:#0a7d2c; }
.channel-hint.relay{ background:#eef3ff; color:#2b52b8; }
.channel-hint.warn{ background:#fff2f2; color:var(--red); }
.channel-warn{ margin-top:6px; color:var(--red); }
.invite-to{ font-size:13px; color:var(--sub); margin-bottom:4px; }
.invite-to input{ width:auto; flex:1; margin-left:6px; display:inline-block; width:70%; }
.modal-actions{ display:flex; gap:10px; justify-content:flex-end; margin-top:20px; }

/* toast —— z-index 需在详情面板之上 */
.toast{ position:fixed; top:70px; left:50%; transform:translateX(-50%);
  background:#1d2129; color:#fff; padding:11px 22px; border-radius:9px;
  font-size:13px; opacity:0; pointer-events:none; transition:.25s; z-index:var(--z-toast); }
.toast.show{ opacity:1; top:80px; }
.toast.err{ background:var(--red); }
.toast.ok{ background:var(--green); }

.loading{ text-align:center; color:var(--muted); padding:40px; }

/* 详情标签（基本信息 / 原始简历）*/
.tabs{ display:flex; gap:6px; padding:0 20px; border-bottom:1px solid var(--border);
  margin-top:14px; flex-shrink:0; background:var(--panel); }
.tab{ background:none; border:none; padding:10px 14px; font-size:13.5px; cursor:pointer;
  color:var(--sub); border-bottom:2px solid transparent; font-family:inherit; }
.tab:hover{ color:var(--text); }
.tab.active{ color:var(--primary); font-weight:600; border-bottom-color:var(--primary); }
.tab-content{ flex:1; min-height:0; display:flex; flex-direction:column; overflow:hidden; }
/* v1.6.265：详情页 tab-pane 顶部 padding 从 2px → 14px，给原始简历 sheet 等内容留出与 tab bar 的呼吸空间 */
.tab-pane{ display:none; padding:14px 20px 12px; flex:1; min-height:0; }
.tab-pane.active{ display:flex; flex-direction:column; overflow-y:auto; }

/* 基本信息 tab 4 字段并排 */
.info-grid-4{ grid-template-columns:repeat(4, 1fr) !important; gap:14px 18px; }

/* 编辑链接 */
.edit-link{ margin-left:10px; font-size:12px; color:var(--primary); background:#eef3ff;
  border:none; border-radius:6px; padding:3px 9px; cursor:pointer; font-family:inherit; }
.edit-link:hover{ background:#dde6ff; }

/* In-place 编辑：详细信息/基本信息 tab 字段网格 */
.ie-grid{
  display:grid; grid-template-columns:repeat(3, 1fr);
  gap:2px 10px; margin-bottom:8px; align-items:stretch;
}
.ie-grid-4{ grid-template-columns:repeat(4, 1fr) !important; }
.ie-cell{
  padding:5px 12px; border-radius:8px; cursor:pointer; box-sizing:border-box;
  transition:background .15s; border:1px solid transparent; min-height:36px;
  display:flex; flex-direction:row; align-items:center; justify-content:flex-start;
}
.ie-cell:hover{ background:#eef3ff; border-color:#d8e3ff; }
.ie-cell.editing{ background:#eef3ff; border-color:var(--primary); padding:6px 10px; cursor:default; }
.ie-cell.ie-readonly{
  cursor:default; background:#fafbfc; border-style:dashed;
  border-color:#e0e3e8; justify-content:center;
}
.ie-cell.ie-readonly:hover{ background:#f5f6f8; border-color:#d8dbe0; }
.ie-cell.ie-readonly .ie-lb{ color:#909399; }
.ie-cell.ie-readonly .ie-vl{ color:#5a6068; }
.ie-cell.ie-readonly .ie-lock{ font-size:10px; opacity:.5; margin-left:2px; }
/* 简历来源 / 导入方式 —— 可输入下拉（combo: input + datalist） */
.ie-combo{
  width:100%; font-size:14px; height:32px; box-sizing:border-box; padding:0 8px;
  border:1px solid var(--border); border-radius:6px; background:var(--panel);
  color:var(--text); font-family:inherit; cursor:text;
}
.ie-combo:focus{ outline:none; border-color:var(--primary); box-shadow:0 0 0 2px rgba(26,92,255,.12); }
.ie-combo::placeholder{ color:var(--muted); }
.ie-cell.ie-select{ cursor:default; }
.ie-cell.ie-select:hover{ background:transparent; border-color:transparent; }
.ie-lb{ font-size:14px; color:var(--sub); height:20px; line-height:20px; flex:0 0 auto; white-space:nowrap; margin-right:16px; }
.ie-vl{ font-size:14px; word-break:break-all; line-height:1.4; flex:1 1 auto; display:flex; align-items:center; }
.ie-vl .ie-empty{ color:#c0c4cc; }
.ie-current-tag{
  display:inline-block;
  background:#f0f9ff;
  color:#1a5cff;
  padding:3px 10px;
  border-radius:4px;
  font-size:13px;
  font-weight:500;
}
.ie-toggle-current:hover{ background:#f5f6f8 !important; }
.ie-input{
  width:100%; font-size:14px; padding:4px 6px; border:1px solid var(--primary);
  border-radius:5px; background:#fff; outline:none; font-family:inherit;
}
.ie-input:focus{ box-shadow:0 0 0 2px rgba(74,108,247,.18); }

/* 原始简历 */
.orig-note{ font-size:12px; color:var(--muted); margin-bottom:8px; }
.orig-wrap{ border:1px solid var(--border); border-radius:10px; overflow:hidden; background:#fff; }
.orig-frame{ width:100%; height:calc(100vh - 180px); min-height:700px; border:none; background:#fff; }

/* 基本信息tab内嵌的原始简历预览（紧凑版） */
.orig-info-frame{
  width:100%; height:calc(100vh - 210px); min-height:600px; border:1px solid var(--border); border-radius:8px;
  background:#fff;
}

/* 基本信息tab内嵌的原始简历（HTML iframe / PDF预览） */
.orig-embed-frame{
  width:100%; height:calc(100vh - 180px); min-height:700px; border:1px solid var(--border); border-radius:10px;
  background:#fff; box-shadow:0 1px 4px rgba(0,0,0,.04);
}
.orig-pdf-frame{ height:calc(100vh - 180px); min-height:700px; }  /* PDF预览保持适中高度 */
.orig-pdf-embed{ width:100%; height:100%; border:none; display:block; }

/* 附件 */
.att-grid{ display:flex; flex-wrap:wrap; gap:12px; }
.att-item{ display:flex; align-items:center; gap:10px; border:1px solid var(--border);
  border-radius:10px; padding:8px 12px; background:var(--bg); min-width:200px; max-width:320px; }
.att-link{ flex:none; }
.att-thumb{ width:46px; height:46px; object-fit:cover; border-radius:6px; border:1px solid var(--border); }
.att-meta{ min-width:0; }
.att-name{ display:block; font-size:13px; color:var(--text); text-decoration:none;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:220px; }
.att-name:hover{ color:var(--primary); text-decoration:underline; }
.att-type{ font-size:11px; color:var(--muted); margin-top:2px; }

/* 邀约模板卡片（按轮次） */
.tpl-card{ border:1px solid var(--border); border-radius:10px; padding:12px; margin-bottom:12px;
  background:var(--panel); }
.tpl-card-head{ display:flex; align-items:center; gap:10px; margin-bottom:8px; }
.tpl-card-head .tpl-name{ flex:1; font-weight:600; padding:7px 10px; }
.tpl-rounds{ display:flex; gap:16px; align-items:center; margin-bottom:8px; font-size:13px; }
.tpl-rounds .chk{ display:inline-flex; align-items:center; gap:4px; }
/* 视频面试模式下，关联轮次禁用 + 视觉置灰 */
.tpl-rounds.is-disabled{ opacity:.45; pointer-events:none; }
.tpl-rounds.is-disabled::before{ content:"已选「视频」"; color:var(--muted); font-size:12px; margin-right:6px; }
.tpl-card label{ display:block; font-size:12px; color:var(--muted); margin:6px 0 3px; }
.tpl-card input[type=text], .tpl-card textarea{ width:100%; }

/* 编辑弹窗说明 */
.hint-sm{ font-size:12px; color:var(--muted); line-height:1.6; margin-bottom:6px; }

/* 邀约模板「按账号独立」提示条（浅黄结论框风格）
   注意：不要用 display:flex —— 容器窄时 <b> 子元素会被压成 1 字宽，导致"当前登录账号"逐字换行 */
.tpl-owner-note{
  background:#fff8e6; border:1px solid #ffe2a8; color:#8a6d1f;
  font-size:12.5px; line-height:1.65; border-radius:8px;
  padding:9px 12px; margin:8px 0 12px;
  word-break:break-word; overflow-wrap:break-word;
}
.tpl-owner-note::before{ content:"📌 "; }
.tpl-owner-note b{ color:#6f5616; }

/* Word 简历在线预览说明条 */
.orig-note{ font-size:12.5px; line-height:1.6; color:#2b59c3;
  background:#eef3fc; border:1px solid #cfdcf6; border-radius:8px;
  padding:8px 11px; margin:0 0 10px; }
.orig-note b{ color:#1f47a8; }
.tpl-legend{ font-size:12px; color:var(--muted); margin-top:10px; line-height:1.9;
  background:#f6f8fc; border:1px solid var(--border); border-radius:8px; padding:8px 10px; }
.tpl-legend code{ background:#e7edfa; color:#2b59c3; padding:1px 6px; border-radius:4px;
  font-family:'Consolas',monospace; font-size:11.5px; }
.modal select{ width:100%; padding:9px 11px; border:1px solid var(--border); border-radius:8px;
  font-family:inherit; font-size:13px; background:var(--panel); color:var(--text);
  appearance:none; -webkit-appearance:none; -moz-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23999'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 11px center; padding-right:30px;
  transition:all .12s; }
/* v1.6.460：面试弹窗下拉框——原生 select 清除默认外观，选中后改用「主色边框+主色箭头」替代蓝底白字；强化 hover/focus 交互态 */
.modal select.selected{ border-color:var(--primary); color:var(--text); font-weight:600;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%231a5cff'/%3E%3C/svg%3E"); }
.modal select:hover{ border-color:#b9c4e0; background-color:#f7f9ff; }
.modal select:focus{ outline:none; border-color:var(--primary); box-shadow:0 0 0 3px rgba(26,92,255,.10); }
.modal select.selected:hover{ border-color:var(--primary); background-color:#f1f5ff; }

/* 面试弹窗：日期选择器日历按钮标灰
   （v1.9.967：ivTime 已拆为 ivDate + ivStartTime + ivEndTime，旧的 .iv-time-wrap 一并废弃） */
#ivDate::-webkit-calendar-picker-indicator{
  cursor:pointer; opacity:.4;
}
#ivDate::-webkit-calendar-picker-indicator:hover{ opacity:.7; }

/* v1.6.438：面试官多选 tag + 复选框下拉面板 */
#ivIntTags .iv-tag{
  display:inline-flex; align-items:center; gap:4px;
  padding:2px 8px 2px 10px; font-size:13px;
  background:#eef3ff; color:var(--primary); border-radius:14px;
  border:1px solid #d6e4ff; white-space:nowrap;
}
#ivIntTags .iv-tag .iv-tag-x{
  cursor:pointer; font-size:14px; line-height:1; color:#7a9ce0; padding:0 2px;
}
#ivIntTags .iv-tag .iv-tag-x:hover{ color:var(--red); }
/* 会议室 tag（复用 .iv-tag 样式，v1.6.447） */
#ivRoomTags .iv-tag{
  display:inline-flex; align-items:center; gap:4px;
  padding:2px 8px 2px 10px; font-size:13px;
  background:#eef3ff; color:var(--primary); border-radius:14px;
  border:1px solid #d6e4ff; white-space:nowrap;
}
#ivRoomTags .iv-tag .iv-tag-x{
  cursor:pointer; font-size:14px; line-height:1; color:#7a9ce0; padding:0 2px;
}
#ivRoomTags .iv-tag .iv-tag-x:hover{ color:var(--red); }
/* 会议室下拉列表（同面试官） */
#interviewModal .iv-int-list .iv-room-item{
  display:flex; align-items:center; gap:8px;
  padding:6px 8px; font-size:13px; cursor:pointer;
  transition:background .1s; color:var(--text);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
#interviewModal .iv-int-list .iv-room-item:hover{ background:rgba(0,0,0,.04); }
#interviewModal .iv-int-list .iv-room-item input[type=checkbox]{
  margin:0; accent-color:var(--primary); flex-shrink:0;
  width:auto; padding:0; border:none; border-radius:0; box-shadow:none; background:none;
}
#interviewModal .iv-int-list .iv-room-item > span{
  color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  flex:1; min-width:0;
}
.iv-int-dropdown{
  position:absolute; top:100%; left:0; right:0; z-index:200;
  background:#fff; border:1px solid var(--border);
  border-radius:8px; box-shadow:0 4px 16px rgba(0,0,0,.08);
  margin-top:2px; max-height:220px; overflow:hidden;
}
.iv-int-list{ max-height:178px; overflow-y:auto; padding:4px 0; }
/* 同时兼容新 div.iv-int-item 与旧 label（避免 app.js 缓存导致结构未更新时样式丢失） */
#interviewModal .iv-int-list .iv-int-item,
#interviewModal .iv-int-list label{
  display:flex; align-items:center; gap:8px;
  padding:6px 8px; font-size:13px; cursor:pointer;
  transition:background .1s; color:var(--text);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
#interviewModal .iv-int-list .iv-int-item:hover,
#interviewModal .iv-int-list label:hover{ background:rgba(0,0,0,.04); }
#interviewModal .iv-int-list .iv-int-item input[type=checkbox],
#interviewModal .iv-int-list label input[type=checkbox]{
  margin:0; accent-color:var(--primary); flex-shrink:0;
  width:auto; padding:0; border:none; border-radius:0; box-shadow:none; background:none;
}
#interviewModal .iv-int-list .iv-int-item > span,
#interviewModal .iv-int-list label > span{
  color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  flex:1; min-width:0;
}
/* 多选样式保留原来的隐藏 select */
#ivInterviewer[multiple]{ min-height:0; }

/* 面试弹窗：上下方向拉高，整体更舒展（不影响其他弹框） */
#interviewModal .modal{ min-height:640px; }

/* 面试弹窗：会议链接大文本框 */
#ivLink{
  width:100%; min-height:180px; padding:10px 12px;
  font-size:13.5px; line-height:1.7; resize:vertical;
  border:1px solid #ccc; border-radius:6px;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
}

/* 拖拽导入遮罩 —— 已移除（v1.5.184，改为弹窗方案 C） */

.chk-row{ display:flex; align-items:center; gap:7px; font-size:12.5px; color:var(--sub);
  margin:12px 0 0; cursor:pointer; }
.chk-row input{ width:auto; }

/* 顶栏角色选择 */
.role-label{ font-size:12px; color:var(--sub); display:flex; align-items:center; gap:5px; }
.role-label select{ padding:6px 9px; border:1px solid var(--border); border-radius:7px; font-family:inherit; font-size:13px; }

/* 看板视图（全屏覆盖整个页面，包括顶部工具栏） */
/* 看板视图（全屏覆盖；hide/show 由 JS 控制内联 style，CSS 不加 display:none 底值） */
.dashboard{
  position:fixed; top:0; left:0; right:0; bottom:0;
  z-index:var(--z-detail); background:var(--bg);
  overflow-y:auto; padding:22px 26px;
}
.dash-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:18px; }
.dash-head h2{ font-size:20px; font-weight:700; display:flex; align-items:center; gap:8px; }
.dash-head h2::before{ content:""; width:5px; height:20px; background:var(--primary); border-radius:3px; }
.dash-head > div{ display:flex; gap:10px; }
.dash-head .btn{ background:#fff; border-color:var(--border); color:var(--text); }
.dash-head .btn:hover{ background:var(--bg); }
.dash-head .btn-primary{ background:var(--primary); color:#fff; border-color:var(--primary); }
.dash-head .btn-primary:hover{ background:var(--primary-d); }

.kpi-grid{ display:grid; grid-template-columns:repeat(8,1fr); gap:14px; margin-bottom:22px; }
.kpi-card{
  background:var(--panel); border:1px solid var(--border); border-radius:10px;
  padding:16px 18px; box-shadow:var(--shadow);
  display:flex; flex-direction:column; justify-content:center; min-width:0;
}
.kpi-num{ font-size:26px; font-weight:800; color:var(--text); line-height:1.2; }
.kpi-lbl{ font-size:12px; color:var(--sub); margin-top:6px; }

.dash-cols{ display:grid; grid-template-columns:1.35fr 1fr; gap:18px; }
.dash-card{ background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:18px 20px; box-shadow:var(--shadow); }
.dash-card-title{ font-size:14px; font-weight:700; color:var(--text); margin-bottom:14px; display:flex; align-items:center; gap:6px; }
.dash-card-title::before{ content:""; width:4px; height:14px; background:var(--primary); border-radius:2px; }

.funnel{ display:flex; flex-direction:column; gap:11px; }
.funnel-row{ display:flex; align-items:center; gap:12px; font-size:13px; }
.funnel-row .f-name{ width:72px; color:var(--sub); flex:none; text-align:right; }
.funnel-track{ flex:1; height:18px; background:#f0f2f5; border-radius:9px; overflow:hidden; }
.funnel-track > span{ display:block; height:100%; background:linear-gradient(90deg,#6b9fff 0%,var(--primary) 100%); border-radius:9px; transition:width .35s ease; }
.funnel-row:hover .funnel-track > span{ filter:brightness(1.05); }
.funnel-row .f-num{ width:34px; text-align:right; color:var(--text); font-weight:700; }

.bar-list{ display:flex; flex-direction:column; gap:10px; }
.bar-row{ display:flex; align-items:center; gap:12px; font-size:13px; }
.bar-row .b-name{ width:68px; color:var(--sub); flex:none; }
.bar-track{ flex:1; height:12px; background:#f0f2f5; border-radius:6px; overflow:hidden; }
.bar-track > span{ display:block; height:100%; background:linear-gradient(90deg,#9db9ff 0%,#5b8cff 100%); border-radius:6px; transition:width .35s ease; }
.bar-row:hover .bar-track > span{ filter:brightness(1.05); }
.bar-row .b-num{ width:36px; text-align:right; color:var(--text); font-weight:700; }

/* ── 看板 Sheet 切换 ── */
.dash-sheets{ display:flex; gap:0; margin-bottom:18px; border-bottom:2px solid var(--border); }
.dash-sheet{ padding:10px 24px; border:none; background:none; font-size:14px; font-weight:600; color:var(--sub); cursor:pointer; border-bottom:2px solid transparent; margin-bottom:-2px; transition:color .15s,border-color .15s; }
.dash-sheet:hover{ color:var(--text); }
.dash-sheet.active{ color:var(--primary); border-bottom-color:var(--primary); }
/* 看板切片器 */
.dash-filters{ display:flex; align-items:center; gap:12px; margin-bottom:16px; }
.dash-filters .fl-lbl{ color:var(--sub); font-weight:600; font-size:12px; }
.dash-select{ padding:6px 12px; border:1px solid var(--border); border-radius:6px; background:#fff; font-size:13px; color:var(--text); cursor:pointer; min-width:130px; }
.dash-select:focus{ outline:none; border-color:var(--primary); box-shadow:0 0 0 3px rgba(26,92,255,.10); }


/* ── 周漏斗 ── */
.week-label{ font-size:11px; font-weight:400; color:var(--sub); margin-left:6px; }

/* ── 趋势表格 ── */
.trend-table{ width:100%; border-collapse:separate; border-spacing:0; font-size:13px; }
.trend-table thead th{ text-align:center; padding:10px 8px; font-weight:700; color:var(--sub); border-bottom:1px solid var(--border); font-size:12px; }
.trend-table thead th:first-child{ text-align:left; }
.trend-table tbody td{ padding:10px 8px; text-align:center; border-bottom:1px solid #f2f3f5; vertical-align:middle; }
.trend-table tbody td:first-child{ text-align:left; font-weight:600; color:var(--text); }
.trend-table tbody tr:hover td{ background:#fafbfc; }
.trend-table .tt-high{ color:var(--primary); font-weight:700; }
.trend-table .tt-mid{ color:var(--text); }
.trend-table .tt-low{ color:var(--sub); }

/* ── 月报分析 ── */

/* 时效分析 - 全周期 */
.te-full{ display:flex; gap:14px; }
.te-full-card{ flex:1; background:linear-gradient(135deg,#eef3ff 0%,#f8f9fb 100%); border-radius:10px; padding:16px 18px; border:1px solid var(--border); }
.te-full-num{ font-size:26px; font-weight:800; color:var(--primary); line-height:1.2; }
.te-full-unit{ font-size:13px; color:var(--sub); margin-left:4px; }
.te-full-lbl{ font-size:12px; color:var(--sub); margin-top:4px; }
.te-full-samples{ font-size:10px; color:#aaa; margin-top:6px; }

/* 阶段时效 */
.te-stage-list{ display:flex; flex-direction:column; gap:8px; }
.te-stage-row{ display:flex; align-items:center; gap:10px; font-size:13px; }
.te-stage-name{ width:84px; color:var(--sub); text-align:right; }
.te-stage-bar{ flex:1; height:14px; background:#f0f2f5; border-radius:7px; overflow:hidden; }
.te-stage-bar > span{ display:block; height:100%; background:linear-gradient(90deg,#6b9fff,#1a5cff); border-radius:7px; }
.te-stage-days{ width:80px; text-align:right; font-weight:700; color:var(--text); }
.te-stage-samples{ width:46px; text-align:right; font-size:11px; color:var(--sub); }

/* 岗位时效表 */
.te-pos-table{ width:100%; border-collapse:separate; border-spacing:0; font-size:13px; }
.te-pos-table thead th{ text-align:left; padding:9px 8px; font-weight:700; color:var(--sub); border-bottom:1px solid var(--border); font-size:12px; }
.te-pos-table tbody td{ padding:9px 8px; border-bottom:1px solid #f2f3f5; }
.te-pos-table tbody tr:hover td{ background:#fafbfc; }
.te-pos-name{ font-weight:600; color:var(--text); }
.te-pos-dept{ font-size:11px; color:var(--sub); margin-left:6px; }
.te-pos-num{ font-weight:700; color:var(--primary); text-align:right; }

/* 部门漏斗 */
.fb-dept{ display:flex; flex-direction:column; gap:14px; }
.fb-dept-block{ border:1px solid var(--border); border-radius:8px; padding:12px 14px; }
.fb-dept-name{ font-size:13px; font-weight:700; color:var(--text); margin-bottom:8px; }
.fb-dept-bars{ display:flex; flex-direction:column; gap:5px; }
.fb-dept-bar-row{ display:flex; align-items:center; gap:8px; font-size:12px; }
.fb-debt-stage{ width:60px; color:var(--sub); text-align:right; }
.fb-dept-bar{ flex:1; height:11px; background:#f0f2f5; border-radius:6px; overflow:hidden; }
.fb-dept-bar > span{ display:block; height:100%; background:linear-gradient(90deg,#6b9fff,#1a5cff); border-radius:6px; }
.fb-dept-num{ width:30px; text-align:right; font-weight:600; }

/* 时间维度漏斗 */
.fb-time-table{ width:100%; border-collapse:separate; border-spacing:0; font-size:13px; }
.fb-time-table thead th{ text-align:left; padding:9px 8px; font-weight:700; color:var(--sub); border-bottom:1px solid var(--border); font-size:12px; }
.fb-time-table tbody td{ padding:9px 8px; border-bottom:1px solid #f2f3f5; vertical-align:middle; }
.fb-time-table .fb-time-total{ font-weight:700; color:var(--primary); }

/* 渠道漏斗 */
.cf-table{ width:100%; border-collapse:separate; border-spacing:0; font-size:13px; }
.cf-table thead th{ text-align:left; padding:9px 8px; font-weight:700; color:var(--sub); border-bottom:1px solid var(--border); font-size:12px; background:#fafbfc; }
.cf-table tbody td{ padding:10px 8px; border-bottom:1px solid #f2f3f5; vertical-align:middle; }
.cf-table tbody tr:hover td{ background:#fafbfc; }
.cf-platform{ font-weight:700; color:var(--text); }
.cf-bar-cell{ position:relative; padding-right:60px !important; min-width:180px; }
.cf-bar-track{ height:18px; background:#f0f2f5; border-radius:9px; overflow:hidden; position:relative; }
.cf-bar-1{ position:absolute; left:0; top:0; height:100%; background:linear-gradient(90deg,#4d82ff,#6b9fff); }
.cf-bar-2{ position:absolute; left:0; top:0; height:50%; background:linear-gradient(90deg,#7b61ff,#9b7fff); }
.cf-bar-3{ position:absolute; left:0; top:0; height:30%; background:linear-gradient(90deg,#ffb800,#ffc933); }
.cf-bar-4{ position:absolute; left:0; top:0; height:18%; background:linear-gradient(90deg,#00b578,#33c78b); }
.cf-bar-label{ position:absolute; right:8px; top:50%; transform:translateY(-50%); font-size:11px; color:var(--text); font-weight:600; }
.cf-pct{ color:var(--primary); font-weight:700; }
.pos-tr{ display:flex; justify-content:space-between; padding:7px 0; border-bottom:1px dashed var(--border); }
.pos-tr .p-name{ font-weight:600; }
.pos-tr .p-meta{ color:var(--sub); font-size:12px; }
/* v2.0.1079：作用域收窄——此 11px 小徽章仅用于职位统计行，
   不再全局覆盖详情页头部 .pos-badge（头部应为统一规格 13px） */
.pos-tr .pos-badge{ font-size:11px; padding:1px 7px; border-radius:9px; background:var(--bg); color:var(--sub); margin-left:6px; }

/* 流程节点步骤条 */
.stepper{ display:flex; flex-wrap:wrap; gap:6px; margin:6px 0 14px; }
.step{ font-size:12px; padding:5px 11px; border-radius:20px; background:var(--bg); color:var(--sub);
  border:1px solid transparent; cursor:pointer; }
/* done 不再单独标色，只有 current 蓝高亮 */
.step.current{ background:var(--primary); color:#fff; font-weight:600; }
/* 终态节点(淘汰)选中时用蓝灰底，区别于普通蓝 */
.step.current.terminal{ background:#7a8ba8; color:#fff; font-weight:600; }
.step.terminal{ background:#f2f3f5; color:var(--sub); }
.step:hover{ border-color:var(--primary); }

/* 表单网格（职位弹窗）*/
.form-grid{ display:grid; grid-template-columns:1fr 1fr; gap:12px 16px; }
.form-grid > div{ display:flex; flex-direction:column; }
.form-grid label{ display:block; font-size:12px; color:var(--sub); margin:0 0 5px; }
.form-grid input, .form-grid textarea, .form-grid select{
  width:100%; padding:9px 11px; border:1px solid var(--border); border-radius:8px; font-family:inherit; font-size:13px; }
.form-grid textarea{ resize:vertical; line-height:1.6; }

/* v1.6.262：手动新增候选人弹窗分组样式（参照详情页「详细信息」5 段） */
.ac-section{ margin:14px 0; }
.ac-section-title{
  font-size:13px; font-weight:600; color:#3a4252;
  padding:6px 0; margin-bottom:8px;
  border-bottom:1px solid var(--border);
}
.chk-group{ display:flex; gap:14px; padding-top:4px; }
.chk{ display:flex; align-items:center; gap:5px; font-size:13px; color:var(--text); }
.chk input{ width:auto; }

/* 归属职位可输入下拉（combo） */
.combo-wrap{ position:relative; width:100%; }
.combo-wrap input[type=text]{ width:100%; padding-right:30px; }
.combo-arrow{ position:absolute; right:10px; top:50%; transform:translateY(-50%); color:var(--sub); pointer-events:none; font-size:12px; }
/* 下拉菜单（combo：input + datalist），与图1 360浏览器菜单风格对齐 */
.combo-dropdown{ position:absolute; left:0; right:0; top:calc(100% + 4px); max-height:280px; overflow-y:auto; background:var(--panel); border:1px solid var(--border); border-radius:10px; box-shadow:0 4px 16px rgba(0,0,0,.08); z-index:var(--z-dropdown); display:none; padding:4px; }
.combo-dropdown.show{ display:block; }
.combo-item{ padding:10px 14px; cursor:pointer; font-size:13px; border-radius:6px; margin:1px 0; }
.combo-item:hover, .combo-item.active{ background:rgba(0,0,0,.04); color:var(--text); }
.combo-item.empty{ color:var(--muted); cursor:default; }
.combo-item.empty:hover{ background:transparent; color:var(--muted); }

/* 侧栏底部 */
.side-foot{ padding:12px; border-top:1px solid var(--border); }
.btn-block{ width:100%; justify-content:center; }

/* 详情操作条 */
.detail-actions{ display:flex; flex-wrap:wrap; gap:7px; padding:12px 20px; border-bottom:1px solid var(--border); }
.detail-actions .btn{ font-size:12px; padding:6px 11px; }

/* 面试 / 跟进 条目 */
.list-item{ background:var(--bg); border-radius:10px; padding:10px 12px; margin-top:10px; font-size:13px; line-height:1.6; position:relative; }
.list-item .li-time{ font-size:11px; color:var(--muted); margin-top:5px; }
.list-item .li-del{ position:absolute; top:8px; right:10px; color:var(--muted); cursor:pointer; font-size:12px; }
.list-item .li-del:hover{ color:var(--red); }

/* 面试评价 */
.eval-list{ margin-top:10px; }
.eval-item{
  background:#fff; border:1px solid var(--border); border-left:none;
  border-radius:8px; padding:12px 14px; margin-bottom:10px;
  box-shadow:0 1px 2px rgba(0,0,0,.04);
}
.eval-head{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:6px; }
.eval-round{ font-size:14px; font-weight:700; color:var(--text); }
.eval-score{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:48px; padding:2px 8px; border-radius:12px;
  background:#eef3ff; color:var(--primary); font-size:12px; font-weight:700;
}
.eval-meta{ font-size:13px; color:#4e5969; flex:1; }  /* v1.8.907：恢复 13px 不加粗（与周围一致）；姓名加粗、时间不粗 */
.eval-meta-name{ font-weight:600; color:var(--text); }
.eval-meta-time{ font-weight:400; color:#86909c; margin-left:4px; }
.eval-actions{ margin-left:auto; display:inline-flex; gap:4px; }
.eval-actions button{
  border:none; background:transparent; cursor:pointer; padding:2px 4px;
  color:#888; font-size:12px; border-radius:3px;
}
.eval-actions button:hover{ background:#f0f0f0; color:#1a5cff; }

/* 面试安排列表右上角删除按钮（与 eval-actions 风格一致） */
.iv-del{
  position:absolute; top:8px; right:10px;
  border:none; background:transparent; cursor:pointer;
  padding:2px 4px; color:#888; font-size:12px; border-radius:3px;
}
.iv-del:hover{ background:#fbeaea; color:#d23; }

/* 流转记录删除按钮（与 iv-del 同款） */
.sh-del{
  position:absolute; top:8px; right:10px;
  border:none; background:transparent; cursor:pointer;
  padding:2px 4px; color:#888; font-size:12px; border-radius:3px;
}
.sh-del:hover{ background:#fbeaea; color:#d23; }
/* v1.6.625：流转记录中的职位名蓝色标记 */
.flow-pos-name{ color:var(--primary); font-weight:500; }

.list-item{ position:relative; } /* 确保 absolute 定位生效 */
.eval-comment{ font-size:13px; color:var(--text); line-height:1.7; white-space:pre-wrap; }
/* v1.6.275：面试结果标签（绿/黄/红），与 eval-score 同款圆形徽章风格 */
.eval-result{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:48px; padding:2px 8px; border-radius:12px;
  font-size:12px; font-weight:700;
}
.eval-result-pass{ background:#e8f5e9; color:#2e7d32; }   /* 通过 → 绿 */
.eval-result-hold{ background:#fff7e0; color:#b88200; }   /* 暂缓 → 黄 */
.eval-result-fail{ background:#fce4ec; color:#c62828; }   /* 不通过 → 红 */
.eval-divider{ height:1px; background:var(--border); margin:18px 0; }
.li-done{ text-decoration:line-through; color:var(--muted); }
.ev-score{ display:inline-block; font-weight:700; color:var(--primary); }
.iv-status{ font-size:11px; padding:1px 7px; border-radius:9px; background:#eef3ff; color:var(--primary); margin-left:6px; }
/* 邮件发送状态标签 */
.em-tag{ font-size:11px; padding:1px 7px; border-radius:9px; margin-left:8px; white-space:nowrap; }
.em-ok{ background:#e8f5e9; color:#2e7d32; cursor:default; }
.em-fail{ background:#fce4ec; color:#c62828; cursor:help; }
.em-none{ background:#f5f5f5; color:#999; cursor:default; }
/* v1.6.597：RSVP 面试确认状态标签 */
.iv-rsvp{ font-size:11px; font-weight:700; padding:1px 7px; border-radius:9px; margin-left:8px; white-space:nowrap; }
.iv-rsvp.confirmed{ background:#e6f7e6; color:#008a20; }
.iv-rsvp.declined{ background:#fff2f2; color:#d32f2f; }
.iv-rsvp.pending{ background:#f0f2f5; color:#86909c; }
/* 重发按钮 */
.resend-btn{ font-size:11px; padding:2px 8px; flex-shrink:0; }
.add-inline{ display:flex; gap:8px; margin-top:10px; }
.add-inline input, .add-inline select, .add-inline textarea{
  flex:1; padding:8px 10px; border:1px solid var(--border); border-radius:7px; font-family:inherit; font-size:13px; }
.add-inline textarea{ min-height:38px; resize:vertical; }
.mini-link{ font-size:12px; color:var(--primary); cursor:pointer; }
.mini-link:hover{ text-decoration:underline; }

/* ===== 登录页（淘宝风格：浅灰背景 + 左上深蓝品牌 + 居中白卡） ===== */
.login-screen{
  position:fixed; inset:0; z-index:var(--z-toast);
  display:flex; align-items:center; justify-content:center;
  background:#f5f5f5;                            /* 淘宝同款浅灰 */
}
html.has-session .login-screen{ display:none!important; }

/* ---- 左上角品牌：深蓝 logo"招" + 灰色"HR SaaS · 招聘模块" ---- */
.login-brand{
  position:absolute; top:28px; left:36px;
  display:flex; align-items:center; gap:12px;
}
.login-brand-logo{
  width:46px; height:46px; border-radius:10px;
  background:var(--primary); color:#fff;
  font-size:24px; font-weight:700;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 4px 12px rgba(26,92,255,.20);
}
.login-brand-text{
  display:flex; align-items:center;     /* 垂直居中与 logo 中线对齐 */
  height:46px;                          /* 与 logo 等高 */
  line-height:1;
}
.login-brand-sub{
  font-size:12px; color:#8a93a6; line-height:1.3;
}

/* ---- 右下角：版本号 + 公司名 ---- */
.login-footer{
  position:absolute; bottom:22px; right:32px;
  font-size:12px; color:#a8aeb8;
  display:flex; align-items:center; gap:6px;
}
.login-footer-version{ color:var(--primary); font-weight:600; }
.login-footer-sep{ color:#c9cdd4; }

/* ---- 居中登录卡片 ---- */
.login-card{
  width:380px; padding:40px 36px 32px;
  background:#fff; border-radius:10px;          /* 用户规范：大容器 10px */
  box-shadow:0 6px 28px rgba(0,0,0,.12);         /* 用户规范：弹窗阴影 */
  text-align:left;
}
.login-card-title{
  font-size:18px; font-weight:700; color:var(--primary);   /* 密码登录标题·深蓝 */
  text-align:center; margin-bottom:26px;
  padding-bottom:14px;
  border-bottom:1px solid var(--border);
  position:relative;
}

/* ---- 表单 ---- */
.login-form{ text-align:left; }
.login-form label{
  display:block; font-size:13px; color:#5b6577; margin:14px 0 6px;
}
.login-form input{
  width:100%; padding:11px 14px;
  border:1px solid var(--border); border-radius:8px;       /* 用户规范：按钮/输入框 6-8px */
  font-size:14px; font-family:inherit; box-sizing:border-box;
  background:#fff; color:var(--text);
  transition:border-color .15s, box-shadow .15s;
}
.login-form input:focus{
  outline:none; border-color:var(--primary);
  box-shadow:0 0 0 3px rgba(26,92,255,.10);                /* 用户规范：focus 蓝色光晕 */
}

/* v1.6.305：密码显示/隐藏切换按钮 */
.login-pass-wrap{ position:relative; }
.login-pass-wrap .login-input{ padding-right:40px; }
.login-pass-toggle{
  position:absolute; right:8px; top:50%; transform:translateY(-50%);
  width:28px; height:28px; display:flex; align-items:center; justify-content:center;
  border:none; background:transparent; cursor:pointer; color:#86909c; border-radius:6px; padding:0;
}
.login-pass-toggle:hover{ background:#f2f3f5; color:#5b6577; }
.login-pass-toggle svg{ width:18px; height:18px; }

.login-err{
  color:#c62626 !important; font-size:12px !important; font-weight:600 !important;
  font-family:SimSun, "宋体", serif !important;
  line-height:1.4; margin-top:12px !important; padding:7px 14px !important;
  background:#fff0f0 !important; border:1px solid #ffc4c4 !important; border-radius:7px !important;
  text-align:center !important; letter-spacing:0.3px; display:block !important;
}
.login-err:empty{ display:none !important; padding:0 !important; border:none !important; background:transparent !important; }
/* 登录错误时，密码输入框红框高亮 */
.login-input.err{ border-color:#e23b3b !important; box-shadow:0 0 0 3px rgba(226,59,59,.18) !important; }

/* ---- 登录按钮：深蓝实色 + 圆角 ---- */
.login-submit{
  width:100%; margin-top:20px; padding:12px;
  font-size:15px; font-weight:600;
  background:var(--primary); color:#fff;
  border:none; border-radius:8px;
  cursor:pointer; font-family:inherit;
  transition:background .15s, box-shadow .15s, transform .05s;
}
.login-submit:hover{
  background:var(--primary-d);
  box-shadow:0 4px 14px rgba(26,92,255,.30);
}
.login-submit:active{ transform:translateY(1px); }
.login-submit:disabled{ background:#a8b8e0; cursor:not-allowed; }

/* 顶栏当前用户 */
.cur-user{ font-size:13px; color:#5b6577; margin-right:2px; }

/* ===== 设置弹窗（v1.6.260：仿 360 浏览器设置风格，全屏 + 左侧图标导航）=====
   布局：全屏（100vw × 100vh） / 顶栏（标题 + 关闭） / 左侧 220px 图标导航 / 右侧内容 */
#settingsModal .modal.modal-lg{
  display:flex; flex-direction:column;
  width:100vw; height:100vh; max-width:100vw; max-height:100vh;
  border-radius:0; padding:0; overflow:hidden;
}
#settingsModal .modal-title{
  padding:16px 28px; font-size:18px; font-weight:700;
  flex-shrink:0; margin:0;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  border-bottom:1px solid var(--border); background:#fff;
}
#settingsModal .modal-title > span{ flex:1; }
#settingsModal .modal-title .dh-icon-btn{ width:36px; height:36px; border-radius:10px; }
#settingsModal .modal-actions{
  padding:16px 28px 22px;
  flex-shrink:0;
  border-top:1px solid var(--border);
  margin:0;
}
.set-body{ display:flex; flex:1; min-height:0; }
/* 遵循设计规范：左侧 sheet 固定 140px（v1.10.1000 由 176px 收窄 20%）+ 15px 标签字体 */
.set-tabs{
  display:flex; flex-direction:column; gap:2px;
  width:140px; flex-shrink:0;
  margin:0; padding:10px 0;
  border-bottom:none; border-right:1px solid var(--border);
  background:#fff;
}
.set-tab{
  display:block;
  padding:12px 14px; border:none; background:none; cursor:pointer;
  font-size:14px; color:#5b6577; border-left:3px solid transparent; font-family:inherit;
  text-align:left;
  /* v1.10.1000：去掉点击后的浏览器默认 focus outline（Chrome/WebView 显示为黑框）。
     tab 状态已用背景色+左边框表达，outline 反而突兀；
     -webkit-tap-highlight-color 防移动端/WebView 点击高亮块 */
  outline:none;
  -webkit-tap-highlight-color:transparent;
}
.set-tab:hover{ background:rgba(0,0,0,.04); }
.set-tab.active{
  color:var(--primary); border-left-color:var(--primary);
  background:rgba(26,92,255,.10); font-weight:600;
}
/* 右侧内容区：填满剩余宽度；set-pane 切换时使用 flex 列让灰色表格框可上下拉宽 */
.set-panes{ flex:1; min-width:0; padding:24px 32px; overflow-y:auto; background:#fff; }
.set-pane{ display:none; }
.set-pane.active{ display:flex; flex-direction:column; min-height:0; }

/* 邀约邮件模板卡片 */
.tpl-card{
  border:1px solid var(--border); border-radius:10px; padding:12px 14px; margin:10px 0;
  background:#fbfcfe;
}
.tpl-card-head{ display:flex; align-items:center; gap:14px; margin-bottom:8px; }
.tpl-card-head .tpl-name{ flex:1; font-weight:600; }
.tpl-rounds{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-bottom:8px; font-size:13px; color:var(--muted); }
.tpl-rounds .chk{ margin:0; }
.tpl-title, .tpl-subject{ width:100%; margin-bottom:8px; }
.tpl-body{ width:100%; font-family:inherit; resize:vertical; }
.tpl-card-actions{ display:flex; gap:8px; justify-content:flex-end; margin-top:8px; }

/* ===================== 提醒事项 ===================== */
.reminder-btn{
  position:relative; display:inline-flex; align-items:center; justify-content:center;
  width:36px; height:36px; border-radius:8px; padding:0;
  background:#fff; border:1px solid var(--border); color:var(--text); font-size:16px; cursor:pointer;
}
.reminder-btn:hover{ background:#eef3ff; border-color:var(--primary); box-shadow:0 1px 4px rgba(26,92,255,.28); }
.reminder-ico{ line-height:1; }
.reminder-badge{
  position:absolute; top:-5px; right:-5px; min-width:16px; height:16px; padding:0 4px;
  background:#ff3b30; color:#fff; border-radius:8px; font-size:10px; font-weight:700;
  display:flex; align-items:center; justify-content:center; border:2px solid #fff; box-sizing:content-box;
}

/* CRM tab：提醒表单 */
.rem-form{ display:flex; flex-direction:column; gap:8px; background:#f7f9fc; border:1px solid var(--border); border-radius:10px; padding:12px; margin-bottom:14px; font-family:inherit; }
.rem-form .sec-title{ font-family:inherit; }
.rem-time{ width:50%; max-width:240px; padding:7px 10px; border:1px solid var(--border); border-radius:8px; background:#fff; font-size:13px; font-family:inherit; }
/* v2.0.1136：时间框右侧星期显示 */
.rem-time-row{ display:flex; align-items:center; gap:8px; }
/* v2.0.1137：星期徽章与面试安排弹窗 .iv-weekday 统一规范（12px + #eef3ff 浅蓝底 + 4px 圆角） */
.rem-weekday{ font-size:12px; font-weight:600; color:var(--primary); background:#eef3ff; border-radius:4px; padding:2px 7px; white-space:nowrap; min-width:32px; text-align:center; box-sizing:border-box; }
.rem-weekday:empty{ display:none; }
.rem-weekday.is-past{ color:var(--sub); background:#f0f1f3; font-weight:400; }
.rem-content{ width:100%; padding:7px 10px; border:1px solid var(--border); border-radius:8px; background:#fff; font-size:13px; font-family:inherit; resize:vertical; }
/* v2.0.1138：focus 高亮与全站统一（蓝色边框 + 光晕），替换浏览器默认黑色 outline */
.rem-time:focus, .rem-content:focus{ outline:none; border-color:var(--primary); box-shadow:0 0 0 3px rgba(26,92,255,.10); }
/* v1.6.618：@ 下拉弹层包裹（相对定位） */
.rem-content-wrap{ position:relative; }
/* v1.6.619：宽度自适应内容，不撑满 textarea（避免遮挡错觉） */
.rem-mention-popup{ position:absolute; left:0; top:100%; width:max-content; min-width:180px; max-width:320px; z-index:1000; max-height:168px; overflow-y:auto; background:#fff; border:1px solid var(--border); border-radius:10px; box-shadow:0 4px 16px rgba(0,0,0,.08); margin-top:2px; }
.rem-mention-popup-item{ padding:10px 14px; font-size:13px; cursor:pointer; border-radius:6px; margin:2px 4px; transition:background .15s; }
.rem-mention-popup-item:hover{ background:rgba(0,0,0,.04); }
.rem-mention-popup-item.rem-mention-hl{ background:rgba(26,92,255,.10); color:var(--primary); }
.rem-mention-popup-item.rem-mention-no-match{ color:var(--sub); cursor:default; }
.rem-mention-popup-item.rem-mention-no-match:hover{ background:transparent; }
/* v1.6.619：@ 用户标签行（textarea 下方已 @ 列表） */
.rem-mention-tags{ display:flex; flex-wrap:wrap; gap:6px; margin-top:4px; }
.rem-tag{ display:inline-flex; align-items:center; gap:4px; padding:3px 10px; background:rgba(26,92,255,.10); color:var(--primary); border-radius:5px; font-size:12px; font-weight:500; }
.rem-tag-x{ margin-left:2px; font-size:14px; line-height:1; cursor:pointer; opacity:.6; }
.rem-tag-x:hover{ opacity:1; color:#d23; }

/* 已设提醒列表（CRM tab） */
.rem-item{ display:flex; align-items:flex-start; gap:10px; padding:10px 12px; border:1px solid var(--border); border-radius:10px; background:#fff; margin-bottom:8px; }
.rem-item-main{ flex:1; min-width:0; }
.rem-item-time{ font-size:13px; color:var(--text); font-weight:600; }
.rem-item-content{ font-size:13px; color:var(--sub); margin-top:3px; word-break:break-word; white-space:pre-wrap; }
.rem-del{ flex:none; width:26px; height:26px; border-radius:7px; border:none; background:#fbeaea; color:#d23; cursor:pointer; font-size:13px; }
.rem-del:hover{ background:#f6c9c9; }
.rem-status{ display:inline-block; padding:1px 7px; border-radius:8px; font-size:11px; font-weight:600; margin-right:6px; }
.rem-st-future{ background:#eef1f6; color:#6b7488; }
.rem-st-unread{ background:#fff0e6; color:#e8730a; }
.rem-st-done{ background:#e8f6ec; color:#2e9e54; }

/* 提醒事项全屏视图 */
.reminder-list{ display:flex; flex-direction:column; gap:10px; max-width:920px; }
.rem-row{ display:flex; align-items:center; gap:14px; padding:14px 16px; background:var(--panel); border:1px solid var(--border); border-radius:10px; box-shadow:var(--shadow); cursor:pointer; transition:border-color .15s, box-shadow .15s; }
.rem-row:hover{ border-color:var(--primary); box-shadow:0 2px 10px rgba(26,92,255,.16); }
.rem-row-main{ flex:1; min-width:0; }
.rem-row-top{ display:flex; align-items:baseline; gap:12px; }
.rem-row-name{ font-size:15px; font-weight:700; color:var(--text); }
.rem-row-time{ font-size:12px; color:var(--muted); }
.rem-row-content{ font-size:13px; color:var(--sub); margin-top:4px; word-break:break-all; }
.rem-row-go{ flex:none; padding:7px 14px; border:1px solid var(--primary); color:var(--primary); background:#fff; border-radius:8px; cursor:pointer; font-size:13px; font-weight:600; }
.rem-row-go:hover{ background:var(--primary); color:#fff; }
.rem-row-status{ display:inline-block; padding:2px 8px; border-radius:10px; font-size:11px; font-weight:600; background:#fff0e6; color:#e8730a; margin-left:auto; }
.rem-row.read{ background:#f4f5f7; border-color:#e1e3e6; box-shadow:none; }
.rem-row.read .rem-row-name{ color:#8e96a3; }
.rem-row.read .rem-row-content{ color:#aeb4be; }
.rem-row.read .rem-row-time{ color:#c1c6ce; }
.rem-row.read .rem-row-status{ background:#eef1f6; color:#8e96a3; }
.rem-row.read .rem-row-go{ border-color:#c9ced6; color:#9fa6b3; background:#f7f8fa; }
.rem-row.read:hover{ border-color:#d0d4da; box-shadow:none; }

/* v1.6.395：权限矩阵表格 */
.perm-table{ border-collapse:collapse; width:100%; font-size:13px; }
.perm-table th{ background:var(--primary); color:#fff; padding:10px 14px; text-align:center; font-weight:600; border:1px solid var(--primary); white-space:nowrap; }
.perm-table th:first-child{ text-align:left; }
.perm-table td{ padding:9px 14px; border:1px solid var(--border); text-align:center; }
.perm-table td.perm-module-name{ text-align:left; font-weight:500; color:var(--text); white-space:nowrap; }
.perm-table tbody tr:nth-child(even){ background:#f7f9fc; }
.perm-table tbody tr:hover{ background:#eef3ff; }
.perm-cell input[type=checkbox]{ width:18px; height:18px; cursor:pointer; accent-color:var(--primary); }
.perm-cell input[type=checkbox]:disabled{ cursor:not-allowed; opacity:0.6; }

/* v2.0.1051：权限分组子标题行（浅蓝底 + 左侧主色条 + 标题 + 右侧批量全选按钮） */
.perm-group-row td.perm-group-title{
  background:#f0f5ff; padding:8px 14px;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  border-left:3px solid var(--primary);
}
.perm-group-name{ font-size:13px; font-weight:700; color:var(--primary); }
.perm-cat-acts{ display:flex; gap:4px; }
.perm-cat-all{
  font-size:10px; line-height:1.4; padding:2px 7px;
  border:1px solid var(--border); border-radius:4px;
  background:#fff; color:var(--sub); cursor:pointer;
  transition:all .15s; white-space:nowrap;
}
.perm-cat-all:hover{ border-color:var(--primary); color:var(--primary); background:#f0f5ff; }
.perm-cat-all.active{
  background:var(--primary); color:#fff; border-color:var(--primary); font-weight:600;
}

/* 历史记录 */
.hist-stage-tag{ display:inline-block; padding:2px 8px; border-radius:10px; font-size:11px; font-weight:600; background:#eef3ff; color:var(--primary); margin-left:auto; }

/* v1.6.246：3 类角色 UI 可见性 */
body.role-dept .hide-for-dept{ display:none !important; }

/* v1.6.523：详情页功能显隐改由权限矩阵控制（hasPerm → applyDetailPerms）
   移除旧的 role-dept 硬编码隐藏，避免与矩阵配置冲突
   仅保留非矩阵控制的「下一流程/流转/淘汰/归档」按钮隐藏（普通用户无候选管理写权限） */
body.role-dept #detailPanel .stage-flow,
body.role-dept #detailPanel .arrange-area{ display:none !important; }

/* v1.6.504：普通用户隐藏职位设置-部门职位映射 tab */
body.role-dept .ps-hide-dept{ display:none !important; }

/* v1.6.246：修改密码条 */
.user-pass-bar{ margin:8px 0 12px; display:flex; justify-content:flex-end; }

/* v1.6.251：用人部门用户隐藏 CRM 提醒 tab + 上传简历按钮 */
body.role-dept .hide-for-dept-crm{ display:none !important; }

/* v1.6.250：密码变更 sheet 样式 */
.pwd-current{
  margin:14px 0; padding:14px 16px;
  background:#f6f8fc; border:1px solid var(--border); border-radius:10px;
}
.pwd-current-name{ font-size:15px; color:#1a2233; display:flex; align-items:center; gap:8px; }
.pwd-current-name .u-role{ font-size:11px; color:var(--primary); background:#eef3ff; padding:2px 8px; border-radius:10px; font-weight:400; }
.pwd-current-meta{ margin-top:4px; font-size:12px; color:#7a7a7a; font-family:'Consolas','Courier New',monospace; }
.pwd-actions{ display:flex; justify-content:flex-start; }
.pwd-actions .btn{ padding:7px 16px; font-size:13px; }

/* 候选人详情里的写操作按钮（用人部门隐藏） */
body.role-dept .hide-for-dept-detail{ display:none !important; }

/* 面试地址 */
.addr-add, .user-add{ display:flex; gap:8px; margin:10px 0 14px; flex-wrap:wrap; }
/* v2.0.1071：面试地址新增区——标题+字段垂直堆叠（地址简称/完整地址） */
.addr-add-field{ flex:1 1 100%; min-width:0; display:flex; flex-direction:column; gap:4px; }
/* v2.0.1072：地址简称/完整地址上下排列（各占整行） */
.addr-add-field > label{ font-size:12px; color:var(--sub); font-weight:600; }
.addr-add-field input, .addr-add-field textarea{
  padding:8px 10px; border:1px solid var(--border);
  border-radius:7px; font-size:13px; font-family:inherit; background:#fff;
  resize:vertical; min-height:36px; box-sizing:border-box;
}
.addr-add-field textarea{ min-height:60px; line-height:1.5; }
.addr-add input, .user-add input,
.addr-add select, .user-add select{
  flex:1; min-width:120px; padding:8px 10px; border:1px solid var(--border);
  border-radius:7px; font-size:13px; font-family:inherit; background:#fff;
}
/* 账户管理（v1.6.405）：三行布局——姓名+角色占第1行；账号全宽占第2行；密码+按钮占第3行 */
.user-add > :nth-child(3){ flex:0 0 100%; min-width:0; }
.addr-list, .user-list{ display:flex; flex-direction:column; gap:8px; }
.addr-item, .user-item{
  display:flex; align-items:center; gap:10px; padding:10px 12px;
  border:1px solid var(--border); border-radius:8px; background:#fafbfc;
}
.addr-item .addr-name{ font-weight:600; color:#1a2233; margin-right:6px; }
.addr-item .addr-text{ color:#5b6577; font-size:13px; flex:1; word-break:break-all; white-space:pre-wrap; }
/* v2.0.1071：编辑态的完整地址改为 textarea，保留换行能力 */
.addr-item.addr-edit .addr-e-textarea{ flex:1 1 100%; resize:vertical; min-height:60px; line-height:1.5; }
/* v1.8.799：面试地址行内编辑（修改按钮 + 编辑态输入框） */
.addr-item .addr-edit-btn{ color:var(--primary); border-color:#c9dbff; background:#eef3ff; }
.addr-item.addr-edit{ flex-wrap:wrap; }
.addr-item.addr-edit input{
  flex:1; min-width:120px; padding:6px 10px; border:1px solid var(--border);
  border-radius:7px; font-size:13px; font-family:inherit; background:#fff;
}
.addr-item.addr-edit .addr-e-text{ flex:1 1 100%; }
.user-item .u-name{ font-weight:600; color:#1a2233; }
.user-item .u-disp{ color:#5b6577; font-size:13px; margin:0 8px; }
.user-item .u-role{ font-size:11px; color:var(--primary); background:#eef3ff; padding:2px 8px; border-radius:10px; }
.user-item .u-del, .addr-item .addr-del{ margin-left:auto; }
.user-item .u-actions{ margin-left:auto; display:flex; align-items:center; gap:6px; }
.user-item .user-perm{ color:var(--primary); border-color:#c9dbff; background:#eef3ff; }
.user-item .perm-tag{ color:#e08a00; font-size:12px; }
/* v1.6.247：用户账号为主、姓名为副的双行布局 */
.user-item .u-info{ display:flex; flex-direction:column; gap:2px; flex:1; min-width:0; }
.user-item .u-line1{ font-weight:600; color:#1a2233; font-size:13.5px; }
.user-item .u-line2{ font-size:12px; color:#7a7a7a; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.user-item .u-line2 .u-role{ font-size:11px; }
.perm-list{ display:flex; flex-wrap:wrap; gap:8px 16px; max-height:360px; overflow-y:auto; padding:12px; border:1px solid var(--border); border-radius:10px; background:var(--bg); }
.perm-chk{ display:flex; align-items:center; gap:6px; min-width:160px; font-size:13px; cursor:pointer; }
.perm-chk input{ margin:0; }

/* v1.6.407：职位权限弹窗按部门分组（数据来自部门职位映射 sheet） */
.perm-list-grouped{
  display:flex; flex-direction:column; gap:14px;
  flex:1; min-height:0; overflow-y:auto; padding:8px;
  border:1px solid var(--border); border-radius:10px; background:var(--bg);
}
.perm-dept-pos{
  display:flex; align-items:center; gap:10px;
  padding:7px 14px; font-size:13px;
  border-bottom:1px solid #f2f3f5;
  cursor:pointer; transition:background-color .12s;
}
.perm-dept-pos:last-child{ border-bottom:none; }
.perm-dept-pos:hover{ background:#fafbfc; }
.perm-dept-pos input{ margin:0; flex-shrink:0; }

/* v1.6.517：管理员权限中心 — 用户权限列表 */
.perm-user-row{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:10px 14px; border-bottom:1px solid var(--border); transition:background .12s;
}
.perm-user-row:hover{ background:#fafbfc; }
.perm-user-row:last-child{ border-bottom:none; }
.perm-user-info{ flex:1; min-width:0; overflow:hidden; }
.perm-user-name{ font-size:13px; display:flex; align-items:center; gap:8px; min-width:0; }
.perm-user-tag{ margin-top:2px; font-size:12px; }
.perm-user-actions{ display:flex; align-items:center; gap:8px; flex:none; white-space:nowrap; }
.perm-user-role{ min-width:96px; }
.perm-user-role{
  padding:5px 8px; border:1px solid var(--border); border-radius:6px; font-size:12px;
  background:#fff; cursor:pointer;
}
.perm-user-role:focus{ border-color:var(--primary); box-shadow:0 0 0 3px rgba(26,92,255,.10); }
.perm-table{ width:100%; border-collapse:collapse; font-size:13px; }
.perm-table th,.perm-table td{ padding:7px 12px; border-bottom:1px solid var(--border); text-align:left; }
.perm-table th{ background:var(--primary); color:#fff; font-weight:600; white-space:nowrap; }
.perm-table th:first-child{ border-top-left-radius:8px; }
.perm-table th:last-child{ border-top-right-radius:8px; }
.perm-table tbody tr:hover{ background:#fafbfc; }
.perm-cell{ text-align:center; }
.perm-cell input{ width:16px; height:16px; accent-color:var(--primary); cursor:pointer; }
/* v1.6.525：职位权限弹窗 — 人才库独立勾选行（单独一行，不参与部门分组） */
.perm-talent-row{
  margin-bottom:12px; border:1px dashed var(--primary); border-radius:8px;
  background:#f6f9ff; padding:10px 14px;
}
.perm-talent-row .perm-talent-label{
  display:flex; align-items:center; gap:10px; padding:0;
}
.perm-talent-row .perm-talent-label input{ width:17px; height:17px; accent-color:var(--primary); cursor:pointer; }

/* v1.8.738：人才库页面 — Apple HIG 重设计（大标题 / 毛玻璃浮层 / 连续大圆角 / 分层软阴影 / 充足留白 / 克制渐变） */
.talent-pool-page{ position:fixed; top:0; left:0; right:0; bottom:0; z-index:var(--z-detail); background:#fbfbfd; overflow-y:auto; }
/* 顶栏：毛玻璃浮层（半透明材质，透出下方列表滚动），sticky */
.tp-header{ display:flex; align-items:center; justify-content:space-between; gap:16px; padding:28px 40px 22px; background:rgba(251,251,253,.72); backdrop-filter:saturate(180%) blur(20px); -webkit-backdrop-filter:saturate(180%) blur(20px); border-bottom:1px solid rgba(0,0,0,.06); position:sticky; top:0; z-index:2; }
.tp-head-left{ display:flex; align-items:baseline; gap:14px; }
.tp-header .tp-title{ font-size:18px; font-weight:700; margin:0; color:#1d1d1f; letter-spacing:-.02em; line-height:1.2; }
.tp-header .tp-stats{ color:#86868b; font-size:13px; font-weight:400; }
/* 搜索栏 */
.tp-search-bar{ display:flex; gap:12px; padding:24px 40px 10px; align-items:center; max-width:1140px; margin:0 auto; }
.tp-search-bar input[type=search]{ flex:1; height:40px; padding:0 16px; border:1px solid rgba(0,0,0,.08); border-radius:10px; font-size:13px; background:rgba(255,255,255,.82); color:#1d1d1f; outline:none; transition:border-color .15s, box-shadow .15s, background .15s; }
.tp-search-bar input[type=search]::placeholder{ color:#a1a1a6; }
.tp-search-bar input[type=search]:focus{ border-color:var(--primary); background:#fff; box-shadow:0 0 0 4px rgba(26,92,255,.12); }
.tp-search-bar .btn{ height:40px; padding:0 20px; border-radius:10px; font-size:13px; }
/* 筛选条 */
.tp-filters{ padding:4px 40px 22px; max-width:1140px; margin:0 auto; }
.tp-filter-row{ display:flex; flex-wrap:wrap; gap:12px 16px; align-items:center; }
.tp-filter-label{ font-size:13px; color:#86868b; }
.tp-filter-row select,
.tp-filter-row .tp-input{ height:34px; padding:0 12px; border:1px solid rgba(0,0,0,.08); border-radius:10px; font-size:13px; background:rgba(255,255,255,.82); color:#1d1d1f; min-width:92px; outline:none; transition:border-color .15s, background .15s; }
.tp-filter-row select:focus,
.tp-filter-row .tp-input:focus{ border-color:var(--primary); background:#fff; }
/* 列表：充足留白 + 卡片化 + 分层软阴影 */
.tp-list{ padding:16px 40px 56px; max-width:1140px; margin:0 auto; }
.tp-empty{ padding:80px 0; text-align:center; color:#86868b; font-size:14px; }
/* 卡片：连续大圆角 + 分层软阴影（近层边界清楚 + 远处柔影表达悬浮） */
.tp-row{ display:flex; align-items:center; gap:18px; padding:18px 22px; margin-bottom:14px; background:#fff; border-radius:16px; box-shadow:0 1px 2px rgba(0,0,0,.04), 0 8px 24px rgba(0,0,0,.05); cursor:pointer; transition:transform .15s, box-shadow .15s; }
.tp-row:hover{ transform:translateY(-2px); box-shadow:0 2px 4px rgba(0,0,0,.05), 0 14px 34px rgba(0,0,0,.08); }
.tp-row:active{ transform:translateY(0); }
/* 头像：圆角方形（squircle）+ 主色渐变底白字（Apple 联系人风，渐变点睛） */
.tp-avatar{ flex:none; width:50px; height:50px; border-radius:14px; background:linear-gradient(135deg,#1a5cff,#4d86ff); color:#fff; font-size:15px; font-weight:600; display:flex; align-items:center; justify-content:center; box-shadow:0 2px 8px rgba(26,92,255,.25); }
.tp-info{ flex:1; min-width:0; display:flex; flex-direction:column; gap:7px; }
.tp-info .name-row{ display:flex; gap:12px; align-items:baseline; }
.tp-info .name-row .name{ font-size:15px; font-weight:700; color:#1d1d1f; letter-spacing:-.01em; }
.tp-info .name-row .meta{ font-size:12px; color:#86868b; }
.tp-info .tags{ display:flex; flex-wrap:wrap; gap:7px; }
/* 标签：Apple tint 风（浅蓝底深蓝字，克制强调） */
.tp-info .tag{ font-size:11px; padding:3px 10px; border-radius:8px; background:#eef3ff; color:#1a5cff; }
.tp-time{ flex:none; font-size:12px; color:#a1a1a6; }
/* 穿透按钮：主色渐变点睛（渐变仅用于主操作） */
.tp-header #tpPenetrateBtn{ background:linear-gradient(135deg,#1a5cff,#4d86ff); border-color:transparent; box-shadow:0 4px 14px rgba(26,92,255,.28); border-radius:10px; font-size:13px; height:40px; padding:0 20px; }
/* v1.6.521：权限矩阵分组标题行 → v2.0.1051 样式已上移至 .perm-table 区域（flex 布局版），此处删除避免覆盖 */
.perm-module-name{ white-space:nowrap; font-weight:500; }
.perm-dept-pos-name{ color:var(--text); font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
#permModal .modal-title > span{ flex:1; }
.perm-dept-block.ps-dept-unassigned{ border-style:dashed; background:#fafbfc; }
.perm-toolbar{ display:flex; gap:8px; margin-bottom:12px; padding:0 22px; }
.perm-toolbar .btn-sm{ font-size:12px; padding:5px 12px; }
#permModal .hint-sm{ padding:0 22px; }
#permModal .modal-actions{ padding:0 22px; }
#permModal .perm-list-grouped{ margin:0 22px; }

/* v2.0.1119：新增账号弹窗（createUserModal） */
#createUserModal .hint-sm{ padding:0 22px; }
#createUserModal .modal-actions{ padding:0 22px; }
#createUserModal .modal.modal-fullscreen{ height:92vh; }  /* v2.0.1120：弹窗整体高度 85vh→92vh，保证职位列表能完整看到 */
.cu-form{ display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:14px 20px; padding:14px 22px 6px; }
.cu-field{ display:flex; flex-direction:column; gap:6px; }
.cu-label{ font-size:13px; color:var(--text); font-weight:500; }
.cu-field input, .cu-field select{ height:36px; padding:0 10px; border:1px solid var(--border); border-radius:8px; font-size:14px; background:#fff; color:var(--text); }
.cu-field input:focus, .cu-field select:focus{ border-color:var(--primary); outline:none; box-shadow:0 0 0 3px rgba(26,92,255,.10); }
.cu-perm-section{ display:flex; flex-direction:column; flex:1; min-height:0; padding:0 22px 6px; }
.cu-perm-head{ display:flex; flex-direction:column; gap:4px; margin-bottom:6px; }
.cu-perm-title{ font-size:14px; font-weight:600; color:var(--text); }
#createUserModal .perm-toolbar{ padding:0; margin:0 0 8px; }
#createUserModal .perm-list-grouped{ margin:0; flex:1; min-height:240px; max-height:calc(92vh - 380px); overflow-x:auto; }  /* v2.0.1120：设上限避免极端情况下挤压其他元素；overflow-x:auto 开启横向滚动 */
/* v2.0.1120：滚动条不生效的根因——部门块是 flex 子项默认 flex-shrink:1，容器高度不足时被压扁裁切而非溢出滚动。
   设 flex-shrink:0 让子项保持自然高度，超出容器高度即触发 overflow-y:auto 滚动条，职位列表可完整浏览；
   min-width:max-content 让部门块最小宽度=内容宽度：内容比容器宽时撑开触发横向滚动，比容器窄时保持撑满等宽 */
#createUserModal .perm-list-grouped > *{ flex-shrink:0; min-width:max-content; }
/* v2.0.1121：职位名/部门名单行不换行，超宽才由容器横向滚动（否则换行导致永远撑不出横向滚动条） */
#createUserModal .perm-dept-pos-name, #createUserModal .ps-dept-name{ white-space:nowrap; }
@media (max-width: 900px){
  .cu-form{ grid-template-columns:1fr; }
}

/* 登录记录 */
/* v1.6.261：登录/敏感记录灰色区域上下拉宽，使用 flex 填满 sheet 剩余空间（与 set-pane.active 的 flex 列布局配合） */
.login-log-list{
  flex:1; min-height:480px; max-height:none;
  overflow:auto; border:1px solid var(--border); border-radius:10px;
  background:#fafbfc; padding:8px;
}
.login-log-table{ width:100%; border-collapse:collapse; font-size:13px; }
.login-log-table th,
.login-log-table td{ padding:8px 10px; text-align:left; border-bottom:1px solid var(--border); vertical-align:top; }
.login-log-table th{ color:#5b6577; font-weight:600; background:#f5f7fa; position:sticky; top:0; }
.login-log-table tbody tr:last-child td{ border-bottom:none; }
.login-log-table td .hint-sm{ color:#9aa3b2; margin-top:2px; }



/* Word 简历表格（python-docx 解析）— 横向滚动 */
.docx-table{
  max-width:100% !important;
  overflow-x:auto !important;
  display:block;
  border-collapse:collapse;
}
.docx-table td{
  border:1px solid #e5e7eb;
  padding:6px 10px;
  vertical-align:top;
  font-size:13px; line-height:1.7; color:#4e5969;
}

/* docx-preview.js 渲染容器 */
.docx-preview-host{
  max-width:100%;
  overflow-x:auto;
  background:#fff;
  border:1px solid #e5e7eb;
  border-radius:6px;
  padding:16px 20px;
  min-height:200px;
  text-align:left;
}
/* v1.8.774：PDF.js 渲染的 Word 预览页面（LibreOffice 转换）——等比缩放适配容器 */
.docx-preview-host .pdf-page{
  display:block;
  max-width:100%;
  height:auto;
  margin:0 auto 14px;
  background:#fff;
  box-shadow:0 1px 4px rgba(0,0,0,.08);
}
/* v1.8.764：修正类名为库实际生成的 .docx-preview-inner-wrapper。
   根因：docx-preview 默认样式 align-items:center，当 A4 页面(794px)宽度超过预览容器时，
   flex 居中会让页面向两侧溢出 → 左侧被裁掉、视觉上"内容靠右+左侧空白"。
   改为 flex-start 左对齐（页面顶格），超宽部分靠 host 的 overflow-x:auto 横向滚动查看。
   此前误用 .docx-wrapper 类名（库实际生成 .docx-preview-inner-wrapper），规则从未生效。 */
.docx-preview-host .docx-preview-inner-wrapper{
  display:flex;
  flex-flow:column;
  align-items:flex-start !important;
  background:#fff !important;
  padding:0 !important;
}
/* 页面 section（库实际类名 .docx-preview-inner）：去掉纸张阴影/灰边，页面间留 16px 间距 */
.docx-preview-host .docx-preview-inner-wrapper>section.docx-preview-inner{
  box-shadow:none !important;
  border:none !important;
  margin:0 0 16px 0 !important;
  background:#fff !important;
}
.docx-preview-host .docx-preview-inner{
  font-size:14px; line-height:1.8; color:#333;
}
.docx-preview-host .docx-preview-inner table{
  border-collapse:collapse !important;
  margin:6px 0;
  /* v1.8.761：保留 docx-preview 渲染的原始表格宽度与列宽，不再强制 width:auto（否则与 Word 实际不一致） */
}
.docx-preview-host .docx-preview-inner table table{
  border-collapse:collapse !important;
}
.docx-preview-host .docx-preview-inner td,
.docx-preview-host .docx-preview-inner th{
  border:1px solid #d9d9d9;
  padding:4px 8px;
  vertical-align:top;
  word-break:break-word;
}
.docx-preview-host .docx-preview-inner p{
  margin:2px 0;
}

/* ===== v1.6.280 数据导出：移至数据看板的「数据导出」sheet ===== */
.export-filters{margin:16px 0 14px;
  display:flex;flex-direction:column;gap:10px;}
.export-filter-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.export-filter-label{min-width:60px;font-size:13px;font-weight:600;color:var(--text);}
/* 时间行：单行布局，禁止 wrap；date input 可横向拖拽 */
.export-time-row{flex-wrap:nowrap !important;}
.export-filter-row .export-date-input{flex:0 0 auto;}
/* 日期输入：可拖拽右边缘调整宽度（用户友好） */
.export-date-input{width:160px;min-width:130px;max-width:280px;height:32px;padding:4px 8px;font-size:13px;
  border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--text);
  resize:horizontal;overflow:hidden;}
.export-date-input:focus{outline:none;border-color:var(--primary);
  box-shadow:0 0 0 3px rgba(26,92,255,.10);}
.export-date-sep{font-size:14px;color:var(--sub);margin:0 2px;flex:0 0 auto;}
/* 清空时间筛选 */
.export-clear-btn{padding:5px 12px;font-size:12px;border:1px solid var(--border);
  border-radius:6px;background:#fff;color:var(--sub);cursor:pointer;transition:all .15s;
  flex:0 0 auto;}
.export-clear-btn:hover{background:rgba(0,0,0,.04);color:var(--text);}

/* ===== Excel 风格多选筛选器 ===== */
.export-excel-host{flex:1;min-width:200px;}
.excel-multi-root{position:relative;display:inline-block;width:100%;max-width:340px;}
.excel-multi-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;
  padding:6px 12px;border:1px solid var(--border);border-radius:6px;background:#fff;
  font-size:13px;color:var(--text);cursor:pointer;transition:all .15s;
  height:32px;box-sizing:border-box;}
.excel-multi-trigger:hover{border-color:var(--primary);background:rgba(26,92,255,.04);}
.excel-multi-trigger:focus{outline:none;border-color:var(--primary);
  box-shadow:0 0 0 3px rgba(26,92,255,.10);}
.excel-multi-label{flex:1;text-align:left;font-weight:400;color:var(--sub);}
.excel-multi-label.has-sel{color:var(--primary);font-weight:600;}
.excel-multi-arrow{font-size:10px;color:var(--sub);margin-left:6px;transition:transform .2s;}
.excel-multi-root.open .excel-multi-arrow{transform:rotate(180deg);}
/* 面板 */
.excel-multi-panel{position:absolute;z-index:1000;background:#fff;
  border:1px solid var(--border);border-radius:8px;
  box-shadow:0 6px 24px rgba(0,0,0,.12);overflow:hidden;
  display:flex;flex-direction:column;max-height:380px;min-width:240px;}
/* 搜索框 */
.excel-multi-search{padding:8px;border-bottom:1px solid var(--border);background:#fafbfc;}
.excel-multi-search input{width:100%;height:28px;padding:4px 8px;font-size:12.5px;
  border:1px solid var(--border);border-radius:4px;background:#fff;}
.excel-multi-search input:focus{outline:none;border-color:var(--primary);}
/* 工具条 */
.excel-multi-toolbar{display:flex;align-items:center;gap:4px;padding:6px 8px;
  border-bottom:1px solid var(--border);background:#fafbfc;font-size:12px;}
.excel-multi-toolbar button{padding:3px 10px;font-size:12px;border:1px solid var(--border);
  border-radius:4px;background:#fff;color:var(--text);cursor:pointer;transition:all .15s;}
.excel-multi-toolbar button:hover{background:rgba(26,92,255,.08);color:var(--primary);
  border-color:var(--primary);}
.excel-multi-toolbar .excel-multi-count{margin-left:auto;color:var(--sub);
  font-variant-numeric:tabular-nums;}
/* 列表 */
.excel-multi-list{overflow-y:auto;flex:1;padding:4px 0;max-height:240px;}
.excel-multi-list::-webkit-scrollbar{width:6px;}
.excel-multi-list::-webkit-scrollbar-thumb{background:rgba(0,0,0,.18);border-radius:3px;}
.excel-multi-item{display:flex;align-items:center;gap:8px;padding:5px 12px;
  cursor:pointer;user-select:none;font-size:13px;transition:background .1s;}
.excel-multi-item:hover{background:rgba(26,92,255,.06);}
.excel-multi-item input[type="checkbox"]{margin:0;width:14px;height:14px;cursor:pointer;
  accent-color:var(--primary);}
.excel-multi-item .excel-item-label{flex:1;color:var(--text);}
.excel-multi-item .excel-item-count{color:var(--sub);font-size:12px;
  font-variant-numeric:tabular-nums;}
.excel-multi-empty{padding:20px;text-align:center;color:var(--sub);font-size:12px;}
/* 确定按钮 */
.excel-multi-footer{padding:8px;border-top:1px solid var(--border);background:#fafbfc;
  text-align:right;}
.excel-multi-ok{padding:5px 16px;font-size:12.5px;border:none;border-radius:5px;
  background:var(--primary);color:#fff;cursor:pointer;font-weight:600;transition:all .15s;}
.excel-multi-ok:hover{background:#0f4dd8;}
/* 预览卡片（绿框风格） */
.export-preview{background:#e8f5e9;border:1px solid #a5d6a7;border-radius:8px;
  padding:12px 14px;margin:12px 0;}
.export-preview-main{display:flex;align-items:center;gap:4px;margin-bottom:4px;}
.export-preview-count{font-size:15px;font-weight:700;color:#2e7d32;}
.export-preview-size{font-size:14px;color:#388e3c;}
.export-preview-summary{font-size:12px;color:#558b2f;line-height:1.5;}
/* 预览 loading 态 */
.export-preview.loading .export-preview-main{opacity:.6;}

/* ===== v1.9.977：分享链接弹窗 UI 重做 =====
   1) 整个弹窗略拉宽拉高（width 540，padding 28/26）
   2) 类型选项改为水平布局：label+desc 在左，radio 跨两行居中在右
   3) 选中态由 .selected class 驱动（不依赖 :has()，旧 WebView 也稳） */
#shareModal .modal{ width:540px; max-width:92vw; padding:28px 26px; }
#shareModal .modal-title{
  font-size:17px; font-weight:700; margin-bottom:6px;
  padding-bottom:14px; border-bottom:1px solid var(--border);
}
/* 分组标签与「安排面试」弹窗一致：12px 灰字、不加粗 */
#shareModal label{
  display:block; font-size:12px;
  color:var(--sub); margin:20px 0 10px;
}

.share-type-radios{display:flex;flex-direction:column;gap:10px;margin-bottom:4px;}
.share-type-opt{
  display:grid; grid-template-columns:1fr auto; gap:4px 14px;
  align-items:center;
  padding:14px 18px; background:#fff; cursor:pointer;
  border:1.5px solid var(--border); border-radius:10px;
  transition:border-color .15s, background .15s, box-shadow .15s;
}
.share-type-opt:hover{ background:#fafbfc; border-color:var(--primary); }
/* 选中态：JS 给对应 .share-type-opt 加 .selected class
   （不依赖 :has()，兼容钉钉旧 WebView） */
.share-type-opt.selected{
  border-color:var(--primary); background:#f1f5ff;
  box-shadow:0 0 0 3px rgba(26,92,255,.08);
}
.share-type-opt.selected .share-type-label{ color:var(--primary); }
.share-type-opt input[type=radio]{
  grid-column:2; grid-row:1 / 3;   /* 跨两行，自然垂直居中 */
  width:18px; height:18px; margin:0; cursor:pointer;
  accent-color:var(--primary);
}
.share-type-label{ font-size:13px; font-weight:600; color:var(--text); line-height:1.4; }
.share-type-desc{ font-size:12px; color:var(--sub); line-height:1.5; }

.share-expire-btns{display:flex;gap:8px;margin-bottom:4px;}
.share-expire-btn{
  flex:1; padding:9px 0; font-size:13px; font-family:inherit;
  border:1.5px solid var(--border);border-radius:8px;background:#fff;
  color:var(--text);cursor:pointer;transition:all .15s;
}
.share-expire-btn:hover{background:#f0f4ff;border-color:var(--primary);}
.share-expire-btn.active{
  background:var(--primary);color:#fff;border-color:var(--primary);
  font-weight:600;
}
#shareGenBtn{
  width:100%; margin-top:20px; padding:11px 0;
  font-size:13px; font-weight:600; border-radius:8px;
}
.share-link-row{display:flex;gap:8px;align-items:center;margin-top:4px;}
.share-link-row input{
  flex:1;padding:9px 12px;font-size:12px;font-family:Consolas,monospace;
  border:1px solid var(--border);border-radius:6px;background:#fafbfc;
  color:var(--text);
}
.share-revoke-row{display:flex;align-items:center;justify-content:space-between;margin-top:14px;}

/* ===== v1.6.300：分享链接历史列表 ===== */
.share-history{margin-top:16px;padding-top:14px;border-top:1px dashed var(--border);}
.share-history-header{font-size:13px;font-weight:600;color:var(--text);margin-bottom:8px;display:flex;align-items:center;gap:6px;}
.share-history-count{font-size:11px;color:var(--sub);font-weight:400;}
.share-history-item{
  padding:10px 12px;border:1px solid var(--border);border-radius:6px;
  margin-bottom:6px;background:#fafbfc;
}
.share-history-item.revoked{opacity:0.55;background:#f5f5f5;}
.share-history-item.expired{opacity:0.55;background:#fff7e6;}
.share-history-item-head{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:6px;}
.share-history-type{
  font-size:11px;padding:2px 7px;border-radius:10px;font-weight:600;
}
.share-history-type.evaluation{background:#fff1f0;color:#d4380d;}
.share-history-type.resume{background:#e6f4ff;color:#1a5cff;}
.share-history-status{
  font-size:11px;padding:2px 7px;border-radius:10px;
}
.share-history-status.active{background:#e8ffea;color:#00b42a;}
.share-history-status.revoked{background:#f5f5f5;color:var(--sub);}
.share-history-status.expired{background:#fff7e6;color:#ff7d00;}
.share-history-link{font-size:11px;color:var(--sub);font-family:Consolas,monospace;word-break:break-all;margin-bottom:6px;line-height:1.4;}
.share-history-meta{font-size:11px;color:var(--muted);margin-bottom:8px;}
.share-history-actions{display:flex;gap:6px;}
.share-history-actions .btn{flex:1;padding:4px 0;font-size:12px;}
.share-history-actions .btn:disabled{opacity:0.5;cursor:not-allowed;}

/* v1.6.301：分享弹窗内可滚动 */
#shareModal .modal{max-height:82vh;overflow-y:auto;}

.export-preview.loading .export-preview-summary{opacity:.5;}

/* v1.6.303：数据看板「招聘进展」表格 */
.progress-toolbar{
  display:flex;justify-content:space-between;align-items:center;
  gap:12px;margin-bottom:14px;flex-wrap:wrap;
}
.progress-toolbar-left{flex:1;min-width:0;}
.progress-tip{font-size:12px;color:var(--sub);line-height:1.6;}
.progress-refresh-btn{padding:6px 12px;font-size:13px;}

.progress-table-wrap{
  background:#fff;border-radius:10px;box-shadow:0 1px 2px rgba(0,0,0,.04);
  /* v2.0.1109：表头吸顶 —— sticky 的包含块是「最近的滚动容器」，
     本元素有 overflow 即自成 scrollport；若不限制高度，其内部垂直方向永不滚动，
     表头就永远不会「粘住」（看起来毫无效果）。故给高度上限，让表格区域内部滚动。
     内容不足该高度时自动收缩（max-height 只是上限），不会留大片空白。 */
  overflow:auto;
  /* v2.0.1110：原 calc(100vh - 300px) 偏矮（上方实际占用小于预估）。
     改为渲染后由 _fitProgressTableHeight() 实测顶部偏移量精确计算并覆盖此值；
     这里仅作 JS 未执行时的兜底（< 表格真实高度时自动收缩，不会留大片空白） */
  max-height:calc(100vh - 240px);
  min-height:200px;
}
.progress-table{
  width:100%;border-collapse:separate;border-spacing:0;
  font-size:13px;
}
.progress-table thead th{
  background:#f7f9fc;color:var(--ink);font-weight:600;
  text-align:left;padding:12px 14px;
  border-bottom:1px solid #e6eaf0;
  font-size:13px;white-space:nowrap;
  /* v2.0.1109：表头吸顶（配合 .progress-table-wrap 的高度上限生效）
     background 必须不透明，否则滚动时行内容会从表头下透出 */
  position:sticky;top:0;z-index:3;
}
.progress-table thead th.th-progress,
.progress-table thead th.th-onboard{text-align:center;}
/* v1.6.367：岗位列加宽 → 200px
   v2.0.1106：部门列 / 岗位列左右收紧——padding 14px → 8px，岗位列 200 → 180px
   （实测最长岗位名「高级项目经理（城市公用）」约 156px，180-16=164px 内容区仍放得下） */
.progress-table thead th.th-pos,
.progress-table tbody td.td-pos{min-width:180px;width:180px;}
.progress-table tbody td.td-pos{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.progress-table tbody td.td-pos .progress-pos-name{display:inline-block;max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;}
/* 部门列 / 岗位列：左右内边距收紧（与计划/已交付/进度三列一致） */
.progress-table thead th.th-dept,
.progress-table thead th.th-pos,
.progress-table tbody td.td-dept,
.progress-table tbody td.td-pos{padding-left:8px;padding-right:8px;}
.progress-table tbody td{
  padding:12px 14px;border-bottom:1px solid #f0f2f5;
  vertical-align:top;
}
/* v2.0.1110：hover 由原 #fafbfd 改为淡蓝 #f0f5ff，悬停反馈更清晰
   v2.0.1111：斑马纹取消（用户要求）——移除隔行底色规则，表格恢复纯白底；
   hover 淡蓝保留（比原来的 #fafbfd 更容易看出鼠标在哪一行） */
.progress-table tbody tr:hover{background:#f0f5ff;}
/* v2.0.1110：底部合计行（tfoot）——吸底常驻，滚动时始终可见 */
.progress-table tfoot td{
  padding:10px 8px;background:#f7f9fc;
  font-weight:600;color:var(--text);
  border-top:1px solid #e6eaf0;
  position:sticky;bottom:0;z-index:2;
}
.progress-table tfoot .td-total-lbl{text-align:right;padding-right:12px;color:var(--sub);}
.progress-table tfoot .td-plan,
.progress-table tfoot .td-delivered{text-align:center;vertical-align:middle;}
/* v2.0.1108：列间极浅实线分隔（Excel 网格线风格，取色 #eef0f4，比 Excel 的 #d9d9d9 更淡）
   用 border-right + 末列清除，而非 td + td：部门列是 rowspan，合并单元格跨行时竖线需
   随该单元格延伸；若用 td + td，rowspan 覆盖的后续行（首个 td 是 td-pos）左侧会断线
   v2.0.1110：补上 tfoot td */
.progress-table thead th,
.progress-table tbody td,
.progress-table tfoot td{border-right:1px solid #eef0f4;}
.progress-table thead th:last-child,
.progress-table tbody td:last-child,
.progress-table tfoot td:last-child{border-right:0;}
/* v2.0.1100：计划招聘 / 已交付 两列（居中窄列）
   v2.0.1104：三列（计划招聘/已交付/招聘进度）整体压缩——
   宽度 88/96/92 → 68/58/76，左右 padding 14px → 6px，共省约 90px 让给岗位列 */
.progress-table thead th.th-plan,
.progress-table thead th.th-delivered,
.progress-table thead th.th-rate{text-align:center;white-space:nowrap;}
.progress-table tbody td.td-plan,
.progress-table tbody td.td-delivered,
.progress-table tbody td.td-rate{text-align:center;vertical-align:middle;white-space:nowrap;}
.progress-table thead th.th-plan,
.progress-table thead th.th-delivered,
.progress-table thead th.th-rate,
.progress-table tbody td.td-plan,
.progress-table tbody td.td-delivered,
.progress-table tbody td.td-rate{padding-left:6px;padding-right:6px;}
.progress-table tbody td.td-plan{width:68px;min-width:68px;}
.progress-table tbody td.td-delivered{width:58px;min-width:58px;}
.progress-table tbody td.td-rate{width:76px;min-width:76px;}
/* 计划招聘：可点击就地编辑（有 position_open 权限时） */
.progress-table .plan-edit{
  display:inline-block;min-width:36px;padding:3px 6px;
  border:1px solid transparent;border-radius:6px;
  cursor:pointer;font-weight:600;color:var(--text);
  transition:background .15s,border-color .15s;
}
.progress-table .plan-edit:hover{background:#f0f5ff;border-color:#c7d9ff;}
.progress-table .plan-val{font-weight:600;color:var(--text);}
/* v2.0.1104：输入框改自适应列宽（原固定 58px 在 68px 窄列里放不下） */
.progress-table .plan-input{
  width:100%;max-width:54px;padding:3px 4px;font-size:13px;text-align:center;
  box-sizing:border-box;
  border:1px solid var(--primary);border-radius:6px;outline:none;
  box-shadow:0 0 0 3px rgba(26,92,255,.10);
}
/* v2.0.1102：已交付 —— 单个数字（本季度到达过 offer 或 报到 的去重人数） */
.progress-table .dv-total{font-weight:600;color:var(--text);}
/* v2.0.1109：招聘进度 —— 数字 + Excel「数据条」风格进度条
   配色沿用系统既有语义色（与 .tag.s211 绿 / .tag.s985 橙 同一套） */
.progress-table .rate-wrap{display:inline-block;width:56px;}
.progress-table .rate-num{
  display:block;font-size:12px;font-weight:600;line-height:1.3;text-align:center;
}
.progress-table .rate-bar{
  display:block;height:4px;margin-top:3px;
  border-radius:2px;background:#eef0f4;overflow:hidden;
}
.progress-table .rate-bar > i{display:block;height:100%;border-radius:2px;}
/* 三档色：数字文字色 + 进度条填充色共用同一组类名 */
.progress-table .rate-num.rate-high,
.progress-table .rate-num.rate-mid,
.progress-table .rate-num.rate-low{color:inherit;}
.progress-table .rate-num.rate-high{color:var(--green);}
.progress-table .rate-num.rate-mid{color:var(--orange);}
.progress-table .rate-num.rate-low{color:var(--red);}
.progress-table .rate-bar > i.rate-high{background:var(--green);}
.progress-table .rate-bar > i.rate-mid{background:var(--orange);}
.progress-table .rate-bar > i.rate-low{background:var(--red);}
/* 配色沿用系统既有语义色（与 .tag.s211 绿 / .tag.s985 橙 同一套） */
.progress-table .rate-high{background:#e8f7ee;color:var(--green);}    /* >70% */
.progress-table .rate-mid{background:#fff1e8;color:var(--orange);}    /* 30%~70% */
.progress-table .rate-low{background:#ffece8;color:var(--red);}       /* <30% */
.progress-table .td-dept{
  background:#fbfcfe;text-align:center;
  vertical-align:middle;
  font-weight:600;color:var(--ink);
}
.progress-dept-cell{
  display:inline-block;padding:6px 12px;border-radius:6px;
  background:#eef3ff;color:#1a5cff;font-size:13px;
  border:1px solid #dde6fa;white-space:nowrap;
}
/* v2.0.1106：表格内部门徽章左右内边距 12px → 8px（限定表格内，不影响其他模块复用） */
.progress-table .progress-dept-cell{padding:6px 8px;}
.progress-pos-name{color:var(--ink);font-weight:500;}
.progress-empty-cell{color:#c5c8d0;font-size:13px;}
.progress-empty{
  text-align:center;color:var(--muted);
  padding:30px 14px;font-size:13px;
}

/* 单元格内多个候选人换行 */
.progress-cand{
  display:inline-flex;align-items:center;gap:6px;
  padding:4px 8px;border-radius:6px;
  background:#f7f9fc;border:1px solid #e8ebf2;
  margin:2px 4px 2px 0;cursor:pointer;
  transition:background .15s,border-color .15s,box-shadow .15s;
  font-size:12px;line-height:1.4;
}
.progress-cand:hover{
  background:#eef3ff;border-color:#bbd0f7;
  box-shadow:0 2px 6px rgba(26,92,255,.10);
}
.progress-cand-name{color:var(--ink);font-weight:500;}
.progress-cand .stage-pill{font-size:11px;padding:1px 6px;}
/* v2.0.1112：人名后面的面试备注样式已删除（前端不再渲染该备注） */
.progress-table .td-progress,
.progress-table .td-onboard{
  min-width:240px;
}
.progress-table .td-owner{
  color:#c5c8d0;font-size:12px;
}
/* 本地测试水印：遍布全屏小字（仅 127.0.0.1 / localhost） */
#local-watermark{
  position:fixed; inset:0; pointer-events:none; z-index:9999;
  user-select:none; overflow:hidden;
  display:flex; flex-direction:column; justify-content:space-around;
  font-size:60px; font-weight:800; color:rgba(26,92,255,.05);
  letter-spacing:.08em; white-space:nowrap; transform:rotate(-15deg);
  gap:40px;
}

/* v1.6.530：归档原因弹窗 */
.ar-reason-list{ display:flex; flex-wrap:wrap; gap:8px; }
.ar-reason-item{
  display:flex; align-items:center; gap:6px; padding:8px 12px;
  border:1px solid var(--border); border-radius:6px; cursor:pointer;
  font-size:13px; background:#fff; transition:border-color .12s, background .12s;
}
.ar-reason-item:hover{ border-color:var(--primary); background:#f6f9ff; }
.ar-reason-item:has(input:checked){ border-color:var(--primary); background:#eef3ff; color:var(--primary); font-weight:500; }
.ar-reason-item input{ accent-color:var(--primary); cursor:pointer; }
#archiveReasonOther label{ display:block; font-size:13px; margin-bottom:6px; color:var(--sub); }
#archiveReasonOther input{ width:100%; padding:8px 12px; border:1px solid var(--border); border-radius:6px; font-size:13px; }
/* ============ v1.6.547 周报分析：用户筛选器 + PDF 导出 ============ */
.weekly-toolbar{
  display:flex; align-items:center; gap:10px; padding:10px 14px;
  background:#f6f9ff; border:1px dashed var(--primary); border-radius:8px;
  margin-bottom:14px;
}
.weekly-toolbar-lbl{ font-size:13px; color:var(--sub); font-weight:600; white-space:nowrap; }
.weekly-user-filter{
  min-width:260px; min-height:34px; max-height:80px; padding:4px 8px;
  border:1px solid var(--border); border-radius:6px; background:#fff;
  font-size:13px; color:#333;
}

/* 打印样式：周报分析 PDF 多页导出 */
@media print{
  @page{ size:A4 portrait; margin:1.2cm 1cm; }

  /* 隐藏非周报元素 */
  .sidebar, .topbar, .apps-menu, .modal-mask, .toast,
  .dash-sheet, .dash-toolbar, .no-print,
  .detail-panel, .talent-pool-page, .calendar-panel, .reminder-view,
  .history-view, .export-pane, .settings-pane{ display:none !important; }

  /* v1.8.948：打印预览隐藏评价卡片的修改/删除按钮 */
  .eval-actions{ display:none !important; }

  /* dashboardView 强制显示 */
  #dashboardView{
    display:block !important; position:static !important;
    padding:0 !important; margin:0 !important; background:#fff !important;
  }

  /* 周报分析强制显示，其他 tab 隐藏 */
  #dashWeekly{ display:block !important; }
  #dashOverview, #dashMonthly, #dashProgress, #dashChannel, #dashExport{ display:none !important; }

  /* 字号 */
  body, .dash-pane, .dash-card,
  #trendTable, #userContribTable{
    background:#fff !important; color:#222 !important;
    font-size:10.5pt !important; line-height:1.45 !important;
    print-color-adjust:exact; -webkit-print-color-adjust:exact;
  }
  .dash-card-title{ font-size:13pt !important; font-weight:600 !important; color:#222 !important; margin:10px 0 8px !important; }
  #dashWeekly .dash-card-title:first-of-type{ margin-top:0 !important; }

  /* dash-cols 双列变单列 */
  .dash-cols{
    display:block !important; grid-template-columns:1fr !important; gap:14px !important;
  }
  .dash-card{
    page-break-inside:avoid; break-inside:avoid;
    border:1px solid #ddd !important; box-shadow:none !important;
    padding:12px !important; margin-bottom:14px !important;
  }

  /* 漏斗/表格 */
  .wfc-grid{ display:grid !important; grid-template-columns:repeat(4,1fr) !important; gap:10px !important; }
  .wfc-item{ border:1px solid #ddd !important; box-shadow:none !important; padding:10px !important; }
  #trendTable table, #userContribTable table{
    width:100% !important; border-collapse:collapse !important; font-size:9.5pt !important;
  }
  #trendTable th, #trendTable td, #userContribTable th, #userContribTable td{
    border:1px solid #ddd !important; padding:4px 6px !important;
  }
}
.print-header{ display:none; }/* ============ v1.6.548 周报分析：新表格/排行/筛选弹窗/分享 ============ */

/* 用户筛选弹窗项 */
.weekly-filter-item{
  display:flex; align-items:center; gap:10px; padding:9px 12px;
  border-radius:6px; cursor:pointer; font-size:13px; color:#333;
}
.weekly-filter-item:hover{ background:rgba(0,0,0,.04); }
.weekly-filter-item input{ accent-color:var(--primary); width:16px; height:16px; cursor:pointer; }

/* 周漏斗表环比 */
.wf-delta{ font-size:12px; font-weight:600; }
.wf-delta.up{ color:var(--red); }
.wf-delta.down{ color:#00b578; }
.wf-delta.flat{ color:var(--sub); }

/* 排行条 */
.rank-row{ display:flex; align-items:center; gap:10px; padding:7px 4px; font-size:13px; }
.rank-no{
  width:22px; height:22px; border-radius:6px; background:var(--bg-soft);
  color:var(--sub); font-size:12px; font-weight:700; display:flex;
  align-items:center; justify-content:center; flex-shrink:0;
}
.rank-name{ width:96px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:#333; font-weight:500; }
.rank-bar{ flex:1; height:8px; border-radius:5px; background:rgba(0,0,0,.06); overflow:hidden; }
.rank-bar-fill{ height:100%; border-radius:5px; background:var(--primary); }
.rank-bar-fill.offer{ background:#00b578; }
.rank-val{ width:36px; text-align:right; font-weight:700; color:var(--text); }

/* 分享弹窗有效期项 */
.share-exp-item{
  display:flex; align-items:center; gap:6px; padding:7px 14px;
  border:1px solid var(--border); border-radius:6px; cursor:pointer; font-size:13px;
  background:#fff; color:#333;
}
.share-exp-item:has(input:checked){ border-color:var(--primary); background:#eef3ff; color:var(--primary); font-weight:500; }
.share-exp-item input{ accent-color:var(--primary); cursor:pointer; }

/* 分享模式只读：姓名不可点击 */
.share-readonly .progress-cand{ cursor:default; }
.share-readonly .progress-cand:hover{ background:transparent; }
/* ============ v1.6.550 本周招聘漏斗卡片网格（8 列，参考截图样式） ============ */
.wfc-grid{
  display:grid; grid-template-columns:repeat(8,1fr); gap:12px;
  padding:6px 0 2px;
}
.wfc-item{
  display:flex; flex-direction:column; align-items:flex-start; gap:4px;
  padding:14px 10px; border-radius:8px; background:#fff;
  border:1px solid var(--border); min-height:88px;
}
.wfc-val{
  font-size:28px; font-weight:800; color:var(--text); line-height:1.1;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
.wfc-label{
  font-size:13px; font-weight:500; color:var(--sub); line-height:1.2;
}
.wfc-sub{
  font-size:11px; color:var(--sub); margin-top:auto; display:flex; align-items:center; gap:4px;
}
.wfc-delta{
  font-size:11px; font-weight:700; line-height:1.2;
}
.wfc-delta.up{ color:var(--red); }       /* 红=上升 */
.wfc-delta.down{ color:#00b578; }        /* 绿=下降 */
.wfc-delta.flat{ color:var(--sub); }

/* 窄屏：8 列 → 4 列 → 2 列 */
@media (max-width:1200px){
  .wfc-grid{ grid-template-columns:repeat(4,1fr); }
}
@media (max-width:680px){
  .wfc-grid{ grid-template-columns:repeat(2,1fr); }
}

/* ===== Plink 人才地图（Mapping）模块 v1.7.649 ===== */
.plink-view{
  position:fixed; top:0; left:0; right:0; bottom:0; z-index:var(--z-detail);
  /* Apple HIG：克制的浅色渐变，作为毛玻璃面板的背景源 */
  background:linear-gradient(180deg,#fbfbfd 0%,#f3f4f6 100%);
  display:flex; flex-direction:column; overflow:hidden;
  font-family:"PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;
}

/* 顶部工具栏：半透明毛玻璃（系统级窗口质感） */
.plink-topbar{ flex:0 0 48px; height:48px; display:flex; align-items:center; gap:12px; padding:0 18px;
  background:rgba(251,251,253,.72);
  backdrop-filter:blur(12px) saturate(180%); -webkit-backdrop-filter:blur(12px) saturate(180%);
  border-bottom:1px solid rgba(0,0,0,.07);
  box-shadow:0 1px 0 rgba(255,255,255,.6) inset, 0 1px 3px rgba(0,0,0,.04);
  position:relative; z-index:5; }
.plink-title{ font-size:16px; font-weight:600; color:#1d1d1f; margin:0; letter-spacing:-.01em; }
.plink-topbar-actions{ margin-left:auto; display:flex; align-items:center; gap:8px; }
.plink-back{ margin-right:6px; }

/* 顶栏按钮：圆角胶囊 + 毛玻璃质感 */
.plink-topbar .btn{ border-radius:9px; padding:7px 14px; font-size:13px; font-weight:500;
  background:rgba(255,255,255,.7); border-color:rgba(0,0,0,.08); backdrop-filter:blur(8px); transition:.15s; }
.plink-topbar .btn:hover{ background:#fff; box-shadow:0 1px 4px rgba(0,0,0,.06); }
.plink-topbar .btn-primary{ background:linear-gradient(180deg,#2f6bff,var(--primary)); border-color:transparent; color:#fff; box-shadow:0 1px 3px rgba(26,92,255,.35); }
.plink-topbar .btn-primary:hover{ background:linear-gradient(180deg,#3b74ff,var(--primary-d)); }

/* v1.8.714 / v1.8.716：撤销恢复图标按钮（圆形，毛玻璃，仅图标） */
.plink-topbar .plink-undo-btn{ margin-right:2px; width:34px; height:34px; padding:0; border-radius:50%;
  font-size:15px; color:#3a4a63; background:rgba(255,255,255,.7); border:1px solid rgba(0,0,0,.08);
  cursor:pointer; backdrop-filter:blur(8px); display:inline-flex; align-items:center; justify-content:center; transition:.15s; }
.plink-topbar .plink-undo-btn:hover:not(:disabled){ color:var(--primary); border-color:var(--primary); background:#fff; box-shadow:0 2px 8px rgba(26,92,255,.18); }
.plink-topbar .plink-undo-btn:disabled{ opacity:.35; cursor:not-allowed; }

/* 三栏主体 */
.plink-body{ flex:1 1 auto; display:flex; min-height:0; }

/* 左侧栏：半透明毛玻璃 */
.plink-side{ width:300px; flex:0 0 300px;
  background:rgba(251,251,253,.72);
  backdrop-filter:blur(12px) saturate(180%); -webkit-backdrop-filter:blur(12px) saturate(180%);
  border-right:1px solid rgba(0,0,0,.07);
  display:flex; flex-direction:column; min-height:0; position:relative; z-index:4; }
.plink-side-head{ display:flex; align-items:center; justify-content:space-between; padding:18px 18px 14px;
  font-size:15px; font-weight:600; color:#1d1d1f; letter-spacing:-.01em; }
.plink-map-list{ flex:1 1 auto; overflow-y:auto; padding:6px 14px 14px; }
.plink-stat-cards{ flex:0 0 auto; display:flex; gap:10px; padding:14px; border-top:1px solid rgba(0,0,0,.06); background:rgba(255,255,255,.4); }

/* 地图卡片：大圆角 + 分层软阴影 */
.plink-map-card{ position:relative; padding:14px 34px 14px 16px; margin-bottom:10px;
  background:rgba(255,255,255,.9); border:1px solid rgba(0,0,0,.06); border-left:none;
  border-radius:14px; cursor:pointer;
  box-shadow:0 1px 2px rgba(0,0,0,.04), 0 6px 16px rgba(0,0,0,.05);
  transition:box-shadow .18s, transform .18s, border-color .18s; }
.plink-map-card:hover{ box-shadow:0 2px 6px rgba(0,0,0,.06), 0 12px 28px rgba(0,0,0,.09); transform:translateY(-2px); }
.plink-map-card.active{ border-color:var(--primary); box-shadow:0 2px 6px rgba(26,92,255,.12), 0 10px 24px rgba(26,92,255,.10); }
.pmc-name{ font-size:14.5px; font-weight:600; color:#1d1d1f; }
.pmc-meta{ font-size:12px; color:#86868b; margin-top:4px; }
.pmc-del{ position:absolute; top:10px; right:10px; font-size:14px; opacity:.4; cursor:pointer; transition:.15s; }
.pmc-del:hover{ opacity:1; color:var(--red); }
/* v1.7.667：地图重命名按钮（位于删除按钮左侧） */
.pmc-rename{ right:34px; }

/* 统计小卡 */
.psc{ flex:1 1 0; background:rgba(255,255,255,.9); border:1px solid rgba(0,0,0,.06); border-radius:14px; padding:12px 8px; text-align:center; box-shadow:0 1px 2px rgba(0,0,0,.04); }
.psc-num{ font-size:22px; font-weight:700; color:var(--primary); line-height:1.1; letter-spacing:-.02em; }
.psc-label{ font-size:12px; color:#86868b; margin-top:4px; }

/* 画布区：柔和点阵网格（比线网格更干净、更接近 Apple 地图观感） */
.plink-canvas-wrap{ flex:1 1 auto; position:relative; overflow:auto; cursor:default;
  background:
    radial-gradient(circle, #d8dce4 1px, transparent 1.4px) 0 0/24px 24px,
    linear-gradient(180deg,#fbfbfd,#f3f4f6);
}
/* v1.7.654：仅右键拖动时显示"抓取"光标（左键不再拖动） */
.plink-canvas-wrap.plink-dragging{ cursor:grabbing; }
.plink-edges{ position:absolute; top:0; left:0; transform-origin:0 0; pointer-events:none; overflow:visible; }
.plink-nodes{ position:absolute; top:0; left:0; transform-origin:0 0; }
.plink-edge{ fill:none; stroke:#c8ced8; stroke-width:1.6; stroke-linecap:round; }
/* v1.8.696：拖拽预览连接线（占位框↔目标节点，虚线）与落位后保留的关联线（实线） */
.plink-edge-drag{ fill:none; stroke:#9aa5b5; stroke-width:1.8; stroke-dasharray:6 5; stroke-linecap:round; }
.plink-edge-link{ fill:none; stroke:#aab2bf; stroke-width:1.6; stroke-linecap:round; }
.plink-empty{ position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); color:#a1a8b3; font-size:15px; letter-spacing:.02em; }
.plink-empty-sm{ color:#a1a8b3; font-size:13px; padding:8px 2px; }

/* 节点卡片：大圆角 + 分层软阴影 + 清晰层级（Apple HIG） */
.plink-node{ position:absolute; width:180px; box-sizing:border-box; background:rgba(255,255,255,.94);
  border:1px solid rgba(0,0,0,.07); border-radius:14px; padding:11px 14px;
  box-shadow:0 1px 2px rgba(0,0,0,.05), 0 8px 20px rgba(0,0,0,.06);
  cursor:pointer; transition:box-shadow .18s, border-color .18s, transform .18s; user-select:none; -webkit-user-select:none; }
.plink-node:hover{ box-shadow:0 2px 6px rgba(0,0,0,.06), 0 14px 30px rgba(0,0,0,.10); transform:translateY(-1px); }
.plink-node.selected{ border-color:var(--primary); box-shadow:0 2px 8px rgba(26,92,255,.20), 0 12px 28px rgba(26,92,255,.14); }
.pn-name{ display:block; font-size:14px; font-weight:600; color:#1d1d1f; letter-spacing:-.01em; }
.pn-tag{ display:inline-block; margin-top:6px; font-size:11px; padding:2px 9px; border-radius:7px; }
.pn-badge{ float:right; font-size:11px; color:#86868b; background:#f0f1f4; border-radius:7px; padding:1px 7px; }

/* v1.7.659：拖拽时禁止文字被选中 */
.plink-canvas-wrap{ user-select:none; -webkit-user-select:none; }
.plink-canvas-wrap.plink-unselectable, .plink-canvas-wrap.plink-unselectable *{ user-select:none !important; -webkit-user-select:none !important; }

/* v1.7.655：人才节点 —— 两行长条（v1.7.662：默认无色，打意愿标签才上色） */
.plink-node-cand{ width:200px; min-height:36px; padding:8px 12px; background:rgba(255,255,255,.94); border:1px solid rgba(0,0,0,.07); border-radius:14px;
  box-shadow:0 1px 2px rgba(0,0,0,.05), 0 8px 20px rgba(0,0,0,.06); }
.plink-node-cand.selected{ border-color:var(--primary); box-shadow:0 2px 8px rgba(26,92,255,.22), 0 12px 28px rgba(26,92,255,.14); }
.pn-cand-row{ display:flex; align-items:center; gap:7px; line-height:1.5; overflow:hidden; white-space:nowrap; }
.pn-cand-row + .pn-cand-row{ margin-top:2px; }
.pn-cand-name{ font-size:14px; font-weight:700; color:#1d1d1f; letter-spacing:-.01em; }
/* v2.0.1133：优质人选标示 = 认证圆章+对勾（verified 风格，商用正式），与详情页「收藏简历」五角星明确区分；
   数据走 plink_nodes.star 全体共享，纯标示不可点（个人收藏才可点） */
.pn-star{ position:absolute; top:-7px; right:-7px; width:22px; height:22px; line-height:1; z-index:2; pointer-events:none; color:#f5a623; }
.pn-star svg{ width:100%; height:100%; display:block; filter:drop-shadow(0 0 1px rgba(255,255,255,.95)) drop-shadow(0 1px 2px rgba(0,0,0,.18)); }
.pn-cand-sub{ font-size:12px; color:#6e7682; flex-shrink:0; }
.pn-cand-co{ font-size:12.5px; color:#4a5a6a; overflow:hidden; text-overflow:ellipsis; }
.pn-cand-po{ font-size:12.5px; color:#4a5a6a; overflow:hidden; text-overflow:ellipsis; }
/* v1.8.724：简历节点第三行 —— 节点备注（独立自由文本，与意愿标签无关）；单行省略，完整内容见 title 悬停 */
.pn-cand-note{ margin-top:3px; padding-top:3px; border-top:1px solid rgba(0,0,0,.06); font-size:11.5px; color:#86868b; line-height:1.5; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* v1.7.655：节点拖拽状态 */
.plink-node.plink-dragging-node{ opacity:.6; z-index:50; box-shadow:0 8px 24px rgba(0,0,0,.16); transform:scale(1.02); }
.plink-node.pnd-target{ border-color:var(--primary); box-shadow:0 0 0 3px rgba(26,92,255,.22); }
/* v1.8.705：吸附态橙色主题 —— 目标节点、预览连接线、虚影占位框统一橙色 */
.plink-placeholder{ position:absolute; border:2px dashed var(--primary); background:rgba(26,92,255,.08);
  border-radius:14px; box-sizing:border-box; pointer-events:none; z-index:40; }
.plink-node.pnd-drag-orange{ border-color:var(--orange) !important; box-shadow:0 0 0 3px rgba(255,125,0,.32) !important; }
.plink-edge-drag-orange{ stroke:var(--orange) !important; stroke-dasharray:none !important; stroke-width:2 !important; }
.plink-placeholder-orange{ border-color:var(--orange) !important; background:rgba(255,125,0,.12) !important; }

/* 人才节点右侧详情：姓名超链接 */
.pd-cand-link{ color:var(--primary); text-decoration:none; font-weight:700; }
.pd-cand-link:hover{ text-decoration:underline; }
.pd-k{ color:#86868b; }

/* v1.7.661：简历节点意愿标签按钮 */
.pd-label-title{ font-size:12.5px; color:#6e7682; margin:2px 0 7px; }
.pd-label-row{ display:flex; flex-wrap:wrap; gap:7px; margin-bottom:14px; }
.pd-label-btn{ font-size:12px; padding:4px 12px; border-radius:8px; background:#fff; color:#333; border:1.5px solid; cursor:pointer; transition:all .14s; }
.pd-label-btn:hover{ transform:translateY(-1px); box-shadow:0 2px 8px rgba(0,0,0,.10); }
.pd-label-btn.on{ color:#fff !important; }
/* v2.0.1133：认证章按钮（优质人选），金色 #f5a623；选中态填充金底白字（与高/中/低意愿按钮同语言） */
.pd-star-btn{ font-size:12px; padding:4px 12px; border-radius:8px; background:#fff; color:#f5a623; border:1.5px solid #f5a623; cursor:pointer; transition:all .14s; display:inline-flex; align-items:center; gap:4px; }
.pd-star-btn svg{ width:14px; height:14px; color:#f5a623; flex:none; }
.pd-star-btn:hover{ transform:translateY(-1px); box-shadow:0 2px 8px rgba(245,166,35,.25); }
.pd-star-btn.on{ background:#f5a623; color:#fff; }
.pd-star-btn.on svg{ color:#fff; }

/* v1.7.654：节点内联改名输入框 */
.plink-inline-input{ width:100%; box-sizing:border-box; font-size:14px; font-weight:600; color:#1d1d1f;
  border:1.5px solid var(--primary); border-radius:8px; padding:3px 8px; outline:none; box-shadow:0 0 0 3px rgba(26,92,255,.12); }

/* 右侧详情：半透明毛玻璃面板 */
.plink-detail{ width:344px; flex:0 0 344px;
  background:rgba(251,251,253,.72);
  backdrop-filter:blur(12px) saturate(180%); -webkit-backdrop-filter:blur(12px) saturate(180%);
  border-left:1px solid rgba(0,0,0,.07);
  padding:22px; overflow-y:auto; min-height:0; position:relative; z-index:4; }
.plink-detail-empty{ color:#a1a8b3; font-size:14px; text-align:center; margin-top:48px; }
.pd-head{ font-size:19px; font-weight:700; color:#1d1d1f; letter-spacing:-.02em; line-height:1.3; }
.pd-actions{ display:flex; flex-wrap:wrap; gap:8px; margin:16px 0; }
.pd-actions .btn{ border-radius:9px; font-size:13px; padding:7px 13px; transition:background .15s, box-shadow .15s, border-color .15s; background:rgba(255,255,255,.8); }
.pd-actions .btn:hover{ box-shadow:0 2px 10px rgba(26,92,255,.16); }
.pd-info{ font-size:12.5px; color:#86868b; margin-bottom:16px; }
.pd-cands-title{ font-size:13.5px; font-weight:600; color:#1d1d1f; margin-bottom:10px; letter-spacing:-.01em; }
.pd-cand{ position:relative; border:1px solid rgba(0,0,0,.07); border-radius:14px; padding:12px 13px; margin-bottom:10px;
  background:rgba(255,255,255,.9); box-shadow:0 1px 2px rgba(0,0,0,.04), 0 6px 16px rgba(0,0,0,.05); }
.pdc-name{ font-size:14px; font-weight:600; color:#1d1d1f; }
.pdc-tag{ font-size:11px; color:var(--primary); background:rgba(26,92,255,.10); border-radius:6px; padding:1px 7px; margin-left:4px; }
.pdc-meta{ font-size:12px; color:#86868b; margin-top:5px; }
.pdc-unbind{ position:absolute; top:12px; right:12px; font-size:12px; color:#f5222d; cursor:pointer; }
.pdc-unbind:hover{ text-decoration:underline; }
/* v1.8.703：人才节点详情 —— 简历备注记录 */
.pd-notes-title{ font-size:13.5px; font-weight:600; color:#1d1d1f; margin-bottom:10px; margin-top:4px; letter-spacing:-.01em; }
.pd-notes-item{ border:1px solid rgba(0,0,0,.07); border-radius:14px; padding:11px 13px; margin-bottom:9px;
  background:rgba(255,255,255,.9); box-shadow:0 1px 2px rgba(0,0,0,.04); }
.pd-notes-text{ font-size:12.5px; color:#1d1d1f; line-height:1.6; white-space:pre-wrap; word-break:break-word; }
.pd-notes-meta{ font-size:11.5px; color:#a1a8b3; margin-top:6px; display:flex; gap:10px; }
.pd-notes-op{ color:var(--primary); }
.pd-notes-empty{ font-size:12.5px; color:#a1a8b3; padding:4px 0; }

/* 弹窗：毛玻璃遮罩 + 大圆角 + 分层柔影 */
.plink-modal-mask{ position:fixed; inset:0; z-index:calc(var(--z-detail) + 10);
  background:rgba(20,28,45,.28); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
  display:flex; align-items:center; justify-content:center; }
.plink-modal{ width:440px; max-width:92vw; max-height:88vh; overflow-y:auto;
  background:rgba(255,255,255,.92); backdrop-filter:blur(30px) saturate(180%); -webkit-backdrop-filter:blur(30px) saturate(180%);
  border:1px solid rgba(255,255,255,.6); border-radius:20px;
  box-shadow:0 2px 10px rgba(0,0,0,.12), 0 24px 60px rgba(0,0,0,.22); padding:26px 26px 20px; }
.plink-modal-wide{ width:700px; }
.plink-modal-title{ font-size:19px; font-weight:700; color:#1d1d1f; margin-bottom:16px; letter-spacing:-.02em; }
.plink-modal label{ display:block; font-size:12.5px; color:#6e7682; margin:14px 0 6px; }
.plink-modal input, .plink-modal textarea, .plink-modal select{ width:100%; box-sizing:border-box; padding:10px 12px; font-size:13.5px; color:#1d1d1f;
  border:1px solid rgba(0,0,0,.12); border-radius:10px; outline:none; transition:border-color .15s, box-shadow .15s; background:rgba(255,255,255,.9); font-family:inherit; }
.plink-modal input:focus, .plink-modal textarea:focus, .plink-modal select:focus{ border-color:var(--primary); box-shadow:0 0 0 3px rgba(26,92,255,.12); }
.plink-modal textarea{ resize:vertical; }
.plink-modal-actions{ display:flex; justify-content:flex-end; gap:10px; margin-top:20px; }
.plink-modal .btn{ border-radius:9px; padding:8px 18px; font-weight:500; background:rgba(255,255,255,.8); }
.plink-modal .btn:hover{ background:#fff; }
.plink-modal .btn-primary{ background:linear-gradient(180deg,#2f6bff,var(--primary)); border-color:transparent; color:#fff; box-shadow:0 1px 3px rgba(26,92,255,.35); }
.plink-modal .btn-primary:hover{ background:linear-gradient(180deg,#3b74ff,var(--primary-d)); }
.plink-color-row{ display:flex; gap:12px; margin-top:6px; }
.plink-color-dot{ width:26px; height:26px; border-radius:8px; cursor:pointer; border:2px solid transparent; transition:.14s; }
.plink-color-dot:hover{ transform:scale(1.08); }
.plink-color-dot.on{ border-color:#1d1d1f; box-shadow:0 0 0 2px #fff inset; }

/* 绑定人才弹窗 */
.plink-search-row{ display:flex; gap:10px; margin-bottom:16px; }
.plink-search-row input{ flex:1 1 auto; }
.plink-cand-list{ max-height:52vh; overflow-y:auto; }
.pb-cand{ display:flex; align-items:flex-start; justify-content:space-between; gap:12px;
  border:1px solid rgba(0,0,0,.07); border-radius:14px; padding:13px 15px; margin-bottom:10px;
  background:rgba(255,255,255,.92); box-shadow:0 1px 2px rgba(0,0,0,.04), 0 6px 16px rgba(0,0,0,.05); }
.pbc-name{ font-size:14.5px; font-weight:600; color:#1d1d1f; }
.pbc-co{ font-size:12.5px; color:#86868b; font-weight:400; margin-left:6px; }
.pbc-meta{ font-size:12.5px; color:#86868b; margin-top:4px; }

/* 看板弹窗（保留样式，当前未使用） */
.ps-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-bottom:14px; }
.ps-item{ background:rgba(247,249,252,.9); border:1px solid rgba(0,0,0,.06); border-radius:14px; padding:18px 12px; text-align:center; }
.ps-num{ font-size:24px; font-weight:700; color:var(--primary); }
.ps-tip{ font-size:12.5px; color:#5a6678; background:rgba(26,92,255,.06); border-radius:10px; padding:11px 13px; line-height:1.6; }

/* v1.8.723：拖拽 / 平移 / 缩放进行中，临时关闭毛玻璃 —— 消除背后画布每帧重算模糊的卡顿；
   静止时仍恢复苹果风毛玻璃（面板保留半透明白底，观感无损） */
.plink-view.is-interacting .plink-topbar,
.plink-view.is-interacting .plink-side,
.plink-view.is-interacting .plink-detail{ backdrop-filter:none !important; -webkit-backdrop-filter:none !important; }
.plink-view.is-interacting .plink-topbar .btn,
.plink-view.is-interacting .plink-topbar .plink-undo-btn{ backdrop-filter:none !important; -webkit-backdrop-filter:none !important; }

/* v1.8.791：详情页备注(tab .note-body / 侧边栏 .side-note-text)、面试评价(.eval-comment 已带)、CRM提醒(.rem-item-content / 全屏 .rem-row-content) 支持换行显示（white-space:pre-wrap） */
.note-body{ white-space:pre-wrap; word-break:break-word; line-height:1.6; }
.rem-row-content{ white-space:pre-wrap; word-break:break-word; line-height:1.5; }

/* v1.8.874：设置页「评价模板」重做——顶部功能区 / 评价内容列表 / 适用职位 三区 */
.evtpl2-toolbar{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:12px; }
.evtpl2-toolbar select{ flex:1 1 180px; min-width:160px; max-width:280px; padding:7px 10px; font-size:13px; border:1px solid var(--border); border-radius:6px; background:#fff; font-family:inherit; color:var(--text); }
.evtpl2-toolbar select:focus{ outline:none; border-color:var(--primary); box-shadow:0 0 0 3px rgba(26,92,255,.10); }
.evtpl2-empty{ margin-top:16px; padding:24px; text-align:center; color:var(--muted); font-size:13px; border:1px dashed var(--border); border-radius:10px; }
.evtpl2-sec{ border:1px solid var(--border); border-radius:10px; padding:12px 14px; margin-bottom:12px; background:#fff; }
.evtpl2-name-row{ display:flex; align-items:center; gap:10px; margin-bottom:12px; }
.evtpl2-name-row label{ font-size:13px; font-weight:600; flex:none; }
.evtpl2-name-row input{ flex:1; min-width:0; max-width:360px; padding:7px 10px; font-size:13px; border:1px solid var(--border); border-radius:6px; font-family:inherit; color:var(--text); }
.evtpl2-name-row input:focus{ outline:none; border-color:var(--primary); box-shadow:0 0 0 3px rgba(26,92,255,.10); }
.evtpl2-sec-head{ display:flex; align-items:center; gap:10px; margin-bottom:10px; font-size:14px; }
.evtpl2-sec-head b{ font-weight:600; }
/* 评价内容行：序号 + 输入框（左）+ 阶段勾选框（右）+ 删除按钮；同行垂直居中 */
/* v1.8.876：条目卡片化（主行 + 类型下拉 + dim/select 子项编辑区） */
.evtpl2-item-card{ position:relative; border:1px solid var(--border); border-radius:10px; padding:8px 12px 8px 32px; margin-bottom:10px; background:#fff; }
.evtpl2-drag-handle{ position:absolute; top:50%; left:8px; transform:translateY(-50%); width:18px; height:36px; display:flex; align-items:center; justify-content:center; cursor:grab; color:#bbb; font-size:14px; line-height:1; letter-spacing:1px; user-select:none; touch-action:none; }
.evtpl2-drag-handle:active{ cursor:grabbing; }
.evtpl2-drag-handle:hover{ color:#888; }
.evtpl2-item-row{ display:flex; align-items:center; gap:8px; padding:2px 0; }
.evtpl2-item-idx{ flex:0 0 22px; text-align:center; font-size:12px; color:var(--muted); }
.evtpl2-item-content{ flex:1 1 200px; min-width:0; padding:6px 10px; font-size:13px; border:1px solid var(--border); border-radius:6px; font-family:inherit; color:var(--text); }
.evtpl2-item-content:focus{ outline:none; border-color:var(--primary); box-shadow:0 0 0 3px rgba(26,92,255,.10); }
.evtpl2-type-select{ flex:0 0 auto; padding:6px 8px; font-size:12px; border:1px solid var(--border); border-radius:6px; background:#fff; font-family:inherit; color:var(--text); }
.evtpl2-stages{ display:flex; align-items:center; gap:4px 12px; flex-wrap:wrap; flex:0 0 auto; }
.evtpl2-stage{ display:inline-flex; align-items:center; gap:4px; font-size:12px; color:var(--text); cursor:pointer; white-space:nowrap; }
.evtpl2-stage input[type=checkbox]{ accent-color:var(--primary); margin:0; }
/* v2.0.1028：轮次分隔标题——专业章节风格（左色点 + 标题 + 副标题 + 细线分割） */
.evtpl2-round-title{ display:flex; align-items:center; gap:10px; margin:20px 0 12px; padding:10px 0 8px;
  border-bottom:1px solid rgba(26,92,255,.30); }
.evtpl2-round-title-muted{ border-bottom-color:#e5e7eb; }
.evtpl2-round-dot{ display:inline-block; width:8px; height:8px; border-radius:50%;
  background:var(--primary); flex-shrink:0; }
.evtpl2-round-title-muted .evtpl2-round-dot{ background:#b0bac6; }
.evtpl2-round-label{ font-size:15px; font-weight:600; color:#1d1d1f; letter-spacing:.01em; }
.evtpl2-round-title-muted .evtpl2-round-label{ color:#86909c; }
.evtpl2-round-sub{ font-size:12px; color:#86909c; font-weight:400; margin-left:4px; }
/* v1.8.892：条目必填徽标与勾选 */
.evtpl2-required-badge{ flex:0 0 auto; font-size:11px; color:#fff; background:#f53f3f; border-radius:4px; padding:1px 6px; white-space:nowrap; }
.evtpl2-required-label{ display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--text); cursor:pointer; }
.evtpl2-required-label input[type=checkbox]{ accent-color:var(--primary); margin:0; width:14px; height:14px; flex:0 0 auto; }
/* v1.8.892：消费端（share 页/详情页评价）必填标记 */
.tpl-req{ color:#f53f3f; font-weight:600; margin-left:4px; font-size:12px; }
.evtpl2-item-del{ flex:0 0 auto; color:#f53f3f; border:1px solid #fde2e2; background:#fff; border-radius:6px; padding:4px 9px; font-size:12px; cursor:pointer; }
.evtpl2-item-del:hover{ background:#fff2f2; }
/* dim/select 子项编辑区（子维度/选项，可任意加减） */
.evtpl2-children{ margin:8px 0 2px 30px; padding:8px 10px; background:#f7f8fa; border-radius:8px; }
.evtpl2-children-head{ font-size:12px; font-weight:600; margin-bottom:6px; }
.evtpl2-children-empty{ margin-bottom:6px; }
.evtpl2-opt-row{ display:flex; align-items:center; gap:6px; margin-bottom:6px; }
.evtpl2-opt-input{ flex:1; min-width:0; padding:5px 10px; font-size:12px; border:1px solid var(--border); border-radius:6px; font-family:inherit; color:var(--text); background:#fff; }
.evtpl2-opt-input:focus{ outline:none; border-color:var(--primary); box-shadow:0 0 0 3px rgba(26,92,255,.10); }
.evtpl2-opt-del{ flex:0 0 auto; color:#f53f3f; border:1px solid #fde2e2; background:#fff; border-radius:6px; padding:3px 8px; font-size:11px; cursor:pointer; }
.evtpl2-opt-del:hover{ background:#fff2f2; }
.evtpl2-add-btns{ display:flex; align-items:center; gap:8px; margin-top:8px; }

/* v1.8.878：部门/岗位分组多选（模板适用范围）——复用 excel-multi 面板样式，列表分层 */
.evtpl2-dp-list{ max-height:450px; overflow-y:auto; }  /* v1.8.898：拉长50% 380→570/300→450 */
.evtpl2-dp-panel{ max-width:780px; min-width:450px; }
.evtpl2-dp-group{ margin-bottom:2px; }
.evtpl2-dp-dept{ display:flex; align-items:center; gap:6px; padding:6px 8px; font-size:13px; font-weight:600; color:var(--text); cursor:pointer; background:#f7f8fa; border-radius:6px; margin:4px 0 2px; }
.evtpl2-dp-dept:hover{ background:#f0f2f5; }
.evtpl2-dp-dept input{ accent-color:var(--primary); margin:0; flex:none; }
.evtpl2-dp-dept.indeterminate input{ accent-color:#86909c; }
.evtpl2-dp-cnt{ margin-left:auto; font-size:11px; font-weight:400; color:var(--muted); }
.evtpl2-dp-dept.evtpl2-dp-none{ cursor:default; font-weight:400; color:var(--muted); font-size:12px; }
.evtpl2-dp-pos{ display:flex; align-items:center; gap:6px; padding:4px 8px 4px 26px; font-size:13px; color:var(--text); cursor:pointer; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.evtpl2-dp-pos:hover{ background:rgba(26,92,255,.05); border-radius:4px; }
.evtpl2-dp-pos input{ accent-color:var(--primary); margin:0; flex:none; }

/* v1.8.877：预览态（所见即所得）——按填写评价时的真实样子渲染 */
.evtpl2-preview .evtpl2-preview-head{ display:flex; align-items:center; gap:8px; margin-bottom:8px; flex-wrap:wrap; }
.evtpl2-preview-type{ flex:none; font-size:11px; color:var(--primary); background:rgba(26,92,255,.08); border-radius:4px; padding:2px 6px; }
.evtpl2-preview-title{ flex:1 1 auto; min-width:120px; font-size:14px; font-weight:600; color:var(--text); }
.evtpl2-preview-title.evtpl2-unnamed{ color:var(--muted); font-style:italic; font-weight:400; }
.evtpl2-preview-stages{ flex:0 0 auto; display:flex; align-items:center; gap:4px; }
.evtpl2-stage-badge{ font-size:11px; color:#00b42a; background:#e8ffea; border:1px solid #b7ebc0; border-radius:4px; padding:1px 6px; white-space:nowrap; }
.evtpl2-preview-ops{ flex:0 0 auto; display:flex; align-items:center; gap:6px; }
.evtpl2-preview-edit{ font-size:12px; color:var(--primary); background:#fff; border:1px solid rgba(26,92,255,.35); border-radius:6px; padding:3px 10px; cursor:pointer; }
.evtpl2-preview-edit:hover{ background:rgba(26,92,255,.06); }
.evtpl2-preview-del{ color:#f53f3f; border:1px solid #fde2e2; background:#fff; border-radius:6px; padding:3px 8px; font-size:12px; cursor:pointer; }
.evtpl2-preview-del:hover{ background:#fff2f2; }
.evtpl2-preview-body{ padding:2px 4px 4px; }
/* 维度预览：子维度行 + 三档徽标（参照评价弹窗 .chip 配色） */
.evtpl2-dim-row{ display:flex; align-items:center; gap:8px; padding:5px 0; border-bottom:1px dashed #eceef1; }
.evtpl2-dim-row:last-child{ border-bottom:none; }
.evtpl2-dim-name{ flex:1; min-width:0; font-size:13px; color:var(--text); }
.evtpl2-chip{ flex:none; font-size:11px; border-radius:4px; padding:1px 7px; }
.evtpl2-chip.good{ color:#00b42a; background:#e8ffea; }
.evtpl2-chip.mid{ color:#ff7d00; background:#fff7e8; }
.evtpl2-chip.weak{ color:#f53f3f; background:#ffece8; }
/* 下拉/文本框预览：模拟真实控件 */
.evtpl2-preview-select{ width:100%; max-width:280px; padding:6px 10px; font-size:13px; border:1px solid var(--border); border-radius:6px; background:#fafbfc; color:var(--muted); font-family:inherit; }
.evtpl2-preview-textarea{ width:100%; padding:7px 10px; font-size:13px; border:1px solid var(--border); border-radius:6px; background:#fafbfc; color:var(--muted); font-family:inherit; resize:none; cursor:default; }
/* 编辑态表单 */
.evtpl2-editing{ border-color:var(--primary); box-shadow:0 0 0 3px rgba(26,92,255,.10); }
.evtpl2-edit-form{ display:flex; flex-direction:column; gap:10px; }
.evtpl2-edit-field > label{ display:block; font-size:12px; font-weight:600; color:var(--text); margin-bottom:5px; }
.evtpl2-edit-field .evtpl2-item-content,
.evtpl2-edit-field .evtpl2-ph-input{ width:100%; padding:7px 10px; font-size:13px; border:1px solid var(--border); border-radius:6px; font-family:inherit; color:var(--text); box-sizing:border-box; }
.evtpl2-edit-field .evtpl2-item-content:focus,
.evtpl2-edit-field .evtpl2-ph-input:focus{ outline:none; border-color:var(--primary); box-shadow:0 0 0 3px rgba(26,92,255,.10); }
.evtpl2-edit-actions{ display:flex; align-items:center; gap:10px; margin-top:2px; }

/* ===== v1.9.967：安排面试弹窗——800px 宽 + 全字段左右排列 + 面试时间三框 =====
   ⚠️ 用 #interviewModal .iv-* 复合选择器，特异性严格大于 .modal{width:400px} /
   .modal-lg{width:600px} / .modal label{display:block}，避免被覆盖 */

#interviewModal .modal{ width:800px; max-width:92vw; min-height:auto; }
#interviewModal .iv-grid{ display:grid; grid-template-columns:1fr 1fr; gap:12px 18px; margin-top:4px; }
#interviewModal .iv-row:not(.iv-hidden){ display:flex; align-items:flex-start; gap:10px; min-width:0; }
#interviewModal .iv-hidden{ display:none !important; }
#interviewModal .iv-row-full{ grid-column:1 / -1; }
#interviewModal .iv-lb{ display:block; flex:0 0 76px; margin:0; padding-top:9px; font-size:12px; color:var(--sub); text-align:right; white-space:nowrap; }
/* ===== 必填星标设计规范（v2.0.1015 定稿，v2.0.1017 全系统统一） =====
   必填字段统一用 class="req" 标记 + CSS ::before 内联显示：
   - display:inline-block + margin-right:4px —— 星标在标题文字紧贴左侧，
     不脱离文档流（禁止 absolute 定位，会离文字过远）
   - color:#f53f3f 红色 + font-weight:600
   适用范围：所有弹窗/表单的必填 label（安排面试、面试评价、新增候选人、
   新增职位、导入功能的手动新增等） */
.req{ position:relative; }
.req::before{
  content:'*'; color:#f53f3f; font-size:14px; line-height:1;
  margin-right:4px; font-weight:600; display:inline-block;
}
/* 兼容 v2.0.1014/1015 已用的 .iv-req（保留别名，避免漏改） */
.iv-req{ position:relative; }
.iv-req::before{
  content:'*'; color:#f53f3f; font-size:14px; line-height:1;
  margin-right:4px; font-weight:600; display:inline-block;
}
#interviewModal .iv-ctl{ flex:1; min-width:0; }
#interviewModal .iv-time-row{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
#interviewModal .iv-date-wrap{ display:flex; align-items:center; gap:4px; }
#interviewModal .iv-date-wrap input[type=date]{ width:138px; }
#interviewModal .iv-weekday{ font-size:12px; color:var(--primary); background:#eef3ff; border-radius:4px; padding:2px 7px; white-space:nowrap; min-width:32px; text-align:center; }
#interviewModal .iv-time-row input.iv-time-box{ width:104px; text-align:center; letter-spacing:.5px; }
#interviewModal .iv-time-sep{ color:var(--sub); font-size:13px; }
#interviewModal .iv-time-row #ivStartTime{ margin-left:10px; }

/* ===== v1.10.978：主界面左侧导航 + tab 切换骨架 ===== */
/* 视觉规范对齐既有 .sidebar / .pos-item（白底、圆角 8px、无图标、无彩色） */
.app-sidebar{
  position:fixed; left:0; top:var(--topbar-h); bottom:0; z-index:50;
  width:158px; background:var(--panel); border-right:1px solid var(--border);
  display:flex; flex-direction:column;
  padding:10px 8px; gap:1px;        /* v1.10.1008：上下 padding 一致、gap 收紧 */
  overflow-y:auto; font-size:14px;
  /* v1.10.991：柔和右边界 */
  box-shadow:1px 0 4px rgba(0,0,0,.04);
}
/* v1.10.1008：统一每个 nav-item——固定高度 + flex 居中，
   让 SVG / 文字 / 箭头 在「所有 tab、tab 长度」下视觉对齐：
   左对齐、垂直居中、上下间距一致 */
.app-sidebar .nav-item{
  display:flex; align-items:center; gap:8px;
  height:36px; padding:0 10px;
  border-radius:8px; color:var(--text);
  text-decoration:none; transition:background .12s, color .12s;
  cursor:pointer; user-select:none;
  white-space:nowrap;                /* 禁换行，保证左右对齐 */
}
/* v1.10.982：线性 SVG 图标，stroke=currentColor —— 颜色自动跟随文字，
   默认中性灰、hover/active 转主色，不存在"多余的颜色" */
.app-sidebar .nav-ico{
  /* v1.10.1003：显式 flex: 0 0 16px 强制 basis 16px。
     钉钉 WebView 某些版本对 SVG 元素的 CSS width/height 渲染不可靠，
     会回退到 viewBox 推断的 24x24，导致侧边栏图标巨大、文字被挤成单字换行。
     配合 HTML 的 width=\"16\" height=\"16\" 属性双保险 */
  width:16px; height:16px; flex:0 0 16px; min-width:0; display:block;
}
.app-sidebar .nav-txt{ flex:1; min-width:0; }
/* v1.10.982：按字数微调字距（JS 打 .nav-len2/3/4 class）——
   让 2 字（首页/职位/设置）与 3 字（候选人）、4 字（人才运营）视觉宽度接近，右边缘更齐 */
.app-sidebar .nav-item.nav-len2 .nav-txt{ letter-spacing:.35em; text-indent:.35em; }
.app-sidebar .nav-item.nav-len3 .nav-txt{ letter-spacing:.1em; text-indent:.1em; }
.app-sidebar .nav-item.nav-len4 .nav-txt{ letter-spacing:0; }
.app-sidebar .nav-item:hover{ background:var(--bg); }
.app-sidebar .nav-item.active{
  background:#eef3ff; color:var(--primary); font-weight:600;
}
.app-sidebar .nav-item.nav-expanded{ background:var(--bg); }   /* 人才运营展开时浅底提示 */

.app-body{ display:flex; min-height:calc(100vh - var(--topbar-h)); }
/* v1.10.990：默认紧贴 sidebar（让出 150 宽度即可，不留 gap）。
   原 padding-left:166px 中多余的 16px gap 会透出 body 灰色背景，
   与白底 sidebar 形成一条难看的灰竖条。
   v1.10.991：首页例外——首页主体本就是大块灰色背景（卡片散落在灰底上），
   留 16px gap 反而让过渡更协调，故用 .app-main--gap 单独给首页加回来 */
.app-main{ flex:1; min-width:0; padding:0 16px 16px 162px; }   /* 158 sidebar + 4 gap（v2.0.1056：缩 2px 贴合 sidebar） */
.app-main.app-main--gap{ padding-left:182px; }                 /* 首页：158 + 8 + 16 */
.tab-view{ display:none; }
.tab-view.active{ display:block; }
.tab-placeholder{
  margin:80px auto; max-width:520px; padding:40px 24px;
  text-align:center; color:var(--muted); font-size:14px;
  background:#fafbfc; border:1px dashed var(--border); border-radius:10px;
}

/* ===== v1.10.980：首页 tab（待处理 + 内嵌面试日历） ===== */
.home-wrap{ padding:16px 0 0; }
.home-sec-title{
  font-size:13px; font-weight:600; color:var(--sub); margin:0 0 10px;
}

/* 待处理：4 项卡片（v2.0.1025：删"待推进面试"剩 4 项） */
.home-pending-grid{
  display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:24px;
}
.home-pend-card{
  background:var(--panel); border:1px solid var(--border); border-radius:10px;
  padding:16px 18px; box-shadow:0 1px 2px rgba(0,0,0,.04);
  cursor:pointer; transition:transform .15s, box-shadow .15s, border-color .15s;
}
.home-pend-card:hover{ border-color:var(--primary); box-shadow:0 2px 10px rgba(26,92,255,.10); transform:translateY(-1px); }
.home-pend-card:active{ transform:translateY(0); }
.home-pend-num{ font-size:24px; font-weight:700; color:var(--text); line-height:1.2; }
.home-pend-label{ font-size:12px; color:var(--sub); margin-top:4px; }

/* 内嵌面试日历：复用既有 .cal-grid / .cal-cell / .cal-weekdays 视觉 */
.home-cal-box{
  background:var(--panel); border:1px solid var(--border); border-radius:10px;
  padding:16px 18px; box-shadow:0 1px 2px rgba(0,0,0,.04);
}
.home-cal-head{
  display:flex; align-items:center; justify-content:space-between; margin-bottom:12px;
}
.home-cal-title{ font-size:14px; font-weight:600; color:var(--text); }
.home-cal-arrows{ display:flex; align-items:center; gap:6px; }
.home-cal-arrows button{
  border:1px solid var(--border); background:var(--panel); border-radius:6px;
  cursor:pointer; padding:3px 9px; font-size:12px; color:var(--text);
  font-family:inherit; transition:.15s;
}
.home-cal-arrows button:hover{ background:#f0f4ff; border-color:var(--primary); }
.home-cal-body{ display:flex; gap:20px; align-items:flex-start; }
.home-cal-month{ width:250px; flex-shrink:0; }
.home-cal-list{ flex:1; min-width:0; max-height:300px; overflow-y:auto; }
/* v1.10.981：列表区固定最小高度，切换日期时不会因内容多少而撑高/塌缩导致页面跳动 */
.home-cal-list{ min-height:220px; }
.home-cal-empty{ font-size:13px; color:var(--muted); padding:8px 0; }
/* 网格容器固定最小高度，避免"加载中"与真实网格高度差导致跳动 */
#homeCalGrid{ min-height:180px; align-content:start; }

/* 窄屏：待处理 4 列 -> 2 列 -> 2 列；日历改为上下堆叠 */
@media (max-width:1200px){
  .home-pending-grid{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:900px){
  .home-pending-grid{ grid-template-columns:repeat(2,1fr); }
  .home-cal-body{ flex-direction:column; }
  .home-cal-month{ width:100%; }
}

/* ===== v1.10.983：人才运营展开箭头 + 子侧边栏 ===== */
.app-sidebar .nav-item.nav-parent{ /* 与普通 nav-item 一致，无需额外样式 */ }
/* 右侧箭头：默认向下（▼），展开时旋转 180°（▲） */
.app-sidebar .nav-arrow{
  width:14px; height:14px; flex-shrink:0; margin-left:auto;
  transition:transform .2s ease; display:block;
}
.app-sidebar .nav-item.nav-expanded .nav-arrow{ transform:rotate(180deg); }
.app-sidebar .nav-item.nav-expanded{ background:var(--bg); }   /* 展开时给个浅底提示 */
/* v1.10.985：子项改为在「人才运营」下方展开（不再独立成列）。
   随侧边栏 flow 布局，缩进到父项文字位置，与主侧边栏同一底色 */
.nav-sub-panel{
  display:none; margin:1px 0 4px; padding:0 8px 0 34px;
  font-size:14px;   /* v1.10.1004：与侧边栏统一 14px（人才库/Plink 子项） */
}
.nav-sub-panel.open{ display:block; }
.nav-sub-panel .nav-sub-item{
  display:block; padding:7px 10px; border-radius:6px; margin-bottom:2px;
  color:var(--text); text-decoration:none;
  transition:background .12s, color .12s; cursor:pointer;
}
.nav-sub-panel .nav-sub-item:hover{ background:var(--bg); color:var(--primary); }
.nav-sub-panel .nav-sub-item.active{ background:#dbe6ff; color:var(--primary); font-weight:600; }

/* ===== v1.10.986：设置内嵌到「设置」tab（原弹窗结构迁移，dash.html 仍用弹窗） ===== */
.set-view{
  background:var(--panel); border:1px solid var(--border); border-radius:10px;
  display:flex; flex-direction:column; overflow:hidden;
  height:calc(100vh - var(--topbar-h) - 32px);   /* topbar 60 + .app-main 上下 padding 各 16 */
}
.set-view .set-head{
  padding:14px 20px; font-size:15px; font-weight:600; color:var(--text);
  border-bottom:1px solid var(--border); flex-shrink:0;
}
.set-view .set-body{ flex:1; min-height:0; }

/* ===== v1.10.988：人才库内嵌到「人才运营 tab」右侧主区 =====
   原 .talent-pool-page 是 position:fixed 全屏独立页（会盖住顶栏+侧边栏），
   内嵌后改为面板：保留内部 overflow-y:auto（列表自己滚动，.tp-header sticky 吸顶），
   高度与 .set-view 一致，视觉对齐其他 tab 面板 */
#tabTalent .talent-pool-page{
  position:static; top:auto; left:auto; right:auto; bottom:auto;
  z-index:auto; overflow-y:auto;
  border:1px solid var(--border); border-radius:10px;
  height:calc(100vh - var(--topbar-h) - 32px);
}

/* ===== v1.10.993：职位设置内嵌到「职位」tab（原弹窗结构迁移） =====
   与 .set-view 同款：白底圆角面板 + 固定高度 + 内部 body 撑满；
   .pos-settings-content 原有 overflow-y:auto 继续生效（内容超高可滚动） */
.pos-view{
  background:var(--panel); border:1px solid var(--border); border-radius:10px;
  display:flex; flex-direction:column; overflow:hidden;
  height:calc(100vh - var(--topbar-h) - 32px);
}
.pos-view .pos-view-head{
  padding:14px 20px; font-size:15px; font-weight:600; color:var(--text);
  border-bottom:1px solid var(--border); flex-shrink:0;
}
.pos-view .pos-settings-body{ flex:1; min-height:0; }

/* ===== v1.10.997：首页左右两列——左列（待处理 + 面试日历，同宽）+ 右列（最近查看，高度 100% 撑满） ===== */
.home-columns{ display:flex; gap:12px; align-items:stretch; }
.home-col-left{ flex:1; min-width:0; }
.home-col-left .home-pending-grid{ margin-bottom:20px; }   /* v2.0.1036：原文 margin-bottom:0 导致「面试日历」标题紧贴「待处理」网格；改为 20px 留出视觉间隔 */
.home-col-left .home-cal{ margin-bottom:0; }
.home-col-right{
  width:360px; flex-shrink:0;
  display:flex; flex-direction:column; gap:12px;   /* v2.0.1019：两个模块（最近查看+收藏简历）上下排列 */
}
/* 最近查看 / 收藏简历 卡片：每个 flex:1 均分整列高度（两模块等高），内部滚动 */
.home-col-right .home-history-sec{ display:flex; flex-direction:column; flex:1; min-height:0; }
.home-col-right .home-history{
  flex:1; max-height:none; min-height:160px;
}
/* 最近查看卡片（基础样式） */
.home-history{
  background:var(--panel); border:1px solid var(--border); border-radius:10px;
  padding:6px 12px 8px; box-shadow:0 1px 2px rgba(0,0,0,.04);
  overflow-y:auto;
}
.home-history-empty{ font-size:12px; color:var(--muted); padding:16px 4px; }
/* v1.10.1012：每条 item 固定两行高度（姓名+阶段 / 公司·学校），
   即使未识别的简历没副行也不会塌缩到一行；hh-time 跟着垂直居中 */
.home-history-item{
  display:flex; align-items:center; gap:10px;
  min-height:58px; padding:8px 6px; border-radius:6px; cursor:pointer;
  border-bottom:1px solid #f0f2f5;
}
.home-history-item:hover{ background:var(--bg); }
.home-history-item:last-of-type{ border-bottom:none; }
.hh-main{ flex:1; min-width:0; }
.hh-top{ display:flex; align-items:center; gap:6px; }
.hh-top b{ font-size:13px; color:var(--text); font-weight:600; }
.hh-stage{ font-size:11px; color:var(--primary); background:#eef3ff; border-radius:4px; padding:1px 6px; flex-shrink:0; }
/* 即使内容为空也保留一行高度，避免主行上方塌缩（为「未识别」无履历的占位） */
.hh-sub{ font-size:12px; color:var(--sub); margin-top:2px; min-height:16px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.hh-time{ font-size:11px; color:var(--muted); flex-shrink:0; }
/* v2.0.1025：收藏列表行内星按钮（圆角 SVG，与详情页同款），收藏态描边黄、可点击取消 */
.hh-fav{ display:inline-flex; align-items:center; justify-content:center;
  flex-shrink:0; padding:4px; margin-right:-4px; border-radius:6px; cursor:pointer; transition:background .15s; }
.hh-fav:hover{ background:rgba(245,166,35,.10); }
.hh-fav .fav-star-on{ color:#f5a623; }
.home-history-foot{ text-align:right; padding:6px 2px 2px; }
.home-history-foot button{
  border:none; background:none; color:var(--sub); font-size:12px;
  cursor:pointer; font-family:inherit; padding:2px 4px;
}
.home-history-foot button:hover{ color:var(--primary); }   /* v1.10.998：「显示更多」hover 主色 */
/* 窄屏：左右两列改上下堆叠 */
@media (max-width:1100px){
  .home-columns{ flex-direction:column; }
  .home-col-right{ width:100%; }
}

/* ===== v1.10.998：历史记录侧滑面板（3/4 屏宽，右侧滑入，非全屏） ===== */
.history-panel-mask{
  position:fixed; inset:0; z-index:calc(var(--z-detail) - 1);
  background:rgba(0,0,0,.35); opacity:0; visibility:hidden;
  transition:opacity .15s ease, visibility .15s;
}
.history-panel-mask.show{ opacity:1; visibility:visible; }
.history-panel{
  position:fixed; top:0; right:0; bottom:0; z-index:var(--z-detail);
  width:75vw; max-width:1100px; min-width:520px;
  background:var(--bg); display:flex; flex-direction:column;
  box-shadow:-6px 0 24px rgba(0,0,0,.10);
  transform:translateX(102%); visibility:hidden;
  transition:transform .18s ease, visibility .18s;
}
.history-panel.show{ transform:translateX(0); visibility:visible; }
.hp-topbar{
  flex-shrink:0; display:flex; align-items:center; justify-content:space-between;
  padding:14px 20px; border-bottom:1px solid var(--border); background:var(--panel);
}
.hp-title{ font-size:17px; font-weight:700; color:var(--text); }
.hp-list{ flex:1; min-height:0; overflow-y:auto; padding:14px 22px 24px; }
.hp-empty{ font-size:13px; color:var(--muted); padding:24px 4px; }
/* 面板内条目：沿用全屏历史视图的 .hist-row 视觉（姓名/阶段/时间/公司·学校/查看） */
.hist-row{ cursor:pointer; }
.hist-row:hover{ background:var(--bg); }

/* ===== v1.10.1001：.tpl-card 内 input/textarea 统一样式（修浏览器默认黑色边框） =====
   此前 .tpl-card 重复定义但都只设 width:100%，未设 border，
   Chrome/WebView UA 给黑色 2px 实线边框（不美观、与项目浅灰风格冲突）。
   此处放在样式末尾以最高优先级覆盖前面的所有同名选择器。 */
.tpl-card input[type=text],
.tpl-card input[type=email],
.tpl-card input[type=tel],
.tpl-card input:not([type]),
.tpl-card textarea{
  width:100%; padding:7px 10px; font-size:13px; font-family:inherit;
  color:var(--text); box-sizing:border-box;
  border:1px solid var(--border); border-radius:6px; background:#fff;
  transition:border-color .15s, box-shadow .15s;
  outline:none;
}
.tpl-card-head .tpl-name{ padding:7px 10px; font-weight:600; }   /* 覆盖既有 .tpl-card-head .tpl-name 去掉默认 padding */
.tpl-card input:focus, .tpl-card textarea:focus{
  border-color:var(--primary);
  box-shadow:0 0 0 3px rgba(26,92,255,.10);
}
.tpl-card textarea{ resize:vertical; min-height:140px; line-height:1.6; }

/* ===== v1.10.1007：同步简历内嵌到「同步简历」tab（原弹窗结构迁移） =====
   与 .set-view 同款：白底圆角面板 + 固定高度；内部 sync-sheets 左侧列 +
   sync-content 右侧内容区，超高可滚动 */
.sync-view{
  background:var(--panel); border:1px solid var(--border); border-radius:10px;
  display:flex; flex-direction:column; overflow:hidden;
  height:calc(100vh - var(--topbar-h) - 32px);
}
.sync-view .sync-view-head{
  padding:14px 20px; font-size:15px; font-weight:600; color:var(--text);
  border-bottom:1px solid var(--border); flex-shrink:0;
}
.sync-view .sync-modal-body{ flex:1; min-height:0; }

/* ===== v1.10.1008：顶栏用户按钮 + 下拉 ===== */
.cur-user-btn{
  display:flex; align-items:center; gap:6px; height:32px;
  padding:0 12px; border-radius:8px;
  font:inherit; font-size:13px; color:var(--text);
  background:var(--bg); border:1px solid var(--border); cursor:pointer;
  transition:background .12s, border-color .12s;
}
.cur-user-btn:hover{ background:#eef0f4; border-color:var(--primary); }
.cur-user-text{ font-weight:500; }
.cur-user-caret{ font-size:10px; color:var(--sub); }

.user-dropdown{
  position:fixed; top:54px; right:12px; z-index:var(--z-detail);
  min-width:220px; max-width:280px;
  background:var(--panel); border:1px solid var(--border); border-radius:10px;
  box-shadow:0 6px 24px rgba(0,0,0,.10);
  padding:8px 6px 6px;
  display:none;
}
.user-dropdown.show{ display:block; }
.ud-head{ display:flex; align-items:center; gap:10px; padding:8px 8px 6px; }
.ud-avatar{
  width:36px; height:36px; border-radius:50%;
  background:#dbe6ff; color:var(--primary);
  font-size:14px; font-weight:600;
  display:flex; align-items:center; justify-content:center;
}
.ud-meta{ flex:1; min-width:0; }
.ud-name{ font-size:14px; font-weight:600; color:var(--text); }
.ud-role{ font-size:12px; color:var(--sub); margin-top:2px; }
.ud-dept{ font-size:12px; color:var(--sub); padding:4px 8px 6px; }
.ud-divider{ height:1px; background:var(--border); margin:4px 6px 6px; }
.ud-item{
  display:flex; align-items:center; gap:10px;
  padding:8px 10px; border-radius:6px;
  font-size:13px; color:var(--text); text-decoration:none;
  cursor:pointer; user-select:none;
}
.ud-item:hover{ background:var(--bg); color:var(--primary); }
.ud-ico{ width:18px; text-align:center; color:var(--sub); }
.ud-item:hover .ud-ico{ color:var(--primary); }

/* ===== v1.10.1011：Plink 内嵌到「人才运营 tab」右侧主区 =====
   原 .plink-view 是 position:fixed 全屏独立页，内嵌后改为面板：
   - 与 #tabTalent .talent-pool-page 同款（圆角边框 + 高度撑满）
   - 保留内部 .plink-canvas-wrap 等局部滚动 */
#tabTalent .plink-view{
  position:static; top:auto; left:auto; right:auto; bottom:auto;
  z-index:auto;
  border:1px solid var(--border); border-radius:10px;
  height:calc(100vh - var(--topbar-h) - 32px);
}
#tabTalent .plink-view .plink-topbar{ border-radius:10px 10px 0 0; }

/* ===== v2.0.1020：收藏五角星按钮（圆润描边 SVG） ===== */
.fav-btn{ padding:4px 10px !important; }
.fav-star{ width:16px; height:16px; vertical-align:middle; color:var(--sub); display:inline-block; }
.fav-btn:hover .fav-star{ color:#f5a623; }
.fav-btn.fav-active{ border-color:#f5a623 !important; background:#fff8e6 !important; }
.fav-btn.fav-active .fav-star{ color:#f5a623; }

/* ===== v2.0.1075：姓名右侧职位标签 ▾ 箭头 + 历史投递弹窗 ===== */
/* v2.0.1076：箭头改静态 flex 项（不再 absolute 压在徽章上）；
   高度统一 24px，与流程阶段徽章(.stage-pill)一致 */
/* v2.0.1077：徽章区（应聘次数 + 职位徽章[含内嵌箭头] + 弹窗定位） */
.pos-badge-cell{ position:relative; display:inline-flex; align-items:center; gap:6px; }
/* 应聘次数徽章：与阶段徽章同规格（min-height 24px / font-size 13px） */
.pos-count-badge{
  display:inline-flex; align-items:center; justify-content:center;
  box-sizing:border-box; min-height:24px; padding:3px 10px; border-radius:6px;
  font-size:13px; font-weight:500; line-height:1; white-space:nowrap;
  background:#f3f4f7; color:#5b6577; border:1px solid #e8eaee;
}
/* v2.0.1082：徽章内顺序 = [N次应聘][职位名][▾箭头]（count 在 text 前） */
.pos-badge-inner{ gap:0; padding-right:4px; }
.pos-badge-text{ white-space:nowrap; }
/* v2.0.1083：「N次应聘」字样用蓝色（与透明徽章区分主次） */
.pos-badge-count{ padding-right:4px; color:#1a5cff; font-weight:600; white-space:nowrap; }
.pos-badge-arrow{
  display:inline-flex; align-items:center; justify-content:center; flex:none;
  width:16px; height:16px; padding:0; border:none; background:transparent;
  cursor:pointer; color:inherit; opacity:.55; border-radius:4px;
  transition:opacity .15s, background .15s, transform .15s;
}
.pos-badge-arrow:hover{ opacity:1; background:rgba(0,0,0,.06); }
.pos-badge-arrow.open{ transform:rotate(180deg); opacity:1; }

.history-pop{
  position:absolute; left:0; top:calc(100% + 6px); z-index:80;
  width:320px; max-height:280px; overflow-y:auto;
  background:#fff; border:1px solid var(--border); border-radius:10px;
  box-shadow:0 6px 24px rgba(0,0,0,.12);
  display:none; text-align:left;
}
.history-pop.show{ display:block; }
/* v2.0.1087：弹窗字体整体放大 + 时间/来源颜色加深（原 --muted #c9cdd4 太浅看不清） */
.hp-head{ padding:9px 12px; font-size:13px; font-weight:700; color:var(--text); border-bottom:1px solid var(--border); }
.hp-head .cnt{ color:var(--sub); font-weight:400; margin-left:4px; }
.hp-item{ display:block; padding:9px 12px; cursor:pointer; border-bottom:1px solid #f5f6f8; transition:background .12s; }
.hp-item:hover{ background:#f0f5ff; }
.hp-item:last-child{ border-bottom:none; }
.hp-line1{ display:flex; align-items:center; gap:6px; }
.hp-pos{ font-size:13px; font-weight:600; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.hp-cur{ font-size:11px; color:#e08a00; background:#fff7e6; padding:0 5px; border-radius:8px; flex:none; }
/* v2.0.1091：阶段 badge 复用系统 stagePill tag-* 系列色（不再自创配色），
   仅压缩尺寸适配弹窗紧凑行；margin-left:auto 保持右对齐 */
.history-pop .stage-pill{ margin-left:auto; min-height:20px; padding:2px 8px; font-size:11px; border-radius:6px; flex:none; }
.hp-time{ font-size:12px; color:#5b6577; margin-top:3px; }
.hp-empty{ padding:22px; text-align:center; font-size:12px; color:var(--sub); }

/* v2.0.1081：候选人列表姓名右侧数字徽章（= 详情页职位徽章「应聘 N 次」数字） */
.dup-num-badge{
  display:inline-flex; align-items:center; justify-content:center; flex:none;
  min-width:18px; height:18px; padding:0 5px; margin-left:6px;
  border-radius:9px; font-size:11px; font-weight:600; line-height:1;
  background:#e8f0fe; color:#1967d2; border:1px solid #a8c7fa;
  cursor:default; vertical-align:middle;
}

/* v2.0.1128：周进度加载遮罩（/dash 数据看板 · 周进度 sheet） */
.weekly-loading-mask{
  position:absolute; inset:0; z-index:60;
  background:rgba(255,255,255,.62);
  cursor:progress;
}
/* 提示框用 fixed 居中：周进度 pane 很高，absolute 居中会跑到视口外看不见 */
.weekly-loading-box{
  position:fixed; left:50%; top:50%; transform:translate(-50%,-50%);
  display:flex; flex-direction:column; align-items:center; gap:10px;
  padding:18px 26px; background:#fff;
  border:1px solid var(--border); border-radius:10px;
  box-shadow:0 6px 28px rgba(0,0,0,.12);
}
.weekly-spinner{
  display:block; width:26px; height:26px;
  border:3px solid var(--border); border-top-color:var(--primary);
  border-radius:50%; animation:spin .8s linear infinite;
}
.weekly-loading-txt{ font-size:13px; color:var(--sub); white-space:nowrap; }
