/* ============================================================
 * glass.css — Gant 毛玻璃视觉融合层
 * 仅在 base.css / layout.css / components.css / pages.css 之后加载，
 * 覆盖通用 class 的视觉（背景/边框/模糊/圆角/阴影），不动任何布局与 JS 逻辑。
 * 全部使用 base.css 引入的 --glass-* / --primary-grad 等 Token，亮暗双主题自动适配。
 * ============================================================ */

/* ---- 环境轻网格（fixed 伪元素，不破坏 .app-shell 的 grid 布局） ---- */
.app-shell::before {
  content: "";
  position: fixed;
  inset: var(--topbar-h) 0 0 0;
  pointer-events: none;
  background-image:
    linear-gradient(var(--grid-line) 1px, transparent 1px),
    linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);
  background-size: 40px 40px;
  opacity: .5;
  -webkit-mask-image: linear-gradient(180deg, rgba(0,0,0,.6), transparent 70%);
  mask-image: linear-gradient(180deg, rgba(0,0,0,.6), transparent 70%);
  z-index: 1;
}

/* ---- 顶栏 / 侧边栏 毛玻璃 ---- */
#topbar {
  background: var(--glass-bg-strong);
  border-bottom: 1px solid var(--glass-border-color);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  box-shadow: var(--shadow-float);
}
#topbar {
  background: var(--glass-bg-strong);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
}

/* 顶部横向导航的毛玻璃 + 选中态（用新主色） */
.topnav-trigger:hover { background: var(--glass-bg); backdrop-filter: var(--glass-blur); }
.topnav-group.active > .topnav-trigger { background: rgba(0, 64, 237, 0.12); }
.topnav-dropdown {
  background: var(--glass-bg-strong);
  border: 1px solid var(--glass-border-color);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
}
.topnav-item:hover { background: var(--glass-bg); }
.topnav-item.active { background: rgba(0, 64, 237, 0.12); }

/* ---- 卡片 / 面板 毛玻璃 ---- */
.card {
  background: var(--glass-bg);
  border: 1px solid var(--glass-border-color);
  border-radius: 20px;
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  box-shadow: var(--shadow-float);
  padding: 20px;
}

/* 详情页 Tab 卡片同样玻璃化（pages.css 定义了 flex 布局，这里只改视觉） */
.page-monthly-detail .card[id^="tab-"] {
  background: var(--glass-bg);
  border: 1px solid var(--glass-border-color);
  border-radius: 20px;
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  box-shadow: var(--shadow-float);
}

/* ---- 按钮：主按钮渐变，幽灵按钮保持透明 ---- */
.btn {
  background: var(--primary-grad);
  border: none;
  color: #fff;
  font-size: .95rem;
  font-weight: 600;
  cursor: pointer;
  border-radius: 10px;
  padding: 9px 18px;
  box-shadow: 0 6px 18px rgba(0, 64, 237, 0.22);
  transition: filter .15s ease, transform .1s ease;
}
.btn:hover { filter: brightness(1.07); }
.btn:active { transform: translateY(1px); }
.btn.ghost {
  background: transparent;
  border: 1px solid var(--border);
  color: var(--text);
  box-shadow: none;
}
.btn.ghost:hover { border-color: var(--primary); color: var(--primary); }
.btn.green { background: var(--green); box-shadow: none; }
.btn.green:hover { background: #15803d; filter: none; }
.btn.danger { background: var(--red); box-shadow: none; }
.btn.danger:hover { background: #c0392b; filter: none; }
.btn.ghost.danger { background: transparent; border-color: var(--red); color: var(--red); }
.btn.ghost.danger:hover { background: var(--red); color: #fff; filter: none; }

/* ---- 统计胶囊 玻璃感 ---- */
.stat {
  background: var(--glass-bg-strong);
  border: 1px solid var(--glass-border-color);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  box-shadow: 0 4px 14px rgba(28, 58, 120, 0.10);
}
.stat .v { color: var(--primary); }

/* ---- 表格容器 + 表头 毛玻璃适配 ---- */
.tbl-wrap {
  background: var(--glass-bg);
  border: 1px solid var(--glass-border-color);
  border-radius: 12px;
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  overflow: auto;
}
.tbl-wrap th {
  background: var(--glass-bg-strong);
  color: var(--text);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  border-bottom: 1px solid var(--glass-border-color);
}
.tbl-wrap tr:hover td { background: rgba(0, 64, 237, 0.05); }

/* ---- 标签 ---- */
.tag.blue { background: rgba(0, 64, 237, 0.12); color: var(--primary); }
.tag.grey { background: var(--glass-bg-strong); }

/* ---- 弹窗 / 抽屉 毛玻璃 ---- */
.modal {
  background: var(--glass-bg-strong);
  border: 1px solid var(--glass-border-color);
  border-radius: 18px;
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  box-shadow: var(--shadow-float);
}
.drawer {
  background: var(--glass-bg-strong);
  border-left: 1px solid var(--glass-border-color);
  border-radius: 20px 0 0 20px;
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  box-shadow: -10px 0 40px rgba(28, 58, 120, 0.20);
}

/* ---- Toast 轻提示 玻璃化 ---- */
.oa-toast {
  background: var(--glass-bg-strong);
  border: 1px solid var(--glass-border-color);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  box-shadow: var(--shadow-float);
}

/* ---- 登录门卡片玻璃化 ---- */
.gate-card {
  background: var(--glass-bg-strong);
  border: 1px solid var(--glass-border-color);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  box-shadow: var(--shadow-float);
}

/* ---- 滚动条美化（配合毛玻璃） ---- */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background: rgba(0, 64, 237, 0.22);
  border-radius: 10px;
}
::-webkit-scrollbar-thumb:hover { background: rgba(0, 64, 237, 0.38); }

/* ---- 暗色主题微调（hover 行用亮蓝，避免旧蓝残留） ---- */
[data-theme="dark"] .tbl-wrap tr:hover td { background: rgba(77, 124, 255, 0.12); }
[data-theme="dark"] .nav-item.active,
[data-theme="dark"] .nav-leaf.active { background: rgba(77, 124, 255, 0.16); }
[data-theme="dark"] .btn { box-shadow: 0 6px 18px rgba(0, 64, 237, 0.35); }
[data-theme="dark"] .tag.blue { background: rgba(77, 124, 255, 0.18); }

/* ---- 去掉 footer 后：创建月度表单 modal 高度铺满屏幕 ---- */
#createModal .modal {
  height: 92vh;
  max-height: 92vh;
}
/* 登录卡片同步加高，视觉更舒展（不铺满，保持登录美观） */
.gate-card { padding: 56px 44px; min-height: 360px; }

/* ---- 标题加粗变黑 + 内容左对齐（月度工时统计 / 人员明细 / 打卡记录） ---- */
#detailTitle,
#personDrawerTitle,
#tab-punch h2 {
  font-weight: 800;
  color: #111418;                 /* 亮色：近黑加粗 */
  letter-spacing: .3px;
}
[data-theme="dark"] #detailTitle,
[data-theme="dark"] #personDrawerTitle,
[data-theme="dark"] #tab-punch h2 {
  color: var(--text);            /* 暗色：用最亮文本色，避免纯黑看不见 */
}

/* 内容左对齐：月度工时统计详情页表格 + 人员明细抽屉表 + 打卡记录表 */
.page-monthly-detail .tbl-wrap th,
.page-monthly-detail .tbl-wrap td,
#personDrawerBody th,
#personDrawerBody td {
  text-align: left;
}

/* ============================================================
 * 覆盖冲突修复：pages.css 对详情页表头/表脚用了更高特异性
 * （.page-monthly-detail .tbl-wrap thead th）设 background:var(--bg) 纯色，
 * 会盖掉上方 .tbl-wrap th 的毛玻璃。这里用等同特异性覆盖回玻璃背景。
 * ============================================================ */
.page-monthly-detail .tbl-wrap thead th {
  background: var(--glass-bg-strong);
  border-bottom: 1px solid var(--glass-border-color);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
}
.page-monthly-detail .tbl-wrap tfoot td {
  background: var(--glass-bg-strong);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
}

/* 图表框玻璃化（pages.css .chart-box 为实色白卡） */
.chart-box {
  background: var(--glass-bg);
  border: 1px solid var(--glass-border-color);
  border-radius: 14px;
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  box-shadow: var(--shadow-float);
}

/* 登录门全屏透明，露出 body 环境渐变，让 .gate-card 玻璃浮起 */
.gate { background: transparent; }

/* 提示条旧蓝残留统一为新主色 */
.rules-tip-bar { background: rgba(0, 64, 237, 0.06); border-color: rgba(0, 64, 237, 0.20); }
/* 拖拽上传区 hover 旧蓝残留统一 */
.dropzone:hover, .dropzone.drag { background: rgba(0, 64, 237, 0.05); }
/* 全局表格行 hover 旧蓝残留兜底（.tbl-wrap 内已在上方覆盖，这里管非表格容器） */
tr:hover td { background: rgba(0, 64, 237, 0.05); }

.archive-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}
.archive-head h2 {
  margin-bottom: 8px;
}
.archive-export-btn {
  width: auto !important;
  min-width: 154px;
  margin: 0 !important;
  padding: 8px 14px !important;
  font-size: 12.5px !important;
  font-weight: 850 !important;
}
@media (max-width: 720px) {
  .archive-head {
    flex-direction: column;
  }
  .archive-export-btn {
    width: 100% !important;
  }
}

/* ============================================================
 * 工作日历 Tab（月度详情页 #tab-calendar）
 * 与 pages.css 的 .cal-* 规则配置日历隔离，避免样式冲突。
 * 日历数据来自 RESULT.dayInfo（由 buildCalendar 依据配置规则+satWork+节假日库计算）。
 * ============================================================ */
/* 内部滚动容器：让日历在 Tab 卡片内独立滚动（卡片本身 overflow:hidden） */
.wc-scroll { flex: 1 1 0; min-height: 0; overflow: auto; margin-top: 12px; }
.wc-head, .wc-row { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.wc-head { margin-bottom: 4px; }
.wc-head > div { text-align: center; font-size: .78rem; font-weight: 700; color: var(--text2); padding: 4px 0; }
.wc-cell {
  min-height: 62px; border-radius: 12px; padding: 8px 10px;
  border: 1px solid var(--border); display: flex; flex-direction: column; gap: 4px;
  background: rgba(255, 255, 255, 0.35);
}
.wc-cell.empty { background: transparent; border-color: transparent; }
.wc-cell .d { font-weight: 800; font-size: 1rem; color: var(--text); }
.wc-cell .t { font-size: .7rem; color: var(--text2); line-height: 1.3; }
/* 按日类型着色（与 dayTypeText 语义一致） */
.wc-cell.dtype-workday { background: rgba(0, 64, 237, 0.07); border-color: rgba(0, 64, 237, 0.20); }
.wc-cell.dtype-saturday { background: rgba(22, 163, 74, 0.09); border-color: rgba(22, 163, 74, 0.24); }
.wc-cell.dtype-weekend { background: rgba(120, 130, 150, 0.08); border-color: rgba(120, 130, 150, 0.20); }
.wc-cell.dtype-holiday_3x, .wc-cell.dtype-holiday_2x { background: rgba(245, 180, 0, 0.14); border-color: rgba(245, 180, 0, 0.34); }
/* 图例 */
.wc-legend { display: flex; gap: 10px; flex-wrap: wrap; font-size: .72rem; color: var(--text2); }
.wc-legend .lg { display: inline-flex; align-items: center; gap: 5px; }
.wc-legend .dot { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
.wc-legend .dot.w { background: rgba(0, 64, 237, 0.5); }
.wc-legend .dot.s { background: rgba(22, 163, 74, 0.5); }
.wc-legend .dot.r { background: rgba(120, 130, 150, 0.5); }
.wc-legend .dot.h { background: rgba(245, 180, 0, 0.7); }
.wc-summary { font-size: .85rem; color: var(--text2); margin-top: 10px; }
.wc-summary b { color: var(--primary); }
/* 暗色主题 */
[data-theme="dark"] .wc-cell { background: rgba(255, 255, 255, 0.04); border-color: rgba(255, 255, 255, 0.08); }
[data-theme="dark"] .wc-cell.dtype-workday { background: rgba(0, 64, 237, 0.16); }
[data-theme="dark"] .wc-cell.dtype-saturday { background: rgba(22, 163, 74, 0.18); }
[data-theme="dark"] .wc-cell.dtype-weekend { background: rgba(120, 130, 150, 0.16); }
[data-theme="dark"] .wc-cell.dtype-holiday_3x, [data-theme="dark"] .wc-cell.dtype-holiday_2x { background: rgba(245, 180, 0, 0.20); }
/* 移动端 */
@media (max-width: 768px) {
  .wc-cell { min-height: 48px; padding: 5px 6px; }
  .wc-cell .t { font-size: .62rem; }
}

/* ===== 人员明细 Tab · 工作日历视图（人员 chips + 单人员月历） ===== */

/* chips 滚动条 */
.emp-cal-chips-scroll {
  overflow-x: auto;
  overflow-y: hidden;
  margin: 0 -4px 10px;
  padding: 2px 4px 10px;
  scrollbar-width: thin;
}
.emp-cal-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
/* 人员选择行：标签 + 横排 chips，置于状态行上方 */
.emp-sel-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 4px 0 10px; }
.emp-sel-label { flex: 0 0 auto; font-size: .82rem; font-weight: 700; color: var(--text2); white-space: nowrap; }
.emp-sel-row .emp-cal-chips-scroll { flex: 1 1 auto; margin: 0; padding: 2px 0; }
.emp-chip {
  appearance: none;
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text);
  font-size: .82rem;
  font-weight: 600;
  padding: 6px 12px;
  border-radius: 999px;
  cursor: pointer;
  transition: all .15s ease;
  white-space: nowrap;
}
.emp-chip:hover { border-color: var(--primary); color: var(--primary); }
.emp-chip.on {
  background: linear-gradient(135deg, #0040ed, #1d4ed8);
  color: #fff;
  border-color: #0040ed;
  box-shadow: 0 4px 12px rgba(0, 64, 237, 0.30);
}

/* 标题行：人员明细 + 汇总（同行内联）+ 导出按钮 */
.emp-head-row {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}
.emp-head-row h2 {
  margin: 0;
  font-size: 1.5rem;
  font-weight: 800;
  color: #111418;
  flex-shrink: 0;
}
[data-theme="dark"] .emp-head-row h2 { color: var(--text); }
.emp-head-row > .btn,
.emp-head-row > button.btn {
  margin-left: auto;
  flex-shrink: 0;
}
/* 个人汇总（标题行内联、紧凑、字号比 h2 小一号） */
.emp-head-row .emp-cal-summary {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 0;
  padding: 0;
  background: none;
  border: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
.emp-head-row .emp-cal-summary .cchip {
  display: inline-flex;
  flex-direction: row;
  align-items: baseline;
  gap: 6px;
  font-size: .82rem;
  font-weight: 600;
  line-height: 1.2;
  padding: 4px 12px;
  border-radius: 999px;
  background: rgba(0, 64, 237, 0.07);
  color: var(--text);
  border: 1px solid rgba(0, 64, 237, 0.14);
}
.emp-head-row .emp-cal-summary .cchip .l {
  font-size: .78rem;
  font-weight: 600;
  color: var(--text2);
  letter-spacing: .3px;
}
.emp-head-row .emp-cal-summary .cchip .v {
  font-size: 1.05rem; /* 比 h2 (1.5rem) 小一号 */
  font-weight: 800;
  color: var(--primary);
  line-height: 1.1;
}
.emp-head-row .emp-cal-summary .cchip.warn {
  background: rgba(220, 38, 38, 0.10);
  border-color: rgba(220, 38, 38, 0.30);
}
.emp-head-row .emp-cal-summary .cchip.warn .v { color: #dc2626; }
.emp-cal-summary .cchip b { font-weight: 800; color: var(--primary); }
.emp-cal-summary .cchip .l { color: var(--text2); font-weight: 500; font-size: .76rem; }
.emp-cal-summary .cchip .v { font-weight: 800; }
.emp-cal-summary .cchip.warn { background: rgba(217, 45, 32, 0.10); border-color: rgba(217, 45, 32, 0.28); }
.emp-cal-summary .cchip.warn .v { color: #b42318; }

/* 月历根：与现有 #tab-detail flex 容器配合，自适应滚动 */
.emp-cal-scroll {
  flex: 1 1 0;
  min-height: 0;
  overflow: auto;
  padding: 4px 0 8px;
}
.emp-cal-grid { width: 100%; }
.emp-cal-head, .emp-cal-row { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.emp-cal-head { margin-bottom: 6px; position: sticky; top: 0; z-index: 2; }
.emp-cal-head > div {
  text-align: center;
  font-size: .78rem;
  font-weight: 700;
  color: var(--text2);
  padding: 6px 0;
  background: var(--glass-bg);
  border: 1px solid var(--glass-border-color);
  border-radius: 8px;
  backdrop-filter: blur(var(--glass-blur));
}

/* 日期格 */
.emp-cal-cell {
  background: var(--glass-bg);
  border: 1px solid var(--glass-border-color);
  border-radius: 10px;
  padding: 6px 8px;
  min-height: 130px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  cursor: pointer;
  transition: transform .12s ease, box-shadow .12s ease, border-color .12s ease;
  backdrop-filter: blur(var(--glass-blur));
  -webkit-backdrop-filter: blur(var(--glass-blur));
  overflow: hidden;
}
.emp-cal-cell:hover { transform: translateY(-1px); box-shadow: 0 6px 18px rgba(0, 64, 237, 0.12); border-color: var(--primary); }
.emp-cal-cell.empty { background: transparent; border-color: transparent; cursor: default; }
.emp-cal-cell.empty:hover { transform: none; box-shadow: none; border-color: transparent; }
.emp-cal-cell.dtype-workday { background: rgba(0, 64, 237, 0.07); border-color: rgba(0, 64, 237, 0.22); }
.emp-cal-cell.dtype-saturday { background: rgba(22, 163, 74, 0.09); border-color: rgba(22, 163, 74, 0.28); }
.emp-cal-cell.dtype-weekend { background: rgba(120, 130, 150, 0.10); border-color: rgba(120, 130, 150, 0.22); }
.emp-cal-cell.dtype-holiday_3x, .emp-cal-cell.dtype-holiday_2x { background: rgba(245, 180, 0, 0.16); border-color: rgba(245, 180, 0, 0.40); }
.emp-cal-cell.cell-leave { border-color: rgba(0, 64, 237, 0.62) !important; box-shadow: inset 0 0 0 1px rgba(0, 64, 237, 0.34); border-style: solid; }
.emp-cal-cell.cell-abn { border-color: rgba(217, 45, 32, 0.55) !important; box-shadow: inset 0 0 0 1px rgba(217, 45, 32, 0.30); }
.emp-cal-cell.cell-ot { border-width: 1.5px; }
/* 筛选态：非匹配日退为底色幽灵格（仅留日期，保持周列结构） */
.emp-cal-cell.ghost { opacity: .38; filter: grayscale(.3); }
.emp-cal-cell.ghost:hover { opacity: .55; transform: none; box-shadow: none; border-color: var(--border); }

/* 个人汇总 chip：可点击筛选（打卡异常 / 事假） */
.emp-cal-summary .cchip[data-filter] { cursor: pointer; transition: all .15s ease; }
.emp-cal-summary .cchip[data-filter]:hover { border-color: var(--primary); color: var(--primary); }
.emp-cal-summary .cchip.active { background: rgba(0, 64, 237, 0.16); border-color: var(--primary); color: var(--primary); box-shadow: 0 2px 8px rgba(0, 64, 237, 0.18); }
.emp-cal-summary .cchip.active .v { color: var(--primary); }
.emp-cal-summary .cchip.warn.active { background: rgba(217, 45, 32, 0.16); border-color: #b42318; color: #b42318; }
.emp-cal-summary .cchip.warn.active .v { color: #b42318; }

/* Row1：日期 + 周几 ｜ 类型 + 当日汇总 */
.emp-cal-cell .ec-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 6px; }
.emp-cal-cell .ec-date { display: flex; align-items: baseline; gap: 5px; min-width: 0; }
.emp-cal-cell .ec-date .dn { font-weight: 800; font-size: 1.12rem; color: var(--text); line-height: 1; }
.emp-cal-cell .ec-date .dw { display: none; }
.emp-cal-cell .ec-tags-right { display: flex; flex-direction: column; align-items: flex-end; gap: 3px; }
.emp-cal-cell .ec-type { font-size: .58rem; font-weight: 700; padding: 1px 6px; border-radius: 999px; white-space: nowrap; }
.emp-cal-cell .ec-type.t-workday { background: rgba(0, 64, 237, 0.14); color: #0040ed; }
.emp-cal-cell .ec-type.t-saturday { background: rgba(22, 163, 74, 0.16); color: #15803d; }
.emp-cal-cell .ec-type.t-weekend { background: rgba(120, 130, 150, 0.18); color: #475569; }
.emp-cal-cell .ec-type.t-holiday_3x, .emp-cal-cell .ec-type.t-holiday_2x { background: rgba(245, 180, 0, 0.22); color: #92600a; }
.emp-cal-cell .ec-sum { font-size: .6rem; font-weight: 700; padding: 1px 6px; border-radius: 999px; background: rgba(120, 130, 150, 0.14); color: var(--text2); white-space: nowrap; }
.emp-cal-cell .ec-sum.em { background: linear-gradient(135deg, #0040ed, #1d4ed8); color: #fff; }
.emp-cal-cell .ec-sum.neg { background: rgba(217, 45, 32, 0.14); color: #b42318; }

/* Row2/Row3：上午 / 下午（两列网格） */
.emp-cal-cell .ec-ampm { display: grid; grid-template-columns: 1.25fr 1fr; gap: 6px; }
.emp-cal-cell .ec-side { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.emp-cal-cell .ec-lbl { font-size: .58rem; color: var(--text2); font-weight: 600; letter-spacing: .2px; }
.emp-cal-cell .ec-punch { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; font-size: .72rem; font-weight: 700; line-height: 1.3; }
.emp-cal-cell .ec-punch .up { color: #16a34a; }
.emp-cal-cell .ec-punch .down { color: #b45309; }
.emp-cal-cell .ec-punch .miss { color: #b42318; }
.emp-cal-cell .ec-val { font-size: .72rem; font-weight: 800; color: var(--text); line-height: 1.15; }
.emp-cal-cell .ec-val.abn { background: #b42318; color: #fff; border-radius: 5px; padding: 0 5px; display: inline-block; }
/* 请假导致的出勤异常：去掉红底胶囊，保留加粗红字 */
.emp-cal-cell .ec-val.lv { background: transparent; color: #b42318; padding: 0; border-radius: 0; }
.emp-cal-cell .ec-ot { font-size: .72rem; font-weight: 600; color: #0040ed; margin-top: 1px; }
.emp-cal-cell .ec-leave { font-size: .72rem; font-weight: 700; color: #b42318; margin-top: 1px; }

/* 中午加班 / 晚上加班（挂在上午出勤/下午出勤下方，蓝色细字、不加粗） */
.emp-cal-cell .ec-ot-single { font-size: .72rem; font-weight: 500; color: #0040ed; letter-spacing: .2px; line-height: 1.25; margin-top: 1px; }

/* 上午请假标注：红字加粗细字，独立换行显示 */
.emp-cal-cell .ec-leave-am { font-size: .72rem; font-weight: 700; color: #b42318; margin-top: 1px; line-height: 1.25; letter-spacing: .2px; }

/* 日期行与上午之间：实线分隔（颜色与"下午-汇总"实线同），间隔 5+4px，与"下午-汇总"一致 */
.emp-cal-cell .ec-head + .ec-ampm { margin-top: 5px; padding-top: 4px; border-top: 1px solid rgba(100, 116, 139, 0.48); }

/* 上午与下午之间：浅灰虚线分隔（保留视觉对比） */
.emp-cal-cell .ec-ampm + .ec-ampm { margin-top: 4px; padding-top: 5px; border-top: 1px dashed rgba(120, 130, 150, 0.28); }

/* Row4：当天汇总（细字 footer：出勤 / 加班 / 请假，靠左 + 三个信息不换行） */
.emp-cal-cell .ec-foot { display: flex; align-items: baseline; justify-content: flex-start; gap: 4px 8px; margin-top: 5px; padding-top: 4px; border-top: 1px solid rgba(100, 116, 139, 0.48); }
.emp-cal-cell .ec-foot-lbl { font-size: .6rem; font-weight: 500; color: var(--text2); letter-spacing: .2px; flex-shrink: 0; }
.emp-cal-cell .ec-foot-vals { display: flex; flex-wrap: nowrap; gap: 4px 7px; font-size: .58rem; font-weight: 500; color: var(--text2); justify-content: flex-start; min-width: 0; overflow: hidden; }
.emp-cal-cell .ec-foot-vals > span { white-space: nowrap; }
.emp-cal-cell .ec-foot-vals .ot { color: #0040ed; }
.emp-cal-cell .ec-foot-vals .lv { color: #b42318; }

/* 暗色主题 */
[data-theme="dark"] .emp-chip { background: rgba(255, 255, 255, 0.05); border-color: rgba(255, 255, 255, 0.10); color: var(--text); }
[data-theme="dark"] .emp-chip:hover { border-color: var(--primary); color: var(--primary); }
[data-theme="dark"] .emp-cal-cell { background: rgba(255, 255, 255, 0.03); border-color: rgba(255, 255, 255, 0.08); }
[data-theme="dark"] .emp-cal-cell.dtype-workday { background: rgba(0, 64, 237, 0.20); }
[data-theme="dark"] .emp-cal-cell.dtype-saturday { background: rgba(22, 163, 74, 0.24); }
[data-theme="dark"] .emp-cal-cell.dtype-weekend { background: rgba(120, 130, 150, 0.16); }
[data-theme="dark"] .emp-cal-cell.dtype-holiday_3x, [data-theme="dark"] .emp-cal-cell.dtype-holiday_2x { background: rgba(245, 180, 0, 0.28); }
[data-theme="dark"] .emp-cal-cell.cell-leave { border-color: rgba(96, 165, 250, 0.72) !important; box-shadow: inset 0 0 0 1px rgba(96, 165, 250, 0.42); }
[data-theme="dark"] .emp-cal-cell .kv { background: rgba(255, 255, 255, 0.06); border-color: rgba(255, 255, 255, 0.10); }
[data-theme="dark"] .emp-cal-head > div { background: rgba(20, 26, 36, 0.85); border-color: rgba(255, 255, 255, 0.08); }
[data-theme="dark"] .emp-cal-summary { background: rgba(255, 255, 255, 0.04); border-color: rgba(255, 255, 255, 0.10); }
[data-theme="dark"] .emp-cal-summary .cchip { background: rgba(0, 64, 237, 0.20); border-color: rgba(0, 64, 237, 0.40); }
[data-theme="dark"] .emp-cal-cell .ec-type.t-workday { background: rgba(0, 64, 237, 0.30); color: #9db8ff; }
[data-theme="dark"] .emp-cal-cell .ec-type.t-saturday { background: rgba(22, 163, 74, 0.30); color: #86efac; }
[data-theme="dark"] .emp-cal-cell .ec-type.t-weekend { background: rgba(120, 130, 150, 0.30); color: #cbd5e1; }
[data-theme="dark"] .emp-cal-cell .ec-type.t-holiday_3x, [data-theme="dark"] .emp-cal-cell .ec-type.t-holiday_2x { background: rgba(245, 180, 0, 0.30); color: #fde68a; }
[data-theme="dark"] .emp-cal-cell .ec-sum { background: rgba(255, 255, 255, 0.08); color: #cbd5e1; }
[data-theme="dark"] .emp-cal-cell .ec-sum.em { background: linear-gradient(135deg, #0040ed, #1d4ed8); color: #fff; }
[data-theme="dark"] .emp-cal-cell .ec-sum.neg { background: rgba(217, 45, 32, 0.28); color: #fca5a5; }
[data-theme="dark"] .emp-cal-cell .ec-val.lv { color: #fca5a5; }
[data-theme="dark"] .emp-cal-cell .ec-leave-am { color: #fca5a5; }
[data-theme="dark"] .emp-cal-cell .ec-foot,
[data-theme="dark"] .emp-cal-cell .ec-head + .ec-ampm { border-top-color: rgba(190, 200, 215, 0.32); }

/* 移动端 */
@media (max-width: 768px) {
  .emp-cal-cell { min-height: 108px; padding: 5px 6px; gap: 3px; }
  .emp-cal-cell .ec-date .dn { font-size: .98rem; }
  .emp-cal-cell .ec-val,
  .emp-cal-cell .ec-punch { font-size: .66rem; }
  .emp-cal-cell .ec-ot,
  .emp-cal-cell .ec-leave,
  .emp-cal-cell .ec-ot-single,
  .emp-cal-cell .ec-leave-am,
  .emp-cal-cell .ec-foot-vals { font-size: .54rem; }
  .emp-cal-cell .ec-lbl, .emp-cal-cell .ec-type, .emp-cal-cell .ec-sum { font-size: .52rem; }
}

/* ===== 人员明细 · 头部操作按钮组 ===== */
.emp-head-actions {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-left: auto; /* 整组推到最右 */
  flex-shrink: 0;
  flex-wrap: wrap;
  justify-content: flex-end;
}
/* 确认审核按钮：已审核态转绿 */
#reviewBtn.on, #fullReviewBtn.on {
  border-color: var(--green, #16a34a);
  color: var(--green, #16a34a);
  background: rgba(22, 163, 74, 0.10);
}
#reviewBtn.on:hover, #fullReviewBtn.on:hover {
  background: rgba(22, 163, 74, 0.16);
}

/* 人员 chip · 已审核标记 */
.emp-chip.reviewed {
  border-color: rgba(22, 163, 74, 0.55);
  color: var(--green, #16a34a);
  padding-right: 26px;
  position: relative;
}
.emp-chip.reviewed .rv-badge {
  position: absolute;
  right: 9px;
  top: 50%;
  transform: translateY(-50%);
  font-size: .72rem;
  font-weight: 800;
  color: var(--green, #16a34a);
}
.emp-chip.on.reviewed {
  background: linear-gradient(135deg, #16a34a, #15803d);
  color: #fff;
  border-color: #16a34a;
}
.emp-chip.on.reviewed .rv-badge { color: #fff; }
[data-theme="dark"] .emp-chip.reviewed { color: #4ade80; border-color: rgba(74, 222, 128, 0.55); }
[data-theme="dark"] .emp-chip.reviewed .rv-badge { color: #4ade80; }

/* ===== 全屏核对层 ===== */
.emp-full-mask {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: none;
  background: rgba(15, 23, 42, 0.62);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
.emp-full-mask.show { display: block; }
.emp-full {
  position: absolute;
  inset: 24px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 16px;
  box-shadow: 0 24px 80px rgba(0, 0, 0, 0.35);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.emp-full-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 20px;
  border-bottom: 1px solid var(--border);
  background: var(--card);
  flex-shrink: 0;
}
.emp-full-head h3 { font-size: 1.05rem; font-weight: 800; color: var(--text); }
/* 标题 + 汇总胶囊 同行（胶囊不挤在一起） */
.emp-full-head-main { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; min-width: 0; }
.emp-cal-summary.emp-full-summary {
  display: flex; flex-wrap: wrap; align-items: center; gap: 12px;
  margin: 0; padding: 0; background: none; border: none; backdrop-filter: none;
}
.emp-full-summary .cchip {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 5px 13px; border-radius: 999px;
  border: 1px solid var(--border); background: var(--card);
  font-size: .8rem; line-height: 1.4; white-space: nowrap; color: var(--text);
}
.emp-full-summary .cchip .l { color: var(--text2); font-weight: 500; font-size: .74rem; }
.emp-full-summary .cchip .v { font-weight: 800; font-size: .82rem; color: var(--text); }
.emp-full-summary .cchip.warn { background: rgba(217, 45, 32, 0.10); border-color: rgba(217, 45, 32, 0.28); }
.emp-full-summary .cchip.warn .v { color: #b42318; }
.emp-full-summary .cchip.clear { background: rgba(0, 64, 237, 0.08); border-color: rgba(0, 64, 237, 0.30); color: var(--primary); cursor: pointer; }
.emp-full-summary .cchip.clear:hover { background: rgba(0, 64, 237, 0.16); }
[data-theme="dark"] .emp-cal-summary.emp-full-summary { background: none; border: none; }
.emp-full-body {
  flex: 1 1 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 14px 20px 24px;
  overflow: hidden;
}
/* 人员标签：固定不滚 + 玻璃框线（荣哥要求） */
.emp-full-body > .emp-cal-chips-scroll {
  flex: 0 0 auto;
  margin: 0;
  padding: 10px 12px;
  border: 1.5px solid rgba(0, 64, 237, 0.42);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.55);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
[data-theme="dark"] .emp-full-body > .emp-cal-chips-scroll {
  background: rgba(20, 26, 36, 0.55);
  border-color: rgba(0, 64, 237, 0.55);
}
/* 日历滚动区：单独滚；周几头行 sticky 在其视口顶部 */
.emp-full-body > .emp-cal-scroll {
  flex: 1 1 0;
  min-height: 0;
  overflow: auto;
  padding-right: 4px;
}
.emp-full-body .emp-cal-head {
  position: sticky;
  top: 0;
  z-index: 3;
  background: var(--card);
  padding: 6px 0 8px;
  margin: 0 0 8px;
  border-radius: 6px;
  box-shadow: 0 4px 10px -8px rgba(15, 23, 42, 0.22);
}
[data-theme="dark"] .emp-full-body .emp-cal-head {
  box-shadow: 0 4px 10px -8px rgba(0, 0, 0, 0.55);
}
/* 全屏层内月历放大，便于审核人逐日核对 */
.emp-full-body .emp-cal-grid { gap: 12px; }
.emp-full-body .emp-cal-cell { min-height: 206px; }
.emp-full-body .emp-cal-cell .ec-date .dn { font-size: 1.15rem; }
.emp-full-body .emp-cal-cell .ec-val { font-size: .75rem; }
.emp-full-body .emp-cal-cell .ec-punch { font-size: .75rem; }
.emp-full-body .emp-cal-cell .ec-ot,
.emp-full-body .emp-cal-cell .ec-leave { font-size: .82rem; }
.emp-full-body .emp-cal-cell .ec-ot-single,
.emp-full-body .emp-cal-cell .ec-leave-am { font-size: .75rem; }
.emp-full-body .emp-cal-cell .ec-foot-vals { font-size: .7rem; }
.emp-full-body .emp-cal-cell .ec-lbl,
.emp-full-body .emp-cal-cell .ec-type,
.emp-full-body .emp-cal-cell .ec-sum { font-size: .8rem; }
@media (max-width: 768px) {
  .emp-full { inset: 8px; }
  .emp-full-body .emp-cal-cell { min-height: 164px; }
}

/* 全屏查看层内的「日打卡与加班详情」抽屉：层级必须盖在全屏遮罩(z-index:200)之上 */
#dayDrawerMask { z-index: 300; }
#dayDrawer { z-index: 301; }

/* ===== 打印预览（加班合计汇总页）===== */
/* 打印抽屉加宽，放下 A4 样式汇总表 */
.drawer-print { width: min(1280px, 98vw); }

/* 人员明细抽屉：加宽 + 月历放大，减少日期标签拥挤 */
.drawer-person { width: min(1080px, 96vw); }
.drawer-person .emp-cal-grid { gap: 12px; }
.drawer-person .emp-cal-cell { min-height: 178px; }
.drawer-person .emp-cal-cell .ec-date .dn { font-size: 1.12rem; }
.drawer-person .emp-cal-cell .ec-val { font-size: .82rem; }
.drawer-person .emp-cal-cell .ec-punch,
.drawer-person .emp-cal-cell .ec-ot,
.drawer-person .emp-cal-cell .ec-leave { font-size: .82rem; }
.drawer-person .emp-cal-cell .ec-ot-single,
.drawer-person .emp-cal-cell .ec-leave-am { font-size: .82rem; }
.drawer-person .emp-cal-cell .ec-foot-vals { font-size: .58rem; }
.drawer-person .emp-cal-cell .ec-lbl,
.drawer-person .emp-cal-cell .ec-type,
.drawer-person .emp-cal-cell .ec-sum { font-size: .76rem; }
@media (max-width: 768px) {
  .drawer-person { width: 96vw; }
  .drawer-person .emp-cal-cell { min-height: 152px; }
}

/* ===== 日打卡与加班详情 · 重新设计（原始记录 + 手动维护 + 合计 + 忽略异常） ===== */
.dd-records { background: rgba(0,64,237,0.05); border: 1px solid rgba(0,64,237,0.14); border-radius: 12px; padding: 12px 14px; margin-bottom: 14px; }
.dd-sec-title { font-size: .82rem; font-weight: 700; color: var(--text); margin-bottom: 8px; }
.dd-records-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 18px; }
.dd-records-grid .dr { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; font-size: .82rem; }
.dd-records-grid .dr.full { grid-column: 1 / -1; }
.dd-records-grid .dr .k { color: var(--text2); font-size: .76rem; }
.dd-records-grid .dr .v { font-weight: 600; color: var(--text); text-align: right; }
.dd-records-grid .dr .v.missing { color: #b42318; }
.dd-records-grid .dr .v.abnormal { color: #b42318; font-weight: 700; }
.dd-records-grid .dr .v.holiday { color: #92600a; }
.dd-records-grid .dr .v.rest { color: #475569; }
.dd-records-grid .dr .v.work { color: #15803d; }

.dd-edit { margin-bottom: 14px; }
.dd-edit-hd { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.dd-edit-hd > span:first-child { font-size: .82rem; font-weight: 700; color: var(--text); }
.dd-edit-hint { font-size: .7rem; color: var(--text2); }
.dd-edit-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 12px; }
.dd-half { background: rgba(120,130,150,0.06); border: 1px solid var(--border); border-radius: 12px; padding: 10px 12px; }
.dd-half-hd { font-size: .76rem; font-weight: 700; color: var(--primary); margin-bottom: 8px; }
.dd-field { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.dd-field:last-child { margin-bottom: 0; }
.dd-field label { font-size: .8rem; color: var(--text2); }
.dd-field input { width: 92px; padding: 6px 8px; font-size: .82rem; text-align: right; border: 1px solid var(--border); border-radius: 8px; background: var(--card); color: var(--text); }
.dd-field input:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 2px rgba(0,64,237,0.18); }
.dd-field.single { margin: 0 0 10px; }

.dd-totals { display: flex; align-items: center; gap: 10px; background: rgba(0,64,237,0.06); border: 1px solid rgba(0,64,237,0.16); border-radius: 12px; padding: 10px 12px; margin-bottom: 12px; }
.dd-totals .dt { flex: 1; display: flex; flex-direction: column; align-items: center; }
.dd-totals .dt .l { font-size: .7rem; color: var(--text2); }
.dd-totals .dt .v { font-size: 1.02rem; font-weight: 800; color: var(--text); }
.dd-ignore { width: auto; margin: 0; padding: 8px 14px; font-size: .8rem; }
.dd-ignore.on { background: rgba(22,163,74,0.14); border-color: rgba(22,163,74,0.5); color: #15803d; }
.dd-note { font-size: .72rem; color: var(--text2); line-height: 1.6; }
/* 编辑 / 忽略异常：标题行内的两个独立按钮（已移至底部，此处保留以备他用） */
.dd-actions { display: flex; gap: 8px; }
.dd-actions .btn { width: auto; margin: 0; padding: 7px 14px; font-size: .8rem; }
/* 底部操作按钮区（点击进入手动调整模式 + 忽略异常），两按钮并排、醒目 */
.dd-foot-actions { display: flex; gap: 10px; margin-top: 14px; padding-top: 12px; border-top: 1px solid rgba(100,116,139,0.22); }
.dd-foot-actions .btn { flex: 1 1 0; width: auto; margin: 0; padding: 10px 14px; font-size: .84rem; font-weight: 700; }
/* 未进入编辑态：输入框呈只读展示样式（去边框/淡化） */
.dd-edit input:disabled { background: rgba(148,163,184,0.08); border-color: transparent; color: var(--text); opacity: .92; cursor: default; }
[data-theme="dark"] .dd-edit input:disabled { background: rgba(255,255,255,0.05); }
/* 编辑态：高亮可编辑 */
.dd-edit input:not(:disabled) { border-color: var(--primary); background: #fff; }
[data-theme="dark"] .dd-edit input:not(:disabled) { background: rgba(0,64,237,0.12); }
/* 编辑按钮「完成」态（绿） */
.btn.ghost.on { background: rgba(22,163,74,0.14); border-color: rgba(22,163,74,0.5); color: #15803d; }

/* 日历格「已忽略异常」标记（审核人已看过、判定无问题） */
.emp-cal-cell .ec-ignore-dot { display: inline-flex; align-items: center; justify-content: center; width: 15px; height: 15px; margin-left: 5px; border-radius: 50%; background: rgba(22,163,74,0.18); color: #15803d; font-size: .62rem; font-weight: 800; vertical-align: middle; }

/* 打印纸（始终白底黑字，不受主题影响） */
.print-sheet { background: #fff; color: #1a1a1a; padding: 26px 30px; border-radius: 8px; box-shadow: 0 2px 12px rgba(0,0,0,.08); }
.print-sheet .ps-head { text-align: center; margin-bottom: 14px; }
.print-sheet .ps-title { font-size: 22px; font-weight: 800; letter-spacing: 3px; color: #111; }
.print-sheet .ps-sub { font-size: 12px; color: #666; margin-top: 6px; }
.print-sheet .ps-tbl-wrap { overflow-x: auto; }
.print-sheet .print-tbl { width: 100%; border-collapse: collapse; font-size: 11px; color: #1a1a1a; }
.print-sheet .print-tbl th, .print-sheet .print-tbl td { border: 1px solid #444; padding: 5px 6px; text-align: center; white-space: nowrap; }
.print-sheet .print-tbl th { background: #eef2f8; font-weight: 700; color: #111; }
.print-sheet .print-tbl td.left { text-align: left; }
.print-sheet .print-tbl td.num { text-align: right; font-variant-numeric: tabular-nums; }
.print-sheet .print-tbl tbody tr:nth-child(even) { background: #fafbfd; }
.print-sheet .print-tbl tfoot td { font-weight: 800; background: #f2f4f8; color: #111; }
/* 打印页内姓名链接归一为黑字（去蓝色/手型，仅保留加粗） */
.print-sheet .print-tbl .name-link { color: #1a1a1a !important; cursor: default; font-weight: 700; }

/* 四个审批签字标签：2×2 网格，清晰可读 */
.print-sheet .ps-sign { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px 40px; margin-top: 30px; }
.print-sheet .ps-sign-item { display: flex; flex-direction: column; gap: 8px; }
.print-sheet .ps-sign-lbl { font-size: 13px; font-weight: 700; color: #111; padding-left: 2px; }
.print-sheet .ps-sign-line { border-bottom: 1px solid #333; height: 28px; }
.print-sheet .ps-sign-date { font-size: 11px; color: #666; }

.print-stack { display:flex; flex-direction:column; gap:18px; }
.print-sheet.template-print {
  padding:18px 20px;
  overflow:hidden;
  page-break-after:always;
}
.print-sheet.template-print:last-child { page-break-after:auto; }
.print-sheet .template-tbl {
  table-layout:fixed;
  border-collapse:collapse;
  width:100%;
  font-family:"SimSun","宋体",Arial,sans-serif;
  font-size:10px;
  color:#111;
}
.print-sheet .template-tbl td {
  border:1px solid #222;
  padding:2px 3px;
  height:20px;
  text-align:center;
  vertical-align:middle;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.print-sheet .template-tbl .pt-title td {
  border:none;
  height:30px;
  font-size:22px;
  font-weight:700;
  letter-spacing:2px;
  text-align:center;
}
.print-sheet .template-tbl .pt-meta td {
  border:none;
  height:22px;
  font-size:12px;
  text-align:center;
}
.print-sheet .template-tbl .pt-head td {
  background:#f4f6f8;
  font-weight:700;
}
.print-sheet .template-tbl .pt-day td {
  background:#fff;
}
.print-sheet .template-tbl .pt-leave td {
  background:#fafafa;
  border-bottom:2px solid #222;
}
.print-sheet.overtime-print {
  min-width:1180px;
}
.print-sheet.overtime-print .template-tbl td:nth-child(1) { width:32px; }
.print-sheet.overtime-print .template-tbl td:nth-child(2) { width:58px; }
.print-sheet.overtime-print .template-tbl td:nth-child(3) { width:44px; }
.print-sheet.payroll-print {
  width:min(980px, 100%);
  align-self:center;
}
.print-sheet .payroll-tbl {
  font-size:11px;
}
.print-sheet .payroll-tbl td {
  height:24px;
  padding:4px 5px;
}
.print-sheet .payroll-tbl .pt-title td {
  height:34px;
  font-size:20px;
}
.print-sheet .payroll-tbl .pt-head td {
  background:#eaf2f8;
  font-weight:700;
}
.print-sheet .ps-sign.compact {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:18px;
  margin-top:14px;
  font-size:12px;
  color:#111;
}
.print-sheet .ps-sign.compact > div {
  border-bottom:1px solid #333;
  padding:10px 0 4px;
}

/* ===== 打印媒体查询：仅输出打印纸，隐藏应用外壳与抽屉头部 ===== */
@media print {
  html, body { background: #fff !important; }
  body * { visibility: hidden !important; }
  #printDrawerMask, #printDrawerMask * { visibility: visible !important; }
  #printDrawerMask { position: absolute !important; inset: 0 !important; background: #fff !important; display: block !important; }
  #printDrawer { width: 100% !important; max-width: 100% !important; transform: none !important; box-shadow: none !important; background: #fff !important; }
  #printDrawer .drawer-head { display: none !important; }
  #printDrawer .drawer-body { overflow: visible !important; padding: 0 !important; }
  .print-sheet { box-shadow: none !important; border-radius: 0 !important; padding: 0 !important; }
  .print-stack { gap: 0 !important; }
  .print-sheet.overtime-print { min-width: 0 !important; }
  @page { size: A4 landscape; margin: 8mm; }
}

/* ===== 人员信息 Tab：标题行 / 状态行 / 视图切换(日历·列表) / 列表模式 ===== */
.emp-info-block { display: flex; align-items: center; gap: 12px; min-width: 0; }
.emp-info-title { font-size: 1.05rem; font-weight: 800; color: var(--text); white-space: nowrap; }
.emp-mode-toggle { display: inline-flex; border: 1px solid var(--border); border-radius: 10px; overflow: hidden; background: var(--glass-bg-strong); }
.emp-mode-toggle .mode-btn { border: none; background: transparent; color: var(--text2); padding: 6px 14px; font-size: .82rem; font-weight: 600; cursor: pointer; transition: all .15s ease; }
.emp-mode-toggle .mode-btn.on { background: var(--primary); color: #fff; }

.emp-status-row { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin: 10px 0 12px; padding: 8px 12px; background: var(--glass-bg-strong); border: 1px solid var(--glass-border-color); border-radius: 12px; backdrop-filter: var(--glass-blur); -webkit-backdrop-filter: var(--glass-blur); }
.emp-cur-person { font-size: .85rem; color: var(--text2); white-space: nowrap; }
.emp-cur-person b { color: var(--text); font-size: .95rem; }
.emp-status-row .emp-cal-summary { margin: 0; background: transparent; border: none; padding: 0; }

/* 列表模式（2026-09-01 重构：物理双行 上午/下午 + 合并日期格 + 数据状态 + 两阶段编辑）
   2026-09-08 布局重构：双行表头(th-sub 子表头) + 新增「当日汇总」列 + 状态列纯白底 + 排版收紧（半日行 ~32-36px） */
.emp-list-scroll { max-height: 62vh; overflow: auto; border-radius: 12px; border: 1px solid var(--border); }
.emp-list-tbl { width: 100%; min-width: 882px; border-collapse: collapse; table-layout: fixed; font-size: .76rem; }
.emp-list-tbl col { width: auto; }
.emp-list-tbl th, .emp-list-tbl td { text-align: center; padding: 3px 4px; border-bottom: 1px solid rgba(100,116,139,0.14); vertical-align: middle; overflow: hidden; }
.emp-list-tbl th { position: sticky; top: 0; z-index: 3; background: var(--bg); border-bottom: 2px solid var(--border); font-size: .72rem; color: var(--text2); font-weight: 700; }
.emp-list-tbl th.th-date, .emp-list-tbl td.el-date { text-align: left; }
.emp-list-tbl th.th-st, .emp-list-tbl th.th-sum, .emp-list-tbl td.el-sum { text-align: left; }
.emp-list-tbl th.th-grp { border-left: 1px solid rgba(100,116,139,0.18); border-right: 1px solid rgba(100,116,139,0.18); }
.emp-list-tbl thead th { height: 26px; }
.emp-list-tbl th.th-sub { position: sticky; top: 26px; height: 22px; z-index: 3; font-size: .68rem; font-weight: 500; color: var(--text2); padding: 2px 2px; background: var(--bg); }
/* 子表头行首尾补分组边框，与 th-grp 的左右边线对齐 */
.emp-list-tbl thead tr:nth-child(2) th.th-sub:first-child { border-left: 1px solid rgba(100,116,139,0.18); }
.emp-list-tbl thead tr:nth-child(2) th.th-sub:last-child { border-right: 1px solid rgba(100,116,139,0.18); }
[data-theme="dark"] .emp-list-tbl th.th-sub { background: #1f2634; }
.emp-list-row { transition: box-shadow .12s ease; }
.emp-list-row:hover { box-shadow: 0 4px 14px rgba(0,64,237,.12); }
.emp-list-row.cell-leave { box-shadow: inset 3px 0 0 rgba(0,64,237,0.62); }
.emp-list-row.cell-abn { box-shadow: inset 3px 0 0 rgba(217,45,32,0.55); }
.emp-list-row.cell-ignored { opacity: .55; }
/* 双行结构：上午行无下边框（与下午行视觉成组），下午行底边框为日期分隔线 */
tr.el-day-am td { border-bottom: none; }
tr.el-day-pm td { border-bottom: 1.5px solid rgba(100,116,139,0.30); }
/* 合并日期格：日期+周几同行（基线对齐）/ 类型胶囊第二行（2026-09-01 对齐优化；09-08 收紧 gap） */
.emp-list-tbl td.el-date { padding: 3px 6px; }
.el-date-box { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; line-height: 1.15; }
.el-date-box .dnw { display: flex; align-items: baseline; gap: 4px; }
.el-date-box .dn { font-weight: 800; font-size: .95rem; color: var(--text); font-variant-numeric: tabular-nums; }
.el-date-box .dw { color: var(--text2); font-size: .68rem; font-weight: 600; white-space: nowrap; }
.el-date-box .ec-type { font-size: .62rem; padding: 0 6px; border-radius: 999px; white-space: nowrap; }
/* 时段标签（2026-09-08 收紧为小号 chip） */
td.el-ampm { padding: 3px 2px; }
.el-ampm .el-am, .el-ampm .el-pm { display: inline-block; font-size: .66rem; font-weight: 700; padding: 1px 6px; border-radius: 6px; white-space: nowrap; }
.el-ampm .el-am { background: rgba(100,116,139,.14); color: var(--text2); }
.el-ampm .el-pm { background: rgba(100,116,139,.20); color: var(--text); }
[data-theme="dark"] .el-ampm .el-am { background: rgba(255,255,255,.07); color: #cbd5e1; }
[data-theme="dark"] .el-ampm .el-pm { background: rgba(255,255,255,.11); color: #e6edf6; }
/* 打卡时间：上/下午两格并排（2026-09-08 间距微调） */
.emp-list-row .el-pu { display: flex; gap: 3px; justify-content: center; }
.el-pu.pu-abn { box-shadow: inset 0 0 0 2px rgba(217,45,32,.7); border-radius: 6px; }
/* 异常点定位：具体到某个缺卡框红框高亮（2026-09-03） */
.ls-time.pu-miss { border-color: #d92020; background: rgba(217,32,32,.10); color: #b42318; font-weight: 700; }
.ls-time.pu-miss::placeholder { color: #d92020; opacity: .75; }
[data-theme="dark"] .ls-time.pu-miss { border-color: #f87171; background: rgba(248,113,113,.16); color: #fca5a5; }
.emp-list-row .el-n { padding: 3px 4px; }
/* 行内编辑控件（2026-09-08 收紧：等宽数字；数值列保留 spinner，0.5h 步进增减） */
.ls-inp { width: 100%; box-sizing: border-box; border: 1px solid var(--border); border-radius: 5px; background: #fff; color: var(--text); font-size: .76rem; text-align: center; padding: 2px; font-family: inherit; font-variant-numeric: tabular-nums; }
[data-theme="dark"] .ls-inp { background: #1b2330; color: #e6edf6; border-color: rgba(255,255,255,0.14); }
.ls-inp:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 2px rgba(0,64,237,.18); }
.ls-inp:disabled { background: rgba(120,130,150,0.10); color: var(--text2); opacity: .6; }
.ls-time { max-width: 72px; }
.ls-num { max-width: 56px; }
/* 未保存修改的脏标（input 橙框 + 行淡橙底） */
.ls-inp.dirty { border-color: rgba(245,158,11,.75); background: rgba(245,158,11,.08); }
[data-theme="dark"] .ls-inp.dirty { border-color: rgba(245,158,11,.65); background: rgba(245,158,11,.10); }
.emp-list-tbl tbody tr.emp-list-row.is-dirty > td:not(.el-date):not(.el-op):not(.el-status) { background-color: rgba(245,158,11,.06); }
[data-theme="dark"] .emp-list-tbl tbody tr.emp-list-row.is-dirty > td:not(.el-date):not(.el-op):not(.el-status) { background-color: rgba(245,158,11,.09); }
/* 数据状态列（4 选 1 + 异常原因 + 忽略/确认按钮）
   2026-09-08：本列单元格一律纯白底（暗色对应深色底），不吃斑马纹/日类型/脏标/hover 任何行级 tint */
td.el-status { text-align: left; vertical-align: top; padding: 3px 6px; background: #fff; }
[data-theme="dark"] td.el-status { background: #1b2330; }
.el-st-box { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
.el-st { display: inline-block; font-size: .66rem; font-weight: 700; padding: 1px 7px; border-radius: 999px; border: 1px solid currentColor; background: transparent; white-space: nowrap; width: fit-content; }
.el-st.s-lv { color: #0040ed; }
.el-st.s-abn { color: #b42318; }
.el-st.s-ign { color: #475569; }
.el-st.s-conf { color: #047857; }
.el-st.s-ok { color: #059669; }
[data-theme="dark"] .el-st.s-lv { color: #9db8ff; }
[data-theme="dark"] .el-st.s-abn { color: #fca5a5; }
[data-theme="dark"] .el-st.s-ign { color: #cbd5e1; }
[data-theme="dark"] .el-st.s-conf { color: #6ee7b7; }
[data-theme="dark"] .el-st.s-ok { color: #6ee7b7; }
/* 异常原因小字行（2026-09-08：从 chip 拆出独立一行，chip 改显打卡次数） */
.el-abn-r { font-size: .62rem; font-weight: 700; color: #b42318; white-space: nowrap; }
[data-theme="dark"] .el-abn-r { color: #fca5a5; }
/* 状态列内的忽略/确认按钮：小号次级样式（区别于操作列主按钮） */
.el-status .ls-ignore { font-size: .62rem; padding: 1px 7px; }
/* 当日汇总列（rowspan=2，2026-09-08 新增）：请假/加班两行紧凑小字，等宽数字 */
td.el-sum { vertical-align: middle; padding: 3px 6px; }
.el-sum-box { display: flex; flex-direction: column; gap: 2px; }
.el-sum-r { font-size: .68rem; color: var(--text2); white-space: nowrap; font-variant-numeric: tabular-nums; line-height: 1.25; }
.el-sum-r b { color: var(--text); font-weight: 700; }
/* 操作列：修改标记 + 保存修改 / 取消（忽略/确认按钮已移至数据状态列） */
td.el-op { padding: 3px 4px; }
.ls-op-btns { display: flex; gap: 3px; justify-content: center; flex-wrap: wrap; align-items: center; }
.ls-dirty-mark { display: inline-block; font-size: .62rem; font-weight: 700; color: #b45309; background: rgba(245,158,11,.16); border-radius: 6px; padding: 1px 6px; margin-bottom: 2px; white-space: nowrap; }
[data-theme="dark"] .ls-dirty-mark { color: #fcd34d; background: rgba(245,158,11,.22); }
.ls-ignore, .ls-save, .ls-cancel { font-size: .66rem; font-weight: 700; padding: 2px 7px; border-radius: 999px; border: 1px solid var(--border); background: #fff; color: var(--text2); cursor: pointer; transition: all .12s; }
[data-theme="dark"] .ls-ignore, [data-theme="dark"] .ls-save, [data-theme="dark"] .ls-cancel { background: #1b2330; color: #cbd5e1; border-color: rgba(255,255,255,0.14); }
.ls-ignore:hover { border-color: var(--primary); color: var(--primary); }
.ls-ignore.on { background: #16a34a; color: #fff; border-color: transparent; }
  [data-theme="dark"] .ls-ignore.on { background: #15803d; color: #fff; border-color: transparent; }
.ls-save.has { background: var(--primary); color: #fff; border-color: transparent; box-shadow: 0 2px 8px rgba(0,64,237,.28); }
.ls-save.has:hover { filter: brightness(1.08); }
.ls-save:disabled { opacity: .40; cursor: not-allowed; }
.ls-cancel { color: #b42318; }
[data-theme="dark"] .ls-cancel { color: #fca5a5; }
.ls-cancel:hover { border-color: rgba(217,45,32,.55); }
/* 表尾合计：sticky 底部常驻 + 实色背景（滚动 62vh 长表时合计始终可见） */
.emp-list-tbl tfoot td { position: sticky; bottom: 0; z-index: 3; font-weight: 700; font-size: .72rem; background: var(--bg); border-top: 2px solid var(--border); border-bottom: none; }
[data-theme="dark"] .emp-list-tbl tfoot td { background: var(--bg); }

/* 行底色层叠体系（2026-09-01 全量调优；09-08 数据状态列退出所有行级着色）：斑马纹 < 日类型轻底 < 脏标 < hover，全部 td 级并排除冻结列与状态列 */
/* ① 斑马纹：按「日」分组奇数日两行着 2.8% 灰，长表防串行 */
.emp-list-tbl tbody tr:nth-of-type(4n+1) > td:not(.el-date):not(.el-op):not(.el-status),
.emp-list-tbl tbody tr:nth-of-type(4n+2) > td:not(.el-date):not(.el-op):not(.el-status) { background: rgba(100,116,139,0.028); }
[data-theme="dark"] .emp-list-tbl tbody tr:nth-of-type(4n+1) > td:not(.el-date):not(.el-op):not(.el-status),
[data-theme="dark"] .emp-list-tbl tbody tr:nth-of-type(4n+2) > td:not(.el-date):not(.el-op):not(.el-status) { background: rgba(255,255,255,0.025); }
/* ② 日类型轻底：工作日不着色（泛蓝根治），仅休息日/节假日轻着色 */
.emp-list-tbl tbody tr.dtype-weekend > td:not(.el-date):not(.el-op):not(.el-status) { background: rgba(120,130,150,0.05); }
.emp-list-tbl tbody tr.dtype-holiday_3x > td:not(.el-date):not(.el-op):not(.el-status),
.emp-list-tbl tbody tr.dtype-holiday_2x > td:not(.el-date):not(.el-op):not(.el-status) { background: rgba(245,180,0,0.07); }
[data-theme="dark"] .emp-list-tbl tbody tr.dtype-weekend > td:not(.el-date):not(.el-op):not(.el-status) { background: rgba(120,130,150,0.08); }
[data-theme="dark"] .emp-list-tbl tbody tr.dtype-holiday_3x > td:not(.el-date):not(.el-op):not(.el-status),
[data-theme="dark"] .emp-list-tbl tbody tr.dtype-holiday_2x > td:not(.el-date):not(.el-op):not(.el-status) { background: rgba(245,180,0,0.10); }
.emp-list-row.cell-leave { box-shadow: inset 3px 0 0 rgba(0,64,237,0.62); }
.emp-list-row.cell-abn { box-shadow: inset 3px 0 0 rgba(217,45,32,0.55); }
.emp-list-row.cell-confirmed { box-shadow: inset 3px 0 0 rgba(4,120,87,0.46); }
[data-theme="dark"] .emp-status-row { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.10); }

/* —— 列表模式 P0 增强（2026-09-01）：横向滚动 + 冻结列 + 异常/请假行强高亮 —— */
/* 容器横滚：视口窄于 720px 时表格横向滚动，列不再被无限压窄 */
.emp-list-scroll { overflow-x: auto; }
/* 冻结首列（日期）与末列（操作）：滚动时常驻，实色背景避免透出下方内容 */
.emp-list-tbl th.th-date, .emp-list-tbl td.el-date,
.emp-list-tbl th.th-op,  .emp-list-tbl td.el-op { position: sticky; background: #f7f9fc; }
.emp-list-tbl th.th-date, .emp-list-tbl th.th-op { z-index: 5; }
.emp-list-tbl td.el-date,  .emp-list-tbl td.el-op { z-index: 4; }
.emp-list-tbl td.el-date, .emp-list-tbl th.th-date { left: 0;  box-shadow: 2px 0 5px rgba(20,30,50,.08); }
.emp-list-tbl td.el-op,  .emp-list-tbl th.th-op  { right: 0; box-shadow: -2px 0 5px rgba(20,30,50,.08); }
[data-theme="dark"] .emp-list-tbl th.th-date,
[data-theme="dark"] .emp-list-tbl td.el-date,
[data-theme="dark"] .emp-list-tbl th.th-op,
[data-theme="dark"] .emp-list-tbl td.el-op { background: #1b2330; }
/* 异常/请假/已忽略行：只保留左侧 box-shadow 蓝/红/灰条作为行标记（2026-09-01 修正）
   之前用 td 淡底色在跨两行合并的数据状态列上视觉过重、和当日明细列小格子视觉不对齐；改为纯侧边标记。 */
.emp-list-row.cell-ignored { opacity: .55; box-shadow: inset 3px 0 0 rgba(120,130,150,0.40); }
/* ④ 悬停：浅蓝底辅助快速扫行（层叠最顶层，交互态优先；数据状态列保持纯白不吃 hover） */
.emp-list-tbl tbody tr.emp-list-row:hover > td:not(.el-date):not(.el-op):not(.el-status) { background-color: rgba(0,64,237,.08) !important; }

.history-tbl th,
.history-tbl td { font-size: .76rem; }
.history-tbl td.left { text-align: left; line-height: 1.5; }
.history-tbl tbody tr:hover td { background: rgba(0,64,237,.045); }
[data-theme="dark"] .history-tbl tbody tr:hover td { background: rgba(255,255,255,.045); }

/* 调整历史业务化展示：一条保存记录只显示一行，隐藏内部字段 code。 */
.history-tbl {
  table-layout: fixed;
}
.history-tbl th {
  height: 34px;
  background: #f3f6fb;
  color: #334155;
  font-weight: 900;
}
.history-tbl td {
  height: 42px;
  padding: 8px 10px;
  color: #1f2937;
  vertical-align: top;
  white-space: nowrap;
}
.history-tbl td:nth-child(5) {
  color: #174cff;
  font-weight: 900;
}
.history-tbl td.left {
  white-space: normal;
  word-break: break-word;
}
.history-tbl td:nth-child(6) {
  color: #0f172a;
  font-weight: 750;
}
.history-tbl td:nth-child(7) {
  color: #64748b;
  font-size: 11px;
}
[data-theme="dark"] .history-tbl th {
  background: #202a3a;
  color: #cbd5e1;
}
[data-theme="dark"] .history-tbl td {
  color: #e6edf6;
}
[data-theme="dark"] .history-tbl td:nth-child(5) {
  color: #9db8ff;
}
[data-theme="dark"] .history-tbl td:nth-child(6) {
  color: #e6edf6;
}
[data-theme="dark"] .history-tbl td:nth-child(7) {
  color: #94a3b8;
}

/* ============================================================
 * 原型视觉标准强化（v1 · 与 考勤系统_全新UI原型.html 对齐）
 * 在 glass.css 末尾追加，不修改已有规则，不动 JS / 布局 / 任何 .btn/.card 的 width/height/padding 结构
 * 增强：顶导/下拉/激活态/品牌/输入/select/tab/错误框/主题按钮/详情头/统计/拖拽区/标题字重
 * ============================================================ */

/* ---- 1. 顶部导航：更强毛玻璃 + 底边高光 ---- */
#topbar {
  background: var(--glass-bg-strong);
  border-bottom: 1px solid var(--glass-border-color);
  box-shadow: 0 1px 0 rgba(255,255,255,.6) inset, var(--shadow-sm);
}
[data-theme="dark"] #topbar {
  box-shadow: 0 1px 0 rgba(255,255,255,.06) inset, var(--shadow-sm);
}

/* 品牌徽章 V2.0：玻璃胶囊渐变 */
.brand .ver {
  background: var(--primary-grad);
  color: #fff;
  box-shadow: 0 4px 12px rgba(0,64,237,.30);
  font-weight: 700;
  letter-spacing: .3px;
}

/* ---- 2. 顶部分组 trigger 激活态：主色微光 + 底部渐变高亮条 ---- */
.topnav-group { position: relative; }
.topnav-trigger { position: relative; }
.topnav-group.active > .topnav-trigger {
  background: var(--primary-100);
  color: var(--primary);
  font-weight: 700;
}
.topnav-group.active > .topnav-trigger::after {
  content: "";
  position: absolute; left: 12px; right: 12px; bottom: -1px; height: 3px;
  border-radius: 3px 3px 0 0;
  background: var(--primary-grad);
  pointer-events: none;
}

/* 下拉菜单：更强阴影 + 圆角对齐 --r-lg */
.topnav-dropdown {
  background: var(--glass-bg-strong);
  border: 1px solid var(--glass-border-color);
  border-radius: var(--r-lg);
  box-shadow: 0 20px 50px -10px rgba(0,32,96,.20), 0 4px 12px rgba(0,32,96,.08);
  padding: 8px;
}
.topnav-item { border-radius: 8px; }
.topnav-item:hover { background: var(--primary-050); }
.topnav-item.active { background: var(--primary-100); color: var(--primary); font-weight: 700; }

/* ---- 3. 顶栏右侧：云端/本机存储 + 主题切换 玻璃胶囊 ---- */
.badge {
  background: var(--glass-bg-strong);
  border: 1px solid var(--glass-border-color);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  font-weight: 600;
  border-radius: var(--r-pill);
}
.badge.cloud { color: var(--green); border-color: rgba(22,163,74,.40); background: var(--success-050); }
.theme-toggle {
  background: var(--glass-bg-strong);
  border: 1px solid var(--glass-border-color);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  border-radius: var(--r-pill);
  transition: .15s;
  font-weight: 600;
}
.theme-toggle:hover { border-color: var(--primary); color: var(--primary); }

/* ---- 4. 卡片：更精致（圆角/阴影/hover 微变） ---- */
.card {
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-sm);
  padding: 20px;
  transition: box-shadow .2s;
}
.card:hover { box-shadow: var(--shadow-md); }

/* ---- 5. 按钮：hover 微动效 + 强化阴影（不改 width/height/padding） ---- */
.btn { transition: filter .15s, transform .1s, box-shadow .15s; }
.btn:hover { filter: brightness(1.07); box-shadow: 0 10px 24px rgba(0,64,237,.28); }
.btn:active { transform: translateY(1px); }
.btn.ghost {
  background: var(--glass-bg);
  border: 1px solid var(--border);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  box-shadow: none;
  color: var(--text);
}
.btn.ghost:hover { background: var(--primary-050); border-color: var(--primary); color: var(--primary); }

/* ---- 6. 统计胶囊：再精 ---- */
.stat {
  background: var(--glass-bg-strong);
  border: 1px solid var(--glass-border-color);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  box-shadow: 0 4px 14px rgba(16,32,64,.08);
  font-weight: 600;
}
.stat .v { color: var(--primary); font-weight: 800; }

/* ---- 7. 标签页 .tab：玻璃胶囊 + 激活渐变（关键补全） ---- */
.tabs { gap: 8px; }
.tab {
  background: var(--glass-bg);
  border: 1px solid var(--glass-border-color);
  border-radius: var(--r-pill);
  color: var(--text2);
  font-weight: 600;
  padding: 7px 16px;
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  transition: .15s;
}
.tab:hover { color: var(--primary); border-color: var(--primary); }
.tab.active {
  background: var(--primary-grad);
  color: #fff;
  border-color: transparent;
  box-shadow: 0 6px 16px -4px rgba(0,64,237,.45);
}

/* ---- 8. 输入框 / select / textarea：玻璃化 + focus 环（关键补全） ---- */
input[type="number"], input[type="text"], input[type="password"],
input[type="time"], input[type="date"], input[type="email"],
input[type="search"], textarea, select {
  background: var(--glass-bg);
  border: 1px solid var(--glass-border-color);
  border-radius: 8px;
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  transition: border-color .15s, box-shadow .15s, background .15s;
  color: var(--text);
}
input:focus, textarea:focus, select:focus {
  outline: none;
  border-color: var(--primary);
  background: var(--glass-bg-strong);
  box-shadow: 0 0 0 3px var(--primary-100);
}
input::placeholder, textarea::placeholder { color: var(--text2); opacity: .7; }
select { padding-right: 30px; }
[data-theme="dark"] input, [data-theme="dark"] textarea, [data-theme="dark"] select {
  color: var(--text);
  background: rgba(255,255,255,0.04);
  border-color: rgba(255,255,255,0.10);
}
[data-theme="dark"] input:focus, [data-theme="dark"] textarea:focus, [data-theme="dark"] select:focus {
  background: rgba(255,255,255,0.06);
  box-shadow: 0 0 0 3px var(--primary-200);
}

/* ---- 9. 表格表头：玻璃化（.tbl-wrap 外也补） ---- */
th {
  background: var(--glass-bg-strong);
  color: var(--text2);
  font-weight: 700;
  letter-spacing: .2px;
  border-bottom: 1px solid var(--glass-border-color);
}
tr:hover td { background: var(--primary-050); transition: background .12s; }
[data-theme="dark"] tr:hover td { background: var(--primary-100); }

/* ---- 10. 错误框：玻璃红 ---- */
.error-box {
  background: var(--danger-050);
  border: 1px solid rgba(220,38,38,.32);
  color: var(--red);
  border-radius: var(--r-md);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
}

/* ---- 11. 面包屑：玻璃副栏 + 激活态主色 ---- */
#breadcrumb { color: var(--text2); padding-top: 14px; }
.crumb { font-weight: 600; }
.crumb.active { color: var(--primary); font-weight: 700; }
.crumb-sep { color: var(--text2); opacity: .5; }

/* ---- 12. 详情页头部 summary：玻璃 ---- */
.detail-header {
  background: var(--glass-bg);
  border: 1px solid var(--glass-border-color);
  border-radius: var(--r-lg);
  padding: 16px 18px;
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  box-shadow: var(--shadow-sm);
}

/* ---- 13. 拖拽区 .dropzone：玻璃蓝 ---- */
.dropzone {
  background: var(--primary-050);
  border: 2px dashed var(--primary-200);
  border-radius: var(--r-lg);
  color: var(--primary);
}
.dropzone .fname { color: var(--primary); }
.dropzone.has { background: var(--success-050); border-color: var(--green); border-style: solid; color: var(--green); }

/* ---- 14. 滚动条：再精（细而美） ---- */
::-webkit-scrollbar { width: 9px; height: 9px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background: var(--primary-200);
  border-radius: 99px;
  border: 2px solid transparent;
  background-clip: padding-box;
}
::-webkit-scrollbar-thumb:hover { background: var(--primary-300); background-clip: padding-box; }
[data-theme="dark"] ::-webkit-scrollbar-thumb { background: rgba(91,134,255,.32); background-clip: padding-box; }
[data-theme="dark"] ::-webkit-scrollbar-thumb:hover { background: rgba(91,134,255,.50); background-clip: padding-box; }

/* ---- 15. 标题字重：更粗（与原型 h1 23px/800 对齐） ---- */
h1, h2, h3 { letter-spacing: .2px; }
h1 { font-size: 1.55rem; font-weight: 800; }

/* ---- 16. .mini-btn 玻璃 ---- */
.mini-btn {
  background: var(--glass-bg);
  border: 1px solid var(--glass-border-color);
  border-radius: 8px;
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  font-weight: 600;
}
.mini-btn:hover { border-color: var(--primary); color: var(--primary); background: var(--primary-050); }

/* ---- 17. .modal-mask 玻璃遮罩 ---- */
.modal-mask { background: rgba(15,23,42,.45); backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px); }

/* ---- 18. 暗色主题：补充 btn/btn.ghost/tab 暗色玻璃 ---- */
[data-theme="dark"] .btn { box-shadow: 0 6px 18px rgba(0,64,237,.45); }
[data-theme="dark"] .tab { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.10); }
[data-theme="dark"] .tab:hover { background: var(--primary-100); border-color: var(--primary-200); }
[data-theme="dark"] .mini-btn { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.10); color: var(--text2); }
[data-theme="dark"] .dropzone { background: var(--primary-100); border-color: var(--primary-200); }
[data-theme="dark"] .detail-header { background: var(--glass-bg); border-color: var(--glass-border-color); }

/* ---- 19. 整体过渡 ---- */
.card, .btn, .tab, input, select, textarea, .stat, .mini-btn, .topnav-item, .topnav-trigger {
  transition: background .15s, border-color .15s, color .15s, box-shadow .15s, transform .1s;
}

/* ---- 20. 月度作业列表：v5 卡片网格（对齐原型视觉） ---- */
.page-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:20px; }
.page-head .ph-l { min-width:0; }
.page-head h1 { font-size:1.45rem; }
.page-head .sub { margin-top:6px; color:var(--text2); font-size:.85rem; }
.page-head .ph-actions { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }

/* 云端 / 本机徽章 */
.badge { display:inline-flex; align-items:center; padding:5px 12px; border-radius:var(--r-pill); font-size:.76rem; font-weight:700; background:var(--surface2); color:var(--text2); border:1px solid var(--border); white-space:nowrap; }
.badge.cloud { background:linear-gradient(135deg, rgba(0,64,237,.12), rgba(35,187,255,.16)); color:var(--primary); border-color:transparent; }

/* 卡片网格 */
.jobs-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(290px, 1fr)); gap:18px; }
.job-card { background:var(--glass-bg); border:1px solid var(--glass-border-color); border-radius:var(--r-lg); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur); padding:18px; box-shadow:var(--shadow-sm); transition:transform .15s, box-shadow .15s; position:relative; overflow:hidden; cursor:pointer; }
.job-card::before { content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--primary-grad); opacity:0; transition:opacity .15s; }
.job-card.is-draft::before { opacity:1; }
.job-card:hover { transform:translateY(-4px); box-shadow:var(--shadow-md); }
.job-card .jc-top { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; margin-bottom:14px; }
.job-card .jc-titles { min-width:0; }
.job-card .jc-month { font-size:19px; font-weight:800; }
.job-card .jc-meta { font-size:12px; color:var(--text2); margin-top:2px; }
.job-card .jc-stats { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin:6px 0 14px; }
.job-card .jc-stat { background:var(--surface2); border-radius:var(--r-md); padding:10px 8px; text-align:center; }
.job-card .jc-stat .s-l { font-size:11px; color:var(--text2); font-weight:600; }
.job-card .jc-stat .s-v { font-size:17px; font-weight:800; margin-top:2px; }
.job-card .jc-stat .s-v .u { font-size:11px; font-weight:600; margin-left:1px; color:var(--text2); }
.job-card .jc-foot { display:flex; align-items:center; gap:8px; border-top:1px solid var(--border); padding-top:13px; }
.job-card .jc-src { font-size:11.5px; color:var(--text2); display:flex; align-items:center; gap:5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; }
.job-card .jc-acts { margin-left:auto; display:flex; gap:6px; }
.job-card .mini-btn.jc-pub { border-color:var(--green); color:var(--green); }
.job-card .mini-btn.jc-pub:hover { background:var(--success-050); border-color:var(--green); }
.job-card .tag { margin-left:0; }

/* 暗色微调：卡片网格 */
[data-theme="dark"] .job-card { box-shadow:var(--shadow-sm); }
[data-theme="dark"] .job-card .jc-stat { background:rgba(255,255,255,.05); }
[data-theme="dark"] .job-card .jc-stat .s-v .u,
[data-theme="dark"] .job-card .jc-meta,
[data-theme="dark"] .job-card .jc-src { color:var(--text2); }

/* ---- 21. 月度详情页布局（v5+重设计 · 专业UI） ---- */
/* 头部三栏：标题区 / KPI 卡 / 操作按钮 */
.detail-header-grid {
  display:grid; grid-template-columns:minmax(220px,1fr) minmax(420px,2.2fr) auto;
  gap:18px; align-items:center; margin-bottom:18px;
  padding:18px 20px;
  background:var(--glass-bg); border:1px solid var(--glass-border-color);
  border-radius:var(--r-xl); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur);
  box-shadow:var(--shadow-sm); position:relative; overflow:hidden;
}
.detail-header-grid::before {
  content:""; position:absolute; left:0; top:0; right:0; height:3px;
  background:var(--primary-grad); opacity:.9;
}
.dhg-title { min-width:0; }
.dhg-title-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.dhg-title h1 { margin:0; font-size:24px; line-height:1.15; letter-spacing:0; }
.dhg-title .hint { margin-top:6px; font-size:12px; color:var(--text2); }
.dh-status .tag { font-size:11.5px; padding:3px 9px; }
.dhg-actions { display:flex; gap:8px; align-items:center; flex-wrap:wrap; justify-content:flex-end; }
/* 4 个差异化 KPI 卡片 */
.dhg-kpis { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; min-width:0; }
.kpi-card {
  display:flex; align-items:center; gap:10px;
  padding:10px 12px; border-radius:var(--r-md);
  background:rgba(255,255,255,.55); border:1px solid rgba(255,255,255,.7);
  box-shadow:0 1px 0 rgba(255,255,255,.5) inset, var(--shadow-sm);
  position:relative; overflow:hidden;
}
.kpi-card::before { content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--c,#0040ed); }
.kpi-card .kpi-ico {
  width:32px; height:32px; border-radius:var(--r-md);
  display:grid; place-items:center; font-size:16px; flex:none;
  background:var(--icobg,rgba(0,64,237,.10)); color:var(--c,#0040ed);
}
.kpi-card .kpi-body { min-width:0; flex:1; }
.kpi-card .kpi-l { font-size:11.5px; color:var(--text2); font-weight:600; line-height:1.15; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.kpi-card .kpi-v { font-size:18px; font-weight:800; line-height:1.1; margin-top:3px; color:var(--ink,#1f2733); letter-spacing:0; font-variant-numeric:tabular-nums; }
.kpi-card .kpi-v .kpi-u { font-size:11px; font-weight:600; color:var(--text2); margin-left:2px; }
/* 主色变体（语义化） */
.kpi-card.kpi-ot { --c:#0040ed; --icobg:rgba(0,64,237,.12); }
.kpi-card.kpi-leave { --c:#ff7a18; --icobg:rgba(255,122,24,.12); }
.kpi-card.kpi-fee { --c:#10b981; --icobg:rgba(16,185,129,.14); }
.kpi-card.kpi-deduct { --c:#ef4444; --icobg:rgba(239,68,68,.12); }

/* 现代下划线 Tab */
.tabs-modern {
  display:flex; gap:4px; padding:5px;
  background:var(--glass-bg); border:1px solid var(--glass-border-color);
  border-radius:var(--r-pill); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur);
  box-shadow:var(--shadow-sm); margin-bottom:18px;
  overflow-x:auto; scrollbar-width:none;
}
.tabs-modern::-webkit-scrollbar { display:none; }
.tab-m {
  position:relative; flex:1 1 0; min-width:90px;
  display:flex; align-items:center; justify-content:center; gap:6px;
  padding:9px 14px; border-radius:var(--r-pill); border:none; background:transparent;
  color:var(--text2); font-size:13.5px; font-weight:600; cursor:pointer; white-space:nowrap;
  transition: color .15s, background .15s;
}
.tab-m .tab-m-ico { font-size:14px; opacity:.85; }
.tab-m:hover:not(.active) { background:rgba(0,64,237,.06); color:var(--primary); }
.tab-m.active {
  background:rgba(0,64,237,.10); color:var(--primary);
  box-shadow:inset 0 -3px 0 0 var(--primary);
}
.tab-m.active .tab-m-ico { opacity:1; }

/* 人员明细 Tab 头部：三段式（标题+模式 / 状态 / 操作） */
#tab-detail .emp-head-row {
  display:grid; grid-template-columns:1fr auto 1fr; gap:16px; align-items:center;
  padding:14px 18px; margin-bottom:14px;
  background:var(--glass-bg); border:1px solid var(--glass-border-color);
  border-radius:var(--r-lg); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur);
  box-shadow:var(--shadow-sm);
}
#tab-detail .emp-info-block { display:flex; align-items:center; gap:14px; min-width:0; }
#tab-detail .emp-info-title { font-size:18px; font-weight:800; letter-spacing:0; }
#tab-detail .emp-mode-toggle { padding:3px; background:rgba(255,255,255,.55); border:1px solid var(--glass-border-color); border-radius:var(--r-pill); display:inline-flex; gap:2px; }
#tab-detail .emp-mode-toggle .mode-btn {
  padding:5px 12px; border-radius:var(--r-pill); border:none; background:transparent;
  font-size:12.5px; font-weight:600; color:var(--text2); cursor:pointer;
}
#tab-detail .emp-mode-toggle .mode-btn.on { background:var(--primary-grad); color:#fff; box-shadow:var(--shadow-sm); }
#tab-detail .emp-head-actions { display:flex; gap:8px; justify-content:flex-end; flex-wrap:wrap; }

/* KPI 横条（替换原 emp-status-row 的扁平样式） */
#tab-detail .emp-status-row {
  display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px;
  padding:12px 18px; margin-bottom:14px;
  background:var(--glass-bg); border:1px solid var(--glass-border-color);
  border-radius:var(--r-lg); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur);
  box-shadow:var(--shadow-sm);
}
#tab-detail .emp-cur-person { font-size:13px; color:var(--text2); grid-column:1/-1; padding-bottom:8px; border-bottom:1px dashed var(--border); margin-bottom:2px; }
#tab-detail .emp-cur-person b { color:var(--ink,#1f2733); font-weight:800; font-size:14px; margin-left:4px; }
#tab-detail .emp-cal-summary { display:contents; }
#tab-detail .emp-cal-summary .cchip {
  display:flex; flex-direction:column; gap:4px; padding:8px 12px; border-radius:var(--r-md);
  background:rgba(255,255,255,.5); border:1px solid rgba(255,255,255,.7);
}
#tab-detail .emp-cal-summary .cchip .l { font-size:11.5px; color:var(--text2); font-weight:600; }
#tab-detail .emp-cal-summary .cchip .v { font-size:18px; font-weight:800; letter-spacing:0; font-variant-numeric:tabular-nums; color:var(--ink,#1f2733); }
#tab-detail .emp-cal-summary .cchip.warn { border-color:rgba(239,68,68,.4); background:rgba(239,68,68,.06); }
#tab-detail .emp-cal-summary .cchip.warn .v { color:#ef4444; }
#tab-detail .emp-cal-summary .cchip.active { background:rgba(0,64,237,.10); border-color:var(--primary); }

/* 月历格子 v2：信息层级更鲜明 */
#tab-detail .emp-cal-head {
  display:grid; grid-template-columns:repeat(7,1fr); gap:6px;
  padding:8px 6px; margin-bottom:4px;
  font-size:12px; font-weight:700; color:var(--text2);
}
#tab-detail .emp-cal-head > div { text-align:center; padding:4px 0; }
#tab-detail .emp-cal-row { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; }
/* 筛选态：仅显示匹配日，流式自适应列，不再铺满整月 */
#tab-detail .emp-cal-row.filtered { grid-template-columns:repeat(auto-fill, minmax(168px, 1fr)); gap:8px; align-items:start; }
#tab-detail .emp-cal-cell {
  position:relative; min-height:120px; padding:8px;
  border-radius:var(--r-md);
  background:var(--glass-bg); border:1px solid var(--glass-border-color);
  box-shadow:var(--shadow-sm); cursor:pointer;
  transition: transform .12s, box-shadow .12s;
}
#tab-detail .emp-cal-cell:hover { transform:translateY(-2px); box-shadow:var(--shadow-md); }
#tab-detail .emp-cal-cell .ec-head { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:6px; }
#tab-detail .emp-cal-cell .ec-date { display:flex; align-items:baseline; gap:3px; }
#tab-detail .emp-cal-cell .ec-date .dn { font-size:16px; font-weight:800; color:var(--ink,#1f2733); letter-spacing:0; font-variant-numeric:tabular-nums; }
#tab-detail .emp-cal-cell .ec-date .dw { font-size:10.5px; color:var(--text2); font-weight:600; }
#tab-detail .emp-cal-cell .ec-ignore-dot { font-size:11px; color:var(--green); margin-left:3px; }
#tab-detail .emp-cal-cell .ec-type {
  font-size:10px; font-weight:700; padding:2px 6px; border-radius:var(--r-sm);
  background:rgba(0,64,237,.10); color:var(--primary);
}
#tab-detail .emp-cal-cell .ec-ampm { display:flex; justify-content:space-between; gap:6px; padding:4px 0; border-top:1px dashed var(--border); }
#tab-detail .emp-cal-cell .ec-ampm:first-of-type { border-top:none; }
#tab-detail .emp-cal-cell .ec-side { flex:1; min-width:0; }
#tab-detail .emp-cal-cell .ec-lbl { font-size:10px; color:var(--text2); font-weight:600; display:block; margin-bottom:2px; }
#tab-detail .emp-cal-cell .ec-punch { font-size:10.5px; line-height:1.3; }
#tab-detail .emp-cal-cell .ec-punch .up { color:#10b981; font-weight:700; }
#tab-detail .emp-cal-cell .ec-punch .down { color:#ef4444; font-weight:700; }
#tab-detail .emp-cal-cell .ec-punch .miss { color:var(--text2); opacity:.7; }
#tab-detail .emp-cal-cell .ec-val { font-size:13px; font-weight:800; font-variant-numeric:tabular-nums; color:var(--ink,#1f2733); }
#tab-detail .emp-cal-cell .ec-val.abn { background:rgba(239,68,68,.14); color:#ef4444; padding:0 4px; border-radius:4px; }
#tab-detail .emp-cal-cell .ec-val.lv { color:#ef4444; }
#tab-detail .emp-cal-cell .ec-ot-single { display:block; font-size:10px; color:var(--primary); margin-top:2px; font-weight:600; }
#tab-detail .emp-cal-cell .ec-foot { margin-top:6px; padding-top:6px; border-top:1px solid var(--border); }
#tab-detail .emp-cal-cell .ec-foot-vals { display:flex; flex-wrap:wrap; gap:6px; font-size:10.5px; color:var(--text2); font-weight:600; }
#tab-detail .emp-cal-cell .ec-foot-vals .ot { color:var(--primary); font-weight:700; }
#tab-detail .emp-cal-cell .ec-foot-vals .lv { color:#ef4444; font-weight:700; }
/* 异常/请假/加班日色边框 */
#tab-detail .emp-cal-cell.cell-abn { border-color:rgba(239,68,68,.55); background:rgba(239,68,68,.04); }
#tab-detail .emp-cal-cell.cell-abn::after { content:"⚠"; position:absolute; top:4px; right:4px; font-size:10px; color:#ef4444; }
#tab-detail .emp-cal-cell.cell-leave { border-color:rgba(255,122,24,.55); }
#tab-detail .emp-cal-cell.cell-ot { box-shadow:var(--shadow-sm), inset 0 -3px 0 0 var(--primary); }
#tab-detail .emp-cal-cell.cell-confirmed { border-color:rgba(4,120,87,.52); box-shadow:var(--shadow-sm), inset 0 -3px 0 0 rgba(4,120,87,.70); }
#tab-detail .emp-cal-cell.cell-ignored { opacity:.6; }
#tab-detail .emp-cal-cell.empty { background:transparent; border:none; box-shadow:none; min-height:120px; }
#tab-detail .emp-cal-cell.ghost { background:rgba(0,0,0,.02); border:1px dashed var(--border); opacity:.6; }
/* 日类型底色微调 */
#tab-detail .emp-cal-cell.dtype-workday { background:var(--glass-bg); }
#tab-detail .emp-cal-cell.dtype-saturday { background:rgba(16,185,129,.05); }
#tab-detail .emp-cal-cell.dtype-weekend { background:rgba(100,116,139,.06); }
#tab-detail .emp-cal-cell.dtype-holiday_3x, #tab-detail .emp-cal-cell.dtype-holiday_2x { background:rgba(239,68,68,.05); }

/* 人员 chips 视觉强化 */
#tab-detail .emp-cal-chips-scroll { overflow-x:auto; scrollbar-width:none; padding:2px; }
#tab-detail .emp-cal-chips-scroll::-webkit-scrollbar { display:none; }
#tab-detail .emp-cal-chips { display:flex; gap:6px; flex-wrap:wrap; }
#tab-detail .emp-chip {
  padding:5px 12px; border-radius:var(--r-pill);
  background:rgba(255,255,255,.55); border:1px solid var(--glass-border-color);
  font-size:12.5px; font-weight:600; color:var(--text2); cursor:pointer;
  transition: background .12s, color .12s, transform .12s;
  position:relative;
}
#tab-detail .emp-chip:hover { transform:translateY(-1px); }
#tab-detail .emp-chip.on { background:var(--primary-grad); color:#fff; box-shadow:var(--shadow-sm); border-color:transparent; }
#tab-detail .emp-chip.reviewed::after { content:"✓"; position:absolute; top:-4px; right:-4px; width:14px; height:14px; border-radius:50%; background:var(--green); color:#fff; font-size:9px; display:grid; place-items:center; box-shadow:var(--shadow-sm); }

/* 月度汇总表：固定表头 + 强玻璃容器 */
#tab-summary .tbl-wrap { max-height:calc(100vh - 320px); overflow:auto; box-shadow:var(--shadow-md); border-radius:var(--r-md); }
#tab-summary table thead th { position:sticky; top:0; z-index:2; background:var(--glass-bg-strong); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur); box-shadow:inset 0 -1px 0 var(--border); }
#tab-summary .name-link { cursor:pointer; padding:2px 6px; border-radius:var(--r-sm); transition:background .12s; }
#tab-summary .name-link:hover { background:rgba(0,64,237,.10); }
/* 合计行固定底部：滚动只在内部人员行发生（sticky 作用于 td，保持原 border-collapse 不变以免破坏边框） */
#tab-summary tfoot td {
  position:sticky; bottom:0; z-index:3;
  background:var(--glass-bg-strong);
  backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur);
  font-weight:800; border-top:2px solid var(--primary);
  box-shadow:0 -6px 16px rgba(28,58,120,.10);
}
#tab-summary tfoot td:first-child { border-bottom-left-radius:var(--r-md); }
#tab-summary tfoot td:last-child { border-bottom-right-radius:var(--r-md); }
#tab-summary .num.neg { color:#ef4444; font-weight:700; }

/* 工作日历：强化色块 + 顶 KPI */
#tab-calendar .wc-actions {
  display:flex; flex-direction:column; gap:8px;
  margin:6px 0 10px;
  padding:10px 12px;
  background:rgba(0,64,237,.045);
  border:1px solid rgba(0,64,237,.14);
  border-radius:var(--r-md);
}
#tab-calendar .wc-source-tip {
  font-size:12.5px; line-height:1.55; color:var(--text2);
}
#tab-calendar .wc-source-tip b { color:var(--text); }
#tab-calendar .wc-modebar { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
#tab-calendar .wc-mode-btn {
  height:32px; padding:0 12px; border-radius:8px;
  border:1px solid var(--border); background:rgba(255,255,255,.55);
  color:var(--text2); font-size:12.5px; font-weight:700; cursor:pointer;
}
#tab-calendar .wc-mode-btn.on {
  color:#fff; background:var(--primary); border-color:var(--primary);
  box-shadow:0 4px 10px rgba(0,64,237,.18);
}
#tab-calendar .wc-mode-btn:disabled,
#tab-calendar .wc-action-btn:disabled { opacity:.5; cursor:not-allowed; }
#tab-calendar .wc-action-btn {
  width:auto; margin:0; min-height:32px; padding:0 12px; font-size:12.5px;
}
#tab-calendar .wc-lock-tip {
  font-size:12px; color:#b45309;
  padding:7px 9px; border-radius:8px;
  background:rgba(245,158,11,.10); border:1px solid rgba(245,158,11,.24);
}
#tab-calendar .wc-summary {
  display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px;
  margin:10px 0 16px; padding:12px 16px;
  background:var(--glass-bg); border:1px solid var(--glass-border-color);
  border-radius:var(--r-lg); box-shadow:var(--shadow-sm);
}
#tab-calendar .wc-summary b { font-size:20px; font-weight:800; letter-spacing:0; margin:0 4px; font-variant-numeric:tabular-nums; }
#tab-calendar .wc-legend { display:flex; gap:14px; font-size:12.5px; color:var(--text2); }
#tab-calendar .wc-legend .lg { display:inline-flex; align-items:center; gap:6px; font-weight:600; }
#tab-calendar .wc-legend .dot { width:12px; height:12px; border-radius:3px; }
#tab-calendar .wc-legend .dot.w { background:rgba(0,64,237,.18); border:1px solid rgba(0,64,237,.4); }
#tab-calendar .wc-legend .dot.s { background:rgba(16,185,129,.18); border:1px solid rgba(16,185,129,.4); }
#tab-calendar .wc-legend .dot.r { background:rgba(100,116,139,.18); border:1px solid rgba(100,116,139,.4); }
#tab-calendar .wc-legend .dot.h { background:rgba(239,68,68,.18); border:1px solid rgba(239,68,68,.4); }
#tab-calendar .wc-cell {
  position:relative; min-height:78px; padding:8px 10px;
  border-radius:var(--r-md); border:1px solid var(--glass-border-color);
  background:var(--glass-bg); box-shadow:var(--shadow-sm);
  display:flex; flex-direction:column; gap:4px; transition:transform .12s;
  cursor:pointer; overflow:hidden;
}
#tab-calendar .wc-cell:hover { transform:translateY(-2px); box-shadow:var(--shadow-md); }
#tab-calendar .wc-cell.is-locked { cursor:not-allowed; }
#tab-calendar .wc-cell.is-locked:hover { transform:none; box-shadow:var(--shadow-sm); }
#tab-calendar .wc-cell .d { font-size:17px; font-weight:800; letter-spacing:0; font-variant-numeric:tabular-nums; }
#tab-calendar .wc-cell .t { font-size:10.5px; font-weight:700; padding:2px 7px; border-radius:var(--r-sm); display:inline-block; align-self:flex-start; }
#tab-calendar .wc-cell .wc-edit-tip {
  position:absolute; right:7px; bottom:6px;
  font-size:10px; font-weight:700; color:var(--text2);
  opacity:0; transform:translateY(3px); transition:opacity .12s, transform .12s;
}
#tab-calendar .wc-cell.is-editable:hover .wc-edit-tip { opacity:.9; transform:translateY(0); }
#tab-calendar .wc-cell.dtype-workday .t { background:rgba(0,64,237,.12); color:var(--primary); }
#tab-calendar .wc-cell.dtype-saturday .t { background:rgba(16,185,129,.14); color:#059669; }
#tab-calendar .wc-cell.dtype-weekend .t { background:rgba(100,116,139,.16); color:#64748b; }
#tab-calendar .wc-cell.dtype-holiday_3x .t, #tab-calendar .wc-cell.dtype-holiday_2x .t { background:rgba(239,68,68,.14); color:#dc2626; }
#tab-calendar .wc-cell.dtype-saturday { background:rgba(16,185,129,.05); }
#tab-calendar .wc-cell.dtype-weekend { background:rgba(100,116,139,.06); }
#tab-calendar .wc-cell.dtype-holiday_3x, #tab-calendar .wc-cell.dtype-holiday_2x { background:rgba(239,68,68,.06); }
#tab-calendar .wc-cell.empty { background:transparent; border:none; box-shadow:none; min-height:78px; }
#tab-calendar .wc-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; }
#tab-calendar .wc-head { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; margin-bottom:6px; font-size:12px; font-weight:700; color:var(--text2); }
#tab-calendar .wc-head > div { text-align:center; padding:4px 0; }

/* 图表 Tab：强容器 + 副标题 */
#tab-chart .chart-box {
  background:var(--glass-bg); border:1px solid var(--glass-border-color);
  border-radius:var(--r-lg); padding:18px; box-shadow:var(--shadow-md);
  backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur);
}
#tab-chart .chart-box h3 {
  font-size:15px; font-weight:800; margin:0 0 4px; letter-spacing:0;
  display:flex; align-items:center; gap:8px;
}
#tab-chart .chart-box h3::before { content:""; display:inline-block; width:4px; height:14px; background:var(--primary-grad); border-radius:2px; }
#tab-chart .chart-box .chart-sub { font-size:12px; color:var(--text2); margin-bottom:12px; }

/* 打卡记录 Tab：紧凑紧凑 + 强调 */
#tab-punch .tbl-wrap { box-shadow:var(--shadow-md); border-radius:var(--r-md); }
#tab-punch table thead th { position:sticky; top:0; z-index:2; background:var(--glass-bg-strong); backdrop-filter:var(--glass-blur); }
#tab-punch table tbody tr:hover { background:rgba(0,64,237,.04); }

/* 响应式 */
@media (max-width: 1280px) {
  .detail-header-grid { grid-template-columns:1fr; gap:14px; }
  .dhg-kpis { grid-template-columns:repeat(2,1fr); }
}
@media (max-width: 880px) {
  .dhg-kpis { grid-template-columns:repeat(2,1fr); }
  #tab-detail .emp-status-row { grid-template-columns:repeat(2,1fr); }
  #tab-calendar .wc-summary { grid-template-columns:repeat(2,1fr); }
}

/* 暗色微调 */
[data-theme="dark"] .detail-header-grid { background:rgba(28,36,53,.55); border-color:rgba(255,255,255,.1); }
[data-theme="dark"] .kpi-card { background:rgba(28,36,53,.6); border-color:rgba(255,255,255,.1); box-shadow:0 1px 0 rgba(255,255,255,.04) inset, var(--shadow-sm); }
[data-theme="dark"] .kpi-card .kpi-v { color:#eef2f8; }
[data-theme="dark"] .tabs-modern { background:rgba(28,36,53,.55); border-color:rgba(255,255,255,.1); }
[data-theme="dark"] #tab-detail .emp-status-row { background:rgba(28,36,53,.55); border-color:rgba(255,255,255,.1); }
[data-theme="dark"] #tab-detail .emp-cal-summary .cchip { background:rgba(255,255,255,.05); border-color:rgba(255,255,255,.1); }
[data-theme="dark"] #tab-detail .emp-cal-summary .cchip .v { color:#eef2f8; }
[data-theme="dark"] #tab-detail .emp-cal-cell { background:rgba(28,36,53,.55); border-color:rgba(255,255,255,.1); }
[data-theme="dark"] #tab-detail .emp-cal-cell .ec-val { color:#eef2f8; }
[data-theme="dark"] #tab-detail .emp-cal-cell.cell-confirmed { border-color:rgba(110,231,183,.55); box-shadow:var(--shadow-sm), inset 0 -3px 0 0 rgba(110,231,183,.65); }
[data-theme="dark"] #tab-calendar .wc-actions { background:rgba(77,124,255,.10); border-color:rgba(77,124,255,.22); }
[data-theme="dark"] #tab-calendar .wc-mode-btn { background:rgba(255,255,255,.06); border-color:rgba(255,255,255,.12); color:#cbd5e1; }
[data-theme="dark"] #tab-calendar .wc-mode-btn.on { background:var(--primary); color:#fff; border-color:var(--primary); }
[data-theme="dark"] #tab-calendar .wc-lock-tip { color:#fcd34d; background:rgba(245,158,11,.12); border-color:rgba(245,158,11,.30); }
[data-theme="dark"] #tab-calendar .wc-cell { background:rgba(28,36,53,.55); border-color:rgba(255,255,255,.1); }
[data-theme="dark"] #tab-summary .tbl-wrap { box-shadow:0 4px 16px rgba(0,0,0,.3); }
[data-theme="dark"] #tab-summary tfoot td { background:rgba(77,124,255,.15); border-top-color:var(--primary); }
[data-theme="dark"] #tab-chart .chart-box { background:rgba(28,36,53,.55); border-color:rgba(255,255,255,.1); }
[data-theme="dark"] #tab-detail .emp-head-row { background:rgba(28,36,53,.55); border-color:rgba(255,255,255,.1); }
[data-theme="dark"] #tab-punch table thead th { background:rgba(34,44,64,.78); }

/* ---- 22. 源文件信息卡 + 原始数据预览（打卡记录源文件 Tab） ---- */
.sf-card {
  display:flex; align-items:flex-start; gap:14px;
  padding:16px 18px; margin-bottom:4px;
  background:var(--glass-bg); border:1px solid var(--glass-border-color);
  border-radius:var(--r-lg); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur);
  box-shadow:var(--shadow-sm); position:relative; overflow:hidden;
}
.sf-card::before { content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--primary-grad); }
.sf-card .sf-ico {
  width:44px; height:44px; border-radius:var(--r-md); flex:none;
  display:grid; place-items:center; font-size:22px;
  background:rgba(0,64,237,.10); color:var(--primary);
}
.sf-card .sf-body { min-width:0; flex:1; }
.sf-card .sf-name {
  font-size:16px; font-weight:800; letter-spacing:0; color:var(--ink,#1f2733);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.sf-card .sf-sub { font-size:12px; color:var(--text2); margin-top:3px; }
.sf-card .sf-meta { font-size:12.5px; color:var(--text2); margin-top:6px; line-height:1.5; }
.sf-card .sf-metas {
  display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:10px; margin-top:12px;
}
.sf-card .sf-meta-item {
  padding:8px 10px; border-radius:var(--r-md);
  background:rgba(255,255,255,.5); border:1px solid rgba(255,255,255,.7);
  min-width:0;
}
.sf-card .sf-ml { display:block; font-size:11px; color:var(--text2); font-weight:600; margin-bottom:3px; }
.sf-card .sf-mv { display:block; font-size:14px; font-weight:800; color:var(--ink,#1f2733); font-variant-numeric:tabular-nums; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* 原始数据预览（折叠） */
.sf-raw { margin-top:12px; }
.sf-raw > summary {
  cursor:pointer; padding:10px 14px; border-radius:var(--r-md);
  background:rgba(0,64,237,.06); border:1px solid rgba(0,64,237,.18);
  font-size:13px; font-weight:700; color:var(--primary); list-style:none;
  display:flex; align-items:center; gap:8px;
  transition:background .15s;
}
.sf-raw > summary::-webkit-details-marker { display:none; }
.sf-raw > summary::before { content:"▸"; font-size:11px; transition:transform .15s; }
.sf-raw[open] > summary::before { transform:rotate(90deg); }
.sf-raw > summary:hover { background:rgba(0,64,237,.10); }
.sf-raw-scroll {
  margin-top:10px; max-height:340px; overflow:auto;
  border:1px solid var(--glass-border-color); border-radius:var(--r-md);
  background:var(--glass-bg); box-shadow:var(--shadow-sm);
}
.sf-raw-tbl { width:100%; border-collapse:collapse; font-size:12px; }
.sf-raw-tbl th {
  position:sticky; top:0; z-index:2; padding:7px 10px; text-align:left; white-space:nowrap;
  background:var(--glass-bg-strong); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur);
  font-size:11px; font-weight:700; color:var(--text2); border-bottom:1px solid var(--border);
}
.sf-raw-tbl td {
  padding:6px 10px; border-bottom:1px solid var(--border); white-space:nowrap;
  color:var(--ink,#1f2733); font-variant-numeric:tabular-nums;
}
.sf-raw-tbl tbody tr:hover td { background:rgba(0,64,237,.04); }
.sf-raw-tbl .sf-rc { color:var(--text2); font-size:11px; text-align:right; background:rgba(0,0,0,.02); position:sticky; left:0; z-index:1; }
.sf-raw-tbl tr.sf-row-head td { font-weight:800; background:rgba(0,64,237,.07); color:var(--primary); }
.sf-raw-tbl td.sf-hd { font-weight:700; }
.sf-raw-tip { margin-top:8px; font-size:11.5px; color:var(--text2); line-height:1.6; }

@media (max-width:1100px) {
  .sf-card .sf-metas { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media (max-width:640px) {
  .sf-card .sf-metas { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

/* 暗色适配 */
[data-theme="dark"] .sf-card { background:rgba(28,36,53,.55); border-color:rgba(255,255,255,.1); }
[data-theme="dark"] .sf-card .sf-name { color:#eef2f8; }
[data-theme="dark"] .sf-card .sf-meta-item { background:rgba(255,255,255,.05); border-color:rgba(255,255,255,.1); }
[data-theme="dark"] .sf-card .sf-mv { color:#eef2f8; }
[data-theme="dark"] .sf-raw > summary { background:rgba(77,124,255,.12); border-color:rgba(77,124,255,.3); color:var(--primary); }
[data-theme="dark"] .sf-raw-tbl td { color:#eef2f8; border-bottom-color:rgba(255,255,255,.08); }
[data-theme="dark"] .sf-raw-tbl .sf-rc { background:rgba(255,255,255,.04); }
[data-theme="dark"] .sf-raw-tbl tr.sf-row-head td { background:rgba(77,124,255,.15); color:var(--primary); }
[data-theme="dark"] .sf-raw-scroll { border-color:rgba(255,255,255,.1); }

/* ---- 23. 人员明细 Tab 两列布局（左：人员信息栏 / 右：工具条三段 + 内容） ---- */
/* 2026-09-08：应用壳为固定高度（页面不滚动），面板高度=视口剩余空间；
   两列改为 height:100% 填满面板（原 100vh-84px 硬算会导致侧栏底部被壳裁切、最后一人滚不到） */
#tab-detail .ed-two-col { display:grid; grid-template-columns:240px minmax(0,1fr); grid-template-rows:minmax(0,1fr); gap:16px; align-items:stretch; height:100%; min-height:0; }

/* ===== 第一列：人员信息栏 ===== */
#tab-detail .ed-side {
  position:sticky; top:0; height:100%; max-height:none; min-height:0;
  display:flex; flex-direction:column;
  padding:14px; border-radius:var(--r-lg);
  background:var(--glass-bg); border:1px solid var(--glass-border-color);
  box-shadow:var(--shadow-sm); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur);
}
#tab-detail .ed-side-head { flex:0 0 auto; display:flex; justify-content:space-between; align-items:center; margin-bottom:12px; gap:8px; }
#tab-detail .ed-side-head .emp-info-title { font-size:16px; font-weight:800; margin:0; letter-spacing:0; }
#tab-detail .ed-side-count { font-size:11.5px; color:var(--text2); font-weight:600; white-space:nowrap; }
#tab-detail .ed-side-count b { color:var(--primary); font-size:14px; font-weight:800; }
#tab-detail .ed-side .emp-cal-chips-scroll { flex:1 1 auto; min-height:0; overflow-y:auto; padding-right:4px; padding-bottom:12px; scrollbar-width:thin; scrollbar-color:rgba(0,64,237,.4) transparent; }
/* 左列人员清单：覆盖上方「隐藏滚动条」全局规则，显示可拖拽滚动条 */
#tab-detail .ed-side .emp-cal-chips-scroll::-webkit-scrollbar { display:block; width:8px; }
#tab-detail .ed-side .emp-cal-chips-scroll::-webkit-scrollbar-track { background:transparent; }
#tab-detail .ed-side .emp-cal-chips-scroll::-webkit-scrollbar-thumb { background:rgba(0,64,237,.35); border-radius:4px; }
#tab-detail .ed-side .emp-cal-chips-scroll::-webkit-scrollbar-thumb:hover { background:rgba(0,64,237,.55); }

/* 竖排人员卡片（姓名 + 状态标签同一行，不换行） */
#tab-detail .emp-cal-chips { flex-direction:column; gap:6px; flex-wrap:nowrap; }
#tab-detail .emp-chip {
  display:flex; flex-direction:column; gap:7px; align-items:stretch; text-align:left; width:100%;
  padding:10px 12px 10px 14px; border-radius:var(--r-md);
  background:rgba(255,255,255,.55); border:1px solid var(--glass-border-color);
  border-left:3px solid rgba(0,64,237,.22);
  font-size:13px; font-weight:600; color:var(--text2); cursor:pointer;
  transition:background .15s, border-color .15s, transform .12s, box-shadow .15s;
}
#tab-detail .emp-chip:hover { transform:translateY(-1px); border-color:var(--primary); border-left-color:var(--primary); box-shadow:var(--shadow-sm); }
#tab-detail .emp-chip.on { background:var(--primary-grad); color:#fff; border-color:transparent; border-left-color:rgba(255,255,255,.7); box-shadow:var(--shadow-md); }
/* 姓名 + 状态标签分两行：姓名在上、标签在下，避免长姓名与多标签挤在一行 */
#tab-detail .emp-chip .ec-main { display:flex; flex-direction:column; align-items:stretch; gap:7px; min-width:0; }
#tab-detail .emp-chip .ec-name { font-size:14px; font-weight:700; color:var(--ink,#1f2733); display:flex; align-items:center; gap:5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
#tab-detail .emp-chip.on .ec-name { color:#fff; }
#tab-detail .emp-chip .ec-pills { display:flex; gap:6px; flex-wrap:wrap; align-items:center; min-width:0; }
#tab-detail .emp-chip .ec-pill { font-style:normal; font-size:11px; font-weight:700; padding:3px 9px; border-radius:999px; white-space:nowrap; flex:none; border:1px solid transparent; letter-spacing:.2px; }
#tab-detail .emp-chip .ec-pill.s-abn { background:rgba(239,68,68,.14); color:#ef4444; border-color:rgba(239,68,68,.38); }
#tab-detail .emp-chip .ec-pill.s-lv  { background:rgba(255,122,24,.14); color:#ff7a18; border-color:rgba(255,122,24,.38); }
#tab-detail .emp-chip .ec-pill.s-ot  { background:rgba(0,64,237,.10); color:var(--primary); border-color:rgba(0,64,237,.28); }
#tab-detail .emp-chip .ec-pill.s-ok  { background:rgba(16,185,129,.14); color:#059669; border-color:rgba(16,185,129,.38); }
/* 选中态：状态标签改透明底 + 白字 + 白描边，明显区别于实心蓝底纹 */
#tab-detail .emp-chip.on .ec-pill { background:transparent; color:#fff; border-color:rgba(255,255,255,.65); }
#tab-detail .emp-chip .rv-badge { display:none; }

/* 人员清单快速切换：全部 / 已审 / 未审 */
#tab-detail .ed-side-filter {
  flex:0 0 auto;
  display:flex; gap:4px; margin-bottom:12px; padding:3px;
  background:rgba(255,255,255,.55); border:1px solid var(--glass-border-color); border-radius:var(--r-pill);
}
#tab-detail .esf-btn {
  flex:1; min-width:0; padding:6px 8px; border-radius:var(--r-pill); border:none; background:transparent;
  font-size:11.5px; font-weight:600; color:var(--text2); cursor:pointer; white-space:nowrap;
  display:flex; align-items:center; justify-content:center; gap:4px;
  transition:background .15s, color .15s, box-shadow .15s;
}
#tab-detail .esf-btn b { font-size:12.5px; font-weight:800; font-variant-numeric:tabular-nums; }
#tab-detail .esf-btn:hover { background:rgba(0,64,237,.08); color:var(--primary); }
#tab-detail .esf-btn.on { background:var(--primary-grad); color:#fff; box-shadow:var(--shadow-sm); }

/* ===== 第二列：工具条（四段：当前人员 | 视图模式 | 数据状态 | 操作）+ 内容区 ===== */
#tab-detail .ed-toolbar {
  /* 数据状态列 1fr 吸收剩余空间，避免右侧大片留白 */
  display:grid; grid-template-columns:auto auto minmax(0,1fr) auto; gap:16px; align-items:center;
  padding:12px 16px; margin-bottom:14px; border-radius:var(--r-lg);
  background:var(--glass-bg); border:1px solid var(--glass-border-color);
  box-shadow:var(--shadow-sm); backdrop-filter:var(--glass-blur); -webkit-backdrop-filter:var(--glass-blur);
}
/* 段：标签 + 内容纵向排列；段内 gap 7px；四段内容区视觉高度统一 ≈34px（align-items:center 对齐基线） */
#tab-detail .ed-seg { display:flex; flex-direction:column; gap:7px; min-width:0; position:relative; }
#tab-detail .ed-seg + .ed-seg { padding-left:16px; }
/* 分段渐变竖线：改主色调渐变（原用 var(--border) 客户反馈看不清），两端渐隐更精致 */
#tab-detail .ed-seg + .ed-seg::before {
  content:""; position:absolute; left:0; top:1px; bottom:1px; width:1px;
  background:linear-gradient(180deg, transparent 0%, rgba(0,64,237,.30) 20%, rgba(0,64,237,.30) 80%, transparent 100%);
}
/* 段标签：小色条 + 字距 */
#tab-detail .ed-seg-lbl {
  display:flex; align-items:center; gap:5px;
  font-size:10.5px; font-weight:800; color:var(--text2); letter-spacing:.6px;
}
#tab-detail .ed-seg-lbl::before { content:""; width:3px; height:10px; border-radius:2px; background:var(--primary-grad); }
/* 四段统一左对齐（原操作段 flex-end 靠右，客户要求与其余三段一致） */
#tab-detail .ed-seg-acts { align-items:flex-start; }

/* ① 当前人员（人员列表滚动后看不出当前是谁，工具条首段常驻显示） */
#tab-detail .ed-seg-person .ed-person {
  display:flex; flex-direction:column; align-items:flex-start; gap:3px; min-width:0;
}
#tab-detail .ed-seg-person .pn-name {
  font-size:16px; font-weight:800; color:var(--ink,#1f2733); line-height:1.2;
  max-width:180px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
/* 审批状态徽标（姓名下方） */
#tab-detail .ed-seg-person .pn-review {
  font-size:11.5px; font-weight:700; line-height:1.25; white-space:nowrap;
  padding:1px 9px; border-radius:var(--r-pill);
}
#tab-detail .ed-seg-person .pn-review.done {
  color:#0a7d3c; background:rgba(16,158,75,.12); border:1px solid rgba(16,158,75,.32);
}
#tab-detail .ed-seg-person .pn-review.undone {
  color:#b45309; background:rgba(245,158,11,.12); border:1px solid rgba(245,158,11,.34);
}
#tab-detail .ed-seg-person .pn-dept {
  font-size:11.5px; font-weight:600; color:var(--text2); white-space:nowrap;
  padding:2px 8px; border-radius:var(--r-pill);
  background:rgba(0,64,237,.08); border:1px solid rgba(0,64,237,.18);
}

/* ② 视图模式切换 */
#tab-detail .ed-seg-mode .emp-mode-toggle {
  display:inline-flex; gap:2px; padding:3px; border-radius:var(--r-pill);
  background:rgba(255,255,255,.55); border:1px solid var(--glass-border-color);
}
#tab-detail .ed-seg-mode .mode-btn {
  padding:6px 14px; border-radius:var(--r-pill); border:none; background:transparent;
  font-size:12.5px; font-weight:600; line-height:1.2; color:var(--text2); cursor:pointer; white-space:nowrap;
  transition:background .15s, color .15s;
}
#tab-detail .ed-seg-mode .mode-btn.on { background:var(--primary-grad); color:#fff; box-shadow:var(--shadow-sm); }

/* ③ 数据状态 chips（覆盖第21节的 display:contents） */
#tab-detail .ed-seg-filter .emp-cal-summary { display:flex; gap:8px; flex-wrap:wrap; align-items:stretch; }
#tab-detail .ed-seg-filter .emp-cal-summary .cchip {
  --cc:#0040ed;
  /* 整体压矮：padding 7px→4px、数值 17px→15px，使 chip 高度 ≈40px 与操作按钮视觉齐平 */
  display:flex; flex-direction:column; gap:2px; min-width:98px; padding:4px 13px; border-radius:var(--r-md);
  background:rgba(255,255,255,.5); border:1px solid var(--glass-border-color); cursor:pointer;
  position:relative; overflow:hidden;
  transition:background .15s, border-color .15s, transform .12s, box-shadow .15s;
}
#tab-detail .ed-seg-filter .emp-cal-summary .cchip::before {
  content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--cc);
}
#tab-detail .ed-seg-filter .emp-cal-summary .cchip:hover { transform:translateY(-1px); box-shadow:var(--shadow-sm); }
#tab-detail .ed-seg-filter .emp-cal-summary .cchip .l { font-size:11px; line-height:1.15; color:var(--text2); font-weight:600; }
#tab-detail .ed-seg-filter .emp-cal-summary .cchip .v {
  font-size:15px; line-height:1.15; font-weight:800; color:var(--cc); font-variant-numeric:tabular-nums;
  letter-spacing:0; display:flex; align-items:baseline; gap:2px;
}
#tab-detail .ed-seg-filter .emp-cal-summary .cchip .v i { font-style:normal; font-size:11px; font-weight:600; opacity:.75; }
/* 数据类型三色语义：异常打卡=橙 / 请假=红 / 正常=绿；与列表左侧细条保持一致 */
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.all { --cc:#0040ed; background:rgba(0,64,237,.06); border-color:rgba(0,64,237,.25); }
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.abn { --cc:#dc2626; background:rgba(220,38,38,.08); border-color:rgba(220,38,38,.30); }
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.lv  { --cc:#f97316; background:rgba(249,115,22,.08); border-color:rgba(249,115,22,.30); }
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.normal { --cc:#10b981; background:rgba(16,185,129,.08); border-color:rgba(16,185,129,.30); }
.emp-full-summary .cchip.all { --cc:#0040ed; background:rgba(0,64,237,.06); border-color:rgba(0,64,237,.25); }
.emp-full-summary .cchip.abn { --cc:#dc2626; background:rgba(220,38,38,.08); border-color:rgba(220,38,38,.30); }
.emp-full-summary .cchip.lv { --cc:#f97316; background:rgba(249,115,22,.08); border-color:rgba(249,115,22,.30); }
.emp-full-summary .cchip.normal { --cc:#10b981; background:rgba(16,185,129,.08); border-color:rgba(16,185,129,.30); }
/* 激活态：实心语义色 + 白字 */
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.active { background:var(--cc); border-color:var(--cc); box-shadow:var(--shadow-md); }
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.active .l,
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.active .v,
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.active .v i { color:#fff; }
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.active::before { display:none; }

/* ④ 操作按钮（左对齐，与其余三段一致） */
#tab-detail .ed-seg-acts .emp-head-actions { display:flex; gap:8px; flex-wrap:wrap; }

/* 内容区：列表模式最大高度 */
#tab-detail .emp-list-scroll { max-height:calc(100vh - 260px); overflow:auto; }
#tab-detail .emp-cal-scroll { max-height:calc(100vh - 260px); overflow:auto; }

/* 响应式 */
@media (max-width:1280px) {
  #tab-detail .ed-two-col { grid-template-columns:264px minmax(0,1fr); }
}
@media (max-width:1000px) {
  #tab-detail .ed-two-col { grid-template-columns:1fr; }
  #tab-detail .ed-side { position:static; max-height:60vh; }
  #tab-detail .ed-side .emp-cal-chips-scroll { max-height:none; }
  #tab-detail .ed-toolbar { grid-template-columns:1fr; gap:12px; }
  #tab-detail .ed-seg + .ed-seg { padding-left:0; border-top:1px dashed var(--border); padding-top:12px; }
  #tab-detail .ed-seg + .ed-seg::before { display:none; }
  #tab-detail .ed-seg-acts { align-items:flex-start; }
}

/* 暗色适配 */
[data-theme="dark"] #tab-detail .ed-side,
[data-theme="dark"] #tab-detail .ed-toolbar { background:rgba(28,36,53,.55); border-color:rgba(255,255,255,.1); }
/* 暗色：左列人员清单滚动条配色 */
[data-theme="dark"] #tab-detail .ed-side .emp-cal-chips-scroll { scrollbar-color:rgba(120,160,255,.5) transparent; }
[data-theme="dark"] #tab-detail .ed-side .emp-cal-chips-scroll::-webkit-scrollbar-thumb { background:rgba(120,160,255,.45); }
[data-theme="dark"] #tab-detail .ed-side .emp-cal-chips-scroll::-webkit-scrollbar-thumb:hover { background:rgba(120,160,255,.65); }
[data-theme="dark"] #tab-detail .emp-chip { background:rgba(255,255,255,.05); border-color:rgba(255,255,255,.1); }
[data-theme="dark"] #tab-detail .emp-chip .ec-name { color:#eef2f8; }
/* 暗色：分隔线改用更亮的蓝，避免在深色玻璃上看不清 */
[data-theme="dark"] #tab-detail .ed-seg + .ed-seg::before {
  background:linear-gradient(180deg, transparent 0%, rgba(120,160,255,.38) 20%, rgba(120,160,255,.38) 80%, transparent 100%);
}
/* 暗色：当前人员姓名 / 部门标签 */
[data-theme="dark"] #tab-detail .ed-seg-person .pn-name { color:#eef2f8; }
[data-theme="dark"] #tab-detail .ed-seg-person .pn-dept {
  background:rgba(120,160,255,.14); border-color:rgba(120,160,255,.28); color:var(--text2);
}
/* 暗色：审批状态徽标 */
[data-theme="dark"] #tab-detail .ed-seg-person .pn-review.done {
  color:#4ade80; background:rgba(16,158,75,.2); border-color:rgba(16,158,75,.42);
}
[data-theme="dark"] #tab-detail .ed-seg-person .pn-review.undone {
  color:#fbbf24; background:rgba(245,158,11,.18); border-color:rgba(245,158,11,.42);
}
[data-theme="dark"] #tab-detail .ed-seg-filter .emp-cal-summary .cchip { background:rgba(255,255,255,.05); border-color:rgba(255,255,255,.12); }
[data-theme="dark"] #tab-detail .ed-seg-filter .emp-cal-summary .cchip .v { color:#eef2f8; }
/* 暗色下保留三色语义（特异性高于上面通用规则） */
[data-theme="dark"] #tab-detail .ed-seg-filter .emp-cal-summary .cchip.all { background:rgba(0,64,237,.13); border-color:rgba(0,64,237,.32); }
[data-theme="dark"] #tab-detail .ed-seg-filter .emp-cal-summary .cchip.abn { background:rgba(220,38,38,.14); border-color:rgba(220,38,38,.38); }
[data-theme="dark"] #tab-detail .ed-seg-filter .emp-cal-summary .cchip.lv  { background:rgba(249,115,22,.14); border-color:rgba(249,115,22,.38); }
[data-theme="dark"] #tab-detail .ed-seg-filter .emp-cal-summary .cchip.normal { background:rgba(16,185,129,.13); border-color:rgba(16,185,129,.36); }
[data-theme="dark"] #tab-detail .ed-seg-filter .emp-cal-summary .cchip.all .v { color:#6f9bff; }
[data-theme="dark"] #tab-detail .ed-seg-filter .emp-cal-summary .cchip.abn .v { color:#f87171; }
[data-theme="dark"] #tab-detail .ed-seg-filter .emp-cal-summary .cchip.lv  .v { color:#fb923c; }
[data-theme="dark"] #tab-detail .ed-seg-filter .emp-cal-summary .cchip.normal .v { color:#34d399; }
/* 侧栏筛选器暗色 */
[data-theme="dark"] #tab-detail .ed-side-filter { background:rgba(255,255,255,.05); border-color:rgba(255,255,255,.12); }
[data-theme="dark"] #tab-detail .ed-seg-mode .emp-mode-toggle { background:rgba(255,255,255,.05); border-color:rgba(255,255,255,.12); }

/* ============================================================
 * 工作日历库重设计（2026-09-01，对齐列表模式视觉语言）
 * 轻着色 + 角标胶囊 + 今天标识 + hover 浮起；覆盖 pages.css 旧实色格
 * ============================================================ */
.page-calendar .cal-grid { gap: 8px; }
.cw-head { text-align: center; font-size: .72rem; font-weight: 700; color: var(--text2); padding: 4px 0; }
.cw-head.wkend { color: #b45309; }
[data-theme="dark"] .cw-head.wkend { color: #fcd34d; }
.page-calendar .cal-cell { border: 1px solid var(--border); border-radius: 10px; padding: 8px 6px 7px; text-align: center; cursor: pointer; user-select: none; position: relative; min-height: 58px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; background: #fff; line-height: 1.2; overflow: hidden; transition: all .12s ease; }
[data-theme="dark"] .page-calendar .cal-cell { background: #161b26; }
.page-calendar .cal-cell .cw-d { font-size: 1.05rem; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums; line-height: 1; }
.page-calendar .cal-cell .cw-wd { font-size: .62rem; color: var(--text2); }
.page-calendar .cal-cell .cw-tag { font-size: .62rem; font-weight: 700; padding: 1px 8px; border-radius: 999px; white-space: nowrap; }
.page-calendar .cal-cell .cw-hover { position: absolute; top: 4px; right: 6px; font-size: .72rem; color: var(--text2); opacity: 0; transition: opacity .12s; }
.page-calendar .cal-cell:hover { border-color: var(--primary); box-shadow: 0 2px 10px rgba(0,64,237,.14); transform: translateY(-1px); }
.page-calendar .cal-cell:hover .cw-hover { opacity: .9; }
.page-calendar .cal-cell.blank:hover { border-color: transparent; box-shadow: none; transform: none; }
/* 例外日：淡底 + 同色系角标（不再整格实色白字） */
.page-calendar .cal-cell.d-holiday3 { background: rgba(217,45,32,.07); border-color: rgba(217,45,32,.30); }
.page-calendar .cal-cell.d-holiday3 .cw-d { color: #b42318; }
.page-calendar .cal-cell.d-holiday3 .cw-tag { background: rgba(217,45,32,.14); color: #b42318; }
[data-theme="dark"] .page-calendar .cal-cell.d-holiday3 { background: rgba(217,45,32,.14); border-color: rgba(217,45,32,.40); }
[data-theme="dark"] .page-calendar .cal-cell.d-holiday3 .cw-d { color: #fca5a5; }
[data-theme="dark"] .page-calendar .cal-cell.d-holiday3 .cw-tag { background: rgba(217,45,32,.28); color: #fca5a5; }
.page-calendar .cal-cell.d-holiday2 { background: rgba(245,158,11,.08); border-color: rgba(245,158,11,.32); }
.page-calendar .cal-cell.d-holiday2 .cw-d { color: #b45309; }
.page-calendar .cal-cell.d-holiday2 .cw-tag { background: rgba(245,158,11,.16); color: #b45309; }
[data-theme="dark"] .page-calendar .cal-cell.d-holiday2 { background: rgba(245,158,11,.14); border-color: rgba(245,158,11,.40); }
[data-theme="dark"] .page-calendar .cal-cell.d-holiday2 .cw-d { color: #fcd34d; }
[data-theme="dark"] .page-calendar .cal-cell.d-holiday2 .cw-tag { background: rgba(245,158,11,.26); color: #fcd34d; }
.page-calendar .cal-cell.d-makeup { background: rgba(16,185,129,.07); border-color: rgba(16,185,129,.30); }
.page-calendar .cal-cell.d-makeup .cw-d { color: #047857; }
.page-calendar .cal-cell.d-makeup .cw-tag { background: rgba(16,185,129,.14); color: #047857; }
[data-theme="dark"] .page-calendar .cal-cell.d-makeup { background: rgba(16,185,129,.12); border-color: rgba(16,185,129,.40); }
[data-theme="dark"] .page-calendar .cal-cell.d-makeup .cw-d { color: #6ee7b7; }
[data-theme="dark"] .page-calendar .cal-cell.d-makeup .cw-tag { background: rgba(16,185,129,.24); color: #6ee7b7; }
.page-calendar .cal-cell.d-rest { background: rgba(100,116,139,.08); border-color: rgba(100,116,139,.28); }
.page-calendar .cal-cell.d-rest .cw-d { color: #475569; }
.page-calendar .cal-cell.d-rest .cw-tag { background: rgba(100,116,139,.16); color: #475569; }
[data-theme="dark"] .page-calendar .cal-cell.d-rest { background: rgba(148,163,184,.12); border-color: rgba(148,163,184,.36); }
[data-theme="dark"] .page-calendar .cal-cell.d-rest .cw-d { color: #cbd5e1; }
[data-theme="dark"] .page-calendar .cal-cell.d-rest .cw-tag { background: rgba(148,163,184,.22); color: #cbd5e1; }
/* 休息日：轻灰底 + 灰数字（弃用 opacity 整格灰化） */
.page-calendar .cal-cell.is-rest { background: rgba(120,130,150,.045); }
.page-calendar .cal-cell.is-rest .cw-d { color: var(--text2); font-weight: 600; }
[data-theme="dark"] .page-calendar .cal-cell.is-rest { background: rgba(255,255,255,.035); }
.page-calendar .cal-cell.d-rest.is-rest { background: rgba(100,116,139,.08); }
[data-theme="dark"] .page-calendar .cal-cell.d-rest.is-rest { background: rgba(148,163,184,.12); }
/* 今天：主色描边 */
.page-calendar .cal-cell.is-today { border: 2px solid var(--primary); box-shadow: 0 2px 10px rgba(0,64,237,.18); }
.page-calendar .cal-cell.is-today .cw-d { color: var(--primary); }
/* 图例圆点与格子同色系 */
.page-calendar .cal-legend .lg-dot { display: inline-block; width: 12px; height: 12px; border-radius: 4px; vertical-align: -1px; margin-right: 5px; }
.page-calendar .cal-legend .lg-3 { background: rgba(217,45,32,.55); }
.page-calendar .cal-legend .lg-2 { background: rgba(245,158,11,.60); }
.page-calendar .cal-legend .lg-m { background: rgba(16,185,129,.55); }
.page-calendar .cal-legend .lg-rest { background: rgba(120,130,150,.30); }
.page-calendar .cal-legend .lg-tip { color: var(--text2); font-size: .72rem; }

/* ============================================================
 * 月度详情页紧凑版优化（2026-09-08）
 * 面向管理员高频核对：减少外层留白、压缩工具条高度、提升表格信息密度。
 * ============================================================ */
#app-shell:has(.page-monthly-detail) #main-area { padding: 0 8px; }
#app-shell:has(.page-monthly-detail) #app-content { padding-bottom: 8px; }

.page-monthly-detail * { letter-spacing: 0; }
.page-monthly-detail .card[id^="tab-"] {
  padding: 12px 14px;
  border-radius: 14px;
}

.detail-header-grid {
  grid-template-columns: minmax(220px,.85fr) minmax(520px,1.75fr) auto;
  gap: 12px;
  margin-bottom: 10px;
  padding: 12px 14px;
  border-radius: 15px;
}
.detail-header-grid::before { height: 2px; }
.dhg-title-row { gap: 8px; }
.dhg-title h1 {
  font-size: 21px;
  line-height: 1.12;
  letter-spacing: 0;
}
.dhg-title .hint {
  margin-top: 4px;
  font-size: 11.5px;
  line-height: 1.35;
}
.dh-status .tag { font-size: 10.5px; padding: 2px 8px; }
.dhg-kpis { gap: 8px; }
.kpi-card {
  min-height: 44px;
  gap: 8px;
  padding: 8px 10px;
  border-radius: 10px;
}
.kpi-card::before { width: 3px; }
.kpi-card .kpi-ico {
  width: 28px;
  height: 28px;
  border-radius: 9px;
  font-size: 14px;
}
.kpi-card .kpi-l { font-size: 10.8px; line-height: 1.1; }
.kpi-card .kpi-v {
  font-size: 16.5px;
  line-height: 1.05;
  margin-top: 2px;
  letter-spacing: 0;
}
.kpi-card .kpi-v .kpi-u { font-size: 10px; }
.dhg-actions { gap: 6px; }
.dhg-actions .btn {
  padding: 7px 11px !important;
  font-size: 12px !important;
  border-radius: 9px;
}

.tabs-modern {
  gap: 3px;
  padding: 3px;
  margin-bottom: 10px;
  border-radius: 14px;
}
.tab-m {
  min-width: 76px;
  gap: 5px;
  padding: 7px 10px;
  border-radius: 12px;
  font-size: 12.5px;
  line-height: 1.1;
}
.tab-m .tab-m-ico { font-size: 13px; }
.tab-m.active { box-shadow: inset 0 -2px 0 0 var(--primary); }

#tab-detail .ed-two-col {
  grid-template-columns: 218px minmax(0,1fr);
  gap: 12px;
}
#tab-detail .ed-side {
  padding: 10px;
  border-radius: 12px;
}
#tab-detail .ed-side-head { margin-bottom: 8px; }
#tab-detail .ed-side-head .emp-info-title { font-size: 15px; }
#tab-detail .ed-side-filter {
  margin-bottom: 8px;
  padding: 2px;
}
#tab-detail .esf-btn {
  padding: 5px 6px;
  font-size: 11px;
}
#tab-detail .esf-btn b { font-size: 12px; }
#tab-detail .emp-cal-chips { gap: 5px; }
#tab-detail .emp-chip {
  gap: 5px;
  padding: 8px 10px;
  border-radius: 10px;
  border-left-width: 2px;
}
#tab-detail .emp-chip .ec-main { gap: 5px; }
#tab-detail .emp-chip .ec-name {
  font-size: 13px;
  line-height: 1.15;
}
#tab-detail .emp-chip .ec-pills { gap: 4px; }
#tab-detail .emp-chip .ec-pill {
  font-size: 10.5px;
  line-height: 1.1;
  padding: 2px 7px;
}

#tab-detail .ed-toolbar {
  grid-template-columns: auto auto minmax(0,1fr) auto;
  gap: 10px;
  padding: 9px 10px;
  margin-bottom: 8px;
  border-radius: 12px;
}
#tab-detail .ed-seg { gap: 4px; }
#tab-detail .ed-seg + .ed-seg { padding-left: 10px; }
#tab-detail .ed-seg-lbl {
  gap: 4px;
  font-size: 10px;
  letter-spacing: 0;
}
#tab-detail .ed-seg-lbl::before { width: 2px; height: 9px; }
#tab-detail .ed-seg-person .pn-name {
  max-width: 138px;
  font-size: 14px;
  line-height: 1.12;
}
#tab-detail .ed-seg-person .pn-review {
  font-size: 10.5px;
  padding: 1px 7px;
}
#tab-detail .ed-seg-mode .emp-mode-toggle { padding: 2px; }
#tab-detail .ed-seg-mode .mode-btn {
  padding: 5px 10px;
  font-size: 12px;
}
#tab-detail .ed-seg-filter .emp-cal-summary {
  display: grid;
  grid-template-columns: repeat(6, minmax(68px, 1fr));
  gap: 6px;
}
#tab-detail .ed-seg-filter .emp-cal-summary .cchip {
  min-width: 0;
  min-height: 32px;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 7px;
  padding: 5px 8px 5px 10px;
  border-radius: 10px;
}
#tab-detail .ed-seg-filter .emp-cal-summary .cchip::before { width: 2px; }
#tab-detail .ed-seg-filter .emp-cal-summary .cchip .l {
  font-size: 10.5px;
  line-height: 1;
  white-space: nowrap;
}
#tab-detail .ed-seg-filter .emp-cal-summary .cchip .v {
  font-size: 14px;
  line-height: 1;
  letter-spacing: 0;
  white-space: nowrap;
}
#tab-detail .ed-seg-filter .emp-cal-summary .cchip .v i { font-size: 10px; }
#tab-detail .ed-seg-acts .emp-head-actions { gap: 6px; }
#tab-detail .ed-seg-acts .emp-head-actions .btn {
  padding: 6px 10px !important;
  font-size: 12px !important;
  border-radius: 9px;
}

#tab-detail .emp-list-scroll {
  max-height: calc(100vh - 220px);
  border-radius: 9px;
}
.emp-list-tbl {
  min-width: 760px;
  font-size: 12px;
}
.page-monthly-detail .emp-list-tbl th,
.page-monthly-detail .emp-list-tbl td {
  text-align: center;
}
.page-monthly-detail .emp-list-tbl th.th-date,
.page-monthly-detail .emp-list-tbl td.el-date,
.page-monthly-detail .emp-list-tbl th.th-st,
.page-monthly-detail .emp-list-tbl th.th-sum,
.page-monthly-detail .emp-list-tbl td.el-sum,
.page-monthly-detail .emp-list-tbl td.el-status {
  text-align: left;
}
.emp-list-tbl th,
.emp-list-tbl td {
  padding: 2px 3px;
  border-bottom-color: rgba(100,116,139,.12);
}
.emp-list-tbl th {
  height: 23px;
  background: #f3f6fb;
  color: #475569;
  font-size: 11.5px;
  font-weight: 800;
  border-bottom: 1px solid rgba(100,116,139,.24);
}
.emp-list-tbl th.th-sub {
  top: 23px;
  height: 20px;
  padding: 1px 2px;
  background: #f8fafc;
  font-size: 10.8px;
  font-weight: 700;
}
.emp-list-tbl tbody tr { height: 30px; }
tr.el-day-pm td { border-bottom: 1px solid rgba(100,116,139,.22); }
.emp-list-tbl td.el-date { padding: 2px 5px; }
.el-date-box { gap: 1px; line-height: 1.08; }
.el-date-box .dn { font-size: 13.5px; }
.el-date-box .dw { font-size: 10.5px; }
.el-date-box .ec-type {
  font-size: 10px;
  padding: 0 5px;
}
td.el-ampm { padding: 2px 1px; }
.el-ampm .el-am,
.el-ampm .el-pm {
  font-size: 10.5px;
  padding: 1px 5px;
  border-radius: 6px;
}
.emp-list-row .el-pu { gap: 2px; }
.emp-list-row .el-n { padding: 2px 3px; }
.ls-inp {
  height: 26px;
  min-height: 26px;
  padding: 0 5px;
  border-radius: 7px;
  font-size: 13px;
  line-height: 24px;
}
.ls-time { max-width: 64px; }
.ls-num { max-width: 48px; }
td.el-sum {
  padding: 2px 6px;
  line-height: 1.2;
}
.el-sum-box { gap: 1px; }
.el-sum-r { font-size: 11px; line-height: 1.2; }
td.el-status {
  padding: 4px 6px;
  vertical-align: middle;
}
.el-st-box { gap: 2px; }
.el-st {
  font-size: 10.5px;
  line-height: 1.1;
  padding: 1px 6px;
}
.el-abn-r { font-size: 10px; }
td.el-op { padding: 2px 4px; }
.ls-op-btns { gap: 2px; }
.ls-ignore,
.ls-save,
.ls-cancel,
.ls-reset-calc {
  min-height: 22px;
  padding: 2px 6px;
  font-size: 10.5px;
  line-height: 1.1;
}
.ls-dirty-mark {
  font-size: 10px;
  padding: 1px 5px;
}
.emp-list-tbl tfoot td {
  font-size: 11.5px;
  padding: 5px 6px;
  background: #f8fafc;
}
.emp-list-tbl tbody tr:nth-of-type(4n+1) > td:not(.el-date):not(.el-op):not(.el-status),
.emp-list-tbl tbody tr:nth-of-type(4n+2) > td:not(.el-date):not(.el-op):not(.el-status) {
  background: rgba(100,116,139,.018);
}
.emp-list-tbl tbody tr.dtype-weekend > td:not(.el-date):not(.el-op):not(.el-status) {
  background: rgba(120,130,150,.035);
}
.emp-list-tbl tbody tr.dtype-holiday_3x > td:not(.el-date):not(.el-op):not(.el-status),
.emp-list-tbl tbody tr.dtype-holiday_2x > td:not(.el-date):not(.el-op):not(.el-status) {
  background: rgba(245,180,0,.055);
}
.emp-list-tbl tbody tr.emp-list-row:hover > td:not(.el-date):not(.el-op):not(.el-status) {
  background-color: rgba(0,64,237,.045) !important;
}
.emp-list-tbl th.th-date,
.emp-list-tbl td.el-date,
.emp-list-tbl th.th-op,
.emp-list-tbl td.el-op {
  background: #f8fafc;
}
td.el-status { background: #fff; }

@media (max-width: 1280px) {
  .detail-header-grid { grid-template-columns: 1fr; }
  #tab-detail .ed-two-col { grid-template-columns: 210px minmax(0,1fr); }
  #tab-detail .ed-toolbar { grid-template-columns: 1fr 1fr; align-items: start; }
  #tab-detail .ed-seg-filter,
  #tab-detail .ed-seg-acts { grid-column: 1 / -1; }
}
@media (max-width: 1000px) {
  #tab-detail .ed-two-col { grid-template-columns: 1fr; }
  #tab-detail .ed-side { max-height: 30vh; }
  #tab-detail .ed-toolbar { grid-template-columns: 1fr; }
  #tab-detail .ed-seg + .ed-seg { padding-left: 0; padding-top: 8px; }
  #tab-detail .ed-seg-filter .emp-cal-summary { grid-template-columns: repeat(3, minmax(80px,1fr)); }
}
@media (max-width: 640px) {
  #app-shell:has(.page-monthly-detail) #main-area { padding: 0 6px; }
  .page-monthly-detail .card[id^="tab-"] { padding: 10px; }
  .dhg-kpis { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .tabs-modern { overflow-x: auto; }
  .tab-m { flex: 0 0 auto; }
  #tab-detail .ed-seg-filter .emp-cal-summary { grid-template-columns: repeat(2, minmax(0,1fr)); }
}

[data-theme="dark"] .emp-list-tbl th { background: #202a3a; color: #cbd5e1; }
[data-theme="dark"] .emp-list-tbl th.th-sub,
[data-theme="dark"] .emp-list-tbl th.th-date,
[data-theme="dark"] .emp-list-tbl td.el-date,
[data-theme="dark"] .emp-list-tbl th.th-op,
[data-theme="dark"] .emp-list-tbl td.el-op,
[data-theme="dark"] .emp-list-tbl tfoot td,
[data-theme="dark"] td.el-status {
  background: #182131;
}
[data-theme="dark"] .emp-list-tbl tbody tr.emp-list-row:hover > td:not(.el-date):not(.el-op):not(.el-status) {
  background-color: rgba(77,124,255,.08) !important;
}

/* 列表批量处理与异常定位增强（2026-09-08） */
#tab-detail .emp-list-scroll {
  background: rgba(255,255,255,.45);
}
.emp-bulkbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-height: 34px;
  padding: 5px 8px;
  border-bottom: 1px solid rgba(100,116,139,.16);
  background: #fbfdff;
}
.bulk-left {
  display: flex;
  align-items: center;
  gap: 8px;
  color: #334155;
  font-size: 11.5px;
}
.bulk-left b {
  font-size: 12px;
  color: #1f2937;
}
#empBulkCount {
  padding: 1px 7px;
  border-radius: 999px;
  background: rgba(0,64,237,.08);
  color: var(--primary);
  font-weight: 700;
}
.bulk-actions {
  display: flex;
  align-items: center;
  gap: 5px;
  flex-wrap: wrap;
}
.bulk-btn {
  min-height: 24px;
  padding: 3px 8px;
  border-radius: 8px;
  border: 1px solid rgba(0,64,237,.22);
  background: rgba(0,64,237,.07);
  color: var(--primary);
  font-size: 11px;
  font-weight: 700;
  cursor: pointer;
}
.bulk-btn:hover:not(:disabled) {
  background: rgba(0,64,237,.13);
  border-color: rgba(0,64,237,.36);
}
.bulk-btn.ghost {
  background: #fff;
  color: #64748b;
  border-color: rgba(100,116,139,.22);
}
.bulk-btn:disabled {
  opacity: .42;
  cursor: not-allowed;
}
.ls-reset-calc {
  background: #fff;
  border-color: rgba(100,116,139,.24);
  color: #475569;
}
.ls-manual-mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 18px;
  padding: 1px 6px;
  border-radius: 999px;
  background: rgba(245,158,11,.10);
  color: #b45309;
  font-size: 10px;
  font-weight: 900;
  line-height: 1.1;
  white-space: nowrap;
}

.emp-list-tbl {
  width: 100%;
  min-width: 972px;
}
.emp-list-tbl th.th-sel,
.emp-list-tbl td.el-sel {
  position: sticky;
  left: 0;
  z-index: 6;
  width: 34px;
  min-width: 34px;
  text-align: center;
  background: #f8fafc;
  box-shadow: 2px 0 5px rgba(20,30,50,.08);
}
.emp-list-tbl td.el-sel {
  z-index: 5;
}
.emp-list-tbl th.th-date,
.emp-list-tbl td.el-date {
  left: 34px !important;
}
.ls-check-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  cursor: pointer;
  vertical-align: middle;
}
.ls-check-wrap input {
  position: absolute;
  inset: 0;
  opacity: 0;
  cursor: pointer;
}
.ls-check-wrap span {
  width: 14px;
  height: 14px;
  border-radius: 4px;
  border: 1.5px solid rgba(100,116,139,.42);
  background: #fff;
  box-shadow: 0 1px 2px rgba(15,23,42,.05);
}
.ls-check-wrap input:checked + span {
  border-color: var(--primary);
  background: var(--primary);
  box-shadow: inset 0 0 0 2px #fff;
}
.emp-list-row.is-selected > td:not(.el-status) {
  background-color: rgba(0,64,237,.075) !important;
}

.ls-time.pu-warn {
  border-color: rgba(245,158,11,.78);
  background: rgba(245,158,11,.10);
  color: #92400e;
  font-weight: 800;
}
.pu-flag {
  display: inline-flex;
  align-items: center;
  height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  background: rgba(239,68,68,.10);
  border: 1px solid rgba(239,68,68,.32);
  color: #dc2626;
  font-size: 10px;
  font-weight: 800;
  white-space: nowrap;
}
.ls-time.pu-warn + .pu-flag,
.pu-flag:has(+ .ls-time.pu-warn) {
  background: rgba(245,158,11,.11);
  border-color: rgba(245,158,11,.36);
  color: #b45309;
}

[data-theme="dark"] #tab-detail .emp-list-scroll,
[data-theme="dark"] .emp-bulkbar {
  background: #182131;
  border-color: rgba(255,255,255,.10);
}
[data-theme="dark"] .bulk-left,
[data-theme="dark"] .bulk-left b { color: #cbd5e1; }
[data-theme="dark"] .bulk-btn.ghost {
  background: rgba(255,255,255,.05);
  color: #cbd5e1;
  border-color: rgba(255,255,255,.14);
}
[data-theme="dark"] .emp-list-tbl th.th-sel,
[data-theme="dark"] .emp-list-tbl td.el-sel {
  background: #182131;
}
[data-theme="dark"] .ls-check-wrap span {
  background: #111827;
  border-color: rgba(255,255,255,.25);
}
[data-theme="dark"] .emp-list-row.is-selected > td:not(.el-status) {
  background-color: rgba(77,124,255,.13) !important;
}
[data-theme="dark"] .ls-time.pu-warn {
  border-color: rgba(251,191,36,.75);
  background: rgba(251,191,36,.14);
  color: #fcd34d;
}
[data-theme="dark"] .pu-flag {
  background: rgba(248,113,113,.16);
  border-color: rgba(248,113,113,.38);
  color: #fca5a5;
}

/* 列表模式精修（2026-09-08）：新增异常原因列、压紧工时列、修复底部滚动可达性 */
#tab-detail .ed-main {
  min-height: 0;
  display: flex;
  flex-direction: column;
}
#tab-detail .emp-list-scroll {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overflow: auto;
  padding-bottom: 10px;
}
#tab-detail .emp-cal-scroll {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overflow: auto;
}
.emp-list-tbl {
  width: 100%;
  min-width: 1040px;
  margin-bottom: 10px;
}
.page-monthly-detail .emp-list-tbl th.th-reason,
.page-monthly-detail .emp-list-tbl td.el-reason {
  text-align: left;
}
.page-monthly-detail .emp-list-tbl th.th-reason {
  background: #f3f6fb;
  color: #475569;
}
td.el-reason {
  padding: 4px 7px;
  vertical-align: middle;
  background: #fff;
}
.el-reason-box {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  color: #475569;
  font-size: 10.5px;
  line-height: 1.25;
}
.el-reason-box b {
  color: #b42318;
  font-size: 11px;
  line-height: 1.2;
}
.el-reason-box span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.el-reason-box.muted {
  color: #94a3b8;
  align-items: center;
}
.page-monthly-detail .emp-list-tbl th.th-st,
.page-monthly-detail .emp-list-tbl td.el-status {
  text-align: center;
}
td.el-status {
  padding: 4px 5px;
  vertical-align: middle;
}
.el-st-box {
  align-items: center;
}
.el-st {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
}
.emp-list-row .el-n {
  padding: 1px 2px;
}
.ls-num {
  max-width: 42px;
  height: 24px;
  min-height: 24px;
  padding: 0 2px;
  font-size: 12px;
}
.emp-list-row .el-pu {
  justify-content: flex-start;
  gap: 4px;
  padding-left: 6px;
}
.el-pu.pu-abn {
  box-shadow: none;
  border-radius: 0;
}
.ls-time {
  max-width: 58px;
  height: 24px;
  min-height: 24px;
  padding: 0 4px;
  border-radius: 5px;
  background: #fff;
  font-size: 12px;
  line-height: 22px;
}
.pu-flag {
  height: 16px;
  padding: 0 4px;
  border-radius: 5px;
  font-size: 9.5px;
}
.emp-list-row.is-selected > td:not(.el-status):not(.el-reason) {
  background-color: rgba(0,64,237,.075) !important;
}
.emp-list-tbl tbody tr.emp-list-row.is-dirty > td:not(.el-date):not(.el-op):not(.el-status):not(.el-reason) {
  background-color: rgba(245,158,11,.06);
}
.emp-list-tbl tbody tr:nth-of-type(4n+1) > td:not(.el-date):not(.el-op):not(.el-status):not(.el-reason),
.emp-list-tbl tbody tr:nth-of-type(4n+2) > td:not(.el-date):not(.el-op):not(.el-status):not(.el-reason) {
  background: rgba(100,116,139,.018);
}
.emp-list-tbl tbody tr.dtype-weekend > td:not(.el-date):not(.el-op):not(.el-status):not(.el-reason) {
  background: rgba(120,130,150,.035);
}
.emp-list-tbl tbody tr.dtype-holiday_3x > td:not(.el-date):not(.el-op):not(.el-status):not(.el-reason),
.emp-list-tbl tbody tr.dtype-holiday_2x > td:not(.el-date):not(.el-op):not(.el-status):not(.el-reason) {
  background: rgba(245,180,0,.055);
}
.emp-list-tbl tbody tr.emp-list-row:hover > td:not(.el-date):not(.el-op):not(.el-status):not(.el-reason) {
  background-color: rgba(0,64,237,.045) !important;
}
.emp-list-tbl th.th-date,
.emp-list-tbl td.el-date {
  left: 34px !important;
}
[data-theme="dark"] .page-monthly-detail .emp-list-tbl th.th-reason,
[data-theme="dark"] td.el-reason {
  background: #182131;
}
[data-theme="dark"] .el-reason-box {
  color: #cbd5e1;
}
[data-theme="dark"] .el-reason-box b {
  color: #fca5a5;
}
[data-theme="dark"] .el-reason-box.muted {
  color: #64748b;
}
[data-theme="dark"] .emp-list-row.is-selected > td:not(.el-status):not(.el-reason) {
  background-color: rgba(77,124,255,.13) !important;
}
[data-theme="dark"] .emp-list-tbl tbody tr.emp-list-row.is-dirty > td:not(.el-date):not(.el-op):not(.el-status):not(.el-reason) {
  background-color: rgba(245,158,11,.09);
}
[data-theme="dark"] .emp-list-tbl tbody tr.emp-list-row:hover > td:not(.el-date):not(.el-op):not(.el-status):not(.el-reason) {
  background-color: rgba(77,124,255,.08) !important;
}

/* 列表模式字段重排（2026-09-08）：日期/周几/性质/打卡记录 + 上午/下午分组列 */
.emp-list-tbl {
  min-width: 1290px;
  font-size: 12px;
}
.emp-list-tbl thead th.th-week,
.emp-list-tbl thead th.th-kind,
.emp-list-tbl thead th.th-punch,
.emp-list-tbl thead th.th-total,
.emp-list-tbl thead th.th-abn {
  position: sticky;
  top: 0;
  z-index: 3;
}
.page-monthly-detail .emp-list-tbl th.th-date,
.page-monthly-detail .emp-list-tbl td.el-date,
.page-monthly-detail .emp-list-tbl th.th-week,
.page-monthly-detail .emp-list-tbl td.el-week,
.page-monthly-detail .emp-list-tbl th.th-kind,
.page-monthly-detail .emp-list-tbl td.el-kind,
.page-monthly-detail .emp-list-tbl th.th-punch,
.page-monthly-detail .emp-list-tbl td.el-pu,
.page-monthly-detail .emp-list-tbl th.th-total,
.page-monthly-detail .emp-list-tbl td.el-total,
.page-monthly-detail .emp-list-tbl th.th-abn,
.page-monthly-detail .emp-list-tbl td.el-abn,
.page-monthly-detail .emp-list-tbl th.th-st,
.page-monthly-detail .emp-list-tbl td.el-status {
  text-align: center;
}
.emp-list-tbl tbody tr.emp-list-row {
  height: 48px;
}
.emp-list-tbl tbody tr.emp-list-row > td {
  padding: 3px 4px;
  border-bottom: 1px solid rgba(100,116,139,.18);
}
.emp-list-tbl td.el-date {
  padding: 3px 4px;
}
.ls-date-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 24px;
  border-radius: 7px;
  background: rgba(15,23,42,.05);
  color: #1f2937;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}
td.el-week {
  color: #475569;
  font-size: 11px;
  font-weight: 700;
  white-space: nowrap;
}
td.el-kind .ec-type {
  font-size: 10px;
  padding: 1px 6px;
  border-radius: 999px;
}
.emp-list-row td.el-pu {
  display: table-cell;
  padding: 3px 6px;
}
.ls-punch-groups {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}
.ls-punch-half {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 4px;
  min-height: 24px;
}
.ls-punch-lbl {
  flex: 0 0 28px;
  color: #64748b;
  font-size: 10.5px;
  font-weight: 800;
  text-align: right;
}
.ls-punch-half.pu-abn {
  border-radius: 6px;
}
.ls-punch-reason {
  margin-top: 2px;
  padding-left: 32px;
  color: #b42318;
  font-size: 10px;
  font-weight: 800;
  line-height: 1.1;
  text-align: left;
}
.ls-punch-raw {
  max-width: 242px;
  margin-top: 2px;
  padding-left: 32px;
  overflow: hidden;
  color: #64748b;
  font-size: 9.8px;
  font-weight: 600;
  line-height: 1.15;
  text-align: left;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ls-time {
  max-width: 54px;
}
.ls-num {
  max-width: 40px;
}
td.el-total {
  color: #1f2937;
  font-size: 12px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}
td.el-total.ot {
  color: var(--primary);
}
td.el-total.leave {
  color: #b42318;
}
.ls-abn-box {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  min-width: 0;
}
.ls-abn-box > span:last-child:not(.ls-yn) {
  max-width: 96px;
  overflow: hidden;
  color: #b42318;
  font-size: 10px;
  font-weight: 800;
  line-height: 1.15;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ls-yn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 28px;
  height: 20px;
  border-radius: 999px;
  border: 1px solid currentColor;
  font-size: 11px;
  font-weight: 900;
}
.ls-yn.yes {
  color: #b42318;
  background: rgba(217,45,32,.08);
}
.ls-yn.no {
  color: #047857;
  background: rgba(4,120,87,.08);
}
.el-st.s-pending {
  color: #b45309;
}
.emp-list-tbl tbody tr.emp-list-row.cell-abn > td.el-abn {
  background: rgba(217,45,32,.045);
}
.emp-list-tbl tbody tr.emp-list-row.cell-leave > td.el-total.leave {
  background: rgba(217,45,32,.035);
}
.emp-list-tbl tfoot td {
  height: 30px;
  font-size: 11.5px;
  text-align: center;
}
[data-theme="dark"] .ls-date-num {
  background: rgba(255,255,255,.07);
  color: #e6edf6;
}
[data-theme="dark"] td.el-week,
[data-theme="dark"] .ls-punch-lbl,
[data-theme="dark"] .ls-punch-raw {
  color: #94a3b8;
}
[data-theme="dark"] td.el-total {
  color: #e6edf6;
}
[data-theme="dark"] td.el-total.ot {
  color: #9db8ff;
}
[data-theme="dark"] td.el-total.leave,
[data-theme="dark"] .ls-punch-reason,
[data-theme="dark"] .ls-abn-box > span:last-child:not(.ls-yn) {
  color: #fca5a5;
}
[data-theme="dark"] .ls-yn.yes {
  color: #fca5a5;
  background: rgba(248,113,113,.14);
}
[data-theme="dark"] .ls-yn.no {
  color: #6ee7b7;
  background: rgba(110,231,183,.12);
}
[data-theme="dark"] .el-st.s-pending {
  color: #fcd34d;
}
#tab-detail .ed-seg-filter .emp-cal-summary {
  grid-template-columns: repeat(5, minmax(76px, 1fr));
}
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.wait {
  --cc: #b45309;
  background: rgba(245,158,11,.08);
  border-color: rgba(245,158,11,.30);
}
.emp-full-summary .cchip.wait {
  --cc: #b45309;
  background: rgba(245,158,11,.08);
  border-color: rgba(245,158,11,.30);
}
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.wait .v {
  color: #b45309;
}
.emp-full-summary .cchip.wait .v {
  color: #b45309;
}
[data-theme="dark"] #tab-detail .ed-seg-filter .emp-cal-summary .cchip.wait {
  background: rgba(245,158,11,.14);
  border-color: rgba(245,158,11,.36);
}
[data-theme="dark"] #tab-detail .ed-seg-filter .emp-cal-summary .cchip.wait .v {
  color: #fcd34d;
}

#tab-detail .ed-seg-filter .emp-cal-summary .cchip.active,
.emp-full-summary .cchip.active {
  background: var(--cc) !important;
  border-color: var(--cc) !important;
  box-shadow: 0 4px 12px rgba(15,23,42,.16) !important;
}
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.active .l,
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.active .v,
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.active .v i,
.emp-full-summary .cchip.active .l,
.emp-full-summary .cchip.active .v,
.emp-full-summary .cchip.active .v i {
  color: #fff !important;
}

/* 查询栏分组：数据类型 + 处理状态，支持组合筛选且不占过多宽度 */
#tab-detail .ed-seg-filter .emp-cal-summary,
.emp-full-summary {
  display: flex !important;
  align-items: center;
  flex-wrap: nowrap;
  gap: 8px;
}
#tab-detail .ed-seg-filter .emp-cal-summary .qfilter-group,
.emp-full-summary .qfilter-group {
  display: inline-flex;
  align-items: center;
  flex-wrap: nowrap;
  gap: 5px;
  min-width: 0;
  padding: 0 8px 0 0;
  border-right: 1px solid rgba(31,39,51,.12);
}
#tab-detail .ed-seg-filter .emp-cal-summary .qfilter-group:last-child,
.emp-full-summary .qfilter-group:last-child {
  padding-right: 0;
  border-right: none;
}
#tab-detail .ed-seg-filter .emp-cal-summary .qfilter-label,
.emp-full-summary .qfilter-label {
  flex: none;
  font-size: 11px;
  font-weight: 800;
  color: var(--text2);
  white-space: nowrap;
}
#tab-detail .ed-seg-filter .emp-cal-summary .cchip,
.emp-full-summary .cchip {
  min-width: 58px !important;
  min-height: 28px !important;
  flex: 0 0 auto;
  padding: 4px 7px 4px 8px !important;
  gap: 5px !important;
  border-radius: 8px !important;
}
#tab-detail .ed-seg-filter .emp-cal-summary .qfilter-type .cchip,
.emp-full-summary .qfilter-type .cchip {
  min-width: 64px !important;
}
#tab-detail .ed-seg-filter .emp-cal-summary .qfilter-type .cchip.abn,
.emp-full-summary .qfilter-type .cchip.abn {
  min-width: 78px !important;
}
#tab-detail .ed-seg-filter .emp-cal-summary .cchip .l,
.emp-full-summary .cchip .l {
  font-size: 10.5px !important;
}
#tab-detail .ed-seg-filter .emp-cal-summary .cchip .v,
.emp-full-summary .cchip .v {
  font-size: 13px !important;
}
#tab-detail .ed-seg-filter .emp-cal-summary .cchip .v i,
.emp-full-summary .cchip .v i {
  font-size: 9.5px !important;
}
[data-theme="dark"] #tab-detail .ed-seg-filter .emp-cal-summary .qfilter-group,
[data-theme="dark"] .emp-full-summary .qfilter-group {
  border-right-color: rgba(255,255,255,.14);
}

/* 列表模式二次收紧（2026-09-08）：打卡记录只读流程、工时列加宽、状态列只展示状态 */
.emp-list-tbl {
  min-width: 1160px;
}
.emp-list-tbl tbody tr.emp-list-row {
  height: 38px;
}
.emp-list-tbl tbody tr.emp-list-row > td {
  padding: 3px 4px;
}
.emp-list-row td.el-pu {
  padding: 3px 6px;
  text-align: left;
}
.ls-punch-process {
  width: 100%;
  max-width: 166px;
  overflow: hidden;
  color: #334155;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.25;
  text-align: left;
  text-overflow: ellipsis;
  white-space: nowrap;
}
td.el-week {
  font-size: 10.5px;
}
td.el-kind .ec-type {
  max-width: 48px;
  padding: 1px 5px;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ls-num {
  max-width: 58px;
  height: 25px;
  min-height: 25px;
  padding: 0 4px;
  font-size: 12.5px;
}
td.el-total {
  font-size: 11.5px;
}
.ls-abn-box {
  gap: 0;
}
.ls-yn {
  min-width: 26px;
  height: 19px;
  font-size: 10.5px;
}
td.el-status {
  padding: 3px 4px;
}
td.el-status .el-st-box {
  align-items: center;
  justify-content: center;
}
td.el-status .el-st {
  font-size: 10.5px;
  padding: 2px 6px;
}
[data-theme="dark"] .ls-punch-process {
  color: #cbd5e1;
}

/* 列表模式三列合并与动态打卡列（2026-09-08） */
#tab-detail .emp-list-scroll {
  border-radius: 10px;
  border-color: rgba(100,116,139,.18);
  background: #fff;
  box-shadow: 0 8px 22px rgba(15,23,42,.06);
}
.emp-bulkbar {
  position: sticky;
  top: 0;
  z-index: 8;
  display: grid;
  grid-template-columns: minmax(150px, auto) minmax(220px, 1fr) auto;
  align-items: center;
  gap: 12px;
  min-height: 40px;
  padding: 7px 10px;
  border-bottom: 1px solid rgba(100,116,139,.18);
  background: rgba(248,250,252,.96);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.bulk-left {
  gap: 7px;
  min-width: 0;
}
.bulk-left b {
  color: #0f172a;
  font-size: 12px;
  font-weight: 900;
}
#empBulkCount {
  padding: 2px 8px;
  background: rgba(23,76,255,.09);
  color: #174cff;
  font-size: 11px;
  font-weight: 850;
}
.bulk-month-total {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-width: 0;
}
.bulk-month-total span {
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  min-height: 25px;
  padding: 3px 9px;
  border: 1px solid rgba(100,116,139,.16);
  border-radius: 8px;
  background: #fff;
  white-space: nowrap;
}
.bulk-month-total b {
  color: #64748b;
  font-size: 11px;
  font-weight: 800;
}
.bulk-month-total em {
  color: #0f172a;
  font-size: 13px;
  font-style: normal;
  font-weight: 950;
  font-variant-numeric: tabular-nums;
}
.bulk-month-total span:first-child em {
  color: #174cff;
}
.bulk-month-total span:last-child em {
  color: #b42318;
}
.bulk-actions {
  justify-content: flex-end;
}
.bulk-btn {
  min-height: 26px;
  padding: 3px 9px;
  border-radius: 7px;
  font-size: 11px;
  font-weight: 850;
}
.page-monthly-detail .emp-list-tbl {
  border-collapse: separate;
  border-spacing: 0;
}
.page-monthly-detail .emp-list-tbl th {
  top: 40px;
  background: #f3f6fb;
  color: #334155;
  font-size: 11px;
  font-weight: 900;
}
.page-monthly-detail .emp-list-tbl th.th-sub {
  top: 63px;
  background: #f8fafc;
  color: #64748b;
  font-size: 10.5px;
}
.page-monthly-detail .emp-list-tbl tbody tr.emp-list-row {
  height: 36px;
}
.page-monthly-detail .emp-list-tbl tbody tr.emp-list-row > td {
  border-bottom-color: rgba(100,116,139,.13);
}
.page-monthly-detail .emp-list-tbl th.th-dayinfo,
.page-monthly-detail .emp-list-tbl td.el-dayinfo {
  position: sticky;
  left: 34px;
  z-index: 5;
  text-align: left;
  background: #f8fafc;
  box-shadow: 2px 0 5px rgba(20,30,50,.08);
}
.page-monthly-detail .emp-list-tbl th.th-dayinfo {
  z-index: 6;
  text-align: center;
}
.page-monthly-detail .emp-list-tbl td.el-dayinfo {
  padding: 3px 6px;
  white-space: nowrap;
}
.page-monthly-detail .emp-list-tbl td.el-dayinfo .ls-date-num {
  min-width: 34px;
  height: 22px;
  margin-right: 4px;
  border-radius: 6px;
  font-size: 11px;
}
.ls-day-meta {
  display: inline-block;
  margin-right: 4px;
  color: #475569;
  font-size: 10.5px;
  font-weight: 800;
}
.ls-day-kind {
  display: inline-flex;
  max-width: 42px;
  padding: 1px 5px;
  overflow: hidden;
  font-size: 10px;
  text-overflow: ellipsis;
  vertical-align: middle;
}
.emp-list-row td.el-pu .ls-punch-process {
  max-width: none;
  color: #1f2937;
  font-size: 11.2px;
}
.emp-list-tbl th.th-totalgrp {
  border-left: 1px solid rgba(100,116,139,.18);
  border-right: 1px solid rgba(100,116,139,.18);
}
.emp-list-tbl tbody tr.emp-list-row:hover > td.el-dayinfo,
.emp-list-row.is-selected > td.el-dayinfo {
  background-color: #eef4ff !important;
}
[data-theme="dark"] .page-monthly-detail .emp-list-tbl th.th-dayinfo,
[data-theme="dark"] .page-monthly-detail .emp-list-tbl td.el-dayinfo {
  background: #1b2330;
}
[data-theme="dark"] .ls-reset-calc {
  background: #1b2330;
  border-color: rgba(255,255,255,.14);
  color: #cbd5e1;
}
[data-theme="dark"] .ls-manual-mark {
  background: rgba(245,158,11,.16);
  color: #fcd34d;
}
[data-theme="dark"] #tab-detail .emp-list-scroll {
  background: #121a27;
  border-color: rgba(255,255,255,.10);
  box-shadow: none;
}
[data-theme="dark"] .emp-bulkbar {
  background: rgba(24,33,49,.96);
  border-bottom-color: rgba(255,255,255,.10);
}
[data-theme="dark"] .bulk-left b,
[data-theme="dark"] .bulk-month-total em {
  color: #e6edf6;
}
[data-theme="dark"] .bulk-month-total span {
  background: #111827;
  border-color: rgba(255,255,255,.10);
}
[data-theme="dark"] .bulk-month-total b {
  color: #94a3b8;
}
[data-theme="dark"] .page-monthly-detail .emp-list-tbl th,
[data-theme="dark"] .page-monthly-detail .emp-list-tbl th.th-sub {
  background: #202a3a;
}
[data-theme="dark"] .ls-day-meta {
  color: #94a3b8;
}
[data-theme="dark"] .emp-list-row td.el-pu .ls-punch-process {
  color: #d7e0eb;
}
[data-theme="dark"] .emp-list-tbl tbody tr.emp-list-row:hover > td.el-dayinfo,
[data-theme="dark"] .emp-list-row.is-selected > td.el-dayinfo {
  background-color: #1f3152 !important;
}
@media (max-width: 980px) {
  .emp-bulkbar {
    position: relative;
    top: auto;
    grid-template-columns: 1fr;
    align-items: stretch;
  }
  .page-monthly-detail .emp-list-tbl th {
    top: 0;
  }
  .page-monthly-detail .emp-list-tbl th.th-sub {
    top: 23px;
  }
  .bulk-month-total {
    justify-content: flex-start;
    flex-wrap: wrap;
  }
  .bulk-actions {
    justify-content: flex-start;
  }
}

/* 工作日历 Tab 视觉重整（2026-09-08）：更像管理工具，少装饰、强扫描 */
#tab-calendar {
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-height: min(680px, calc(100vh - 210px));
}
#tab-calendar .wc-topbar {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 2px;
}
#tab-calendar .wc-title-block {
  min-width: 0;
}
#tab-calendar .wc-title-block h2 {
  margin: 0;
  color: #111827;
  font-size: 18px;
  line-height: 1.2;
  font-weight: 850;
}
#tab-calendar .wc-subtitle {
  margin-top: 3px;
  color: #64748b;
  font-size: 12px;
  line-height: 1.35;
}
#tab-calendar .wc-legend {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 2px;
  color: #64748b;
  font-size: 11.5px;
}
#tab-calendar .wc-legend .lg {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  white-space: nowrap;
}
#tab-calendar .wc-legend .dot {
  width: 8px;
  height: 8px;
  border-radius: 2px;
  border: none;
}
#tab-calendar .wc-legend .dot.w { background: #2f6bff; }
#tab-calendar .wc-legend .dot.s { background: #059669; }
#tab-calendar .wc-legend .dot.r { background: #94a3b8; }
#tab-calendar .wc-legend .dot.h { background: #dc2626; }
#tab-calendar .wc-actions {
  display: grid;
  grid-template-columns: minmax(220px, .9fr) minmax(0, 1.8fr);
  align-items: center;
  gap: 10px;
  margin: 0;
  padding: 8px 10px;
  border: 1px solid rgba(100,116,139,.16);
  border-radius: 10px;
  background: #f8fafc;
  box-shadow: none;
}
#tab-calendar .wc-source-tip {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  color: #64748b;
  font-size: 11.5px;
  line-height: 1.35;
}
#tab-calendar .wc-source-tip b {
  color: #334155;
  font-size: 12px;
}
#tab-calendar .wc-source-tip span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
#tab-calendar .wc-modebar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 8px;
  min-width: 0;
}
#tab-calendar .wc-mode-label {
  flex: 0 0 auto;
  color: #64748b;
  font-size: 11.5px;
  font-weight: 800;
}
#tab-calendar .wc-mode-options {
  display: inline-flex;
  flex: 0 1 auto;
  flex-wrap: wrap;
  gap: 2px;
  padding: 2px;
  border: 1px solid rgba(100,116,139,.22);
  border-radius: 9px;
  background: #fff;
}
#tab-calendar .wc-mode-btn {
  height: 26px;
  padding: 0 9px;
  border: none;
  border-radius: 7px;
  background: transparent;
  color: #475569;
  font-size: 11.5px;
  font-weight: 800;
  box-shadow: none;
}
#tab-calendar .wc-mode-btn.on {
  background: #174cff;
  color: #fff;
  border-color: transparent;
  box-shadow: none;
}
#tab-calendar .wc-action-group {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 6px;
  margin-left: auto;
}
#tab-calendar .wc-action-btn {
  width: auto;
  min-height: 28px;
  margin: 0;
  padding: 0 10px !important;
  border-radius: 8px;
  font-size: 11.5px !important;
  line-height: 28px;
  white-space: nowrap;
}
#tab-calendar .wc-lock-tip {
  grid-column: 1 / -1;
  margin-top: -2px;
  padding: 6px 8px;
  border-radius: 8px;
  color: #b45309;
  background: rgba(245,158,11,.10);
  border: 1px solid rgba(245,158,11,.24);
  font-size: 11.5px;
}
#tab-calendar .wc-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin: 0;
  padding: 0;
  border: none;
  background: transparent;
  box-shadow: none;
}
#tab-calendar .wc-stat {
  position: relative;
  min-height: 48px;
  padding: 8px 10px 8px 12px;
  overflow: hidden;
  border: 1px solid rgba(100,116,139,.15);
  border-radius: 9px;
  background: #fff;
}
#tab-calendar .wc-stat::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 3px;
  height: 100%;
  background: var(--wc-accent, #174cff);
}
#tab-calendar .wc-stat.work { --wc-accent: #174cff; }
#tab-calendar .wc-stat.rest { --wc-accent: #94a3b8; }
#tab-calendar .wc-stat.holiday { --wc-accent: #dc2626; }
#tab-calendar .wc-stat.source { --wc-accent: #059669; }
#tab-calendar .wc-stat .l {
  display: block;
  color: #64748b;
  font-size: 11px;
  font-weight: 750;
  line-height: 1.1;
}
#tab-calendar .wc-stat .v {
  display: block;
  margin-top: 5px;
  color: #111827;
  font-size: 20px;
  font-weight: 900;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
#tab-calendar .wc-stat .v i {
  margin-left: 2px;
  color: #64748b;
  font-size: 11px;
  font-style: normal;
  font-weight: 700;
}
#tab-calendar .wc-stat .v.text {
  overflow: hidden;
  color: #334155;
  font-size: 13px;
  line-height: 1.15;
  text-overflow: ellipsis;
  white-space: nowrap;
}
#tab-calendar .wc-scroll {
  flex: 1 1 auto;
  min-height: 0;
  margin-top: 0;
  overflow: auto;
  padding: 0 2px 8px;
}
#tab-calendar .wc-grid {
  display: block;
  min-width: 720px;
}
#tab-calendar .wc-head,
#tab-calendar .wc-row {
  display: grid;
  grid-template-columns: repeat(7, minmax(88px, 1fr));
  gap: 6px;
}
#tab-calendar .wc-head {
  position: sticky;
  top: 0;
  z-index: 2;
  margin-bottom: 6px;
  padding-bottom: 2px;
  background: var(--glass-bg);
}
#tab-calendar .wc-head > div {
  padding: 5px 0;
  border-radius: 7px;
  background: #f1f5f9;
  color: #475569;
  font-size: 11.5px;
  font-weight: 850;
  text-align: center;
}
#tab-calendar .wc-cell {
  position: relative;
  min-height: 64px;
  padding: 8px 9px 7px;
  border: 1px solid rgba(100,116,139,.16);
  border-radius: 9px;
  background: #fff;
  box-shadow: none;
  cursor: pointer;
  transition: border-color .12s ease, background-color .12s ease, transform .12s ease;
}
#tab-calendar .wc-cell::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 3px;
  height: 100%;
  background: var(--wc-accent, #174cff);
}
#tab-calendar .wc-cell:hover {
  transform: translateY(-1px);
  border-color: rgba(23,76,255,.42);
  box-shadow: none;
}
#tab-calendar .wc-cell.is-locked {
  cursor: not-allowed;
}
#tab-calendar .wc-cell.is-locked:hover {
  transform: none;
}
#tab-calendar .wc-cell-top {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 6px;
}
#tab-calendar .wc-cell .d {
  color: #111827;
  font-size: 18px;
  font-weight: 900;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
#tab-calendar .wc-cell .wd {
  color: #94a3b8;
  font-size: 10.5px;
  font-weight: 800;
  white-space: nowrap;
}
#tab-calendar .wc-cell .t {
  display: inline-flex;
  align-items: center;
  max-width: 100%;
  margin-top: 10px;
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(23,76,255,.08);
  color: #174cff;
  font-size: 10.5px;
  font-weight: 850;
  line-height: 1.2;
}
#tab-calendar .wc-cell.dtype-workday { --wc-accent: #174cff; background: #fff; }
#tab-calendar .wc-cell.dtype-saturday { --wc-accent: #059669; background: rgba(5,150,105,.035); }
#tab-calendar .wc-cell.dtype-weekend { --wc-accent: #94a3b8; background: rgba(148,163,184,.08); }
#tab-calendar .wc-cell.dtype-holiday_3x,
#tab-calendar .wc-cell.dtype-holiday_2x { --wc-accent: #dc2626; background: rgba(220,38,38,.045); }
#tab-calendar .wc-cell.dtype-saturday .t { background: rgba(5,150,105,.10); color: #047857; }
#tab-calendar .wc-cell.dtype-weekend .t { background: rgba(100,116,139,.12); color: #475569; }
#tab-calendar .wc-cell.dtype-holiday_3x .t,
#tab-calendar .wc-cell.dtype-holiday_2x .t { background: rgba(220,38,38,.10); color: #b42318; }
#tab-calendar .wc-cell.empty {
  min-height: 64px;
  border: none;
  background: transparent;
  box-shadow: none;
  cursor: default;
}
#tab-calendar .wc-cell.empty::before {
  display: none;
}
@media (max-width: 980px) {
  #tab-calendar .wc-topbar,
  #tab-calendar .wc-actions,
  #tab-calendar .wc-modebar {
    align-items: stretch;
    grid-template-columns: 1fr;
    flex-direction: column;
  }
  #tab-calendar .wc-legend,
  #tab-calendar .wc-modebar {
    justify-content: flex-start;
  }
  #tab-calendar .wc-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  #tab-calendar .wc-action-group {
    margin-left: 0;
  }
}
@media (max-width: 640px) {
  #tab-calendar .wc-summary {
    grid-template-columns: 1fr;
  }
  #tab-calendar .wc-head,
  #tab-calendar .wc-row {
    grid-template-columns: repeat(7, minmax(74px, 1fr));
  }
  #tab-calendar .wc-cell {
    min-height: 58px;
    padding: 7px 7px 6px;
  }
  #tab-calendar .wc-cell .d {
    font-size: 16px;
  }
  #tab-calendar .wc-cell .wd {
    display: none;
  }
}
[data-theme="dark"] #tab-calendar .wc-title-block h2 {
  color: #e6edf6;
}
[data-theme="dark"] #tab-calendar .wc-subtitle,
[data-theme="dark"] #tab-calendar .wc-legend,
[data-theme="dark"] #tab-calendar .wc-source-tip,
[data-theme="dark"] #tab-calendar .wc-mode-label {
  color: #94a3b8;
}
[data-theme="dark"] #tab-calendar .wc-actions,
[data-theme="dark"] #tab-calendar .wc-head {
  background: #182131;
  border-color: rgba(255,255,255,.10);
}
[data-theme="dark"] #tab-calendar .wc-mode-options,
[data-theme="dark"] #tab-calendar .wc-stat,
[data-theme="dark"] #tab-calendar .wc-cell {
  background: #111827;
  border-color: rgba(255,255,255,.10);
}
[data-theme="dark"] #tab-calendar .wc-source-tip b,
[data-theme="dark"] #tab-calendar .wc-stat .v,
[data-theme="dark"] #tab-calendar .wc-cell .d {
  color: #e6edf6;
}
[data-theme="dark"] #tab-calendar .wc-head > div {
  background: rgba(255,255,255,.06);
  color: #cbd5e1;
}
[data-theme="dark"] #tab-calendar .wc-mode-btn {
  color: #cbd5e1;
}
[data-theme="dark"] #tab-calendar .wc-mode-btn.on {
  background: #4d7cff;
}
[data-theme="dark"] #tab-calendar .wc-stat .v.text {
  color: #cbd5e1;
}
[data-theme="dark"] #tab-calendar .wc-cell.dtype-saturday { background: rgba(5,150,105,.10); }
[data-theme="dark"] #tab-calendar .wc-cell.dtype-weekend { background: rgba(148,163,184,.10); }
[data-theme="dark"] #tab-calendar .wc-cell.dtype-holiday_3x,
[data-theme="dark"] #tab-calendar .wc-cell.dtype-holiday_2x { background: rgba(220,38,38,.10); }

/* 人员明细列表最终布局收紧（2026-09-08）：窄左栏 + 右侧多层固定标题 */
#tab-detail {
  overflow: hidden;
}
#tab-detail .ed-two-col {
  grid-template-columns: 176px minmax(0, 1fr) !important;
  gap: 10px !important;
}
#tab-detail .ed-side {
  padding: 9px 8px !important;
  border-radius: 10px !important;
}
#tab-detail .ed-side-head {
  margin-bottom: 7px !important;
}
#tab-detail .ed-side-head .emp-info-title {
  font-size: 13.5px !important;
}
#tab-detail .ed-side-filter {
  gap: 2px !important;
  margin-bottom: 7px !important;
  padding: 2px !important;
}
#tab-detail .esf-btn {
  padding: 4px 3px !important;
  font-size: 10.5px !important;
}
#tab-detail .esf-btn b {
  font-size: 11px !important;
}
#tab-detail .ed-side .emp-cal-chips-scroll {
  padding-right: 2px !important;
}
#tab-detail .emp-cal-chips {
  gap: 4px !important;
}
#tab-detail .emp-chip {
  gap: 4px !important;
  padding: 7px 8px !important;
  border-radius: 9px !important;
}
#tab-detail .emp-chip .ec-main {
  gap: 4px !important;
}
#tab-detail .emp-chip .ec-name {
  font-size: 12.5px !important;
  line-height: 1.12 !important;
}
#tab-detail .emp-chip .ec-pills {
  gap: 3px !important;
}
#tab-detail .emp-chip .ec-pill {
  padding: 2px 5px !important;
  font-size: 10px !important;
  line-height: 1.05 !important;
}
#tab-detail .ed-main {
  min-width: 0;
  overflow: hidden;
}
#tab-detail .ed-toolbar {
  position: sticky;
  top: 0;
  z-index: 30;
  margin-bottom: 8px !important;
  background: rgba(255,255,255,.96) !important;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
#tab-detail .emp-list-scroll {
  position: relative;
  max-height: none !important;
  overflow: hidden !important;
  display: flex;
  flex-direction: column;
}
#tab-detail .emp-list-scroll .emp-bulkbar {
  position: relative !important;
  top: auto !important;
  flex: 0 0 auto;
  z-index: 24 !important;
}
#tab-detail .emp-list-scroll .emp-table-scroll {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
}
#tab-detail .emp-list-scroll .emp-list-tbl thead tr:first-child th {
  top: 0 !important;
  z-index: 20 !important;
}
#tab-detail .emp-list-scroll .emp-list-tbl thead tr:nth-child(2) th {
  top: 23px !important;
  z-index: 19 !important;
}
#tab-detail .emp-list-scroll .emp-list-tbl th.th-sel,
#tab-detail .emp-list-scroll .emp-list-tbl th.th-dayinfo {
  z-index: 25 !important;
}
#tab-detail .emp-list-scroll .emp-list-tbl td.el-dayinfo {
  min-width: 120px;
}
@media (max-width: 1280px) {
  #tab-detail .ed-two-col {
    grid-template-columns: 168px minmax(0, 1fr) !important;
  }
}
@media (max-width: 1000px) {
  #tab-detail .ed-two-col {
    grid-template-columns: 1fr !important;
  }
  #tab-detail .ed-toolbar {
    position: relative;
    top: auto;
  }
}
[data-theme="dark"] #tab-detail .ed-toolbar {
  background: rgba(24,33,49,.96) !important;
}

/* 列表选择与键盘定位（2026-09-08）：选中要明显，方向键定位不改数值 */
.page-monthly-detail .emp-list-row.is-selected > td {
  background-color: #dbeafe !important;
}
.page-monthly-detail .emp-list-row.is-selected > td.el-sel,
.page-monthly-detail .emp-list-row.is-selected > td.el-dayinfo {
  background-color: #cfe0ff !important;
}
.page-monthly-detail .emp-list-row.is-selected {
  box-shadow: 0 0 0 1px rgba(23,76,255,.18);
}
.page-monthly-detail .emp-list-row.is-key-row > td {
  background-color: #eef6ff !important;
}
.page-monthly-detail .emp-list-row.is-key-row.is-selected > td {
  background-color: #cfe0ff !important;
}
.page-monthly-detail .emp-list-row.is-key-row {
  box-shadow: 0 0 0 1px rgba(23,76,255,.18);
}
[data-theme="dark"] .page-monthly-detail .emp-list-row.is-selected > td,
[data-theme="dark"] .page-monthly-detail .emp-list-row.is-key-row.is-selected > td {
  background-color: rgba(77,124,255,.24) !important;
}
[data-theme="dark"] .page-monthly-detail .emp-list-row.is-selected > td.el-sel,
[data-theme="dark"] .page-monthly-detail .emp-list-row.is-selected > td.el-dayinfo {
  background-color: rgba(77,124,255,.30) !important;
}
[data-theme="dark"] .page-monthly-detail .emp-list-row.is-key-row > td {
  background-color: rgba(77,124,255,.14) !important;
}

/* 列表左侧细条：只表示数据类型。橙=异常打卡，红=请假，绿=正常；确认状态只看“状态”列。 */
.page-monthly-detail .emp-list-row {
  --row-flag-color: #10b981;
}
.page-monthly-detail .emp-list-row.cell-leave,
.page-monthly-detail .emp-list-row.cell-abn,
.page-monthly-detail .emp-list-row.cell-confirmed,
.page-monthly-detail .emp-list-row.is-key-row {
  box-shadow: none;
}
.page-monthly-detail .emp-list-row.is-selected,
.page-monthly-detail .emp-list-row.is-key-row.is-selected {
  box-shadow: 0 0 0 1px rgba(23,76,255,.18);
}
.page-monthly-detail .emp-list-row.row-flag-abnormal {
  --row-flag-color: #dc2626;
}
.page-monthly-detail .emp-list-row.row-flag-leave {
  --row-flag-color: #f97316;
}
#tab-detail .emp-table-scroll .emp-list-tbl tbody tr.emp-list-row > td.el-sel,
.emp-full-list .emp-table-scroll .emp-list-tbl tbody tr.emp-list-row > td.el-sel {
  position: relative !important;
}
#tab-detail .emp-table-scroll .emp-list-tbl tbody tr.emp-list-row > td.el-sel::before,
.emp-full-list .emp-table-scroll .emp-list-tbl tbody tr.emp-list-row > td.el-sel::before {
  content: "";
  position: absolute;
  left: 0;
  top: 4px;
  bottom: 4px;
  width: 4px;
  border-radius: 0 4px 4px 0;
  background: var(--row-flag-color);
}
[data-theme="dark"] .page-monthly-detail .emp-list-row.row-flag-abnormal {
  --row-flag-color: #f87171;
}
[data-theme="dark"] .page-monthly-detail .emp-list-row.row-flag-leave {
  --row-flag-color: #fb923c;
}

/* 全屏核对工作台重构（2026-09-08）：人员选择上置，列表/日历完整全屏 */
.emp-full-mask {
  background: rgba(15,23,42,.42);
}
.emp-full {
  inset: 10px;
  border-radius: 14px;
  overflow: hidden;
  background: #f7faff;
}
.emp-full-head {
  min-height: 50px;
  padding: 9px 14px;
  background: rgba(255,255,255,.96);
}
.emp-full-head-main {
  gap: 10px;
}
.emp-full-head h3 {
  font-size: 16px;
}
.emp-full-body {
  gap: 8px;
  padding: 10px 12px 12px;
  background: linear-gradient(180deg, #f5f8ff 0%, #eef4ff 100%);
}
.emp-full-people {
  flex: 0 0 auto;
  min-width: 0;
}
.emp-full-people .emp-cal-chips-scroll {
  margin: 0;
  padding: 7px 8px;
  overflow-x: auto;
  overflow-y: hidden;
  border: 1px solid rgba(100,116,139,.18);
  border-radius: 10px;
  background: rgba(255,255,255,.82);
}
.emp-full-people .emp-cal-chips {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  gap: 6px !important;
}
.emp-full-people .emp-chip {
  flex: 0 0 142px !important;
  width: 142px !important;
  min-width: 142px !important;
  gap: 4px !important;
  padding: 7px 9px !important;
  border-radius: 9px !important;
}
.emp-full-people .emp-chip .ec-name {
  font-size: 12.5px !important;
}
.emp-full-people .emp-chip .ec-pills {
  gap: 3px !important;
}
.emp-full-people .emp-chip .ec-pill {
  padding: 2px 5px !important;
  font-size: 10px !important;
}
.emp-full-toolbar {
  flex: 0 0 auto;
  display: grid;
  grid-template-columns: minmax(180px, auto) auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  border: 1px solid rgba(100,116,139,.18);
  border-radius: 10px;
  background: rgba(255,255,255,.90);
}
.emp-full-current {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.emp-full-current span {
  color: #64748b;
  font-size: 10.5px;
  font-weight: 800;
}
.emp-full-current b {
  overflow: hidden;
  color: #0f172a;
  font-size: 14px;
  font-weight: 900;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.emp-full-mode {
  padding: 2px !important;
}
.emp-full-mode .mode-btn {
  padding: 6px 12px !important;
  font-size: 12px !important;
}
.emp-full-toolbar .emp-full-summary {
  justify-content: flex-start;
  gap: 6px !important;
}
.emp-full-toolbar .emp-full-summary .cchip {
  min-width: 78px !important;
  padding: 4px 9px !important;
  border-radius: 9px !important;
}
.emp-full-actions {
  display: flex;
  justify-content: flex-end;
}
.emp-full-content {
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
}
.emp-full-list,
.emp-full-cal {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none !important;
  border-radius: 10px;
}
.emp-full-list .emp-bulkbar {
  top: auto !important;
}
.emp-full-list .emp-list-tbl thead tr:first-child th {
  top: 0 !important;
}
.emp-full-list .emp-list-tbl thead tr:nth-child(2) th {
  top: 23px !important;
}
.emp-full-cal .emp-cal-grid {
  gap: 8px;
}
.emp-full-cal .emp-cal-cell {
  min-height: 158px;
}
@media (max-width: 1100px) {
  .emp-full-toolbar {
    grid-template-columns: 1fr;
    align-items: stretch;
  }
  .emp-full-toolbar .emp-full-summary,
  .emp-full-actions {
    justify-content: flex-start;
  }
}
[data-theme="dark"] .emp-full {
  background: #0f1724;
}
[data-theme="dark"] .emp-full-head,
[data-theme="dark"] .emp-full-people .emp-cal-chips-scroll,
[data-theme="dark"] .emp-full-toolbar {
  background: rgba(24,33,49,.96);
  border-color: rgba(255,255,255,.10);
}
[data-theme="dark"] .emp-full-body {
  background: #0f1724;
}
[data-theme="dark"] .emp-full-current b {
  color: #e6edf6;
}

/* 筛选列表遮挡修复（2026-09-09）：筛选后不再横向冻结选择/日期/操作列，避免 sticky 层覆盖表头和日期内容。 */
#tab-detail .emp-list-scroll,
.emp-full-list {
  overflow: hidden !important;
}
#tab-detail .emp-list-scroll .emp-table-scroll,
.emp-full-list .emp-table-scroll {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto !important;
  border-top: 1px solid rgba(100,116,139,.14);
}
#tab-detail .emp-list-scroll .emp-bulkbar,
.emp-full-list .emp-bulkbar {
  position: relative !important;
  top: auto !important;
}
#tab-detail .emp-table-scroll .emp-list-tbl,
.emp-full-list .emp-table-scroll .emp-list-tbl {
  border-collapse: separate !important;
  border-spacing: 0 !important;
}
#tab-detail .emp-table-scroll .emp-list-tbl th,
.emp-full-list .emp-table-scroll .emp-list-tbl th {
  position: sticky !important;
  background: #f3f6fb !important;
}
#tab-detail .emp-table-scroll .emp-list-tbl thead tr:first-child th,
.emp-full-list .emp-table-scroll .emp-list-tbl thead tr:first-child th {
  top: 0 !important;
  z-index: 12 !important;
}
#tab-detail .emp-table-scroll .emp-list-tbl thead tr:nth-child(2) th,
.emp-full-list .emp-table-scroll .emp-list-tbl thead tr:nth-child(2) th {
  top: 23px !important;
  z-index: 11 !important;
}
#tab-detail .emp-table-scroll .emp-list-tbl th.th-sel,
#tab-detail .emp-table-scroll .emp-list-tbl td.el-sel,
#tab-detail .emp-table-scroll .emp-list-tbl th.th-dayinfo,
#tab-detail .emp-table-scroll .emp-list-tbl td.el-dayinfo,
#tab-detail .emp-table-scroll .emp-list-tbl th.th-op,
#tab-detail .emp-table-scroll .emp-list-tbl td.el-op,
.emp-full-list .emp-table-scroll .emp-list-tbl th.th-sel,
.emp-full-list .emp-table-scroll .emp-list-tbl td.el-sel,
.emp-full-list .emp-table-scroll .emp-list-tbl th.th-dayinfo,
.emp-full-list .emp-table-scroll .emp-list-tbl td.el-dayinfo,
.emp-full-list .emp-table-scroll .emp-list-tbl th.th-op,
.emp-full-list .emp-table-scroll .emp-list-tbl td.el-op {
  left: auto !important;
  right: auto !important;
  box-shadow: none !important;
}
#tab-detail .emp-table-scroll .emp-list-tbl td.el-sel,
#tab-detail .emp-table-scroll .emp-list-tbl td.el-dayinfo,
#tab-detail .emp-table-scroll .emp-list-tbl td.el-op,
.emp-full-list .emp-table-scroll .emp-list-tbl td.el-sel,
.emp-full-list .emp-table-scroll .emp-list-tbl td.el-dayinfo,
.emp-full-list .emp-table-scroll .emp-list-tbl td.el-op {
  position: static !important;
  z-index: auto !important;
}
#tab-detail .emp-table-scroll .emp-list-tbl th.th-sel,
#tab-detail .emp-table-scroll .emp-list-tbl th.th-dayinfo,
#tab-detail .emp-table-scroll .emp-list-tbl th.th-op,
.emp-full-list .emp-table-scroll .emp-list-tbl th.th-sel,
.emp-full-list .emp-table-scroll .emp-list-tbl th.th-dayinfo,
.emp-full-list .emp-table-scroll .emp-list-tbl th.th-op {
  z-index: 13 !important;
}
#tab-detail .emp-table-scroll .emp-list-tbl td.el-dayinfo,
.emp-full-list .emp-table-scroll .emp-list-tbl td.el-dayinfo {
  min-width: 0 !important;
  background: #fff !important;
}
[data-theme="dark"] #tab-detail .emp-table-scroll .emp-list-tbl th,
[data-theme="dark"] .emp-full-list .emp-table-scroll .emp-list-tbl th {
  background: #202a3a !important;
}
[data-theme="dark"] #tab-detail .emp-table-scroll .emp-list-tbl td.el-dayinfo,
[data-theme="dark"] .emp-full-list .emp-table-scroll .emp-list-tbl td.el-dayinfo {
  background: #1b2330 !important;
}

/* 列表表头稳定版（2026-09-09）：单行锁定表头，避开旧版双行 sticky/rowspan 遮挡。 */
#tab-detail .emp-table-scroll .emp-list-tbl thead th,
.emp-full-list .emp-table-scroll .emp-list-tbl thead th {
  position: sticky !important;
  top: 0 !important;
  left: auto !important;
  right: auto !important;
  z-index: 30 !important;
  height: 36px !important;
  padding: 5px 4px !important;
  border-bottom: 1px solid rgba(100,116,139,.22) !important;
  background: #f3f6fb !important;
  color: #334155 !important;
  font-size: 11px !important;
  font-weight: 900 !important;
  line-height: 1.15 !important;
  white-space: nowrap !important;
  box-shadow: none !important;
}
#tab-detail .emp-table-scroll .emp-list-tbl thead,
.emp-full-list .emp-table-scroll .emp-list-tbl thead {
  display: table-header-group !important;
}
#tab-detail .emp-table-scroll .emp-list-tbl thead tr,
.emp-full-list .emp-table-scroll .emp-list-tbl thead tr {
  height: 36px !important;
}
#tab-detail .bulk-month-total,
.emp-full-list .bulk-month-total {
  justify-content: center;
  flex-wrap: wrap;
  gap: 6px;
}
#tab-detail .bulk-month-total span,
.emp-full-list .bulk-month-total span {
  min-height: 24px;
  padding: 3px 8px;
}
[data-theme="dark"] #tab-detail .emp-table-scroll .emp-list-tbl thead th,
[data-theme="dark"] .emp-full-list .emp-table-scroll .emp-list-tbl thead th {
  background: #202a3a !important;
  color: #cbd5e1 !important;
}

/* 审核助手（2026-09-09）：异常原因、处理建议、同类批量选择，保持列表紧凑。 */
td.el-ai {
  padding: 4px 6px !important;
  text-align: left !important;
}
.ai-advice {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr) auto;
  align-items: center;
  gap: 5px;
  min-width: 0;
}
.ai-level {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 20px;
  min-width: 20px;
  padding: 0 4px;
  border-radius: 6px;
  font-size: 10px;
  font-weight: 900;
  line-height: 1;
}
.ai-text {
  min-width: 0;
  line-height: 1.15;
}
.ai-text b,
.ai-text em {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ai-text b {
  color: #1f2937;
  font-size: 11px;
  font-weight: 850;
}
.ai-text em {
  margin-top: 2px;
  color: #64748b;
  font-size: 10px;
  font-style: normal;
}
.ai-select-same {
  height: 22px;
  padding: 0 6px;
  border: 1px solid rgba(100,116,139,.22);
  border-radius: 6px;
  background: #fff;
  color: #475569;
  font-size: 10px;
  font-weight: 800;
  cursor: pointer;
  white-space: nowrap;
}
.ai-select-same:hover {
  border-color: rgba(23,76,255,.35);
  color: #174cff;
}
.ai-reset-calc {
  height: 22px;
  padding: 0 7px;
  border: 1px solid rgba(23,76,255,.25);
  border-radius: 6px;
  background: rgba(23,76,255,.08);
  color: #174cff;
  font-size: 10px;
  font-weight: 900;
  cursor: pointer;
  white-space: nowrap;
}
.ai-reset-calc:hover {
  background: rgba(23,76,255,.14);
}
.ai-mid .ai-text b {
  color: #92400e;
}
.ai-high .ai-level { background: #fee2e2; color: #b42318; }
.ai-mid .ai-level { background: #ffedd5; color: #b45309; }
.ai-low .ai-level { background: #dbeafe; color: #174cff; }
.ai-ok .ai-level { background: #dcfce7; color: #047857; }
.bulk-btn.ai-quick {
  border-color: rgba(4,120,87,.25);
  background: rgba(4,120,87,.08);
  color: #047857;
}
.bulk-btn.ai-quick:hover:not(:disabled) {
  background: rgba(4,120,87,.14);
}
.bulk-btn.ai-sort.on {
  border-color: rgba(23,76,255,.36);
  background: rgba(23,76,255,.12);
  color: #174cff;
}
[data-theme="dark"] td.el-ai {
  background: #1b2330;
}
[data-theme="dark"] .ai-text b {
  color: #e6edf6;
}
[data-theme="dark"] .ai-text em {
  color: #94a3b8;
}
[data-theme="dark"] .ai-select-same {
  background: #111827;
  border-color: rgba(255,255,255,.12);
  color: #cbd5e1;
}
[data-theme="dark"] .ai-reset-calc {
  background: rgba(96,165,250,.14);
  border-color: rgba(96,165,250,.22);
  color: #bfdbfe;
}

/* 2026-09-09：AI 建议列加宽后，日期列仍保持完整可读。 */
#tab-detail .emp-list-tbl td.el-dayinfo,
.emp-full-list .emp-list-tbl td.el-dayinfo {
  display: flex !important;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
  overflow: hidden;
}
#tab-detail .emp-list-tbl .ls-date-num,
.emp-full-list .emp-list-tbl .ls-date-num {
  flex: 0 0 34px;
  min-width: 34px;
}
#tab-detail .emp-list-tbl .ls-day-meta,
#tab-detail .emp-list-tbl .ls-day-kind,
.emp-full-list .emp-list-tbl .ls-day-meta,
.emp-full-list .emp-list-tbl .ls-day-kind {
  flex: 0 0 auto;
}

/* 2026-09-09：列表模式组合列，减少横向拥挤。 */
#tab-detail .emp-list-tbl td.el-half,
#tab-detail .emp-list-tbl td.el-mini-summary,
.emp-full-list .emp-list-tbl td.el-half,
.emp-full-list .emp-list-tbl td.el-mini-summary {
  padding: 3px 5px !important;
}
.ls-metric-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 5px;
  align-items: center;
}
.ls-summary-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 5px;
}
.ls-metric {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
}
.ls-metric .ls-num {
  width: 100%;
  max-width: 42px;
  min-width: 0;
  height: 23px;
  min-height: 23px;
  padding: 0 2px;
  border-radius: 6px;
  font-size: 11.5px;
  font-weight: 850;
  text-align: center;
}
.ls-metric.static b {
  color: #1f2937;
  font-size: 11.5px;
  font-weight: 950;
  line-height: 1;
  text-align: center;
  font-variant-numeric: tabular-nums;
}
.ls-metric.ot b {
  color: #174cff;
}
.ls-metric.leave b {
  color: #b42318;
}
#tab-detail .emp-list-tbl th.th-half,
#tab-detail .emp-list-tbl th.th-totalgrp,
.emp-full-list .emp-list-tbl th.th-half,
.emp-full-list .emp-list-tbl th.th-totalgrp {
  background: #eef4ff !important;
}
#tab-detail .emp-list-tbl td.el-am,
.emp-full-list .emp-list-tbl td.el-am {
  border-left: 1px solid rgba(100,116,139,.12);
}
#tab-detail .emp-list-tbl td.el-mini-summary,
.emp-full-list .emp-list-tbl td.el-mini-summary {
  background: rgba(248,250,252,.72);
  border-left: 1px solid rgba(100,116,139,.12);
  border-right: 1px solid rgba(100,116,139,.12);
}
#tab-detail .emp-list-tbl tbody tr.emp-list-row,
.emp-full-list .emp-list-tbl tbody tr.emp-list-row {
  height: 39px;
}
#tab-detail .emp-list-tbl td.el-ai,
.emp-full-list .emp-list-tbl td.el-ai {
  padding-right: 8px !important;
}
#tab-detail .emp-list-tbl .ai-advice,
.emp-full-list .emp-list-tbl .ai-advice {
  grid-template-columns: 24px minmax(0, 1fr) auto;
}
#tab-detail .emp-list-tbl .ai-text b,
.emp-full-list .emp-list-tbl .ai-text b {
  max-width: 100%;
}
#tab-detail .emp-list-tbl th.th-half,
#tab-detail .emp-list-tbl th.th-totalgrp,
.emp-full-list .emp-list-tbl th.th-half,
.emp-full-list .emp-list-tbl th.th-totalgrp {
  line-height: 1.08 !important;
}
#tab-detail .emp-list-tbl th.th-half span,
#tab-detail .emp-list-tbl th.th-totalgrp span,
.emp-full-list .emp-list-tbl th.th-half span,
.emp-full-list .emp-list-tbl th.th-totalgrp span {
  display: block;
  color: #1f2937;
  font-size: 11px;
  font-weight: 950;
}
#tab-detail .emp-list-tbl th.th-half em,
#tab-detail .emp-list-tbl th.th-totalgrp em,
.emp-full-list .emp-list-tbl th.th-half em,
.emp-full-list .emp-list-tbl th.th-totalgrp em {
  display: block;
  margin-top: 2px;
  color: #64748b;
  font-size: 9.5px;
  font-style: normal;
  font-weight: 800;
}
[data-theme="dark"] #tab-detail .emp-list-tbl th.th-half span,
[data-theme="dark"] #tab-detail .emp-list-tbl th.th-totalgrp span,
[data-theme="dark"] .emp-full-list .emp-list-tbl th.th-half span,
[data-theme="dark"] .emp-full-list .emp-list-tbl th.th-totalgrp span {
  color: #e6edf6;
}
[data-theme="dark"] #tab-detail .emp-list-tbl th.th-half em,
[data-theme="dark"] #tab-detail .emp-list-tbl th.th-totalgrp em,
[data-theme="dark"] .emp-full-list .emp-list-tbl th.th-half em,
[data-theme="dark"] .emp-full-list .emp-list-tbl th.th-totalgrp em {
  color: #94a3b8;
}
[data-theme="dark"] #tab-detail .emp-list-tbl th.th-half,
[data-theme="dark"] #tab-detail .emp-list-tbl th.th-totalgrp,
[data-theme="dark"] .emp-full-list .emp-list-tbl th.th-half,
[data-theme="dark"] .emp-full-list .emp-list-tbl th.th-totalgrp {
  background: #22314a !important;
}
[data-theme="dark"] #tab-detail .emp-list-tbl td.el-mini-summary,
[data-theme="dark"] .emp-full-list .emp-list-tbl td.el-mini-summary {
  background: rgba(17,24,39,.72);
}
[data-theme="dark"] .ls-metric.static b {
  color: #e6edf6;
}
[data-theme="dark"] .ls-metric.ot b {
  color: #9db8ff;
}
[data-theme="dark"] .ls-metric.leave b {
  color: #fca5a5;
}

/* 2026-09-09：列表复核版，日期更准确、数字更像表格。 */
#tab-detail .emp-list-tbl td.el-dayinfo,
.emp-full-list .emp-list-tbl td.el-dayinfo {
  padding: 3px 5px !important;
}
.ls-day-compact {
  display: grid;
  grid-template-columns: 28px 28px 1fr;
  align-items: center;
  gap: 3px;
  width: 100%;
  min-width: 0;
  white-space: nowrap;
}
.ls-day-compact b {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 21px;
  border-radius: 6px;
  background: rgba(15,23,42,.055);
  color: #1f2937;
  font-size: 11px;
  font-weight: 950;
  font-variant-numeric: tabular-nums;
}
.ls-day-compact i {
  color: #475569;
  font-size: 10.5px;
  font-style: normal;
  font-weight: 900;
}
.ls-day-compact em {
  min-width: 0;
  overflow: hidden;
  color: #64748b;
  font-size: 10.5px;
  font-style: normal;
  font-weight: 850;
  text-overflow: clip;
}
.ls-day-compact em.t-weekend {
  color: #64748b;
}
.ls-day-compact em.t-holiday_3x,
.ls-day-compact em.t-holiday_2x {
  color: #b45309;
}
#tab-detail .emp-list-tbl .ls-metric-grid,
.emp-full-list .emp-list-tbl .ls-metric-grid {
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
}
#tab-detail .emp-list-tbl .ls-summary-grid,
.emp-full-list .emp-list-tbl .ls-summary-grid {
  grid-template-columns: repeat(2, 1fr);
  gap: 4px;
}
#tab-detail .emp-list-tbl .ls-metric .ls-num,
.emp-full-list .emp-list-tbl .ls-metric .ls-num {
  max-width: 44px;
  height: 24px;
  min-height: 24px;
  border-color: transparent;
  background: transparent;
  box-shadow: none;
  color: #1f2937;
  font-size: 12px;
  font-weight: 900;
}
#tab-detail .emp-list-tbl .ls-metric.leave .ls-num,
.emp-full-list .emp-list-tbl .ls-metric.leave .ls-num {
  color: #b42318;
}
#tab-detail .emp-list-tbl .ls-metric.ot .ls-num,
.emp-full-list .emp-list-tbl .ls-metric.ot .ls-num {
  color: #174cff;
}
#tab-detail .emp-list-tbl .ls-metric .ls-num:hover,
#tab-detail .emp-list-tbl .ls-metric .ls-num:focus,
.emp-full-list .emp-list-tbl .ls-metric .ls-num:hover,
.emp-full-list .emp-list-tbl .ls-metric .ls-num:focus {
  border-color: rgba(23,76,255,.24);
  background: #fff;
  box-shadow: 0 0 0 2px rgba(23,76,255,.08);
}
#tab-detail .emp-list-tbl td.el-half,
.emp-full-list .emp-list-tbl td.el-half {
  padding-left: 8px !important;
  padding-right: 8px !important;
}
#tab-detail .emp-list-tbl td.el-mini-summary,
.emp-full-list .emp-list-tbl td.el-mini-summary {
  padding-left: 7px !important;
  padding-right: 7px !important;
}
#tab-detail .emp-list-tbl .ai-advice,
.emp-full-list .emp-list-tbl .ai-advice {
  grid-template-columns: 28px minmax(0, 1fr) auto;
  gap: 6px;
}
#tab-detail .emp-list-tbl .ai-level,
.emp-full-list .emp-list-tbl .ai-level {
  min-width: 24px;
}
#tab-detail .emp-list-tbl .ai-text,
.emp-full-list .emp-list-tbl .ai-text {
  line-height: 1.1;
}
#tab-detail .emp-list-tbl .ai-text b,
.emp-full-list .emp-list-tbl .ai-text b {
  font-size: 10.8px;
}
#tab-detail .emp-list-tbl .ai-text em,
.emp-full-list .emp-list-tbl .ai-text em {
  font-size: 9.8px;
}
[data-theme="dark"] .ls-day-compact b {
  background: rgba(255,255,255,.07);
  color: #e6edf6;
}
[data-theme="dark"] .ls-day-compact i,
[data-theme="dark"] .ls-day-compact em {
  color: #94a3b8;
}
[data-theme="dark"] #tab-detail .emp-list-tbl .ls-metric .ls-num,
[data-theme="dark"] .emp-full-list .emp-list-tbl .ls-metric .ls-num {
  color: #e6edf6;
}
[data-theme="dark"] #tab-detail .emp-list-tbl .ls-metric.leave .ls-num,
[data-theme="dark"] .emp-full-list .emp-list-tbl .ls-metric.leave .ls-num {
  color: #fca5a5;
}
[data-theme="dark"] #tab-detail .emp-list-tbl .ls-metric.ot .ls-num,
[data-theme="dark"] .emp-full-list .emp-list-tbl .ls-metric.ot .ls-num {
  color: #9db8ff;
}
[data-theme="dark"] #tab-detail .emp-list-tbl .ls-metric .ls-num:hover,
[data-theme="dark"] #tab-detail .emp-list-tbl .ls-metric .ls-num:focus,
[data-theme="dark"] .emp-full-list .emp-list-tbl .ls-metric .ls-num:hover,
[data-theme="dark"] .emp-full-list .emp-list-tbl .ls-metric .ls-num:focus {
  background: #111827;
  border-color: rgba(96,165,250,.32);
}

/* 2026-09-13：人员明细日期/推荐最终收口。 */
#tab-detail .emp-table-scroll .emp-list-tbl td.el-dayinfo,
.emp-full-list .emp-table-scroll .emp-list-tbl td.el-dayinfo {
  display: table-cell !important;
  padding: 4px 6px !important;
  text-align: center !important;
  vertical-align: middle !important;
  white-space: normal !important;
}
#tab-detail .emp-table-scroll .ls-day-compact,
.emp-full-list .emp-table-scroll .ls-day-compact {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  width: 100%;
  line-height: 1.1;
}
.ls-day-line {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
}
#tab-detail .emp-table-scroll .ls-day-compact b,
.emp-full-list .emp-table-scroll .ls-day-compact b {
  height: auto;
  padding: 0;
  border-radius: 0;
  background: transparent;
  color: #1f2937;
  font-size: 11.5px;
}
#tab-detail .emp-table-scroll .ls-day-compact i,
.emp-full-list .emp-table-scroll .ls-day-compact i {
  color: #475569;
  font-size: 10.5px;
}
#tab-detail .emp-table-scroll .ls-day-compact em,
.emp-full-list .emp-table-scroll .ls-day-compact em {
  display: block;
  max-width: 56px;
  overflow: hidden;
  color: #64748b;
  font-size: 10px;
  font-weight: 850;
  text-align: center;
  text-overflow: ellipsis;
  white-space: nowrap;
}
#tab-detail .emp-table-scroll .emp-list-tbl .ai-advice,
.emp-full-list .emp-table-scroll .emp-list-tbl .ai-advice {
  grid-template-columns: 28px minmax(0, 1fr) auto;
  gap: 6px;
}
#tab-detail .emp-table-scroll .emp-list-tbl .ai-text,
.emp-full-list .emp-table-scroll .emp-list-tbl .ai-text {
  display: grid;
  grid-template-columns: minmax(0, auto) auto;
  align-items: baseline;
  gap: 6px;
  min-width: 0;
}
#tab-detail .emp-table-scroll .emp-list-tbl .ai-text b,
#tab-detail .emp-table-scroll .emp-list-tbl .ai-text em,
.emp-full-list .emp-table-scroll .emp-list-tbl .ai-text b,
.emp-full-list .emp-table-scroll .emp-list-tbl .ai-text em {
  display: inline-block;
  margin: 0;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
#tab-detail .emp-table-scroll .emp-list-tbl .ai-text b,
.emp-full-list .emp-table-scroll .emp-list-tbl .ai-text b {
  font-size: 11px;
  font-weight: 950;
}
#tab-detail .emp-table-scroll .emp-list-tbl .ai-text em,
.emp-full-list .emp-table-scroll .emp-list-tbl .ai-text em {
  color: #64748b;
  font-size: 10px;
  font-weight: 800;
}
#tab-detail .emp-table-scroll .emp-list-tbl .ai-select-same,
.emp-full-list .emp-table-scroll .emp-list-tbl .ai-select-same {
  display: none !important;
}
[data-theme="dark"] #tab-detail .emp-table-scroll .ls-day-compact b,
[data-theme="dark"] .emp-full-list .emp-table-scroll .ls-day-compact b {
  color: #e6edf6;
}
[data-theme="dark"] #tab-detail .emp-table-scroll .ls-day-compact i,
[data-theme="dark"] #tab-detail .emp-table-scroll .ls-day-compact em,
[data-theme="dark"] .emp-full-list .emp-table-scroll .ls-day-compact i,
[data-theme="dark"] .emp-full-list .emp-table-scroll .ls-day-compact em {
  color: #94a3b8;
}

/* 2026-09-13：异常打卡信息合并进「打卡记录」列，减少横向列数。 */
#tab-detail .emp-table-scroll .emp-list-tbl td.el-dayinfo,
.emp-full-list .emp-table-scroll .emp-list-tbl td.el-dayinfo {
  padding: 4px 5px !important;
}
#tab-detail .emp-table-scroll .ls-day-compact,
.emp-full-list .emp-table-scroll .ls-day-compact {
  min-width: 78px;
}
#tab-detail .emp-table-scroll .ls-day-line,
.emp-full-list .emp-table-scroll .ls-day-line {
  gap: 5px;
}
#tab-detail .emp-table-scroll .ls-day-compact b,
.emp-full-list .emp-table-scroll .ls-day-compact b {
  font-size: 12px;
}
#tab-detail .emp-table-scroll .ls-day-compact em,
.emp-full-list .emp-table-scroll .ls-day-compact em {
  max-width: 72px;
}
#tab-detail .emp-table-scroll .emp-list-tbl td.el-pu,
.emp-full-list .emp-table-scroll .emp-list-tbl td.el-pu {
  padding: 3px 6px !important;
  vertical-align: middle;
}
.ls-punch-card {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 3px;
  min-height: 30px;
  padding: 3px 6px;
  border: 1px solid transparent;
  border-radius: 7px;
  background: transparent;
  min-width: 0;
}
.ls-punch-card.is-abn {
  border-color: rgba(217,45,32,.24);
  background: rgba(217,45,32,.055);
}
.ls-punch-card.is-leave:not(.is-abn) {
  border-color: rgba(245,158,11,.20);
  background: rgba(245,158,11,.045);
}
.ls-punch-card.is-empty {
  color: #94a3b8;
}
#tab-detail .emp-table-scroll .ls-punch-process,
.emp-full-list .emp-table-scroll .ls-punch-process {
  width: 100%;
  max-width: none;
  overflow: hidden;
  color: #1f2937;
  font-size: 11px;
  font-weight: 800;
  line-height: 1.15;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ls-punch-tags {
  display: flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
  overflow: hidden;
}
.ls-punch-tag {
  display: inline-flex;
  align-items: center;
  max-width: 100%;
  height: 17px;
  padding: 0 5px;
  border-radius: 999px;
  font-size: 9.5px;
  font-weight: 900;
  line-height: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ls-punch-tag.abn {
  background: rgba(217,45,32,.11);
  color: #b42318;
}
.ls-punch-tag.warn {
  background: rgba(23,76,255,.10);
  color: #174cff;
}
.ls-punch-tag.leave,
.ls-punch-tag.empty {
  background: rgba(245,158,11,.12);
  color: #92400e;
}
#tab-detail .emp-table-scroll .emp-list-tbl tbody tr.emp-list-row.cell-abn > td.el-pu,
.emp-full-list .emp-table-scroll .emp-list-tbl tbody tr.emp-list-row.cell-abn > td.el-pu {
  background: rgba(217,45,32,.025);
}
#tab-detail .emp-table-scroll .emp-list-tbl .ai-advice,
.emp-full-list .emp-table-scroll .emp-list-tbl .ai-advice {
  grid-template-columns: 24px minmax(0, 1fr) auto;
  gap: 5px;
}
#tab-detail .emp-table-scroll .emp-list-tbl .ai-text,
.emp-full-list .emp-table-scroll .emp-list-tbl .ai-text {
  display: block;
}
#tab-detail .emp-table-scroll .emp-list-tbl .ai-text b,
.emp-full-list .emp-table-scroll .emp-list-tbl .ai-text b {
  display: block;
  color: #334155;
  font-size: 10.8px;
  font-weight: 900;
}
#tab-detail .emp-table-scroll .emp-list-tbl .ai-text em,
.emp-full-list .emp-table-scroll .emp-list-tbl .ai-text em {
  display: none;
}
[data-theme="dark"] .ls-punch-card.is-abn {
  border-color: rgba(248,113,113,.28);
  background: rgba(248,113,113,.12);
}
[data-theme="dark"] .ls-punch-card.is-leave:not(.is-abn) {
  border-color: rgba(251,191,36,.24);
  background: rgba(251,191,36,.10);
}
[data-theme="dark"] #tab-detail .emp-table-scroll .ls-punch-process,
[data-theme="dark"] .emp-full-list .emp-table-scroll .ls-punch-process,
[data-theme="dark"] #tab-detail .emp-table-scroll .emp-list-tbl .ai-text b,
[data-theme="dark"] .emp-full-list .emp-table-scroll .emp-list-tbl .ai-text b {
  color: #e6edf6;
}
[data-theme="dark"] .ls-punch-tag.abn {
  background: rgba(248,113,113,.18);
  color: #fca5a5;
}
[data-theme="dark"] .ls-punch-tag.warn {
  background: rgba(96,165,250,.16);
  color: #bfdbfe;
}
[data-theme="dark"] .ls-punch-tag.leave,
[data-theme="dark"] .ls-punch-tag.empty {
  background: rgba(251,191,36,.18);
  color: #fcd34d;
}

/* 2026-09-13：创建月度作业前先确认工作日历。 */
#createModal.modal-mask {
  align-items: flex-start;
  padding: 24px 12px;
  overflow-y: auto;
}
#createModal .create-month-modal {
  width: min(94vw, 680px) !important;
  max-height: none;
  padding: 16px !important;
  border-radius: 12px;
}
#createModal .create-month-modal h3 {
  margin-bottom: 3px;
  font-size: 15px;
}
#createModal .create-month-modal .sub {
  margin-bottom: 8px;
  font-size: 12px;
}
#createModal .create-month-modal label {
  font-size: 12px;
  font-weight: 850;
}
#createModal .create-ym-row {
  gap: 8px !important;
  margin-bottom: 9px !important;
}
#createModal select {
  height: 32px;
  padding: 5px 9px;
  font-size: 13px;
}
.create-cal-box {
  margin: 0 0 10px;
  padding: 9px;
  border: 1px solid rgba(100,116,139,.18);
  border-radius: 9px;
  background: rgba(248,250,252,.88);
}
.create-step-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 7px;
}
.create-step-head b {
  display: block;
  color: #0f172a;
  font-size: 12.5px;
  font-weight: 950;
}
.create-step-head span {
  display: block;
  margin-top: 2px;
  color: #64748b;
  font-size: 11px;
  font-weight: 750;
}
.create-cal-editbar {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 7px;
}
.cal-mode-current {
  flex: 0 0 auto;
  height: 28px;
  padding: 0 9px;
  border-radius: 7px;
  background: rgba(23,76,255,.08);
  color: #174cff;
  font-size: 11.5px;
  font-weight: 950;
  line-height: 28px;
  white-space: nowrap;
}
.create-cal-tools {
  flex: 1 1 auto;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 5px;
  min-width: 0;
}
.cal-mode-btn {
  height: 28px;
  border: 1px solid rgba(100,116,139,.20);
  border-radius: 7px;
  background: #fff;
  color: #334155;
  font-size: 11.5px;
  font-weight: 850;
  cursor: pointer;
}
.cal-mode-btn.on {
  border-color: rgba(23,76,255,.38);
  background: rgba(23,76,255,.10);
  color: #174cff;
}
.cal-mode-btn:disabled {
  opacity: .48;
  cursor: not-allowed;
}
.create-cal-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 5px;
  margin-bottom: 6px;
}
.create-cal-summary span {
  min-width: 0;
  padding: 4px 6px;
  border: 1px solid rgba(100,116,139,.14);
  border-radius: 7px;
  background: #fff;
  color: #64748b;
  font-size: 10.5px;
  font-weight: 800;
  text-align: center;
}
.create-cal-summary b {
  margin-right: 3px;
  color: #0f172a;
  font-size: 12px;
  font-weight: 950;
}
.create-cal-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 3px;
}
.cm-head {
  height: 18px;
  color: #64748b;
  font-size: 10.5px;
  font-weight: 900;
  line-height: 18px;
  text-align: center;
}
.cm-head.wkend {
  color: #b45309;
}
.cm-cell {
  position: relative;
  min-width: 0;
  height: 32px;
  border: 1px solid rgba(100,116,139,.15);
  border-radius: 6px;
  background: #fff;
  color: #334155;
  cursor: pointer;
  display: grid;
  grid-template-columns: 19px minmax(0, 1fr) 18px;
  grid-template-rows: 1fr;
  align-items: center;
  column-gap: 2px;
  padding: 3px 4px;
  text-align: left;
}
.cm-cell.empty {
  border-color: transparent;
  background: transparent;
  cursor: default;
}
.cm-cell b {
  color: #0f172a;
  font-size: 12.5px;
  font-weight: 950;
  text-align: center;
  font-variant-numeric: tabular-nums;
}
.cm-cell span,
.cm-cell em {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.cm-cell span {
  color: #94a3b8;
  font-size: 10px;
  font-weight: 800;
}
.cm-cell em {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  border-radius: 999px;
  background: rgba(100,116,139,.10);
  color: #475569;
  font-size: 10px;
  font-style: normal;
  font-weight: 900;
}
.cm-cell.type-rest {
  background: rgba(148,163,184,.10);
}
.cm-cell.type-holiday3 {
  border-color: rgba(217,45,32,.26);
  background: rgba(217,45,32,.08);
}
.cm-cell.type-holiday3 b,
.cm-cell.type-holiday3 em {
  color: #b42318;
}
.cm-cell.type-holiday3 em {
  background: rgba(217,45,32,.14);
}
.cm-cell.type-holiday2 {
  border-color: rgba(245,158,11,.30);
  background: rgba(245,158,11,.10);
}
.cm-cell.type-holiday2 b,
.cm-cell.type-holiday2 em {
  color: #b45309;
}
.cm-cell.type-holiday2 em {
  background: rgba(245,158,11,.18);
}
.cm-cell.type-work {
  border-color: rgba(23,76,255,.14);
}
.cm-cell.type-work em {
  background: rgba(23,76,255,.10);
  color: #174cff;
}
.cm-cell:hover {
  border-color: rgba(23,76,255,.38);
  box-shadow: 0 2px 9px rgba(15,23,42,.08);
}
.cm-cell.selected {
  border-color: #174cff;
  box-shadow: 0 0 0 2px rgba(23,76,255,.16), 0 2px 9px rgba(15,23,42,.08);
}
.create-cal-confirm {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 9px;
  margin-top: 7px;
}
.create-cal-guide {
  margin: 8px 0 9px;
  padding: 8px 10px;
  border: 1px solid rgba(23,76,255,.26);
  border-left: 3px solid #174cff;
  border-radius: 8px;
  background: rgba(23,76,255,.07);
  color: #173a8f;
  font-size: 12px;
  font-weight: 850;
  line-height: 1.45;
}
.create-cal-guide.done {
  border-color: rgba(4,120,87,.22);
  border-left-color: #047857;
  background: rgba(4,120,87,.07);
  color: #047857;
}
.create-cal-status {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  flex-wrap: wrap;
}
#createCalNeed {
  color: #174cff;
  font-size: 11px;
  font-weight: 950;
}
#createCalDirty {
  color: #b45309;
  font-size: 11px;
  font-weight: 900;
}
#createCalOk {
  color: #047857;
  font-size: 11px;
  font-weight: 900;
}
#createCalSaveBtn {
  width: auto !important;
  margin: 0 !important;
  padding: 6px 11px !important;
  border: 1.5px solid #174cff !important;
  background: #fff !important;
  color: #174cff !important;
  font-size: 11.5px !important;
  font-weight: 950 !important;
  box-shadow: 0 0 0 3px rgba(23,76,255,.08);
}
#createCalSaveBtn:hover {
  background: rgba(23,76,255,.08) !important;
  border-color: #0034c0 !important;
  color: #0034c0 !important;
}
#createRunBtn.need-calendar {
  border: 1px solid rgba(23,76,255,.22) !important;
  background: rgba(23,76,255,.10) !important;
  color: #174cff !important;
}
#createModal .dropzone {
  padding: 10px 12px !important;
  border-radius: 8px;
  font-size: 12px;
}
#createModal .dropzone span {
  font-size: 11px !important;
}
#createModal .error-box {
  margin-top: 8px !important;
  font-size: 12px;
}
#createModal .create-month-modal > div:last-child {
  margin-top: 10px !important;
}
#createModal .create-month-modal > div:last-child .btn {
  padding: 8px 10px !important;
  font-size: 13px !important;
}
[data-theme="dark"] .create-cal-box {
  border-color: rgba(255,255,255,.10);
  background: rgba(17,24,39,.72);
}
[data-theme="dark"] .create-step-head b,
[data-theme="dark"] .create-cal-summary b,
[data-theme="dark"] .cm-cell b {
  color: #e6edf6;
}
[data-theme="dark"] .create-step-head span,
[data-theme="dark"] .cm-head,
[data-theme="dark"] .cm-cell span {
  color: #94a3b8;
}
[data-theme="dark"] .cal-mode-btn,
[data-theme="dark"] .create-cal-summary span,
[data-theme="dark"] .cm-cell {
  border-color: rgba(255,255,255,.10);
  background: #111827;
}
[data-theme="dark"] .cal-mode-btn {
  color: #cbd5e1;
}
[data-theme="dark"] .cal-mode-btn.on {
  background: rgba(96,165,250,.16);
  border-color: rgba(96,165,250,.34);
  color: #bfdbfe;
}
[data-theme="dark"] .cal-mode-current {
  background: rgba(96,165,250,.16);
  color: #bfdbfe;
}
[data-theme="dark"] .create-cal-guide {
  border-color: rgba(96,165,250,.30);
  border-left-color: #93c5fd;
  background: rgba(96,165,250,.14);
  color: #bfdbfe;
}
[data-theme="dark"] .create-cal-guide.done {
  border-color: rgba(52,211,153,.30);
  border-left-color: #34d399;
  background: rgba(52,211,153,.12);
  color: #a7f3d0;
}
[data-theme="dark"] #createCalNeed {
  color: #bfdbfe;
}
[data-theme="dark"] #createCalSaveBtn {
  border-color: #93c5fd !important;
  background: rgba(17,24,39,.85) !important;
  color: #bfdbfe !important;
  box-shadow: 0 0 0 3px rgba(96,165,250,.13);
}
[data-theme="dark"] #createRunBtn.need-calendar {
  border-color: rgba(96,165,250,.32) !important;
  background: rgba(96,165,250,.16) !important;
  color: #bfdbfe !important;
}
[data-theme="dark"] .cm-cell.type-rest {
  background: rgba(148,163,184,.12);
}
[data-theme="dark"] .cm-cell.type-holiday3 {
  background: rgba(248,113,113,.13);
}
[data-theme="dark"] .cm-cell.type-holiday2 {
  background: rgba(251,191,36,.14);
}
@media (max-width: 720px) {
  #createModal.modal-mask {
    padding: 8px;
  }
  #createModal .create-month-modal {
    width: 100% !important;
    padding: 12px !important;
  }
  .create-cal-editbar {
    align-items: stretch;
    flex-direction: column;
    gap: 6px;
  }
  .cal-mode-current {
    text-align: center;
  }
  .create-cal-tools,
  .create-cal-summary {
    grid-template-columns: 1fr;
  }
  .create-cal-confirm {
    align-items: stretch;
    flex-direction: column;
  }
  #createCalSaveBtn {
    width: 100% !important;
  }
  .cm-cell {
    height: 32px;
    grid-template-columns: 18px minmax(0, 1fr) 16px;
    padding: 3px;
  }
  .cm-cell b {
    font-size: 11.5px;
  }
  .cm-cell em {
    width: 16px;
    height: 16px;
    font-size: 9px;
  }
}

/* 2026-09-13：考勤规则配置页紧凑化。 */
.rules-page-tight {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.rules-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 14px 16px;
  border: 1px solid rgba(100,116,139,.16);
  border-radius: 10px;
  background: rgba(255,255,255,.72);
  box-shadow: 0 8px 26px rgba(15,23,42,.06);
}
.rules-hero h1 {
  margin: 0;
  font-size: 19px;
  font-weight: 950;
  letter-spacing: 0;
}
.rules-hero .sub {
  margin-top: 4px;
  color: #64748b;
  font-size: 12px;
  font-weight: 700;
  line-height: 1.45;
}
.rules-state-pill {
  flex: 0 0 auto;
  padding: 5px 10px;
  border: 1px solid rgba(100,116,139,.18);
  border-radius: 999px;
  background: #fff;
  color: #64748b;
  font-size: 12px;
  font-weight: 900;
  white-space: nowrap;
}
.rules-state-pill.is-custom {
  border-color: rgba(4,120,87,.22);
  background: rgba(4,120,87,.08);
  color: #047857;
}
.rules-state-pill.is-default {
  border-color: rgba(23,76,255,.22);
  background: rgba(23,76,255,.08);
  color: #174cff;
}
.rules-overview {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}
.rules-overview > div {
  min-width: 0;
  padding: 10px 12px;
  border: 1px solid rgba(100,116,139,.14);
  border-radius: 9px;
  background: rgba(255,255,255,.66);
}
.rules-overview b,
.rules-overview span {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.rules-overview b {
  color: #64748b;
  font-size: 11px;
  font-weight: 850;
}
.rules-overview span {
  margin-top: 3px;
  color: #0f172a;
  font-size: 13px;
  font-weight: 950;
}
.rules-main-grid {
  display: grid;
  grid-template-columns: 1.15fr 1fr;
  gap: 10px;
  align-items: stretch;
}
.rules-section-pay {
  grid-column: 1 / -1;
}
.rules-section {
  min-width: 0;
  padding: 13px;
  border: 1px solid rgba(100,116,139,.16);
  border-radius: 10px;
  background: rgba(255,255,255,.72);
  box-shadow: 0 8px 26px rgba(15,23,42,.05);
}
.rules-section-title {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 9px;
}
.rules-section-title b {
  color: #0f172a;
  font-size: 13px;
  font-weight: 950;
}
.rules-section-title span {
  min-width: 0;
  color: #64748b;
  font-size: 11px;
  font-weight: 750;
  line-height: 1.35;
  text-align: right;
}
.rules-field-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}
.rules-field-grid.two {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.rules-field-grid.five {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}
.rules-field-grid label {
  margin: 0 0 4px;
  color: #64748b;
  font-size: 11px;
  font-weight: 850;
}
.rules-field-grid input,
.rules-field-grid select {
  height: 34px;
  padding: 5px 9px;
  border: 1px solid rgba(100,116,139,.22);
  border-radius: 7px;
  background: rgba(248,250,252,.95);
  color: #0f172a;
  font-size: 13px;
  font-weight: 850;
}
.rules-note-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 9px;
}
.rules-note-list span {
  padding: 4px 7px;
  border-radius: 999px;
  background: rgba(23,76,255,.07);
  color: #334155;
  font-size: 11px;
  font-weight: 800;
}
.rules-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
}
.rules-actions .btn {
  width: auto;
  min-width: 140px;
  margin: 0;
  padding: 9px 18px;
  font-size: 13px;
  font-weight: 900;
}
[data-theme="dark"] .rules-hero,
[data-theme="dark"] .rules-overview > div,
[data-theme="dark"] .rules-section {
  border-color: rgba(255,255,255,.10);
  background: rgba(17,24,39,.70);
}
[data-theme="dark"] .rules-hero h1,
[data-theme="dark"] .rules-overview span,
[data-theme="dark"] .rules-section-title b {
  color: #e6edf6;
}
[data-theme="dark"] .rules-hero .sub,
[data-theme="dark"] .rules-overview b,
[data-theme="dark"] .rules-section-title span,
[data-theme="dark"] .rules-field-grid label {
  color: #94a3b8;
}
[data-theme="dark"] .rules-state-pill {
  border-color: rgba(255,255,255,.12);
  background: #111827;
  color: #cbd5e1;
}
[data-theme="dark"] .rules-state-pill.is-custom {
  border-color: rgba(52,211,153,.28);
  background: rgba(52,211,153,.12);
  color: #a7f3d0;
}
[data-theme="dark"] .rules-state-pill.is-default {
  border-color: rgba(96,165,250,.30);
  background: rgba(96,165,250,.14);
  color: #bfdbfe;
}
[data-theme="dark"] .rules-field-grid input,
[data-theme="dark"] .rules-field-grid select {
  border-color: rgba(255,255,255,.12);
  background: rgba(15,23,42,.92);
  color: #e6edf6;
}
[data-theme="dark"] .rules-note-list span {
  background: rgba(96,165,250,.13);
  color: #cbd5e1;
}
@media (max-width: 980px) {
  .rules-overview,
  .rules-main-grid {
    grid-template-columns: 1fr 1fr;
  }
  .rules-field-grid,
  .rules-field-grid.two,
  .rules-field-grid.five {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 680px) {
  .rules-hero {
    align-items: flex-start;
    flex-direction: column;
  }
  .rules-overview,
  .rules-main-grid,
  .rules-field-grid,
  .rules-field-grid.two,
  .rules-field-grid.five {
    grid-template-columns: 1fr;
  }
  .rules-section-title {
    align-items: flex-start;
    flex-direction: column;
    gap: 3px;
  }
  .rules-section-title span {
    text-align: left;
  }
  .rules-actions {
    flex-direction: column;
  }
  .rules-actions .btn {
    width: 100%;
  }
}

/* 2026-09-13：人员明细最终统一口径
   异常打卡=橙色，请假=红色，正常=绿色；确认状态只由状态列表达。 */
:root {
  --att-abnormal: #f97316;
  --att-abnormal-bg: rgba(249, 115, 22, .10);
  --att-abnormal-bd: rgba(249, 115, 22, .36);
  --att-leave: #dc2626;
  --att-leave-bg: rgba(220, 38, 38, .10);
  --att-leave-bd: rgba(220, 38, 38, .34);
  --att-normal: #10b981;
  --att-normal-bg: rgba(16, 185, 129, .10);
  --att-normal-bd: rgba(16, 185, 129, .34);
}

#tab-detail .ed-seg-filter .emp-cal-summary .cchip.abn,
.emp-full-summary .cchip.abn {
  --cc: var(--att-abnormal) !important;
  background: var(--att-abnormal-bg) !important;
  border-color: var(--att-abnormal-bd) !important;
}
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.lv,
.emp-full-summary .cchip.lv {
  --cc: var(--att-leave) !important;
  background: var(--att-leave-bg) !important;
  border-color: var(--att-leave-bd) !important;
}
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.normal,
.emp-full-summary .cchip.normal {
  --cc: var(--att-normal) !important;
  background: var(--att-normal-bg) !important;
  border-color: var(--att-normal-bd) !important;
}
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.abn .v,
.emp-full-summary .cchip.abn .v { color: var(--att-abnormal) !important; }
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.lv .v,
.emp-full-summary .cchip.lv .v { color: var(--att-leave) !important; }
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.normal .v,
.emp-full-summary .cchip.normal .v { color: var(--att-normal) !important; }
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.active,
.emp-full-summary .cchip.active {
  background: var(--cc) !important;
  border-color: var(--cc) !important;
}
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.active .l,
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.active .v,
#tab-detail .ed-seg-filter .emp-cal-summary .cchip.active .v i,
.emp-full-summary .cchip.active .l,
.emp-full-summary .cchip.active .v,
.emp-full-summary .cchip.active .v i {
  color: #fff !important;
}

.page-monthly-detail .emp-list-row { --row-flag-color: var(--att-normal) !important; }
.page-monthly-detail .emp-list-row.row-flag-abnormal { --row-flag-color: var(--att-abnormal) !important; }
.page-monthly-detail .emp-list-row.row-flag-leave { --row-flag-color: var(--att-leave) !important; }

#tab-detail .emp-chip .ec-pill.s-abn {
  background: var(--att-abnormal-bg) !important;
  color: var(--att-abnormal) !important;
  border-color: var(--att-abnormal-bd) !important;
}
#tab-detail .emp-chip .ec-pill.s-lv {
  background: var(--att-leave-bg) !important;
  color: var(--att-leave) !important;
  border-color: var(--att-leave-bd) !important;
}
#tab-detail .emp-chip .ec-pill.s-ok {
  background: var(--att-normal-bg) !important;
  color: #059669 !important;
  border-color: var(--att-normal-bd) !important;
}
#tab-detail .emp-chip.on .ec-pill {
  background: transparent !important;
  color: #fff !important;
  border-color: rgba(255,255,255,.65) !important;
}

.ls-punch-card.is-abn {
  border-color: var(--att-abnormal-bd) !important;
  background: var(--att-abnormal-bg) !important;
}
.ls-punch-card.is-leave:not(.is-abn) {
  border-color: var(--att-leave-bd) !important;
  background: var(--att-leave-bg) !important;
}
.ls-punch-tag.abn,
.ls-yn.yes,
.el-st.s-abn,
.el-abn-r,
.ls-punch-reason,
.ls-abn-box > span:last-child:not(.ls-yn),
.dd-records-grid .dr .v.abnormal {
  color: var(--att-abnormal) !important;
}
.ls-punch-tag.abn,
.ls-yn.yes {
  background: var(--att-abnormal-bg) !important;
}
.ls-punch-tag.leave,
.el-st.s-lv,
td.el-total.leave,
.ls-metric.leave b,
#tab-detail .emp-list-tbl .ls-metric.leave .ls-num,
.emp-full-list .emp-list-tbl .ls-metric.leave .ls-num,
.emp-cal-cell .ec-leave,
.emp-cal-cell .ec-leave-am,
.emp-cal-cell .ec-val.lv,
.emp-cal-cell .ec-foot-vals .lv {
  color: var(--att-leave) !important;
}
.ls-punch-tag.leave {
  background: var(--att-leave-bg) !important;
}
.emp-list-tbl tbody tr.emp-list-row.cell-abn > td.el-abn,
#tab-detail .emp-table-scroll .emp-list-tbl tbody tr.emp-list-row.cell-abn > td.el-pu,
.emp-full-list .emp-table-scroll .emp-list-tbl tbody tr.emp-list-row.cell-abn > td.el-pu {
  background: rgba(249, 115, 22, .045) !important;
}
.emp-list-tbl tbody tr.emp-list-row.cell-leave > td.el-total.leave {
  background: rgba(220, 38, 38, .045) !important;
}

.emp-cal-cell.cell-abn,
#tab-detail .emp-cal-cell.cell-abn {
  border-color: var(--att-abnormal-bd) !important;
  box-shadow: inset 0 0 0 1px rgba(249, 115, 22, .28) !important;
}
#tab-detail .emp-cal-cell.cell-abn::after { color: var(--att-abnormal) !important; }
.emp-cal-cell.cell-leave,
#tab-detail .emp-cal-cell.cell-leave {
  border-color: var(--att-leave-bd) !important;
  box-shadow: inset 0 0 0 1px rgba(220, 38, 38, .24) !important;
}

/* 人员明细工时输入：至少完整显示 100.0 这一类数值。 */
#tab-detail .emp-list-tbl .ls-metric-grid,
.emp-full-list .emp-list-tbl .ls-metric-grid {
  grid-template-columns: repeat(3, minmax(58px, 1fr)) !important;
  gap: 7px !important;
}
#tab-detail .emp-list-tbl .ls-summary-grid,
.emp-full-list .emp-list-tbl .ls-summary-grid {
  grid-template-columns: repeat(2, minmax(52px, 1fr)) !important;
  gap: 6px !important;
}
#tab-detail .emp-list-tbl .ls-metric .ls-num,
.emp-full-list .emp-list-tbl .ls-metric .ls-num {
  width: 58px !important;
  max-width: 58px !important;
  min-width: 58px !important;
  padding: 0 4px !important;
  font-size: 12px !important;
  font-variant-numeric: tabular-nums;
}
#tab-detail .emp-list-tbl .ls-metric.static b,
.emp-full-list .emp-list-tbl .ls-metric.static b {
  min-width: 52px;
  display: inline-block;
  font-variant-numeric: tabular-nums;
}
#tab-detail .emp-list-tbl th.th-half,
#tab-detail .emp-list-tbl th.th-totalgrp,
.emp-full-list .emp-list-tbl th.th-half,
.emp-full-list .emp-list-tbl th.th-totalgrp {
  padding-left: 8px !important;
  padding-right: 8px !important;
}
#tab-detail .emp-list-tbl th.th-half .th-metric-grid,
.emp-full-list .emp-list-tbl th.th-half .th-metric-grid {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(58px, 1fr));
  gap: 7px;
  margin-top: 4px;
  width: 100%;
}
#tab-detail .emp-list-tbl th.th-totalgrp .th-summary-grid,
.emp-full-list .emp-list-tbl th.th-totalgrp .th-summary-grid {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(52px, 1fr));
  gap: 6px;
  margin-top: 4px;
  width: 100%;
}
#tab-detail .emp-list-tbl th.th-half .th-metric-grid i,
#tab-detail .emp-list-tbl th.th-totalgrp .th-summary-grid i,
.emp-full-list .emp-list-tbl th.th-half .th-metric-grid i,
.emp-full-list .emp-list-tbl th.th-totalgrp .th-summary-grid i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  height: 18px;
  border-radius: 5px;
  background: rgba(255,255,255,.70);
  color: #64748b;
  font-size: 10px;
  font-style: normal;
  font-weight: 900;
  line-height: 1;
}
#tab-detail .emp-list-tbl th.th-half .th-metric-grid i.sortable,
#tab-detail .emp-list-tbl th.th-totalgrp .th-summary-grid i.sortable,
.emp-full-list .emp-list-tbl th.th-half .th-metric-grid i.sortable,
.emp-full-list .emp-list-tbl th.th-totalgrp .th-summary-grid i.sortable {
  cursor: pointer;
  user-select: none;
  border: 1px solid transparent;
  transition: background .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease;
}
#tab-detail .emp-list-tbl th.th-half .th-metric-grid i.sortable:hover,
#tab-detail .emp-list-tbl th.th-totalgrp .th-summary-grid i.sortable:hover,
.emp-full-list .emp-list-tbl th.th-half .th-metric-grid i.sortable:hover,
.emp-full-list .emp-list-tbl th.th-totalgrp .th-summary-grid i.sortable:hover {
  border-color: rgba(37, 99, 235, .24);
  box-shadow: inset 0 0 0 1px rgba(37, 99, 235, .08);
}
#tab-detail .emp-list-tbl th.th-half .th-metric-grid i.sortable.active,
#tab-detail .emp-list-tbl th.th-totalgrp .th-summary-grid i.sortable.active,
.emp-full-list .emp-list-tbl th.th-half .th-metric-grid i.sortable.active,
.emp-full-list .emp-list-tbl th.th-totalgrp .th-summary-grid i.sortable.active {
  background: rgba(37, 99, 235, .11);
  border-color: rgba(37, 99, 235, .30);
  color: #174cff;
}
#tab-detail .emp-list-tbl th.th-half .th-metric-grid i.sortable small,
#tab-detail .emp-list-tbl th.th-totalgrp .th-summary-grid i.sortable small,
.emp-full-list .emp-list-tbl th.th-half .th-metric-grid i.sortable small,
.emp-full-list .emp-list-tbl th.th-totalgrp .th-summary-grid i.sortable small {
  margin-left: 2px;
  font-size: 9px;
  font-weight: 950;
  line-height: 1;
}
#tab-detail .emp-list-tbl th.th-half .th-metric-grid i:nth-child(2),
#tab-detail .emp-list-tbl th.th-totalgrp .th-summary-grid i:nth-child(2),
.emp-full-list .emp-list-tbl th.th-half .th-metric-grid i:nth-child(2),
.emp-full-list .emp-list-tbl th.th-totalgrp .th-summary-grid i:nth-child(2) {
  color: var(--att-leave);
}
#tab-detail .emp-list-tbl th.th-half .th-metric-grid i:nth-child(3),
.emp-full-list .emp-list-tbl th.th-half .th-metric-grid i:nth-child(3),
#tab-detail .emp-list-tbl th.th-totalgrp .th-summary-grid i:nth-child(1),
.emp-full-list .emp-list-tbl th.th-totalgrp .th-summary-grid i:nth-child(1) {
  color: #174cff;
}

[data-theme="dark"] #tab-detail .ed-seg-filter .emp-cal-summary .cchip.abn,
[data-theme="dark"] .emp-full-summary .cchip.abn {
  background: rgba(249, 115, 22, .16) !important;
  border-color: rgba(249, 115, 22, .42) !important;
}
[data-theme="dark"] #tab-detail .ed-seg-filter .emp-cal-summary .cchip.lv,
[data-theme="dark"] .emp-full-summary .cchip.lv {
  background: rgba(248, 113, 113, .16) !important;
  border-color: rgba(248, 113, 113, .42) !important;
}
[data-theme="dark"] #tab-detail .ed-seg-filter .emp-cal-summary .cchip.normal,
[data-theme="dark"] .emp-full-summary .cchip.normal {
  background: rgba(52, 211, 153, .14) !important;
  border-color: rgba(52, 211, 153, .38) !important;
}
[data-theme="dark"] #tab-detail .ed-seg-filter .emp-cal-summary .cchip.abn .v,
[data-theme="dark"] .emp-full-summary .cchip.abn .v,
[data-theme="dark"] .ls-punch-tag.abn,
[data-theme="dark"] .ls-yn.yes,
[data-theme="dark"] .el-st.s-abn,
[data-theme="dark"] .el-abn-r,
[data-theme="dark"] .ls-punch-reason,
[data-theme="dark"] .ls-abn-box > span:last-child:not(.ls-yn) {
  color: #fb923c !important;
}
[data-theme="dark"] #tab-detail .ed-seg-filter .emp-cal-summary .cchip.lv .v,
[data-theme="dark"] .emp-full-summary .cchip.lv .v,
[data-theme="dark"] .ls-punch-tag.leave,
[data-theme="dark"] .el-st.s-lv,
[data-theme="dark"] td.el-total.leave,
[data-theme="dark"] #tab-detail .emp-list-tbl .ls-metric.leave .ls-num,
[data-theme="dark"] .emp-full-list .emp-list-tbl .ls-metric.leave .ls-num {
  color: #fca5a5 !important;
}
[data-theme="dark"] #tab-detail .emp-list-tbl th.th-half .th-metric-grid i,
[data-theme="dark"] #tab-detail .emp-list-tbl th.th-totalgrp .th-summary-grid i,
[data-theme="dark"] .emp-full-list .emp-list-tbl th.th-half .th-metric-grid i,
[data-theme="dark"] .emp-full-list .emp-list-tbl th.th-totalgrp .th-summary-grid i {
  background: rgba(255,255,255,.07);
  color: #94a3b8;
}

/* 智能推荐按业务动作着色，不再让操作人员理解高/中/低。 */
.ai-level.ai-label-leave {
  min-width: 34px;
  background: var(--att-leave-bg) !important;
  color: var(--att-leave) !important;
}
.ai-level.ai-label-missing,
.ai-level.ai-label-extra,
.ai-level.ai-label-check {
  min-width: 44px;
  background: var(--att-abnormal-bg) !important;
  color: var(--att-abnormal) !important;
}
.ai-level.ai-label-ignore,
.ai-level.ai-label-ok {
  min-width: 44px;
  background: var(--att-normal-bg) !important;
  color: #059669 !important;
}
.ai-text b {
  color: #334155 !important;
}
[data-theme="dark"] .ai-level.ai-label-leave {
  background: rgba(248, 113, 113, .16) !important;
  color: #fca5a5 !important;
}
[data-theme="dark"] .ai-level.ai-label-missing,
[data-theme="dark"] .ai-level.ai-label-extra,
[data-theme="dark"] .ai-level.ai-label-check {
  background: rgba(249, 115, 22, .16) !important;
  color: #fb923c !important;
}
[data-theme="dark"] .ai-level.ai-label-ignore,
[data-theme="dark"] .ai-level.ai-label-ok {
  background: rgba(52, 211, 153, .14) !important;
  color: #6ee7b7 !important;
}

/* 人员明细列表：统一所有大字段分组线，避免只有局部列像“多出来的线框”。 */
:root {
  --emp-list-group-line: rgba(203, 213, 225, .88);
}
#tab-detail .emp-list-tbl th.th-punch,
#tab-detail .emp-list-tbl td.el-pu,
#tab-detail .emp-list-tbl th.th-half,
#tab-detail .emp-list-tbl td.el-half,
#tab-detail .emp-list-tbl th.th-totalgrp,
#tab-detail .emp-list-tbl td.el-mini-summary,
#tab-detail .emp-list-tbl th.th-ai,
#tab-detail .emp-list-tbl td.el-ai,
#tab-detail .emp-list-tbl th.th-st,
#tab-detail .emp-list-tbl td.el-status,
#tab-detail .emp-list-tbl th.th-op,
#tab-detail .emp-list-tbl td.el-op,
.emp-full-list .emp-list-tbl th.th-punch,
.emp-full-list .emp-list-tbl td.el-pu,
.emp-full-list .emp-list-tbl th.th-half,
.emp-full-list .emp-list-tbl td.el-half,
.emp-full-list .emp-list-tbl th.th-totalgrp,
.emp-full-list .emp-list-tbl td.el-mini-summary,
.emp-full-list .emp-list-tbl th.th-ai,
.emp-full-list .emp-list-tbl td.el-ai,
.emp-full-list .emp-list-tbl th.th-st,
.emp-full-list .emp-list-tbl td.el-status,
.emp-full-list .emp-list-tbl th.th-op,
.emp-full-list .emp-list-tbl td.el-op {
  border-left: 1px solid var(--emp-list-group-line) !important;
}
#tab-detail .emp-list-tbl th.th-totalgrp,
#tab-detail .emp-list-tbl td.el-mini-summary,
.emp-full-list .emp-list-tbl th.th-totalgrp,
.emp-full-list .emp-list-tbl td.el-mini-summary {
  border-right: none !important;
}
[data-theme="dark"] {
  --emp-list-group-line: rgba(71, 85, 105, .88);
}

#tab-detail .emp-list-tbl td.el-mini-summary,
.emp-full-list .emp-list-tbl td.el-mini-summary {
  background: transparent !important;
}
[data-theme="dark"] #tab-detail .emp-list-tbl td.el-mini-summary,
[data-theme="dark"] .emp-full-list .emp-list-tbl td.el-mini-summary {
  background: transparent !important;
}

/* 手工调整归属到当天：在日期单元格右上角显示小标签。 */
#tab-detail .emp-list-tbl td.el-dayinfo,
.emp-full-list .emp-list-tbl td.el-dayinfo {
  position: sticky;
  overflow: visible !important;
  padding-right: 31px !important;
}
.ls-manual-corner {
  position: absolute;
  top: 4px;
  right: 5px;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 15px;
  min-width: 24px;
  padding: 0 4px;
  border: 1px solid rgba(245, 158, 11, .40);
  border-radius: 999px;
  background: rgba(255, 247, 237, .96);
  color: #b45309;
  font-size: 9px;
  font-weight: 950;
  line-height: 1;
  box-shadow: 0 1px 4px rgba(15,23,42,.08);
}
[data-theme="dark"] .ls-manual-corner {
  border-color: rgba(245, 158, 11, .45);
  background: rgba(69, 43, 13, .94);
  color: #fcd34d;
}

/* 打卡记录列最终显示规则：适度按内容给宽度，超出则完整换行，不再单行省略。 */
#tab-detail .emp-table-scroll .emp-list-tbl th.th-dayinfo.th-sort-date i.sortable,
.emp-full-list .emp-table-scroll .emp-list-tbl th.th-dayinfo.th-sort-date i.sortable {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  height: 19px;
  padding: 0 7px;
  border: 1px solid transparent;
  border-radius: 5px;
  background: rgba(255,255,255,.70);
  color: #64748b;
  cursor: pointer;
  font-size: 10.5px;
  font-style: normal;
  font-weight: 900;
  line-height: 1;
  user-select: none;
  transition: background .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease;
}
#tab-detail .emp-table-scroll .emp-list-tbl th.th-dayinfo.th-sort-date i.sortable:hover,
.emp-full-list .emp-table-scroll .emp-list-tbl th.th-dayinfo.th-sort-date i.sortable:hover {
  border-color: rgba(37, 99, 235, .24);
  box-shadow: inset 0 0 0 1px rgba(37, 99, 235, .08);
}
#tab-detail .emp-table-scroll .emp-list-tbl th.th-dayinfo.th-sort-date i.sortable.active,
.emp-full-list .emp-table-scroll .emp-list-tbl th.th-dayinfo.th-sort-date i.sortable.active {
  background: rgba(37, 99, 235, .11);
  border-color: rgba(37, 99, 235, .30);
  color: #174cff;
}
#tab-detail .emp-table-scroll .emp-list-tbl th.th-dayinfo.th-sort-date i.sortable small,
.emp-full-list .emp-table-scroll .emp-list-tbl th.th-dayinfo.th-sort-date i.sortable small {
  margin-left: 2px;
  font-size: 9px;
  font-weight: 950;
  line-height: 1;
}
#tab-detail .emp-table-scroll .ls-punch-card,
.emp-full-list .emp-table-scroll .ls-punch-card {
  align-items: stretch;
  min-height: 30px;
  overflow: visible;
}
#tab-detail .emp-table-scroll .ls-punch-process,
.emp-full-list .emp-table-scroll .ls-punch-process,
#tab-detail .emp-list-row td.el-pu .ls-punch-process,
.emp-full-list .emp-list-row td.el-pu .ls-punch-process {
  max-width: none !important;
  overflow: visible !important;
  color: #1f2937;
  font-size: 11px;
  font-weight: 800;
  line-height: 1.28;
  text-align: left;
  text-overflow: clip !important;
  white-space: normal !important;
  word-break: normal;
  overflow-wrap: anywhere;
}
#tab-detail .emp-table-scroll .ls-punch-tags,
.emp-full-list .emp-table-scroll .ls-punch-tags {
  flex-wrap: wrap;
  overflow: visible;
}
[data-theme="dark"] #tab-detail .emp-table-scroll .ls-punch-process,
[data-theme="dark"] .emp-full-list .emp-table-scroll .ls-punch-process,
[data-theme="dark"] #tab-detail .emp-list-row td.el-pu .ls-punch-process,
[data-theme="dark"] .emp-full-list .emp-list-row td.el-pu .ls-punch-process {
  color: #d7e0eb;
}

/* 顶部月汇总标签支持点击筛选。 */
.bulk-month-total .total-chip {
  cursor: pointer;
  transition: border-color .15s ease, background .15s ease, box-shadow .15s ease, transform .12s ease;
}
.bulk-month-total .total-chip:hover {
  border-color: rgba(23, 76, 255, .34);
  box-shadow: 0 2px 8px rgba(15,23,42,.08);
  transform: translateY(-1px);
}
.bulk-month-total .total-chip.active {
  box-shadow: 0 0 0 2px rgba(23, 76, 255, .12), 0 4px 12px rgba(15,23,42,.10);
}
.bulk-month-total .total-chip.total-wd.active {
  border-color: rgba(23, 76, 255, .48);
  background: rgba(23, 76, 255, .08);
}
.bulk-month-total .total-chip.total-we.active {
  border-color: rgba(249, 115, 22, .52);
  background: rgba(249, 115, 22, .10);
}
.bulk-month-total .total-chip.total-hol.active {
  border-color: rgba(245, 158, 11, .55);
  background: rgba(245, 158, 11, .12);
}
.bulk-month-total .total-chip.total-leave.active {
  border-color: var(--att-leave-bd);
  background: var(--att-leave-bg);
}
