/* ========================
   海内云健运营管理系统 - 样式
   明亮现代风 / 年轻 SaaS 主题
   ======================== */

:root {
  /* 明亮现代风 / 年轻 SaaS 主题 */
  --bg-base: #f4f6fb;
  --bg-surface: #ffffff;
  --bg-surface-hover: #f1f5f9;
  --bg-elevated: #eef2f7;
  --bg-card: #ffffff;
  --bg-hover: #f1f5f9;
  --border-color: #e6eaf1;
  --border-light: rgba(15, 23, 42, 0.06);
  --border: #e6eaf1;
  --text-primary: #1e293b;
  --text-secondary: #64748b;
  --text-muted: #94a3b8;
  --accent-primary: #14b8a6;
  --accent: #14b8a6;
  --accent-gradient: linear-gradient(135deg, #2dd4bf 0%, #6366f1 100%);
  --accent-primary-dim: rgba(20, 184, 166, 0.12);
  --accent-blue: #3b82f6;
  --accent-purple: #8b5cf6;
  --accent-amber: #f59e0b;
  --accent-green: #10b981;
  --accent-red: #f43f5e;
  --accent-pink: #ec4899;
  /* 统一按钮配色：纯淡蓝色背景 + 深蓝文字（与 HN Logo 一致），无渐变 */
  --btn-blue: #dbeafe;
  --btn-blue-hover: #bcd4fb;
  --btn-blue-border: #cfe0fb;
  --btn-blue-text: #1e3a8a;
  --radius-sm: 8px;
  --radius-md: 14px;
  --radius-lg: 20px;
  --shadow-sm: 0 1px 2px rgba(15,23,42,0.04), 0 1px 3px rgba(15,23,42,0.06);
  --shadow-md: 0 4px 12px rgba(15,23,42,0.06), 0 2px 4px rgba(15,23,42,0.04);
  --shadow-lg: 0 12px 32px rgba(15,23,42,0.10), 0 4px 8px rgba(15,23,42,0.05);
  --font: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif;
  --mono: 'SF Mono', 'Cascadia Code', 'Consolas', monospace;
}

* { margin: 0; padding: 0; box-sizing: border-box; }

body {
  font-family: var(--font);
  background: var(--bg-base);
  color: var(--text-primary);
  font-size: 14px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

.hidden { display: none !important; }
.text-right { text-align: right; }
.text-center { text-align: center; }
.text-muted { color: var(--text-muted); }
.text-sm { font-size: 12px; }

/* ======================== 登录页 ======================== */
.login-wrap {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  background: radial-gradient(ellipse at 50% 30%, rgba(45, 212, 191, 0.08) 0%, transparent 60%),
              var(--bg-base);
}

.login-card {
  width: 100%;
  max-width: 440px;
  background: var(--bg-surface);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-lg);
  padding: 40px 36px;
  box-shadow: var(--shadow-lg);
}

.login-logo {
  text-align: center;
  margin-bottom: 32px;
}

.login-logo-icon {
  width: 56px;
  height: 56px;
  border-radius: var(--radius-md);
  background: #1e3a8a;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  font-weight: 700;
  color: #fff;
  margin: 0 auto 16px;
}

.login-logo-text { display: flex; flex-direction: column; align-items: center; }
.login-logo-title {
  font-size: 21px;
  font-weight: 700;
  color: var(--text-primary);
  line-height: 1.25;
  letter-spacing: 0.5px;
}
.login-logo-sub {
  font-size: 12px;
  color: var(--text-muted);
  margin-top: 5px;
  letter-spacing: 1px;
}

.login-tabs {
  display: flex;
  gap: 4px;
  background: var(--bg-base);
  border-radius: var(--radius-sm);
  padding: 4px;
  margin-bottom: 24px;
}

.login-tab {
  flex: 1;
  padding: 8px 12px;
  border: none;
  background: transparent;
  color: var(--text-secondary);
  font-size: 13px;
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: all 0.2s;
  font-family: var(--font);
}

.login-tab.active {
  background: var(--bg-elevated);
  color: var(--text-primary);
}

.login-form {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.login-hint {
  text-align: center;
  font-size: 12px;
  color: var(--text-muted);
  line-height: 1.8;
  padding: 12px;
  background: var(--bg-base);
  border-radius: var(--radius-sm);
}

/* ======================== 表单 ======================== */
.form-group {
  display: block;
  text-align: left;
}
.form-group .form-label,
.form-label {
  display: block;
  margin-bottom: 6px;
  font-size: 13px;
  color: var(--text-secondary);
  font-weight: 500;
  text-align: left;
}
.form-group .form-input,
.form-group select,
.form-group textarea,
.form-input,
.form-input[type="text"],
.form-input[type="email"],
.form-input[type="password"],
.form-input[type="number"],
.form-input[type="date"],
.form-input[type="tel"],
.form-input[type="time"] {
  display: block;
  width: 100%;
  box-sizing: border-box;
  text-align: left;
}
.form-group .form-textarea,
textarea {
  display: block;
  width: 100%;
  box-sizing: border-box;
  text-align: left;
  min-height: 76px;
  resize: vertical;
  line-height: 1.5;
}

.form-input {
  padding: 9px 12px;
  background: #ffffff;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  color: var(--text-primary);
  font-size: 14px;
  font-family: var(--font);
  transition: border-color 0.2s;
  width: 100%;
  min-height: 38px;
}

.form-input:focus {
  outline: none;
  border-color: var(--accent-primary);
  box-shadow: 0 0 0 3px var(--accent-primary-dim);
}

.form-input::placeholder { color: var(--text-muted); }

.form-input-sm {
  padding: 6px 10px;
  font-size: 13px;
}

.form-textarea {
  resize: vertical;
  min-height: 80px;
  font-family: var(--font);
  width: 100%;
  box-sizing: border-box;
  padding: 9px 12px;
  background: #ffffff;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  color: var(--text-primary);
  font-size: 14px;
  line-height: 1.5;
  transition: border-color 0.2s, box-shadow 0.2s;
}
.form-textarea:focus {
  outline: none;
  border-color: var(--accent-primary);
  box-shadow: 0 0 0 2px var(--accent-primary-dim);
}

.form-row {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}

.form-row .form-group {
  flex: 1 1 240px;
  min-width: 240px;
}
.flex-1 { flex: 1; min-width: 120px; }
.flex-2 { flex: 2; min-width: 180px; }
.form-hint { color: #6b7280; font-size: 12px; margin-top: 4px; line-height: 1.4; }

.form-actions {
  display: flex;
  gap: 12px;
  justify-content: flex-end;
  margin-top: 20px;
}

/* ======================== 按钮 ======================== */
.btn {
  padding: 9px 16px;
  border: 1px solid var(--btn-blue-border);
  background: var(--btn-blue);
  color: var(--btn-blue-text);
  border-radius: var(--radius-sm);
  font-size: 14px;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, transform 0.15s, box-shadow 0.15s;
  font-family: var(--font);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
}

/* 悬停：颜色加深，提供清晰的反馈；文字始终保持深蓝，清晰可读 */
.btn:hover { background: var(--btn-blue-hover); border-color: var(--btn-blue-border); transform: translateY(-1px); }

.btn-primary {
  background: var(--btn-blue);
  border-color: var(--btn-blue-border);
  color: var(--btn-blue-text);
  font-weight: 500;
  box-shadow: none;
}
.btn-primary:hover { background: var(--btn-blue-hover); color: var(--btn-blue-text); border-color: var(--btn-blue-border); transform: translateY(-1px); box-shadow: none; }

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

.btn-block { width: 100%; justify-content: center; }

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

.btn-icon { padding: 5px 8px; font-size: 14px; line-height: 1; }

/* 危险操作：保留浅蓝底，但用红色文字/边框区分，避免误触 */
.btn-danger-text { color: var(--accent-red); border-color: var(--btn-blue-border); background: var(--btn-blue); }
.btn-danger-text:hover { background: var(--btn-blue-hover); color: #dc2626; border-color: #fca5a5; }

/* 按钮内的统一线性图标（与菜单图标一致的描边风格） */
.btn-ico { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; flex: none; }
.btn-ico svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }

/* ======================== 布局 ======================== */
.app-layout {
  display: flex;
  min-height: 100vh;
}

.sidebar {
  width: 240px;
  background: var(--bg-surface);
  border-right: 1px solid var(--border-color);
  display: flex;
  flex-direction: column;
  flex-shrink: 0;
  position: fixed;
  height: 100vh;
  overflow: hidden;
}

.sidebar-logo {
  display: flex;
  align-items: center;
  gap: 12px;
  height: 61px;
  padding: 0 16px;
  border-bottom: 1px solid var(--border-color);
}

.sidebar-logo-icon {
  width: 36px;
  height: 36px;
  border-radius: var(--radius-sm);
  background: #1e3a8a;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 15px;
  font-weight: 700;
  color: #fff;
  flex-shrink: 0;
}

.sidebar-logo-title { font-size: 15px; font-weight: 600; color: var(--text-primary); line-height: 1.3; letter-spacing: 0.2px; }
.sidebar-logo-sub { font-size: 11px; color: var(--text-muted); margin-top: 2px; letter-spacing: 0.4px; }

.sidebar-nav {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 12px 8px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.nav-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  color: var(--text-secondary);
  text-decoration: none;
  border-radius: var(--radius-sm);
  font-size: 14px;
  transition: all 0.15s;
}

.nav-item:hover { background: var(--bg-surface-hover); color: var(--text-primary); }
.nav-item.active { background: var(--accent-primary-dim); color: var(--accent-primary); font-weight: 600; box-shadow: inset 3px 0 0 var(--accent-primary); }
.nav-icon { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; margin-right: 10px; color: inherit; font-size: 16px; }
.nav-icon svg { width: 100%; height: 100%; fill: none; stroke: currentColor; }

/* 二级菜单分组 */
.nav-group { display: flex; flex-direction: column; }
.nav-group-header { cursor: pointer; }
.nav-group-label { flex: 1; }
.nav-caret { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; color: var(--text-muted); transition: transform 0.2s; }
.nav-caret svg { width: 14px; height: 14px; }
.nav-group.expanded .nav-caret { transform: rotate(90deg); }
.nav-sub { display: none; flex-direction: column; gap: 2px; margin-top: 2px; }
.nav-group.expanded .nav-sub { display: flex; }
.nav-sub-item { padding-left: 42px; font-size: 13px; }

/* 左侧边栏底部版本脚注 */
.sidebar-footer {
  flex-shrink: 0;
  padding: 10px 16px;
  border-top: 1px solid var(--border-color);
  font-size: 11px;
  color: var(--text-muted);
  line-height: 1.7;
  cursor: pointer;
  transition: background 0.15s;
}
.sidebar-footer:hover { background: var(--bg-surface-hover); }
.sidebar-footer-ver { font-weight: 600; color: var(--text-secondary); }
.sidebar-footer-dev { color: var(--accent-primary); font-weight: 600; margin-left: 2px; }
.sidebar-footer-time { opacity: 0.85; }

/* ===== 侧边栏菜单拖拽排序 ===== */
.sidebar-nav { user-select: none; }
.nav-draggable { cursor: grab; }
.nav-draggable:active { cursor: grabbing; }
.nav-dragging { opacity: 0.4; }
.nav-dragging .nav-grip { opacity: 1 !important; }
.nav-grip {
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
  width: 14px;
  height: 18px;
  margin-right: 4px;
  color: var(--text-muted);
  opacity: 0;
  transition: opacity 0.15s ease;
  pointer-events: none;
}
.sidebar-nav:hover .nav-grip { opacity: 0.3; }
.nav-group-header:hover .nav-grip,
.nav-sub-item:hover .nav-grip,
.nav-item:not(.nav-group-header):not(.nav-sub-item):hover .nav-grip { opacity: 0.6; }
.nav-group.nav-dragging,
.nav-sub-item.nav-dragging { box-shadow: 0 0 0 1px rgba(80,120,255,0.45); border-radius: 8px; }

/* 版本脚注·重置菜单排序 */
.sidebar-footer-reset {
  margin-top: 2px;
  font-size: 11px;
  color: var(--text-muted);
  cursor: pointer;
  opacity: 0.75;
}
.sidebar-footer-reset:hover { opacity: 1; text-decoration: underline; color: var(--accent-primary); }

/* 版本更新历史弹窗列表（点击侧栏版本脚注弹出） */
.ver-item { padding: 12px 14px; border: 1px solid var(--border-color); border-radius: 8px; margin-bottom: 10px; background: var(--bg-surface); }
.ver-item:last-child { margin-bottom: 0; }
.ver-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 4px; }
.ver-v { font-weight: 700; color: var(--accent-primary); font-size: 13px; }
.ver-date { font-size: 12px; color: var(--text-muted); }
.ver-desc { font-size: 13px; color: var(--text-secondary); line-height: 1.6; }

.main-content {
  flex: 1;
  margin-left: 240px;
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  min-width: 0; /* 关键：允许在窄屏下收缩，避免内部宽表把页面撑破 */
}

.topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 61px;
  padding: 0 24px;
  border-bottom: 1px solid var(--border-color);
  background: var(--bg-surface);
  position: sticky;
  top: 0;
  z-index: 10;
}

.topbar-title { font-size: 18px; font-weight: 600; }

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

.user-badge {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 12px;
  background: var(--bg-elevated);
  border-radius: var(--radius-sm);
  font-size: 13px;
}

.user-role {
  font-size: 11px;
  color: var(--text-muted);
  background: var(--bg-base);
  padding: 2px 6px;
  border-radius: 4px;
}

.user-name { font-weight: 500; }

.content-area {
  flex: 1;
  padding: 22px;
  display: flex;
  flex-direction: column;
  gap: 18px;
}

/* 顶部面包屑：首页 / 一级分组 / 当前页面（与供应商工作台一致） */
.page-breadcrumb {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--text-muted);
  font-size: 13px;
}
.page-breadcrumb svg { width: 14px; height: 14px; }
.page-crumb-root { color: var(--text-secondary); }
.page-crumb-sep { color: var(--border-color); }
.page-crumb-current { color: var(--text-primary); font-weight: 600; }

/* 页面标题区：与供应商工作台 sp-page-head 风格一致 */
.page-header {
  margin-bottom: 18px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}
.page-header-text { min-width: 0; }
.page-title {
  font-size: 20px;
  font-weight: 700;
  color: var(--text-primary);
}
.page-subtitle {
  color: var(--text-secondary);
  font-size: 13px;
  margin-top: 4px;
  line-height: 1.5;
}
.page-header-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
}
.page-header-actions .report-tabs {
  margin-bottom: 0;
  border-bottom: none;
}
.page-header-actions .report-tab {
  margin-bottom: 0;
}
.page-header-actions .btn {
  white-space: nowrap;
}

/* 内容主卡片：与供应商工作台 supplier-card 对齐 */
.page-card {
  background: var(--bg-surface);
  border: 1px solid var(--border-color);
  border-radius: 12px;
  padding: 16px 20px;
  margin-bottom: 16px;
}
.page-card-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 12px;
  gap: 12px;
  flex-wrap: wrap;
}
.page-card-head h3 { margin: 0; font-size: 15px; font-weight: 600; }
.page-card-head-btns { display: flex; gap: 8px; }

/* ======================== 统计卡片 ======================== */
.stat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 16px;
}

.stat-card {
  background: var(--bg-surface);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  padding: 18px 20px;
}

.stat-label { font-size: 13px; color: var(--text-secondary); margin-bottom: 6px; }
.stat-value { font-size: 28px; font-weight: 700; letter-spacing: -0.5px; }
.stat-sub { font-size: 12px; color: var(--text-muted); margin-top: 4px; }

/* ======================== 面板 ======================== */
.panel {
  background: var(--bg-surface);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  overflow: hidden;
}

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

.panel-header h3 { font-size: 15px; font-weight: 600; }
.panel-actions { display: flex; gap: 8px; }
.panel-header-actions { display: flex; gap: 8px; align-items: center; }
.panel-body { padding: 20px; }

/* ======================== 图表 ======================== */
.chart-container { position: relative; padding: 16px; }
.chart-grid-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}

@media (max-width: 900px) {
  .chart-grid-2 { grid-template-columns: 1fr; }
}

/* PC 窄屏（约 770~1100px）：侧栏仍为 240px，内容区变窄，宽表需横向滚动而非撑破页面 */
@media (max-width: 1100px) {
  .content-area { padding: 16px; gap: 16px; }
  /* 面板内表格横向滚动；panel-body 高度由内容决定，overflow-y 不会裁切 */
  .panel-body { overflow-x: auto; }
  .data-table { min-width: 680px; }
}

/* 超宽屏（>=1600px）：内容区留出最大宽度，避免一行拉得过长 */
@media (min-width: 1600px) {
  .content-area { max-width: 1480px; margin: 0 auto; width: 100%; }
}

/* ======================== 表格 ======================== */
.data-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

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

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

.data-table tbody tr:hover { background: var(--bg-surface-hover); }
.data-table .total-row { font-weight: 600; background: var(--bg-base); }

/* ======================== 业绩管理（业务管理） ======================== */
.biz-editable { cursor: pointer; color: var(--accent-primary); text-decoration: underline dotted; }
.biz-editable:hover { opacity: .82; }
.text-danger { color: var(--danger, #e5484d); }
.muted { color: var(--text-muted); }
.biz-hint { font-size: 12px; margin: 10px 2px 0; }
.biz-self-row { background: rgba(59, 130, 246, .06); }
.biz-pager { display: flex; align-items: center; justify-content: space-between; padding: 14px 4px; gap: 12px; flex-wrap: wrap; }
.biz-pager-ctrls { display: flex; align-items: center; gap: 8px; }
.biz-page-size { width: auto; padding: 5px 8px; }

/* ======================== 徽章 ======================== */
.badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 500;
  white-space: nowrap;
}

.badge-success { background: rgba(34, 197, 94, 0.15); color: var(--accent-green); }
.badge-info { background: rgba(59, 130, 246, 0.15); color: var(--accent-blue); }
.badge-warning { background: rgba(245, 158, 11, 0.15); color: var(--accent-amber); }
.badge-muted { background: rgba(110, 118, 129, 0.15); color: var(--text-muted); }
.badge-green { background: rgba(34, 197, 94, 0.15); color: var(--accent-green); }

/* 统一库存记录弹窗 */
.inv-toolbar { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }
.inv-section-title { font-size: 14px; font-weight: 600; color: var(--text-primary); margin: 18px 0 10px; padding-left: 10px; border-left: 3px solid var(--primary); }
.inv-overview, .inv-flows { overflow-x: auto; }
.inv-flow-filter { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; font-size: 13px; color: var(--text-muted); }
.inv-overview-table, .inv-flows-table { min-width: 720px; }
/* 供应商业务类型：对齐工作看板「负责人」——图标 + 浅色中性胶囊 */
.badge-soft { background: rgba(100, 116, 139, 0.14); color: #475569; }

/* 进度徽章 */
.progress-badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  margin-right: 6px;
}
.progress-high { background: rgba(34, 197, 94, 0.15); color: var(--accent-green); }
.progress-mid { background: rgba(245, 158, 11, 0.15); color: var(--accent-amber); }
.progress-low { background: rgba(239, 68, 68, 0.15); color: var(--accent-red); }

/* 变化标签 */
.change-tag {
  display: inline-block;
  font-size: 12px;
  font-weight: 600;
  padding: 3px 8px;
  border-radius: 999px;
}
.change-up { color: var(--accent-green); background: rgba(34, 197, 94, 0.1); }
.change-down { color: var(--accent-red); background: rgba(239, 68, 68, 0.1); }
.change-neutral { color: var(--text-muted); }

/* ======================== 单位卡片 ======================== */
.unit-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 16px;
  padding: 20px;
}

.unit-card {
  background: var(--bg-base);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  padding: 16px;
  cursor: pointer;
  transition: all 0.2s;
}

.unit-card:hover { border-color: var(--accent-primary); transform: translateY(-2px); box-shadow: var(--shadow-md); }

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

.unit-card-name { font-size: 15px; font-weight: 600; }
.unit-card-type { font-size: 12px; color: var(--text-muted); margin-bottom: 12px; }

.unit-card-stats {
  display: flex;
  gap: 16px;
  padding: 12px 0;
  border-top: 1px solid var(--border-light);
  border-bottom: 1px solid var(--border-light);
  margin-bottom: 10px;
}

.mini-stat { display: flex; flex-direction: column; gap: 2px; }
.mini-stat-label { font-size: 11px; color: var(--text-muted); }
.mini-stat-value { font-size: 16px; font-weight: 600; }

.unit-card-footer {
  display: flex;
  justify-content: space-between;
  font-size: 12px;
  color: var(--text-muted);
}

.link-text { color: var(--accent-primary); font-weight: 500; }

/* ======================== 进度条 ======================== */
.stage-item { margin-bottom: 16px; }
.stage-item:last-child { margin-bottom: 0; }

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

.stage-name { font-size: 13px; font-weight: 500; }
.stage-right { display: flex; align-items: center; gap: 4px; }

.progress-bar {
  height: 8px;
  background: var(--bg-base);
  border-radius: 4px;
  overflow: hidden;
}

.progress-bar-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--accent-primary), #14b8a6);
  border-radius: 4px;
  transition: width 0.5s ease;
}

.stage-note { font-size: 12px; color: var(--text-muted); margin-top: 6px; }

/* ======================== 数据录入 ======================== */
.entry-builder { display: flex; flex-direction: column; gap: 16px; }

.entry-unit-info {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
}

/* 数据录入筛选卡片（与搜索页 filter-bar 一致的简洁风格） */
.entry-filter {
  background: var(--bg-surface);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  padding: 16px 20px;
}
.entry-filter-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
  flex-wrap: wrap;
}
.entry-filter-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 15px;
  font-weight: 600;
  color: var(--text-secondary);
}
.entry-filter-icon { font-size: 16px; line-height: 1; }
.entry-filter-hint {
  font-size: 12px;
  color: var(--text-muted);
}
.entry-filter .filter-bar { align-items: flex-end; }
.entry-filter .form-group { min-width: 200px; }

.media-row, .live-row, .stage-row {
  margin-bottom: 12px;
  padding-bottom: 12px;
  border-bottom: 1px dashed var(--border-light);
}
.media-row:last-child, .live-row:last-child, .stage-row:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }

.media-row .form-input,
.live-row .form-input,
.stage-row .form-input,
.ecommerce-row .form-input { margin-top: 0; }

.form-section-desc {
  font-size: 12px;
  color: var(--text-muted);
  margin-top: 4px;
  line-height: 1.5;
}

.row-header {
  margin-bottom: 8px;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--border);
}
.row-header-label {
  font-size: 13px;
  font-weight: 500;
  color: var(--text-secondary);
  line-height: 1.4;
}
.row-header .form-group { margin-bottom: 0; }

.row-action-col {
  flex: 0 0 36px !important;
  min-width: 36px !important;
  max-width: 36px !important;
  display: flex;
  align-items: center;
  justify-content: center;
}

.media-row .form-row,
.live-row .form-row,
.stage-row .form-row {
  align-items: flex-end;
}

/* ======================== 筛选栏 ======================== */
.filter-bar {
  display: flex;
  gap: 16px;
  align-items: flex-end;
  flex-wrap: wrap;
}

.filter-bar .form-group { min-width: 140px; }

/* ======================== 报告选择器 ======================== */
.report-selector {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  background: var(--bg-surface);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
}

/* ======================== 空状态 ======================== */
.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 60px 20px;
  text-align: center;
  color: var(--text-muted);
}

.empty-icon { font-size: 48px; margin-bottom: 12px; }
.empty-state p { margin-bottom: 16px; }

/* ======================== 数据词典 ======================== */
.dict-tabs {
  display: flex;
  gap: 4px;
  margin-bottom: 16px;
  border-bottom: 2px solid var(--border);
  padding-bottom: 0;
}
.dict-tab {
  padding: 8px 16px;
  border: none;
  background: transparent;
  color: var(--text-muted);
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  border-radius: 6px 6px 0 0;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  transition: all 0.15s;
}
.dict-tab:hover { color: var(--text-primary); background: var(--bg-hover); }
.dict-tab.active {
  color: var(--accent);
  border-bottom-color: var(--accent);
  font-weight: 600;
}

.dict-field-list { display: flex; flex-direction: column; gap: 12px; }
.dict-field-row {
  display: flex;
  gap: 12px;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--bg-card);
}
.dict-field-index {
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--accent);
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
}
.dict-field-body { flex: 1; }
.dict-field-actions {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
  align-items: center;
}
.dict-field-actions .btn-icon { width: 28px; height: 28px; padding: 0; font-size: 14px; }

.alert {
  padding: 12px 16px;
  border-radius: 8px;
  font-size: 13px;
  margin-bottom: 16px;
  border: 1px solid;
}
.alert-info {
  background: rgba(59, 130, 246, 0.1);
  border-color: rgba(59, 130, 246, 0.3);
  color: #93c5fd;
}

/* ======================== Toast ======================== */
.toast {
  position: fixed;
  top: 20px;
  right: 20px;
  z-index: 9999;
  padding: 12px 20px;
  border-radius: var(--radius-sm);
  font-size: 14px;
  font-weight: 500;
  box-shadow: var(--shadow-lg);
  transform: translateX(120%);
  transition: transform 0.3s ease;
  max-width: 360px;
}

.toast.show { transform: translateX(0); }

.toast-success { background: rgba(34, 197, 94, 0.95); color: #fff; }
.toast-error { background: rgba(239, 68, 68, 0.95); color: #fff; }
.toast-warning { background: rgba(245, 158, 11, 0.95); color: #fff; }
.toast-info { background: rgba(59, 130, 246, 0.95); color: #fff; }

/* ======================== 弹窗 ======================== */
.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.6);
  backdrop-filter: blur(4px);
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}

.modal-box {
  background: var(--bg-surface);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-lg);
  width: 100%;
  max-width: 560px;
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: var(--shadow-lg);
}

/* 货款结算 / 流程 */
.sp-stock-preview { font-size: 13px; color: #475569; background: #f8fafc; border: 1px solid var(--border-color); border-radius: 8px; padding: 8px 10px; }
.stl-flow { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin: 14px 0 4px; }
.stl-step { display: flex; align-items: center; gap: 6px; font-size: 13px; color: #94a3b8; }
.stl-step.done { color: #16a34a; font-weight: 600; }
.stl-dot { width: 10px; height: 10px; border-radius: 50%; background: #cbd5e1; }
.stl-step.done .stl-dot { background: #16a34a; }
.stl-arrow { color: #cbd5e1; font-size: 12px; }
.pay-slip { font-family: "Microsoft YaHei", sans-serif; color: #1f2937; }
.pay-table { width: 100%; border-collapse: collapse; margin-top: 14px; font-size: 13px; }
.pay-table th, .pay-table td { border: 1px solid #cbd5e1; padding: 6px 8px; }
.pay-table th { background: #f1f5f9; }
.pay-sign { display: flex; justify-content: space-around; margin-top: 28px; font-size: 14px; }
.sup-tabs { display: flex; gap: 4px; padding: 0 16px; border-bottom: 1px solid var(--border-color); }
.sup-tab { border: none; background: none; padding: 10px 14px; cursor: pointer; font-size: 14px; color: #64748b; border-bottom: 2px solid transparent; }
.sup-tab.active { color: var(--accent-primary); border-bottom-color: var(--accent-primary); font-weight: 600; }
@media print {
  body * { visibility: hidden; }
  #print-area, #print-area * { visibility: visible; }
  #print-area { position: absolute; left: 0; top: 0; display: block !important; width: 100%; }
}

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

.modal-header h3 { font-size: 16px; }

.modal-body { padding: 20px; display: flex; flex-direction: column; gap: 16px; }

.modal-footer {
  display: flex;
  justify-content: flex-end;
  gap: 12px;
  padding: 16px 20px;
  border-top: 1px solid var(--border-color);
}

/* 居中页脚（注册/忘记密码等需按钮居中的弹窗） */
.modal-footer-center { justify-content: center !important; }

/* 兼容旧版弹窗类 modal-mask / modal（business.js、contract.js 使用，此前缺样式导致弹窗错位） */
.modal-mask {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.6);
  backdrop-filter: blur(4px);
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}
.modal {
  background: var(--bg-surface);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-lg);
  width: 100%;
  max-width: 560px;
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: var(--shadow-lg);
}

/* ======================== 分析报告 ======================== */
.work-summary, .work-plan {
  font-size: 14px;
  line-height: 1.8;
  color: var(--text-primary);
}

.insight-item {
  display: flex;
  gap: 12px;
  padding: 14px 16px;
  border-radius: var(--radius-sm);
  margin-bottom: 10px;
  border-left: 3px solid;
}

.insight-item:last-child { margin-bottom: 0; }

.insight-positive { background: rgba(34, 197, 94, 0.08); border-color: var(--accent-green); }
.insight-warning { background: rgba(245, 158, 11, 0.08); border-color: var(--accent-amber); }
.insight-info { background: rgba(59, 130, 246, 0.08); border-color: var(--accent-blue); }
.insight-suggestion { background: rgba(168, 85, 247, 0.08); border-color: var(--accent-purple); }

.insight-icon { font-size: 20px; flex-shrink: 0; }
.insight-title { font-weight: 600; margin-bottom: 4px; font-size: 14px; }
.insight-text { font-size: 13px; color: var(--text-secondary); line-height: 1.6; }

.kpi-rate { font-weight: 700; font-size: 15px; color: var(--accent-primary); }

.access-code {
  font-family: var(--mono);
  font-size: 12px;
  background: var(--bg-base);
  padding: 2px 8px;
  border-radius: 4px;
  color: var(--accent-amber);
  border: 1px solid var(--border-light);
}

/* ======================== 数据管理 ======================== */
.data-mgmt-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 14px 0;
  border-bottom: 1px solid var(--border-light);
}
.data-mgmt-row:last-child { border-bottom: none; }
.data-mgmt-title { font-weight: 500; margin-bottom: 2px; }

/* ======================== 周报管理 ======================== */
.position-tag {
  display: inline-block;
  padding: 2px 10px;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 500;
  background: rgba(45, 212, 191, 0.12);
  color: var(--accent-primary);
  white-space: nowrap;
}

.position-icon {
  margin-right: 4px;
}

.staff-form-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

.staff-form-grid .form-group {
  min-width: 140px;
}

.staff-form-grid .form-group.full-row {
  flex-basis: 100%;
  min-width: 100%;
}

.staff-report-card {
  margin-bottom: 0;
}

.staff-report-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 4px;
}

.staff-stat-row {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  margin-bottom: 16px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--border-light);
}

.staff-stat-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.staff-stat-label {
  font-size: 11px;
  color: var(--text-muted);
}

.staff-stat-value {
  font-size: 18px;
  font-weight: 700;
  color: var(--text-primary);
}

.staff-text-block {
  margin-bottom: 14px;
}

.staff-text-block:last-child {
  margin-bottom: 0;
}

.staff-text-label {
  font-size: 12px;
  font-weight: 600;
  color: var(--text-secondary);
  margin-bottom: 4px;
}

.staff-text-content {
  font-size: 13px;
  line-height: 1.8;
  color: var(--text-primary);
  padding: 10px 14px;
  background: var(--bg-base);
  border-radius: var(--radius-sm);
  border-left: 3px solid var(--accent-primary);
}

.staff-progress-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 8px;
}

.staff-progress-item {
  padding: 10px 14px;
  background: var(--bg-base);
  border-radius: var(--radius-sm);
  border-left: 3px solid var(--accent-blue);
}

.staff-progress-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 4px;
}

.staff-progress-label {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-primary);
}

.staff-progress-note {
  font-size: 12px;
  color: var(--text-secondary);
  line-height: 1.6;
}

.staff-report-empty {
  padding: 20px;
  text-align: center;
  color: var(--text-muted);
  font-size: 13px;
}

.alert-warning {
  background: rgba(245, 158, 11, 0.1);
  border-color: rgba(245, 158, 11, 0.3);
  color: #fcd34d;
}

/* ======================== 分析报告免责声明 ======================== */
.report-disclaimer {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 16px;
  margin-bottom: 16px;
  border: 1px solid var(--accent-amber);
  border-left: 4px solid var(--accent-amber);
  border-radius: 8px;
  background: rgba(245, 158, 11, 0.08);
  font-size: 13px;
  line-height: 1.5;
}
.report-disclaimer-icon {
  flex-shrink: 0;
  font-size: 18px;
}
.report-disclaimer-text {
  color: var(--text-primary);
  font-weight: 500;
}

/* ======================== 分析报告 Tab ======================== */
.report-tabs {
  display: flex;
  gap: 4px;
  margin-bottom: 16px;
  border-bottom: 2px solid var(--border);
  padding-bottom: 0;
}
.report-tab {
  padding: 8px 16px;
  border: none;
  background: transparent;
  color: var(--text-muted);
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  border-radius: 6px 6px 0 0;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  transition: all 0.15s;
}
.report-tab:hover { color: var(--text-primary); background: var(--bg-hover); }
.report-tab.active {
  color: var(--accent);
  border-bottom-color: var(--accent);
  font-weight: 600;
}

/* 团队汇总表格 */
.team-summary-table th { font-size: 12px; }
.team-summary-table .team-total {
  font-weight: 700;
  background: var(--bg-surface-hover);
}
.team-summary-table .team-total td { border-top: 2px solid var(--border-color); }

/* ======================== 响应式 ======================== */
@media (max-width: 768px) {
  .sidebar { width: 60px; }
  .sidebar-logo-text, .nav-item span:not(.nav-icon) { display: none; }
  .sidebar-footer { display: none; }
  .main-content { margin-left: 60px; }
  .content-area { padding: 16px; }
  .stat-grid { grid-template-columns: 1fr 1fr; }
  .form-row { flex-direction: column; }
  .filter-bar { flex-direction: column; align-items: stretch; }
  .modal-box { max-width: 100%; }
  .confidentiality-modal { max-width: 92% !important; }
  .share-platforms { flex-direction: column; }
}

/* ============ 统一团队管理弹窗（注册/编辑/审核，仅设尺寸上限） ============ */
.modal-team {
  max-width: 780px;
  max-height: 85vh;
}
@media (max-width: 680px) {
  .modal-team { max-width: 100%; max-height: 92vh; }
}


/* ======================== 转发分享 ======================== */
.share-bar {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 12px;
}

/* 保密提醒弹窗 */
.confidentiality-overlay {
  background: rgba(0, 0, 0, 0.6);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
.confidentiality-modal {
  max-width: 460px;
  overflow: hidden;
  animation: confidentialitySlideIn 0.3s ease;
}
@keyframes confidentialitySlideIn {
  from { transform: translateY(-20px); opacity: 0; }
  to { transform: translateY(0); opacity: 1; }
}

.confidentiality-header {
  text-align: center;
  padding: 28px 20px 16px;
  background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);
  border-bottom: 3px solid #f59e0b;
}
.confidentiality-header h3 {
  margin-top: 10px;
  font-size: 20px;
  font-weight: 700;
  color: #78350f;
}
.confidentiality-icon {
  font-size: 40px;
  line-height: 1;
}

.confidentiality-body {
  padding: 24px 28px;
}
.confidentiality-main-text {
  font-size: 15px;
  font-weight: 600;
  color: #78350f;
  line-height: 1.7;
  text-align: center;
}
.confidentiality-divider {
  height: 1px;
  background: linear-gradient(90deg, transparent, #d1d5db, transparent);
  margin: 16px 0;
}
.confidentiality-rules {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.confidentiality-rule-item {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  font-size: 13px;
  color: var(--text-secondary);
  line-height: 1.5;
}
.rule-icon {
  color: #f59e0b;
  font-weight: 700;
  flex-shrink: 0;
}
.confidentiality-confirm-text {
  font-size: 13px;
  color: var(--text-muted);
  text-align: center;
  font-style: italic;
}

.confidentiality-footer {
  display: flex;
  gap: 12px;
  padding: 0 28px 24px;
  justify-content: center;
}
.confidentiality-footer .btn {
  min-width: 130px;
  justify-content: center;
}

/* 分享弹窗 */
.share-link-input {
  font-family: monospace;
  font-size: 12px;
  color: var(--text-secondary);
  background: var(--bg-base);
}
.share-instructions {
  margin-bottom: 8px;
}
.share-tip {
  font-size: 14px;
  color: var(--text-secondary);
}
.share-platforms {
  display: flex;
  gap: 10px;
  margin-top: 16px;
  flex-wrap: wrap;
}
.share-wechat-btn {
  background: #07c160 !important;
  color: #fff !important;
  border: none !important;
}
.share-wechat-btn:hover { opacity: 0.9; }
.share-wecom-btn {
  background: #3370ff !important;
  color: #fff !important;
  border: none !important;
}
.share-wecom-btn:hover { opacity: 0.9; }
.share-icon { margin-right: 4px; }
.share-reminder {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 14px;
  padding: 10px 12px;
  background: rgba(245, 158, 11, 0.08);
  border: 1px solid rgba(245, 158, 11, 0.2);
  border-radius: 8px;
  font-size: 12px;
  color: var(--text-muted);
}
.share-reminder-icon { font-size: 14px; }
.modal-footer {
  display: flex;
  justify-content: flex-end;
  padding: 16px 20px;
  gap: 8px;
}

/* 滚动条 */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: var(--bg-base); }
::-webkit-scrollbar-thumb { background: var(--border-color); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: #cbd5e1; }

/* ======================== 登录页-注册入口 ======================== */
.login-register-link {
  text-align: center;
  margin-top: 20px;
  font-size: 13px;
  color: var(--text-muted);
}
.login-register-link a {
  color: var(--accent-primary);
  text-decoration: none;
  font-weight: 500;
  margin-left: 4px;
}
.login-register-link a:hover { text-decoration: underline; }

.login-footer {
  margin-top: 28px;
  padding-top: 16px;
  border-top: 1px solid var(--border-color);
  text-align: center;
  font-size: 12px;
  line-height: 1.9;
  color: var(--text-muted);
}
.login-footer .login-footer-filing {
  letter-spacing: 0.3px;
}
.login-footer .login-footer-filing a {
  color: var(--text-muted);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color .2s, border-bottom-color .2s;
}
.login-footer .login-footer-filing a:hover {
  color: var(--primary, #1a56db);
  border-bottom-color: var(--primary, #1a56db);
}
.login-footer .login-footer-filing .sep {
  margin: 0 6px;
  opacity: 0.5;
}
.login-footer .login-footer-copy {
  margin-top: 6px;
}

/* ======================== 注册弹窗 ======================== */
.modal-register { max-width: 520px; }
.modal-close-btn {
  background: none;
  border: none;
  font-size: 22px;
  color: var(--text-muted);
  cursor: pointer;
  padding: 0 4px;
  line-height: 1;
}
.modal-close-btn:hover { color: var(--text-primary); background: var(--btn-blue); border-radius: 6px; }

/* ======================== Badge 补充 ======================== */
.badge-danger { background: rgba(239, 68, 68, 0.15); color: var(--accent-red); }

/* ======================== 按钮 补充 ======================== */
.btn-danger {
  background: var(--btn-blue);
  color: var(--accent-red);
  border: 1px solid #fca5a5;
}
.btn-danger:hover { background: var(--btn-blue-hover); color: #dc2626; border-color: #f87171; }

/* ======================== 注册审核面板 ======================== */
.reg-stats {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 13px;
  color: var(--text-secondary);
}
.reg-stat-item { margin-left: 12px; }
.reg-stat-item:first-child { margin-left: 0; }
.reg-stat-num { font-weight: 700; font-size: 14px; }
.reg-stat-pending { color: var(--accent-amber); }
.reg-stat-approved { color: var(--accent-green); }
.reg-stat-rejected { color: var(--accent-red); }

.reg-tabs {
  display: flex;
  gap: 4px;
  border-bottom: 1px solid var(--border-color);
  margin-bottom: 16px;
  padding-bottom: 0;
}
.reg-tab {
  padding: 8px 16px;
  border: none;
  background: transparent;
  color: var(--text-secondary);
  font-size: 13px;
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: all 0.2s;
  font-family: var(--font);
  margin-bottom: -1px;
}
.reg-tab:hover { color: var(--text-primary); }
.reg-tab.active {
  color: var(--accent-primary);
  border-bottom-color: var(--accent-primary);
  font-weight: 500;
}

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

.reg-card {
  background: var(--bg-elevated);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  overflow: hidden;
}
.reg-card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border-color);
}
.reg-card-info {
  display: flex;
  align-items: center;
  gap: 8px;
}
.reg-card-name { font-weight: 600; font-size: 14px; color: var(--text-primary); }
.reg-card-meta { font-size: 12px; color: var(--text-muted); }
.reg-card-actions { display: flex; gap: 8px; }
.reg-card-body {
  padding: 12px 16px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px 24px;
}
.reg-field {
  display: flex;
  gap: 8px;
  font-size: 13px;
  align-items: baseline;
}
.reg-field-label {
  color: var(--text-muted);
  min-width: 60px;
  flex-shrink: 0;
}
.reg-reject-reason {
  grid-column: 1 / -1;
  color: var(--accent-red);
}

/* ============ 工作画板（看板） ============ */
.btn-xs { padding: 4px 10px; font-size: 12px; line-height: 1.4; }
.checkbox-group { display: flex; flex-wrap: wrap; gap: 8px 16px; }
.checkbox-item { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; cursor: pointer; }

/* 多选下拉（工作看板协作人） */
.ms { position: relative; }
.ms-trigger {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  position: relative;
  width: 100%; min-height: 38px; cursor: pointer; user-select: none; background: #fff;
  padding-right: 28px;
}
.ms-trigger.ms-empty .ms-value { color: var(--text-muted); }
.ms-value { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ms-trigger::after {
  content: ''; position: absolute; right: 12px; top: 50%; transform: translateY(-50%);
  width: 0; height: 0; flex-shrink: 0;
  border-left: 5px solid transparent; border-right: 5px solid transparent;
  border-top: 6px solid #94a3b8; transition: transform .15s;
}
.ms-trigger.open::after { transform: translateY(-50%) rotate(180deg); }
.ms-panel {
  position: absolute; top: calc(100% + 4px); left: 0; width: 100%; z-index: 50; background: #fff;
  border: 1px solid var(--border-color); border-radius: var(--radius-sm);
  box-shadow: var(--shadow-lg); max-height: 240px; overflow-y: auto; padding: 6px;
}
.ms-option {
  display: flex; align-items: center; gap: 8px; padding: 8px 10px;
  font-size: 14px; cursor: pointer; border-radius: 6px; white-space: nowrap;
}
.ms-option:hover { background: #f1f5f9; }
.ms-option input { margin: 0; }

.board-toolbar {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 16px;
  flex-wrap: wrap; margin-bottom: 16px;
}
.board-filters { display: flex; gap: 16px; flex-wrap: wrap; }
.board-actions { display: flex; gap: 8px; flex-wrap: wrap; }

/* 工作看板：筛选器 + 操作按钮放在页头右侧时的紧凑样式 */
.page-header-actions .board-filters,
.page-header-actions .board-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.page-header-actions .board-filters .form-group {
  margin-bottom: 0;
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 6px;
}
.page-header-actions .board-filters .form-label {
  font-size: 12px;
  color: var(--text-secondary);
  margin-bottom: 0;
  white-space: nowrap;
}
.page-header-actions .board-filters .form-input-sm {
  min-width: 110px;
  padding: 5px 8px;
  font-size: 13px;
}
.page-header-actions .board-actions .btn {
  white-space: nowrap;
}

/* 工作看板页面容器：占满内容区剩余高度，整页不滚动（滚动收敛到各列体内） */
/* 关键：.content-area 本身是 .main-content 内的 flex:1，整条链无高度上限，
   故必须给看板页一个绑视口的高度（视口高 - 顶栏61px），overflow:hidden 才能真正裁切，
   否则看板把 .main-content 撑高、整页继续滚动 */
.content-area.board-page-container {
  height: calc(100vh - 61px);
  overflow: hidden;
}
.board-page-container > .page-header { flex-shrink: 0; align-items: flex-end; }
.board-page {
  display: flex; flex-direction: column; gap: 16px;
  flex: 1; min-height: 0;   /* 关键：填满内容区剩余高度，自身可收缩 */
}
.board {
  display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: 1fr; gap: 16px;
  align-items: stretch;     /* 列等高拉伸到看板高度，便于列内滚动 */
  flex: 1; min-height: 0;   /* 占满 .board-page 剩余高度 */
}
.board-col {
  background: var(--bg-base); border: 1px solid var(--border-color);
  border-radius: 10px; padding: 12px; position: relative;
  display: flex; flex-direction: column; min-height: 0; overflow: hidden;  /* 列体不溢出，滚动交给 .board-col-body */
}
.board-col-head {
  display: flex; align-items: center; justify-content: space-between;
  font-weight: 600; font-size: 14px; color: var(--text-primary);
  padding: 4px 4px 12px; border-bottom: 1px solid var(--border-color); margin-bottom: 12px;
}
.board-col-count {
  background: var(--border-color); color: var(--text-muted);
  font-size: 12px; padding: 1px 8px; border-radius: 10px; font-weight: 600;
}
.board-col-body { display: flex; flex-direction: column; gap: 10px; min-height: 60px; flex: 1; min-height: 0; overflow-y: auto; padding-right: 4px; }
.board-col-body.drag-over { outline: 2px dashed var(--accent-blue); outline-offset: -4px; border-radius: 8px; }
.board-col-empty { color: var(--text-muted); font-size: 13px; text-align: center; padding: 20px 0; }
.board-col-more {
  width: 100%; text-align: center; padding: 9px; margin-top: 2px;
  background: transparent; border: 1px dashed var(--border-color); border-radius: 8px;
  color: var(--accent-primary); font-size: 12px; cursor: pointer; transition: background .15s;
}
.board-col-more:hover { background: var(--accent-primary-dim); }

/* 拖拽视觉反馈：被拖动的卡片半透明，目标列高亮由 .drag-over 提供 */
.board-card.dragging { opacity: 0.45; cursor: grabbing; transform: scale(0.98); }

/* 任务移到「已完成」时的局部撒花动画 */
.confetti-layer {
  position: absolute; inset: 0; overflow: hidden; pointer-events: none; z-index: 6;
}
.confetti-piece {
  position: absolute; top: -12px; width: 8px; height: 12px; border-radius: 2px;
  opacity: 0; will-change: transform, opacity;
  animation: confetti-fall 2s ease-out forwards;
}
@keyframes confetti-fall {
  0%   { opacity: 1; transform: translate(0, 0) rotate(0deg); }
  100% { opacity: 0; transform: translate(var(--dx, 0), 260px) rotate(var(--rot, 360deg)); }
}

/* 确认弹窗内的必填原因输入 */
.confirm-msg { margin: 0 0 12px; color: var(--text-primary); font-size: 14px; line-height: 1.6; }
.confirm-reason { width: 100%; resize: vertical; }

.board-card {
  background: #fff; border: 1px solid var(--border-color); border-radius: 8px;
  padding: 12px; cursor: grab; transition: box-shadow .15s, transform .15s;
}
.board-card:hover { box-shadow: 0 4px 14px rgba(15,23,42,.08); transform: translateY(-1px); }
.board-card:active { cursor: grabbing; }
.board-card-high { border-left: 3px solid var(--accent-red); }
.board-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; margin-bottom: 6px; }
.board-card-title { font-weight: 600; font-size: 14px; color: var(--text-primary); line-height: 1.4; }
.board-card-desc { font-size: 13px; color: var(--text-muted); margin-bottom: 8px; line-height: 1.5; white-space: pre-wrap; }
.board-card-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.board-card-assignee { font-size: 12px; color: var(--text-muted); }
.board-card-collab { font-size: 12px; color: var(--text-muted); }
.board-card-due { font-size: 12px; color: var(--text-muted); margin-bottom: 8px; }
.board-card-actions { display: flex; gap: 6px; flex-wrap: wrap; border-top: 1px dashed var(--border-color); padding-top: 8px; }
/* 卡片整体可点击（打开详情/编辑）；操作按钮与拖拽仍独立工作 */
.board-card-clickable { cursor: pointer; }
.board-card-clickable:active { cursor: grabbing; }
.board-card-actions .btn { cursor: pointer; }
/* 卡片进度条（进行中） */
.board-card-progress { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.board-card-progress-track { flex: 1; height: 6px; background: var(--bg-base, #eef2f7); border-radius: 4px; overflow: hidden; }
.board-card-progress-fill { height: 100%; background: var(--accent-blue, #2563eb); border-radius: 4px; transition: width .2s; }
.board-card-progress-text { font-size: 12px; color: var(--text-muted); min-width: 34px; text-align: right; }
/* 弹窗内进度输入 */
.progress-input-wrap { display: flex; align-items: center; gap: 12px; }
.progress-input-wrap .progress-range { flex: 1; accent-color: var(--accent-blue, #2563eb); }
.progress-input-wrap .progress-number { width: 90px; flex: none; }

/* 通知 */
.notif-list { display: flex; flex-direction: column; gap: 10px; }
.notif-item { border: 1px solid var(--border-color); border-radius: 8px; padding: 12px; cursor: pointer; background: #fff; }
.notif-item.unread { border-left: 3px solid var(--accent-blue); }
.notif-item.read { opacity: .6; }
.notif-item:hover { background: var(--bg-base); }
.notif-title { font-weight: 600; font-size: 14px; color: var(--text-primary); margin-bottom: 4px; }
.notif-content { font-size: 13px; color: var(--text-muted); line-height: 1.5; }
.notif-time { font-size: 12px; color: var(--text-muted); margin-top: 6px; }
.notif-badge {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 18px; height: 18px; padding: 0 5px; margin-left: 4px;
  background: var(--accent-red); color: #fff; font-size: 11px; border-radius: 9px; font-weight: 600;
}

/* 业绩缺口 */
.gap-list { display: flex; flex-direction: column; gap: 10px; }
.gap-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; border: 1px solid var(--border-color); border-radius: 8px; padding: 12px; background: #fff; }
.gap-title { font-weight: 600; font-size: 14px; color: var(--text-primary); }
.gap-meta { font-size: 12px; color: var(--text-muted); margin-top: 4px; }

/* 业绩模板管理 */
.tmpl-list { display: flex; flex-direction: column; gap: 10px; }
.tmpl-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; border: 1px solid var(--border-color); border-radius: 8px; padding: 12px; background: #fff; }
.tmpl-name { font-weight: 600; font-size: 14px; color: var(--text-primary); }
.tmpl-meta { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
.tmpl-add { margin-top: 16px; border-top: 1px dashed var(--border-color); padding-top: 16px; display: flex; flex-direction: column; gap: 12px; }

/* 业绩填报表单 */
.report-form { display: flex; flex-direction: column; gap: 14px; }

@media (max-width: 900px) {
  /* 移动端：解除高度锁定，恢复整页自然滚动（避免单列被压成一小块） */
  .content-area.board-page-container { height: auto; overflow: auto; }
  .board-page { flex: none; }
  .board { grid-template-columns: 1fr; grid-template-rows: auto; flex: none; }
  .board-col { max-height: none; overflow: visible; }
  .board-col-body { overflow: visible; }
}

/* ======================== 团队管理扩展（岗位/绩效/合作中心） ======================== */
.modal-lg { max-width: 720px; }

.unit-tag {
  display: inline-block;
  padding: 2px 10px;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 500;
  background: rgba(59, 130, 246, 0.12);
  color: var(--accent-blue);
  white-space: nowrap;
}

.dim-tag {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 500;
  background: rgba(168, 85, 247, 0.12);
  color: var(--accent-purple);
  margin: 2px 4px 2px 0;
  white-space: nowrap;
}

.resp-text { color: var(--text-secondary); font-size: 13px; }

.fields-list { display: flex; flex-direction: column; gap: 8px; }
.field-row { display: flex; align-items: center; gap: 8px; }
.field-row .field-input { flex: 1; }

.items-list { display: flex; flex-direction: column; gap: 10px; }
.item-card { border: 1px solid var(--border-light); border-radius: 8px; padding: 10px; background: #fff; }
.item-row {
  display: grid;
  grid-template-columns: 130px 1fr 86px 160px 32px;
  gap: 8px;
  align-items: center;
}
.item-max { display: flex; align-items: center; gap: 6px; }
.item-max-input { width: 64px; }
.item-del { padding: 6px; color: var(--text-muted); }
.item-metric { margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--border-light); }
.metric-hint { font-size: 12px; color: var(--text-muted); margin-top: 8px; line-height: 1.5; }

.approve-hint {
  font-size: 13px;
  color: var(--text-secondary);
  background: var(--bg-base);
  border: 1px solid var(--border-light);
  border-radius: 8px;
  padding: 10px 12px;
  margin: 0;
  line-height: 1.6;
}

/* ======================== 绩效管理（二期） ======================== */
.panel-sub { font-size: 12px; color: var(--text-muted); margin: 4px 0 0; line-height: 1.5; }
.panel-tools { display: flex; align-items: center; gap: 8px; }
.loading { padding: 30px; text-align: center; color: var(--text-muted); }

.status-tag { display: inline-block; padding: 2px 10px; border-radius: 10px; font-size: 12px; font-weight: 600; }
.tag-gray { background: #eef1f5; color: #6b7280; }
.tag-blue { background: rgba(59,130,246,.12); color: var(--accent-blue); }
.tag-green { background: rgba(16,185,129,.14); color: #059669; }

.ev-list { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.ev-item { background: #fff; border: 1px solid var(--border-light); border-radius: 6px; padding: 4px 10px; font-size: 12px; color: var(--text-secondary); }
.ev-empty { margin-top: 8px; font-size: 12px; color: var(--text-muted); }

.perf-group { margin-top: 16px; border: 1px solid var(--border-color); border-radius: 10px; overflow: hidden; }
.perf-group-title { background: var(--bg-base); padding: 8px 14px; font-weight: 600; font-size: 13px; color: var(--text-primary); border-bottom: 1px solid var(--border-light); }
.perf-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 14px; border-bottom: 1px solid var(--border-light); }
.perf-item:last-child { border-bottom: none; }
.perf-item-name { display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--text-primary); }
.perf-item-score { display: flex; align-items: center; gap: 8px; }

.tag-auto, .tag-manual { display: inline-block; padding: 1px 7px; border-radius: 4px; font-size: 11px; font-weight: 600; }
.tag-auto { background: rgba(16,185,129,.14); color: #059669; }
.tag-manual { background: rgba(245,158,11,.16); color: #b45309; }

.auto-score { display: flex; align-items: baseline; gap: 4px; }
.auto-score .big { font-size: 20px; font-weight: 700; color: var(--text-primary); }
.auto-score .max { font-size: 13px; color: var(--text-muted); }
.auto-ev { font-size: 11px; color: var(--text-muted); text-align: right; }
.score-input { width: 84px; text-align: center; }

.perf-preview { display: flex; gap: 14px; margin-top: 18px; padding: 14px; background: var(--bg-base); border-radius: 10px; border: 1px solid var(--border-light); }
.pp-item { flex: 1; text-align: center; }
.pp-label { display: block; font-size: 12px; color: var(--text-muted); margin-bottom: 4px; }
.pp-value { font-size: 22px; font-weight: 700; color: var(--text-primary); }
.lv-excellent { color: #059669 !important; }
.lv-good { color: #2563eb !important; }
.lv-pass { color: #7c3aed !important; }
.lv-warn { color: #d97706 !important; }
.lv-fail { color: #dc2626 !important; }

/* 录入页 - 必填字段与校验样式 */
.row-header-label.required-marker { color: #dc2626; font-weight: 600; }
.row-header-label.required-marker::after { content: ' *'; color: #dc2626; }
.form-input.dyn-field.field-error,
.form-input.dyn-field.field-error:focus { border-color: #dc2626; box-shadow: 0 0 0 2px rgba(220,38,38,0.12); }

/* 工作看板通知 - 通道说明条 */
.notif-channel-hint { background: #eff6ff; color: #1e40af; border: 1px solid #bfdbfe; border-radius: 6px; padding: 8px 12px; font-size: 12px; line-height: 1.5; margin-bottom: 12px; }

/* 部门标签 */
.dept-tag { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 12px; background: rgba(99,102,241,0.10); color: #4f46e5; }
.tpl-tag { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 12px; background: rgba(16,185,129,0.10); color: #047857; }
.tpl-tag.empty { background: rgba(107,114,128,0.10); color: #6b7280; }
.sup-tag { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 12px; background: rgba(245,158,11,0.10); color: #b45309; }
.sup-tag.empty { background: rgba(107,114,128,0.10); color: #6b7280; }
.leader-tag { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 12px; background: rgba(139,92,246,0.10); color: #6d28d9; }
.leader-tag.empty { background: rgba(107,114,128,0.10); color: #6b7280; }
.detail-subordinates .empty-state { padding: 16px; color: #9ca3af; font-size: 13px; }
.detail-sub-list { display: flex; flex-direction: column; gap: 6px; }
.detail-sub-row { display: flex; gap: 12px; padding: 6px 0; border-bottom: 1px dashed #e5e7eb; font-size: 13px; }
.detail-sub-row:last-child { border-bottom: none; }
.detail-sub-row .sub-name { font-weight: 600; color: #111827; min-width: 80px; }
.detail-sub-row .sub-meta { color: #6b7280; }

/* 供应商板块 */
.suppliers-filter { display: flex; align-items: center; flex-wrap: wrap; gap: 14px 16px; margin-bottom: 16px; }
.page-header-actions .suppliers-filter { margin-bottom: 0; gap: 10px 12px; justify-content: flex-end; }
.page-header-actions .filter-group { margin-bottom: 0; }
.page-header-filters { flex: 1; display: flex; align-items: center; min-width: 0; }
.page-header-filters .suppliers-filter { margin-bottom: 0; gap: 10px 12px; flex-wrap: wrap; }
.page-header-filters .filter-group { margin-bottom: 0; }
.page-header-filters .suppliers-filter-select { width: 130px; flex: 0 0 auto; }
.page-header-filters .suppliers-search { width: 180px; flex: 0 0 auto; }
.filter-group { display: flex; align-items: center; gap: 8px; }
.filter-label { font-size: 13px; color: var(--text-secondary); font-weight: 500; white-space: nowrap; }
.suppliers-filter-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.filter-chip {
  padding: 5px 12px;
  font-size: 13px;
  line-height: 1.4;
  border: 1px solid var(--border-color);
  border-radius: 999px;
  background: #fff;
  color: var(--text-secondary);
  cursor: pointer;
  white-space: nowrap;
  transition: border-color .15s, color .15s, background .15s;
}
.filter-chip:hover { border-color: var(--accent-primary); color: var(--accent-primary); }
.filter-chip.active { background: var(--accent-primary); border-color: var(--accent-primary); color: #fff; }
.suppliers-filter .suppliers-search { width: 220px; flex: 0 0 auto; }
.suppliers-filter .suppliers-filter-select { width: 150px; flex: 0 0 auto; }
.page-header-actions .suppliers-search { width: 180px; }
.page-header-actions .suppliers-filter-select { width: 130px; }
.suppliers-filter .suppliers-filter-action { margin-left: auto; }
.suppliers-filter .sf-title { font-size: 15px; font-weight: 600; color: var(--text-primary); }
.suppliers-table .note-cell { max-width: 200px; color: #6b7280; font-size: 12px; }
.suppliers-table .supplier-row td { vertical-align: middle; }
.suppliers-table .supplier-urgent { background: rgba(254,226,226,0.18); }
.suppliers-table .supplier-urgent:hover { background: rgba(254,226,226,0.32); }
/* 供应商表格内联下拉：改成圆角胶囊徽章样式，与合作中心「状态」徽章保持一致，同时保留下拉可编辑能力 */
.supplier-inline-select {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  min-height: auto;
  height: auto;
  border: none;
  border-radius: 999px;
  padding: 4px 22px 4px 10px;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.4;
  cursor: pointer;
  background-color: rgba(100, 116, 139, 0.14);
  color: #475569;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 8px center;
  background-size: 10px 10px;
}
.supplier-inline-select:focus { outline: none; box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.25); }
.biz-tag { display: inline-block; padding: 2px 8px; border-radius: 6px; font-size: 12px; background: rgba(20,184,166,0.10); color: #0d9488; }
.deadline-tag { display: inline-block; padding: 2px 8px; border-radius: 6px; font-size: 12px; font-weight: 600; }
.deadline-expired { background: rgba(220,38,38,0.12); color: #b91c1c; }
.deadline-today { background: rgba(245,158,11,0.16); color: #c2410c; }
.deadline-soon { background: rgba(245,158,11,0.10); color: #b45309; }


/* 员工详情弹窗 */
.detail-card { background: #f9fafb; border: 1px solid #e5e7eb; border-radius: 8px; padding: 16px; margin-bottom: 16px; }
.detail-card-title { font-weight: 600; font-size: 14px; color: #111827; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 1px solid #e5e7eb; }
.detail-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px 24px; }
.detail-item { font-size: 13px; line-height: 1.6; }
.detail-label { color: #6b7280; }
.detail-bind-current { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.detail-bind-form { display: flex; align-items: flex-end; gap: 8px; flex-wrap: wrap; }
.detail-bind-form .form-label { margin-bottom: 4px; }
.detail-log-list { max-height: 280px; overflow-y: auto; }
.detail-log-row { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-bottom: 1px solid #f1f5f9; font-size: 13px; }
.detail-log-row:last-child { border-bottom: 0; }
.log-action { padding: 2px 6px; border-radius: 4px; font-size: 11px; font-weight: 600; }
.log-action.log-bind { background: rgba(16,185,129,0.15); color: #047857; }
.log-action.log-unbind { background: rgba(239,68,68,0.15); color: #b91c1c; }
.log-action.log-switch { background: rgba(59,130,246,0.15); color: #1d4ed8; }
.log-from, .log-to { color: #374151; }
.log-meta { color: #9ca3af; font-size: 12px; margin-left: auto; }


/* 业绩汇报（业务管理 > 业绩汇报） */
.pr-form-row { display: flex; gap: 12px; flex-wrap: wrap; }
.pr-form-row > .form-group { flex: 1; min-width: 150px; }
.pr-form-row > .form-group[style*="flex: 2"] { flex: 2; }
.pr-picker-bar { display: flex; align-items: flex-start; gap: 10px; flex-wrap: wrap; }
.pr-picker-bar > .btn { flex: 0 0 auto; }
.pr-selected { flex: 1; min-width: 220px; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.pr-chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; background: var(--bg-base); border: 1px solid var(--border-light); border-radius: 999px; font-size: 12px; color: var(--text-primary); }
.pr-chip-name { font-weight: 500; }
.pr-chip-meta { color: var(--text-muted); }
.pr-chip-del { border: none; background: transparent; color: var(--text-muted); cursor: pointer; font-size: 14px; line-height: 1; padding: 0 2px; }
.pr-chip-del:hover { color: var(--accent-red); }
.pr-total { display: flex; align-items: center; justify-content: flex-end; gap: 8px; margin-top: 14px; font-size: 14px; color: var(--text-secondary); }
.pr-total-amount { font-size: 20px; font-weight: 700; color: var(--accent-primary); }
.pr-picker-list { max-height: 320px; overflow-y: auto; display: flex; flex-direction: column; gap: 6px; padding: 4px 0; }
.pr-picker-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 10px; border: 1px solid var(--border-light); border-radius: 8px; background: #fff; }
.pr-picker-check { display: flex; align-items: center; gap: 8px; cursor: pointer; flex: 1; }
.pr-picker-name { font-size: 14px; color: var(--text-primary); }
.pr-picker-price { font-size: 12px; color: var(--text-muted); }
.pr-qty { width: 80px; flex: 0 0 auto; }
.pr-preview { display: flex; flex-direction: column; gap: 2px; }
.pr-preview-row { display: flex; justify-content: space-between; gap: 16px; padding: 8px 12px; border-bottom: 1px dashed var(--border-light); font-size: 14px; }
.pr-preview-row:last-child { border-bottom: none; }
.pr-preview-k { color: var(--text-secondary); }
.pr-preview-v { color: var(--text-primary); font-weight: 500; text-align: right; }

/* 业绩登记记录页：范围筛选 + 统计卡片 */
.pr-rec-filter { margin-bottom: 14px; }
.pr-range-text { display: inline-flex; align-items: center; font-size: 13px; color: var(--text-secondary); font-weight: 600; padding: 0 4px; }

.pr-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 16px; }
.pr-stat { background: #fff; border: 1px solid var(--border-color); border-radius: 10px; padding: 14px 16px; display: flex; flex-direction: column; gap: 6px; }
.pr-stat-label { font-size: 13px; color: var(--text-secondary); }
.pr-stat-value { font-size: 22px; font-weight: 700; color: var(--text-primary); font-variant-numeric: tabular-nums; }
.pr-stat.clickable { cursor: pointer; transition: border-color .15s, box-shadow .15s; }
.pr-stat.clickable:hover { border-color: var(--accent-primary); box-shadow: 0 2px 10px rgba(59,130,246,0.12); }
.pr-stat.clickable .pr-stat-value { color: var(--accent-primary); }
.pr-link { cursor: pointer; color: var(--accent-primary); font-weight: 600; }
.pr-link:hover { text-decoration: underline; }

/* 范围目标批量编辑弹窗 */
.pr-rt-list { display: flex; flex-direction: column; gap: 14px; }
.pr-rt-hint { font-size: 12px; margin-bottom: 4px; }
.pr-rt-month { border: 1px solid var(--border-light); border-radius: 8px; padding: 10px 12px; background: var(--bg-base); }
.pr-rt-month-title { font-size: 13px; font-weight: 600; color: var(--text-primary); margin-bottom: 8px; }
.pr-rt-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px 10px; }
.pr-rt-grid .form-group { margin: 0; }
.pr-rt-grid .form-label { font-size: 12px; margin-bottom: 4px; }
.pr-rt-month-total { margin-top: 8px; font-size: 13px; font-weight: 600; color: var(--accent, #2563eb); }
@media (max-width: 900px) {
  .pr-stats { grid-template-columns: repeat(2, 1fr); }
  .pr-rt-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
  .pr-stats { grid-template-columns: 1fr; }
  .pr-rt-grid { grid-template-columns: 1fr; }
}

/* 业绩分摊成员面板 */
.pr-me-row { background: rgba(59,130,246,0.06); }
.pr-mem-name { display: flex; align-items: center; gap: 6px; font-weight: 500; color: var(--text-primary); }
.pr-me-tag { font-size: 11px; padding: 1px 6px; border-radius: 999px; background: var(--accent-primary); color: #fff; }
.pr-mem-pos { font-size: 12px; margin-top: 2px; }

/* 团队管理：各中心业绩目标占比 */
.tm-ratio-box { display: flex; flex-direction: column; gap: 8px; margin-top: 2px; }
.pr-ratio-row { display: flex; align-items: center; gap: 8px; }
.pr-ratio-label { font-size: 13px; color: var(--text-secondary); min-width: 160px; }
.pr-ratio-unit { font-size: 13px; color: var(--text-muted); }
.ratio-tag { display: inline-block; padding: 1px 8px; border-radius: 999px; background: rgba(16,185,129,0.12); color: #047857; font-weight: 600; font-size: 12px; }
.ratio-tag.auto { background: rgba(148,163,184,0.15); color: var(--text-muted); font-weight: 500; }

/* ========================
   合同管理模块
   ======================== */
.form-grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px 20px; }
.form-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px 20px; }
.form-section-title { font-size: 14px; font-weight: 600; color: var(--text-primary); margin: 18px 0 10px; padding-left: 10px; border-left: 3px solid var(--accent-primary); }
.row-danger { background: rgba(244, 63, 94, 0.08); }
.detail-topbar { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; flex-wrap: wrap; }
.info-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px 24px; }
@media (max-width: 680px) {
  .form-grid-2, .form-grid-3, .info-grid { grid-template-columns: 1fr; }
}

/* ======================== 私车登记模块 ======================== */
.vh-toolbar { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; flex-wrap: wrap; }
.vh-toolbar .vh-search { width: 260px; max-width: 100%; }
.vh-toolbar .vh-new { margin-left: auto; }
.form-row-full { grid-column: 1 / -1; }
.form-tip { font-size: 12px; color: var(--text-secondary); line-height: 1.6; background: var(--bg-muted, rgba(0,0,0,0.03)); border-radius: 8px; padding: 8px 12px; }
.info-cell { display: flex; flex-direction: column; gap: 3px; }
.info-cell .info-label { font-size: 12px; color: var(--text-secondary); }
.info-cell .info-value { font-size: 14px; color: var(--text-primary); word-break: break-all; }
.info-block { font-size: 14px; color: var(--text-primary); line-height: 1.7; background: var(--bg-muted, rgba(0,0,0,0.03)); border-radius: 8px; padding: 10px 12px; }
@media (max-width: 640px) {
  .vh-toolbar .vh-new { margin-left: 0; }
  .vh-toolbar .vh-search { width: 100%; }
}

/* ======================== 财务管理 ======================== */
.fin-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; flex-wrap: wrap; }
.fin-tabs { display: inline-flex; background: var(--bg-base); border: 1px solid var(--border-color); border-radius: 8px; padding: 3px; gap: 2px; }
.fin-tab { border: none; background: transparent; color: var(--text-muted); padding: 7px 18px; border-radius: 6px; cursor: pointer; font-size: 14px; font-weight: 500; }
.fin-tab:hover { color: var(--text-primary); }
.fin-tab.active { background: var(--accent-primary); color: #fff; }
.fin-actions { display: inline-flex; gap: 8px; margin-left: auto; }

.fin-form-wrap { background: #fff; border: 1px solid var(--border-color); border-radius: 10px; padding: 18px; margin-bottom: 16px; }

/* 财务表格（还原 Excel 结构，编辑与打印共用） */
.finance-sheet { width: 100%; border-collapse: collapse; font-size: 13px; color: #1f2329; background: #fff; }
.finance-sheet td { border: 1px solid #555; padding: 7px 10px; vertical-align: middle; line-height: 1.5; }
.finance-sheet .fs-label { background: #f5f7fa; color: #333; font-weight: 600; white-space: nowrap; width: 1%; }
.finance-sheet .fs-title { text-align: center; font-size: 18px; font-weight: 700; letter-spacing: 4px; padding: 12px 0; background: #fafbfc; }
.finance-sheet .fs-subhead td { background: #eef2f7; font-weight: 600; text-align: center; }
.finance-sheet .fs-text { color: #1f2329; }
.finance-sheet .fs-input { width: 100%; border: none; background: transparent; font-size: 13px; color: #1f2329; padding: 2px 0; outline: none; font-family: inherit; }
.finance-sheet .fs-input:focus { background: #fffbe6; }
.finance-sheet .fs-ta { resize: vertical; min-height: 38px; line-height: 1.5; }
.finance-sheet .fs-inline { display: inline-block; width: 120px; border-bottom: 1px solid #999; }
.finance-sheet .fs-subtotal-val, .finance-sheet .fs-total-val, .finance-sheet .fs-balance-val { font-weight: 700; color: #c0392b; }
.finance-sheet .fs-add-row { background: #f8fafc; text-align: center; padding: 6px 0; }
.finance-sheet .fs-add-row .btn { border-style: dashed; color: #2f6fed; }
.finance-sheet .fs-amount-text { font-weight: 700; color: #c0392b; }
.finance-sheet .fs-project-line { display: flex; align-items: center; gap: 8px; }
.finance-sheet .fs-project-line .fs-input { flex: 1 1 auto; }
/* 行程报销：分节标题行 + 单元格内输入与删除按钮并排 */
.finance-sheet .fs-section td { background: #eef2f7; color: #2f6fed; font-weight: 700; padding: 8px 10px; letter-spacing: 1px; }
.finance-sheet .fs-cell-with-del { display: flex; align-items: center; gap: 6px; }
.finance-sheet .fs-cell-with-del .fs-input { flex: 1 1 auto; }
.finance-sheet .fs-cell-with-del .btn { flex: 0 0 auto; padding: 2px 8px; }
.finance-sheet .fs-col-loc { width: 12%; }
.finance-sheet .text-right { text-align: right; }
/* 签名行：左右两侧对齐（flex space-between，首左末右） */
.finance-sheet .fs-sign-row { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; padding: 8px 4px; }
.finance-sheet .fs-sign-item { flex: 0 0 auto; display: inline-flex; align-items: flex-end; white-space: nowrap; font-size: 13px; color: #1f2329; }
.finance-sheet .fs-sign-line { display: inline-block; width: 150px; max-width: 28vw; border-bottom: 1px solid #555; margin-left: 8px; height: 22px; }
/* 合同选择弹窗 */
.fin-contract-list { display: flex; flex-direction: column; gap: 8px; }
.fin-contract-item { padding: 10px 12px; border: 1px solid #e3e8ef; border-radius: 8px; cursor: pointer; transition: .15s; }
.fin-contract-item:hover { border-color: #2f6fed; background: #f5f8ff; }
.fin-contract-item .fc-name { font-weight: 600; color: #1f2329; }
.fin-contract-item .fc-meta { font-size: 12px; margin-top: 2px; }

.fin-detail-meta { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; margin-bottom: 12px; font-size: 13px; }
.fin-approve-chain { margin-top: 12px; padding: 10px 12px; background: var(--bg-base); border-radius: 8px; font-size: 13px; color: var(--text-secondary); line-height: 1.7; }
.fin-list-host { padding: 12px 16px 16px; }

/* 申请记录视图 */
.fin-scope-bar { display: flex; gap: 8px; flex-wrap: wrap; margin: 14px 16px 0; }
.fin-scope { padding: 6px 14px; border: 1px solid #e3e8ef; background: #fff; border-radius: 999px; font-size: 13px; color: #475569; cursor: pointer; transition: .15s; }
.fin-scope:hover { border-color: #2f6fed; color: #2f6fed; }
.fin-scope.active { background: #2f6fed; border-color: #2f6fed; color: #fff; }
.fin-rec-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 12px; margin: 14px 16px 16px; }
.fin-rec-search { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.fin-rec-search .suppliers-search { width: 220px; flex: 0 0 auto; }
@media (max-width: 640px) {
  .fin-rec-search { margin-left: 0; width: 100%; }
  .fin-rec-search .suppliers-search { flex: 1 1 auto; width: auto; }
}
.fin-rec-host { padding: 12px 16px 16px; }
.fin-rec-ops { display: flex; gap: 6px; flex-wrap: wrap; justify-content: center; }

/* 流程节点徽章（提交/已读/通过/签字/支付） */
.fn-nodes { display: inline-flex; gap: 5px; flex-wrap: wrap; }
.fn-node { display: inline-flex; align-items: center; gap: 2px; padding: 2px 7px; border-radius: 999px; font-size: 12px; line-height: 1.6; white-space: nowrap; border: 1px solid transparent; }
.fn-done { background: #e7f7ee; color: #1a8a4f; border-color: #b7e6c9; }
.fn-active { background: #fff4e5; color: #c8740a; border-color: #ffe0b0; }
.fn-rejected { background: #fdeaea; color: #c0392b; border-color: #f5c2c0; }
.fn-todo { background: #f1f3f5; color: #98a2b3; border-color: #e3e8ef; }
.fin-detail-nodes { display: flex; align-items: center; gap: 8px; margin: 4px 0 12px; flex-wrap: wrap; }
.fin-detail-nodes strong { font-size: 13px; color: #475569; }
.badge-info { background: #e8f0fe; color: #2f6fed; border-color: #c5d8fb; }

/* 收款信息（账户名 / 账号 / 银行支行） */
.finance-sheet .fin-receiver { display: flex; flex-direction: column; gap: 6px; padding: 4px 0; }
.finance-sheet .fin-receiver .fr-row { display: flex; align-items: center; gap: 10px; }
.finance-sheet .fin-receiver .fr-label { flex: 0 0 84px; font-weight: 600; color: #333; white-space: nowrap; }
.finance-sheet .fin-receiver .fr-label .req { color: #c0392b; font-style: normal; margin-left: 2px; }
.finance-sheet .fin-receiver .fr-field { flex: 1 1 auto; }
.finance-sheet .fin-receiver .fr-field .fs-input { width: 100%; border-bottom: 1px solid #cfd6e0; padding: 5px 2px; background: transparent; }
.finance-sheet .fs-amt { font-weight: 600; color: #c0392b; }

/* 打印：仅显示财务表格，隐藏系统其余部分 */
.finance-print { display: none; }
@media print {
  body * { visibility: hidden !important; }
  .finance-print, .finance-print * { visibility: visible !important; }
  .finance-print { display: block !important; position: absolute; left: 0; top: 0; width: 100%; padding: 12px 16px; background: #fff; }
  .finance-print-head { text-align: center; font-size: 16px; font-weight: 700; margin-bottom: 8px; }
  .finance-sheet { box-shadow: none !important; }
  .finance-sheet .fs-input { border: none !important; background: transparent !important; }
  .finance-sheet td { border-color: #333 !important; }
  @page { margin: 10mm; }
}

/* ======================== 合同管理：输入框+按钮 / 选择器 ======================== */
.input-with-btn { display: flex; align-items: stretch; gap: 8px; }
.input-with-btn .form-input { flex: 1 1 auto; min-width: 0; }
.input-with-btn .btn { flex: 0 0 auto; white-space: nowrap; }
.picker-list { display: flex; flex-direction: column; gap: 6px; }
.picker-item { padding: 10px 12px; border: 1px solid var(--border, #e5e7eb); border-radius: 8px; cursor: pointer; transition: background .15s, border-color .15s; }
.picker-item:hover { background: #f1f5ff; border-color: #2f6fed; }
.picker-title { font-size: 14px; font-weight: 600; color: #1f2329; }
.picker-sub { font-size: 12px; margin-top: 2px; }



/* ==================== 新闻通告 ==================== */
/* 发布形式选择 */
.news-type-picker { display: flex; gap: 12px; flex-wrap: wrap; }
.news-type-card { flex: 1; min-width: 220px; border: 1.5px solid var(--border-color); border-radius: 8px; padding: 12px 14px; cursor: pointer; transition: all .15s; background: var(--bg-base); }
.news-type-card:hover { border-color: var(--accent-primary); }
.news-type-card.active { border-color: var(--accent-primary); background: var(--accent-primary-dim); }
.news-type-title { font-size: 14px; font-weight: 600; color: var(--text-primary); margin-bottom: 4px; }
.news-type-desc { font-size: 12px; color: var(--text-muted); line-height: 1.5; }
.news-actions { margin-top: 18px; }

/* 记录筛选栏 */
.news-filter-bar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
.news-filter-label { font-size: 13px; color: var(--text-muted); }
.news-filter-sep { color: var(--text-muted); }
.news-filter-bar .form-input-sm { width: auto; }

/* 徽章与状态 */
.news-badge { display: inline-block; font-size: 12px; padding: 1px 8px; border-radius: 10px; font-weight: 500; }
.news-badge-news { background: rgba(59,130,246,.12); color: #2563eb; }
.news-badge-push { background: rgba(245,158,11,.15); color: #d97706; margin-left: 6px; }
.news-status { font-size: 12px; padding: 1px 8px; border-radius: 10px; }
.news-status-published { background: rgba(16,185,129,.12); color: #059669; }
.news-status-revoked { background: rgba(148,163,184,.18); color: #64748b; }

/* 详情弹窗 */
.news-detail-meta { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.news-detail-time { font-size: 13px; color: var(--text-muted); }
.news-detail-content { font-size: 14px; line-height: 1.8; color: var(--text-primary); white-space: pre-wrap; word-break: break-word; }

/* 海内新闻滚动模块 */
.news-feed { max-height: 200px; overflow: hidden; position: relative; }
.news-feed-track { display: flex; flex-direction: column; }
.news-feed-track.news-feed-scroll { animation: newsScroll 24s linear infinite; }
.news-feed:hover .news-feed-track.news-feed-scroll { animation-play-state: paused; }
@keyframes newsScroll { 0% { transform: translateY(0); } 100% { transform: translateY(-50%); } }
.news-feed-item { display: flex; align-items: center; gap: 10px; padding: 10px 16px; border-bottom: 1px solid var(--border-color); cursor: pointer; transition: background .12s; }
.news-feed-item:hover { background: var(--bg-base); }
.news-feed-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--accent-primary); flex-shrink: 0; }
.news-feed-time { font-size: 12px; color: var(--text-muted); flex-shrink: 0; width: 84px; }
.news-feed-title { font-size: 14px; color: var(--text-primary); flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* 推送弹窗 */
.news-push-overlay { z-index: 3000; }
.news-push-header { display: flex; align-items: center; justify-content: space-between; padding: 14px 18px 0; }
.news-push-flag { font-size: 12px; font-weight: 600; color: #d97706; background: rgba(245,158,11,.15); padding: 3px 10px; border-radius: 10px; }
.news-push-title { font-size: 17px; font-weight: 600; color: var(--text-primary); margin-bottom: 6px; }
.news-push-time { font-size: 12px; color: var(--text-muted); margin-bottom: 12px; }
.news-push-content { font-size: 14px; line-height: 1.8; color: var(--text-primary); white-space: pre-wrap; word-break: break-word; max-height: 300px; overflow-y: auto; }

/* 车辆设备复选框选择 */
.eq-check-group { display: flex; flex-direction: column; gap: 6px; margin: 6px 0 14px; }
.eq-check-item { display: flex; align-items: center; gap: 8px; padding: 8px 12px; border: 1px solid var(--border-color, #e5e7eb); border-radius: 8px; cursor: pointer; font-size: 14px; color: var(--text-primary); transition: background .15s, border-color .15s; }
.eq-check-item:hover { border-color: var(--primary, #2563eb); background: rgba(37,99,235,.04); }
.eq-check-item input[type="checkbox"] { width: 16px; height: 16px; cursor: pointer; }

/* ======================== 权限管理 ======================== */
.perm-layout { display: grid; grid-template-columns: 300px 1fr; gap: 16px; align-items: start; }
.perm-side { padding: 0; }
.perm-side-header { display: flex; align-items: center; justify-content: space-between; }
.perm-pos-list { padding: 8px; max-height: 640px; overflow-y: auto; }
.perm-pos-item { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 12px; border-radius: 8px; cursor: pointer; transition: background .15s; }
.perm-pos-item:hover { background: rgba(37,99,235,.05); }
.perm-pos-item.active { background: rgba(37,99,235,.10); box-shadow: inset 3px 0 0 var(--primary, #2563eb); }
.perm-pos-main { display: flex; align-items: center; gap: 8px; min-width: 0; }
.perm-pos-name { font-size: 14px; color: var(--text-primary); font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.perm-pos-badge { font-size: 12px; padding: 1px 8px; border-radius: 10px; white-space: nowrap; }
.perm-pos-badge.open { background: #e8f5e9; color: #2e7d32; }
.perm-pos-badge.restricted { background: #e3f2fd; color: #1565c0; }
.perm-pos-ops { display: flex; gap: 4px; opacity: 0; transition: opacity .15s; }
.perm-pos-item:hover .perm-pos-ops, .perm-pos-item.active .perm-pos-ops { opacity: 1; }
.perm-icon-btn { border: none; background: transparent; cursor: pointer; font-size: 14px; padding: 2px 6px; border-radius: 6px; color: var(--text-secondary, #6b7280); }
.perm-icon-btn:hover { background: rgba(0,0,0,.06); }
.perm-icon-btn.danger:hover { background: #fdecea; color: #d32f2f; }

.perm-main { padding: 0; }
.perm-main-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.perm-main-sub { font-size: 13px; color: var(--text-secondary, #6b7280); margin-top: 4px; }
.perm-tree-body { max-height: 560px; overflow-y: auto; }
.perm-open-hint { padding: 24px; text-align: center; color: var(--text-secondary, #6b7280); background: #f8fafc; border-radius: 8px; font-size: 14px; }

.perm-switch { display: flex; align-items: center; gap: 8px; cursor: pointer; user-select: none; white-space: nowrap; }
.perm-switch input { display: none; }
.perm-switch-track { position: relative; width: 40px; height: 22px; background: #cbd5e1; border-radius: 22px; transition: background .2s; flex-shrink: 0; }
.perm-switch-thumb { position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; background: #fff; border-radius: 50%; transition: transform .2s; box-shadow: 0 1px 3px rgba(0,0,0,.2); }
.perm-switch input:checked + .perm-switch-track { background: var(--primary, #2563eb); }
.perm-switch input:checked + .perm-switch-track .perm-switch-thumb { transform: translateX(18px); }
.perm-switch-label { font-size: 13px; color: var(--text-primary); }

.perm-toolbar { display: flex; align-items: center; gap: 8px; padding: 10px 0 14px; border-bottom: 1px solid var(--border-color, #e5e7eb); margin-bottom: 12px; }
.perm-count { margin-left: auto; font-size: 13px; color: var(--text-secondary, #6b7280); }
.perm-group { margin-bottom: 14px; }
.perm-group-head { display: flex; align-items: center; gap: 8px; cursor: pointer; padding: 6px 0; }
.perm-group-head input[type="checkbox"] { width: 16px; height: 16px; cursor: pointer; }
.perm-group-title { font-size: 14px; font-weight: 600; color: var(--text-primary); }
.perm-group-count { font-size: 12px; color: var(--text-secondary, #6b7280); }
.perm-page-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 8px; padding: 6px 0 0 24px; }
.perm-page-item { display: flex; align-items: center; gap: 8px; padding: 8px 12px; border: 1px solid var(--border-color, #e5e7eb); border-radius: 8px; cursor: pointer; font-size: 13px; color: var(--text-primary); transition: background .15s, border-color .15s; }
.perm-page-item:hover { border-color: var(--primary, #2563eb); }
.perm-page-item.checked { border-color: var(--primary, #2563eb); background: rgba(37,99,235,.06); }
.perm-page-item input[type="checkbox"] { width: 15px; height: 15px; cursor: pointer; }

.perm-footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 20px; border-top: 1px solid var(--border-color, #e5e7eb); }
.perm-footer > div { display: flex; gap: 8px; }
.perm-dirty { font-size: 13px; color: #e67e22; }

/* 无权访问提示 */
.perm-denied { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; padding: 80px 20px; }
.perm-denied-icon { font-size: 48px; }
.perm-denied-title { font-size: 18px; font-weight: 600; color: var(--text-primary); }
.perm-denied-sub { font-size: 14px; color: var(--text-secondary, #6b7280); text-align: center; max-width: 420px; }

@media (max-width: 860px) {
  .perm-layout { grid-template-columns: 1fr; }
}

/* ============================================================
   产品服务统一页：产品 / 服务 两个分区块同页呈现
   ============================================================ */
.ps-unified { display: flex; flex-direction: column; gap: 18px; padding: 0; }
.ps-section { background: #fff; border: 1px solid var(--border-color, #eef0f4); border-radius: var(--radius-md, 10px); overflow: hidden; }
.ps-section-head {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px 14px;
  padding: 14px 16px;
  border-bottom: 1px solid var(--border-color, #eef0f4);
  background: #fafbfc;
}
.ps-head-product { border-left: 4px solid #3b82f6; }
.ps-head-service { border-left: 4px solid #8b5cf6; }
.ps-section-title { display: flex; align-items: center; gap: 8px; font-size: 15px; font-weight: 600; color: var(--text-primary); }
.ps-section-title svg { width: 18px; height: 18px; }
.ps-head-product .ps-section-title svg { color: #3b82f6; }
.ps-head-service .ps-section-title svg { color: #8b5cf6; }
.ps-count { color: var(--text-secondary, #6b7280); font-weight: 500; font-size: 13px; }
.ps-filter-row { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 12px; margin-left: auto; }
.ps-list { padding: 4px 16px 16px; overflow-x: auto; }
.ps-list .data-table { min-width: 780px; }
.ps-list .empty-state { margin: 28px 0; }

@media (max-width: 1100px) {
  .ps-filter-row { margin-left: 0; width: 100%; }
  .ps-section-head { align-items: flex-start; }
}
@media (max-width: 720px) {
  .ps-section-head { padding: 12px; }
  .ps-list { padding: 4px 10px 12px; }
  .ps-filter-row .filter-group { flex: 1 1 100%; }
  .ps-filter-row .suppliers-filter-select,
  .ps-filter-row .suppliers-search { width: 100%; flex: 1 1 100%; }
}
