/* =====================================================================
 * 热搜工作台 · 设计 Token（方案C 森绿主题 · 2026-08-21 蓝色统一改绿）
 * 明/暗双主题：html[data-theme="dark"] 覆盖变量，localStorage("wk_theme") 记忆
 * ===================================================================== */
:root,
:root[data-theme="light"] {
  /* 品牌主色（森绿 · 2026-08-21 老吴指定蓝色统一改绿） */
  --wk-primary: #16a34a;
  --wk-primary-600: #15803d;
  --wk-primary-700: #166534;
  --wk-primary-50: #f0fdf4;
  --wk-primary-100: #dcfce7;
  --wk-primary-200: #bbf7d0;
  --wk-primary-300: #86efac;
  --wk-primary-400: #4ade80;
  /* 语义色 */
  --wk-success: #16a34a;
  --wk-success-light: #dcfce7;
  --wk-danger: #dc2626;
  --wk-danger-light: #fee2e2;
  --wk-warning: #d97706;
  --wk-warning-light: #fef3c7;
  --wk-info: var(--wk-primary);
  --wk-info-light: var(--wk-primary-50);
  --wk-muted: #737373;
  --wk-muted-light: #f5f5f5;
  /* 2026-09-16 暗色审计补：中性灰（图表分段背景）+ 警告条边框。
     原先两处为硬编码 #94a3b8 / #fde68a，浅色下正常、暗色下成为亮块/亮框。 */
  --wk-neutral: #94a3b8;
  --wk-warning-border: #fde68a;
  /* 中性/背景（灰蓝底，飞书感） */
  --wk-bg: #f5f7fa;
  --wk-surface: #ffffff;
  --wk-text: #1f2329;
  --wk-text-2: #5b6470;
  --wk-text-3: #8b95a3;
  --wk-border: #e6eaf0;
  --wk-border-2: #cbd1dc;
  /* 阴影 */
  --wk-shadow-xs: 0 1px 2px rgba(15, 23, 42, 0.04);
  --wk-shadow: 0 4px 12px rgba(15, 23, 42, 0.08);
  --wk-shadow-md: 0 6px 16px rgba(15, 23, 42, 0.10);
  --wk-shadow-lg: 0 12px 28px rgba(15, 23, 42, 0.14);
  --wk-shadow-focus: 0 0 0 3px rgba(22, 163, 74, 0.18);
  /* 圆角 */
  --wk-radius: 6px;
  --wk-radius-md: 8px;
  --wk-radius-lg: 12px;
  --wk-accent-action: var(--wk-primary);  /* 主操作统一森绿（2026-08-21 老吴指定蓝色改绿） */

  /* ===== 2026-09-15 老吴：暗色适配专项 · 补齐「被引用但从未定义」的变量 =====
     下列 9 个变量此前只存在于各调用处的 var(x, fallback) 第二参里，本身从未定义，
     于是暗色主题下它们**永远返回 fallback 的硬编码亮色**（#fff / #f8fafc / #f0fdf4 …），
     直接表现为「切暗色后该区块还是白块」。此处补全明暗两套，fallback 仅作兜底。 */
  /* 以下 3 个为本次新增：视图规则与内联样式统一引用，避免各自硬编码浅色 */
  --wk-surface-2: #f8fafc;   /* 次级面板底：表头 / 合计行 / KPI 卡 / 次级区块 */
  --wk-fill: #f1f5f9;        /* 浅填充：chip / tag / 代码块 / 骨架屏 */
  --wk-info-bg: #eff6ff;     /* 蓝调浅底：信息提醒块 */
  --wk-text-placeholder: #c0c4cc;  /* 占位/空态文字（最弱一级）：'—' '未上传' '暂无数据' 等 */
}
:root[data-theme="dark"] {
  --wk-primary: #4ade80;
  --wk-primary-600: #22c55e;
  --wk-primary-700: #16a34a;
  --wk-primary-50: #052e16;
  --wk-primary-100: #064e3b;
  --wk-primary-200: #065f46;
  --wk-primary-300: #047857;
  --wk-primary-400: #10b981;
  --wk-success: #4ade80;
  --wk-success-light: #123a22;
  --wk-danger: #f87171;
  --wk-danger-light: #3d1212;
  --wk-warning: #fbbf24;
  --wk-warning-light: #3a2a0a;
  --wk-info: var(--wk-primary);
  --wk-info-light: var(--wk-primary-50);
  --wk-muted: #9ca3af;
  --wk-muted-light: #262626;
  --wk-neutral: #64748b;          /* 亮度 0.45 < 阈值 0.55（原 #94a3b8 为 0.633 → 亮块）*/
  --wk-warning-border: #a16207;   /* 亮度 0.35（原 #fde68a 为 0.895 → 亮框）*/
  --wk-bg: #111827;
  --wk-surface: #1f2937;
  --wk-text: #f3f4f6;
  --wk-text-2: #d1d5db;
  --wk-text-3: #9ca3af;
  --wk-border: #374151;
  --wk-border-2: #4b5563;
  --wk-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.3);
  --wk-shadow: 0 4px 12px rgba(0, 0, 0, 0.35);
  --wk-shadow-md: 0 6px 16px rgba(0, 0, 0, 0.45);
  --wk-shadow-lg: 0 12px 28px rgba(0, 0, 0, 0.55);
  --wk-shadow-focus: 0 0 0 3px rgba(74, 222, 128, 0.35);
  --wk-accent-action: var(--wk-primary);
}

/* Element Plus 主题覆盖（品牌橙红 + 森绿操作强调 + 暗色适配） */
:root,
:root[data-theme="light"] {
  --el-color-primary: var(--wk-primary);
  --el-color-primary-light-3: var(--wk-primary-300);
  --el-color-primary-light-5: var(--wk-primary-200);
  --el-color-primary-light-7: var(--wk-primary-100);
  --el-color-primary-light-8: var(--wk-primary-50);
  --el-color-primary-light-9: var(--wk-primary-50);
  --el-color-primary-dark-2: var(--wk-primary-600);
  --el-color-success: var(--wk-success);
  --el-color-danger: var(--wk-danger);
  --el-color-warning: var(--wk-warning);
  --el-color-info: var(--wk-info);
  --el-border-radius-base: var(--wk-radius);
  --el-bg-color: var(--wk-surface);
  --el-bg-color-page: var(--wk-bg);
  --el-text-color-primary: var(--wk-text);
  --el-text-color-regular: var(--wk-text-2);
  --el-text-color-secondary: var(--wk-text-3);
  --el-border-color: var(--wk-border);
  --el-border-color-light: var(--wk-border);
  --el-border-color-lighter: var(--wk-border);
  --el-fill-color-light: var(--wk-muted-light);
  /* 2026-09-15：全局 loading 遮罩改为跟随主题（暗色下不再整屏闪白） */
  --el-mask-color: rgba(255, 255, 255, 0.72);
}
:root[data-theme="dark"] {
  --el-color-primary: var(--wk-primary);
  --el-color-primary-light-3: var(--wk-primary-300);
  --el-color-primary-light-5: var(--wk-primary-400);
  --el-color-primary-light-7: var(--wk-primary-200);
  --el-color-primary-light-8: var(--wk-primary-100);
  --el-color-primary-light-9: var(--wk-primary-50);
  --el-color-primary-dark-2: var(--wk-primary-300);
  --el-color-success: var(--wk-success);
  --el-color-danger: var(--wk-danger);
  --el-color-warning: var(--wk-warning);
  --el-color-info: var(--wk-info);
  --el-border-radius-base: var(--wk-radius);
  --el-bg-color: var(--wk-surface);
  --el-bg-color-page: var(--wk-bg);
  --el-text-color-primary: var(--wk-text);
  --el-text-color-regular: var(--wk-text-2);
  --el-text-color-secondary: var(--wk-text-3);
  --el-border-color: var(--wk-border);
  --el-border-color-light: var(--wk-border);
  --el-border-color-lighter: var(--wk-border);
  --el-border-color-hover: var(--wk-border-2);
  --el-fill-color-light: var(--wk-muted-light);
  --el-fill-color-blank: var(--wk-surface);
  --el-mask-color: rgba(0, 0, 0, 0.6);

  /* ===== 2026-09-15 暗色适配专项：上述变量的暗色取值（与 light 段一一对应） ===== */
  --wk-surface-2: #1b2330;   /* 次级面板底：与既有 pageBottom 深色一致 */
  --wk-fill: #232831;        /* 浅填充 */
  --wk-info-bg: #17253c;     /* 蓝调浅底 */
  --wk-text-placeholder: #6b7280;  /* 占位/空态文字：比 text-3 更弱，深底上仍可读 */
}

/* 主题切换平滑过渡（仅颜色变化） */
html { transition: background-color 0.25s ease; }
html, body {
  background: var(--wk-bg);
  color: var(--wk-text);
  font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB",
    "Microsoft YaHei", "微软雅黑", Arial, sans-serif;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; height: 100%; }
body {
  font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB",
    "Microsoft YaHei", "微软雅黑", Arial, sans-serif;
  background: var(--wk-bg);
  color: var(--wk-text);
}

/* ---------- 登录页 ---------- */
.login-page {
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, #15803d 0%, #16a34a 45%, #22c55e 100%);
}
.login-card {
  width: 400px;
  padding: 40px 36px 32px;
  background: #fff;
  border-radius: 12px;
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25);
}
.login-title {
  font-size: 24px;
  font-weight: 700;
  text-align: center;
  color: var(--wk-primary-700);
  margin-bottom: 6px;
}
.login-subtitle {
  text-align: center;
  color: #909399;
  font-size: 13px;
  margin-bottom: 28px;
}
.login-tip {
  margin-top: 18px;
  font-size: 12px;
  color: #909399;
  text-align: center;
}

/* ---------- 主布局（2026-08-21 方案C：顶栏 + 顶部模块缓存 tab + 抽屉导航） ---------- */
/* 修正3 根因修复：el-main 内部滚动，任何模块页内容不得溢出到 tab 栏之上；
   isolation 形成独立层叠上下文，使 tab 栏(z-index:30) 在本布局内始终高于内容 */
.app-layout { height: 100vh; position: relative; isolation: isolate; overflow: hidden; }

/* 顶栏：触发器 + 品牌 + 面包屑 + 动作区 */
.app-topbar {
  background: var(--wk-surface);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 20px;
  border-bottom: 1px solid var(--wk-border);
  height: 56px;
  flex-shrink: 0;
  position: relative;
  z-index: 20;
}
.topbar-left { display: flex; align-items: center; gap: 12px; min-width: 0; }
.topbar-right { display: flex; align-items: center; gap: 10px; }
.drawer-trigger {
  width: 36px; height: 36px; border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  background: var(--wk-muted-light); color: var(--wk-text-2);
  border: 1px solid var(--wk-border);
  cursor: pointer; transition: all .15s ease;
  flex-shrink: 0;
}
.drawer-trigger:hover { background: var(--wk-primary-50); color: var(--wk-primary); border-color: var(--wk-primary-200); }
.drawer-trigger.on { background: var(--wk-primary); color: #fff; border-color: var(--wk-primary); }
.topbar-brand {
  display: flex; align-items: center; gap: 8px;
  cursor: pointer; user-select: none; flex-shrink: 0;
}
.topbar-brand .brand-name {
  font-size: 16px; font-weight: 700; letter-spacing: .5px; color: var(--wk-text);
}
.topbar-divider {
  width: 1px; height: 18px; background: var(--wk-border-2); flex-shrink: 0;
}
.topbar-title {
  font-size: 13.5px; font-weight: 600; color: var(--wk-text-2);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.header-user { display: flex; align-items: center; gap: 10px; color: var(--wk-text-2); cursor: pointer; }

/* logo 圆点（品牌渐变，顶栏 + 抽屉共用） */
.logo-dot {
  width: 10px; height: 10px; border-radius: 50%;
  background: linear-gradient(135deg, #16a34a, #22c55e);
  display: inline-block;
  box-shadow: 0 1px 3px rgba(22, 163, 74, 0.35);
}

/* ---------- 顶部模块缓存 tab 栏（方案C 胶囊） ---------- */
.wk-tabbar {
  display: flex; align-items: center; flex-wrap: nowrap; align-content: flex-start;
  gap: 6px; row-gap: 6px;
  padding: 10px 20px;
  background: var(--wk-surface);
  border-bottom: 1px solid var(--wk-border);
  min-height: 48px;
  flex-shrink: 0;
  position: relative; z-index: 30;   /* 修正3 防护：任何模块页内容（含浮层）不得遮挡顶部 tab 栏 */
  /* 2026-08-26 修复「tab 吞模块」：原 flex-wrap:wrap 在 tab 多时换行撑高挤掉内容区；
     改单行 nowrap + 横向滚动，tab 再多也不增高 */
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: thin;
}
.wk-tabbar::-webkit-scrollbar { height: 4px; }
.wk-tabbar::-webkit-scrollbar-thumb { background: var(--wk-border-2); border-radius: 2px; }
.wk-tab {
  display: flex; align-items: center; gap: 6px;
  padding: 7px 8px 7px 14px;
  border-radius: 10px;
  font-size: 13px; color: var(--wk-text-2);
  background: var(--wk-muted-light);
  border: 1px solid transparent;
  cursor: pointer; white-space: nowrap;
  transition: all .15s ease;
  user-select: none;
}
.wk-tab:hover { background: var(--wk-primary-50); color: var(--wk-primary); }
/* 2026-08-24 锁定 tab 视觉强调：琥珀底色 + 边框，固定到 tabbar 最前面（与已选中绿底区分） */
.wk-tab.locked {
  order: -1;
  background: var(--wk-warning-light);
  color: var(--wk-warning, #d97706);
  border-color: var(--wk-warning, #d97706);
  font-weight: 600;
  box-shadow: inset 0 0 0 1px var(--wk-warning, #d97706);
}
.wk-tab.locked.on {
  background: var(--wk-warning, #d97706);
  color: #fff;
  border-color: var(--wk-warning, #d97706);
  box-shadow: 0 4px 12px rgba(217, 119, 6, .30);
}
:root[data-theme="dark"] .wk-tab.locked {
  background: rgba(217, 119, 6, .18);
  color: var(--wk-warning, #fbbf24);
  border-color: var(--wk-warning, #fbbf24);
}
:root[data-theme="dark"] .wk-tab.locked.on {
  background: var(--wk-warning, #fbbf24);
  color: #1a1a1a;
}
.wk-tab.on {
  background: var(--wk-primary); color: #fff;
  font-weight: 600;
  box-shadow: 0 4px 12px rgba(22, 163, 74, 0.30);
}
:root[data-theme="dark"] .wk-tab.on {
  background: var(--wk-primary); box-shadow: 0 4px 12px rgba(74, 222, 128, 0.30);
}
.wk-tab .wk-tab-title { max-width: 180px; overflow: hidden; text-overflow: ellipsis; }
.wk-tab .wk-tab-lk,
.wk-tab .wk-tab-x {
  width: 18px; height: 18px; border-radius: 4px;
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; line-height: 1; opacity: .65;
  transition: all .12s ease;
}
.wk-tab .wk-tab-lk:hover,
.wk-tab .wk-tab-x:hover { opacity: 1; }
.wk-tab:not(.on) .wk-tab-lk:hover { background: var(--wk-border); }
.wk-tab:not(.on) .wk-tab-x:hover { background: var(--wk-border); color: var(--wk-danger); }
.wk-tab.on .wk-tab-lk:hover,
.wk-tab.on .wk-tab-x:hover { background: rgba(255, 255, 255, 0.22); }
/* 锁定态视觉：🔒 常显 + 微金色提示 */
.wk-tab.locked .wk-tab-lk { opacity: 1; }

/* ---------- 导航抽屉（el-drawer 容器定制） ---------- */
.nav-drawer { background: var(--wk-surface) !important; }
.nav-drawer .el-drawer__header {
  margin-bottom: 0; padding: 14px 18px;
  border-bottom: 1px solid var(--wk-border);
}
.nav-drawer .el-drawer__close-btn { color: var(--wk-text-3); }
.nav-drawer-head { display: flex; align-items: center; gap: 10px; }
.nav-drawer-head .nav-drawer-name { font-size: 15px; font-weight: 700; color: var(--wk-text); }
.nav-drawer-head .nav-drawer-sub {
  font-size: 11px; color: var(--wk-text-3);
  background: var(--wk-muted-light); border-radius: 4px; padding: 1px 6px;
}
.nav-drawer-body {
  display: flex; flex-direction: column;
  height: 100%; overflow: hidden;
}
.nav-drawer-body .app-menu { flex: 1; overflow-y: auto; border-right: none !important; }
.nav-drawer-body .app-sidebar-footer { flex-shrink: 0; }

/* 抽屉内菜单基础（原侧栏规则平移） */
.app-menu { flex: 1; border-right: none !important; }
/* 左下角：登录用户 + 数据权限状态灯（2026-08-18） */
.app-sidebar-footer {
  padding: 10px 14px;
  border-top: 1px solid var(--wk-border);
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex-shrink: 0;
}
.app-sidebar-footer .sidebar-user {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  font-weight: 600;
  color: var(--wk-text);
}
.app-sidebar-footer .sidebar-username {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.app-sidebar-footer .sidebar-perm {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
}
.app-main { padding: 20px; overflow: auto; background: var(--wk-bg); flex: 1; }

/* ---------- 首页 ---------- */
.welcome-banner {
  background: linear-gradient(135deg, #15803d 0%, #16a34a 100%);
  border-radius: 10px;
  padding: 24px 28px;
  color: #fff;
  margin-bottom: 20px;
}
.welcome-banner h2 { margin: 0 0 8px; font-size: 20px; }
.welcome-banner p { margin: 0; font-size: 13px; opacity: 0.9; line-height: 1.7; }
.module-card { cursor: pointer; transition: all 0.2s; }
.module-card:hover { transform: translateY(-3px); box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12); }
.module-card .el-card__body { padding: 20px; }
.module-icon {
  width: 46px; height: 46px; border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-size: 24px; margin-bottom: 12px;
}
.module-name { font-size: 16px; font-weight: 600; margin-bottom: 4px; }
.module-subtitle { font-size: 12px; color: #909399; margin-bottom: 8px; }
.module-desc { font-size: 13px; color: #606266; line-height: 1.6; height: 40px; overflow: hidden; }
.isolation-note {
  margin-top: 16px; font-size: 12px; color: #909399;
  background: var(--wk-primary-50); border: 1px dashed var(--wk-primary-200); border-radius: 6px; padding: 10px 14px;
}

/* ---------- 模块页 ---------- */
.page-head { display: flex; align-items: center; gap: 14px; margin-bottom: 18px; }
.page-head .back-btn { cursor: pointer; }
.page-title { font-size: 20px; font-weight: 700; margin: 0; }
.purchase-page-wrap .page-title { margin: 0 0 16px; }  /* 采购中心5子菜单：标题与下方卡片拉开间距（2026-08-18） */
.page-subtitle { font-size: 13px; color: #909399; }
.feature-card { margin-bottom: 16px; }
.feature-list { padding: 0; margin: 0; list-style: none; }
.feature-list li {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 2px; border-bottom: 1px dashed var(--wk-border); font-size: 14px; color: var(--wk-text-2);
}
.feature-list li:last-child { border-bottom: none; }
.copy-cell {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  cursor: pointer;
  color: var(--wk-primary);
  line-height: 1.5;
  word-break: break-all;}
/* 多行截断（长文案，禁 show-overflow-tooltip 弹全文） */
.cell-clamp {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  line-height: 1.5;
  word-break: break-all;
}
/* 商品分析排名前三名高亮（2026-08-18） */
.rank-1 { color: #f2542d; font-weight: 800; }
.rank-2 { color: #e6a23c; font-weight: 800; }
.rank-3 { color: var(--wk-primary); font-weight: 800; }
/* 广告参数三行（广告系列/广告组/广告），行距拉开 */
.ad-params { font-size: 12px; line-height: 2.1; color: #303133; white-space: nowrap; }

/* ---------- 统计卡片 ---------- */
.status-dot { display: inline-block; width: 12px; height: 12px; border-radius: 50%; flex-shrink: 0; }
.status-dot.green { background: #67c23a; box-shadow: 0 0 0 3px rgba(103, 194, 58, .18); }
.status-dot.yellow { background: #e6a23c; box-shadow: 0 0 0 3px rgba(230, 162, 60, .18); }
.status-dot.red { background: #f56c6c; box-shadow: 0 0 0 3px rgba(245, 108, 108, .18); }
.status-dot.gray { background: var(--wk-text-placeholder); box-shadow: 0 0 0 3px rgba(192, 196, 204, .18); }
.stat-cards { display: flex; gap: 12px; margin-bottom: 14px; flex-wrap: wrap; }
.stat-cards--4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 14px; }
.stat-cards--4 .stat-card { min-width: 0; display: flex; flex-direction: column; justify-content: center; text-align: left; padding: 16px 18px; }
.stat-card {
  flex: 1; min-width: 130px; background: #fff; border-radius: 10px;
  padding: 14px 16px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
  border: 1px solid #ebeef5; transition: transform .2s;
}
.stat-card:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(0,0,0,.1); }
.stat-card .stat-num { font-size: 24px; font-weight: 700; line-height: 1.2; }
.stat-card .stat-label { font-size: 12px; color: #909399; margin-top: 5px; }
.stat-cards--4 .stat-num { font-size: 26px; font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.stat-cards--4 .stat-label { margin-top: 6px; }
.stat-currency { font-size: 12px; font-weight: 400; color: var(--wk-text-placeholder); margin-left: 4px; }
.stat-card.blue .stat-num { color: var(--wk-primary); }
.stat-card.green .stat-num { color: #67c23a; }
.stat-card.red .stat-num { color: #f56c6c; }
.stat-card.orange .stat-num { color: #e6a23c; }
.stat-card.purple .stat-num { color: #9b59b6; }
.stat-card.gray .stat-num { color: #909399; }
.stat-card.warn .stat-num { color: #e6a23c; }
.stat-card.danger .stat-num { color: #d03050; }
.stat-card.teal .stat-num { color: #17a2b8; }
.stat-block { margin-bottom: 14px; }
.stat-block--jm .stat-cards { margin-bottom: 0; }
.stat-block--jm { background: var(--wk-primary-50); border: 1px solid var(--wk-primary-200); border-radius: 10px; padding: 12px 14px 4px; }
.stat-block-title { font-size: 14px; font-weight: 700; color: #303133; margin-bottom: 10px; display: flex; align-items: baseline; gap: 8px; }
.stat-block--jm .stat-block-title { color: var(--wk-primary-700); }
.stat-block-title .stat-date { font-size: 12px; font-weight: 400; color: #909399; }
.el-tag.tag-cyan { background: #e0f7fa; border-color: #00bcd4; color: #00838f; }

/* ---------- 报表区 ---------- */
.report-row { display: flex; gap: 16px; flex-wrap: wrap; margin-top: 16px; }
.report-box {
  flex: 1; min-width: 240px; background: #fff; border-radius: 10px;
  padding: 16px; border: 1px solid #ebeef5;
}
.report-box h4 { margin: 0 0 12px; font-size: 14px; color: #303133; }
.donut-wrap { display: flex; align-items: center; gap: 16px; }
.donut { width: 110px; height: 110px; border-radius: 50%; flex-shrink: 0; }
.donut-legend { font-size: 12px; color: #606266; line-height: 2; }
.donut-legend .dot { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 6px; }
.bar-row { display: flex; align-items: center; gap: 8px; margin: 7px 0; }
.bar-label { width: 76px; font-size: 12px; color: #606266; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bar-track { flex: 1; height: 14px; background: #f0f2f5; border-radius: 7px; overflow: hidden; }
.bar-fill { height: 100%; background: linear-gradient(90deg, var(--wk-primary), var(--wk-primary-300)); border-radius: 7px; transition: width .4s; }
.bar-count { font-size: 12px; color: #909399; width: 28px; text-align: right; }
.bucket-row { display: flex; align-items: center; gap: 8px; margin: 8px 0; }
.bucket-label { width: 70px; font-size: 12px; color: #606266; }
.bucket-bar { flex: 1; height: 14px; background: #f0f2f5; border-radius: 7px; overflow: hidden; }
.bucket-fill { height: 100%; background: linear-gradient(90deg, #67c23a, #95d475); border-radius: 7px; }

/* ---------- 订单预审卡片 ---------- */
.order-card { border-radius: 10px; border-top: 3px solid #909399; transition: transform .2s, box-shadow .2s; }
.order-card:hover { transform: translateY(-3px); box-shadow: 0 8px 20px rgba(0,0,0,.1); }
.order-card--valid { border-top-color: #67c23a; }
.order-card--invalid { border-top-color: #f56c6c; }
.order-card--pending { border-top-color: #e6a23c; }
.order-card .el-card__body { padding: 14px 16px; }
.order-card-head { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; flex-wrap: wrap; }
.order-card-id { font-weight: 600; color: #303133; font-size: 13px; word-break: break-all; flex: 1; }
.order-card-row { display: flex; gap: 8px; margin: 4px 0; font-size: 13px; }
.order-card-row .lbl { color: #909399; flex-shrink: 0; width: 84px; }
.order-card-row .val { color: #303133; word-break: break-all; }
.order-card-row .val.money { color: #e6a23c; font-weight: 700; }
.order-card-row .val.campaign-val { font-size: 11px; line-height: 1.6; color: #606266; word-break: break-all; }
.order-card-result { margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--wk-border); }
.result-reason { font-size: 12px; color: #909399; margin: 6px 0; line-height: 1.5; }
.result-stats { font-size: 12px; color: #606266; background: #f8f9fb; border-radius: 6px; padding: 6px 10px; }
.result-stats .s1 { color: #67c23a; } .result-stats .s2 { color: var(--wk-primary); }
.result-stats .s3 { color: #f56c6c; } .result-stats .s4 { color: #909399; }
.placeholder-box {
  border: 1px dashed var(--wk-border-2); border-radius: 8px;
  padding: 40px; text-align: center; color: #909399; background: #fafafa;
}

.stat-card.cyan .stat-num { color: #17a2b8; }
.stat-card.teal .stat-num { color: #1abc9c; }
.stat-card.warn .stat-num { color: #e74c3c; }

.bg-green { background: #67c23a; }
.bg-red { background: #f56c6c; }
.bg-blue { background: var(--wk-primary); }
.bg-orange { background: #e6a23c; }

/* ===== 抽屉内菜单 · 方案C 森绿胶囊（2026-08-21，仅改视觉，菜单结构/图标/顺序不动） =====
   激活项 = 森绿 var(--wk-primary) 实心胶囊 + 白字 + 柔投影；统一风格，不再做模块级特殊配色。 */
.app-menu .el-menu-item,
.app-menu .el-sub-menu__title {
  color: var(--wk-text-2);
  border-radius: 8px;
  border-left: 4px solid transparent;
  margin: 2px 10px;
}
.app-menu .el-menu-item:hover,
.app-menu .el-sub-menu__title:hover { background: var(--wk-bg); color: var(--wk-primary); }
.app-menu .el-menu-item.is-active {
  color: #fff !important;
  font-weight: 600;
  border-left: 4px solid var(--wk-primary-600) !important;
  background: linear-gradient(135deg, var(--wk-primary), var(--wk-primary-600)) !important;
  box-shadow: 0 2px 8px rgba(22, 163, 74, 0.30);
}
.app-menu .el-menu-item.is-active:hover {
  color: #fff !important;
  background: linear-gradient(135deg, var(--wk-primary), var(--wk-primary-600)) !important;
}
.app-menu .el-menu-item.is-active .el-icon,
.app-menu .el-menu-item.is-active i { color: #fff !important; }
.app-menu .el-menu { background: var(--wk-surface); }
.app-menu .el-sub-menu .el-menu { background: var(--wk-surface); }
/* 暗色主题：胶囊提亮蓝、加深投影 */
:root[data-theme="dark"] .app-menu .el-menu-item.is-active {
  background: linear-gradient(135deg, var(--wk-primary), var(--wk-primary-600)) !important;
  box-shadow: 0 2px 10px rgba(74, 222, 128, 0.35);
}

/* ===== 主操作按钮：固定森绿（--wk-accent-action） ===== */
.el-button--primary {
  background-color: var(--wk-accent-action);
  border-color: var(--wk-accent-action);
  color: #fff;
}
.el-button--primary:hover,
.el-button--primary:focus {
  background-color: color-mix(in srgb, var(--wk-accent-action) 88%, #000);
  border-color: color-mix(in srgb, var(--wk-accent-action) 88%, #000);
  color: #fff;
}
.el-button--primary.is-disabled,
.el-button--primary.is-disabled:hover {
  background-color: var(--wk-accent-action);
  border-color: var(--wk-accent-action);
  color: #fff;
  opacity: .5;
}
.wk-btn-primary { background: var(--wk-accent-action); }
.wk-btn-primary:hover { background: color-mix(in srgb, var(--wk-accent-action) 88%, #000); }

/* primary · plain：light 绿底 + 深绿字，避免被全局背景覆盖导致文字不可见 */
.el-button--primary.is-plain,
.el-button--primary.is-plain.is-disabled {
  background-color: var(--wk-success-light);
  border-color: var(--wk-success);
  color: var(--wk-success);
}
.el-button--primary.is-plain:hover,
.el-button--primary.is-plain:focus,
.el-button--primary.is-plain.is-disabled:hover {
  background-color: var(--wk-success);
  border-color: var(--wk-success);
  color: #fff;
}

/* ===== 页面内 tab 栏隐藏（导航只走侧边栏菜单） ===== */
.precheck-pane-wrap .main-tabs > .el-tabs__header { display: none; }
.precheck-pane-wrap .main-tabs > .el-tabs__content { padding: 0; }

/* =====================================================================
 * 首页新版样式（品牌橙红 v1.0 · 2026-08-17）
 * ===================================================================== */

/* ---- 欢迎区 ---- */
.wk-welcome { margin-bottom: 20px; }
.wk-welcome h1 { font-size: 22px; font-weight: 600; margin: 0 0 4px; color: var(--wk-text); }
.wk-welcome p { color: var(--wk-text-2); font-size: 13.5px; margin: 0; }
.wk-tags { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.wk-tag { font-size: 12px; padding: 3px 12px; border-radius: 14px; font-weight: 500; }

/* ---- 今日汇率看板 ---- */
.wk-fx-bar {
  display: flex; align-items: center; gap: 20px; flex-wrap: wrap;
  background: var(--wk-surface); border: 1px solid var(--wk-border);
  border-radius: var(--wk-radius-md); padding: 12px 18px; margin-bottom: 16px;
}
.wk-fx-title { font-size: 13px; font-weight: 700; color: var(--wk-text); }
.wk-fx-item { display: inline-flex; align-items: baseline; gap: 6px; }
.wk-fx-cur { font-size: 12px; color: var(--wk-text-2); }
.wk-fx-item b { font-size: 18px; font-weight: 800; color: var(--wk-primary-600); font-variant-numeric: tabular-nums; }
.wk-fx-date { margin-left: auto; font-size: 12px; color: var(--wk-text-3); }
:root[data-theme="dark"] .wk-fx-item b { color: var(--wk-primary-400); }

/* ---- 三级告警条 ---- */
.wk-alert-stack { margin-bottom: 20px; display: flex; flex-direction: column; gap: 8px; }
.wk-alert-bar {
  border-radius: var(--wk-radius-md); padding: 11px 16px;
  display: flex; align-items: center; gap: 10px; font-size: 13.5px;
  border-left: 4px solid transparent;
}
.wk-alert-bar .wk-a-msg { flex: 1; }
.wk-alert-bar .wk-a-msg b { font-weight: 600; }
.wk-alert-em { background: var(--wk-danger-light); border-left-color: var(--wk-danger); color: var(--wk-danger); }
.wk-alert-warn { background: var(--wk-warning-light); border-left-color: var(--wk-warning); color: var(--wk-warning); }
.wk-alert-info { background: var(--wk-info-light); border-left-color: var(--wk-info); color: var(--wk-info); }

/* ---- KPI 卡片 ---- */
.wk-kpi-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 20px; }
@media (max-width: 1200px) { .wk-kpi-grid { grid-template-columns: repeat(2, 1fr); } }
.wk-kpi-card {
  background: var(--wk-surface); border: 1px solid var(--wk-border);
  border-radius: var(--wk-radius-md); padding: 16px 18px;
  box-shadow: var(--wk-shadow-xs); transition: box-shadow .2s, transform .2s;
}
.wk-kpi-card:hover { box-shadow: var(--wk-shadow-md); transform: translateY(-2px); }
.wk-kpi-top { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--wk-text-2); margin-bottom: 10px; }
.wk-kpi-ic { width: 32px; height: 32px; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 15px; flex-shrink: 0; }
.wk-kpi-value { font-size: 26px; font-weight: 600; line-height: 1.2; color: var(--wk-text); font-variant-numeric: tabular-nums; }
.wk-kpi-value .wk-unit { font-size: 14px; color: var(--wk-text-3); font-weight: 500; margin-left: 2px; }
.wk-kpi-foot { display: flex; align-items: center; gap: 6px; margin-top: 6px; font-size: 12px; color: var(--wk-text-3); }
.wk-trend-up { color: var(--wk-danger); font-weight: 500; }
.wk-trend-down { color: var(--wk-success); font-weight: 500; }
.wk-trend-flat { color: var(--wk-warning); font-weight: 500; }
.wk-ic-red { background: var(--wk-danger-light); }
.wk-ic-green { background: var(--wk-success-light); }
.wk-ic-orange { background: var(--wk-warning-light); }
.wk-ic-blue { background: var(--wk-info-light); }

/* ---- 面板 ---- */
.wk-panel { background: var(--wk-surface); border: 1px solid var(--wk-border); border-radius: var(--wk-radius-lg); box-shadow: var(--wk-shadow-xs); margin-bottom: 20px; overflow: hidden; }
.wk-panel-head { display: flex; align-items: center; gap: 12px; padding: 14px 20px; border-bottom: 1px solid var(--wk-border); }
.wk-panel-head .wk-title { font-size: 15px; font-weight: 600; color: var(--wk-text); }
.wk-panel-head .wk-sub { font-size: 12.5px; color: var(--wk-text-3); margin-left: 2px; }
.wk-panel-head .wk-right { margin-left: auto; display: flex; gap: 8px; align-items: center; }

/* ---- 表格 ---- */
.wk-table-wrap { overflow-x: auto; padding: 12px 20px; }
table.wk-data { width: 100%; border-collapse: collapse; font-size: 13px; min-width: 900px; }
table.wk-data th {
  padding: 10px 14px; text-align: left; background: var(--wk-bg);
  font-weight: 600; color: var(--wk-text); border-bottom: 1px solid var(--wk-border);
  font-size: 12.5px; white-space: nowrap;
}
table.wk-data td { padding: 10px 14px; border-bottom: 1px solid var(--wk-border); color: var(--wk-text-2); white-space: nowrap; }
table.wk-data tbody tr { transition: background .12s; }
table.wk-data tbody tr:hover { background: var(--wk-bg); }
table.wk-data .wk-num { text-align: right; font-variant-numeric: tabular-nums; }
table.wk-data tr.wk-total td { background: var(--wk-primary-50); font-weight: 600; color: var(--wk-text); border-top: 2px solid var(--wk-primary-200); }
.wk-badge-hot { font-size: 10.5px; background: var(--wk-primary); color: #fff; border-radius: 4px; padding: 1px 5px; margin-left: 6px; font-weight: 500; }

/* ---- 按钮补丁（复用 el-button 亦可） ---- */
.wk-btn {
  display: inline-flex; align-items: center; gap: 5px; padding: 7px 14px;
  border-radius: var(--wk-radius); border: 1px solid transparent; font-size: 13px;
  font-weight: 500; cursor: pointer; transition: all .15s; font-family: inherit; line-height: 1.4;
}
.wk-btn-primary { background: var(--wk-primary); color: #fff; }
.wk-btn-primary:hover { background: var(--wk-primary-600); }
.wk-btn-secondary { background: var(--wk-surface); color: var(--wk-text-2); border-color: var(--wk-border-2); }
.wk-btn-secondary:hover { border-color: var(--wk-text-3); color: var(--wk-text); }
.wk-btn-sm { padding: 4px 10px; font-size: 12.5px; }

/* ---- 模块卡（保持兼容原 .module-card，仅微调主题变量） ---- */
.module-card { cursor: pointer; transition: all 0.2s; background: var(--wk-surface); }
.module-card:hover { transform: translateY(-3px); box-shadow: var(--wk-shadow-md); }
.module-name { color: var(--wk-text); }
.module-subtitle { color: var(--wk-text-3); }
.module-desc { color: var(--wk-text-2); }

/* ---- 登录页主题适配（保留原渐变，暗色加深） ---- */
:root[data-theme="dark"] .login-page { background: linear-gradient(135deg, #0f172a 0%, #1e293b 45%, #374151 100%); }
:root[data-theme="dark"] .login-card { background: var(--wk-surface); color: var(--wk-text); }
:root[data-theme="dark"] .login-title { color: var(--wk-primary); }

/* ---- 焦点可见性（无障碍） ---- */
/* 2026-08-21 修改1：排除 el-select 内部元素，避免下拉展开时给 input/popper 加绿色外框 */
:focus-visible { outline: 2px solid var(--wk-primary); outline-offset: 2px; }
.el-select *:focus-visible,
.el-select-dropdown__item:focus-visible,
.el-popper:focus-visible { outline: none !important; }

/* ---- 主题切换按钮 ---- */
.wk-theme-btn {
  width: 32px; height: 32px; border-radius: 8px; border: 1px solid var(--wk-border-2);
  background: var(--wk-surface); color: var(--wk-text-2); font-size: 15px;
  cursor: pointer; display: flex; align-items: center; justify-content: center;
  transition: all .15s;
}
.wk-theme-btn:hover { border-color: var(--wk-primary); color: var(--wk-primary); }

/* 采购中心消息铃铛红点（2026-08-18） */
.msg-dot {
  position: absolute; top: -2px; right: -2px; min-width: 16px; height: 16px; line-height: 16px;
  border-radius: 9px; background: #f56c6c; color: #fff; font-size: 11px; text-align: center;
  padding: 0 4px; box-sizing: border-box; font-family: Arial; font-weight: 600;
}
.msg-unread { border-left: 3px solid var(--wk-primary) !important; background: var(--wk-primary-50); }

/* 回执填写弹窗（2026-08-18）：左需求明细 + 右多账号回执框 */
.receipt-left { background: #f7f8fa; border: 1px solid var(--wk-border-2); border-radius: 8px; padding: 12px; height: 100%; }
.receipt-left-title { font-size: 14px; font-weight: 700; margin-bottom: 10px; color: var(--wk-text-1); }
.receipt-item { border: 1px solid var(--wk-border-2); border-radius: 6px; padding: 8px 10px; margin-bottom: 8px; background: #fff; }
.receipt-item-name { font-size: 13px; color: var(--wk-text-1); }
.receipt-item-qty { font-size: 12px; color: var(--wk-text-3, #909399); margin-top: 3px; }
.receipt-left-tip { font-size: 12px; color: #909399; margin-top: 8px; }
.receipt-acc-block { border: 1px solid var(--wk-border-2); border-radius: 6px; padding: 8px; margin-bottom: 10px; background: #fff; }
.receipt-acc-title { font-size: 13px; font-weight: 600; margin-bottom: 6px; color: var(--wk-text-1); }

/* 采购一页式工作台（2026-08-19） */
.home-notices .el-card__body { padding: 4px 16px 12px; }
.notice-group-title { font-size: 13px; color: var(--wk-text-2, #606266); font-weight: 600; margin: 8px 0 6px; }
.notice-card { display: flex; justify-content: space-between; align-items: center; gap: 10px;
  padding: 8px 12px; margin-bottom: 6px; border: 1px solid var(--wk-border-2); border-radius: 8px;
  background: #f9fafc; cursor: pointer; transition: border-color .15s, background .15s; }
.notice-card:hover { border-color: var(--wk-primary); background: var(--wk-primary-50); }
.notice-card-main { display: flex; align-items: center; gap: 10px; flex: 1; min-width: 0; font-size: 13px; }
.notice-card-sub { color: var(--wk-text-3, #909399); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.notice-card-act { color: var(--wk-primary); font-size: 12px; white-space: nowrap; }

.req-row { display: flex; justify-content: space-between; align-items: center; gap: 12px;
  padding: 12px 4px; border-bottom: 1px solid var(--wk-border-2); }
.req-row:last-child { border-bottom: none; }
.req-main { flex: 1; min-width: 0; }
.req-title { font-size: 14px; font-weight: 600; color: var(--wk-text-1); }
.req-user { font-size: 12px; color: var(--wk-text-3, #909399); font-weight: 400; margin-left: 8px; }
.progress-bar { display: flex; gap: 2px; margin: 10px 0 6px; }
.prog-seg { height: 26px; border-radius: 5px; display: flex; align-items: center; justify-content: center;
  font-size: 11px; color: #909399; background: #f0f2f5; overflow: hidden; }
.prog-seg.done { background: #e1f3d8; color: #529b2e; }
.prog-seg.active { background: var(--wk-primary, #16a34a); color: #fff; font-weight: 600; }
.prog-seg.skipped { background: var(--wk-surface-2); color: var(--wk-text-placeholder); }
.prog-label { white-space: nowrap; }
.req-detail { font-size: 12px; color: var(--wk-text-3, #909399); margin-top: 2px; }
.req-ops { display: flex; flex-wrap: wrap; gap: 2px; justify-content: flex-end; max-width: 260px; }

/* ===== 系统配置页 · 2026-08-21 重排版 ===== */
.purchase-config-wrap { display: flex; flex-direction: column; gap: 18px; }

.wk-segment { display: inline-flex; align-items: center; background: var(--wk-bg-2); border-radius: 10px; padding: 4px; border: 1px solid var(--wk-border-2); }
.wk-segment-item { padding: 6px 18px; border-radius: 8px; cursor: pointer; font-size: 14px; color: var(--wk-text-2); transition: all .2s; user-select: none; }
.wk-segment-item:hover { color: var(--wk-text-1); }
.wk-segment-item.on { background: var(--wk-card-bg); color: var(--wk-primary); font-weight: 600; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
:root[data-theme="dark"] .wk-segment-item.on { box-shadow: 0 1px 3px rgba(0,0,0,.35); }

.wk-config-section { background: var(--wk-card-bg); border: 1px solid var(--wk-border-2); border-radius: var(--wk-radius-lg); padding: 18px 20px; box-shadow: var(--wk-shadow-xs); }
.wk-config-section__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 16px; }
.wk-config-section__title { font-size: 16px; font-weight: 700; color: var(--wk-text-1); line-height: 1.4; }
.wk-config-section__sub { font-size: 13px; color: var(--wk-text-3); margin-top: 4px; }
.wk-config-new-row { max-width: 420px; margin-bottom: 16px; }
.wk-config-new-row .el-input { width: 100%; }
.wk-config-inline-form { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin-bottom: 14px; padding: 12px; background: var(--wk-bg); border: 1px dashed var(--wk-border-2); border-radius: 8px; }
.wk-config-inline-form .el-input { width: 220px; }
.wk-config-inline-form .el-input-number { width: 130px; }
.wk-config-unit { font-size: 12px; color: var(--wk-text-3); white-space: nowrap; }
.wk-config-card { border: 1px solid var(--wk-border-2); border-radius: 10px; margin-bottom: 12px; overflow: hidden; }
.wk-config-card__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 16px; background: var(--wk-bg); border-bottom: 1px solid var(--wk-border-2); }
.wk-config-card__title { display: flex; align-items: center; gap: 10px; min-width: 0; }
.wk-config-card__name { font-size: 15px; font-weight: 700; color: var(--wk-text-1); }
.wk-config-card__count { font-size: 12px; color: var(--wk-text-3); background: var(--wk-bg-2); padding: 2px 8px; border-radius: 999px; }
.wk-config-card__actions { display: flex; align-items: center; gap: 4px; flex-shrink: 0; }
.wk-config-card__body { padding: 14px 16px; background: var(--wk-card-bg); }
.wk-config-table { width: 100%; }
.wk-config-table .el-input-number { width: 120px; }
.wk-config-price-cell { display: flex; align-items: center; gap: 8px; }
.wk-config-empty { padding: 18px; text-align: center; font-size: 13px; color: var(--wk-text-3); background: var(--wk-bg); border-radius: 8px; }
.wk-config-muted { color: var(--wk-text-3); }

/* ===== 商品分析 · 新版落地（品牌橙红 + 绿色按钮 + 清爽实色，2026-08-19） ===== */
.pa-redesign { font-size: 13px; }

/* 卡片容器 */
.pa-card {
  background: var(--wk-surface);
  border: 1px solid var(--wk-border);
  border-radius: var(--wk-radius-lg);
  box-shadow: var(--wk-shadow-xs);
  padding: 16px 18px;
  margin-bottom: 16px;
}
.pa-card-title {
  font-size: 15px; font-weight: 600; color: var(--wk-text);
  margin-bottom: 14px; display: flex; align-items: center; gap: 8px;
}
.pa-card-title .pa-sub { font-size: 12px; font-weight: 400; color: var(--wk-text-3); margin-left: 4px; }

/* 筛选条 */
.pa-filterbar { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.pa-tilde { color: var(--wk-text-3); }
.pa-spacer { flex: 1; }
.pa-srcrow { display: flex; align-items: center; gap: 12px; margin-top: 12px; flex-wrap: wrap; font-size: 12px; }
.pa-daterange { color: var(--wk-text-2); }
.pa-tip { color: var(--wk-text-3); }

/* 汇总卡片 */
.pa-stats { display: grid; grid-template-columns: repeat(6, 1fr); gap: 12px; margin-bottom: 16px; }
@media (max-width: 1100px) { .pa-stats { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 640px)  { .pa-stats { grid-template-columns: repeat(2, 1fr); } }
.pa-stat {
  background: var(--wk-surface);
  border: 1px solid var(--wk-border);
  border-radius: var(--wk-radius-md);
  padding: 14px 16px;
  display: flex; align-items: center; gap: 12px;
  box-shadow: var(--wk-shadow-xs);
  transition: box-shadow .2s, transform .2s;
}
.pa-stat:hover { box-shadow: var(--wk-shadow); transform: translateY(-2px); }
.pa-stat-ic { width: 38px; height: 38px; border-radius: 10px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.pa-stat-num { font-size: 22px; font-weight: 700; line-height: 1.1; color: var(--wk-text); font-variant-numeric: tabular-nums; }
.pa-stat-label { font-size: 12px; color: var(--wk-text-2); margin-top: 3px; }

/* 图表区 */
.pa-charts { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 900px) { .pa-charts { grid-template-columns: 1fr; } }
.pa-bars { display: flex; flex-direction: column; gap: 10px; }
.pa-bar-row { display: flex; align-items: center; gap: 10px; }
.pa-bar-rank { width: 18px; text-align: center; font-size: 12px; font-weight: 700; color: var(--wk-text-3); flex-shrink: 0; }
.pa-bar-name { width: 120px; font-size: 12px; color: var(--wk-text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex-shrink: 0; }
.pa-bar-track { flex: 1; height: 16px; background: var(--wk-muted-light); border-radius: 8px; overflow: hidden; }
.pa-bar-fill { height: 100%; background: linear-gradient(90deg, var(--wk-primary), var(--wk-primary-400)); border-radius: 8px; transition: width .4s; min-width: 2px; }
.pa-bar-val { width: 96px; text-align: right; font-size: 12px; font-weight: 600; color: var(--wk-text); font-variant-numeric: tabular-nums; flex-shrink: 0; }

.pa-rate { display: flex; flex-direction: column; gap: 14px; padding-top: 4px; }
.pa-rate-row { display: flex; align-items: center; gap: 10px; }
.pa-rate-lab { width: 84px; font-size: 12px; color: var(--wk-text-2); flex-shrink: 0; }
.pa-rate .pa-bar-track { height: 18px; }
.pa-rate-num { width: 40px; text-align: right; font-size: 13px; font-weight: 700; color: var(--wk-text); flex-shrink: 0; }
.pa-good { background: linear-gradient(90deg, #16a34a, #4ade80); }


/* ===== 采购中心 · 方案1「概览中枢」工作台首页（2026-08-19） ===== */
.pa-kpi-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin-bottom:18px}
.pa-kpi{background:var(--wk-surface);border:1px solid var(--wk-border-2);border-radius:12px;padding:16px 18px;box-shadow:0 1px 3px rgba(16,24,40,.06)}
.pa-kpi-num{font-size:26px;font-weight:800;letter-spacing:-.5px;line-height:1.1}
.pa-kpi-lbl{color:var(--wk-text-3);font-size:12px;margin-top:4px}
.pa-kpi.pa-accent .pa-kpi-num{color:var(--wk-primary)}
.pa-kpi.pa-green .pa-kpi-num{color:#16a34a}
.pa-kpi.pa-red .pa-kpi-num{color:#dc2626}
.pa-flow-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-bottom:22px}
.pa-flow{background:var(--wk-surface);border:1px solid var(--wk-border-2);border-radius:12px;padding:16px 18px;cursor:pointer;
  border-top:3px solid #909399;box-shadow:0 1px 3px rgba(16,24,40,.06);transition:.15s}
.pa-flow:hover{transform:translateY(-2px);box-shadow:0 6px 24px rgba(16,24,40,.10)}
.pa-flow.pa-gray{border-top-color:#909399}
.pa-flow.pa-orange{border-top-color:#d97706}
.pa-flow.pa-red{border-top-color:#dc2626}
.pa-flow-t{font-weight:700;font-size:14px;color:var(--wk-text-1)}
.pa-flow-c{font-size:30px;font-weight:800;margin:6px 0 2px;color:var(--wk-text-1)}
.pa-flow-d{color:var(--wk-text-3);font-size:12px}
/* 状态卡选中态（2026-08-27 内联过滤） */
.pa-flow.on{outline:2px solid var(--wk-primary);outline-offset:-2px;box-shadow:0 4px 16px rgba(22,163,74,.14)}
/* 操作列按钮一行排布（2026-08-28 第6轮：挤成一排不换行） */
.pa-ops-row{display:flex;align-items:center;gap:6px;white-space:nowrap}
.pa-ops-row .el-button+.el-button{margin-left:0}
.pa-ops-row .el-button{padding:5px 8px}
/* 采购单号售后标识（2026-08-28 第7轮修正5） */
.pa-as-badge{display:inline-block;margin-left:4px;padding:0 6px;border-radius:8px;font-size:11px;line-height:16px;background:#fef3f2;color:#dc2626;border:1px solid #fecaca;vertical-align:middle}
/* 操作日志：采购配置操作行色块（2026-08-28 第7轮修正12） */
.el-table .wk-log-config-row{background:oklch(0.96 0.02 145)}
.el-table .wk-log-config-row:hover > td{background:oklch(0.93 0.03 145)}
/* 资产标签 pill（同名称同底色） */
.pa-tag-pill{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;line-height:18px;border:1px solid transparent;vertical-align:middle}
.pa-recent-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.home-sub{color:var(--wk-text-3);font-size:12px;margin-top:4px}
html[data-theme="dark"] .pa-flow{box-shadow:0 1px 3px rgba(0,0,0,.4)}
html[data-theme="dark"] .pa-flow:hover{box-shadow:0 6px 24px rgba(0,0,0,.5)}
html[data-theme="dark"] .pa-flow.on{box-shadow:0 4px 16px rgba(74,222,128,.18)}

/* =====================================================================
 * 暗色模式补充适配（2026-08-21 修改6）
 * 补齐硬编码浅色类在暗色下的覆盖，并定义 3 个别名 token
 * （--wk-text-1 / --wk-card-bg / --wk-bg-2，config/回执/flow 已用但未定义）
 * 原则：后续新增模块一律用 var(--wk-*) token，勿硬编码 #fff/#ebeef5
 * ===================================================================== */

/* ---- 别名 token（明/暗双主题，保持与既有语义 token 一致） ---- */
:root,
:root[data-theme="light"] {
  --wk-text-1: #1f2329;
  --wk-card-bg: #ffffff;
  --wk-bg-2: #f0f2f5;
}
:root[data-theme="dark"] {
  --wk-text-1: #f3f4f6;
  --wk-card-bg: #1f2937;
  --wk-bg-2: #2a3441;
}

/* ---- 暗色：统计卡片（核心，今日订单等白卡 → 暗表面） ---- */
:root[data-theme="dark"] .stat-card { background: var(--wk-surface); border-color: var(--wk-border); }
:root[data-theme="dark"] .stat-card .stat-label { color: var(--wk-text-3); }
:root[data-theme="dark"] .stat-currency { color: var(--wk-text-3); }
:root[data-theme="dark"] .stat-block-title { color: var(--wk-text); }
:root[data-theme="dark"] .stat-block-title .stat-date { color: var(--wk-text-3); }

/* ---- 暗色：报表区 ---- */
:root[data-theme="dark"] .report-box { background: var(--wk-surface); border-color: var(--wk-border); }
:root[data-theme="dark"] .report-box h4 { color: var(--wk-text); }
:root[data-theme="dark"] .donut-legend { color: var(--wk-text-2); }
:root[data-theme="dark"] .bar-label { color: var(--wk-text-2); }
:root[data-theme="dark"] .bar-track { background: #2a3441; }
:root[data-theme="dark"] .bar-count { color: var(--wk-text-3); }
:root[data-theme="dark"] .bucket-label { color: var(--wk-text-2); }
:root[data-theme="dark"] .bucket-bar { background: #2a3441; }

/* ---- 暗色：订单预审卡片 ---- */
:root[data-theme="dark"] .order-card-id { color: var(--wk-text); }
:root[data-theme="dark"] .order-card-row .lbl { color: var(--wk-text-3); }
:root[data-theme="dark"] .order-card-row .val { color: var(--wk-text); }
:root[data-theme="dark"] .order-card-row .val.campaign-val { color: var(--wk-text-2); }
:root[data-theme="dark"] .result-reason { color: var(--wk-text-3); }
:root[data-theme="dark"] .result-stats { color: var(--wk-text-2); background: #232b38; }

/* ---- 暗色：占位/空态 ---- */
:root[data-theme="dark"] .placeholder-box { border-color: var(--wk-border-2); color: var(--wk-text-3); background: var(--wk-muted-light); }

/* ---- 暗色：模块卡/列表/通用文字 ---- */
:root[data-theme="dark"] .module-subtitle { color: var(--wk-text-3); }
:root[data-theme="dark"] .module-desc { color: var(--wk-text-2); }
:root[data-theme="dark"] .feature-list li { border-bottom-color: var(--wk-border); color: var(--wk-text-2); }
:root[data-theme="dark"] .ad-params { color: var(--wk-text); }
:root[data-theme="dark"] .page-subtitle { color: var(--wk-text-3); }
:root[data-theme="dark"] .login-subtitle,
:root[data-theme="dark"] .login-tip { color: var(--wk-text-3); }

/* ---- 暗色：tag-cyan 压暗 ---- */
:root[data-theme="dark"] .el-tag.tag-cyan { background: #0e3a40; border-color: #0e7490; color: #67e8f9; }

/* ---- 暗色：采购回执弹窗 ---- */
:root[data-theme="dark"] .receipt-left { background: #1a2230; border-color: var(--wk-border-2); }
:root[data-theme="dark"] .receipt-item { background: var(--wk-surface); }
:root[data-theme="dark"] .receipt-acc-block { background: var(--wk-surface); }

/* ---- 暗色：采购通知卡/进度段 ---- */
:root[data-theme="dark"] .notice-card { background: #1a2230; }
:root[data-theme="dark"] .prog-seg { background: #2a3441; color: var(--wk-text-3); }
:root[data-theme="dark"] .prog-seg.skipped { background: var(--wk-muted-light); }

/* ---- 签收分析：三阶段摘要条（2026-08-21 重构） ---- */
.sign-strip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 18px; }
.sign-stage { border: 1px solid var(--wk-border-2, #ebeef5); border-radius: 12px; padding: 14px 16px; background: var(--wk-card-bg, #fff); position: relative; overflow: hidden; }
.sign-stage--confirmed { border-top: 3px solid #67c23a; }
.sign-stage--estimating { border-top: 3px solid #e6a23c; }
.sign-stage--predicting { border-top: 3px solid #409eff; }
.sign-stage--pred { border-top: 3px solid #9b59b6; background: linear-gradient(135deg, rgba(155,89,182,.06), transparent); }
.sign-stage-top { display: flex; align-items: center; justify-content: space-between; gap: 6px; }
.sign-stage-name { font-size: 13px; font-weight: 600; color: var(--wk-text-1, #303133); }
.sign-stage-hint { font-size: 11px; color: var(--wk-text-3, #909399); }
.sign-stage-num { font-size: 30px; font-weight: 800; line-height: 1.1; margin: 6px 0 4px; color: var(--wk-text-1, #303133); }
.sign-stage-unit { font-size: 13px; font-weight: 500; color: var(--wk-text-3, #909399); }
.sign-stage-sub { font-size: 12px; color: var(--wk-text-2, #606266); }
.sign-spark { width: 100%; height: 28px; margin-top: 8px; display: block; }

/* ---- 签收分析：按阶段分组的统一时间轴 ---- */
.sign-seg { margin-bottom: 18px; }
.sign-seg-head { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; flex-wrap: wrap; }
.sign-seg-dot { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
.sign-seg-dot--confirmed { background: #67c23a; }
.sign-seg-dot--estimating { background: #e6a23c; }
.sign-seg-dot--predicting { background: #409eff; }
.sign-seg-title { font-size: 15px; font-weight: 700; color: var(--wk-text-1, #303133); }
.sign-seg-range { font-size: 12px; color: var(--wk-text-3, #909399); }
.sign-seg-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 10px; }
.sign-date-card { border: 1px solid var(--wk-border-2, #ebeef5); border-radius: 10px; background: var(--wk-card-bg, #fff); overflow: hidden; }
.sign-date-head { display: flex; align-items: center; gap: 10px; padding: 10px 12px; cursor: pointer; user-select: none; }
.sign-date-head:hover { background: var(--wk-bg-2, #f7f8fc); }
.sign-date { font-weight: 700; font-size: 13px; color: var(--wk-text-1, #303133); }
.sign-date-total { font-size: 12px; color: var(--wk-text-3, #909399); }
.sign-date-rate { font-size: 12px; font-weight: 600; margin-left: auto; }
.sign-date-caret { font-size: 12px; color: var(--wk-text-3, #909399); transition: transform .15s; }
.sign-date-card.expanded .sign-date-caret { transform: rotate(0deg); }
.sign-date-bar { display: flex; height: 8px; margin: 0 12px; border-radius: 4px; overflow: hidden; background: #f0f2f5; }
.sign-date-bar > div { height: 100%; }
.sign-date-detail { padding: 8px 12px 12px; border-top: 1px solid var(--wk-border-2, #ebeef5); margin-top: 8px; }
.sign-seg-empty { font-size: 12px; color: var(--wk-text-3, #909399); padding: 4px 2px; }

/* ---- 暗色：签收分析 ---- */
:root[data-theme="dark"] .sign-stage { background: var(--wk-surface); border-color: var(--wk-border); }
:root[data-theme="dark"] .sign-stage-name { color: var(--wk-text); }
:root[data-theme="dark"] .sign-stage-num { color: var(--wk-text); }
:root[data-theme="dark"] .sign-stage-sub { color: var(--wk-text-2); }
:root[data-theme="dark"] .sign-seg-title { color: var(--wk-text); }
:root[data-theme="dark"] .sign-seg-range { color: var(--wk-text-3); }
:root[data-theme="dark"] .sign-date-card { background: var(--wk-surface); border-color: var(--wk-border); }
:root[data-theme="dark"] .sign-date-head:hover { background: #0f172a; }
:root[data-theme="dark"] .sign-date { color: var(--wk-text); }
:root[data-theme="dark"] .sign-date-total, :root[data-theme="dark"] .sign-date-caret { color: var(--wk-text-3); }
:root[data-theme="dark"] .sign-date-bar { background: #0f172a; }
:root[data-theme="dark"] .sign-date-detail { border-color: var(--wk-border); }
:root[data-theme="dark"] .sign-seg-empty { color: var(--wk-text-3); }

/* ---- 通用：两行截断 ---- */
.cell-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; }

/* ---- FB 素材库：卡片网格视图（2026-08-21 重构） ---- */
.fb-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px; }
.fb-card { border: 1px solid var(--wk-border-2, #ebeef5); border-radius: 10px; overflow: hidden; background: var(--wk-card-bg, #fff); cursor: pointer; transition: box-shadow .18s, transform .18s, border-color .18s; }
.fb-card:hover { box-shadow: 0 6px 20px rgba(16,163,74,.14); transform: translateY(-2px); border-color: var(--wk-primary); }
.fb-card.selected { border-color: var(--wk-primary); box-shadow: 0 0 0 2px rgba(16,163,74,.25); }
.fb-card-cover { position: relative; cursor: pointer; }
.fb-card-video { display: block; width: 100%; height: 150px; object-fit: cover; background: #000; }
.fb-card-play { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 46px; height: 46px; border-radius: 50%; background: rgba(0,0,0,.55); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 18px; line-height: 1; pointer-events: none; transition: background .18s; }
.fb-card-cover:hover .fb-card-play { background: rgba(22,163,74,.88); }
.fb-card-actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--wk-border-2, #ebeef5); }
.fb-card-actions .el-button { margin: 0; flex: 1 1 auto; }
.fb-card-cover .el-image { display: block; }
.fb-card-overlay { position: absolute; inset: 0; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; justify-content: center; background: rgba(17,24,39,.55); opacity: 0; transition: opacity .18s; padding: 8px; }
.fb-card:hover .fb-card-overlay { opacity: 1; }
.fb-card-check { position: absolute; top: 8px; left: 8px; z-index: 2; background: rgba(255,255,255,.9); border-radius: 4px; padding: 2px; }
.fb-card-body { padding: 10px 12px; }
.fb-card-head { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-bottom: 6px; }
.fb-card-advertiser { font-size: 14px; font-weight: 600; color: var(--wk-text-1, #303133); text-decoration: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fb-card-advertiser:hover { color: var(--wk-primary); }
.fb-card-copy { font-size: 12px; color: var(--wk-text-2, #606266); line-height: 1.6; min-height: 38px; cursor: pointer; }
.fb-card-meta { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 8px; font-size: 12px; color: var(--wk-text-3, #909399); }
.fb-batch-bar { position: sticky; bottom: 0; margin-top: 14px; padding: 10px 14px; background: var(--wk-primary); border-radius: 10px; display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.fb-batch-info { color: #fff; font-size: 13px; }
.fb-batch-info b { font-size: 15px; }
.fb-batch-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.fb-batch-actions .el-button { background: #fff; border-color: #fff; color: var(--wk-text-1, #303133); }
.fb-batch-actions .el-button:hover { color: var(--wk-primary, #16a34a); }
.fb-batch-actions .el-button--primary { background: var(--wk-primary-600); border-color: var(--wk-primary-600); color: #fff; }
.fb-batch-actions .el-button--primary:hover { background: #166534; border-color: #166534; color: #fff; }
.fb-batch-actions .el-button--warning { background: #f59e0b; border-color: #f59e0b; color: #fff; }
.fb-batch-actions .el-button--danger { background: #ef4444; border-color: #ef4444; color: #fff; }
.fb-batch-actions .el-button--danger.is-plain { background: var(--wk-card-bg); border-color: #ef4444; color: #ef4444; }

/* ---- FB 素材库：详情抽屉左右分栏 ---- */
.fb-drawer .el-drawer__body { padding: 0; }
.fb-drawer-split { display: flex; gap: 0; height: 100%; }
.fb-drawer-left { width: 58%; padding: 16px; background: #0f172a; display: flex; flex-direction: column; gap: 10px; }
.fb-video-switch { align-self: flex-start; }
.fb-video-wrap { display: flex; flex-direction: column; gap: 8px; }
.fb-video-dl { align-self: flex-start; }
.fb-cover-wrap { display: flex; align-items: center; justify-content: center; flex: 1; }
.fb-no-media { color: #94a3b8; font-size: 13px; text-align: center; margin: auto; }
.fb-drawer-right { width: 42%; padding: 18px 20px; overflow-y: auto; background: var(--wk-card-bg, #fff); }
.fb-meta-head { display: flex; align-items: center; gap: 8px; margin-bottom: 14px; }
.fb-meta-advertiser { font-size: 17px; font-weight: 700; color: var(--wk-primary); text-decoration: none; }
.fb-meta-advertiser:hover { text-decoration: underline; }
.fb-meta-list { list-style: none; margin: 0 0 16px; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.fb-meta-list li { display: flex; align-items: center; gap: 10px; font-size: 13px; }
.fb-meta-list li > span { color: var(--wk-text-3, #909399); min-width: 76px; }
.fb-meta-list li > b { color: var(--wk-text-1, #303133); font-weight: 600; }
.fb-meta-url { align-items: flex-start; }
.fb-meta-link { color: var(--wk-primary); text-decoration: none; word-break: break-all; line-height: 1.5; }
.fb-meta-link:hover { text-decoration: underline; }
.fb-copy-block { border-top: 1px solid var(--wk-border-2, #ebeef5); padding-top: 14px; }
.fb-copy-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.fb-copy-head > span { font-size: 14px; font-weight: 600; color: var(--wk-text-1, #303133); }
.fb-copy-text { font-size: 13px; line-height: 1.8; color: var(--wk-text-2, #606266); white-space: pre-wrap; background: var(--wk-bg-2, #f7f8fc); border-radius: 8px; padding: 10px 12px; }

/* ---- FB 素材库：工具栏/筛选/热词（2026-08-22） ---- */
.fb-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 14px 0; padding: 10px 12px; background: var(--wk-bg-2, #f7f8fc); border-radius: 8px; border: 1px solid var(--wk-border, #e6eaf0); }
.fb-toolbar-left { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.fb-toolbar-right { display: flex; align-items: center; gap: 10px; }
.fb-frame-tip { font-size: 12px; color: var(--wk-text-2, #909399); }
.fb-filter-bar { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; padding: 10px 0; }
.fb-exclude { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 13px; color: var(--wk-text-2, #606266); }
.fb-meta-bar { display: flex; justify-content: flex-end; font-size: 12px; color: var(--wk-text-3, #909399); margin-top: 10px; }
.fb-card-toolbar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.fb-card-toolbar-title { font-size: 14px; font-weight: 600; color: var(--wk-text-1, #303133); }
.fb-card-zoom { position: absolute; top: 8px; right: 8px; z-index: 3; opacity: 0; transition: opacity .18s; }
.fb-card:hover .fb-card-zoom { opacity: 1; }
.fb-card-junk { position: absolute; top: 8px; right: 8px; z-index: 4; opacity: 0; transition: opacity .18s; }
.fb-card:hover .fb-card-junk { opacity: 1; }
.fb-junk-btn { background: rgba(220,38,38,.72); color: #fff; border: none; border-radius: 6px; padding: 4px 10px; font-size: 12px; cursor: pointer; backdrop-filter: blur(2px); transition: background .18s; }
.fb-junk-btn:hover { background: rgba(220,38,38,.95); }
.fb-junk-btn:active { transform: scale(.96); }
.fb-card-video::-webkit-media-controls { opacity: 0; transition: opacity .2s; }
.fb-card-video:hover::-webkit-media-controls { opacity: 1; }
.fb-card-video.playing::-webkit-media-controls { opacity: 1; }

/* ---- FB 素材库：放大弹窗 ---- */
.fb-zoom-dialog .el-dialog__body { padding-top: 10px; }
.fb-zoom-wrap { display: flex; flex-direction: column; gap: 12px; }
.fb-zoom-split { display: flex; gap: 18px; align-items: flex-start; }
.fb-zoom-left { width: 62%; display: flex; flex-direction: column; gap: 10px; }
.fb-zoom-right { width: 38%; border-left: 1px solid var(--wk-border, #e6eaf0); padding-left: 18px; background: var(--wk-card-bg, #fff); border-radius: 10px; padding: 14px 16px; }
.fb-zoom-actions { display: flex; gap: 8px; flex-wrap: wrap; }
:root[data-theme="dark"] .fb-zoom-right { background: #0f172a; }

/* ---- FB 素材库：热词 ---- */
.fb-hot-header { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.fb-hot-sub { font-size: 12px; color: var(--wk-text-3, #909399); font-weight: 400; }
.fb-hot-cloud { display: flex; flex-wrap: wrap; gap: 8px; }
.fb-hot-tag { cursor: pointer; transition: transform .12s; }
.fb-hot-tag:hover { transform: translateY(-1px); }
.fb-hot-tag b { margin-left: 4px; }

/* ---- 暗色：FB 素材库 ---- */
:root[data-theme="dark"] .fb-card { background: var(--wk-surface); border-color: var(--wk-border); }
:root[data-theme="dark"] .fb-card:hover { box-shadow: 0 6px 20px rgba(0,0,0,.5); }
:root[data-theme="dark"] .fb-card-advertiser { color: var(--wk-text); }
:root[data-theme="dark"] .fb-card-copy { color: var(--wk-text-2); }
:root[data-theme="dark"] .fb-card-meta { color: var(--wk-text-3); }
:root[data-theme="dark"] .fb-drawer-right { background: var(--wk-surface); }
:root[data-theme="dark"] .fb-meta-advertiser { color: var(--wk-primary-400); }
:root[data-theme="dark"] .fb-meta-list li > span { color: var(--wk-text-3); }
:root[data-theme="dark"] .fb-meta-list li > b { color: var(--wk-text); }
:root[data-theme="dark"] .fb-copy-head > span { color: var(--wk-text); }
:root[data-theme="dark"] .fb-copy-text { color: var(--wk-text-2); background: #0f172a; }
:root[data-theme="dark"] .fb-card-check { background: var(--wk-surface); }
:root[data-theme="dark"] .fb-card-video { background: #000; }
:root[data-theme="dark"] .fb-card-actions { border-top-color: var(--wk-border); }
:root[data-theme="dark"] .fb-toolbar { background: #0f172a; border-color: var(--wk-border); }
:root[data-theme="dark"] .fb-card-toolbar-title { color: var(--wk-text); }

/* ---- 采购详情抽屉（2026-08-21 重构） ---- */
.pd-drawer .el-drawer__body { padding: 16px 18px; }
.pd-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; }
.pd-prno { font-size: 18px; font-weight: 700; color: var(--wk-text-1); }
.pd-tags { display: flex; gap: 6px; flex-shrink: 0; }
.pd-actions { display: flex; gap: 8px; margin-bottom: 14px; }
.pd-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--wk-border-2, #ebeef5); border: 1px solid var(--wk-border-2, #ebeef5); border-radius: 10px; overflow: hidden; }
.pd-cell { display: flex; flex-direction: column; gap: 2px; padding: 10px 12px; background: var(--wk-card-bg, #fff); }
.pd-k { font-size: 12px; color: var(--wk-text-3, #909399); }
.pd-v { font-size: 14px; color: var(--wk-text-1, #303133); font-weight: 500; }
.pd-v.money { color: #16a34a; font-weight: 700; }
.pd-reject { margin: 10px 0; padding: 8px 12px; background: #fef0f0; border: 1px solid #fde2e2; border-radius: 8px; color: #f56c6c; font-size: 13px; }
.pd-section { margin-top: 18px; }
.pd-section-title { font-size: 14px; font-weight: 600; color: var(--wk-text-1, #303133); margin-bottom: 10px; display: flex; align-items: center; }
.pd-empty { color: var(--wk-text-3, #909399); font-size: 13px; }
.pd-acc-list { display: flex; flex-direction: column; gap: 8px; }
.pd-acc-card { padding: 10px 12px; background: var(--wk-card-bg, #fff); border: 1px solid var(--wk-border-2, #ebeef5); border-radius: 8px; }
.pd-acc-top { font-size: 14px; color: var(--wk-text-1, #303133); display: flex; align-items: center; gap: 6px; }
.pd-acc-meta { font-size: 12px; color: var(--wk-text-2, #606266); margin-top: 4px; display: flex; align-items: center; gap: 4px; }
/* 长文本（链接/密码串）不穿模：强制换行 + 断词 */
.pd-acc-top b, .pd-acc-meta.pd-acc-text {
  word-break: break-all; overflow-wrap: anywhere; white-space: normal;
  display: block; line-height: 1.6;
}
.pd-acc-top b { flex: 1 1 auto; min-width: 0; }
.pd-fb { padding: 8px 10px; background: #fdf6ec; border-radius: 8px; font-size: 13px; margin-bottom: 6px; }
.pd-fb-head { margin-bottom: 2px; }
.pd-fb-time { color: var(--wk-text-3, #909399); font-size: 12px; margin-left: 6px; }
.pd-rep { padding: 8px 10px; background: var(--wk-muted-light, #f4f4f5); border-radius: 8px; font-size: 13px; margin-bottom: 6px; }
.pd-rep-sub { color: var(--wk-text-2, #606266); font-size: 12px; margin-top: 2px; }
.pd-as { padding: 10px 12px; background: #fdf6ec; border-radius: 8px; font-size: 13px; margin-bottom: 8px; }
.pd-as-imgs { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.pd-as-imgs img { width: 64px; height: 64px; object-fit: cover; border-radius: 4px; border: 1px solid var(--wk-border); }
.pd-as-meta { font-size: 12px; color: var(--wk-text-3, #909399); margin-top: 4px; }
/* 2026-08-28 第8轮修正1：历史交付账号灰显置底（已替换，停用复制） */
.pd-acc-history { opacity: 0.75; margin-top: 20px; }
.pd-acc-disabled { background: var(--wk-muted-light, #f4f4f5); border-style: dashed; }
.pd-acc-disabled .pd-acc-top b { color: var(--wk-text-3, #909399); text-decoration: line-through; text-decoration-color: oklch(0.7 0 0 / 0.5); }
:root[data-theme="dark"] .pd-acc-disabled { background: var(--wk-border); opacity: 0.6; }
/* 2026-08-28 第8轮修正6：统计月报结算模式 tag */

/* ---- 暗色：采购详情抽屉 ---- */
:root[data-theme="dark"] .pd-prno { color: var(--wk-text); }
:root[data-theme="dark"] .pd-grid { background: var(--wk-border); border-color: var(--wk-border); }
:root[data-theme="dark"] .pd-cell { background: var(--wk-surface); }
:root[data-theme="dark"] .pd-k { color: var(--wk-text-3); }
:root[data-theme="dark"] .pd-v { color: var(--wk-text); }
:root[data-theme="dark"] .pd-section-title { color: var(--wk-text); }
:root[data-theme="dark"] .pd-acc-card { background: var(--wk-surface); border-color: var(--wk-border); }
:root[data-theme="dark"] .pd-acc-top { color: var(--wk-text); }
:root[data-theme="dark"] .pd-acc-meta { color: var(--wk-text-2); }
:root[data-theme="dark"] .pd-fb { background: #2a2415; }
:root[data-theme="dark"] .pd-fb-time { color: var(--wk-text-3); }
:root[data-theme="dark"] .pd-rep { background: var(--wk-surface); }
:root[data-theme="dark"] .pd-rep-sub { color: var(--wk-text-2); }
:root[data-theme="dark"] .pd-as { background: #2a2415; }
:root[data-theme="dark"] .pd-as-meta { color: var(--wk-text-3); }
:root[data-theme="dark"] .pd-reject { background: #3a1a1a; border-color: #5c2b2b; color: #f89898; }
:root[data-theme="dark"] .pd-empty { color: var(--wk-text-3); }

/* ---- 模块权限折叠展示（账号管理 / 角色管理表格列，2026-08-22 修正11） ---- */
.perm-group { margin: 2px 4px 2px 0; }
.perm-group summary.perm-parent { cursor: pointer; list-style: none; display: inline-block; }
.perm-group summary.perm-parent::-webkit-details-marker { display: none; }
.perm-group summary.perm-parent::marker { display: none; content: ""; }
.perm-group .perm-parent .perm-count { font-size: 11px; opacity: 0.7; margin-left: 2px; }
.perm-group .perm-children { padding: 6px 0 4px 4px; display: flex; flex-wrap: wrap; gap: 4px; }
.perm-group .perm-children .el-tag { margin: 0; }
.perm-orphan { margin: 2px 4px 2px 0; }

/* =====================================================================
 * 爆品实验室 · 重构样式（2026-08-23，纯 CSS/SVG 图表 + Dashboard 网格）
 * 全部使用 --wk-* token，暗色自动适配
 * ===================================================================== */
.hpl { padding: 4px; }
.hpl-mt { margin-top: 16px; }
.hpl-search { background: var(--wk-surface); }

/* ---------- 模块顶部筛选卡片吸顶（2026-08-27 老吴：利润中心 + 爆品实验室） ----------
 * .app-main 是滚动容器（tab 栏在其外部），sticky top:0 = 卡片贴住 tab 栏下沿不动 */
.sticky-toolbar {
  position: sticky;
  top: 0;
  z-index: 25;               /* 低于顶栏(20+)/tabbar(30) 平级不遮弹层，高于普通内容 */
  margin-bottom: 14px;
  /* 卡片滚动到下方内容之上时，底部加投影增强层次 */
  box-shadow: 0 4px 12px -6px rgba(15, 23, 42, .12);
}
.hpl-title { font-size: 18px; font-weight: 800; color: var(--wk-text-1); letter-spacing: -.3px; }
.hpl-desc { color: var(--wk-text-2); font-size: 12.5px; line-height: 1.6; margin: 6px 0 14px; }
.hpl-bar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.hpl-empty { text-align: center; padding: 48px 20px; background: var(--wk-surface); border: 1px dashed var(--wk-border); border-radius: 14px; }
.hpl-empty-icon { font-size: 42px; }
.hpl-empty-t { font-size: 15px; font-weight: 700; color: var(--wk-text-1); margin-top: 10px; }
.hpl-empty-s { color: var(--wk-text-2); font-size: 12.5px; margin: 8px auto 16px; max-width: 520px; line-height: 1.6; }

.hpl-mock-badge { background: #fff7ed; color: #c2410c; border: 1px solid #fed7aa; border-radius: 8px; padding: 7px 12px; font-size: 12.5px; font-weight: 600; margin-top: 16px; }
.hpl-sug { margin-top: 10px; }
.hpl-sug-h { font-size: 12px; color: var(--wk-text-2); margin-bottom: 6px; }
.hpl-sug-tag { cursor: pointer; margin: 0 6px 6px 0; }

/* KPI 条 */
.hpl-kpi-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 14px; }
.hpl-kpi { background: var(--wk-surface); border: 1px solid var(--wk-border); border-top: 3px solid var(--wk-primary); border-radius: 12px; padding: 14px 16px; box-shadow: 0 1px 3px rgba(16,24,40,.06); }
.hpl-kpi-val { font-size: 26px; font-weight: 800; line-height: 1.1; font-variant-numeric: tabular-nums; }
.hpl-kpi-label { font-size: 12px; color: var(--wk-text-2); margin-top: 4px; }
.hpl-kpi-sub { font-size: 11px; color: var(--wk-text-3); margin-top: 2px; }

/* 面板网格 */
.hpl-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; }
.hpl-grid:last-child { margin-bottom: 0; }
.hpl-grid-2col { grid-template-columns: 1fr 1fr; }
.hpl-grid-3col { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 1100px) { .hpl-grid-3col { grid-template-columns: 1fr 1fr; } }
@media (max-width: 900px) { .hpl-grid, .hpl-grid-2col, .hpl-grid-3col { grid-template-columns: 1fr; } }
.hpl-card { background: var(--wk-surface); border: 1px solid var(--wk-border); }
.hpl-card-wide { grid-column: 1 / -1; }
.hpl-card-h { font-size: 14px; font-weight: 700; color: var(--wk-text-1); margin-bottom: 12px; }
/* 2026-09-14 老吴（A+C）：卡头两栏 —— 左标题 / 右「数据截至 + 刷新·同步」 */
.hpl-card-h-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.hpl-card-h-row .hpl-sync { margin-left: auto; display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.hpl-sync-time { font-size: 12px; font-weight: 400; color: var(--wk-text-3); cursor: help; white-space: nowrap; }
.hpl-sync-msg { font-size: 12px; font-weight: 400; color: var(--wk-text-2); }
.hpl-mini { font-size: 12.5px; color: var(--wk-text-2); }
.hpl-mini b { color: var(--wk-text-1); font-size: 14px; }

/* 横向条形（价格带 / 物流 / 规格） */
.hpl-bars { display: flex; flex-direction: column; gap: 10px; }
.hpl-bar-row { display: flex; align-items: center; gap: 10px; }
.hpl-bar-name { width: 96px; font-size: 12px; color: var(--wk-text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex-shrink: 0; }
.hpl-bar-track { flex: 1; height: 16px; background: var(--wk-muted-light); border-radius: 8px; overflow: hidden; }
.hpl-bar-fill { height: 100%; border-radius: 8px; transition: width .4s; min-width: 2px; }
.hpl-bar-val { width: 104px; text-align: right; font-size: 12px; font-weight: 600; color: var(--wk-text-1); font-variant-numeric: tabular-nums; flex-shrink: 0; }

/* 雷达 / 趋势 / 仪表 SVG */
.hpl-radar-wrap, .hpl-trend-wrap, .hpl-gauge-wrap { display: flex; justify-content: center; }
.hpl-radar { width: 100%; height: 100%; max-width: 100%; }   /* 修正3（v36 老吴）：雷达与毛利表同高，不要大 */
.hpl-trend, .hpl-gauge { width: 100%; }
.hpl-trend { max-width: 100%; }
.hpl-radar-wrap { width: 100%; min-height: 540px; align-items: stretch; }  /* 修正3：去掉 aspect-ratio 不要 1100/1020 撑高，min-height 540 与毛利表匹配 */
.hpl-trend-wrap { min-height: 480px; }
.hpl-trend { min-height: 480px; }
.hpl-axis { stroke: var(--wk-border); fill: none; }
.hpl-svg-label { fill: var(--wk-text-2); font-size: 9px; }
/* 2026-08-26 修复「雷达文字太小」：CSS 类优先级高于 SVG 内联 font-size，此前 14/15px
   把内联 40/44px 压成 ~7px 显示；调大 CSS 字号让内联大小生效 */
.hpl-radar .hpl-svg-label { font-size: 46px; }
.hpl-radar .hpl-svg-val { font-size: 52px; }
.hpl-svg-val { font-size: 11px; font-weight: 700; }
.hpl-sbar { fill: var(--wk-primary); opacity: 0.5; }
.hpl-gauge-val { font-size: 20px; font-weight: 800; }
.hpl-legend { font-size: 11.5px; color: var(--wk-text-2); margin-top: 8px; display: flex; align-items: center; gap: 14px; }
/* P2-3（2026-08-26 老吴）：趋势图维度切换器 */
.hpl-trend-switch { display: inline-flex; gap: 6px; margin-left: 8px; flex-wrap: wrap; }
.hpl-trend-opt { font-size: 12px; padding: 3px 10px; border-radius: 10px; cursor: pointer; color: var(--wk-text-2); background: var(--wk-muted-light); border: 1px solid transparent; user-select: none; transition: all .15s ease; white-space: nowrap; }
.hpl-trend-opt:hover { border-color: var(--wk-primary); color: var(--wk-primary); }
.hpl-trend-opt.on { background: var(--wk-primary); color: #fff; font-weight: 600; }
.hpl-dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 4px; vertical-align: middle; }
.hpl-dot-green { background: #16a34a; }
.hpl-dot-bar { background: var(--wk-primary); opacity: 0.5; }
.hpl-verdict-text { margin-top: 8px; }
.hpl-tag-sample { font-size: 11px; color: #c2410c; background: #fff7ed; border: 1px solid #fed7aa; border-radius: 6px; padding: 1px 6px; margin-left: 6px; }
.hpl-reasons { margin: 8px 0; padding-left: 18px; color: var(--wk-text-2); font-size: 12.5px; line-height: 1.7; }
.hpl-weights { font-size: 11.5px; color: var(--wk-text-3); }

/* 漏斗（修正5：三栏 名称 | 条 | 数值，sqrt 缩放 + 最小宽度） */
.hpl-funnel { display: flex; flex-direction: column; gap: 10px; align-items: stretch; }
.hpl-funnel-row { width: 100%; display: grid; grid-template-columns: 150px 1fr 120px; align-items: center; gap: 12px; }
.hpl-funnel-name { font-size: 12px; color: var(--wk-text-2); text-align: right; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hpl-funnel-name small { color: #f59e0b; font-weight: 600; margin-left: 2px; }
.hpl-funnel-bar { height: 30px; border-radius: 6px; min-width: 4px; transition: width .4s; }
.hpl-funnel-bar.est { opacity: 0.55; }
.hpl-funnel-v { font-size: 12px; font-weight: 600; color: var(--wk-text-1); font-variant-numeric: tabular-nums; }
.hpl-funnel-v small { color: var(--wk-text-2); font-weight: 500; margin-left: 2px; }

/* 广告网格 */
.hpl-ad-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.hpl-ad-cell { background: var(--wk-muted-light); border-radius: 10px; padding: 12px; text-align: center; }
.hpl-ad-cell b { display: block; font-size: 18px; color: var(--wk-text-1); font-variant-numeric: tabular-nums; }
.hpl-ad-cell span { font-size: 11.5px; color: var(--wk-text-2); }
.hpl-cov-warn { margin-top: 8px; padding: 8px 12px; border-radius: 8px; font-size: 12.5px; color: #b45309; background: var(--wk-warning-light); border: 1px solid #fcd34d; }
.hpl-profit-table tbody tr.cur { background: var(--wk-muted-light); outline: 1px solid var(--wk-primary); }

.hpl-note { font-size: 12.5px; color: var(--wk-text-2); line-height: 1.6; background: var(--wk-muted-light); border-radius: 8px; padding: 10px 12px; }
.hpl-detail-toggle { text-align: center; }

.hpl-formula-bar {
  display: inline-flex; align-items: center; gap: 6px;
  margin-top: 10px; padding: 6px 10px; border-radius: 8px;
  background: var(--wk-muted-light); color: var(--wk-text-2);
  font-size: 12px; cursor: pointer; transition: background .2s;
}
.hpl-formula-bar:hover { background: var(--wk-border); }
.hpl-formula-box {
  margin-top: 10px; padding: 12px 14px; border-radius: 10px;
  background: #f0fdf4; border: 1px solid #bbf7d0; color: #14532d;
  font-size: 12.5px; line-height: 1.7;
}
.hpl-formula { font-weight: 700; margin-bottom: 8px; }
.hpl-formula-steps { display: flex; flex-direction: column; gap: 4px; margin-bottom: 8px; }
.hpl-formula-params { font-size: 11.5px; color: #166534; border-top: 1px dashed #86efac; padding-top: 8px; }
.hpl-eye { color: var(--wk-primary); flex: 0 0 auto; }

.hpl-sign-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px 18px; margin-bottom: 10px; }
.hpl-sign-grid > div { display: flex; flex-direction: column; gap: 2px; }
.hpl-sign-grid b { font-size: 12px; color: var(--wk-text-2); font-weight: 600; }
.hpl-sign-grid span { font-size: 14px; font-weight: 700; color: var(--wk-text); }
.hpl-sign-grid i { font-style: normal; font-size: 11px; color: #64748b; }
.hpl-sign-eq { font-size: 13.5px; padding: 8px 10px; background: rgba(22,163,74,.08); border-radius: 8px; }
.hpl-sign-eq b { color: #16a34a; font-size: 15px; }

.hpl-series-wrap { max-height: 340px; overflow: auto; border: 1px solid var(--wk-border); border-radius: 10px; }
.hpl-series-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.hpl-series-table th, .hpl-series-table td { padding: 7px 10px; text-align: right; border-bottom: 1px solid var(--wk-border); white-space: nowrap; }
.hpl-series-table th { position: sticky; top: 0; background: var(--wk-muted-light); color: var(--wk-text-2); font-weight: 600; z-index: 1; }
.hpl-series-table th:first-child, .hpl-series-table td:first-child { text-align: left; }
.hpl-series-table td.hpl-series-name { max-width: 340px; overflow: hidden; text-overflow: ellipsis; }
.hpl-series-table tbody tr:hover { background: var(--wk-muted-light); }
.hpl-series-table td:nth-child(6), .hpl-series-table td:nth-child(7) { font-weight: 700; color: #2563eb; }

/* 雷达 + 毛利测算双栏（修正1） */
.hpl-radar-profit-grid { display: grid; grid-template-columns: minmax(360px, 1fr) minmax(640px, 1.55fr); gap: 20px; }  /* 修正3+4（v36 老吴）：雷达列缩到 1fr，毛利表列加宽到 1.55fr 取消滚轮 */
@media (max-width: 1100px) { .hpl-radar-profit-grid { grid-template-columns: 1fr; } }
.hpl-radar-col { display: flex; flex-direction: column; }
.hpl-profit-col { display: flex; flex-direction: column; min-width: 0; }
.hpl-profit-tabs { display: flex; gap: 8px; margin-bottom: 10px; }
.hpl-profit-tabs button {
  flex: 1; padding: 7px 10px; border-radius: 8px; border: 1px solid var(--wk-border);
  background: var(--wk-muted-light); color: var(--wk-text-2); font-size: 12px; cursor: pointer;
}
.hpl-profit-tabs button.on { background: var(--wk-primary); color: #fff; border-color: var(--wk-primary); font-weight: 600; }
.hpl-profit-table-wrap { overflow-x: hidden; overflow-y: auto; border: 1px solid var(--wk-border); border-radius: 10px; max-height: 420px; }  /* 修正4（v36 老吴）：取消横滚轮，溢出则缩小字号 */
.hpl-profit-table { width: 100%; border-collapse: collapse; font-size: 12px; table-layout: auto; }
.hpl-profit-table th, .hpl-profit-table td { padding: 6px 5px; text-align: right; border-bottom: 1px solid var(--wk-border); white-space: nowrap; }
.hpl-profit-table th { position: sticky; top: 0; background: var(--wk-muted-light); color: var(--wk-text-2); font-weight: 600; text-align: right; font-size: 11px; }
.hpl-profit-table td:nth-child(1) { text-align: center; }
.hpl-profit-table tbody tr.positive td { color: #16a34a; font-weight: 700; }
.hpl-profit-table tbody tr:hover { background: var(--wk-muted-light); }

/* 客单 & 套餐区间重构（修正3） */
.hpl-price-bands { display: flex; flex-direction: column; gap: 14px; margin-top: 10px; }
.hpl-price-band { background: var(--wk-muted-light); border-radius: 10px; padding: 10px 12px; }
.hpl-price-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; }
.hpl-price-name-wrap { display: flex; flex-direction: column; gap: 2px; flex: 1; padding-right: 10px; min-width: 0; }
.hpl-price-name { font-size: 13px; font-weight: 700; color: var(--wk-text-1); word-break: break-all; line-height: 1.4; }
.hpl-price-sku { font-size: 11px; color: var(--wk-text-2); font-weight: 500; word-break: break-all; line-height: 1.4; }
.hpl-price-amt { font-size: 12px; color: var(--wk-text-2); white-space: nowrap; font-weight: 600; }
.hpl-price-mid { display: flex; align-items: center; gap: 10px; }
.hpl-price-mid .hpl-bar-track { flex: 1; }
.hpl-price-count { font-size: 12px; font-weight: 600; color: var(--wk-text-1); min-width: 48px; text-align: right; }
.hpl-price-bot { display: flex; flex-wrap: wrap; gap: 8px 16px; margin-top: 6px; font-size: 11.5px; color: var(--wk-text-2); align-items: center; }
.hpl-price-bot b { font-size: 12px; }
.hpl-price-bot .hpl-profit-tag { margin-left: auto; }   /* 修正4（v38 老吴）：盈亏标签挪到最右 */
.hpl-profit-tag { display: inline-block; padding: 2px 8px; border-radius: 6px; font-size: 12px; font-weight: 700; line-height: 1.6; }
.hpl-profit-tag.up { color: #15803d; background: #dcfce7; }
.hpl-profit-tag.down { color: #b91c1c; background: #fee2e2; }

/* 2026-09-10 老吴（方案 B+D）：统计窗口切换 + 双窗口小字标注 */
.hpl-win-switch { display: inline-flex; gap: 4px; padding: 2px; border-radius: 10px; background: var(--wk-muted-light); }
.hpl-win-opt { font-size: 12px; padding: 4px 12px; border-radius: 8px; cursor: pointer; color: var(--wk-text-2); user-select: none; transition: all .15s ease; white-space: nowrap; }
.hpl-win-opt:hover { color: var(--wk-primary); }
.hpl-win-opt.on { background: var(--wk-primary); color: #fff; font-weight: 600; }
.hpl-eval-small { margin-left: 6px; font-size: 11px; color: var(--wk-text-2); opacity: .85; font-weight: 400; }
.hpl-profit-tag.na { color: #64748b; background: var(--wk-muted-light); }

/* 物流方式对比展开（修正4） */
.hpl-logi-bars { display: flex; flex-direction: column; gap: 12px; }
.hpl-logi-row { display: grid; grid-template-columns: 86px 1fr auto; gap: 10px; align-items: center; }
.hpl-logi-name { font-size: 12.5px; font-weight: 600; color: var(--wk-text-1); }
.hpl-logi-mid .hpl-bar-track { width: 100%; }
.hpl-logi-nums { text-align: right; font-size: 11.5px; color: var(--wk-text-2); line-height: 1.5; white-space: nowrap; }
.hpl-logi-nums b { font-size: 12.5px; }

/* 订单分布（修正5） */
.hpl-dist-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 900px) { .hpl-dist-grid { grid-template-columns: 1fr; } }
.hpl-dist-title { font-size: 12.5px; font-weight: 700; color: var(--wk-text-1); margin-bottom: 10px; }
.hpl-dist-bars { display: flex; flex-direction: column; gap: 8px; }
.hpl-dist-row { display: flex; align-items: center; gap: 8px; }
.hpl-dist-name { width: 80px; font-size: 11.5px; color: var(--wk-text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex-shrink: 0; }
.hpl-dist-row .hpl-bar-track { flex: 1; height: 14px; }
.hpl-dist-val { width: 78px; text-align: right; font-size: 11px; font-weight: 600; color: var(--wk-text-1); flex-shrink: 0; }

/* 暗色适配 */
:root[data-theme="dark"] .hpl-formula-box { background: #0f291e; border-color: #166534; color: #bbf7d0; }
:root[data-theme="dark"] .hpl-formula-params { color: #86efac; border-color: #166534; }
:root[data-theme="dark"] .hpl-mock-badge { background: #3a2410; color: #fdba74; border-color: #7c4a1e; }
:root[data-theme="dark"] .hpl-series-table { border-color: #2a3340; }
:root[data-theme="dark"] .hpl-series-table th { background: #1b2330; color: #cbd5e1; }
:root[data-theme="dark"] .hpl-series-table th, :root[data-theme="dark"] .hpl-series-table td,
:root[data-theme="dark"] .hpl-series-table { border-color: #2a3340; }
:root[data-theme="dark"] .hpl-series-table tbody tr:hover { background: #1b2330; }
:root[data-theme="dark"] .hpl-sign-grid i { color: #94a3b8; }
:root[data-theme="dark"] .hpl-sign-eq { background: rgba(34,197,94,.12); }
:root[data-theme="dark"] .hpl-tag-sample { background: #3a2410; color: #fdba74; border-color: #7c4a1e; }
:root[data-theme="dark"] .hpl-empty { border-color: var(--wk-border); }
:root[data-theme="dark"] .hpl-bar-track { background: #2a2f3a; }
:root[data-theme="dark"] .hpl-ad-cell { background: #232831; }
:root[data-theme="dark"] .hpl-note { background: #232831; }
:root[data-theme="dark"] .hpl-funnel-name { color: #cbd5e1; }
:root[data-theme="dark"] .hpl-funnel-v { color: #f1f5f9; }
:root[data-theme="dark"] .hpl-funnel-v small { color: #94a3b8; }
:root[data-theme="dark"] .hpl-profit-tag.na { background: #232831; }
:root[data-theme="dark"] .hpl-profit-tag.up { color: #4ade80; background: #14331f; }
:root[data-theme="dark"] .hpl-profit-tag.down { color: #f87171; background: #3a1d1d; }
:root[data-theme="dark"] .hpl-profit-tabs button { background: #232831; border-color: #2a3340; color: #cbd5e1; }
:root[data-theme="dark"] .hpl-profit-tabs button.on { background: var(--wk-primary); color: #fff; }
:root[data-theme="dark"] .hpl-profit-table th { background: #1b2330; color: #cbd5e1; }
:root[data-theme="dark"] .hpl-profit-table,
:root[data-theme="dark"] .hpl-profit-table th,
:root[data-theme="dark"] .hpl-profit-table td { border-color: #2a3340; }
:root[data-theme="dark"] .hpl-price-band { background: #232831; }
:root[data-theme="dark"] .hpl-dist-row .hpl-bar-track { background: #2a2f3a; }

/* 2026-08-26 老吴：PrecheckPage pane 显隐（v81 起用 :class 替代 v-show，绕开指令编译边界问题） */
.main-panes > .precheck-pane { display: none; }
.main-panes > .precheck-pane.on { display: block; }

/* ---------------- 投放利润中心（2026-08-26 老吴） ---------------- */
.pc-kpi { border-radius: 12px; padding: 14px 16px; }
.pc-kpi-l { font-size: 12.5px; color: var(--wk-text-2, #64748b); }
.pc-kpi-v { font-size: 22px; font-weight: 600; margin-top: 2px; }
.pc-kpi-s { font-size: 12px; color: var(--wk-text-3, #94a3b8); margin-top: 2px; }
.pc-card-h { font-size: 13.5px; font-weight: 600; margin-bottom: 12px; }
.pc-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.pc-table th { text-align: left; padding: 8px 10px; color: var(--wk-text-3); font-weight: 500; border-bottom: 1px solid var(--wk-border); background: var(--wk-surface-2); }
.pc-table td { padding: 8px 10px; border-bottom: 1px solid var(--wk-border); }
.pc-table tr:hover td { background: var(--wk-surface-2); }

/* ---------------- 签收分析（2026-08-30 老吴：签收时效跟踪 / 地区营业点签收） ---------------- */
.st-page { padding: 4px 2px 24px; }
.st-head { margin-bottom: 14px; }
.st-title { font-size: 20px; font-weight: 600; color: var(--wk-text, #0f172a); }
.st-sub { font-size: 12.5px; color: var(--wk-text-3, #94a3b8); margin-top: 4px; }
.st-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.st-table th { text-align: center; padding: 9px 10px; color: var(--wk-text-3); font-weight: 600;
  border-bottom: 2px solid var(--wk-border); background: var(--wk-surface-2); white-space: nowrap; }
.st-table td { padding: 8px 10px; border-bottom: 1px solid var(--wk-border); vertical-align: middle; text-align: center; }
.st-table tr:hover td { background: var(--wk-surface-2); }
/* 物流商速度表：三段耗时底色区分（老吴 2026-08-31） */
.st-table .seg-total { background: var(--wk-surface-2); }          /* 总耗时：浅灰 */
.st-table td.seg-total { background: var(--wk-surface-2); }
.st-table .seg-arr { background: var(--wk-info-bg); }            /* 段①到站：浅蓝 */
.st-table td.seg-arr { background: var(--wk-info-bg); }
.st-table .seg-pick { background: var(--wk-primary-50); }           /* 段②取件：浅绿 */
.st-table td.seg-pick { background: var(--wk-primary-50); }
.st-table .th-note { display: block; font-size: 10px; font-weight: 400; color: #94a3b8; margin-top: 1px; }
[data-theme="dark"] .st-table .seg-total, [data-theme="dark"] .st-table td.seg-total { background: #1e293b; }
[data-theme="dark"] .st-table .seg-arr, [data-theme="dark"] .st-table td.seg-arr { background: #17253c; }
[data-theme="dark"] .st-table .seg-pick, [data-theme="dark"] .st-table td.seg-pick { background: #14291d; }
[data-theme="dark"] .st-table .th-note { color: #64748b; }
.st-num { font-variant-numeric: tabular-nums; }
.st-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; }
.st-kpi { background: var(--wk-surface-2); border: 1px solid var(--wk-border); border-radius: 10px; padding: 12px 14px; }
.st-kpi-l { font-size: 12px; color: var(--wk-text-3); text-align: center; }
.st-kpi-v { font-size: 20px; font-weight: 700; margin-top: 2px; font-variant-numeric: tabular-nums; text-align: center; }
.st-chart-title { font-size: 13.5px; font-weight: 600; margin-bottom: 10px; }
.st-chip { display: inline-block; background: var(--wk-fill); color: var(--wk-text-2); border-radius: 4px;
  padding: 1px 7px; font-size: 11.5px; margin-right: 5px; max-width: 160px; overflow: hidden;
  text-overflow: ellipsis; white-space: nowrap; vertical-align: middle; }
.st-chip-blue { background: var(--wk-info-bg); color: #2563eb; }

/* ================= 财务利润 · 利润计算器（2026-09-04） ================= */
.pc-kpi { border: 1px solid var(--wk-border-2, #ebeef5); border-radius: 8px; padding: 10px 6px; background: var(--wk-surface, #fff); }
.pc-kpi-l { font-size: 12px; font-weight: 600; color: var(--wk-text-2, #606266); margin-bottom: 4px; }
.pc-kpi-v { font-size: 19px; font-weight: 700; font-variant-numeric: tabular-nums; }
.pc-kpi-s { font-size: 11px; color: var(--wk-text-3, #909399); margin-top: 3px; }
.pc-pos { color: var(--wk-success, #16a34a); }
.pc-neg { color: var(--wk-danger, #dc2626); }
.pc-subttl { font-size: 13px; font-weight: 600; margin-bottom: 8px; text-align: center; color: var(--wk-text-1, #303133); }
.pc-in { border: 1px solid var(--wk-border-2, #ebeef5); border-radius: 8px; padding: 8px; text-align: center; }
.pc-in-l { font-size: 12px; font-weight: 600; color: var(--wk-text-2, #606266); margin-bottom: 5px; }
.pc-steps { border: 1px solid var(--wk-border-2, #ebeef5); border-radius: 8px; overflow: hidden; }
.pc-step { display: flex; align-items: center; padding: 8px 14px; border-bottom: 1px solid var(--wk-border-2, #ebeef5); font-size: 13px; }
.pc-step:last-child { border-bottom: none; }
.pc-step .pc-no { width: 20px; height: 20px; border-radius: 50%; background: var(--wk-bg, #f5f7fa); color: var(--wk-text-2, #606266); font-size: 11px; display: inline-flex; align-items: center; justify-content: center; margin-right: 10px; flex-shrink: 0; }
.pc-step .pc-nm { flex: 1; color: var(--wk-text-1, #303133); }
.pc-step .pc-nm small { color: var(--wk-text-3, #909399); margin-left: 8px; font-size: 11px; }
.pc-step .pc-val { font-weight: 600; font-variant-numeric: tabular-nums; }
.pc-step.pc-total { background: var(--wk-primary-50, #f0fdf4); font-weight: 700; }
.pc-step.pc-total .pc-no { background: var(--wk-primary, #16a34a); color: #fff; }

/* ---- 月度考勤（2026-09-04）---- */
.att-ok { color: var(--wk-primary); font-weight: 600; }
.att-bad { color: #dc2626; font-weight: 600; }
.att-warn { color: #d97706; font-weight: 600; }
.att-rest { color: #94a3b8; }
.att-row { cursor: pointer; }
.att-day { border: 1px solid var(--wk-border, #ebeef5); border-radius: 6px; padding: 6px 8px; background: var(--wk-card-bg, #fff); }
.att-day-d { font-size: 12px; color: var(--wk-text-2, #606266); }
.att-day-v { font-size: 12px; margin-top: 2px; word-break: break-all; }
.att-day.att-ok { border-left: 3px solid #16a34a; }
.att-day.att-bad { border-left: 3px solid #dc2626; }
.att-day.att-warn { border-left: 3px solid #d97706; }
.att-day.att-rest { border-left: 3px solid var(--wk-border-2); opacity: .75; }

/* 历史总汇：矩阵行点击联动高亮（2026-09-06） */
.el-table .hl-row td.el-table__cell { background: var(--wk-primary-50) !important; }

/* 历史总汇 · 方案C 暖意模块卡片（2026-09-06 重构） */
.pc-card {
  background: var(--wk-surface, #ffffff);
  border: 1px solid var(--wk-border-2, #ebeef5);
  border-radius: 14px;
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04), 0 4px 12px rgba(15, 23, 42, 0.03);
  transition: box-shadow 0.18s ease-out, transform 0.18s ease-out;
}
.pc-card[style*="cursor:pointer"]:hover { box-shadow: 0 2px 6px rgba(15, 23, 42, 0.06), 0 8px 20px rgba(15, 23, 42, 0.05); transform: translateY(-1px); }
.pc-card-primary {
  background: linear-gradient(135deg, #16a34a 0%, #22c55e 100%);
  border-color: transparent;
  box-shadow: 0 4px 16px rgba(22, 163, 74, 0.18);
  color: #fff;
}
.pc-card-primary .pc-mini { color: rgba(255,255,255,0.75) !important; }
.pc-mini { font-size: 11.5px; color: var(--wk-text-3, #94a3b8); }
.pc-tag {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 6px;
  font-size: 11px;
  line-height: 1.5;
  font-weight: 500;
  color: var(--wk-text-2, #5a6470);
  background: var(--wk-bg, #fafafa);
}
/* 历史总汇暗色模式：方案C 卡片 */
html[data-theme="dark"] .pc-card { background: var(--wk-surface, #1a1d23); border-color: var(--wk-border-2, #2d3140); box-shadow: 0 1px 3px rgba(0,0,0,.3); }
html[data-theme="dark"] .pc-tag { background: var(--wk-fill, #2d3140); color: var(--wk-text-2, #a8a097); }
html[data-theme="dark"] .pc-card-primary { box-shadow: 0 4px 16px rgba(22,163,74,.25); }

/* ============ 业务员花费分析（2026-09-06 新父级菜单） ============ */
/* ===== 业务员花费分析（staff_spend）· 2026-09-11 老吴：整页重设计 ===== */
.ss-page { display: flex; flex-direction: column; gap: 14px; }

/* --- 工具条 --- */
.ss-bar { padding: 11px 16px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.ss-sect-title { font-size: 15px; font-weight: 600; color: var(--wk-text); display: flex; align-items: center; gap: 10px; }
.ss-sect-title::before {
  content: ""; width: 3px; height: 14px; border-radius: 2px;
  background: var(--wk-primary); display: inline-block;
}

/* --- 团队 KPI 卡组 --- */
.ss-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(146px, 1fr)); gap: 12px; }
.ss-kpi {
  padding: 13px 15px 14px; display: flex; flex-direction: column; gap: 5px;
  position: relative; overflow: hidden;
}
.ss-kpi::after {
  content: ""; position: absolute; inset: 0 auto 0 0; width: 3px;
  background: var(--wk-border-2); opacity: .55;
}
.ss-kpi.is-money::after { background: var(--wk-primary); opacity: 1; }
.ss-kpi.is-ok::after { background: var(--wk-success); opacity: 1; }
.ss-kpi.is-bad::after { background: var(--wk-danger); opacity: 1; }
.ss-kpi-label { font-size: 12px; color: var(--wk-text-3); display: flex; align-items: center; gap: 5px; white-space: nowrap; }
.ss-kpi-val {
  font-size: 22px; font-weight: 650; line-height: 1.15; color: var(--wk-text);
  font-variant-numeric: tabular-nums; letter-spacing: -.4px;
}
.ss-kpi-val.is-ok { color: var(--wk-success); }
.ss-kpi-val.is-bad { color: var(--wk-danger); }
.ss-kpi-val.is-off { color: var(--wk-text-3); font-size: 20px; }
.ss-kpi-val .u { font-size: 12.5px; font-weight: 500; color: var(--wk-text-3); margin-left: 2px; letter-spacing: 0; }
.ss-kpi-sub { font-size: 11.5px; color: var(--wk-text-3); display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }

/* --- 主表（两层分组表头） --- */
.ss-table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 12.5px; text-align: center; min-width: 1180px; }
.ss-table thead th {
  padding: 0 8px; height: 32px; background: var(--wk-bg); color: var(--wk-text-2);
  font-weight: 500; white-space: nowrap; border-bottom: 1px solid var(--wk-border);
}
.ss-table thead tr.ss-grp th { position: sticky; top: 0; z-index: 3; font-size: 11.5px; letter-spacing: .4px; color: var(--wk-text-3); }
.ss-table thead tr.ss-sub th { position: sticky; top: 32px; z-index: 2; }
.ss-table thead tr.ss-grp th.grp { border-left: 1px solid var(--wk-border); }
.ss-table thead tr.ss-sub th:first-child,
.ss-table tbody td:first-child { border-left: 0; }
.ss-table thead th.cost { color: var(--wk-warning); }
.ss-table tbody td {
  padding: 7px 8px; border-top: .5px solid var(--wk-border); white-space: nowrap;
  font-variant-numeric: tabular-nums; color: var(--wk-text-2);
}
.ss-table tbody tr { transition: background .12s ease-out; }
.ss-table tbody tr:hover td { background: var(--wk-primary-50); }
.ss-table .ss-name {
  font-weight: 600; color: var(--wk-text); text-align: left;
  padding-left: 15px !important; position: sticky; left: 0; z-index: 1;
  background: var(--wk-surface, #fff);
}
.ss-table tbody tr:hover .ss-name { background: var(--wk-primary-50); }
.ss-table .ss-sub { color: var(--wk-text-3); font-size: 11px; }
.ss-table .ss-total td { background: var(--wk-primary-50); font-weight: 600; color: var(--wk-text); border-top: 1px solid var(--wk-primary-200); }
.ss-table .ss-total .ss-name { background: var(--wk-primary-50); }

/* 成本色阶（老吴：<15 绿 · ≥15 红） */
.ss-cost-ok { color: var(--wk-success) !important; font-weight: 650; }
.ss-cost-bad { color: var(--wk-danger) !important; font-weight: 650; }
.ss-cost-off { color: var(--wk-text-3) !important; }

/* 花费占比微条 */
.ss-bar-cell { display: flex; flex-direction: column; align-items: center; gap: 3px; }
.ss-bar-track { width: 54px; height: 4px; border-radius: 2px; background: var(--wk-primary-100); overflow: hidden; }
.ss-bar-fill { display: block; height: 100%; border-radius: 2px; background: var(--wk-primary); transition: width .25s ease-out; }

.ss-up { color: var(--wk-danger); font-size: 11px; margin-left: 3px; }
.ss-dn { color: var(--wk-success); font-size: 11px; margin-left: 3px; }
.ss-flat { color: var(--wk-text-3); font-size: 11px; margin-left: 3px; }

/* --- 热力图 --- */
.ss-heat { border-collapse: collapse; font-size: 11.5px; text-align: center; min-width: 980px; }
.ss-heat thead th { padding: 6px 4px; color: var(--wk-text-3); font-weight: 400; min-width: 34px; }
.ss-heat tbody td {
  padding: 5px 4px; border: 1.5px solid var(--wk-surface, #fff); border-radius: 2px;
  min-width: 34px; height: 26px; color: var(--wk-text-2); font-variant-numeric: tabular-nums; cursor: default;
}
.ss-heat .ss-name { font-weight: 500; color: var(--wk-text); text-align: right; padding-right: 8px !important; background: transparent !important; }

/* --- 图表卡片头 --- */
.ss-chart-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.ss-chart-title { font-size: 14px; font-weight: 600; color: var(--wk-text); }
.ss-legend { margin-left: auto; display: flex; gap: 14px; font-size: 11.5px; color: var(--wk-text-3); align-items: center; }
.ss-legend .chip { display: inline-block; width: 10px; height: 10px; border-radius: 2px; vertical-align: -1px; }
.ss-legend .dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; vertical-align: 0; }

html[data-theme="dark"] .ss-table thead th { background: var(--wk-surface); }
html[data-theme="dark"] .ss-table .ss-name { background: var(--wk-surface); }
html[data-theme="dark"] .ss-table tbody tr:hover td,
html[data-theme="dark"] .ss-table tbody tr:hover .ss-name { background: var(--wk-primary-50); }
html[data-theme="dark"] .ss-table tbody td { border-color: var(--wk-border-2); }
html[data-theme="dark"] .ss-heat tbody td { border-color: var(--wk-surface); }

/* =====================================================================
 * 工作台首页「驾驶舱」（2026-09-10 老吴拍板 方案B + 视觉①森绿舱）
 * 全部走 --wk-* token；数值一律居中（老吴格式偏好）
 * ===================================================================== */
.wk-cp-skel-wrap { display: flex; flex-direction: column; gap: 12px; }
.wk-cp-skel { background: var(--wk-border); border-radius: var(--wk-radius-lg); opacity: .55; animation: wkCpPulse 1.4s ease-in-out infinite; }
.wk-cp-skel-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
@keyframes wkCpPulse { 0%,100% { opacity: .35; } 50% { opacity: .7; } }
.wk-cp-skel-note { text-align: center; font-size: 12.5px; color: var(--wk-text-3); padding: 6px 0 2px; }
.wk-cp-err { text-align: center; padding: 48px 20px; color: var(--wk-text-2); display: flex; flex-direction: column; gap: 10px; align-items: center; }
.wk-cp-err-msg { font-size: 12.5px; color: var(--wk-danger); }

.wk-cp-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.wk-cp-hi { display: flex; align-items: center; gap: 10px; }
.wk-cp-hi-name { font-size: 17px; font-weight: 500; color: var(--wk-text); }
.wk-cp-scope { font-size: 11.5px; padding: 1px 8px; border-radius: 10px; font-weight: 500; }
.wk-cp-scope-admin { background: var(--wk-primary-50); color: var(--wk-primary-700); border: 1px solid var(--wk-primary-200); }
.wk-cp-scope-staff { background: var(--wk-warning-light); color: var(--wk-warning); border: 1px solid var(--wk-warning); }
.wk-cp-top-right { display: flex; align-items: center; gap: 10px; }
.wk-cp-stamp { font-size: 12px; color: var(--wk-text-3); }

.wk-cp-fx { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; background: var(--wk-surface);
  border: 1px solid var(--wk-border); border-radius: var(--wk-radius-lg); padding: 9px 14px; margin-bottom: 14px; font-size: 12.5px; color: var(--wk-text-2); }
.wk-cp-fx b { color: var(--wk-primary-600); font-weight: 500; }
.wk-cp-fx-t { color: var(--wk-text-3); }
.wk-cp-fx-dot { width: 1px; height: 14px; background: var(--wk-border-2); }
.wk-cp-fx-note { color: var(--wk-text-3); }
.wk-cp-fx-date { margin-left: auto; color: var(--wk-text-3); }

.wk-cp-sec { margin-bottom: 16px; }
.wk-cp-sec-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 8px; }
.wk-cp-sec-t { font-size: 14px; font-weight: 500; color: var(--wk-text); }
.wk-cp-sec-s { font-size: 12px; color: var(--wk-text-3); }

.wk-cp-pulse { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
@media (max-width: 1200px) { .wk-cp-pulse { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.wk-cp-card { position: relative; background: var(--wk-surface); border: 1px solid var(--wk-border);
  border-radius: var(--wk-radius-lg); padding: 12px 14px; text-align: center; }
.wk-cp-card.tone-ok { border-color: var(--wk-primary-200); }
.wk-cp-card.tone-bad { border-color: var(--wk-danger); }
.wk-cp-card.tone-warn { border-color: var(--wk-warning); }
.wk-cp-card-l { font-size: 12px; color: var(--wk-text-3); }
.wk-cp-card-v { margin: 4px 0 2px; }
.wk-cp-card-num { font-size: 26px; font-weight: 500; line-height: 1.25; color: var(--wk-text); font-variant-numeric: tabular-nums; }
.tone-ok .wk-cp-card-num { color: var(--wk-primary-600); }
.tone-bad .wk-cp-card-num { color: var(--wk-danger); }
.tone-warn .wk-cp-card-num { color: var(--wk-warning); }
.tone-info .wk-cp-card-num { color: var(--wk-primary); }
.wk-cp-card-u { font-size: 12px; color: var(--wk-text-3); margin-left: 3px; }
.wk-cp-card-f { display: flex; align-items: center; justify-content: center; gap: 6px; flex-wrap: wrap; font-size: 11.5px; color: var(--wk-text-3); }
.wk-cp-dod { background: var(--wk-muted-light); border-radius: 8px; padding: 0 6px; color: var(--wk-text-2); }
.wk-cp-card-note { color: var(--wk-text-3); }
.wk-cp-spark { width: 100%; height: 26px; margin-top: 6px; }

.wk-cp-two { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
@media (max-width: 1200px) { .wk-cp-two { grid-template-columns: 1fr; } }
.wk-cp-panel { background: var(--wk-surface); border: 1px solid var(--wk-border); border-radius: var(--wk-radius-lg); padding: 12px 14px; }
.wk-cp-panel-h { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin-bottom: 10px; font-size: 13px; color: var(--wk-text); font-weight: 500; }
.wk-cp-panel-s { font-size: 11.5px; color: var(--wk-text-3); font-weight: 400; }
.wk-cp-legend { font-size: 11.5px; color: var(--wk-text-3); font-weight: 400; display: inline-flex; align-items: center; }
.wk-cp-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 4px; }
.wk-cp-dot-est { background: var(--wk-primary); opacity: .45; }

.wk-cp-fin { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-bottom: 10px; text-align: center; }
.wk-cp-fin-l { font-size: 12px; color: var(--wk-text-3); }
.wk-cp-fin-v { font-size: 20px; font-weight: 500; color: var(--wk-text); font-variant-numeric: tabular-nums; margin: 2px 0; }
.wk-cp-fin-n { font-size: 11px; color: var(--wk-text-3); }
.wk-cp-predbar { border-top: 1px dashed var(--wk-border); padding-top: 8px; }
.wk-cp-predbar-t { font-size: 11.5px; color: var(--wk-text-3); margin-bottom: 6px; text-align: center; }
.wk-cp-predbar-row { display: flex; align-items: center; justify-content: space-between; font-size: 12.5px; color: var(--wk-text-2); padding: 3px 2px; }
.wk-cp-predbar-row b { font-weight: 500; color: var(--wk-text); font-variant-numeric: tabular-nums; }

.wk-cp-bars { display: flex; align-items: flex-end; gap: 3px; height: 168px; padding-top: 6px; }
.wk-cp-bar-col { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: center; }
.wk-cp-bar-area { width: 100%; height: 140px; display: flex; align-items: flex-end; justify-content: center; }
.wk-cp-bar { width: 68%; max-width: 16px; border-radius: 3px 3px 0 0; transition: height .25s ease; }
.wk-cp-bar-x { font-size: 10px; color: var(--wk-text-3); margin-top: 4px; }

.wk-cp-table { table-layout: fixed; }
.wk-cp-table td, .wk-cp-table th { text-align: center; }
.wk-cp-rank { display: inline-block; width: 18px; height: 18px; line-height: 18px; border-radius: 50%;
  background: var(--wk-muted-light); color: var(--wk-text-2); font-size: 11px; }
.wk-cp-rank.rk1 { background: var(--wk-primary); color: #fff; }
.wk-cp-rank.rk2 { background: var(--wk-primary-300); color: var(--wk-primary-700); }
.wk-cp-rank.rk3 { background: var(--wk-primary-100); color: var(--wk-primary-700); }
.wk-cp-empty { text-align: center; color: var(--wk-text-3); font-size: 12.5px; padding: 14px 0; }

.wk-cp-stack { display: flex; height: 22px; border-radius: var(--wk-radius); overflow: hidden; background: var(--wk-muted-light); }
.wk-cp-stack-seg { height: 100%; transition: width .3s ease; }
.wk-cp-stack-legend { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 12px; margin-top: 10px; }
.wk-cp-lg-item { display: flex; align-items: center; font-size: 12px; color: var(--wk-text-2); }
.wk-cp-lg-l { flex: 1; }
.wk-cp-lg-v { font-weight: 500; color: var(--wk-text); font-variant-numeric: tabular-nums; margin-right: 6px; }
.wk-cp-lg-p { color: var(--wk-text-3); width: 46px; text-align: right; }
.wk-cp-openline { margin-top: 10px; padding-top: 8px; border-top: 1px dashed var(--wk-border);
  font-size: 12px; color: var(--wk-text-3); text-align: center; }
.wk-cp-openline b { color: var(--wk-text); font-weight: 500; }

.wk-cp-carrier { margin-bottom: 10px; }
.wk-cp-carrier-top { display: flex; justify-content: space-between; font-size: 12.5px; color: var(--wk-text-2); margin-bottom: 4px; }
.wk-cp-carrier-name { font-weight: 500; color: var(--wk-text); }
.wk-cp-carrier-num { color: var(--wk-text-3); font-variant-numeric: tabular-nums; }
.wk-cp-carrier-bar { height: 8px; background: var(--wk-muted-light); border-radius: 4px; overflow: hidden; }
.wk-cp-carrier-fill { height: 100%; border-radius: 4px; transition: width .3s ease; }
.wk-cp-carrier-foot { display: flex; justify-content: space-between; font-size: 11.5px; color: var(--wk-text-3); margin-top: 3px; }
.wk-cp-carrier-foot b { font-weight: 500; }

.wk-cp-arrive { display: flex; align-items: flex-end; gap: 6px; }
.wk-cp-arrive-col { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: center; }
.wk-cp-arrive-area { width: 100%; height: 92px; display: flex; align-items: flex-end; justify-content: center; }
.wk-cp-arrive-bar { width: 62%; max-width: 40px; background: var(--wk-primary-300); border-radius: 3px 3px 0 0; }
.wk-cp-arrive-bar:hover { background: var(--wk-primary); }
.wk-cp-arrive-v { font-size: 11.5px; color: var(--wk-text); font-weight: 500; margin-top: 4px; font-variant-numeric: tabular-nums; }
.wk-cp-arrive-x { font-size: 11px; color: var(--wk-text-3); }
.wk-cp-arrive-cum { font-size: 10.5px; color: var(--wk-text-3); }

.wk-cp-prod { display: flex; align-items: center; gap: 8px; padding: 5px 2px; font-size: 12.5px; border-bottom: 1px dashed var(--wk-border); }
.wk-cp-prod:last-child { border-bottom: 0; }
.wk-cp-prod-i { width: 18px; height: 18px; line-height: 18px; text-align: center; border-radius: 4px;
  background: var(--wk-primary-50); color: var(--wk-primary-700); font-size: 11px; flex: 0 0 auto; }
.wk-cp-prod-i-risk { background: var(--wk-danger-light); color: var(--wk-danger); }
.wk-cp-prod-n { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--wk-text); text-align: left; }
.wk-cp-prod-o { color: var(--wk-text-3); font-variant-numeric: tabular-nums; }
.wk-cp-prod-r { width: 52px; text-align: right; font-weight: 500; font-variant-numeric: tabular-nums; }

/* 2026-09-10 老吴：商品榜加表头行，注明「订单量 / 签收率」两列口径 */
.wk-cp-prod-hd { border-bottom: 1px solid var(--wk-border); padding-bottom: 4px; margin-bottom: 2px; }
.wk-cp-prod-hd .wk-cp-prod-i { background: transparent; color: var(--wk-text-3); }
.wk-cp-prod-hd .wk-cp-prod-n,
.wk-cp-prod-hd .wk-cp-prod-o,
.wk-cp-prod-hd .wk-cp-prod-r { color: var(--wk-text-3); font-size: 11px; font-weight: 400; }

/* 榜单统计周期小字 */
.wk-cp-span-note { font-style: normal; margin-left: 8px; color: var(--wk-text-3); }

.wk-cp-queues { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
@media (max-width: 1200px) { .wk-cp-queues { grid-template-columns: 1fr; } }
.wk-cp-queue { background: var(--wk-surface); border: 1px solid var(--wk-border); border-radius: var(--wk-radius-lg);
  padding: 12px 14px; cursor: pointer; transition: box-shadow .18s ease, border-color .18s ease; }
.wk-cp-queue:hover { box-shadow: var(--wk-shadow); }
.wk-cp-queue.q-danger { border-left: 3px solid var(--wk-danger); }
.wk-cp-queue.q-warn { border-left: 3px solid var(--wk-warning); }
.wk-cp-queue.q-ok { border-left: 3px solid var(--wk-success); }
.wk-cp-queue-h { display: flex; align-items: center; font-size: 12.5px; color: var(--wk-text-2); }
.wk-cp-queue-v { font-size: 24px; font-weight: 500; color: var(--wk-text); text-align: center; margin: 2px 0 6px; font-variant-numeric: tabular-nums; }
.wk-cp-queue-v span { font-size: 12px; color: var(--wk-text-3); margin-left: 3px; }
.wk-cp-queue-list div { display: flex; justify-content: space-between; font-size: 12px; color: var(--wk-text-2); padding: 2px 0; }
.wk-cp-queue-list b { font-weight: 500; color: var(--wk-text); font-variant-numeric: tabular-nums; }

.wk-cp-jobs { display: flex; flex-wrap: wrap; gap: 6px; background: var(--wk-surface); border: 1px solid var(--wk-border);
  border-radius: var(--wk-radius-lg); padding: 12px 14px; }
.wk-cp-job { width: 14px; height: 14px; border-radius: 50%; display: inline-block; cursor: default; }
.wk-cp-job.jh-ok { background: var(--wk-success); }
.wk-cp-job.jh-running { background: var(--wk-primary); box-shadow: 0 0 0 3px var(--wk-primary-100); }
.wk-cp-job.jh-failed { background: var(--wk-danger); }
.wk-cp-job.jh-stalled { background: var(--wk-warning); }
.wk-cp-job.jh-pending, .wk-cp-job.jh-idle { background: var(--wk-border-2); }
.wk-cp-job-warn { margin-top: 8px; font-size: 12px; color: var(--wk-danger); }


/* ── 2026-09-10 商品配置列表：增量加载进度条（老吴「首屏先出、后台慢慢加载」）── */
.gcfg-prog {
  margin: 0 0 12px; padding: 10px 14px; border-radius: 10px;
  background: var(--wk-primary-50); border: 1px solid var(--wk-primary-200);
  box-shadow: var(--wk-shadow-xs);
}
.gcfg-prog-top {
  display: flex; align-items: center; gap: 8px;
  font-size: 13px; color: var(--wk-text-2);
}
.gcfg-prog-top b { color: var(--wk-primary-600); }
.gcfg-prog-r { margin-left: auto; font-size: 12px; color: var(--wk-text-3); white-space: nowrap; }
.gcfg-prog-dot {
  width: 8px; height: 8px; border-radius: 50%; flex: none;
  background: var(--wk-primary); animation: gcfgPulse 1.1s ease-in-out infinite;
}
.gcfg-prog-bar {
  margin-top: 8px; height: 5px; border-radius: 3px; overflow: hidden;
  background: var(--wk-primary-100);
}
.gcfg-prog-bar > i {
  display: block; height: 100%; border-radius: 3px;
  background: linear-gradient(90deg, var(--wk-primary-400), var(--wk-primary-600));
  transition: width .5s ease;
}
@keyframes gcfgPulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%      { opacity: .35; transform: scale(.72); }
}

/* 2026-09-11 FTUE P0-1/P0-2：数据源异常提示条 + 今日空数据弱化态 */
.wk-cp-warn {
  display: flex; align-items: flex-start; gap: 8px;
  margin: 10px 0 0; padding: 9px 13px; border-radius: 8px;
  background: var(--wk-warning-light); border: 1px solid var(--wk-warning);
  color: var(--wk-warning); font-size: 12.5px; line-height: 1.7;
}
.wk-cp-warn-ic {
  flex: none; width: 16px; height: 16px; border-radius: 50%; margin-top: 1px;
  background: var(--wk-warning); color: #fff; font-size: 11px; font-weight: 700;
  display: inline-flex; align-items: center; justify-content: center;
}
.wk-cp-warn-t b { font-weight: 600; }
.wk-cp-card-dim { opacity: .55; }
.wk-cp-card-dim .wk-cp-card-num { color: var(--wk-text-3); font-weight: 400; }

/* 2026-09-11 FTUE P2-7：规划中模块菜单灰标 */
.menu-planning { opacity: .62; }
.menu-planning .menu-plan-tag {
  margin-left: 6px; font-size: 10px; line-height: 1.4; padding: 1px 5px; border-radius: 4px;
  background: var(--wk-border-2); color: var(--wk-text-3); font-weight: 400; flex: none;
}

/* 2026-09-11 FTUE 共用组件：wk-empty / wk-retry / wk-skeleton */
.wk-empty { text-align: center; padding: 28px 16px; color: var(--wk-text-3); }
.wk-empty-ic { font-size: 22px; opacity: .45; margin-bottom: 6px; }
.wk-empty-t { font-size: 13px; color: var(--wk-text-2); }
.wk-empty-h { font-size: 12px; color: var(--wk-text-3); margin-top: 4px; }
.wk-retry { text-align: center; padding: 40px 20px; display: flex; flex-direction: column; gap: 8px; align-items: center; }
.wk-retry-t { font-size: 14px; color: var(--wk-text); font-weight: 500; }
.wk-retry-m { font-size: 12.5px; color: var(--wk-danger); max-width: 620px; line-height: 1.7; }
.wk-retry-h { font-size: 12px; color: var(--wk-text-3); max-width: 620px; line-height: 1.7; margin-bottom: 4px; }
.wk-skel-wrap { display: flex; flex-direction: column; gap: 12px; }
.wk-skel-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.wk-skel { background: var(--wk-border); border-radius: var(--wk-radius-lg); opacity: .55; animation: wkCpPulse 1.4s ease-in-out infinite; }
.wk-skel-note { text-align: center; font-size: 12.5px; color: var(--wk-text-3); padding: 6px 0 2px; }

/* ══════════════════════════════════════════════════════════════════════════
   爆品实验室 · 三 Tab 分区 + 签收汇总四区（2026-09-12 老吴方案确认）
   只在既有设计 token 上扩展，不引入新色值体系：
   签收绿 var(--wk-success) #16a34a / 拒退红 var(--wk-danger) #dc2626 /
   谨慎橙 var(--wk-warning) #d97706 / 待定灰 #94a3b8 / 中性灰 #cbd5e1
   ══════════════════════════════════════════════════════════════════════════ */

/* ── 三 Tab 切换条（实心绿药丸式，最直观）── */
.hpl-tabs { display: flex; gap: 8px; margin: 18px 0 2px; flex-wrap: wrap; }
.hpl-tab {
  display: flex; flex-direction: column; gap: 2px; padding: 10px 20px 11px;
  cursor: pointer; user-select: none; border-radius: 10px;
  border: 1px solid var(--wk-border); background: var(--wk-surface);
  box-shadow: var(--wk-shadow-xs); transition: background .15s, border-color .15s, box-shadow .15s;
}
.hpl-tab:hover { border-color: var(--wk-primary-300); background: var(--wk-primary-50); }
.hpl-tab.on { background: var(--wk-primary); border-color: var(--wk-primary); box-shadow: 0 3px 10px rgba(22, 163, 74, .24); }
.hpl-tab-name { font-size: 15px; font-weight: 700; color: var(--wk-text-2); line-height: 1.25; }
.hpl-tab.on .hpl-tab-name { color: #fff; }
.hpl-tab-note { font-size: 11.5px; color: var(--wk-text-3); }
.hpl-tab.on .hpl-tab-note { color: rgba(255, 255, 255, .8); }

/* ── 区 1 · 结论条 ── */
.hpl-verdict-bar { margin-top: 10px; padding: 11px 15px; border-radius: 10px; border: 1px solid; font-size: 13.5px; font-weight: 600; line-height: 1.75; }
.hpl-verdict-bar.ok { background: var(--wk-primary-50); border-color: var(--wk-primary-200); color: var(--wk-primary-700); }
.hpl-verdict-bar.good { background: var(--wk-primary-50); border-color: var(--wk-primary-300); color: var(--wk-primary-700); }
.hpl-verdict-bar.bad { background: var(--wk-danger-light); border-color: #fecaca; color: #b91c1c; }

/* ── 区 2 · 出单批次进度带 ── */
.hpl-batch-wrap {
  display: flex; align-items: flex-end; gap: 6px; margin-top: 12px;
  padding: 4px 2px 0; overflow-x: auto; border-bottom: 1px solid var(--wk-border);
}
.hpl-bat-col { display: flex; flex-direction: column; align-items: center; gap: 3px; min-width: 44px; flex: 1 0 auto; }
/* 柱顶＝该批「当前签收率」（2026-09-14 老吴：取代原 D+n 到站中位标签）。
   刻意用中性色，不参与语义配色 —— 柱内三色已经把「好/坏」讲清楚了，柱顶再加色只会看乱。 */
.hpl-bat-arr { font-size: 12px; font-weight: 800; font-variant-numeric: tabular-nums; padding: 1px 5px; border-radius: 6px; white-space: nowrap; color: var(--wk-text-2); background: var(--wk-muted-light); }
/* column-reverse：DOM 顺序（已签→健康→拒收→非有效）不变，但已签段落在底部 —— 基线对齐才可比 */
.hpl-bat-bar { width: 30px; display: flex; flex-direction: column-reverse; border-radius: 5px 5px 0 0; overflow: hidden; background: var(--wk-muted-light); }
.hpl-bat-seg { width: 100%; min-height: 0; }
/* 2026-09-14 老吴定色：已签＝蓝 · 健康（还有希望）＝绿 · 拒收（没希望）＝红 —— 全站统一 */
.seg-signed { background: #2563eb; }
.seg-healthy { background: #16a34a; }
.seg-rejected { background: #dc2626; }
/* 2026-09-12 老吴：「8月22号还有在途」的真身 —— 非有效单（无效/重复/恶意/取消）从未发货，
   签收恒 0。用斜纹段与真在途（实心灰）区分，一眼看出灰不是"在路上"而是"没出去"。 */
.seg-nonvalid { background: repeating-linear-gradient(45deg, var(--wk-border) 0 4px, var(--wk-surface-2) 4px 8px); }
.hpl-bat-n { font-size: 11.5px; font-weight: 700; color: var(--wk-text-2); font-variant-numeric: tabular-nums; }
.hpl-bat-date { font-size: 10.5px; color: var(--wk-text-3); white-space: nowrap; }
.hpl-bat-gap { font-size: 10.5px; color: var(--wk-text-3); font-variant-numeric: tabular-nums; }
.hpl-bat-gap.bad { color: #dc2626; font-weight: 700; }
.hpl-bat-gap.good { color: #16a34a; font-weight: 700; }
.hpl-bat-legend { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-top: 10px; font-size: 12px; color: var(--wk-text-2); }
.hpl-bat-legend i { display: inline-block; width: 11px; height: 11px; border-radius: 3px; margin-right: 5px; vertical-align: -1px; }

/* ── 区 3 · 在途状态透视（2026-09-12 老吴：物流真实进展信息差）── */
/* A 构成全景条：flexGrow = 单量，段内百分比 ≥7% 才显示，避免窄段文字溢出 */
.hpl-vbar { display: flex; height: 26px; border-radius: 6px; overflow: hidden; margin-top: 12px; background: var(--wk-muted-light); }
.hpl-vseg { display: flex; align-items: center; justify-content: center; min-width: 3px; font-size: 10.5px; font-weight: 700; color: #fff; transition: filter .15s; }
.hpl-vseg:hover { filter: brightness(1.12); }
.hpl-vseg.tone-gray { background: #cbd5e1; color: #475569; }
.hpl-vseg.tone-green { background: #16a34a; }
.hpl-vseg.tone-red { background: #dc2626; }
.hpl-vseg.tone-blue { background: #2563eb; }
.hpl-vseg.tone-amber { background: #d97706; }
.hpl-vleg { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-top: 8px; font-size: 12px; color: var(--wk-text-2); }
.hpl-vleg span { white-space: nowrap; }
.hpl-vleg i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 5px; vertical-align: -1px; }
.hpl-vleg i.tone-gray { background: #cbd5e1; }
.hpl-vleg i.tone-green { background: #16a34a; }
.hpl-vleg i.tone-red { background: #dc2626; }
.hpl-vleg i.tone-blue { background: #2563eb; }
.hpl-vleg i.tone-amber { background: #d97706; }
.hpl-vleg b { color: var(--wk-text); font-variant-numeric: tabular-nums; }
/* B 双通道透视卡 */
.hpl-v2col { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 14px; }
.hpl-vsub { border: 1px solid var(--wk-border); border-radius: 8px; padding: 12px 14px; background: var(--wk-surface-2); }
.hpl-vsub-h { font-size: 13px; font-weight: 700; color: var(--wk-text); margin-bottom: 10px; }
.hpl-vsub-h small { font-weight: 400; color: var(--wk-text-3); font-size: 11.5px; }
.hpl-vstat { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.hpl-vstat-l { font-size: 12px; color: var(--wk-text-3); margin-right: 2px; }
.hpl-vchip { display: inline-block; padding: 2px 9px; border-radius: 20px; background: var(--wk-fill); border: 1px solid var(--wk-border); font-size: 11.5px; color: var(--wk-text-2); }
.hpl-vchip b { color: var(--wk-text); font-variant-numeric: tabular-nums; }
.hpl-vchip.hot { background: var(--wk-danger-light); border-color: #fecaca; color: #dc2626; }
.hpl-vchip.hot b { color: #dc2626; }
.hpl-vchip.warn { background: var(--wk-warning-light); border-color: #fcd34d; color: #b45309; }
.hpl-vchip.warn b { color: #b45309; }
.hpl-vchip small { margin-left: 5px; font-size: 10.5px; color: var(--wk-text-3); }
.hpl-vbreak { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin-top: 10px;
  padding: 8px 11px; border-radius: 8px; background: var(--wk-surface-2); border: 1px dashed var(--wk-border); }
.hpl-vbreak .hpl-vstat-l { margin-right: 3px; }
.hpl-vdim { font-size: 12px; color: var(--wk-text-3); }
.hpl-vcurve { margin-top: 6px; }
.hpl-vcurve-row { display: grid; grid-template-columns: 62px 1fr 52px; gap: 8px; align-items: center; margin-top: 5px; font-size: 12px; }
.hpl-vcurve-d { color: var(--wk-text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hpl-vcurve-row b { text-align: right; color: var(--wk-text); font-variant-numeric: tabular-nums; }
.hpl-vcurve-row.hot .hpl-vcurve-d { color: #dc2626; font-weight: 700; }
.hpl-vcurve .hpl-bar-track { height: 8px; }
.hpl-vnote { margin-top: 10px; font-size: 11.5px; line-height: 1.6; color: var(--wk-text-2); background: var(--wk-surface-2); border-left: 3px solid var(--wk-border-2); padding: 7px 10px; border-radius: 0 5px 5px 0; }
/* D 口径说明块（2026-09-12 老吴：实测 / 预期 / 缺口 并排看上去混乱，须就地逐行说明） */
.hpl-vdef { margin-top: 10px; padding: 9px 12px; border: 1px solid var(--wk-border); border-radius: 7px; background: var(--wk-surface-2); }
.hpl-vdef-h { font-size: 11.5px; color: var(--wk-text-3); margin-bottom: 6px; }
.hpl-vdef-r { display: flex; gap: 10px; font-size: 12px; line-height: 1.65; color: var(--wk-text-2); }
.hpl-vdef-r + .hpl-vdef-r { margin-top: 4px; padding-top: 4px; border-top: 1px dashed rgba(148, 163, 184, .28); }
.hpl-vdef-k { flex: 0 0 142px; color: var(--wk-text-3); }
.hpl-vdef-k b { color: var(--wk-text-1); font-variant-numeric: tabular-nums; }
.hpl-vdef-v { flex: 1; min-width: 0; }
.hpl-vdef-v b { color: var(--wk-text-1); }
@media (max-width: 640px) {
  .hpl-vdef-r { flex-direction: column; gap: 2px; }
  .hpl-vdef-k { flex: none; }
}
/* E 预估最终签收率卡（2026-09-12 老吴：「我就要能不能预估出大概的签收率，最最关键」） */
.hpl-fcast { display: flex; gap: 16px; margin-top: 12px; padding: 12px 14px; border-radius: 8px;
  border: 1px solid var(--wk-border); background: linear-gradient(180deg, var(--wk-surface-2), var(--wk-surface)); }
.hpl-fcast-l { flex: 0 0 156px; display: flex; flex-direction: column; gap: 2px;
  padding-right: 14px; border-right: 1px dashed rgba(148, 163, 184, .45); }
.hpl-fcast-t { font-size: 11.5px; color: var(--wk-text-3); }
.hpl-fcast-v { font-size: 30px; font-weight: 700; line-height: 1.12; font-variant-numeric: tabular-nums; }
.hpl-fcast-cmp { font-size: 11.5px; line-height: 1.5; color: var(--wk-text-3); }
.hpl-fcast-cmp b { font-variant-numeric: tabular-nums; }
.hpl-fcast-r { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.hpl-fcast-row { display: flex; gap: 10px; font-size: 12px; line-height: 1.6; color: var(--wk-text-2); }
.hpl-fcast-k { flex: 0 0 60px; color: var(--wk-text-3); }
.hpl-fcast-k.warn { color: #d97706; font-weight: 700; }
.hpl-fcast-x { flex: 1; min-width: 0; }
.hpl-fcast-x b { color: var(--wk-text-1); font-variant-numeric: tabular-nums; }
@media (max-width: 640px) {
  .hpl-fcast { flex-direction: column; gap: 10px; }
  .hpl-fcast-l { flex: none; padding-right: 0; border-right: none;
    border-bottom: 1px dashed rgba(148, 163, 184, .45); padding-bottom: 8px; }
  .hpl-fcast-row { flex-direction: column; gap: 1px; }
  .hpl-fcast-k { flex: none; }
}
/* C P6 并列条（两个口径同时给，官方模型不改） */
.hpl-vp6 { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; margin-top: 14px; padding: 12px 14px; border-radius: 8px; background: var(--wk-surface-2); border: 1px solid var(--wk-border); }
.hpl-vp6-i { display: flex; flex-direction: column; gap: 2px; padding: 6px 14px; border-radius: 7px; background: #fff; border: 1px solid var(--wk-border); }
.hpl-vp6-i span { font-size: 11.5px; color: var(--wk-text-3); }
.hpl-vp6-i b { font-size: 16px; color: var(--wk-text-2); font-variant-numeric: tabular-nums; }
.hpl-vp6-i.adj { border-color: #bfdbfe; background: var(--wk-info-bg); }
.hpl-vp6-i.adj b { color: #2563eb; }
.hpl-vp6-note { flex: 1; min-width: 220px; font-size: 11.5px; line-height: 1.6; color: var(--wk-text-2); }

/* ── 区 4 · 延迟判定标签 ── */
.hpl-delay-tag { display: inline-block; padding: 2px 9px; border-radius: 20px; border: 1px solid; font-size: 11.5px; font-weight: 700; white-space: nowrap; }
.hpl-delay-tag.strong { color: #dc2626; background: var(--wk-danger-light); border-color: #fecaca; }
.hpl-delay-tag.warn { color: #d97706; background: var(--wk-warning-light); border-color: var(--wk-warning-border); }

@media (max-width: 900px) {
  .hpl-v2col { grid-template-columns: 1fr; }
  .hpl-vp6 { flex-direction: column; align-items: stretch; }
  .hpl-vp6-i { flex-direction: row; align-items: baseline; justify-content: space-between; }
  .hpl-vleg { gap: 4px 10px; }
}

/* 2026-09-15 暗色适配专项：浅蓝 chip 在深蓝底上原字色 #2563eb 对比过低 */
:root[data-theme="dark"] .st-chip-blue { color: #93c5fd; }

/* 2026-09-15 暗色适配专项：P6 调整项块的浅蓝描边在深蓝底上偏亮，压一档 */
:root[data-theme="dark"] .hpl-vp6-i.adj { border-color: #1d4ed8; }
