/* ============================================
   畅展HR · 猎头管理系统 - 全局样式
   ============================================ */

/* --- CSS 变量 --- */
:root {
    /* 主题色 */
    --primary: #2563EB;
    --primary-light: #3B82F6;
    --primary-dark: #1D4ED8;
    --primary-bg: #EFF6FF;
    --primary-bg-hover: #DBEAFE;

    /* 功能色 */
    --success: #16A34A;
    --success-bg: #F0FDF4;
    --warning: #D97706;
    --warning-bg: #FFFBEB;
    --danger: #DC2626;
    --danger-bg: #FEF2F2;
    --info: #0891B2;
    --info-bg: #ECFEFF;
    --purple: #7C3AED;
    --purple-bg: #F5F3FF;

    /* 中性色 */
    --bg: #F8FAFC;
    --surface: #FFFFFF;
    --border: #E2E8F0;
    --border-light: #F1F5F9;
    --text-primary: #0F172A;
    --text-secondary: #475569;
    --text-tertiary: #94A3B8;
    --text-disabled: #CBD5E1;

    /* 阴影 */
    --shadow-sm: 0 1px 2px 0 rgba(0,0,0,0.05);
    --shadow-md: 0 4px 6px -1px rgba(0,0,0,0.07), 0 2px 4px -2px rgba(0,0,0,0.05);
    --shadow-lg: 0 10px 15px -3px rgba(0,0,0,0.08), 0 4px 6px -4px rgba(0,0,0,0.05);
    --shadow-xl: 0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.05);

    /* 圆角 */
    --radius-sm: 6px;
    --radius-md: 10px;
    --radius-lg: 14px;
    --radius-xl: 20px;

    /* 间距 */
    --sidebar-w: 256px;
    --sidebar-collapsed-w: 72px;
    --topbar-h: 64px;
}

/* --- Reset --- */
*, *::before, *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html { font-size: 14px; }

body {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;
    background: var(--bg);
    color: var(--text-primary);
    -webkit-font-smoothing: antialiased;
    overflow: hidden;
}

a { text-decoration: none; color: inherit; }
button { border: none; cursor: pointer; font-family: inherit; }
input { font-family: inherit; outline: none; border: none; }
svg { width: 20px; height: 20px; flex-shrink: 0; }

/* --- 滚动条 --- */
::-webkit-scrollbar { width: 6px; height: 8px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #CBD5E1; border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: #94A3B8; }
* { scrollbar-width: thin; scrollbar-color: #CBD5E1 transparent; }

/* --- App 布局 --- */
#app {
    display: flex;
    height: 100vh;
    overflow: hidden;
}

/* ============================================
   侧边栏
   ============================================ */
.sidebar {
    width: var(--sidebar-w);
    background: var(--surface);
    border-right: 1px solid var(--border);
    display: flex;
    flex-direction: column;
    transition: width 0.3s ease;
    flex-shrink: 0;
    z-index: 100;
}

.sidebar-header {
    height: var(--topbar-h);
    display: flex;
    align-items: center;
    padding: 0 20px;
    border-bottom: 1px solid var(--border-light);
}

.logo {
    display: flex;
    align-items: center;
    gap: 10px;
}

.logo-icon { width: 32px; height: 32px; object-fit: contain; border-radius: 4px; display: block; }

.logo-text {
    font-size: 18px;
    font-weight: 700;
    color: var(--text-primary);
    letter-spacing: -0.5px;
}

.logo-sub {
    font-size: 10px;
    color: var(--text-tertiary);
    font-weight: 500;
    display: block;
    letter-spacing: 0.5px;
}

.sidebar-nav {
    flex: 1;
    overflow-y: auto;
    padding: 16px 12px;
}

.nav-group { margin-bottom: 24px; }

.nav-group-title {
    display: block;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-tertiary);
    padding: 0 12px;
    margin-bottom: 8px;
}

.nav-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 12px;
    border-radius: var(--radius-md);
    color: var(--text-secondary);
    font-size: 14px;
    font-weight: 500;
    transition: all 0.15s ease;
    cursor: pointer;
    position: relative;
    margin-bottom: 2px;
}

.nav-item:hover {
    background: var(--primary-bg);
    color: var(--primary);
}

.nav-item.active {
    background: var(--primary);
    color: #fff;
}

.nav-item.active .nav-badge {
    background: rgba(255,255,255,0.2);
    color: #fff;
}

.nav-item svg { width: 20px; height: 20px; }

.nav-badge {
    margin-left: auto;
    font-size: 11px;
    font-weight: 600;
    background: var(--border-light);
    color: var(--text-secondary);
    padding: 2px 8px;
    border-radius: 20px;
    min-width: 24px;
    text-align: center;
}

.nav-badge-hot { background: var(--danger-bg); color: var(--danger); }

/* 侧边栏收起状态 */
.sidebar.collapsed { width: var(--sidebar-collapsed-w); }
.sidebar.collapsed .logo-text,
.sidebar.collapsed .nav-group-title,
.sidebar.collapsed .nav-item span:not(.nav-badge),
.sidebar.collapsed .nav-badge { display: none; }
.sidebar.collapsed .nav-item { justify-content: center; }

/* ============================================
   主内容区
   ============================================ */
.main-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

/* --- 顶部栏 --- */
.topbar {
    height: var(--topbar-h);
    background: var(--surface);
    border-bottom: 1px solid var(--border);
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 24px;
    flex-shrink: 0;
    gap: 16px;
}

.topbar-left { display: flex; align-items: center; gap: 16px; }

.btn-icon {
    width: 36px; height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    background: transparent;
    transition: all 0.15s ease;
    position: relative;
}

.btn-icon:hover { background: var(--border-light); color: var(--text-primary); }
.btn-icon svg { width: 20px; height: 20px; }

.sidebar-toggle { display: none; }

.breadcrumb {
    font-size: 16px;
    font-weight: 600;
    color: var(--text-primary);
}

.topbar-center { flex: 1; max-width: 480px; }

.search-box {
    display: flex;
    align-items: center;
    gap: 8px;
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    padding: 0 12px;
    height: 38px;
    transition: border-color 0.2s ease;
}

.search-box:focus-within { border-color: var(--primary); }
.search-box svg { width: 18px; height: 18px; color: var(--text-tertiary); }

.search-box input {
    flex: 1;
    background: transparent;
    font-size: 13px;
    color: var(--text-primary);
}

.search-box input::placeholder { color: var(--text-tertiary); }

.search-box kbd {
    font-size: 11px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 4px;
    padding: 2px 6px;
    color: var(--text-tertiary);
    font-family: inherit;
}

.topbar-right { display: flex; align-items: center; gap: 8px; }

.dot {
    position: absolute;
    top: 8px; right: 8px;
    width: 8px; height: 8px;
    background: var(--danger);
    border-radius: 50%;
    border: 2px solid var(--surface);
}

/* ============ 顶栏铃铛提醒（2026-09-29） ============ */
.cz-notif-wrap { position: relative; }

.cz-notif-btn {
    position: relative;
    width: 36px; height: 36px;
    border-radius: 50%;
    border: 1px solid transparent;
    background: transparent;
    color: var(--text-tertiary);
    display: flex; align-items: center; justify-content: center;
    cursor: pointer;
    transition: all .15s ease;
}
.cz-notif-btn:hover { background: var(--bg-subtle, #F8FAFC); color: var(--text-secondary); }

/* 有未读 → 红色铃铛（灰 → 红） */
.cz-notif-btn.has-unread { color: var(--danger); background: rgba(239, 68, 68, .10); }
.cz-notif-btn.has-unread:hover { background: rgba(239, 68, 68, .16); color: var(--danger); }

.cz-notif-count {
    position: absolute;
    top: -3px; right: -3px;
    min-width: 17px; height: 17px;
    padding: 0 4px;
    border-radius: 9px;
    background: var(--danger);
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    line-height: 17px;
    text-align: center;
    border: 2px solid var(--surface);
    box-sizing: content-box;
}

.cz-notif-panel {
    position: absolute;
    top: 44px; right: 0;
    width: 380px;
    max-height: 440px;
    overflow-y: auto;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg, 12px);
    box-shadow: 0 12px 32px rgba(15, 23, 42, .16);
    z-index: 3000;
    padding: 6px 0;
}

.cz-notif-head {
    display: flex; align-items: baseline; gap: 8px;
    padding: 8px 14px 10px;
    border-bottom: 1px solid var(--border);
    font-size: 13px; font-weight: 700; color: var(--text-primary);
}
.cz-notif-head > span:first-child { white-space: nowrap; flex-shrink: 0; }
.cz-notif-head-sub { font-size: 11px; font-weight: 400; color: var(--text-tertiary); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.cz-notif-empty { padding: 22px 14px; text-align: center; font-size: 12.5px; color: var(--text-tertiary); }

.cz-notif-item {
    padding: 10px 14px;
    border-bottom: 1px solid var(--border-subtle, #F1F5F9);
    cursor: pointer;
    transition: background .12s ease;
}
.cz-notif-item:last-child { border-bottom: none; }
.cz-notif-item:hover { background: var(--bg-subtle, #F8FAFC); }
/* 新提醒（本次打开时为未读）高亮；看过后（已读）转灰保留 */
.cz-notif-item.unread { background: rgba(239, 68, 68, .05); border-left: 3px solid var(--danger); }
.cz-notif-item.read { opacity: .72; border-left: 3px solid transparent; }

.cz-notif-line1 { display: flex; align-items: center; gap: 6px; }
.cz-notif-title { flex: 1; min-width: 0; font-size: 13px; font-weight: 600; color: var(--text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cz-notif-item.read .cz-notif-title { font-weight: 500; color: var(--text-secondary); }
.cz-notif-time { flex: none; font-size: 11px; color: var(--text-tertiary); }

.cz-notif-type {
    flex: none;
    font-size: 10.5px;
    font-weight: 700;
    padding: 1px 7px;
    border-radius: 20px;
    /* 其余类型（面试反馈 / 流程进展…）→ 粉色 */
    background: rgba(219, 39, 119, .12);
    color: #DB2777;
}
.cz-notif-type.t-new { background: rgba(220, 38, 38, .13); color: #DC2626; }        /* 新推荐 → 红色 */
.cz-notif-type.t-interview { background: rgba(22, 163, 74, .13); color: #16A34A; }  /* 面试安排 → 绿色 */
.cz-notif-type.t-pm { background: rgba(234, 88, 12, .13); color: #EA580C; }         /* PM跟进反馈 → 橙色 */
/* 已读/未读只在条目背景与左边框体现，类型标签保持各自色相不变 */

.cz-notif-body {
    margin-top: 4px;
    font-size: 12px;
    line-height: 1.6;
    color: var(--text-secondary);
}

.cz-notif-del {
    flex: none;
    width: 20px; height: 20px;
    border: none; background: transparent;
    color: var(--text-tertiary);
    font-size: 12px; line-height: 1;
    border-radius: 4px;
    cursor: pointer;
}
.cz-notif-del:hover { background: rgba(239, 68, 68, .12); color: var(--danger); }

.user-profile {
    display: flex;
    align-items: center;
    gap: 10px;
    padding-left: 12px;
    margin-left: 4px;
    border-left: 1px solid var(--border);
    cursor: pointer;
}

.avatar {
    width: 36px; height: 36px;
    border-radius: 50%;
    background: var(--primary);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    font-weight: 600;
}

.user-info { display: flex; flex-direction: column; }
.user-name { font-size: 13px; font-weight: 600; color: var(--text-primary); }
.user-role { font-size: 11px; color: var(--text-tertiary); }

/* ============================================
   页面容器
   ============================================ */
.page-container {
    flex: 1;
    overflow-y: auto;
    padding: 24px;
}

/* --- 页面标题 --- */
.page-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 24px;
    flex-wrap: wrap;
    gap: 16px;
}

.page-title { font-size: 22px; font-weight: 700; color: var(--text-primary); }
.page-subtitle { font-size: 13px; color: var(--text-tertiary); margin-top: 4px; }

.page-actions { display: flex; gap: 8px; align-items: center; }

/* --- 按钮 --- */
.btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    border-radius: var(--radius-sm);
    font-size: 13px;
    font-weight: 600;
    transition: all 0.15s ease;
    cursor: pointer;
    white-space: nowrap;
}

.btn svg { width: 16px; height: 16px; }

.btn-primary { background: var(--primary); color: #fff; }
.btn-primary:hover { background: var(--primary-dark); }

.btn-secondary { background: var(--surface); color: var(--text-secondary); border: 1px solid var(--border); }
.btn-secondary:hover { background: var(--bg); border-color: var(--text-tertiary); }

.btn-ghost { background: transparent; color: var(--text-secondary); }
.btn-ghost:hover { background: var(--border-light); }

.btn-danger { background: var(--danger-bg); color: var(--danger); }
.btn-danger:hover { background: var(--danger); color: #fff; }

.btn-sm { padding: 6px 12px; font-size: 12px; }

/* ============================================
   仪表盘 - KPI 卡片
   ============================================ */
.kpi-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
    margin-bottom: 24px;
}

.kpi-card {
    background: var(--surface);
    border-radius: var(--radius-lg);
    padding: 20px;
    border: 1px solid var(--border);
    transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.kpi-card:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); }

.kpi-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 16px;
}

.kpi-icon {
    width: 40px; height: 40px;
    border-radius: var(--radius-sm);
    display: flex;
    align-items: center;
    justify-content: center;
}

.kpi-icon svg { width: 20px; height: 20px; }

.kpi-icon.blue { background: var(--primary-bg); color: var(--primary); }
.kpi-icon.green { background: var(--success-bg); color: var(--success); }
.kpi-icon.orange { background: var(--warning-bg); color: var(--warning); }
.kpi-icon.purple { background: var(--purple-bg); color: var(--purple); }

.kpi-trend {
    font-size: 12px;
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 4px 8px;
    border-radius: 20px;
}

.kpi-trend.up { background: var(--success-bg); color: var(--success); }
.kpi-trend.down { background: var(--danger-bg); color: var(--danger); }
.kpi-trend svg { width: 12px; height: 12px; }

.kpi-value {
    font-size: 30px;
    font-weight: 700;
    color: var(--text-primary);
    letter-spacing: -1px;
    line-height: 1.2;
}

.kpi-label { font-size: 13px; color: var(--text-tertiary); margin-top: 4px; }
.kpi-sub { font-size: 12px; color: var(--text-tertiary); margin-top: 12px; }

/* KPI 三行数据（本周/本月/双月） */
.kpi-rows {
    margin-top: 14px;
    border-top: 1px dashed var(--border);
    padding-top: 10px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.kpi-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 12px;
}
.kpi-row-label { color: var(--text-tertiary); }
.kpi-row-value { font-weight: 600; color: var(--text-primary); font-size: 14px; }

/* --- 图表区域 --- */
.chart-grid {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}

.chart-card {
    background: var(--surface);
    border-radius: var(--radius-lg);
    padding: 20px;
    border: 1px solid var(--border);
}

.chart-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 20px;
}

.chart-card-title { font-size: 16px; font-weight: 600; color: var(--text-primary); }

.chart-card-body { position: relative; }
.chart-container { position: relative; height: 280px; }

/* --- 活动列表 --- */
.activity-list { display: flex; flex-direction: column; gap: 16px; }

.activity-item {
    display: flex;
    gap: 12px;
    padding: 12px;
    border-radius: var(--radius-md);
    transition: background 0.15s ease;
}

.activity-item:hover { background: var(--bg); }

.activity-avatar {
    width: 36px; height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 600;
    color: #fff;
    flex-shrink: 0;
}

.activity-content { flex: 1; }
.activity-text { font-size: 13px; color: var(--text-primary); line-height: 1.5; }
.activity-text strong { font-weight: 600; }
.activity-time { font-size: 11px; color: var(--text-tertiary); margin-top: 4px; }

/* ============================================
   数据表格
   ============================================ */
.table-card {
    background: var(--surface);
    border-radius: var(--radius-lg);
    border: 1px solid var(--border);
    overflow: hidden;
}

.table-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    border-bottom: 1px solid var(--border-light);
    gap: 12px;
    flex-wrap: wrap;
}

.table-toolbar-left { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.table-toolbar-right { display: flex; align-items: center; gap: 8px; }

.filter-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: 20px;
    font-size: 12px;
    font-weight: 500;
    color: var(--text-secondary);
    cursor: pointer;
    transition: all 0.15s ease;
}

.filter-chip:hover { border-color: var(--primary); color: var(--primary); }
.filter-chip.active { background: var(--primary); color: #fff; border-color: var(--primary); }

.table-wrapper { overflow-x: auto; }

table.data-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

table.data-table th {
    text-align: left;
    padding: 12px 16px;
    font-weight: 600;
    color: var(--text-tertiary);
    border-bottom: 1px solid var(--border);
    white-space: nowrap;
    background: var(--bg);
}

table.data-table td {
    padding: 14px 16px;
    border-bottom: 1px solid var(--border-light);
    color: var(--text-primary);
}

table.data-table tbody tr { transition: background 0.1s ease; cursor: pointer; }
table.data-table tbody tr:hover { background: var(--primary-bg); }

/* --- 职位列表「候选人」列：五行单列固定排版（2026-10-30） ---
   推荐 / 已面试 / 已Offer / 待跟进 / 不合适 各占一行；标签定宽，数字左对齐且等宽数字，
   数字位数变化、列宽变窄都只影响列宽，不改变行数与对齐方式 */
.pos-cand-cell {
    display: inline-flex;
    flex-direction: column;
    gap: 1px;
    font-size: 12px;
    line-height: 18px;
}
.pos-cand-row {
    display: flex;
    align-items: baseline;
    white-space: nowrap;
}
.pos-cand-label {
    flex: 0 0 46px;
    width: 46px;
}
.pos-cand-num {
    flex: 0 0 auto;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum";
}

/* --- 标签 --- */
.tag {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    border-radius: 20px;
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
}

.tag-blue { background: var(--primary-bg); color: var(--primary); }
.tag-green { background: var(--success-bg); color: var(--success); }
.tag-orange { background: var(--warning-bg); color: var(--warning); }
.tag-red { background: var(--danger-bg); color: var(--danger); }
.tag-purple { background: var(--purple-bg); color: var(--purple); }
.tag-cyan { background: var(--info-bg); color: var(--info); }
.tag-gray { background: #F1F5F9; color: var(--text-secondary); }

/* 可点击标签（2026-10-26）：明细里的「📞 电话沟通 / 💬 沟通记录」→ 点击弹窗看简评与沟通记录明细 */
.tag.pc-detail-tag { cursor: pointer; transition: filter .15s ease, box-shadow .15s ease; }
.tag.pc-detail-tag:hover { filter: brightness(0.94); box-shadow: 0 0 0 2px var(--primary-bg, #EFF6FF); }
.tag.pc-detail-tag:active { transform: translateY(0.5px); }

/* --- 表格内候选人信息 --- */
.candidate-cell { display: flex; align-items: center; gap: 10px; }

.candidate-avatar {
    width: 36px; height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 600;
    color: #fff;
    flex-shrink: 0;
}

.candidate-info { display: flex; flex-direction: column; gap: 2px; }
/* 姓名不换行（2026-10-27）：三字姓名 + 黄色感叹号 / 简历图标必须同行，避免「杨女/士」被折成两行 */
.candidate-name { font-weight: 600; color: var(--text-primary); white-space: nowrap; }
.candidate-meta { font-size: 11px; color: var(--text-tertiary); }

/* --- 分页 --- */
.pagination {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    border-top: 1px solid var(--border-light);
}

.pagination-info { font-size: 12px; color: var(--text-tertiary); }

.pagination-btns { display: flex; gap: 4px; }

.page-btn {
    min-width: 32px; height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-sm);
    font-size: 13px;
    font-weight: 500;
    color: var(--text-secondary);
    background: transparent;
    transition: all 0.15s ease;
    cursor: pointer;
}

.page-btn:hover { background: var(--bg); }
.page-btn.active { background: var(--primary); color: #fff; }
.page-btn:disabled { opacity: 0.4; cursor: not-allowed; }

/* ============================================
   候选人卡片网格（人才库视图）
   ============================================ */
.view-toggle {
    display: flex;
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    padding: 2px;
}

.view-toggle button {
    padding: 6px 10px;
    border-radius: 4px;
    background: transparent;
    color: var(--text-tertiary);
    transition: all 0.15s ease;
}

.view-toggle button.active { background: var(--surface); color: var(--primary); box-shadow: var(--shadow-sm); }
.view-toggle svg { width: 16px; height: 16px; }

.talent-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
}

.talent-card {
    background: var(--surface);
    border-radius: var(--radius-lg);
    padding: 18px 18px 14px;
    border: 1px solid var(--border);
    text-align: left;
    cursor: pointer;
    transition: all 0.2s ease;
    position: relative;
}

.talent-card:hover { box-shadow: var(--shadow-lg); transform: translateY(-4px); border-color: var(--primary-light); }

.talent-card .candidate-avatar { width: 44px; height: 44px; font-size: 17px; flex-shrink: 0; }
.talent-card .candidate-name { font-size: 15px; font-weight: 600; }

/* --- 猎聘式卡片布局 --- */
.lp-card-top { display: flex; align-items: center; gap: 10px; }
.lp-card-head { flex: 1; min-width: 0; }
.lp-card-head .candidate-name { font-size: 15px; font-weight: 600; }
.lp-intent-title { font-size: 16px; font-weight: 700; color: var(--text-primary); margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lp-intent-line { font-size: 12px; color: var(--text-secondary); margin-top: 8px; }
.lp-meta-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 8px; }
.lp-meta-tags .tag { font-size: 11px; }
.lp-cur-line { font-size: 11px; color: var(--text-tertiary); margin-top: 8px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lp-table-intent { font-weight: 600; color: var(--primary); font-size: 13px; }
.talent-card .candidate-title { font-size: 12px; color: var(--text-tertiary); margin-top: 2px; }
.talent-card .talent-tags { display: flex; flex-wrap: wrap; gap: 4px; justify-content: center; margin-top: 12px; }
.talent-card .talent-stats { display: flex; justify-content: space-around; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--border-light); }
.talent-card .talent-stat { display: flex; flex-direction: column; }
.talent-card .talent-stat-value { font-size: 16px; font-weight: 700; color: var(--text-primary); }
.talent-card .talent-stat-label { font-size: 10px; color: var(--text-tertiary); }

.talent-card .match-score {
    position: absolute;
    top: 12px; right: 12px;
    width: 36px; height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 700;
    color: #fff;
}

/* ============================================
   抽屉
   ============================================ */
.drawer-overlay {
    position: fixed;
    inset: 0;
    background: rgba(15,23,42,0.5);
    z-index: 200;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s ease;
}

.drawer-overlay.active { opacity: 1; pointer-events: auto; }

.drawer {
    position: fixed;
    top: 0; right: 0;
    width: 480px;
    max-width: 90vw;
    height: 100vh;
    background: var(--surface);
    box-shadow: var(--shadow-xl);
    z-index: 201;
    transform: translateX(100%);
    transition: transform 0.3s cubic-bezier(0.32, 0.72, 0, 1);
    display: flex;
    flex-direction: column;
}

.drawer.active { transform: translateX(0); }

/* 候选人详情抽屉加宽：容纳与新增表单一致的四列排版 */
#candidateDrawer { width: min(720px, 94vw); }

.drawer-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px;
    border-bottom: 1px solid var(--border);
    flex-shrink: 0;
}

.drawer-header h3 { font-size: 18px; font-weight: 700; }

.drawer-body { flex: 1; overflow-y: auto; padding: 20px; }

/* --- 抽屉内容 --- */
.detail-profile {
    display: flex;
    gap: 16px;
    padding: 20px;
    background: linear-gradient(135deg, var(--primary-bg), var(--purple-bg));
    border-radius: var(--radius-lg);
    margin-bottom: 20px;
    align-items: center;
}

.detail-profile .candidate-avatar { width: 64px; height: 64px; font-size: 24px; }
.detail-profile .detail-name { font-size: 18px; font-weight: 700; }
.detail-profile .detail-title { font-size: 13px; color: var(--text-secondary); margin-top: 4px; }

.detail-section { margin-bottom: 24px; }
.detail-section-title { font-size: 13px; font-weight: 600; color: var(--text-tertiary); margin-bottom: 12px; text-transform: uppercase; letter-spacing: 0.5px; }

.detail-row { display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid var(--border-light); }
.detail-row:last-child { border-bottom: none; }
.detail-label { font-size: 13px; color: var(--text-tertiary); }
.detail-value { font-size: 13px; color: var(--text-primary); font-weight: 500; }

/* 猎聘式候选人详情：双列网格 + 时间线 */
.detail-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 24px; }
.detail-grid4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px 20px; }
@media (max-width: 720px) { .detail-grid4 { grid-template-columns: 1fr 1fr; } }
.detail-cell { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 7px 0; border-bottom: 1px solid var(--border-light); }
.detail-cell:last-child { border-bottom: none; }
.detail-cell .detail-label { font-size: 12px; flex-shrink: 0; }
.detail-cell .detail-value { font-size: 13px; text-align: right; word-break: break-all; }
.detail-intent { font-size: 20px; font-weight: 700; color: var(--text-primary); margin-top: 2px; line-height: 1.3; }
.detail-intent-line { font-size: 12px; color: var(--text-secondary); margin-top: 6px; }

.timeline-item { position: relative; padding: 0 0 16px 18px; border-left: 2px solid var(--border-light); margin-left: 6px; }
.timeline-item:last-child { border-left-color: transparent; padding-bottom: 2px; }
.timeline-dot { position: absolute; left: -6px; top: 4px; width: 10px; height: 10px; border-radius: 50%; background: var(--primary); border: 2px solid #fff; box-shadow: 0 0 0 2px var(--primary-bg); }
.timeline-body { flex: 1; min-width: 0; }
.timeline-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.timeline-company { font-size: 13px; font-weight: 600; color: var(--text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.timeline-period { font-size: 11px; color: var(--text-tertiary); flex-shrink: 0; }
.timeline-sub { font-size: 12px; color: var(--text-secondary); margin-top: 2px; }
.timeline-desc { font-size: 12px; color: var(--text-tertiary); margin-top: 4px; line-height: 1.6; white-space: pre-wrap; }

/* 表单分组标题 */
.form-group-title { grid-column: 1 / -1; font-size: 12px; font-weight: 600; color: var(--primary); margin: 14px 0 4px; padding: 6px 10px; border-radius: 6px; background: var(--primary-bg); letter-spacing: 0.5px; }

/* ============================================
   客户/职位卡片
   ============================================ */
.card-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.info-card {
    background: var(--surface);
    border-radius: var(--radius-lg);
    border: 1px solid var(--border);
    padding: 20px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.info-card:hover { box-shadow: var(--shadow-lg); transform: translateY(-2px); border-color: var(--primary-light); }

.info-card-header {
    display: flex;
    align-items: start;
    justify-content: space-between;
    margin-bottom: 16px;
}

.company-logo {
    width: 48px; height: 48px;
    border-radius: var(--radius-md);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    font-weight: 700;
    color: #fff;
}

.info-card-title { font-size: 16px; font-weight: 700; color: var(--text-primary); }
.info-card-subtitle { font-size: 12px; color: var(--text-tertiary); margin-top: 2px; }

.info-card-body { margin-bottom: 16px; }
.info-card-row { display: flex; justify-content: space-between; padding: 6px 0; font-size: 13px; }
.info-card-row .label { color: var(--text-tertiary); }
.info-card-row .value { color: var(--text-primary); font-weight: 500; }

.info-card-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 16px;
    border-top: 1px solid var(--border-light);
}

.progress-bar {
    height: 6px;
    background: var(--border-light);
    border-radius: 3px;
    overflow: hidden;
    flex: 1;
    margin-right: 12px;
}

.progress-fill { height: 100%; background: var(--primary); border-radius: 3px; transition: width 0.3s ease; }

/* ============================================
   面试日历
   ============================================ */
.calendar-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 8px;
    margin-bottom: 24px;
}

.calendar-header {
    text-align: center;
    font-size: 12px;
    font-weight: 600;
    color: var(--text-tertiary);
    padding: 8px 0;
}

.calendar-cell {
    min-height: 100px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    padding: 8px;
    transition: all 0.15s ease;
}

.calendar-cell:hover { border-color: var(--primary-light); box-shadow: var(--shadow-sm); }
.calendar-cell.other-month { opacity: 0.4; }
.calendar-cell.today { border-color: var(--primary); border-width: 2px; }

.calendar-date { font-size: 13px; font-weight: 600; color: var(--text-primary); margin-bottom: 4px; }

.calendar-event {
    font-size: 11px;
    padding: 4px 8px;
    border-radius: 4px;
    margin-bottom: 4px;
    cursor: pointer;
    transition: transform 0.1s ease;
}

.calendar-event:hover { transform: translateX(2px); }
.calendar-event.blue { background: var(--primary-bg); color: var(--primary); border-left: 3px solid var(--primary); }
.calendar-event.green { background: var(--success-bg); color: var(--success); border-left: 3px solid var(--success); }
.calendar-event.orange { background: var(--warning-bg); color: var(--warning); border-left: 3px solid var(--warning); }

/* ============================================
   统计页面
   ============================================ */
.stats-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    margin-bottom: 24px;
}

.bar-chart-container { position: relative; height: 300px; }
.doughnut-container { position: relative; height: 240px; }

.legend-list { display: flex; flex-direction: column; gap: 12px; }

.legend-item { display: flex; align-items: center; gap: 8px; font-size: 13px; }
.legend-dot { width: 10px; height: 10px; border-radius: 3px; }
.legend-label { color: var(--text-secondary); flex: 1; }
.legend-value { font-weight: 600; color: var(--text-primary); }

/* ============================================
   Toast 通知
   ============================================ */
.toast-container {
    position: fixed;
    top: 20px; right: 20px;
    z-index: 300;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.toast {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 20px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-lg);
    font-size: 13px;
    color: var(--text-primary);
    animation: slideIn 0.3s ease;
    min-width: 280px;
}

.toast.success { border-left: 4px solid var(--success); }
.toast.error { border-left: 4px solid var(--danger); }
.toast.info { border-left: 4px solid var(--primary); }

@keyframes slideIn {
    from { transform: translateX(120%); opacity: 0; }
    to { transform: translateX(0); opacity: 1; }
}

@keyframes slideOut {
    to { transform: translateX(120%); opacity: 0; }
}

/* ============================================
   空状态
   ============================================ */
.empty-state {
    text-align: center;
    padding: 60px 20px;
    color: var(--text-tertiary);
}

.empty-state svg { width: 48px; height: 48px; margin-bottom: 16px; }
.empty-state-title { font-size: 16px; font-weight: 600; color: var(--text-secondary); margin-bottom: 4px; }
.empty-state-desc { font-size: 13px; }

/* ============================================
   响应式
   ============================================ */
@media (max-width: 1280px) {
    .kpi-grid { grid-template-columns: repeat(2, 1fr); }
    .chart-grid { grid-template-columns: 1fr; }
    .talent-grid { grid-template-columns: repeat(3, 1fr); }
    .card-grid { grid-template-columns: repeat(2, 1fr); }
    .stats-grid { grid-template-columns: 1fr; }
}

@media (max-width: 1024px) {
    .sidebar { position: fixed; left: 0; top: 0; bottom: 0; transform: translateX(-100%); }
    .sidebar.open { transform: translateX(0); box-shadow: var(--shadow-xl); }
    .sidebar-toggle { display: flex; }
    .talent-grid { grid-template-columns: repeat(2, 1fr); }
    .topbar-center { display: none; }
}

@media (max-width: 768px) {
    .kpi-grid { grid-template-columns: 1fr; }
    .talent-grid { grid-template-columns: 1fr; }
    .card-grid { grid-template-columns: 1fr; }
    .calendar-grid { grid-template-columns: repeat(2, 1fr); }
    .page-container { padding: 16px; }
    .user-info { display: none; }
}

/* --- 加载动画 --- */
.skeleton {
    background: linear-gradient(90deg, var(--border-light) 25%, var(--bg) 50%, var(--border-light) 75%);
    background-size: 200% 100%;
    animation: shimmer 1.5s infinite;
    border-radius: var(--radius-sm);
}

@keyframes shimmer {
    0% { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* --- 进度环 --- */
.ring-progress { position: relative; display: inline-flex; align-items: center; justify-content: center; }
.ring-progress svg { transform: rotate(-90deg); }
.ring-progress .ring-bg { stroke: var(--border-light); }
.ring-progress .ring-fg { stroke: var(--primary); transition: stroke-dashoffset 0.5s ease; }
.ring-progress .ring-text { position: absolute; font-size: 14px; font-weight: 700; }

/* --- 统计小卡片 --- */
.mini-stat {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 16px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
}

.mini-stat[onclick] {
    transition: border-color .15s, box-shadow .15s;
}

.mini-stat[onclick]:hover {
    border-color: var(--primary);
    box-shadow: 0 2px 8px rgba(37, 99, 235, .10);
}

.mini-stat-value { font-size: 22px; font-weight: 700; color: var(--text-primary); }
.mini-stat-label { font-size: 12px; color: var(--text-tertiary); }
.mini-stat-change { font-size: 11px; font-weight: 600; }
.mini-stat-change.up { color: var(--success); }
.mini-stat-change.down { color: var(--danger); }

.online-badge {
    width: 8px; height: 8px;
    background: var(--success);
    border-radius: 50%;
    border: 2px solid var(--surface);
    margin-left: -8px;
    flex-shrink: 0;
    animation: pulse 2s infinite;
}

@keyframes pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(22, 163, 74, 0.4); }
    50% { box-shadow: 0 0 0 4px rgba(22, 163, 74, 0); }
}

/* --- 用户下拉菜单 --- */
.user-menu {
    position: fixed;
    top: 62px;
    right: 16px;
    width: 240px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    box-shadow: 0 12px 40px rgba(0,0,0,.14);
    z-index: 1200;
    padding: 8px;
    display: none;
}
.user-menu.show { display: block; }
.user-menu-header {
    display: flex; align-items: center; gap: 12px;
    padding: 12px; border-bottom: 1px solid var(--border); margin-bottom: 6px;
}
.user-menu-name { font-weight: 700; font-size: 14px; color: var(--text-primary); }
.user-menu-role { font-size: 12px; color: var(--text-tertiary); margin-top: 2px; }
.user-menu-item {
    display: flex; align-items: center; gap: 10px; padding: 10px 12px;
    border-radius: 8px; cursor: pointer; font-size: 13px; color: var(--danger);
    transition: background .15s;
}
.user-menu-item:hover { background: var(--danger-bg); }
.user-menu-item svg { width: 16px; height: 16px; }

/* --- 通用表单网格 --- */
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; }
.form-grid .full { grid-column: 1 / -1; }
/* 多列同一行（如四个字段并排一行），自动适配窄屏 */
.form-grid .form-row-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0 16px; }
.form-grid .form-row-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0 16px; }
.form-grid .form-row-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0 16px; }
.form-grid .form-row-4 .form-input,
.form-grid .form-row-3 .form-input { min-width: 0; padding-left: 10px; padding-right: 10px; }
@media (max-width: 720px) {
    .form-grid .form-row-3, .form-grid .form-row-4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
    .form-grid .form-row-2, .form-grid .form-row-3, .form-grid .form-row-4 { grid-template-columns: 1fr; }
}
/* 日期 +「至今」开关（离职日期） */
.date-now-wrap { display: flex; align-items: center; gap: 8px; }
.date-now-wrap .form-input { flex: 1 1 auto; min-width: 0; }
.date-now-toggle {
    display: inline-flex; align-items: center; gap: 4px; flex: 0 0 auto;
    font-size: 12px; color: var(--text-secondary); cursor: pointer; user-select: none;
    padding: 7px 8px; border: 1px solid var(--border); border-radius: var(--radius-md);
    background: var(--bg-subtle, #F8FAFC); white-space: nowrap;
}
.date-now-toggle input { margin: 0; cursor: pointer; }
.date-now-toggle:has(input:checked) { border-color: var(--primary); color: var(--primary); background: var(--primary-light, #EFF6FF); }
/* 推荐到岗位：可搜索职位选择器 */
.pos-option-list {
    max-height: 200px; overflow-y: auto; border: 1.5px solid var(--border);
    border-radius: var(--radius-md); background: var(--surface, #FFF);
}
.pos-option {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 9px 12px; font-size: 13px; color: var(--text-primary, #111827);
    cursor: pointer; border-bottom: 1px solid var(--border, #EEF0F3); transition: background .12s;
}
.pos-option:last-child { border-bottom: none; }
.pos-option:hover { background: var(--bg-subtle, #F8FAFC); }
.pos-option.active { background: var(--primary-light, #EFF6FF); color: var(--primary); font-weight: 600; }
.pos-option .pos-option-title { flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pos-option .pos-option-meta { flex: 0 0 auto; font-size: 12px; color: var(--text-tertiary); }
.pos-option-empty { cursor: default; color: var(--text-tertiary); justify-content: center; }
.pos-option-empty:hover { background: none; }
/* 手机号/邮箱格式「疑」标记：不阻塞保存，仅提示 */
.doubt-hint { display: flex; align-items: center; gap: 5px; margin-top: 4px; font-size: 12px; color: #D97706; }
.doubt-tag { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; border-radius: 4px; background: #FEF3C7; color: #B45309; font-size: 11px; font-weight: 600; flex: none; }
.form-input.input-doubt { border-color: #F59E0B; }
.form-input-sm { padding: 8px 10px; font-size: 13px; }

/* --- 管理员表格操作按钮 --- */
.admin-op-btn { padding: 4px 10px; font-size: 12px; border-radius: 6px; cursor: pointer; border: 1px solid var(--border); background: var(--surface); color: var(--text-secondary); transition: all .15s; }
.admin-op-btn:hover { border-color: var(--primary); color: var(--primary); }
.admin-op-btn.danger:hover { border-color: var(--danger); color: var(--danger); }

/* --- 空状态 --- */
.empty-state {
    text-align: center; padding: 48px 20px; color: var(--text-tertiary);
}
.empty-state svg { width: 48px; height: 48px; opacity: .35; margin-bottom: 12px; }
.empty-state .empty-title { font-size: 15px; font-weight: 600; color: var(--text-secondary); margin-bottom: 6px; }
.empty-state .empty-desc { font-size: 13px; line-height: 1.7; }

/* --- 通用弹窗 (Modal) --- */
.modal-overlay {
    position: fixed; inset: 0; z-index: 1000;
    background: rgba(15, 23, 42, 0.45);
    backdrop-filter: blur(2px);
    display: flex; align-items: center; justify-content: center;
    opacity: 0; visibility: hidden;
    transition: opacity .18s ease, visibility .18s ease;
}
.modal-overlay.active { opacity: 1; visibility: visible; }
.modal {
    background: var(--surface);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-xl);
    max-height: 88vh;
    display: flex; flex-direction: column;
    overflow: hidden;
    transform: translateY(8px);
    transition: transform .18s ease;
}
.modal-overlay.active .modal { transform: translateY(0); }
.modal-header {
    display: flex; align-items: center; justify-content: space-between;
    padding: 16px 20px; border-bottom: 1px solid var(--border);
}
.modal-header h3 { font-size: 15px; font-weight: 700; color: var(--text-primary); }
.modal-body { padding: 20px; overflow-y: auto; }
.modal-footer {
    display: flex; justify-content: flex-end; gap: 10px;
    padding: 14px 20px; border-top: 1px solid var(--border);
}

/* --- 通用表单控件 --- */
.form-label {
    display: block; font-size: 12px; font-weight: 600;
    color: var(--text-secondary); margin-bottom: 6px;
}
.form-input {
    width: 100%; padding: 9px 12px;
    font-size: 13px; color: var(--text-primary);
    background: var(--surface);
    border: 1px solid var(--border); border-radius: var(--radius-sm);
    outline: none; transition: border-color .15s, box-shadow .15s;
}
.form-input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-bg); }
.form-input::placeholder { color: var(--text-disabled); }
select.form-input { appearance: auto; }
textarea.form-input { resize: vertical; min-height: 72px; }

/* --- 简历上传识别 --- */
.resume-upload {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 18px 20px;
    margin-bottom: 16px;
    border: 2px dashed var(--border);
    border-radius: var(--radius-lg);
    background: var(--primary-bg);
    cursor: pointer;
    transition: all .2s;
}
.resume-upload:hover, .resume-upload.dragging { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-bg); }
.resume-upload.uploading { opacity: .65; pointer-events: none; }
.resume-upload-icon {
    width: 44px; height: 44px;
    flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
    background: var(--primary);
    color: #fff;
    border-radius: 12px;
}
.resume-upload-icon svg { width: 22px; height: 22px; }
.resume-upload-title { font-size: 14px; font-weight: 600; color: var(--text-primary); }
.resume-upload-hint { font-size: 12px; color: var(--text-tertiary); margin-top: 3px; line-height: 1.6; }
.resume-status {
    font-size: 13px;
    line-height: 1.7;
    padding: 10px 14px;
    margin-bottom: 14px;
    border-radius: var(--radius-md);
    background: var(--primary-bg);
    color: var(--text-primary);
}
.resume-status.success { background: #ECFDF5; color: #047857; border: 1px solid #A7F3D0; }
.resume-status.error { background: #FEF2F2; color: #B91C1C; border: 1px solid #FECACA; }
.resume-status.warn { background: #FFFBEB; color: #B45309; border: 1px solid #FDE68A; }
.resume-status.loading::before {
    content: '';
    display: inline-block;
    width: 12px; height: 12px;
    margin-right: 8px;
    vertical-align: -2px;
    border: 2px solid var(--primary);
    border-top-color: transparent;
    border-radius: 50%;
    animation: resumeSpin .7s linear infinite;
}
@keyframes resumeSpin { to { transform: rotate(360deg); } }

/* ===== 简历预览弹窗 ===== */
.resume-modal-mask {
    position: fixed; inset: 0; z-index: 9999;
    background: rgba(15, 23, 42, .55);
    display: flex; align-items: center; justify-content: center;
    padding: 24px;
    animation: resumeFadeIn .15s ease;
}
.resume-modal {
    background: #fff;
    border-radius: 12px;
    width: min(860px, 92vw);
    height: min(80vh, 720px);
    display: flex; flex-direction: column;
    overflow: hidden;
    box-shadow: 0 20px 60px rgba(0, 0, 0, .25);
    animation: resumeZoomIn .18s ease;
}
.resume-modal-head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 12px 18px;
    border-bottom: 1px solid #eef0f4;
    background: #fbfbfd;
}
.resume-modal-title {
    font-weight: 600; font-size: 14px; color: #1f2329;
    display: flex; align-items: center; gap: 8px;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.resume-modal-close {
    cursor: pointer; border: none; background: none;
    width: 28px; height: 28px; flex: 0 0 28px;
    display: flex; align-items: center; justify-content: center;
    border-radius: 6px; color: #667085; font-size: 15px;
}
.resume-modal-close:hover { background: #eef0f4; color: #1f2329; }
.resume-modal-body { flex: 1; overflow: hidden; background: #f5f6f8; }
.resume-modal-body iframe { width: 100%; height: 100%; border: none; background: #fff; }
.resume-modal-foot {
    display: flex; justify-content: flex-end; align-items: center; gap: 10px;
    padding: 10px 18px;
    border-top: 1px solid #eef0f4;
    background: #fbfbfd;
}
.resume-modal-close-btn {
    cursor: pointer; border: 1px solid #d9dee7; background: #fff;
    color: #3c4257; font-size: 13px; font-weight: 500;
    padding: 7px 16px; border-radius: 8px;
}
.resume-modal-close-btn:hover { background: #f2f4f7; }

/* 详情里的附件按钮 */
.resume-preview-btn {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 12px; border-radius: 8px;
    background: #f0f4ff; color: #2563eb;
    font-size: 13px; font-weight: 600;
    border: 1px solid #dbe4ff; cursor: pointer;
    line-height: 1.4;
}
.resume-preview-btn:hover { background: #e4ecff; }
.resume-preview-hint { font-weight: 400; opacity: .65; font-size: 12px; }
.resume-download-btn {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 12px; border-radius: 8px;
    background: #2563eb; color: #fff;
    font-size: 13px; font-weight: 600;
    text-decoration: none; border: none; cursor: pointer;
    line-height: 1.4;
}
.resume-download-btn:hover { opacity: .9; }

@keyframes resumeFadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes resumeZoomIn { from { opacity: 0; transform: scale(.96); } to { opacity: 1; transform: scale(1); } }

/* ============================================
   职位搜索弹窗（推荐职位）
   ============================================ */
.jobpick-mask {
    position: fixed; inset: 0; z-index: 300;
    background: rgba(15,23,42,.5);
    display: flex; align-items: center; justify-content: center;
    padding: 20px;
    animation: resumeFadeIn .15s ease;
}
.jobpick-modal {
    width: 640px; max-width: 94vw; max-height: 84vh;
    background: var(--surface);
    border-radius: var(--radius-lg);
    box-shadow: 0 24px 60px rgba(0,0,0,.18);
    display: flex; flex-direction: column; overflow: hidden;
    animation: resumeZoomIn .18s ease;
}
.jobpick-head {
    display: flex; align-items: flex-start; justify-content: space-between;
    padding: 18px 20px 14px; border-bottom: 1px solid var(--border-light);
}
.jobpick-title { font-size: 16px; font-weight: 700; color: var(--text-primary); }
.jobpick-sub { font-size: 12px; color: var(--text-tertiary); margin-top: 3px; }
.jobpick-close {
    width: 30px; height: 30px; border: none;
    background: var(--border-light); border-radius: 8px;
    font-size: 14px; color: var(--text-secondary); cursor: pointer;
    flex-shrink: 0;
    position: relative; z-index: 5; pointer-events: auto;
}
.jobpick-close:hover { background: var(--border); color: var(--text-primary); }
.jobpick-search {
    display: flex; align-items: center; gap: 8px;
    margin: 14px 20px 10px; padding: 0 12px; height: 38px;
    border: 1px solid var(--border); border-radius: 10px;
    background: var(--bg);
}
.jobpick-search svg { width: 15px; height: 15px; color: var(--text-tertiary); flex-shrink: 0; }
.jobpick-search input {
    flex: 1; border: none; outline: none; background: transparent;
    font-size: 13px; color: var(--text-primary);
}
.jobpick-search input::placeholder { color: var(--text-tertiary); }
.jobpick-list { flex: 1; overflow-y: auto; padding: 4px 20px 14px; }
.jobpick-item {
    display: flex; align-items: center; gap: 12px;
    padding: 12px; border: 1px solid var(--border);
    border-radius: var(--radius-md); margin-bottom: 8px;
    cursor: pointer;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.jobpick-item:hover { border-color: var(--primary); box-shadow: 0 2px 10px rgba(37,99,235,.14); }
.jobpick-item-logo {
    width: 38px; height: 38px; border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    color: #fff; font-weight: 700; font-size: 16px; flex-shrink: 0;
}
.jobpick-item-main { flex: 1; min-width: 0; }
.jobpick-item-title { font-size: 14px; font-weight: 600; color: var(--text-primary); }
.jobpick-item-meta {
    font-size: 12px; color: var(--text-tertiary); margin-top: 3px;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.jobpick-item-right { text-align: right; flex-shrink: 0; }
.jobpick-item-salary { font-size: 13px; font-weight: 700; color: var(--primary); margin-bottom: 4px; }
.jobpick-item-btn {
    flex-shrink: 0; border: none;
    background: var(--primary); color: #fff;
    font-size: 12px; font-weight: 600;
    padding: 7px 16px; border-radius: 8px; cursor: pointer;
    transition: opacity .15s ease;
}
.jobpick-item-btn:hover { opacity: .88; }
.jobpick-empty { text-align: center; padding: 48px 20px; color: var(--text-tertiary); font-size: 13px; }
.jobpick-empty-icon { font-size: 40px; margin-bottom: 10px; }
.jobpick-empty .btn { margin-top: 14px; }
.jobpick-foot {
    padding: 12px 20px; border-top: 1px solid var(--border-light);
    display: flex; justify-content: flex-end; gap: 8px;
}
.jobpick-cancel {
    border: 1px solid var(--border); background: var(--surface);
    color: var(--text-secondary); font-size: 13px;
    padding: 7px 18px; border-radius: 8px; cursor: pointer;
}
.jobpick-cancel:hover { background: var(--border-light); }

/* ============================================
   本周面试安排（工作台）
   ============================================ */
.week-interview-list {
    display: flex; flex-direction: column; gap: 10px;
}
.week-interview-item {
    display: flex; align-items: center; gap: 14px;
    padding: 14px 16px;
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    background: var(--surface);
    cursor: pointer;
    transition: border-color .15s ease, box-shadow .15s ease, background .15s ease;
}
.week-interview-item:hover {
    border-color: var(--primary);
    box-shadow: 0 4px 14px rgba(37, 99, 235, .1);
    background: #f8faff;
}

.week-interview-date {
    width: 56px; flex-shrink: 0;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    padding: 8px 0;
    background: var(--border-light);
    border-radius: var(--radius-md);
}
.week-interview-date.today {
    background: var(--primary);
    color: #fff;
}
.week-interview-weekday {
    font-size: 11px; font-weight: 600;
    color: var(--text-tertiary);
    margin-bottom: 2px;
}
.week-interview-date.today .week-interview-weekday { color: rgba(255,255,255,.85); }
.week-interview-daynum {
    font-size: 20px; font-weight: 700; line-height: 1.1;
    color: var(--text-primary);
}
.week-interview-date.today .week-interview-daynum { color: #fff; }

.week-interview-main { flex: 1; min-width: 0; }
.week-interview-line1 {
    display: flex; align-items: center; gap: 8px;
}
.week-interview-client {
    font-size: 14px; font-weight: 700; color: var(--text-primary);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.week-interview-line2 {
    display: flex; align-items: center; gap: 14px;
    margin-top: 4px;
    font-size: 13px; color: var(--text-secondary);
    white-space: nowrap; overflow: hidden;
}
.week-interview-pos { font-weight: 600; color: var(--text-primary); }
.week-interview-cand { color: var(--text-secondary); }
.week-interview-line3 {
    margin-top: 6px;
    font-size: 12px; color: var(--text-tertiary);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* ============================================
   工作台页面容器
   仅作用于工作台页面容器，不影响其他页面
   ============================================ */
.page-container.dashboard-page {
    overflow-y: auto;
    padding: 16px 24px 20px;
}

.dashboard-page .page-header {
    flex-shrink: 0;
    margin-bottom: 12px;
    gap: 12px;
}
.dashboard-page .page-title { font-size: 20px; }
.dashboard-page .page-subtitle { font-size: 12px; margin-top: 2px; }

/* KPI 四卡：整体压缩，腾出高度给下方面试安排 */
.dashboard-page .kpi-grid {
    flex-shrink: 0;
    grid-template-columns: repeat(3, 1fr); /* 工作台3列，业绩卡片独立在下方 */
    gap: 14px;
    margin-bottom: 14px;
}
.dashboard-page .kpi-card { padding: 14px 16px; }
.dashboard-page .kpi-header { margin-bottom: 10px; }
.dashboard-page .kpi-icon { width: 32px; height: 32px; }
.dashboard-page .kpi-icon svg { width: 16px; height: 16px; }
.dashboard-page .kpi-trend { font-size: 11px; padding: 3px 8px; }
.dashboard-page .kpi-value { font-size: 24px; }
.dashboard-page .kpi-label { font-size: 12px; margin-top: 2px; }
.dashboard-page .kpi-rows { margin-top: 10px; padding-top: 8px; gap: 5px; }
.dashboard-page .kpi-row { font-size: 12px; }
.dashboard-page .kpi-row-value { font-size: 13px; }
.dashboard-page .kpi-sub { margin-top: 8px; font-size: 11px; }

/* ---------- 必填校验错误高亮（候选人表单） ---------- */
.form-input.input-error {
    border-color: #DC2626 !important;
    box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.12);
    animation: input-shake 0.3s ease;
}
@keyframes input-shake {
    0%, 100% { transform: translateX(0); }
    25% { transform: translateX(-3px); }
    75% { transform: translateX(3px); }
}

/* ---------- 重复人选处理方案按钮 ---------- */
.dup-option {
    display: flex; align-items: center; gap: 12px;
    width: 100%; padding: 14px 16px; text-align: left;
    border: 1px solid var(--border); border-radius: 10px;
    background: var(--surface); cursor: pointer;
    transition: border-color .15s, box-shadow .15s, transform .1s;
}
.dup-option:hover { border-color: var(--primary); box-shadow: 0 2px 10px rgba(37, 99, 235, .08); }
.dup-option:active { transform: scale(.99); }
.dup-option-icon {
    flex-shrink: 0; width: 36px; height: 36px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 17px; font-weight: 700;
}
.dup-option-text { flex: 1; display: flex; flex-direction: column; gap: 3px; }
.dup-option-title { font-size: 14px; font-weight: 700; color: var(--text-primary); }
.dup-option-desc { font-size: 12px; color: var(--text-tertiary); line-height: 1.5; }
.dup-option-arrow { color: var(--text-tertiary); flex-shrink: 0; }
.dup-option:hover .dup-option-arrow { color: var(--primary); }

/* ---------- 人才库高级筛选面板 ---------- */
.talent-filter-panel { padding: 0; }
.filter-search-bar {
    display: flex; align-items: center; gap: 10px;
    padding: 14px 16px; border-bottom: 1px solid var(--border-light);
}
.filter-search-bar .filter-select {
    height: 36px; padding: 0 10px; border: 1px solid var(--border);
    border-radius: var(--radius-md); background: var(--surface);
    font-size: 13px; color: var(--text-primary); cursor: pointer;
    outline: none; flex-shrink: 0;
}
.filter-search-bar .filter-search-input {
    flex: 1; height: 36px; padding: 0 12px; border: 1px solid var(--border);
    border-radius: var(--radius-md); background: var(--surface);
    font-size: 13px; color: var(--text-primary); outline: none;
    transition: border-color .15s, box-shadow .15s;
}
.filter-search-bar .filter-search-input:focus {
    border-color: var(--primary); box-shadow: 0 0 0 3px rgba(37,99,235,.08);
}
.filter-body { padding: 10px 16px; }
.filter-row {
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
    padding: 6px 0; min-height: 32px;
}
.filter-label {
    font-size: 12px; font-weight: 600; color: var(--text-secondary);
    white-space: nowrap; flex-shrink: 0; min-width: 64px;
}
.filter-options {
    display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
}
.filter-chip-sm {
    display: inline-flex; align-items: center;
    padding: 3px 10px; background: transparent;
    border: 1px solid transparent; border-radius: 14px;
    font-size: 12px; color: var(--text-secondary);
    cursor: pointer; transition: all .12s ease; user-select: none;
}
.filter-chip-sm:hover { color: var(--primary); background: rgba(37,99,235,.04); }
.filter-chip-sm.active { background: rgba(37,99,235,.1); color: var(--primary); border-color: rgba(37,99,235,.2); font-weight: 600; }
.filter-input-sm {
    height: 28px; padding: 0 10px; border: 1px solid var(--border);
    border-radius: var(--radius-md); background: var(--surface);
    font-size: 12px; color: var(--text-primary); outline: none;
    transition: border-color .15s, box-shadow .15s;
    min-width: 120px;
}
.filter-input-sm:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(37,99,235,.08); }
.filter-input-sm::placeholder { color: var(--text-tertiary); }

/* ============================================
   数据统计页 · 全公司数据看板
   ============================================ */
/* 公司累计 KPI 高亮卡 */
.kpi-card.kpi-company { border-color: rgba(37,99,235,.25); background: linear-gradient(135deg, rgba(37,99,235,.03), transparent); }

/* 员工业绩表 */
.member-row-main td { cursor: pointer; }
.member-row-main:hover td { background: rgba(37,99,235,.03); }
.member-row-main .member-name-cell { display: flex; align-items: center; gap: 10px; }
.member-row-main .member-expand-icon {
    width: 20px; height: 20px; display: flex; align-items: center; justify-content: center;
    color: var(--text-tertiary); transition: transform .18s ease;
}
.member-row-main.member-open .member-expand-icon { transform: rotate(90deg); color: var(--primary); }
.member-num { font-weight: 600; font-size: 13px; }
.member-num.zero { color: var(--text-tertiary); font-weight: 400; }
.member-revenue { color: #D97706; font-weight: 700; }

/* 顾问数据明细表：紧凑排版，整表宽度控制在可视区内，不再横向滚动 */
.stats-table-wrap table.data-table { font-size: 12.5px; }
.stats-table-wrap table.data-table th { padding: 10px 10px; font-size: 12px; }
.stats-table-wrap table.data-table td { padding: 11px 10px; white-space: nowrap; }

/* 员工明细展开区 */
.member-detail-row > td { padding: 0 !important; background: rgba(248,250,252,.6); }
.member-detail {
    padding: 14px 20px 18px;
    display: flex; flex-wrap: wrap; gap: 12px 20px; align-items: flex-start;
    position: sticky; left: 0;           /* 表格横向滚动时明细区钉在可视区左侧 */
    width: max-content;
    max-width: calc(100vw - var(--sidebar-w) - 72px);  /* 不超过可视宽度，内容多时换行、上下滚动 */
}
.member-detail-block {
    background: var(--surface); border: 1px solid var(--border-light);
    border-radius: var(--radius-md); padding: 12px 14px;
    flex: 0 1 auto; min-width: 240px; max-width: 100%;
}
.member-detail-block.block-full { flex: 1 1 100%; }
/* 明细行：固定分排——第 1 排 3 个模块、第 2 排 2 个模块，等宽并排 */
.member-detail-line {
    display: flex; flex-wrap: wrap; gap: 12px 20px; align-items: flex-start;
    width: 100%;
}
.member-detail-line > .member-detail-block { flex: 1 1 0; min-width: 200px; }
/* 推荐量/面试量明细上下排版（2026-10-07） */
.member-detail-line.line-col { flex-direction: column; gap: 16px; }
.member-detail-line.line-col > .member-detail-block { flex: 1 1 auto; width: 100%; }
/* 明细块自适应多列瀑布布局（2026-10-07）：按内容多少自动分 1~3 列，块不被拆断 */
.member-detail-cols { columns: 360px 3; column-gap: 14px; }
.member-detail-cols > .member-detail-block {
    break-inside: avoid; -webkit-column-break-inside: avoid; page-break-inside: avoid;
    margin: 0 0 14px; width: auto; max-width: none;
    transform: translateZ(0); /* 防止列内 break 边界渲染毛边 */
}
.member-detail-cols .member-detail-item { flex-wrap: wrap; row-gap: 2px; }
/* 推荐量/面试量明细：各自单独占满一行，位于多列区下方（2026-10-07） */
.member-detail-line.detail-line-2 { flex-direction: column; gap: 14px; margin-top: 14px; }
.member-detail-line.detail-line-2 > .member-detail-block { flex: 1 1 auto; width: 100%; }
/* 推荐量明细内嵌流程进度条（2026-10-07）：复用 Pipeline 流程步骤条 */
.member-detail-item.member-detail-item-flow { display: block; }
.mflow-wrap {
    width: 100%; margin-top: 6px; padding: 8px 10px;
    background: var(--bg-subtle, #F8FAFC); border-radius: 8px;
    overflow-x: auto; border: 1px solid var(--border, #E2E8F0);
}
.mflow-wrap .flow-steps { min-width: max-content; }
.member-detail-line .member-detail-item { flex-wrap: wrap; row-gap: 2px; }
.member-detail-title {
    font-size: 12px; font-weight: 600; color: var(--text-secondary);
    margin-bottom: 8px; display: flex; align-items: center; gap: 6px;
}
.member-detail-title .count-badge {
    background: rgba(37,99,235,.08); color: var(--primary);
    border-radius: 10px; padding: 1px 8px; font-size: 11px;
}
.member-detail-item {
    display: flex; align-items: center; justify-content: space-between; gap: 8px;
    padding: 5px 0; font-size: 12px; border-bottom: 1px dashed var(--border-light);
}
.member-detail-item:last-child { border-bottom: none; }
.member-detail-item .mdi-name { color: var(--text-primary); font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.member-detail-item .mdi-meta { color: var(--text-tertiary); font-size: 11px; flex-shrink: 0; }
.member-detail-empty { font-size: 12px; color: var(--text-tertiary); padding: 4px 0; }
/* 新增人选数 · 按岗位分组（2026-10-19） */
.member-detail-title .nc-subcount { font-size: 11px; font-weight: 500; color: var(--text-tertiary); }
.nc-group { margin-bottom: 10px; }
.nc-group:last-of-type { margin-bottom: 0; }
.nc-group-head {
    display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
    padding: 5px 10px; margin-bottom: 2px;
    font-size: 12px; font-weight: 600; color: var(--text-primary);
    background: var(--bg-subtle, #F8FAFC); border-radius: 8px;
    border-left: 3px solid var(--primary);
}
.nc-group-head .nc-group-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 60%; }
.nc-group-head .nc-client { font-size: 11px; font-weight: 500; color: var(--text-tertiary); }
.nc-group-head .nc-count { margin-left: auto; font-size: 11px; font-weight: 600; color: var(--text-secondary); flex-shrink: 0; }
.nc-group.nc-group-nopos .nc-group-head { border-left-color: #94A3B8; background: var(--bg-subtle, #F1F5F9); }
.nc-group-body { padding-left: 8px; }

/* 数据总揽 · 时间线筛选 */
.period-selector {
    display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end;
}
.period-chip {
    padding: 4px 12px; border-radius: 16px; font-size: 12.5px; font-weight: 600;
    border: 1px solid var(--border); background: var(--surface); color: var(--text-secondary);
    cursor: pointer; transition: all .18s ease; white-space: nowrap;
}
.period-chip:hover { border-color: var(--primary); color: var(--primary); }
.period-chip.active {
    background: var(--primary); color: #fff; border-color: var(--primary);
    box-shadow: 0 2px 8px rgba(37,99,235,.3);
}

/* 数据统计 · 周期筛选吸顶栏：页面滚动时固定在内容区顶部 */
.stat-filter-sticky {
    position: sticky; top: 0; z-index: 30;
    display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
    background: var(--bg);
    margin: -6px -4px 16px; padding: 8px 4px 10px;
}
.stat-filter-sticky .period-selector { justify-content: flex-start; }

/* 金额列 */
.member-money { font-weight: 700; font-size: 13px; color: var(--text-primary); font-variant-numeric: tabular-nums; }
.member-money.money-paid { color: #16A34A; }
.member-money.money-pending { color: #DC2626; }
.member-money.zero { color: var(--text-tertiary); font-weight: 400; }

/* 回款率进度条 */
.pay-progress {
    height: 6px; border-radius: 3px; background: var(--border-light);
    overflow: hidden;
}
.pay-progress-bar { height: 100%; border-radius: 3px; transition: width .3s ease; }

/* 明细内回款标签 */
.pay-tag {
    display: inline-block; padding: 1px 7px; border-radius: 10px;
    font-size: 10px; font-weight: 600; margin-left: 4px;
    background: var(--border-light); color: var(--text-secondary);
}
.pay-tag.pay-done { background: #DCFCE7; color: #15803D; }
.pay-tag.pay-pending { background: #FEF3C7; color: #B45309; }

/* 明细顶部回款汇总条 */
.pay-summary {
    flex: 1 1 100%;
    display: flex; gap: 12px; flex-wrap: wrap;
    background: linear-gradient(135deg, rgba(37,99,235,.04), transparent);
    border: 1px solid rgba(37,99,235,.18); border-radius: var(--radius-md);
    padding: 12px 16px;
}
.pay-summary-item {
    display: flex; flex-direction: column; gap: 4px; min-width: 110px; flex: 1;
}
.pay-summary-label { font-size: 11px; color: var(--text-tertiary); }
.pay-summary-val { font-size: 16px; font-weight: 700; color: var(--text-primary); font-variant-numeric: tabular-nums; }

/* 记录回款弹窗金额速览 */
.pay-sum-box {
    background: var(--bg); border: 1px solid var(--border-light);
    border-radius: var(--radius-sm); padding: 10px 12px; text-align: center;
}
.pay-sum-label { font-size: 11px; color: var(--text-tertiary); margin-bottom: 4px; }
.pay-sum-val { font-size: 15px; font-weight: 700; font-variant-numeric: tabular-nums; }

/* Offer 记录按钮（绿色描边） */
.btn-outline-green {
    border: 1px solid rgba(22,163,74,.4); color: #15803D;
    background: rgba(22,163,74,.06);
}
.btn-outline-green:hover { background: #16A34A; color: #fff; border-color: #16A34A; }

/* 看板员工排序 tab */
.admin-view-tabs { display: flex; gap: 8px; flex-wrap: wrap; }
.av-tab {
    padding: 6px 14px; border-radius: 16px; font-size: 12px; font-weight: 600;
    border: 1px solid var(--border); background: transparent; color: var(--text-secondary);
    cursor: pointer; transition: all .15s ease;
}
.av-tab:hover { border-color: var(--primary); color: var(--primary); }
.av-tab.active { background: var(--primary); border-color: var(--primary); color: #fff; }

/* 管理员数据总览 · 两行布局 */
.kpi-grid-admin { grid-template-columns: repeat(3, 1fr); }
.kpi-grid-admin.kpi-grid-row2 { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 860px) {
    .kpi-grid-admin { grid-template-columns: repeat(2, 1fr); }
    .kpi-grid-admin.kpi-grid-row2 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 520px) {
    .kpi-grid-admin { grid-template-columns: 1fr; }
    .kpi-grid-admin.kpi-grid-row2 { grid-template-columns: 1fr; }
}

/* 数据明细页 KPI：三卡固定一排（2026-10-07，覆盖 1280px 断点的两列规则），窄屏降级单列 */
.detail-kpi-grid { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 1024px) {
    .detail-kpi-grid { grid-template-columns: 1fr; }
}

/* 数据明细 · 成员行模块按键（2026-10-07）：五个明细块改为按键，点击弹窗显示 */
/* 2026-10-08：紧凑化 + 宽屏强制单行（不同电脑缩放比例下保持与标准视图一致的布局） */
.member-block-btns { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 12px; }
.member-block-btn {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 5px 10px; border-radius: 9px; font-size: 12.5px; font-weight: 600;
    border: 1px solid var(--border, #E2E8F0); background: var(--bg-subtle, #F8FAFC); color: var(--text-secondary, #475569);
    cursor: pointer; transition: all .15s ease; white-space: nowrap;
}
.member-block-btn:hover { border-color: var(--primary, #2563EB); color: var(--primary, #2563EB); background: var(--primary-bg, #EFF6FF); }
.member-block-btn.active { border-color: var(--primary, #2563EB); color: var(--primary, #2563EB); background: var(--primary-bg, #EFF6FF); }
.member-block-btn .count-badge {
    background: rgba(37,99,235,.08); color: var(--primary, #2563EB);
    border-radius: 10px; padding: 1px 6px; font-size: 10.5px;
}
.member-block-btn.active .count-badge { background: var(--primary, #2563EB); color: #fff; }
.member-block-panel { margin-top: 12px; flex: 1 1 100%; width: 100%; }  /* 占满整行（2026-10-19），不再缩在半列 */
.member-block-panel .member-detail-block { margin-bottom: 14px; }
.member-block-panel .member-detail-block:last-child { margin-bottom: 0; }

/* KPI 弹窗明细 */
.kpi-detail-modal { max-width: 800px; }
/* 简评 + 沟通记录弹窗（2026-10-26）：正文是文字块而非表格，需要内边距 */
.pc-detail-modal { max-width: 720px; }
.pc-detail-modal .kpi-detail-body { padding: 16px 18px 6px; }
.kpi-detail-body {
    padding: 0; overflow-y: auto; max-height: 60vh;
    background: var(--bg);
}
.kpi-detail-table {
    width: 100%; border-collapse: collapse; font-size: 13px;
}
.kpi-detail-table thead {
    position: sticky; top: 0; z-index: 2;
    background: var(--surface);
}
.kpi-detail-table th {
    padding: 10px 14px; text-align: left; font-weight: 600;
    color: var(--text-secondary); font-size: 12px;
    border-bottom: 1px solid var(--border-light);
    white-space: nowrap;
}
.kpi-detail-table td {
    padding: 10px 14px; border-bottom: 1px solid var(--border-light);
    color: var(--text-primary); vertical-align: middle;
    white-space: nowrap;
}
.kpi-detail-table tbody tr:hover { background: rgba(37,99,235,.04); }
.kpi-detail-table tbody tr:last-child td { border-bottom: none; }
.kpi-detail-empty {
    padding: 40px; text-align: center; color: var(--text-tertiary); font-size: 14px;
}

/* 业绩卡片明细宽弹窗（列数多，支持横向滚动） */
.perf-detail-modal { max-width: 1200px; }
.perf-detail-modal .kpi-detail-body { overflow-x: auto; }

/* 可点击卡片：hover 提示可查看明细 */
.kpi-card.kpi-clickable,
.fy-perf-card[data-perf] { cursor: pointer; }
.kpi-card.kpi-clickable:hover {
    box-shadow: var(--shadow-md);
    transform: translateY(-2px);
    transition: box-shadow .15s ease, transform .15s ease;
}

/* 工作台数据明细列表 */
.dash-list-item {
    display: flex; align-items: center; justify-content: space-between;
    padding: 10px 14px; border-bottom: 1px solid var(--border-light);
    gap: 12px;
}
.dash-list-item:last-child { border-bottom: none; }
.dash-list-main {
    display: flex; flex-direction: column; gap: 4px; min-width: 0; flex: 1;
}
.dash-list-name {
    font-size: 13px; font-weight: 600; color: var(--text-primary);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.dash-list-meta {
    display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
    font-size: 12px;
}
.dash-list-side {
    flex-shrink: 0; text-align: right;
}


/* ============================================
   知识共享
   ============================================ */
.kb-pathbar {
    display: flex; align-items: center; gap: 4px; flex-wrap: wrap;
    padding: 10px 16px; margin-bottom: 16px;
    background: var(--surface); border: 1px solid var(--border);
    border-radius: var(--radius-md); font-size: 13px;
}
.kb-crumb {
    color: var(--text-secondary); cursor: pointer; padding: 3px 6px;
    border-radius: var(--radius-sm); transition: all .15s ease;
    white-space: nowrap;
}
.kb-crumb:hover { color: var(--primary); background: var(--primary-bg); }
.kb-crumb.active { color: var(--primary); font-weight: 600; cursor: default; }
.kb-crumb.active:hover { background: transparent; }
.kb-crumb-sep { color: var(--text-disabled); }

.kb-section { margin-bottom: 20px; }
.kb-section-title { font-size: 15px; font-weight: 600; color: var(--text-primary); margin: 0; }
.kb-count {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 20px; height: 20px; padding: 0 6px;
    background: var(--bg); border: 1px solid var(--border);
    border-radius: 10px; font-size: 11px; color: var(--text-tertiary);
}

.kb-folder-grid {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
    gap: 14px; padding: 16px 20px;
}
.kb-folder-card {
    background: var(--surface); border: 1px solid var(--border);
    border-radius: var(--radius-md); padding: 16px;
    transition: box-shadow .15s ease, transform .15s ease, border-color .15s ease;
}
.kb-folder-card:hover { box-shadow: var(--shadow-md); border-color: var(--primary); transform: translateY(-1px); }
.kb-folder-card.renaming { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-bg); }
.kb-folder-card-body { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.kb-folder-ico { width: 34px; height: 34px; flex-shrink: 0; }
.kb-folder-name {
    font-size: 14px; font-weight: 600; color: var(--text-primary);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    cursor: pointer; flex: 1; min-width: 0;
}
.kb-folder-name:hover { color: var(--primary); }
.kb-folder-meta { font-size: 12px; color: var(--text-tertiary); margin-bottom: 12px; }
.kb-folder-actions { display: flex; gap: 6px; flex-wrap: wrap; }

.kb-folder-input-row {
    display: flex; align-items: center; gap: 8px;
    padding: 14px 20px; border-bottom: 1px solid var(--border-light);
}
.kb-input {
    flex: 1; max-width: 420px;
    padding: 8px 12px; border: 1px solid var(--border);
    border-radius: var(--radius-sm); font-size: 13px;
    outline: none; background: var(--surface); color: var(--text-primary);
    transition: border-color .15s ease, box-shadow .15s ease;
}
.kb-input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-bg); }
.kb-rename-input { max-width: none; }

.kb-empty {
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 10px; padding: 48px 20px; color: var(--text-tertiary); font-size: 13px;
}
.kb-empty svg { width: 40px; height: 40px; opacity: .4; }
.kb-empty p { margin: 0; }

.kb-file-table tbody tr { cursor: default; }
.kb-file-cell { display: flex; align-items: center; gap: 12px; min-width: 0; }
.kb-file-icon { display: inline-flex; flex-shrink: 0; }
.kb-file-icon svg { width: 30px; height: 30px; }
.kb-file-info { min-width: 0; }
.kb-file-name {
    font-size: 13px; font-weight: 600; color: var(--text-primary);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 320px;
}
.kb-muted { color: var(--text-tertiary); font-size: 12px; }
.kb-file-actions { display: flex; gap: 6px; flex-wrap: nowrap; }
.kb-file-actions .btn { white-space: nowrap; }

/* ============================================
   客户详情抽屉：附件 / 合同 / 在招岗位
   ============================================ */
.btn-sm {
    height: 28px; padding: 0 10px; font-size: 12px;
    display: inline-flex; align-items: center; gap: 4px;
}
.drawer-empty-hint {
    font-size: 12px; color: var(--text-tertiary);
    padding: 14px 12px; background: var(--bg);
    border: 1px dashed var(--border); border-radius: var(--radius-md);
    line-height: 1.6; text-align: center;
}

/* 附件列表 */
.attach-list { display: flex; flex-direction: column; gap: 8px; }
.attach-item {
    display: flex; align-items: center; gap: 10px;
    padding: 10px 12px; border: 1px solid var(--border);
    border-radius: var(--radius-md); background: var(--surface);
    transition: box-shadow .15s ease, border-color .15s ease;
}
.attach-item:hover { border-color: var(--primary); box-shadow: var(--shadow-sm); }
.attach-icon { font-size: 16px; line-height: 1; }
.attach-main { flex: 1; min-width: 0; }
.attach-name {
    font-size: 13px; font-weight: 600; color: var(--text-primary);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.attach-meta { font-size: 11px; color: var(--text-tertiary); margin-top: 2px; }
.attach-ops { display: flex; gap: 2px; flex-shrink: 0; }
.attach-ops .btn-icon { width: 28px; height: 28px; }
.attach-ops a.btn-icon { display: inline-flex; align-items: center; justify-content: center; color: var(--text-tertiary); border-radius: var(--radius-sm); }
.attach-ops a.btn-icon:hover { color: var(--primary); background: var(--primary-bg); }

/* 合同卡片 */
.contract-list { display: flex; flex-direction: column; gap: 10px; }
.contract-card {
    border: 1px solid var(--border); border-radius: var(--radius-md);
    padding: 12px 14px; background: var(--surface);
    transition: box-shadow .15s ease, border-color .15s ease;
}
.contract-card:hover { border-color: var(--primary); box-shadow: var(--shadow-sm); }
.contract-card-head {
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: 10px; gap: 8px;
}
.contract-company {
    font-size: 14px; font-weight: 700; color: var(--text-primary);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.contract-grid {
    display: grid; grid-template-columns: 1fr 1fr; gap: 8px 14px; margin-bottom: 10px;
}
.contract-grid > div { min-width: 0; }
.contract-grid .detail-label { display: block; font-size: 11px; color: var(--text-tertiary); margin-bottom: 2px; }
.contract-grid .detail-value { display: block; font-size: 13px; color: var(--text-primary); }
.contract-file {
    display: flex; align-items: center; gap: 8px;
    padding: 8px 10px; background: var(--bg);
    border-radius: var(--radius-sm); font-size: 12px;
}
.contract-file-name {
    flex: 1; min-width: 0; color: var(--primary); font-weight: 600;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-decoration: none;
}
.contract-file-name:hover { text-decoration: underline; }
.contract-card-ops { display: flex; gap: 6px; margin-top: 10px; }

/* 在招岗位列表（客户抽屉内） */
.client-pos-list { display: flex; flex-direction: column; gap: 8px; }
.client-pos-item {
    display: flex; align-items: center; gap: 10px;
    padding: 10px 12px; border: 1px solid var(--border);
    border-radius: var(--radius-md); background: var(--surface); cursor: pointer;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.client-pos-item:hover { border-color: var(--primary); box-shadow: var(--shadow-sm); }
.client-pos-main { flex: 1; min-width: 0; }
.client-pos-title {
    font-size: 13px; font-weight: 600; color: var(--text-primary);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.client-pos-meta { font-size: 11px; color: var(--text-tertiary); margin-top: 2px; }
.client-pos-ops { display: flex; gap: 2px; flex-shrink: 0; }
.client-pos-ops .btn-icon { width: 28px; height: 28px; }

/* 职位抽屉内的客户卡片 */
.client-link-card {
    display: flex; align-items: center; gap: 12px;
    padding: 12px; border: 1px solid var(--border);
    border-radius: var(--radius-md); cursor: pointer;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.client-link-card:hover { border-color: var(--primary); box-shadow: var(--shadow-sm); }
.client-link-card .company-logo { width: 38px; height: 38px; font-size: 16px; flex-shrink: 0; }

/* ============================================
   职位管理：招聘状态选择 + 附件
   ============================================ */
.pos-status-select {
    appearance: none; -webkit-appearance: none;
    border: 1px solid var(--border); background: var(--surface);
    color: var(--primary); font-weight: 700; font-size: 12px;
    padding: 5px 26px 5px 12px; border-radius: 20px; cursor: pointer;
    outline: none; flex-shrink: 0;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2399a1af' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 8px center; background-size: 12px;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.pos-status-select:hover { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-bg); }
.pos-status-select:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-bg); }
.pos-status-select option { color: var(--text-primary); font-weight: 600; }

/* ============================================
   职位详情：推荐人选表格（入职/过保时间手动填写）
   ============================================ */
.rec-table {
    width: 100%; border-collapse: collapse; font-size: 12px; white-space: nowrap;
}
.rec-table th {
    text-align: left; padding: 8px 10px; font-weight: 600; font-size: 11px;
    color: var(--text-tertiary); border-bottom: 1px solid var(--border);
    background: var(--surface-alt, rgba(127,127,127,.04));
}
.rec-table td {
    padding: 8px 10px; border-bottom: 1px solid var(--border);
    color: var(--text-secondary); vertical-align: middle;
}
.rec-table tr:hover td { background: var(--surface-alt, rgba(127,127,127,.04)); }
.rec-name-btn {
    background: none; border: none; padding: 0; cursor: pointer;
    color: var(--primary); font-weight: 700; font-size: 13px;
}
.rec-name-btn:hover { text-decoration: underline; }
.rec-date-input {
    border: 1px solid var(--border); border-radius: 6px; padding: 3px 6px;
    font-size: 12px; color: var(--text-primary); background: var(--surface);
    outline: none; width: 130px; cursor: pointer;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.rec-date-input:hover { border-color: var(--primary); }
.rec-date-input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-bg); }
.rec-date-text { color: var(--text-secondary); }

/* ============================================
   职位表格展开行
   ============================================ */
.position-row { cursor: pointer; }
.position-row:hover { background: var(--surface-alt, rgba(127,127,127,.04)); }
.pos-expand-row { display: none; }
.pos-expand-row.active { display: table-row; }
.pos-expand-row > td { padding: 0; border: none; }
.pos-expand-inner {
    padding: 16px 20px;
    background: var(--bg);
    border-top: 1px solid var(--border);
}
/* 全站统一日期 · 时间控件（界面与操作对齐 Chrome 原生控件） */
.cz-date-wrap { position: relative; display: block; width: 100%; min-width: 0; }
.cz-date-input { width: 100%; padding-right: 32px !important; cursor: text; }
.cz-date-input.cz-date-invalid { border-color: #DC2626 !important; box-shadow: 0 0 0 2px rgba(220,38,38,.12); }
.cz-date-icon {
    position: absolute; right: 9px; top: 50%; transform: translateY(-50%);
    color: var(--text-tertiary); cursor: pointer; display: flex; align-items: center;
}
.cz-date-icon:hover { color: var(--primary); }
.cz-cal {
    position: fixed; z-index: 12000; display: none; width: 244px; padding: 10px;
    background: var(--surface, #fff); border: 1px solid var(--border);
    border-radius: 12px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.14);
    user-select: none;
}
.cz-cal.cz-cal-wide { width: 288px; }
.cz-cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; gap: 4px; }
.cz-cal-head-spacer { width: 28px; }
.cz-cal-title { font-weight: 700; font-size: 13px; color: var(--text-primary); }
.cz-cal-title-btn {
    border: none; background: transparent; cursor: pointer; padding: 3px 8px; border-radius: 6px;
    font-weight: 700; font-size: 13px; color: var(--text-primary); font-family: inherit;
}
.cz-cal-title-btn:hover { background: var(--surface-alt, rgba(127,127,127,.1)); color: var(--primary); }
.cz-cal-nav, .cz-cal-btn {
    border: 1px solid var(--border); background: transparent; color: var(--text-secondary);
    border-radius: 6px; cursor: pointer; font-size: 12px; padding: 2px 8px; line-height: 1.6;
}
.cz-cal-nav:hover, .cz-cal-btn:hover { background: var(--surface-alt, rgba(127, 127, 127, 0.08)); }
.cz-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.cz-cal-wd { font-size: 11px; color: var(--text-tertiary); text-align: center; padding: 2px 0; }
.cz-cal-day {
    font-size: 12px; text-align: center; padding: 5px 0; border-radius: 6px;
    cursor: pointer; color: var(--text-primary);
}
.cz-cal-day:hover { background: var(--primary-bg, #eef4ff); }
.cz-cal-day.dim { color: var(--text-tertiary); opacity: 0.55; }
.cz-cal-day.sel { background: var(--primary); color: #fff; }
.cz-cal-day.today:not(.sel) { box-shadow: inset 0 0 0 1px var(--primary); }
.cz-cal-foot { display: flex; justify-content: space-between; margin-top: 8px; }

/* 年月选择面板（点日历顶部年月标签进入；月份网格 + 年份列表，年/月可分开手动输入） */
.cz-ym-body { display: flex; gap: 10px; }
.cz-ym-months { flex: 1; display: grid; grid-template-columns: repeat(3, 1fr); gap: 3px; }
.cz-ym-years {
    width: 66px; max-height: 158px; overflow-y: auto; display: flex; flex-direction: column; gap: 2px;
    border-left: 1px solid var(--border); padding-left: 6px;
}
.cz-ym-month-cell, .cz-ym-year-cell {
    font-size: 12px; text-align: center; padding: 5px 0; border-radius: 6px; cursor: pointer; color: var(--text-primary);
}
.cz-ym-month-cell:hover, .cz-ym-year-cell:hover { background: var(--primary-bg, #eef4ff); }
.cz-ym-month-cell.sel, .cz-ym-year-cell.sel { background: var(--primary); color: #fff; font-weight: 600; }
.cz-ym-manual {
    display: flex; align-items: center; gap: 4px; margin-top: 8px; padding-top: 8px; flex-wrap: wrap;
    border-top: 1px solid var(--border); font-size: 11px; color: var(--text-tertiary);
}
.cz-ym-manual-label { margin-right: 2px; }
.cz-ym-manual-input {
    width: 68px; padding: 3px 2px; border: 1px solid var(--border); border-radius: 6px;
    font-size: 12px; background: var(--surface); color: var(--text-primary); text-align: center; font-family: inherit;
}
/* 手动输入年份 4 位数显示完全：隐藏 number 上下箭头（滚轮/键盘仍可调） */
.cz-ym-manual-input::-webkit-outer-spin-button,
.cz-ym-manual-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.cz-ym-manual-input { -moz-appearance: textfield; appearance: textfield; }
/* 年月层级字段（就职起始 / 离职日期）：面板底部「清除 / 本月」 */
.cz-ym-foot { display: flex; justify-content: space-between; gap: 6px; margin-top: 8px; }
.cz-date-input-month { letter-spacing: 0.3px; }

/* 时间相关模块共用的「年月」筛选条：年份与月份分开选择，年份可手动输入 */
.cz-ym-bar {
    display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px;
    border: 1px solid var(--border); border-radius: 12px; background: var(--surface);
}
.cz-ym-bar.active { border-color: var(--primary); box-shadow: 0 0 0 2px var(--primary-bg, #eef4ff); }
.cz-ym-bar-label { font-size: 12px; color: var(--text-tertiary); }
.cz-ym-year {
    width: 68px; padding: 5px 6px; border: 1px solid var(--border); border-radius: 7px;
    font-size: 12px; background: var(--surface); color: var(--text-primary); text-align: center; font-family: inherit;
}
.cz-ym-month {
    padding: 5px 6px; border: 1px solid var(--border); border-radius: 7px;
    font-size: 12px; background: var(--surface); color: var(--text-primary); font-family: inherit;
}
/* 月份多选下拉（2026-10-07）：勾选 1-12 月任意组合 */
.cz-ym-dd { position: relative; display: inline-block; }
.cz-ym-month-btn {
    padding: 5px 10px; border: 1px solid var(--border); border-radius: 7px;
    font-size: 12px; background: var(--surface); color: var(--text-primary); font-family: inherit;
    cursor: pointer; min-width: 96px; text-align: left; white-space: nowrap;
}
.cz-ym-month-btn:hover { border-color: var(--primary); }
.cz-ym-pop {
    position: absolute; z-index: 60; top: calc(100% + 4px); left: 0;
    background: var(--surface); border: 1px solid var(--border); border-radius: 10px;
    box-shadow: 0 8px 24px rgba(15, 23, 42, .12); padding: 8px; width: 216px;
    display: grid; grid-template-columns: 1fr 1fr; gap: 2px 8px;
}
.cz-ym-mi {
    display: flex; align-items: center; gap: 6px; padding: 4px 6px; border-radius: 6px;
    font-size: 12px; color: var(--text-primary); cursor: pointer; white-space: nowrap;
}
.cz-ym-mi:hover { background: var(--bg-subtle, #F8FAFC); }
.cz-ym-mi input { margin: 0; cursor: pointer; }
.cz-ym-mi[data-m=""] { grid-column: 1 / -1; border-bottom: 1px dashed var(--border); border-radius: 6px 6px 0 0; margin-bottom: 4px; }
.cz-ym-unit { font-size: 12px; color: var(--text-secondary); }
.cz-ym-apply {
    padding: 5px 12px; border: 1px solid var(--primary); border-radius: 7px; background: var(--primary);
    color: #fff; font-size: 12px; font-weight: 600; cursor: pointer; font-family: inherit;
}
.cz-ym-apply:hover { opacity: .88; }
.stat-filter-sticky .cz-ym-bar { margin-left: auto; }

/* 2026-10-08：宽屏（CSS 宽度 >1100px）强制单行，保证不同电脑缩放比例下布局一致 */
@media (min-width: 1101px) {
    .stat-filter-sticky,
    .cz-filter-row { flex-wrap: nowrap; }
    .stat-filter-sticky .period-selector,
    .cz-filter-row .period-selector { flex-wrap: nowrap; }
    /* 2026-10-26 用户要求：成员明细的模块按键不单行横排，超宽一律换行，避免右侧被裁切/需要左右滑动 */
    .member-block-btns { flex-wrap: wrap; }
    .stat-filter-sticky .period-chip,
    .cz-filter-row .period-chip { padding: 4px 10px; }
}
/* 我的数据明细：周期 chips + 年月条 同一行容器（与数据统计页吸顶栏同构） */
.cz-filter-row {
    display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
    padding: 0 16px 12px;
}

/* 推荐 Comments 条目化（流程卡片 + 候选人详情共用） */
.rc-list { display: block; }
.rc-line { display: block; padding: 1.5px 0; }
.rc-label { color: var(--text-primary); font-weight: 600; margin-right: 2px; }

.pos-expand-header {
    margin-bottom: 12px;
}
.pos-expand-title-row {
    display: flex; align-items: center; gap: 12px;
    min-width: 0;
}
.pos-expand-title-text {
    display: flex; align-items: baseline; gap: 8px;
    flex-wrap: wrap; flex: 1; min-width: 0;
}
.pos-title-client { font-weight: 700; font-size: 15px; color: var(--text-primary); white-space: nowrap; }
.pos-title-dot { color: var(--text-tertiary); font-size: 13px; }
.pos-title-name { font-weight: 600; font-size: 15px; color: var(--text-primary); }
.pos-title-city { font-size: 13px; color: var(--text-secondary); white-space: nowrap; }
.pos-title-salary {
    font-size: 13px; color: var(--primary); font-weight: 600; white-space: nowrap;
    background: var(--primary-bg); padding: 2px 8px; border-radius: var(--radius-sm, 6px);
}
.pos-expand-actions {
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
    margin-top: 10px;
}
.pos-expand-meta {
    display: flex; flex-wrap: wrap; gap: 16px;
    margin-bottom: 12px; padding: 10px 14px;
    background: var(--surface); border-radius: var(--radius-md);
    border: 1px solid var(--border-light);
}
.pos-expand-meta-item {
    font-size: 12px; color: var(--text-secondary);
}
.pos-expand-meta-item b {
    color: var(--text-primary); font-weight: 600;
}
.pos-expand-desc {
    font-size: 13px; color: var(--text-secondary); line-height: 1.6;
    margin-bottom: 12px; padding: 10px 14px;
    background: var(--surface); border-radius: var(--radius-md);
    border: 1px solid var(--border-light);
}
/* 职位描述智能排版（展开行与详情抽屉共用） */
.pos-desc-formatted { font-size: 13px; color: var(--text-secondary); line-height: 1.8; }
.pos-desc-formatted .pos-desc-sec {
    font-weight: 700; color: var(--text-primary); font-size: 13px;
    margin: 12px 0 4px;
}
.pos-desc-formatted .pos-desc-sec:first-child { margin-top: 0; }
.pos-desc-formatted .pos-desc-item { padding-left: 4px; }
.pos-desc-formatted .pos-desc-line { margin-bottom: 2px; }
.pos-expand-section {
    margin-bottom: 12px;
    padding: 12px 14px;
    background: var(--surface); border-radius: var(--radius-md);
    border: 1px solid var(--border-light);
}
.pos-expand-section-title {
    display: flex; align-items: center; justify-content: space-between;
    font-size: 13px; font-weight: 600; color: var(--text-primary);
    margin-bottom: 10px;
}

/* ============================================
   个人中心
   ============================================ */
.profile-grid {
    display: grid;
    grid-template-columns: 300px 1fr;
    gap: 16px;
    align-items: start;
}
@media (max-width: 1024px) {
    .profile-grid { grid-template-columns: 1fr; }
}
.profile-card { padding: 22px; }
.profile-avatar-wrap {
    display: flex; flex-direction: column; align-items: center;
    padding: 6px 0 18px; border-bottom: 1px solid var(--border-light); margin-bottom: 14px;
}
.profile-name { font-size: 17px; font-weight: 700; margin-top: 12px; }
.profile-title-tag {
    margin-top: 8px; font-size: 12px; font-weight: 600;
    color: var(--primary); background: var(--primary-bg, #EEF2FF);
    border-radius: 999px; padding: 4px 14px;
}
.profile-role { margin-top: 6px; font-size: 12px; color: var(--text-tertiary); }
.profile-form-grid {
    display: grid; grid-template-columns: 1fr 1fr; gap: 12px;
}
@media (max-width: 768px) {
    .profile-form-grid { grid-template-columns: 1fr; }
}
.profile-form-grid .form-field label {
    display: block; font-size: 12px; font-weight: 600;
    color: var(--text-secondary); margin-bottom: 5px;
}
.profile-form-grid .form-field input {
    width: 100%; padding: 9px 12px; border: 1.5px solid var(--border);
    border-radius: var(--radius-md); font-size: 13px; outline: none;
    font-family: inherit; transition: border-color .2s;
}
.profile-form-grid .form-field input:focus { border-color: var(--primary); }

/* 顶栏个性签名 */
.user-role.is-signature {
    max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    font-style: italic; color: var(--text-tertiary); font-size: 11px;
}
.user-menu-signature {
    font-size: 11px; color: var(--text-tertiary); font-style: italic;
    margin-top: 2px; max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* ============================================
   晋升喜报弹窗（简单高级）
   ============================================ */
.promo-overlay {
    position: fixed; inset: 0; z-index: 4000;
    background: rgba(15, 23, 42, .55);
    backdrop-filter: blur(3px);
    -webkit-backdrop-filter: blur(3px);
    display: flex; align-items: center; justify-content: center;
    animation: promoFade .35s ease;
}
@keyframes promoFade { from { opacity: 0; } to { opacity: 1; } }
@keyframes promoPop { from { opacity: 0; transform: translateY(16px) scale(.96); } to { opacity: 1; transform: none; } }
.promo-card {
    position: relative;
    width: 420px; max-width: calc(100vw - 40px);
    background: #FFFFFF;
    border-radius: 18px;
    padding: 42px 36px 30px;
    text-align: center;
    box-shadow: 0 30px 80px rgba(15, 23, 42, .35);
    border: 1px solid #E7E5E4;
    animation: promoPop .45s cubic-bezier(.22,1,.36,1);
}
.promo-card::before {
    content: '';
    position: absolute; top: 0; left: 50%; transform: translateX(-50%);
    width: 160px; height: 3px; border-radius: 0 0 3px 3px;
    background: linear-gradient(90deg, transparent, #C9A227, transparent);
}
.promo-close {
    position: absolute; top: 14px; right: 14px;
    width: 28px; height: 28px; border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    color: #94A3B8; cursor: pointer; transition: all .15s;
}
.promo-close:hover { background: #F1F5F9; color: #475569; }
.promo-eyebrow {
    font-size: 11px; letter-spacing: 4px; font-weight: 600;
    color: #C9A227; text-transform: uppercase;
}
.promo-divider {
    width: 56px; height: 1px; margin: 14px auto;
    background: linear-gradient(90deg, transparent, #D6D3D1, transparent);
}
.promo-congrats { font-size: 14px; color: #78716C; letter-spacing: 6px; }
.promo-name {
    font-size: 30px; font-weight: 800; color: #1C1917;
    margin: 8px 0 18px; letter-spacing: 2px;
}
.promo-titles {
    display: flex; align-items: center; justify-content: center; gap: 14px;
}
.promo-title-from {
    font-size: 14px; color: #A8A29E; text-decoration: line-through;
    text-decoration-color: #D6D3D1;
}
.promo-title-to {
    font-size: 18px; font-weight: 700; color: #B45309;
    background: linear-gradient(135deg, #FFFBEB, #FEF3C7);
    border: 1px solid #FDE68A; border-radius: 10px; padding: 6px 16px;
}
.promo-arrow { color: #C9A227; display: inline-flex; }
.promo-footer { font-size: 11px; color: #A8A29E; letter-spacing: 1px; }

/* ============================================
   Offer / 入职喜报弹窗（简单高级 · 不自动消失 · 手动关闭）
   ============================================ */
.celeb-overlay {
    position: fixed; inset: 0; z-index: 4100;
    background: rgba(15, 23, 42, .55);
    backdrop-filter: blur(3px);
    -webkit-backdrop-filter: blur(3px);
    display: flex; align-items: center; justify-content: center;
    animation: promoFade .35s ease;
}
.celeb-card {
    position: relative;
    width: 400px; max-width: calc(100vw - 40px);
    background: #FFFFFF;
    border-radius: 18px;
    padding: 40px 34px 28px;
    text-align: center;
    box-shadow: 0 30px 80px rgba(15, 23, 42, .35);
    border: 1px solid #E7E5E4;
    overflow: hidden;
    animation: promoPop .45s cubic-bezier(.22,1,.36,1);
}
.celeb-card::before {
    content: '';
    position: absolute; top: 0; left: 0; right: 0;
    height: 4px;
}
.celeb-offer .celeb-card::before { background: linear-gradient(90deg, #7C3AED, #C9A227, #7C3AED); }
.celeb-joined .celeb-card::before { background: linear-gradient(90deg, #059669, #34D399, #059669); }
.celeb-glow {
    position: absolute; top: -60px; left: 50%; transform: translateX(-50%);
    width: 240px; height: 120px; border-radius: 50%;
    filter: blur(40px); opacity: .25; pointer-events: none;
}
.celeb-offer .celeb-glow { background: #A78BFA; }
.celeb-joined .celeb-glow { background: #6EE7B7; }
.celeb-close {
    position: absolute; top: 14px; right: 14px;
    width: 28px; height: 28px; border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    color: #94A3B8; cursor: pointer; transition: all .15s;
    z-index: 2;
}
.celeb-close:hover { background: #F1F5F9; color: #475569; }
.celeb-eyebrow {
    font-size: 11px; letter-spacing: 4px; font-weight: 600;
    text-transform: uppercase;
}
.celeb-offer .celeb-eyebrow { color: #7C3AED; }
.celeb-joined .celeb-eyebrow { color: #059669; }
.celeb-divider {
    width: 56px; height: 1px; margin: 14px auto;
    background: linear-gradient(90deg, transparent, #D6D3D1, transparent);
}
.celeb-congrats { font-size: 13px; color: #78716C; letter-spacing: 6px; }
.celeb-name {
    font-size: 28px; font-weight: 800;
    margin: 8px 0 6px; letter-spacing: 2px;
}
.celeb-offer .celeb-name { color: #4C1D95; }
.celeb-joined .celeb-name { color: #064E3B; }
.celeb-sub { font-size: 14px; color: #A8A29E; margin-bottom: 4px; }
.celeb-grid {
    display: flex; flex-direction: column; gap: 8px;
    margin: 6px 0 2px;
    text-align: left;
}
.celeb-row {
    display: flex; align-items: center; justify-content: space-between;
    padding: 7px 14px;
    background: #F8FAFC;
    border-radius: 9px;
    font-size: 13px;
}
.celeb-label { color: #94A3B8; letter-spacing: 1px; }
.celeb-value { color: #334155; font-weight: 600; }
.celeb-offer .celeb-strong { color: #7C3AED; }
.celeb-joined .celeb-strong { color: #047857; }
.celeb-footer { font-size: 11px; color: #A8A29E; letter-spacing: 1px; }

/* 员工生日喜报（玫瑰金）/ 入职周年喜报（青蓝） */
.celeb-birthday .celeb-card::before { background: linear-gradient(90deg, #DB2777, #FB923C, #DB2777); }
.celeb-birthday .celeb-glow { background: #F9A8D4; }
.celeb-birthday .celeb-eyebrow { color: #DB2777; }
.celeb-birthday .celeb-name { color: #831843; }
.celeb-birthday .celeb-strong { color: #DB2777; }
.celeb-anniversary .celeb-card::before { background: linear-gradient(90deg, #0891B2, #38BDF8, #0891B2); }
.celeb-anniversary .celeb-glow { background: #7DD3FC; }
.celeb-anniversary .celeb-eyebrow { color: #0891B2; }
.celeb-anniversary .celeb-name { color: #0C4A6E; }
.celeb-anniversary .celeb-strong { color: #0E7490; }

/* ============================================
   面试流程递进：流程卡片 / 步骤时间线 / 阶段徽标 / 漏斗
   ============================================ */
.flow-card-list { display:flex;flex-direction:column;gap:10px }
.flow-card {
    border:1px solid var(--border);border-radius:10px;padding:8px 12px;
    background:var(--surface);display:flex;flex-direction:column;gap:5px;
    transition:box-shadow .15s;
}
.flow-card:hover { box-shadow:0 2px 10px rgba(15,23,42,.06) }
/* 紧凑头部：标题与推荐日期同行，日期靠右（2026-09-21） */
.flow-card-head { display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:2px 12px }
.flow-card-title { display:flex;align-items:center;gap:8px;flex-wrap:wrap }
.flow-card-name { font-weight:600;font-size:14px;color:var(--text-primary) }
.flow-card-meta { font-size:11px;color:var(--text-tertiary);margin-left:auto;white-space:nowrap }
/* 卡片头部三块分色：候选人=主蓝(.rec-name-btn)、职位=深灰、推荐顾问=青绿 */
.flow-title-part { color: var(--text-primary); font-weight: 700; font-size: 13px; }
.flow-title-pos { color: var(--text-primary); }
.flow-title-rec { color: #0D9488; }
.flow-title-sep { color: var(--text-tertiary); font-weight: 400; font-size: 13px; }

/* 阶段徽标 */
.flow-stage-badge {
    display:inline-flex;align-items:center;height:20px;padding:0 8px;
    border-radius:10px;font-size:11px;font-weight:600;white-space:nowrap;
}
.flow-stage-badge.flow-st-reserve { background:#EEF2FF; color:#4F46E5 }
.flow-stage-badge.flow-st-gray   { background:var(--bg-secondary, #F1F5F9); color:#64748B }
.flow-stage-badge.flow-st-blue   { background:var(--primary-bg); color:var(--primary) }
.flow-stage-badge.flow-st-purple { background:#F5F3FF; color:#7C3AED }
.flow-stage-badge.flow-st-cyan   { background:#ECFEFF; color:#0891B2 }
.flow-stage-badge.flow-st-green  { background:var(--success-bg); color:var(--success) }
.flow-stage-badge.flow-st-red    { background:var(--danger-bg); color:var(--danger) }
.flow-stage-badge.flow-st-orange { background:#FFF7ED; color:#EA580C }
.flow-release-tag { font-size:11px;color:#94A3B8;border:1px dashed #CBD5E1;border-radius:8px;padding:1px 6px }

/* 步骤时间线（横向、压扁单行：点+名称+日期+结果标签内联；反馈点击轮次弹窗查看） */
.flow-steps { display:flex;align-items:center;flex-wrap:wrap;gap:4px 0 }
.flow-step { display:flex;flex-direction:row;align-items:center;gap:5px;min-width:0;white-space:nowrap }
/* 每轮面试结果（内联小标签） */
.flow-step-res { margin-top:0 }
.flow-step-res .tag { font-size:10px;padding:1px 7px }
.flow-step-dot {
    width:10px;height:10px;border-radius:50%;margin-bottom:0;flex:none;
    background:#CBD5E1;border:2px solid #E2E8F0;
}
.flow-step.done .flow-step-dot { background:var(--primary);border-color:var(--primary) }
.flow-step.fail .flow-step-dot { background:var(--danger);border-color:var(--danger) }
.flow-step.pending .flow-step-dot { background:#fff;border-color:var(--primary);animation:flowPulse 1.6s infinite }
@keyframes flowPulse {
    0%,100% { box-shadow:0 0 0 0 rgba(59,130,246,.35) }
    50% { box-shadow:0 0 0 5px rgba(59,130,246,0) }
}
.flow-step-name { font-size:11px;font-weight:600;color:var(--text-secondary);line-height:1.2 }
.flow-step.done .flow-step-name { color:var(--primary) }
.flow-step.fail .flow-step-name { color:var(--danger) }
.flow-step.pending .flow-step-name { color:var(--primary) }
.flow-step-date { font-size:10px;color:var(--text-tertiary);line-height:1.2 }
.flow-step-line { flex:1 0 18px;height:2px;background:#E2E8F0;border-radius:1px;margin:0 6px }
.flow-step-line:last-child { display:none }
/* 每轮反馈内联在结果标签后（超长省略，悬停 title 看全文；slim 卡不渲染时间线不受影响） */
.flow-step-fb { font-size:10px;color:var(--text-secondary);line-height:1.4;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:none }
.flow-step-fb.fb-cand { color:#B45309 }
/* 主行：时间线占左侧，操作按钮压到最右同一行（2026-09-21） */
.flow-main-row { display:flex;align-items:center;gap:10px;flex-wrap:wrap }
.flow-main-row .flow-steps { flex:1 1 auto;min-width:0 }
/* Pipeline 紧凑卡（slim）：无时间线，轮次信息条占左、按钮靠最右同行 */
.flow-card-slim .flow-round-pending { flex:1 1 auto;min-width:0 }

/* 信息行 */
.flow-info { display:flex;flex-direction:column;gap:3px;padding-top:2px;border-top:1px dashed var(--border) }
.flow-info-row { display:flex;gap:8px;font-size:12px;align-items:baseline }
.flow-info-label {
    flex:none;font-size:10px;color:var(--text-tertiary);
    background:var(--bg-secondary, #F1F5F9);border-radius:4px;padding:1px 6px;
}
.flow-info-val { color:var(--text-secondary) }
.flow-info-warn { color:var(--danger) }

/* 待反馈提示 */
.flow-round-pending {
    font-size:12px;color:var(--text-secondary);
    background:var(--bg-secondary, #F8FAFC);border-radius:6px;padding:4px 8px;
    display:flex;align-items:center;gap:6px;flex-wrap:wrap;
}

/* 操作按钮区（与时间线同行、靠最右） */
.flow-actions { display:flex;gap:6px;flex-wrap:nowrap;flex:none;margin-left:auto }

/* 回款模块（已上岗后显示） */
.flow-pay-block {
    display:flex;flex-direction:column;gap:8px;margin-top:6px;
    padding:10px 12px;border:1px solid var(--border-light);border-radius:var(--radius-md);
    background:var(--surface);box-shadow:inset 0 0 0 1px rgba(15,23,42,.02);
}
.flow-pay-head { display:flex;align-items:center;gap:8px;flex-wrap:wrap }
.flow-pay-title { font-size:13px;font-weight:700;color:var(--text-primary) }
.flow-pay-sums { display:grid;grid-template-columns:repeat(3,1fr);gap:8px }
.flow-pay-input { display:flex;gap:6px;align-items:center }
.flow-pay-input input {
    flex:1;min-width:0;height:32px;border:1px solid var(--border);border-radius:var(--radius-sm);
    padding:0 10px;font-size:13px;outline:none;background:var(--surface);box-sizing:border-box;
}
.flow-pay-input input:focus { border-color:var(--primary) }
.flow-pay-log { font-size:11px;color:var(--text-tertiary) }

.btn.btn-outline-red {
    background:#fff;color:var(--danger);border:1px solid #FECACA;
}
.btn.btn-outline-red:hover { background:var(--danger-bg) }
.btn.btn-purple { background:#F5F3FF;color:#7C3AED;border:1px solid #DDD6FE }
.btn.btn-purple:hover { background:#7C3AED;color:#fff }
/* 催反馈按钮（2026-09-30）：橙色描边，醒目但不刺眼 */
.btn.btn-outline-orange { background:#FFF7ED;color:#EA580C;border:1px solid #FED7AA }
.btn.btn-outline-orange:hover { background:#EA580C;color:#fff;border-color:#EA580C }

/* 弹窗字段 */
.flow-modal-body { padding:20px;display:flex;flex-direction:column;gap:14px;max-height:60vh;overflow-y:auto }
.flow-field { display:flex;flex-direction:column;gap:6px }
.flow-field-label { font-size:13px;color:var(--text-secondary) }
.flow-grid2 { display:grid;grid-template-columns:1fr 1fr;gap:12px }
.flow-tip {
    font-size:12px;color:var(--text-tertiary);
    background:var(--bg-secondary, #F8FAFC);border-radius:6px;padding:8px 10px;line-height:1.5;
}
.flow-calc-box {
    display:flex;align-items:center;justify-content:space-between;
    background:var(--primary-bg);border-radius:8px;padding:10px 14px;
}
.flow-calc-label { font-size:12px;color:var(--text-secondary) }
.flow-calc-val { font-size:15px;font-weight:700;color:var(--primary) }

/* 漏斗 */
.funnel-row { display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 0 }
.funnel-item {
    flex:1;min-width:86px;text-align:center;background:var(--bg-secondary, #F8FAFC);
    border-radius:8px;padding:10px 6px;
}
.funnel-num { font-size:20px;font-weight:700;color:var(--text-primary);line-height:1.2 }
.funnel-label { font-size:11px;color:var(--text-tertiary);margin-top:2px }
.funnel-arrow { color:#CBD5E1;font-size:16px;flex:none }
.funnel-rates { display:flex;flex-direction:column;gap:4px;flex:none;padding-left:8px }

/* 面试管理职位筛选 */
.iv-pos-filter {
    height:32px;border:1px solid var(--border);border-radius:8px;
    padding:0 8px;font-size:13px;color:var(--text-secondary);background:var(--surface);
    outline:none;max-width:220px;
}

/* 日历更多 */
.calendar-event-more { font-size:10px;color:var(--text-tertiary);padding:1px 4px }
.calendar-event.gray { background:#F1F5F9; color:#94A3B8; border-left:3px solid #CBD5E1 }

/* ============================================================
   今日工作计划（工作台）
   ============================================================ */
.wp-bar {
    display: flex; align-items: center; justify-content: space-between;
    margin: 20px 0 12px;
}
.wp-bar-title {
    display: flex; align-items: center; gap: 8px;
    font-size: 15px; font-weight: 600; color: var(--text-primary);
}
.wp-bar-date {
    font-size: 12px; font-weight: 500; color: var(--text-tertiary);
    background: var(--surface-2, #F1F5F9);
    border: 1px solid var(--border);
    border-radius: 999px; padding: 2px 10px;
    cursor: pointer; user-select: none;
    transition: color .15s, border-color .15s, background .15s;
}
.wp-bar-date:hover { color: var(--primary); border-color: var(--primary); background: #EFF6FF; }
.wp-back-today {
    font-size: 12px; color: var(--primary); cursor: pointer; user-select: none;
    font-weight: 500;
}
.wp-back-today:hover { text-decoration: underline; }

/* 面试管理 · 今日面试置顶横幅（醒目提示） */
.iv-today-banner {
    background: linear-gradient(135deg, #FFF7ED 0%, #FFEDD5 100%);
    border: 1.5px solid #FDBA74;
    border-left: 5px solid #F97316;
    border-radius: 12px;
    padding: 14px 16px;
    box-shadow: 0 2px 12px rgba(249, 115, 22, .10);
}
.iv-today-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.iv-today-title {
    display: inline-flex; align-items: center; gap: 6px;
    font-size: 15px; font-weight: 700; color: #C2410C;
}
.iv-today-sub { font-size: 12px; color: #EA580C; }
.iv-today-list { display: flex; flex-direction: column; gap: 6px; }
.iv-today-item {
    display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
    background: rgba(255, 255, 255, .85);
    border: 1px solid #FED7AA;
    border-radius: 8px; padding: 8px 12px;
    transition: border-color .15s, box-shadow .15s;
}
.iv-today-item:hover { border-color: #F97316; box-shadow: 0 1px 6px rgba(249, 115, 22, .15); }
.iv-today-time {
    font-size: 13px; font-weight: 700; color: #C2410C;
    background: #FFEDD5; border-radius: 6px; padding: 2px 8px;
    min-width: 58px; text-align: center;
}
.iv-today-name { font-size: 13.5px; font-weight: 600; color: var(--text-primary); }
.iv-today-meta { font-size: 12px; color: var(--text-secondary); }
.wp-save-state {
    font-size: 12px; color: var(--text-tertiary);
    transition: color .2s;
}
.wp-grid {
    display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px;
}
@media (max-width: 1024px) { .wp-grid { grid-template-columns: 1fr; } }
.wp-card { display: flex; flex-direction: column; }
.wp-card-title { display: flex; align-items: center; gap: 8px; }
.wp-count {
    font-size: 12px; font-weight: 500; color: var(--text-tertiary);
    background: var(--surface-2, #F1F5F9); border-radius: 999px; padding: 1px 8px;
}
.wp-auto-tag {
    font-size: 11px; color: #16A34A; background: #DCFCE7;
    border-radius: 999px; padding: 2px 8px; white-space: nowrap;
}
.wp-icon {
    display: inline-flex; align-items: center; justify-content: center;
    width: 26px; height: 26px; border-radius: 6px; flex-shrink: 0;
}
.wp-icon svg { width: 14px; height: 14px; }
.wp-blue { color: #2563EB; background: #DBEAFE; }
.wp-orange { color: #D97706; background: #FEF3C7; }
.wp-purple { color: #7C3AED; background: #EDE9FE; }
.wp-green { color: #16A34A; background: #DCFCE7; }
.wp-add-row {
    display: flex; gap: 8px; margin-bottom: 10px;
}
.wp-add-row input {
    flex: 1; height: 34px; border: 1px solid var(--border);
    border-radius: var(--radius-md); padding: 0 12px; font-size: 13px;
    outline: none; background: var(--surface); min-width: 0;
}
.wp-add-row input:focus { border-color: #2563EB; }
.wp-list { display: flex; flex-direction: column; gap: 6px; max-height: 320px; overflow-y: auto; }
.wp-empty {
    padding: 20px 12px; text-align: center; font-size: 13px; color: var(--text-tertiary);
}
.wp-item {
    display: flex; align-items: flex-start; justify-content: space-between; gap: 8px;
    border: 1px solid var(--border); border-radius: var(--radius-md);
    padding: 8px 10px; background: var(--surface);
    transition: border-color .15s, background .15s;
}
.wp-item:hover { border-color: #94A3B8; }
.wp-item-main {
    display: flex; align-items: flex-start; gap: 8px; cursor: pointer; flex: 1; min-width: 0;
}
.wp-item-main input[type="checkbox"] { margin-top: 2px; cursor: pointer; flex-shrink: 0; }
.wp-item-text { font-size: 13px; line-height: 1.5; color: var(--text-primary); word-break: break-all; }
.wp-item.done .wp-item-text { text-decoration: line-through; color: var(--text-tertiary); }
.wp-item.done { background: var(--surface-2, #F8FAFC); }
.wp-item-del {
    border: none; background: none; color: var(--text-tertiary);
    font-size: 16px; line-height: 1; cursor: pointer; padding: 0 4px; flex-shrink: 0;
    border-radius: 4px;
}
.wp-item-del:hover { color: #DC2626; }
/* PM跟进反馈 · @成员 */
.wp-mention {
    color: #7C3AED; background: #EDE9FE;
    border-radius: 4px; padding: 0 4px; font-weight: 600;
}
.wp-mention-from {
    display: inline-block; margin-left: 6px; font-size: 11px;
    color: #7C3AED; background: #EDE9FE; border-radius: 999px; padding: 1px 7px;
    white-space: nowrap; font-weight: 400;
}
/* PM跟进反馈 · 回复区 v2（2026-09-30 重设计）：线程化——引导线 + 头像 + 时间，去掉卡片内嵌套边框 */
.wp-item { flex-wrap: wrap; }
.wp-item-head { display: flex; align-items: flex-start; gap: 8px; width: 100%; }
.wp-item-actions { display: flex; align-items: center; gap: 2px; flex-shrink: 0; }
.wp-reply-btn {
    display: inline-flex; align-items: center; gap: 4px;
    border: 1px solid transparent; background: none; cursor: pointer;
    color: var(--text-tertiary); font-size: 12px; line-height: 1;
    padding: 3px 7px; border-radius: 999px; white-space: nowrap;
    transition: color .15s, background .15s;
}
.wp-reply-btn:hover { color: #2563EB; background: #EFF6FF; }
.wp-reply-btn.has { color: #2563EB; }
.wp-reply-btn svg { width: 13px; height: 13px; }
.wp-thread {
    position: relative; width: 100%; margin-top: 8px;
    padding-left: 26px; display: flex; flex-direction: column;
}
.wp-thread::before {
    content: ''; position: absolute; left: 9px; top: 4px; bottom: 4px;
    width: 2px; border-radius: 2px; background: var(--border);
}
.wp-reply {
    position: relative; display: flex; align-items: flex-start; gap: 7px;
    padding: 5px 6px; border-radius: 8px; transition: background .15s;
}
.wp-reply + .wp-reply { border-top: 1px dashed var(--border); }
.wp-reply:hover { background: var(--surface-2, #F8FAFC); }
.wp-reply-av {
    width: 18px; height: 18px; border-radius: 50%; flex-shrink: 0; margin-top: 1px;
    display: flex; align-items: center; justify-content: center;
    color: #fff; font-size: 10px; font-weight: 600; background: #94A3B8;
    user-select: none;
}
.wp-reply-body { flex: 1; min-width: 0; }
.wp-reply-meta { display: flex; align-items: center; gap: 5px; line-height: 1.3; }
.wp-reply-by { font-size: 12px; font-weight: 600; color: var(--text-secondary); }
.wp-reply-by.me { color: #2563EB; }
.wp-reply-me {
    font-size: 10px; line-height: 1.5; color: #2563EB; background: #DBEAFE;
    border-radius: 999px; padding: 0 5px; font-weight: 500; flex-shrink: 0;
}
.wp-reply-time { font-size: 11px; color: var(--text-tertiary); margin-left: auto; white-space: nowrap; }
.wp-reply-text {
    font-size: 12.5px; line-height: 1.55; color: var(--text-primary);
    word-break: break-word; margin-top: 1px;
}
.wp-reply-del {
    border: none; background: none; color: var(--text-tertiary);
    font-size: 14px; line-height: 1; cursor: pointer; flex-shrink: 0;
    padding: 0 3px; opacity: .28; transition: opacity .15s, color .15s;
}
.wp-reply:hover .wp-reply-del { opacity: .8; }
.wp-reply-del:hover { opacity: 1; color: #DC2626; }
.wp-reply-form { display: flex; gap: 6px; align-items: center; padding: 6px 6px 2px; }
.wp-reply-input {
    flex: 1; min-width: 0; height: 30px; border: 1px solid var(--border);
    border-radius: 8px; padding: 0 10px; font-size: 12.5px; outline: none;
    background: var(--surface); color: var(--text-primary);
    transition: border-color .15s, box-shadow .15s;
}
.wp-reply-input:focus { border-color: #2563EB; box-shadow: 0 0 0 3px rgba(37, 99, 235, .1); }
.wp-reply-send {
    flex-shrink: 0; height: 30px; padding: 0 14px; border: none; cursor: pointer;
    border-radius: 8px; background: #2563EB; color: #fff;
    font-size: 12.5px; font-weight: 500; transition: background .15s;
}
.wp-reply-send:hover { background: #1D4ED8; }
/* 2026-09-30：回复头像/名字/正文可点击直接回复该线程 */
.wp-reply-click { cursor: pointer; }
.wp-reply-click:hover { opacity: .85; }
span.wp-reply-click:hover { opacity: 1; }
.wp-reply-by.wp-reply-click:hover { color: #2563EB; }
.wp-reply-text.wp-reply-click:hover { color: #2563EB; }
/* 2026-09-30：回复线程折叠/展开——引导线上的圆形箭头按钮 */
.wp-thread-fold {
    position: absolute; left: 2px; top: 3px; width: 16px; height: 16px;
    border: none; background: var(--surface, #fff); border-radius: 50%;
    color: var(--text-tertiary); cursor: pointer; padding: 0;
    display: flex; align-items: center; justify-content: center;
    z-index: 1; transition: color .15s, background .15s;
}
.wp-thread-fold:hover { color: #2563EB; background: #EFF6FF; }
.wp-thread-fold svg { width: 12px; height: 12px; transition: transform .15s; }
.wp-thread-fold.folded svg { transform: rotate(-90deg); }
.wp-thread-collapsed {
    border: none; background: none; cursor: pointer; text-align: left;
    font-size: 12px; color: #2563EB; padding: 5px 6px; border-radius: 8px;
    transition: background .15s;
}
.wp-thread-collapsed:hover { background: #EFF6FF; }
/* 2026-09-30：原位更新的新内容平滑入场（不整块重渲染） */
@keyframes wpSlideIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
.wp-reply-new { animation: wpSlideIn .25s ease; }
.wp-item-new { animation: wpSlideIn .25s ease; }
/* 2026-09-30：回复引用条（回复对方某条时的来源提示）与输入框模式条（编辑/回复中） */
.wp-reply-quote {
    font-size: 11px; line-height: 1.4; color: var(--text-tertiary);
    background: var(--bg-secondary, #F8FAFC); border-left: 2px solid var(--border);
    border-radius: 4px; padding: 2px 6px; margin: 2px 0 1px;
    max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.wp-reply-mode {
    width: 100%; display: flex; align-items: center; gap: 6px;
    font-size: 11.5px; color: #2563EB; background: #EFF6FF;
    border-radius: 6px; padding: 3px 8px; margin-bottom: 2px;
}
.wp-reply-mode span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wp-reply-mode button {
    border: none; background: none; color: #2563EB; cursor: pointer;
    font-size: 13px; line-height: 1; padding: 0 2px;
}
.wp-reply-mode button:hover { color: #DC2626; }
.wp-mention-menu {
    display: none; position: absolute; top: calc(100% + 4px); left: 0; right: 0;
    background: var(--surface); border: 1px solid var(--border);
    border-radius: var(--radius-md); box-shadow: 0 8px 24px rgba(15, 23, 42, .12);
    max-height: 216px; overflow-y: auto; z-index: 60; padding: 4px;
}
.wp-mention-opt {
    display: flex; align-items: center; gap: 8px;
    padding: 6px 8px; border-radius: 6px; cursor: pointer; font-size: 13px;
    color: var(--text-primary);
}
.wp-mention-opt:hover, .wp-mention-opt.active { background: #EDE9FE; }
.wp-mention-avatar {
    display: inline-flex; align-items: center; justify-content: center;
    width: 22px; height: 22px; border-radius: 50%; flex-shrink: 0;
    background: #7C3AED; color: #fff; font-size: 11px; font-weight: 600;
}
.wp-mention-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wp-iv-item {
    display: flex; gap: 12px; align-items: flex-start;
    border: 1px solid var(--border); border-radius: var(--radius-md);
    padding: 10px 12px; background: var(--surface);
}
.wp-iv-time {
    font-size: 13px; font-weight: 600; color: #2563EB; white-space: nowrap;
    background: #DBEAFE; border-radius: 6px; padding: 3px 8px;
}
/* 待上岗提醒：临近（≤1天）用橙色，逾期用红色 */
.wp-iv-time.wp-od-soon { color: #D97706; background: #FEF3C7; }
.wp-iv-time.wp-od-over { color: #DC2626; background: #FEE2E2; }
/* 员工生日 / 入职日徽标（2026-09-24）：生日粉、入职纪念青 */
.wp-iv-time.wp-sd-bd { color: #DB2777; background: #FCE7F3; }
.wp-iv-time.wp-sd-an { color: #0D9488; background: #CCFBF1; }
/* 面试提醒模块内「待上岗跟进」分组分隔线 */
.wp-iv-divider {
    font-size: 12px; font-weight: 600; color: var(--text-tertiary);
    padding: 6px 2px 0; border-top: 1px dashed var(--border); margin-top: 4px;
}
/* 待上岗提醒：临近（≤1天）用橙色，逾期用红色 */
.wp-iv-time.wp-od-soon { color: #D97706; background: #FEF3C7; }
.wp-iv-time.wp-od-over { color: #DC2626; background: #FEE2E2; }
.wp-iv-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.wp-iv-line1 { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.wp-iv-name { font-size: 14px; font-weight: 600; color: var(--text-primary); }
.wp-iv-line2 { font-size: 13px; color: var(--text-secondary); }
.wp-iv-line3 { font-size: 12px; color: var(--text-tertiary); }

/* ============================================================
   头像图片 + 个人中心头像操作
   ============================================================ */
.avatar img {
    width: 100%; height: 100%;
    object-fit: cover; border-radius: inherit; display: block;
}
.profile-avatar-actions {
    display: flex; gap: 6px; margin-top: 4px; flex-wrap: wrap; justify-content: center;
}
.profile-avatar { overflow: hidden; }

/* ============================================================
   用户管理表格聚焦高亮（点击 KPI 卡片后滚动定位）
   ============================================================ */

/* ============================================================
   财年业绩卡片（工作台 · 个人业绩）
   ============================================================ */
.fy-perf-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
}
.fy-perf-grid-4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 900px) {
    .fy-perf-grid-4 { grid-template-columns: repeat(2, 1fr); }
}
.fy-perf-card {
    background: var(--surface);
    border: 1px solid var(--border-light);
    border-radius: var(--radius-lg);
    padding: 20px 22px;
    transition: box-shadow .15s ease, transform .15s ease;
}
.fy-perf-card:hover {
    box-shadow: var(--shadow-md);
    transform: translateY(-2px);
}
.fy-perf-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 14px;
}
.fy-perf-icon {
    width: 36px; height: 36px;
    border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    font-size: 16px; font-weight: 700;
}
.fy-perf-badge {
    font-size: 12px; font-weight: 600;
    color: #16A34A; background: #DCFCE7;
    padding: 3px 10px; border-radius: 12px;
}
.fy-perf-value {
    font-size: 32px; font-weight: 700;
    color: var(--text-primary);
    line-height: 1.2; margin-bottom: 6px;
}
.fy-perf-label {
    font-size: 13px; color: var(--text-secondary);
    margin-bottom: 10px;
}
.fy-perf-sub {
    font-size: 12px; color: var(--text-tertiary);
    line-height: 1.5;
}
@media (max-width: 860px) {
    .fy-perf-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 520px) {
    .fy-perf-grid { grid-template-columns: 1fr; }
}


/* --- 核心做单顾问多选（勾选式卡片） --- */
.mu-select {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    padding: 10px;
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    background: var(--surface);
}
.mu-select.input-error { border-color: var(--danger); }
.mu-option {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 12px;
    border: 1px solid var(--border);
    border-radius: 999px;
    font-size: 13px;
    color: var(--text-secondary);
    cursor: pointer;
    user-select: none;
    transition: border-color .15s, background .15s, color .15s;
}
.mu-option input { accent-color: var(--primary); margin: 0; }
.mu-option.on {
    border-color: var(--primary);
    background: var(--primary-bg);
    color: var(--primary);
    font-weight: 600;
}

/* --- 招聘数据统计卡选中态 --- */
.mini-stat.active {
    border-color: var(--primary);
    background: var(--primary-bg);
    box-shadow: 0 2px 8px rgba(37, 99, 235, .12);
}
.mini-stat.active .mini-stat-label { color: var(--primary); font-weight: 600; }

/* --- 储备池分组卡片 --- */
.pool-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
    gap: 14px;
}
.pool-group-card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    padding: 14px;
    cursor: pointer;
    transition: border-color .15s, box-shadow .15s, background .15s;
}
.pool-group-card:hover { border-color: var(--primary); box-shadow: 0 2px 10px rgba(37, 99, 235, .10); }
.pool-group-card.active { border-color: var(--primary); background: var(--primary-bg); box-shadow: 0 2px 8px rgba(37, 99, 235, .12); }

/* ---------- 未保存草稿提示（2026-09-21）：恢复提示条 + 误关保护条 ---------- */
.cz-draft-bar,
.cz-draft-guard {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 12px;
    padding: 8px 12px;
    border-radius: 8px;
    font-size: 12px;
    line-height: 1.5;
}
.cz-draft-bar {
    background: #EFF6FF;
    border: 1px solid #BFDBFE;
    color: #1D4ED8;
}
.cz-draft-guard {
    background: #FFF7ED;
    border: 1px solid #FED7AA;
    color: #C2410C;
    margin: 0 0 12px;
}
.cz-draft-bar > span,
.cz-draft-guard > span { font-weight: 500; }
.cz-draft-bar button,
.cz-draft-guard button {
    margin-left: auto;
    padding: 4px 10px;
    font-size: 12px;
    border-radius: 6px;
    border: 1px solid currentColor;
    background: #fff;
    color: inherit;
    cursor: pointer;
    font-family: inherit;
}
.cz-draft-guard button + button { margin-left: 0; }
.cz-draft-bar button:hover,
.cz-draft-guard button:hover { background: rgba(0, 0, 0, .04); }
.cz-draft-guard .cz-guard-discard { border-color: #DC2626; color: #DC2626; }

/* --- 联系方式来源（2026-10-26）：电话/邮箱前置「手动填写 / 脉脉 / 猎聘」下拉 --- */
.src-pick-row { display: flex; align-items: center; gap: 8px; }
.src-pick-row > .src-pick { flex: 0 0 104px; width: 104px; padding-left: 8px; padding-right: 22px; color: var(--text-secondary); }
.src-pick-row > input.form-input { flex: 1 1 auto; min-width: 0; }
.src-pick-row > .src-pick:focus { color: var(--text-primary); }
.src-hint { margin-top: 4px; font-size: 12px; color: var(--text-tertiary); }
.src-tag { display: inline-block; margin-left: 6px; padding: 0 6px; border-radius: 4px; font-size: 11px; line-height: 16px; font-weight: 600; background: #EEF2FF; color: #4338CA; border: 1px solid #C7D2FE; vertical-align: 1px; }

/* 联系方式来源=脉脉/猎聘时输入框禁用置灰（2026-10-26：可不填） */
.form-input:disabled { background: var(--bg, #F3F4F6); color: var(--text-tertiary, #9CA3AF); cursor: not-allowed; }
