/* ==========================================================================
   Offer引力 · 求职驾驶舱（工作台）样式
   设计：B端 SaaS 骨骼 + C端温度感
   字体：Inter / HarmonyOS Sans SC / MiSans / PingFang SC
   基础字号 15px / 行高 1.6 / 最小字号 13px / 数字等宽 tabular-nums
   ========================================================================== */

/* ---------- 0. 变量与基础 ---------- */
:root {
  --wb-brand: #7B5CFF;
  --wb-brand-2: #4F6BFF;
  --wb-brand-soft: #F1EDFF;
  --wb-ok: #10B981;
  --wb-ok-soft: #E7F8F1;
  --wb-warn: #F59E0B;
  --wb-warn-soft: #FEF4E4;
  --wb-danger: #F0573E;
  --wb-danger-soft: #FDECEA;
  --wb-title: #111827;
  --wb-body: #4B5563;
  --wb-aux: #6B7280;
  --wb-bg: #F8F9FC;
  --wb-card: #FFFFFF;
  --wb-line: #E5E7EB;
  --wb-radius: 12px;
  --wb-shadow: 0 1px 2px rgba(16, 24, 40, .04), 0 8px 24px rgba(16, 24, 40, .06);
  --wb-shadow-hover: 0 2px 6px rgba(123, 92, 255, .10), 0 12px 32px rgba(123, 92, 255, .14);
  --wb-side-1: #2B2D42;
  --wb-side-2: #1A1B26;
  --wb-side-3: #4C1D95;
  --wb-brand-a: #8B5CF6;
  --wb-brand-b: #6D28D9;
  --wb-font: var(--font-sans, 'Inter'), -apple-system, BlinkMacSystemFont, "HarmonyOS Sans SC", "MiSans", "PingFang SC", "Microsoft YaHei", sans-serif;
}

#page-workbench {
  font-family: var(--wb-font);
  font-size: 14px;   /* v126.3：正文 14px（原 15px），层级更清晰 */
  line-height: 1.6;
  color: #4B5563;    /* v126.3：正文色统一 #4B5563 */
  background: var(--wb-bg);
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
}
#page-workbench * { box-sizing: border-box; }
#page-workbench b, #page-workbench strong { color: var(--wb-title); }
.wb-num {
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}
#page-workbench .wb-aux { color: var(--wb-aux); font-size: 13px; font-weight: 500; }

/* ---------- 1. 三段式骨架 ---------- */
.wb-shell { display: flex; min-height: 100vh; }
.wb-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; margin-left: 232px; }
.wb-body {
  flex: 1 1 auto;
  padding: 24px 24px 96px;   /* v126.3：顶距 20 → 24，呼吸感 */
  background: var(--wb-bg);
  display: grid;
  gap: 20px;                 /* v126.3：卡片间距 18 → 20 */
}

/* ---------- 2. 左侧导航 ---------- */
.wb-side {
  position: fixed;
  top: 0; left: 0; bottom: 0;
  width: 232px;
  /* v82：深空紫渐变（顶 深蓝灰 #1A1B26 → 中下 深邃紫 #2B2D42 → 底 暗紫 #4C1D95） */
  background: linear-gradient(180deg, #1A1B26 0%, #2B2D42 55%, var(--wb-side-3) 100%);
  color: #E5E7EB;
  display: flex;
  flex-direction: column;
  padding: 18px 14px 16px;
  z-index: 40;
  overflow: hidden;
}
/* ---- v103：品牌区「图标 + 双行文字」中心对齐重构（原 Logo 图标 /wb-logo.jpg 不动）----
   ① .wb-side-brand：图标与文字块整体垂直居中（align-items:center），间距 12px
   ② .wb-side-txt：改为 column + align-items:center + justify-content:center
      → 主/副标题共用同一条垂直中轴线，不再是左对齐导致的重心偏左
   ③ 主副标题均 text-align:center，并对 letter-spacing 的尾部空白做负 margin 补偿，
      消除「视觉右偏」，实现像素级居中                                        */
.wb-side-brand {
  display: flex;
  align-items: center;          /* 图标 + 文字块：垂直方向绝对居中 */
  justify-content: flex-start;
  gap: 12px;                    /* 文字容器与图标间距 12px */
  margin: 4px 8px 12px; padding: 12px 14px;
  border-radius: 8px;
  transition: all 0.3s ease;
}
.wb-side-brand:hover { background: rgba(255, 255, 255, 0.05); }
.wb-side-logo {
  width: 52px; height: 52px; padding: 8px; box-sizing: border-box;
  border-radius: 12px;
  background: linear-gradient(135deg, #7B5CFF, #4F6BFF);
  display: flex; align-items: center; justify-content: center;
  overflow: hidden; flex: 0 0 52px;
  transition: all 0.3s ease;
}
.wb-side-logo img {
  width: 36px; height: 36px; border-radius: 8px; object-fit: cover; display: block;
  filter: drop-shadow(0 0 10px rgba(139, 92, 246, 0.5));
  transition: all 0.3s ease;
}
.wb-side-brand:hover .wb-side-logo img { filter: drop-shadow(0 0 14px rgba(139, 92, 246, 0.75)); }

/* 文字容器：纵向 flex + 双向居中 */
.wb-side-txt {
  display: flex;
  flex-direction: column;
  align-items: center;          /* 关键：主副标题中心点落在同一条垂直中轴线 */
  justify-content: center;
  text-align: center;
  flex: 1 1 auto; min-width: 0;
}
.wb-side-name {
  font-size: 18px;              /* 20 → 18，收紧层级 */
  font-weight: 700;
  color: #FFFFFF;
  line-height: 1.2;             /* 消除多余行高 */
  letter-spacing: 0.5px;
  margin: 0 -0.5px 0 0;         /* 补偿尾部字距，保证视觉居中 */
  text-align: center;
  white-space: nowrap;
}
/* v103：副标题 11px / 500 / 半透明白 + 1.5px 字距 + nowrap，紧凑抱团不折行不截断 */
.wb-side-sub {
  font-size: 11px;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.6);
  letter-spacing: 1.5px;
  line-height: 1.2;
  margin-top: 2px;              /* 缩小主副标题垂直间距 */
  margin-right: -1.5px;         /* 补偿尾部字距，保证视觉居中 */
  text-align: center;
  white-space: nowrap;
  overflow: hidden; max-width: 100%;
  transition: all 0.3s ease;
}
.wb-side-brand:hover .wb-side-sub { color: rgba(255, 255, 255, 0.85); }

.wb-side-scroll {
  flex: 1 1 auto; overflow-y: auto; margin: 0 -4px; padding: 0 4px;
  /* v97：Firefox 细滚动条（仅此容器，不污染主内容区） */
  scrollbar-width: thin;
  scrollbar-color: rgba(255, 255, 255, 0.15) transparent;
}
/* ---- v97：侧栏滚动条美化（Webkit 内核：Chrome/Edge/Safari）----
   行为保留：容器仍是 overflow-y:auto，内容不溢出时滚动条自然不出现 */
.wb-side-scroll::-webkit-scrollbar { width: 5px; }
.wb-side-scroll::-webkit-scrollbar-button { display: none; height: 0; width: 0; }
.wb-side-scroll::-webkit-scrollbar-track { background: transparent; }
.wb-side-scroll::-webkit-scrollbar-thumb {
  background: rgba(255, 255, 255, 0.15);
  border-radius: 10px;
  transition: background 0.3s ease;
}
.wb-side-scroll::-webkit-scrollbar-thumb:hover { background: rgba(139, 92, 246, 0.7); }
/* 分组：标题与上方菜单拉开 24px 间距 */
.wb-side-group { margin-bottom: 6px; }
/* v126.46：侧栏「👑 会员中心」菜单项隐藏（内联 display:none 的 CSS 双保险；
   hidden 项不占布局空间，下方「个人资料」自动上移，间距与其他菜单项一致） */
.wb-side-member-hidden { display: none !important; }
.wb-side-gtitle {
  margin: 24px 0 8px;
  padding: 0 10px;
  font-size: 12px; font-weight: 600; letter-spacing: .08em;
  color: #6B7280;
}
.wb-side-group:first-child .wb-side-gtitle { margin-top: 2px; }
/* 菜单项：高度 ≥44px、15px / 字重 500、0.2s 过渡 */
.wb-side-item {
  display: flex; align-items: center;
  min-height: 44px;
  padding: 0 10px;
  border-radius: 10px;
  font-size: 15px; font-weight: 500;
  color: #D1D5DB;
  cursor: pointer;
  transition: background .2s ease, color .2s ease, box-shadow .2s ease;
  user-select: none;
}
/* 图标：与文字左侧固定 8px 间距，垂直居中对齐 */
.wb-side-item .ico {
  flex: 0 0 20px; width: 20px; height: 20px;
  margin-right: 8px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 15px; line-height: 1; opacity: .95;
}
.wb-side-item > span:last-child { line-height: 1.3; }
/* v126.62：子菜单文字防换行/防撑破（如「全网智能选岗」等长文案）——超出侧栏可用宽度时省略号截断，
   仅约束文字 span 本身，图标/状态点/布局不受影响 */
.wb-side-item > span:nth-child(2) {
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
  min-width: 0;
}
.wb-side-item:hover {
  background: rgba(139, 92, 246, .2);
  color: #fff;
}
.wb-side-item.active {
  background: linear-gradient(135deg, var(--wb-brand-a) 0%, var(--wb-brand-b) 100%);
  color: #fff; font-weight: 700;
  box-shadow: 0 0 15px rgba(139, 92, 246, .5);
}
.wb-side-item.active .ico { opacity: 1; }
.wb-side-item.active:hover { background: linear-gradient(135deg, var(--wb-brand-a) 0%, var(--wb-brand-b) 100%); }
.wb-side-item .badge {
  margin-left: auto; font-size: 13px; font-weight: 600;
  background: rgba(255, 255, 255, .14); color: #fff;
  border-radius: 999px; padding: 1px 8px;
}
/* v82：底部抽象「星轨 / 引力波」几何水印（5% 透明度，替代旧的城市剪影） */
.wb-side-watermark {
  position: absolute; left: 0; right: 0; bottom: 0;
  height: 210px; opacity: .05; pointer-events: none; z-index: 0;
}
/* v82：底部标语（13px）+ 呼吸灯锚点 */
.wb-side-foot {
  position: relative; z-index: 1;
  display: flex; align-items: center; gap: 8px;
  padding: 14px 6px 2px;
  font-size: 13px; font-weight: 600;
  color: rgba(233, 230, 255, .82);
  letter-spacing: 0;
  white-space: nowrap;
}
.wb-foot-dot {
  flex: 0 0 8px; width: 8px; height: 8px; border-radius: 50%;
  background: radial-gradient(circle at 32% 30%, #DDD6FE, var(--wb-brand-a) 55%, var(--wb-brand-b) 100%);
  animation: wb-breathe 2s ease-in-out infinite;
}
@keyframes wb-breathe {
  0%, 100% { opacity: .45; transform: scale(.82); box-shadow: 0 0 4px rgba(139, 92, 246, .45); }
  50%      { opacity: 1;   transform: scale(1.14); box-shadow: 0 0 12px rgba(139, 92, 246, 1); }
}

/* ---------- 3. 顶部 Header（毛玻璃） ---------- */
.wb-head {
  position: sticky; top: 0; z-index: 30;
  display: flex; align-items: center; gap: 16px;
  padding: 12px 24px;
  background: rgba(255, 255, 255, .7);
  -webkit-backdrop-filter: blur(12px) saturate(160%);
  backdrop-filter: blur(12px) saturate(160%);
  border-bottom: 1px solid var(--wb-line);
}
.wb-crumb { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 500; color: var(--wb-aux); white-space: nowrap; }
.wb-crumb b { color: var(--wb-title); font-weight: 600; }
.wb-crumb span.sep { color: #D1D5DB; }

/* v99：顶部搜索框已全站移除，占位符把铃铛/用户推到右侧 */
.wb-head-spacer { flex: 1 1 auto; }

.wb-bell {
  position: relative; width: 38px; height: 38px; border-radius: 10px;
  border: 1px solid var(--wb-line); background: #fff; cursor: pointer;
  display: flex; align-items: center; justify-content: center; font-size: 16px;
  transition: border-color .16s ease, box-shadow .16s ease;
}
.wb-bell:hover { border-color: var(--wb-brand); box-shadow: 0 0 0 3px rgba(123, 92, 255, .12); }
.wb-bell .dot {
  position: absolute; top: 8px; right: 9px; width: 8px; height: 8px;
  border-radius: 50%; background: var(--wb-danger);
  box-shadow: 0 0 0 2px rgba(240, 87, 62, .22);
}

/* 状态胶囊（与 localStorage 严格联动） */
.wb-pill {
  display: inline-flex; align-items: center; gap: 6px;
  height: 30px; padding: 0 12px; border-radius: 999px;
  font-size: 13px; font-weight: 600; white-space: nowrap;
  border: 1px solid transparent; cursor: pointer;
}
.wb-pill .pdot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.wb-pill.free { background: #EAF1FF; color: #2C54D6; border-color: #C7D8FF; }
.wb-pill.vip { background: var(--wb-ok-soft); color: #067A57; border-color: #B7E9D5; }
.wb-pill.used { background: var(--wb-danger-soft); color: #C2351B; border-color: #F8CFC8; }

.wb-user { display: flex; align-items: center; gap: 10px; cursor: pointer; border-radius: 10px; padding: 4px 8px; margin-right: -8px; transition: background .16s ease; }
.wb-user:hover { background: rgba(123, 92, 255, .08); }
.wb-avatar {
  width: 34px; height: 34px; border-radius: 50%; object-fit: cover;
  background: linear-gradient(135deg, #7B5CFF, #4F6BFF); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; font-weight: 700; cursor: pointer;
  box-shadow: 0 2px 8px rgba(123, 92, 255, .3);
}
.wb-username {
  font-size: 14px; font-weight: 600; color: var(--wb-title);
  /* v126.45：昵称过长省略号截断（>10 汉字），避免撑爆顶栏 */
  max-width: 132px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* v126.45：自定义图片头像（保持圆形/等大/垂直居中） */
.wb-avatar img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; display: block; }
/* v126.45：自定义文字头像 —— 与个人中心同款橙色渐变 */
.wb-avatar.wb-avatar-orange {
  background: linear-gradient(135deg, #FBBF24 0%, #F97316 100%);
  box-shadow: 0 2px 8px rgba(249, 115, 22, .35);
}

/* ---------- 4. 通用卡片 ---------- */
.wb-card {
  background: var(--wb-card);
  border: 1px solid var(--wb-line);
  border-radius: var(--wb-radius);
  box-shadow: var(--wb-shadow);
  padding: 24px;   /* v126.3：白色卡片内边距统一 24px（p-6） */
  transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.wb-card:hover {
  border-color: rgba(123, 92, 255, .45);
  box-shadow: var(--wb-shadow-hover);
}
.wb-card-title {
  font-size: 16px; font-weight: 600; color: #111827;   /* v126.3：模块标题 16px/600/#111827 */
  letter-spacing: -0.01em; display: flex; align-items: center; gap: 8px;
}
.wb-card-sub { font-size: 13px; font-weight: 500; color: var(--wb-aux); margin-top: 2px; }
.wb-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.wb-link-more { font-size: 13px; font-weight: 600; color: var(--wb-brand); cursor: pointer; white-space: nowrap; }
.wb-link-more:hover { text-decoration: underline; }

.wb-grid-2 { display: grid; grid-template-columns: 2fr 1fr; gap: 20px; align-items: start; }
@media (max-width: 1100px) { .wb-grid-2 { grid-template-columns: 1fr; } }

/* ---------- 5. 第一行：求职行动路线图 ---------- */
.wb-roadmap {
  display: flex; align-items: center;
  padding: 16px 8px 8px;
}
.wb-rm-step { flex: 1 1 0; min-width: 0; text-align: center; position: relative; cursor: pointer; }
.wb-rm-dot {
  width: 34px; height: 34px; margin: 0 auto 8px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; font-weight: 700;
  background: #F3F4F6; color: #9CA3AF; border: 1px solid var(--wb-line);
  position: relative; z-index: 2; transition: all .2s ease;
}
.wb-rm-step.done .wb-rm-dot { background: var(--wb-ok-soft); color: var(--wb-ok); border-color: #B7E9D5; }
.wb-rm-step.current .wb-rm-dot {
  background: linear-gradient(135deg, #7B5CFF, #4F6BFF); color: #fff; border-color: transparent;
  animation: wb-breathe 1.9s ease-in-out infinite;
}
@keyframes wb-breathe {
  0%, 100% { box-shadow: 0 0 0 0 rgba(123, 92, 255, .45); }
  50% { box-shadow: 0 0 0 10px rgba(123, 92, 255, 0); }
}
.wb-rm-label { font-size: 14px; font-weight: 600; color: var(--wb-title); }
.wb-rm-step.todo .wb-rm-label { color: #9CA3AF; }
.wb-rm-desc { font-size: 13px; font-weight: 500; color: var(--wb-aux); margin-top: 1px; }
.wb-rm-line {
  /* v126.49：绝对定位画线（节点 position:relative）——left:50% + width:100% 恰好从本步圆心
     横向撑满到下一步圆心；top = 圆心 - 1px（2px 高度像素级居中对齐圆心） */
  position: absolute; top: 16px; left: 50%; width: 100%; height: 2px;
  background: #E5E7EB; z-index: 1; /* 线 z=1 在白卡片之上、圆点（z=2）之下：两端收进圆点内，中段完全可见 */
}
/* v126.49：已完成(done)或当前(current)节点后面的连接线统一绿色（#10B981 = var(--wb-ok)）——
   修复「当前步」连线落入近乎不可见的浅灰导致两段绿线之间视觉断层（用户报：第2步→第3步绿线消失） */
.wb-rm-step.done .wb-rm-line,
.wb-rm-step.current .wb-rm-line { background: var(--wb-ok); }
.wb-rm-step:last-child .wb-rm-line { display: none; }

/* ---------- 6. 第二行：KPI ---------- */
.wb-greeting {
  font-size: 15px; font-weight: 500; color: var(--wb-body);
  padding: 2px 2px 0;
}
.wb-greeting b { color: var(--wb-title); font-weight: 700; }
/* v126.32：KPI 卡片行相关样式已随 kpiHTML 删除彻底移除（v126.31 下线 DOM，v126.32 清理死规则） */

/* ---------- 7. 第三行：流水线 + AI 诊断 ---------- */
.wb-pipe { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
@media (max-width: 900px) { .wb-pipe { grid-template-columns: 1fr; } }
.wb-pipe-col {
  background: #FBFCFE; border: 1px solid var(--wb-line);
  border-radius: 10px; padding: 12px; min-height: 168px;
}
.wb-pipe-col-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.wb-pipe-name { font-size: 14px; font-weight: 600; color: var(--wb-title); display: flex; align-items: center; gap: 6px; }
.wb-pipe-count { font-size: 13px; font-weight: 600; color: var(--wb-aux); }
.wb-pipe-item {
  background: #fff; border: 1px solid var(--wb-line); border-radius: 10px;
  padding: 10px; margin-bottom: 8px; cursor: pointer;
  transition: border-color .16s ease, box-shadow .16s ease;
}
.wb-pipe-item:hover { border-color: rgba(123, 92, 255, .45); box-shadow: 0 6px 16px rgba(123, 92, 255, .12); }
.wb-pipe-company { display: flex; align-items: center; gap: 8px; }
.wb-logo {
  width: 26px; height: 26px; border-radius: 7px; flex: 0 0 26px;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 700; color: #fff;
}
.wb-pipe-cname { font-size: 14px; font-weight: 600; color: var(--wb-title); }
.wb-pipe-job { font-size: 13px; font-weight: 500; color: var(--wb-body); margin-top: 4px; }
.wb-pipe-time { font-size: 13px; font-weight: 500; color: var(--wb-aux); margin-top: 4px; }
.wb-pipe-empty {
  border: 1px dashed #D5D9E2; border-radius: 10px; padding: 18px 10px;
  text-align: center; font-size: 13px; font-weight: 500; color: var(--wb-aux);
  cursor: pointer; background: #fff;
}
.wb-pipe-empty:hover { border-color: var(--wb-brand); color: #5B3FE0; }

.wb-diag { display: flex; flex-direction: column; gap: 10px; }
.wb-diag-item {
  border: 1px solid var(--wb-line); border-radius: 10px; padding: 12px;
  display: flex; gap: 10px; align-items: flex-start;
}
.wb-diag-item.red { background: var(--wb-danger-soft); border-color: #F8CFC8; }
.wb-diag-item.yellow { background: var(--wb-warn-soft); border-color: #FAE3B8; }
.wb-diag-item.green { background: var(--wb-ok-soft); border-color: #B7E9D5; }
.wb-diag-dot { width: 9px; height: 9px; border-radius: 50%; margin-top: 6px; flex: 0 0 9px; }
.wb-diag-item.red .wb-diag-dot { background: var(--wb-danger); box-shadow: 0 0 0 3px rgba(240, 87, 62, .18); }
.wb-diag-item.yellow .wb-diag-dot { background: var(--wb-warn); box-shadow: 0 0 0 3px rgba(245, 158, 11, .18); }
.wb-diag-item.green .wb-diag-dot { background: var(--wb-ok); box-shadow: 0 0 0 3px rgba(16, 185, 129, .18); }
.wb-diag-text { flex: 1 1 auto; font-size: 14px; color: var(--wb-body); }
.wb-diag-text b { color: var(--wb-title); font-weight: 600; }
.wb-diag-btn {
  margin-top: 8px; height: 30px; padding: 0 12px; border-radius: 8px; border: 0;
  background: var(--wb-brand); color: #fff; font-size: 13px; font-weight: 600;
  cursor: pointer; font-family: var(--wb-font);
}
.wb-diag-btn.ghost { background: #fff; color: #5B3FE0; border: 1px solid var(--wb-brand); }
.wb-diag-love {
  margin-top: 4px; padding: 12px; border-radius: 10px;
  background: linear-gradient(135deg, #F4F1FF, #EEF3FF);
  font-size: 14px; color: #4B5563; line-height: 1.7;
}

/* ---------- 8. 第四行：图表 ---------- */
/* v83：.wb-chart 用作趋势图占位容器，SVG 按实测宽度 1:1 渲染（文字清晰不发糊） */
.wb-chart { width: 100%; height: 232px; display: block; overflow: hidden; }
.wb-chart > svg { display: block; }
.wb-legend { display: flex; gap: 14px; margin-top: 8px; }
.wb-legend span { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 500; color: var(--wb-aux); }
.wb-legend i { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
.wb-dist { display: flex; flex-direction: column; gap: 12px; }
.wb-dist-row { font-size: 14px; }
.wb-dist-top { display: flex; justify-content: space-between; margin-bottom: 6px; }
.wb-dist-name { font-weight: 500; color: var(--wb-body); }
.wb-dist-val { font-weight: 600; color: var(--wb-title); font-variant-numeric: tabular-nums; letter-spacing: -0.02em; }
.wb-dist-bar { height: 10px; border-radius: 999px; background: #F3F4F6; overflow: hidden; }
.wb-dist-bar > i { display: block; height: 100%; border-radius: 999px; }

/* ---------- 9. 第五行：明细表 ---------- */
.wb-table-wrap { overflow-x: auto; }
.wb-table { width: 100%; border-collapse: collapse; min-width: 720px; }
.wb-table th {
  text-align: left; font-size: 13px; font-weight: 600; color: var(--wb-aux);
  padding: 10px 12px; border-bottom: 1px solid var(--wb-line); white-space: nowrap;
}
.wb-table td {
  padding: 14px 12px; border-bottom: 1px solid #F1F2F6;
  font-size: 14px; color: var(--wb-body); vertical-align: middle;
}
.wb-table tbody tr:hover td { background: #FAFAFF; }
.wb-table .c-company { font-weight: 600; color: var(--wb-title); }
.wb-tag {
  display: inline-flex; align-items: center; height: 26px; padding: 0 10px;
  border-radius: 999px; font-size: 13px; font-weight: 600;
}
.wb-tag.blue { background: #EAF1FF; color: #2C54D6; }
.wb-tag.green { background: var(--wb-ok-soft); color: #067A57; }
.wb-tag.orange { background: var(--wb-warn-soft); color: #9A6206; }
.wb-tag.purple { background: var(--wb-brand-soft); color: #5B3FE0; }
.wb-tag.gray { background: #F3F4F6; color: #4B5563; }
.wb-mini-btn {
  height: 30px; padding: 0 12px; border-radius: 8px; cursor: pointer;
  border: 1px solid var(--wb-line); background: #fff; color: var(--wb-body);
  font-size: 13px; font-weight: 600; font-family: var(--wb-font); margin-right: 8px;
}
.wb-mini-btn.primary { border-color: transparent; background: var(--wb-brand); color: #fff; }
.wb-mini-btn:hover { border-color: var(--wb-brand); color: #5B3FE0; }
.wb-mini-btn.primary:hover { color: #fff; }

/* ---------- 10. 骨架屏 / 空状态 / 渐显 ---------- */
.wb-skel {
  background: linear-gradient(90deg, #EEF0F4 25%, #F6F7FA 37%, #EEF0F4 63%);
  background-size: 400% 100%;
  animation: wb-shimmer 1.3s ease-in-out infinite;
  border-radius: 8px;
}
@keyframes wb-shimmer { 0% { background-position: 100% 50%; } 100% { background-position: 0 50%; } }
.wb-fade { animation: wb-fade .38s ease-out both; }
@keyframes wb-fade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

.wb-empty { text-align: center; padding: 22px 12px; }
.wb-empty-art { width: 132px; height: 96px; margin: 0 auto 12px; display: block; }
.wb-empty-title { font-size: 15px; font-weight: 600; color: var(--wb-title); }
.wb-empty-desc { font-size: 13px; font-weight: 500; color: var(--wb-aux); margin-top: 4px; }
.wb-empty-btn {
  margin-top: 12px; height: 34px; padding: 0 16px; border-radius: 999px; border: 0;
  background: linear-gradient(135deg, #7B5CFF, #4F6BFF); color: #fff;
  font-size: 13px; font-weight: 600; cursor: pointer; font-family: var(--wb-font);
  box-shadow: 0 6px 18px rgba(123, 92, 255, .28);
}

/* ---------- 11. 悬浮 AI 伙伴 ---------- */
.wb-fab {
  position: fixed; right: 26px; bottom: 26px; z-index: 60;
  width: 58px; height: 58px; border-radius: 50%; border: 0; cursor: pointer;
  background: linear-gradient(135deg, #8A6CFF, #4F6BFF);
  color: #fff; font-size: 22px;
  box-shadow: 0 10px 28px rgba(123, 92, 255, .45), 0 0 0 6px rgba(123, 92, 255, .10);
  animation: wb-float 3.4s ease-in-out infinite;
}
@keyframes wb-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }
.wb-ai-panel {
  position: fixed; right: 26px; bottom: 96px; z-index: 61;
  width: 320px; max-width: calc(100vw - 40px);
  border-radius: 14px; border: 1px solid rgba(255, 255, 255, .6);
  background: rgba(255, 255, 255, .7);
  -webkit-backdrop-filter: blur(12px) saturate(160%);
  backdrop-filter: blur(12px) saturate(160%);
  box-shadow: 0 18px 48px rgba(16, 24, 40, .16);
  padding: 16px; display: none;
}
.wb-ai-panel.show { display: block; animation: wb-fade .22s ease-out both; }
.wb-ai-head { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.wb-ai-face {
  width: 34px; height: 34px; border-radius: 50%;
  background: linear-gradient(135deg, #7B5CFF, #4F6BFF); color: #fff;
  display: flex; align-items: center; justify-content: center; font-size: 16px;
}
.wb-ai-name { font-size: 15px; font-weight: 700; color: var(--wb-title); }
.wb-ai-status { font-size: 13px; font-weight: 500; color: var(--wb-ok); }
.wb-ai-msg {
  background: #fff; border: 1px solid var(--wb-line); border-radius: 10px;
  padding: 12px; font-size: 14px; color: var(--wb-body); line-height: 1.7;
}
.wb-ai-quick { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.wb-ai-quick button {
  height: 32px; padding: 0 12px; border-radius: 999px; cursor: pointer;
  border: 1px solid #DDD9FF; background: #F4F1FF; color: #5B3FE0;
  font-size: 13px; font-weight: 600; font-family: var(--wb-font);
}
.wb-ai-quick button:hover { background: #E9E3FF; }

/* ---------- 12. 移动端底部 Tab ---------- */
.wb-mtab {
  display: none;
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 70;
  height: 58px; background: rgba(255, 255, 255, .92);
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
  border-top: 1px solid var(--wb-line);
}
.wb-mtab .mt {
  flex: 1 1 0; display: flex; flex-direction: column; align-items: center;
  justify-content: center; gap: 2px; cursor: pointer; color: var(--wb-aux);
  font-size: 13px; font-weight: 500;
}
.wb-mtab .mt.active { color: var(--wb-brand); }
.wb-mtab .mt i { font-style: normal; font-size: 18px; }

/* ---------- 13. 响应式 ---------- */
/* v197：断点 768→1023 —— 侧栏隐藏与底部 Tab 导航（.mobile-tabbar，见 style.css）同断点，
   杜绝 768~1023 平板区间「侧栏已无、底部导航也未出」的导航死区。 */
@media (max-width: 1023px) {
  .wb-side { display: none; }
  .wb-main { margin-left: 0; }
  .wb-head { padding: 10px 14px; gap: 10px; }
  .wb-crumb { display: none; }
  .wb-username { display: none; }
  .wb-body { padding: 14px 14px 24px; gap: 14px; } /* 底部让位交给 body 全局 padding-bottom:60px（tabbar） */
  .wb-card { padding: 14px; }
  .wb-roadmap { flex-direction: column; align-items: stretch; gap: 4px; padding: 6px 0; }
  .wb-rm-step { display: flex; align-items: center; gap: 12px; text-align: left; padding: 8px 4px; }
  .wb-rm-dot { margin: 0; }
  .wb-rm-line { display: none; }
  .wb-mtab { display: flex; }
}

/* ---------- 工具页模式（wb-tool）：保留左侧栏，右侧仅显示当前工具 ---------- */
body.wb-tool #page-workbench .wb-main { display: none !important; }
body.wb-tool #page-workbench .wb-fab,
body.wb-tool #page-workbench .wb-ai-panel { display: none !important; }
body.wb-tool #page-tool { display: block; margin-left: 232px; min-height: 100vh; }
body.wb-tool #page-workbench { display: block; }
/* v80：修复「工具页到底后还能继续下滑一大截」——
   wb-tool 模式下 #page-workbench 仍保留 min-height:100vh 的空壳（含 .wb-shell），
   会在工具页下方多出一整屏灰色空白。这里把空壳高度压为 0。
   左侧栏是 position:fixed，不受 overflow:hidden 裁剪，依然正常显示。 */
body.wb-tool #page-workbench { min-height: 0 !important; height: 0 !important; overflow: hidden !important; background: transparent !important; }
body.wb-tool #page-workbench .wb-shell { min-height: 0 !important; }

/* v80：驾驶舱头部「登录 / 注册」按钮（未登录时显示，替代被隐藏的站点 navbar 入口） */
.wb-login-btn {
  height: 36px; padding: 0 18px; border-radius: 999px; border: 0; cursor: pointer;
  background: linear-gradient(135deg, #7B5CFF, #4F6BFF); color: #fff;
  font-size: 14px; font-weight: 600; font-family: var(--wb-font);
  letter-spacing: .01em; white-space: nowrap;
  box-shadow: 0 4px 14px rgba(123, 92, 255, .28);
  transition: filter .16s ease, transform .16s ease;
}
.wb-login-btn:hover { filter: brightness(1.07); transform: translateY(-1px); }
.wb-login-btn:active { transform: none; }
/* 高亮项：加粗高亮（工作台总览 / 当前工具），字号统一 15px */
.wb-side-item.active {
  font-weight: 700;
  font-size: 15px;
  letter-spacing: .01em;
}
.wb-side-item.active .ico { font-size: 15px; }
/* v197：与侧栏隐藏同断点（≤1023px），否则 768~1023 会出现「工具页左边距 232px 但侧栏已隐藏」的白边 */
@media (max-width: 1023px) {
  body.wb-tool #page-tool { margin-left: 0; }
}

/* ================= v84：AI求职画像页（career-v3）——与驾驶舱统一的宽幅框架 ================= */
/* 工具页继承驾驶舱字体与底色 */
body.wb-tool #page-tool {
  font-family: var(--wb-font);
  background: var(--wb-bg);
  color: var(--wb-body);
  -webkit-font-smoothing: antialiased;
}
/* v105：画像页排版总规范（B端 SaaS 级）——宽幅 px-8 py-6 + 全局字体栈 */
.career-v3 {
  max-width: none;
  padding: 24px 32px 64px;   /* py-6 px-8 */
  font-family: var(--font-sans, Inter), -apple-system, 'HarmonyOS Sans SC', 'MiSans', 'PingFang SC', sans-serif;
  font-size: 14px; line-height: 1.6; color: #4B5563;
}
.career-v3 .cv3-head { margin: 0 -32px 4px; }
.career-v3 .wb-head { position: sticky; }
.career-v3 .cv3-fadein { animation: cv3-page-in .5s ease-out both; }
@keyframes cv3-page-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

/* v105：内联 SVG 图标对齐 */
.career-v3 .cv-ico { flex: 0 0 auto; vertical-align: -3px; }
.career-v3 .cv-ico-brand { color: #7C3AED; vertical-align: -4px; margin-right: 2px; }
.career-v3 .cv-ico-lg { color: #7C3AED; }

/* 顶部操作栏：左标题+标签 | 右操作按钮 */
.career-actionbar {
  display: flex; align-items: center; justify-content: space-between;
  gap: 16px; flex-wrap: wrap;
  padding: 18px 0 16px;
}
.career-actionbar .ca-left { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
/* v84：试用/会员状态标签（独立 class，避免与 membership 的 syncPageBadge 冲突） */
.ca-trial {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 12px; border-radius: 999px;
  background: #EEF2FF; color: #4F6BFF; border: 1px solid #DCE3FF;
  font-size: 13px; font-weight: 600;
  font-variant-numeric: tabular-nums; white-space: nowrap;
}
.ca-trial.unlocked { background: #E9F9F0; color: #0E9F6E; border-color: #C6F0DC; }
.ca-title {
  margin: 0; font-size: 20px; font-weight: 700;   /* v105：主标题 20px/700/#111827 */
  color: #111827; letter-spacing: -0.01em;
}
.career-actionbar .mbs-page-status { margin-left: 0; }
.ca-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.ca-btn {
  height: 38px; padding: 0 18px; border-radius: 10px;
  font-size: 14px; font-weight: 600; font-family: var(--wb-font);
  cursor: pointer; white-space: nowrap;
  transition: filter .16s ease, transform .16s ease, box-shadow .16s ease;
}
.ca-btn:active { transform: none; }
.ca-btn.primary {
  background: linear-gradient(135deg, #8B5CF6, #6D28D9); color: #fff; border: 0;
  box-shadow: 0 4px 14px rgba(139, 92, 246, .28);
}
.ca-btn.primary:hover { filter: brightness(1.07); }
.ca-btn.outline { background: #fff; color: #7C3AED; border: 1.5px solid #8B5CF6; }
.ca-btn.outline:hover { background: #F6F3FF; }
.ca-btn:disabled { opacity: .6; cursor: default; }

/* 卡片：白底 / 12px 圆角 / 极细边框 #E5E7EB / 极轻柔阴影（v105 规范）+ 悬停微浮起 */
.cv3-card {
  background: var(--wb-card);
  border: 1px solid #E5E7EB;
  border-radius: 12px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.03);
  padding: 20px 22px;
  transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease;
}
.career-v3 .cv3-card:hover {
  transform: translateY(-2px);
  border-color: #DDD6FE;
  box-shadow: 0 10px 28px rgba(109, 40, 217, 0.08);
}
.cv3-card-title {
  font-size: 17px; font-weight: 600; color: #1F2937;   /* v105：卡片标题 17px/600/#1F2937 */
  display: flex; align-items: center; gap: 8px;
}
.cv3-title-tag { font-size: 12px; font-weight: 500; color: #6B7280; margin-left: 2px; }
.cv3-card-sub { font-size: 12px; font-weight: 500; color: #6B7280; margin-top: 4px; line-height: 1.6; }

/* 第一行：左 2/3 雷达+得分 | 右 1/3 岗位+性格 */
.career-grid-main {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 18px;
  align-items: stretch;
  margin-bottom: 18px;
}
.career-radar-split {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 16px; align-items: center;
  margin-top: 14px;
}
.career-v3 .career-radar-wrap { width: 100%; max-width: 420px; margin: 0 auto; }
.career-v3 .career-radar-wrap svg { width: 100%; height: auto; display: block; }

/* 维度得分横向条形（等宽数字） */
.career-v3 .career-bars { width: 100%; }
.career-v3 .career-bar-row {
  display: grid; grid-template-columns: 76px 1fr 58px;
  align-items: center; gap: 10px; padding: 8px 0;
}
.career-v3 .career-bar-label { font-size: 13px; color: var(--wb-body); white-space: nowrap; }
.career-v3 .career-bar-track {
  height: 10px; border-radius: 999px; background: #F1F2F7; overflow: hidden;
}
.career-v3 .career-bar-fill { height: 100%; border-radius: 999px; }
.career-v3 .career-bar-val {
  font-size: 13px; font-weight: 600; color: var(--wb-title);
  font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap;
}
.career-v3 .career-bar-level { margin-left: 5px; font-size: 12px; font-weight: 500; color: var(--wb-aux); }

/* 右侧卡片小节标题 */
.cv3-sub {
  font-size: 13px; font-weight: 600; color: var(--wb-aux);
  letter-spacing: .02em; margin: 16px 0 9px;
}
.cv3-sub:first-of-type { margin-top: 14px; }

/* 适配岗位标签（v105：彩色胶囊标签云，五色轮换） */
.career-v3 .career-match-tags { display: flex; flex-wrap: wrap; gap: 8px; }
.career-v3 .career-match-tag {
  border-radius: 999px; padding: 5px 14px;
  font-size: 13px; font-weight: 500; line-height: 1.4;
  transition: transform .18s ease, box-shadow .18s ease;
}
.career-v3 .career-match-tag:hover { transform: translateY(-1px); }
.career-v3 .career-match-tag.tc0 { background: #F5F3FF; color: #6D28D9; border: 1px solid #DDD6FE; }
.career-v3 .career-match-tag.tc1 { background: #EFF6FF; color: #1D4ED8; border: 1px solid #BFDBFE; }
.career-v3 .career-match-tag.tc2 { background: #ECFDF5; color: #047857; border: 1px solid #A7F3D0; }
.career-v3 .career-match-tag.tc3 { background: #FFF7ED; color: #C2410C; border: 1px solid #FED7AA; }
.career-v3 .career-match-tag.tc4 { background: #FDF2F8; color: #BE185D; border: 1px solid #FBCFE8; }
.cv3-jobs-btn {
  width: 100%; margin-top: 12px; height: 38px;
  border: 0; border-radius: 10px; cursor: pointer;
  background: linear-gradient(135deg, #8B5CF6, #6D28D9); color: #fff;
  font-size: 14px; font-weight: 600; font-family: var(--wb-font);
  box-shadow: 0 4px 14px rgba(139, 92, 246, .24);
  transition: filter .16s ease;
}
.cv3-jobs-btn:hover { filter: brightness(1.07); }

/* 大五性格：两列小方块（v105：中间浅灰细线分隔） */
.big5-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 18px; position: relative; }
.big5-grid::before {
  content: ''; position: absolute; left: 50%; top: 6px; bottom: 6px;
  width: 1px; background: #E5E7EB;
}
.big5-cell {
  background: transparent; border: none; border-radius: 8px;
  padding: 8px 10px;
}
.big5-cell .bn {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  font-size: 14px; font-weight: 600; color: var(--wb-title);
}
.big5-cell .bl {
  font-size: 12px; font-weight: 600; line-height: 18px;
  border-radius: 999px; padding: 0 8px; white-space: nowrap;
}
.big5-cell .bl.hi  { background: #F1EDFF; color: #7C3AED; }
.big5-cell .bl.mid { background: #EEF2FF; color: #4F6BFF; }
.big5-cell .bl.lo  { background: #F3F4F6; color: #6B7280; }
.big5-cell .bd { font-size: 13px; color: var(--wb-aux); margin-top: 4px; }

/* AI 深度解读卡片 */
.cv3-ai-card { margin-bottom: 18px; }
.cv3-ai-content { margin-top: 14px; }
.cv3-ai-placeholder {
  background: #F8F7FF; border: 1px dashed #DDD6FE; border-radius: 10px;
  padding: 18px 20px; font-size: 14px; color: #7C6FD0; line-height: 1.7;
}
.cv3-ai-btn {
  width: 100%; margin-top: 14px; height: 42px;
  border: 0; border-radius: 10px; cursor: pointer;
  background: linear-gradient(135deg, #8B5CF6, #6D28D9); color: #fff;
  font-size: 15px; font-weight: 600; font-family: var(--wb-font);
  box-shadow: 0 4px 14px rgba(139, 92, 246, .28);
  transition: filter .16s ease;
}
.cv3-ai-btn:hover { filter: brightness(1.07); }
.cv3-ai-btn:disabled { opacity: .65; cursor: default; }

/* 免责声明（居中） */
.career-disclaimer-center {
  text-align: center; font-size: 13px; color: #9CA3AF;
  line-height: 1.8; padding: 20px 32px 0;
}

/* ===================== v89：个人中心弹窗重构 ===================== */
.profile-card {
  background: #fff; border: 1px solid #E5E7EB; border-radius: 12px;
  box-shadow: 0 10px 40px rgba(17, 24, 39, .12); width: 344px; padding: 22px 20px 20px;
  font-family: var(--font-sans, Inter), 'HarmonyOS Sans SC', 'MiSans', -apple-system, 'PingFang SC', 'Microsoft YaHei', sans-serif;
}
.profile-card .modal-title { font-size: 17px; font-weight: 600; color: #111827; margin-bottom: 16px; }
/* 头像：纯渐变底 + 无灰描边；相机角标右下角 */
.pf-avatar-wrap { position: relative; width: 56px; height: 56px; flex-shrink: 0; cursor: pointer; }
.profile-card .profile-avatar, .pf-avatar-letter {
  width: 56px; height: 56px; border-radius: 50%; border: none;
  display: flex; align-items: center; justify-content: center;
}
.profile-card .profile-avatar { object-fit: cover; background: #EEF0F6; }
.pf-avatar-letter { color: #fff; font-size: 22px; font-weight: 700; user-select: none; }
.pf-cam {
  position: absolute; right: -2px; bottom: -2px; width: 20px; height: 20px;
  border-radius: 50%; background: #fff; border: 1px solid #E5E7EB;
  box-shadow: 0 1px 4px rgba(17, 24, 39, .15); font-size: 10px;
  display: flex; align-items: center; justify-content: center;
}
.pf-id { min-width: 0; }
.pf-name-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.profile-card .profile-nickname {
  font-size: 17px; font-weight: 600; color: #111827;
  max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.pf-edit { font-size: 13px; color: #9CA3AF; cursor: pointer; display: inline-flex; align-items: center; gap: 3px; transition: color .15s ease; white-space: nowrap; }
.pf-edit em { font-style: normal; font-size: 11px; }
.pf-edit:hover { color: #7C3AED; }
.profile-card .profile-openid { font-size: 13px; color: #9CA3AF; margin-top: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.profile-card .profile-head { display: flex; align-items: center; gap: 14px; padding: 14px 16px; background: #F8F9FC; border-radius: 12px; margin-bottom: 14px; }
/* 手机绑定：整块浅灰卡片，hover 微变 */
.pf-bind-card {
  display: flex; align-items: center; justify-content: space-between;
  padding: 13px 14px; background: #F8F9FC; border: 1px solid transparent;
  border-radius: 10px; cursor: pointer; transition: background .16s ease; margin-bottom: 4px;
}
.pf-bind-card:hover { background: #F1F3F9; }
.pf-bind-left { display: flex; align-items: center; gap: 9px; font-size: 14px; color: #374151; font-weight: 500; }
.pf-bind-ico { font-size: 16px; }
.pf-bind-action { font-size: 13px; color: #2C54D6; font-weight: 600; white-space: nowrap; }
/* 按钮层级：会员=品牌紫渐变主按钮带发光；退出=白底灰边次级 */
.pf-main-btn {
  background: linear-gradient(135deg, #8B5CF6 0%, #6D28D9 100%); border: none; color: #fff;
  height: 46px; border-radius: 999px; font-size: 15px; font-weight: 600;
  box-shadow: 0 6px 20px rgba(124, 58, 237, .35); cursor: pointer;
  transition: filter .16s ease, transform .1s ease;
}
.pf-main-btn:hover { filter: brightness(1.06); }
.pf-main-btn:active { transform: scale(.985); }
.pf-logout-btn {
  background: #fff; border: 1px solid #E5E7EB; color: #6B7280;
  height: 44px; border-radius: 999px; font-size: 14px; font-weight: 500;
  cursor: pointer; transition: background .16s ease; margin-top: 10px;
}
.pf-logout-btn:hover { background: #F9FAFB; }
#phone-bind-box .input { text-align: left; }
/* ===================== v93：个人中心 · 激活码卡片 ===================== */
.pf-act-card {
  margin-top: 16px; padding: 14px 14px 12px;
  background: #F9FAFB; border: 1px solid #E5E7EB; border-radius: 12px;
}
.pf-act-title { font-size: 13px; font-weight: 500; color: #6B7280; margin-bottom: 10px; }
.pf-act-row { display: flex; align-items: stretch; gap: 8px; }
.pf-act-input {
  flex: 1; min-width: 0; height: 42px; padding: 0 12px;
  border: 1px solid #E5E7EB; border-radius: 10px; background: #fff;
  font-size: 14px; color: #111827; font-family: inherit; outline: none;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.pf-act-input::placeholder { color: #9CA3AF; }
.pf-act-input:focus { border-color: #8B5CF6; box-shadow: 0 0 0 3px rgba(139, 92, 246, .14); }
.pf-act-btn {
  width: 100px; flex-shrink: 0; height: 42px; border: none; border-radius: 10px;
  background: linear-gradient(135deg, #8B5CF6 0%, #6D28D9 100%); color: #fff;
  font-size: 14px; font-weight: 600; font-family: inherit; cursor: pointer;
  transition: filter .16s ease, transform .1s ease;
}
.pf-act-btn:hover { filter: brightness(1.06); }
.pf-act-btn:active { transform: scale(.98); }
.pf-act-btn:disabled { opacity: .6; cursor: not-allowed; transform: none; }
.pf-act-msg { display: none; font-size: 13px; line-height: 1.5; margin-top: 8px; word-break: break-all; }
.pf-act-msg.err { display: block; color: #DC2626; }
.pf-act-msg.ok { display: block; color: #059669; }
.pf-act-hint { font-size: 12px; color: #9CA3AF; margin-top: 8px; line-height: 1.6; }
/* 会员状态徽标（昵称旁，v93 无刷新更新） */
.pf-vip-chip {
  font-size: 12px; font-weight: 600; padding: 2px 9px; border-radius: 999px;
  white-space: nowrap; display: inline-flex; align-items: center; gap: 3px; line-height: 1.5;
}
.pf-vip-chip.on { background: linear-gradient(135deg, #8B5CF6 0%, #6D28D9 100%); color: #fff; }
.pf-vip-chip.off { background: #F3F4F6; color: #9CA3AF; }
/* v94：个人中心反滥用威慑提示（v95：压缩为单行，禁止折行） */
.pf-warn {
  display: flex; align-items: center; justify-content: center;
  margin-top: 10px; font-size: 12px; color: #92610B; line-height: 1.6; text-align: center;
  white-space: nowrap; letter-spacing: -.5px;
}
.pf-warn-ico { font-size: 12px; margin-right: 2px; }
/* 移动端（<640px）：输入框在上、按钮在下（按钮通栏） */
@media (max-width: 639px) {
  .pf-act-card { padding: 14px 12px 12px; }
  .pf-act-row { flex-direction: column; gap: 10px; }
  .pf-act-btn { width: 100%; }
}
/* 轻量 Toast */
#pf-toast {
  position: fixed; left: 50%; bottom: 56px; transform: translateX(-50%) translateY(10px);
  background: rgba(17, 24, 39, .88); color: #fff; font-size: 13px;
  padding: 9px 16px; border-radius: 8px; opacity: 0; pointer-events: none;
  transition: all .25s ease; z-index: 99999; max-width: 78vw; text-align: center;
}
#pf-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }

/* ===================== v88：侧栏底部紧凑额度（v126.16 会员状态胶囊已删除，样式随之清理） ===================== */

/* ===================== v88：画像测评页两栏工作台布局 ===================== */
.career-dash {
  display: grid; grid-template-columns: 3fr 1fr; gap: 16px;
  align-items: start; max-width: 1080px; margin: 0 auto;
}
/* 问卷卡：撑满左栏，去旧版居中限宽 */
.career-quiz-v3 { max-width: none; margin: 0; padding: 22px 22px 18px; }
/* 五选项改两列网格：左3右2，紧凑圆点单选 */
.career-likert-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 9px;
  margin-bottom: 16px;
}
.career-likert-grid .career-likert-opt {
  padding: 10px 13px; font-size: 14px; border-radius: 10px;
  border-width: 1px; gap: 9px;
}
.career-likert-grid .career-likert-opt:hover { transform: none; background: #F6F5FF; }
.career-likert-grid .career-likert-dot { width: 13px; height: 13px; }
/* 下一题：实心高对比品牌紫 */
.career-quiz-v3 .career-q-nav .btn { height: 40px; padding: 0 22px; font-size: 14px; border-radius: 10px; }
.career-quiz-v3 .career-q-nav .btn-primary {
  background: #6D28D9; color: #fff; border: none;
  box-shadow: 0 5px 14px rgba(109, 40, 217, .32);
}
.career-quiz-v3 .career-q-nav .btn-primary:hover:not(:disabled) { background: #5B21B6; }
.career-quiz-v3 .career-q-nav .btn-primary:disabled {
  background: #E3DCFA; color: #fff; box-shadow: none; cursor: not-allowed;
}
/* 免责声明：卡片内底部，小字灰色 */
.career-quiz-note {
  margin-top: 14px; padding-top: 10px; border-top: 1px dashed #E5E7EB;
  font-size: 12px; color: #9CA3AF; line-height: 1.6;
}
/* 右侧面板 */
.career-dash-side { display: flex; flex-direction: column; gap: 12px; position: sticky; top: 12px; }
.cv3-panel {
  background: #fff; border: 1px solid #E5E7EB; border-radius: 12px;
  padding: 16px 15px; box-shadow: 0 1px 3px rgba(17, 24, 39, .05);
}
.cv3-panel-title { font-size: 14px; font-weight: 600; color: #111827; margin-bottom: 12px; }
.cv3-ring-wrap { position: relative; width: 128px; margin: 2px auto 12px; }
.cv3-ring { width: 128px; height: 128px; display: block; transform: rotate(-90deg); }
.cv3-ring-bg { fill: none; stroke: #EEF0F6; stroke-width: 10; }
.cv3-ring-arc {
  fill: none; stroke: #7C3AED; stroke-width: 10; stroke-linecap: round;
  stroke-dasharray: 326.7; stroke-dashoffset: 326.7;
  transition: stroke-dashoffset .45s ease;
}
.cv3-ring-center {
  position: absolute; inset: 0; display: flex; flex-direction: column;
  align-items: center; justify-content: center; line-height: 1.15;
}
.cv3-ring-center b { font-size: 26px; color: #6D28D9; font-variant-numeric: tabular-nums; }
.cv3-ring-center span { font-size: 12px; color: #9CA3AF; }
.cv3-panel-row { font-size: 13px; color: #374151; margin-top: 8px; }
.cv3-panel-row b { color: #6D28D9; }
.cv3-panel-row.muted { color: #8A8FA3; font-size: 12px; }
.cv3-tips { margin: 0; padding-left: 18px; }
.cv3-tips li { font-size: 12.5px; color: #6B7280; line-height: 1.9; }
@media (max-width: 1000px) {
  .career-dash { grid-template-columns: 1fr; }
  .career-dash-side { position: static; flex-direction: row; }
  .career-dash-side .cv3-panel { flex: 1; }
}
@media (max-width: 640px) {
  .career-likert-grid { grid-template-columns: 1fr; }
  .career-dash-side { flex-direction: column; }
}

/* 响应式 */
@media (max-width: 1100px) {
  .career-grid-main { grid-template-columns: 1fr; }
  .career-radar-split { grid-template-columns: 1fr; }
}
@media (max-width: 768px) {
  .career-v3 { padding: 0 14px 48px; }
  .career-v3 .cv3-head { margin: 0 -14px 4px; }
  .big5-grid { grid-template-columns: 1fr; }
}

/* ================= v86：侧栏五步折叠子菜单 + 右区工具全览联动 ================= */
/* 步骤子分组（折叠头 + 平滑展开体） */
.wb-side-sgroup { margin: 2px 0; }
.wb-side-shead {
  display: flex; align-items: center; gap: 6px;
  min-height: 40px; padding: 0 10px; border-radius: 10px;
  font-size: 14px; font-weight: 600; color: #C7CBD8;
  cursor: pointer; user-select: none;
  transition: background .2s ease, color .2s ease;
}
.wb-side-shead:hover { background: rgba(139, 92, 246, .14); color: #fff; }
.wb-side-shead.open { color: #E5E7EB; }
.wb-ss-arrow {
  margin-left: auto; font-size: 12px; opacity: .7;
  transition: transform .25s ease; line-height: 1;
}
.wb-ss-arrow.open { transform: rotate(180deg); }
.wb-side-sbody {
  display: grid; grid-template-rows: 0fr;
  transition: grid-template-rows .26s cubic-bezier(0.4, 0, 0.2, 1);
}
.wb-side-sbody > .wb-side-sbody-in { overflow: hidden; min-height: 0; }
.wb-side-sbody.open { grid-template-rows: 1fr; }
.wb-side-sbody .wb-side-item {
  min-height: 38px; font-size: 14px; font-weight: 500;
  padding: 0 10px 0 20px; color: #B9BECB;
}
.wb-side-sbody .wb-side-item:hover { color: #fff; }
.wb-side-sbody .wb-side-item.active { color: #fff; }
/* 「即将上线」灰色标签（不可点击项） */
.wb-side-soon {
  margin-left: auto; flex: 0 0 auto;
  font-size: 11px; font-weight: 600; line-height: 18px;
  color: #9CA3AF; background: rgba(255, 255, 255, .08);
  border-radius: 999px; padding: 0 8px; white-space: nowrap;
}
.wb-side-disabled { opacity: .6; cursor: not-allowed; }
.wb-side-disabled:hover { background: transparent !important; color: #D1D5DB !important; }
/* ================= v90：状态点（重构） =================
   子级菜单右侧唯一指示：紫=当前浏览页（呼吸发光），绿=有可用额度/会员，橙红=额度用完；
   dot-off=占位隐藏（visibility，保持右侧对齐不跳动）；父级步骤头绝不渲染点。 */
.wb-side-dot {
  margin-left: auto; flex: 0 0 6px;
  display: inline-block;
  width: 6px; height: 6px; border-radius: 50%;
  transition: background .2s ease, box-shadow .2s ease;
}
.wb-side-dot.dot-off { visibility: hidden; }
/* 当前浏览页：品牌紫发光点 + 呼吸灯 */
.wb-side-dot.on-purple {
  background: #8B5CF6;
  box-shadow: 0 0 8px #8B5CF6, 0 0 3px rgba(139, 92, 246, .9);
  animation: wb-dot-breathe 2s ease-in-out infinite;
}
@keyframes wb-dot-breathe {
  0%, 100% { box-shadow: 0 0 8px #8B5CF6, 0 0 3px rgba(139, 92, 246, .9); opacity: 1; }
  50% { box-shadow: 0 0 4px rgba(139, 92, 246, .45); opacity: .78; }
}
/* 有可用免费次数 / 会员已解锁：绿色静态点 */
.wb-side-dot.on-green { background: #10B981; box-shadow: none; }
/* 免费次数用完：橙红静态点（提示升级） */
.wb-side-dot.on-orange { background: #FB923C; box-shadow: none; }
/* 悬停/激活态不改变状态点颜色（只变背景与文字） */
.wb-side-sbody .wb-side-item { padding-left: 32px; }

/* 右区「五步求职路线 · 工具全览」 */
.wb-tools-sec { display: block; }
.wb-tools-sec-head { padding: 6px 2px 2px; }
.wb-tools-sec-head .wb-card-sub { margin-top: 2px; }
#wb-tools-sec .tool-group { scroll-margin-top: 76px; }
#wb-tools-sec .tool-card { scroll-margin-top: 96px; }
/* 锚点高亮脉冲（左侧菜单点击后定位的卡片） */
#wb-tools-sec .tool-card.wb-anchor-glow {
  border-color: #8B5CF6;
  box-shadow: 0 0 0 3px rgba(139, 92, 246, .16), 0 12px 30px rgba(139, 92, 246, .22);
  animation: wb-anchor-pulse 1.1s ease-in-out 2;
}
@keyframes wb-anchor-pulse {
  0%, 100% { transform: none; }
  50% { transform: translateY(-4px); }
}

/* ================= v91：双列卡片等高填充（修复流水线/诊断卡不等高留下的空白条） =================
   旧版 align-items:start 使同行两卡各自独立高度——诊断卡(约377px)比流水线卡(约270px)高，
   短卡下方留出一大块空白（用户圈出处）。改为等高 stretch + 内容 flex 自适应填满。 */
.wb-grid-2 { align-items: stretch; }
.wb-grid-2 > .wb-card { display: flex; flex-direction: column; }
.wb-grid-2 > .wb-card > .wb-pipe,
.wb-grid-2 > .wb-card > .wb-diag,
.wb-grid-2 > .wb-card > .wb-dist { flex: 1 1 auto; }
/* 流水线：列内纵向填充，空状态盒子垂直居中撑满 */
.wb-grid-2 .wb-pipe-col { display: flex; flex-direction: column; }
.wb-grid-2 .wb-pipe-col > .wb-pipe-empty { flex: 1 1 auto; display: flex; align-items: center; justify-content: center; }
/* 诊断卡：💛结语固定到底部，条目区自然填充 */
.wb-grid-2 .wb-diag-love { margin-top: auto; }
/* 分布卡：进度条均匀分布填满整卡高度 */
.wb-grid-2 .wb-dist { justify-content: space-evenly; }
/* 趋势卡：图例贴底，图表与图例之间不留大块空白 */
.wb-grid-2 > .wb-card > .wb-legend { margin-top: auto; }

/* ===================== v92 全站 UX/UI 升级 ===================== */
/* 右下角悬浮球彻底移除（含任何残留态） */
.wb-fab, .wb-ai-panel, body.wb-tool #page-workbench .wb-fab { display: none !important; }
/* 驾驶舱 KPI 数字规则已随 KPI 卡片行删除（v126.32） */
/* 表格：行高 56px、内边距 16px 12px、表头浅灰、日期等宽 */
.wb-table th { background: #F9FAFB; padding: 12px 16px; }
.wb-table td { padding: 16px 12px; }
.wb-table tbody tr { min-height: 56px; }
.wb-table .wb-num { font-variant-numeric: tabular-nums; }
/* 移动端 <768px：侧栏抽屉化保留，主区单列折行 */
@media (max-width: 768px) {
  .wb-grid-2 { grid-template-columns: 1fr; }
  .wb-pipe { grid-template-columns: repeat(2, 1fr); }
}
/* v92 补充：即将上线标签 12px（覆盖旧 11px） */
.wb-side-soon { font-size: 12px !important; }
/* v105 补充：画像页条形图——底槽浅灰 #F3F4F6（覆盖 v92 浅紫底），品牌紫渐变填充，数值对齐条尾 */
.career-v3 .career-bar-track { background: #F3F4F6; height: 10px; }

/* ================= v105：AI求职画像 —— 骨架屏 / 空状态 / 呼吸感细节 ================= */
/* 骨架屏：灰色占位 + 微光扫过 */
.career-v3 .cv3-skel {
  height: 14px; border-radius: 7px; margin-bottom: 12px;
  background: linear-gradient(90deg, #F3F4F6 25%, #E9EBF0 45%, #F3F4F6 65%);
  background-size: 240% 100%;
  animation: cv3-skel-shine 1.4s ease-in-out infinite;
}
.career-v3 .cv3-skel.skel-t { height: 18px; margin-bottom: 16px; }
.career-v3 .cv3-skel-card { animation: none; }
.career-v3 .cv3-skel-card:hover { transform: none; box-shadow: 0 4px 12px rgba(0,0,0,0.03); border-color: #E5E7EB; }
@keyframes cv3-skel-shine {
  0% { background-position: 120% 0; }
  100% { background-position: -120% 0; }
}

/* 零数据空状态：发光 SVG 插画 + 引导 CTA */
.career-v3 .cv3-empty {
  max-width: 560px; margin: 7vh auto 0; text-align: center;
  padding: 48px 36px 40px;
  background: #fff; border: 1px solid #E5E7EB; border-radius: 16px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.03);
}
.career-v3 .cv3-empty-art {
  width: 108px; height: 108px; margin: 0 auto 22px; border-radius: 28px;
  display: flex; align-items: center; justify-content: center;
  color: #7C3AED;
  background: radial-gradient(circle at 50% 38%, #F5F3FF 0%, #EDE9FE 100%);
  animation: cv3-empty-glow 2.6s ease-in-out infinite;
}
.career-v3 .cv3-empty-art svg { filter: drop-shadow(0 0 6px rgba(139,92,246,.55)); }
@keyframes cv3-empty-glow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(139,92,246,.28), 0 0 22px rgba(139,92,246,.18); transform: translateY(0); }
  50% { box-shadow: 0 0 0 14px rgba(139,92,246,0), 0 0 40px rgba(139,92,246,.30); transform: translateY(-3px); }
}
.career-v3 .cv3-empty-title { margin: 0 0 8px; font-size: 20px; font-weight: 700; color: #111827; }
.career-v3 .cv3-empty-copy { margin: 0 0 20px; font-size: 14px; color: #4B5563; line-height: 1.6; }
.career-v3 .cv3-empty-feats { display: flex; justify-content: center; flex-wrap: wrap; gap: 8px; margin-bottom: 24px; }
.career-v3 .cv3-empty-feats span {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 12px; font-weight: 500; color: #6B7280;
  background: #F9FAFB; border: 1px solid #E5E7EB; border-radius: 999px; padding: 4px 12px;
}
.career-v3 .cv3-empty-btn {
  display: inline-flex; align-items: center; gap: 8px;
  height: 48px; padding: 0 30px; border: 0; border-radius: 12px; cursor: pointer;
  background: linear-gradient(135deg, #8B5CF6, #6D28D9); color: #fff;
  font-size: 15px; font-weight: 700; font-family: inherit;
  box-shadow: 0 8px 22px rgba(109,40,217,.30);
  transition: transform .2s ease, box-shadow .2s ease, filter .2s ease;
}
.career-v3 .cv3-empty-btn:hover { transform: translateY(-2px); filter: brightness(1.06); box-shadow: 0 12px 30px rgba(109,40,217,.36); }
.career-v3 .cv3-empty-note { margin-top: 16px; font-size: 12px; color: #9CA3AF; }

/* 卡片内小节标题分隔（右卡：性格特质区上方细线） */
.career-v3 .cv3-sub.big5-div { border-top: 1px solid #E5E7EB; padding-top: 14px; margin-top: 16px; }

/* 关键数字（tabular-nums 防跳动） */
.career-v3 .cv3-num {
  font-variant-numeric: tabular-nums;
  font-feature-settings: 'tnum';
}
@media (max-width: 768px) {
  .career-v3 { padding: 14px 14px 56px; }
  .career-v3 .cv3-head { margin: 0 -14px 4px; }
  .big5-grid::before { display: none; }
}

/* ================= v106：画像报告 PDF / 打印 ================= */
/* Loading 转圈（导出按钮 Loading 态） */
.cv3-spin {
  display: inline-block; width: 14px; height: 14px; vertical-align: -2px;
  border: 2px solid rgba(255, 255, 255, .45);
  border-top-color: #fff; border-radius: 50%;
  animation: cv3-spin-rotate .7s linear infinite;
}
@keyframes cv3-spin-rotate { to { transform: rotate(360deg); } }

/* 打印/降级兜底：只输出报告本体，侧栏 / 顶部导航 / 按钮 / 背景一律不进纸 */
@media print {
  @page { size: A4 portrait; margin: 10mm; }
  html, body { background: #fff !important; }

  /* 站点外壳：侧栏、顶部 Header、面包屑、工作台头部、浮层 */
  .wb-side, .wb-head, .wb-head-spacer, .wb-crumb, .cv3-head,
  .cr-chat-mask, .wb-float, .wb-toast, .wb-search { display: none !important; }

  /* 页面内所有按钮与操作条 */
  button, .career-actionbar, .cv3-no-print, .cr-why-btn, .cr-fix-btn,
  .cr-btn-primary, .cr-actions-sub, .cr-more-links, .cv3-jobs-btn, .cv3-ai-btn {
    display: none !important;
  }

  /* 报告本体：铺满纸面、清掉多余留白与阴影 */
  #pdf-report-content {
    display: block !important;
    width: 100% !important; max-width: none !important;
    margin: 0 !important; padding: 0 !important;
    background: #fff !important;
  }
  .career-v3 { padding: 0 !important; margin: 0 !important; max-width: none !important; }
  .cv3-card, .cr-job-card, .cr-subcard, .big5-cell {
    box-shadow: none !important;
    break-inside: avoid; page-break-inside: avoid;
    border-color: #E5E7EB !important;
  }
  .career-grid-main { display: block !important; }
  .career-grid-main > .cv3-card { break-inside: avoid; page-break-inside: avoid; margin-bottom: 12px; }
  .cr-jobs-4 { grid-template-columns: repeat(2, 1fr) !important; }
  .career-disclaimer-center, .cr-disclaimer { break-inside: avoid; page-break-inside: avoid; }

  /* 图形色彩保真（渐变条 / 雷达填充 / 彩色标签） */
  * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
}

/* v106 降级打印容器：报告克隆体（站点全局规则只豁免 #print-root，且 body * 默认 visibility:hidden） */
@media print {
  #print-root, #print-root * { visibility: visible !important; }
  #print-root .career-print-clone {
    display: block !important; width: 100% !important; max-width: none !important;
    margin: 0 !important; padding: 0 !important; background: #fff !important;
  }
  #print-root .career-print-clone .cv3-card,
  #print-root .career-print-clone .cr-job-card,
  #print-root .career-print-clone .cr-subcard {
    box-shadow: none !important; break-inside: avoid; page-break-inside: avoid;
  }
  #print-root .career-print-clone .career-grid-main { display: block !important; }
  #print-root .career-print-clone .cr-jobs-4 { grid-template-columns: repeat(2, 1fr) !important; }
}

/* ==========================================================================
   v107 · 优势挖掘页（stm-*）——宽幅双列 / 零失败上传 / 紫色渐变主按钮
   字体：Inter, -apple-system, HarmonyOS Sans SC, MiSans, PingFang SC
   卡片：白底 12px 圆角 / 1px #E5E7EB / 极轻阴影
   字号：卡片主标题 17px·600，正文 14px，辅助 13px，行高 1.6
   ========================================================================== */
.stm-page, .stm-page * {
  font-family: var(--font-sans, 'Inter'), -apple-system, BlinkMacSystemFont, 'HarmonyOS Sans SC', 'MiSans', 'PingFang SC', 'Microsoft YaHei', sans-serif;
}
.stm-page {
  padding: 24px 32px 64px;
  max-width: 1680px;
  box-sizing: border-box;
  color: #111827;
}
.stm-page * { box-sizing: border-box; }

/* ---------- 页头 ---------- */
.stm-head { display: flex; align-items: center; gap: 12px; margin-bottom: 20px; }
.stm-head-ic {
  width: 42px; height: 42px; border-radius: 12px; display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #7C3AED 0%, #8B5CF6 100%); color: #fff;
  box-shadow: 0 4px 14px rgba(124, 58, 237, .24); flex: none;
}
.stm-h1 { font-size: 22px; font-weight: 700; margin: 0 0 2px; letter-spacing: .2px; }
.stm-sub { font-size: 13px; color: #6B7280; margin: 0; line-height: 1.6; }

/* ---------- 双列（左 2/3 · 右 1/3） ---------- */
.stm-grid { align-items: start; }
.stm-col { display: flex; flex-direction: column; gap: 16px; min-width: 0; }

/* ---------- 卡片基座 ---------- */
.stm-card {
  background: #fff; border: 1px solid #E5E7EB; border-radius: 12px; padding: 18px;
  box-shadow: 0 1px 2px rgba(16, 24, 40, .04);
}
.stm-card-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 14px; }
.stm-card-title { font-size: 17px; font-weight: 600; margin: 0; display: flex; align-items: center; gap: 7px; color: #111827; }
.stm-card-note { font-size: 13px; color: #9CA3AF; }
.stm-ico { flex: none; vertical-align: -3px; }
.stm-ico-pur { color: #7C3AED; }

/* ---------- 拖拽上传区 ---------- */
.stm-drop {
  border: 1.5px dashed #8B5CF6; border-radius: 12px; background: #FBF9FF;
  padding: 26px 18px; text-align: center; cursor: pointer; outline: none;
  transition: border-color .18s ease, background .18s ease, box-shadow .18s ease;
}
.stm-drop:hover, .stm-drop:focus-visible {
  border-color: #7C3AED; background: #F5F1FF;
  box-shadow: 0 0 0 4px rgba(139, 92, 246, .1);
}
.stm-drop.is-over { border-color: #7C3AED; background: #F1EAFF; }
.stm-drop.shake { animation: stm-shake .45s ease; }
@keyframes stm-shake { 0%,100%{transform:translateX(0)} 25%{transform:translateX(-6px)} 75%{transform:translateX(6px)} }
.stm-drop-ic { color: #7C3AED; display: flex; justify-content: center; margin-bottom: 8px; }
.stm-drop-main { font-size: 14px; font-weight: 600; color: #374151; }
.stm-drop-sub { font-size: 13px; color: #9CA3AF; margin-top: 4px; line-height: 1.6; }
.stm-file { display: none; }

/* ---------- 解析进度条（1.5s） ---------- */
.stm-progress { margin-top: 14px; }
.stm-progress-bar { height: 6px; border-radius: 99px; background: #F3F0FF; overflow: hidden; }
.stm-progress-bar > i {
  display: block; height: 100%; width: 0; border-radius: 99px;
  background: linear-gradient(90deg, #7C3AED, #A78BFA);
  animation: stm-prog 1.5s cubic-bezier(.4,0,.2,1) forwards;
}
@keyframes stm-prog { 0% { width: 4%; } 35% { width: 62%; } 70% { width: 88%; } 100% { width: 100%; } }
.stm-progress-txt { display: flex; align-items: center; gap: 6px; margin-top: 8px; font-size: 13px; color: #7C3AED; }

/* ---------- 文件 chip ---------- */
.stm-filechip {
  display: flex; align-items: center; gap: 8px; margin-top: 12px; padding: 8px 12px;
  background: #F9FAFB; border: 1px solid #E5E7EB; border-radius: 10px; font-size: 13px; color: #374151;
}
.stm-filechip .chip-ic { color: #7C3AED; display: flex; }
.stm-filechip .chip-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 60%; }
.stm-filechip .chip-size { margin-left: auto; color: #9CA3AF; }

/* ---------- 解析确认框 ---------- */
.stm-confirm { margin-top: 14px; animation: stm-expand .34s cubic-bezier(.16,1,.3,1); }
@keyframes stm-expand { from { opacity: 0; transform: translateY(-6px); max-height: 0; } to { opacity: 1; transform: none; max-height: 1400px; } }
.stm-confirm-tip {
  display: flex; gap: 8px; align-items: flex-start; margin-bottom: 10px; padding: 10px 12px;
  background: #F5F3FF; border: 1px solid #EDE9FE; border-radius: 10px;
  font-size: 13px; color: #4B5563; line-height: 1.6;
}
.stm-confirm-tip .tip-ic { color: #7C3AED; flex: none; margin-top: 1px; }
.stm-confirm-tip b { color: #5B21B6; font-weight: 600; }
.stm-ta {
  width: 100%; border: 1px solid #E5E7EB; border-radius: 10px; padding: 12px 14px;
  font-size: 14px; line-height: 1.6; color: #111827; background: #fff; resize: vertical; outline: none;
  transition: border-color .16s ease, box-shadow .16s ease; font-family: inherit;
}
.stm-ta:focus { border-color: #8B5CF6; box-shadow: 0 0 0 3px rgba(139, 92, 246, .12); }
.stm-confirm-foot { display: flex; align-items: center; justify-content: space-between; margin-top: 8px; }
.stm-count { font-size: 13px; color: #9CA3AF; }
.stm-foot-btns { display: flex; gap: 6px; }

/* ---------- 折叠区：手动 STAR ---------- */
.stm-collapse { margin-top: 14px; border-top: 1px solid #F3F4F6; padding-top: 12px; }
.stm-collapse-btn {
  display: flex; align-items: center; gap: 6px; width: 100%; background: none; border: 0; cursor: pointer;
  padding: 6px 0; font-size: 13px; font-weight: 600; color: #6B7280; text-align: left; font-family: inherit;
}
.stm-collapse-btn:hover { color: #7C3AED; }
.stm-chev { transition: transform .2s ease; }
.stm-collapse-btn.is-open .stm-chev { transform: rotate(180deg); }
.stm-star { margin-top: 10px; display: flex; flex-direction: column; gap: 10px; }
.stm-card-star { border: 1px solid #E5E7EB; border-radius: 10px; padding: 12px; background: #FCFCFD; }
.stm-star-head { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.stm-star-badge {
  flex: none; font-size: 12px; font-weight: 700; color: #7C3AED; background: #F5F3FF;
  border: 1px solid #EDE9FE; border-radius: 6px; padding: 2px 7px;
}
.stm-star-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.stm-star-row { display: flex; flex-direction: column; gap: 5px; }
.stm-star-row > span { font-size: 13px; font-weight: 600; color: #6B7280; }
.stm-icon-btn {
  flex: none; width: 26px; height: 26px; border-radius: 8px; border: 1px solid #E5E7EB; background: #fff;
  color: #9CA3AF; display: flex; align-items: center; justify-content: center; cursor: pointer;
}
.stm-icon-btn:hover { color: #EF4444; border-color: #FCA5A5; background: #FEF2F2; }

/* ---------- 表单基础件 ---------- */
.stm-field { display: flex; flex-direction: column; gap: 6px; }
.stm-label { font-size: 13px; font-weight: 600; color: #6B7280; }
.stm-input {
  width: 100%; border: 1px solid #E5E7EB; border-radius: 10px; padding: 9px 12px;
  font-size: 14px; line-height: 1.6; color: #111827; background: #fff; outline: none; font-family: inherit;
  transition: border-color .16s ease, box-shadow .16s ease;
}
.stm-input:focus { border-color: #8B5CF6; box-shadow: 0 0 0 3px rgba(139, 92, 246, .12); }
textarea.stm-input { resize: vertical; }

/* ---------- 右侧预览卡 ---------- */
.stm-preview { min-height: 120px; }
.stm-preview-empty { text-align: center; color: #9CA3AF; padding: 18px 6px; }
.stm-preview-empty .pe-title { font-size: 14px; font-weight: 600; color: #6B7280; margin-top: 8px; }
.stm-preview-empty .pe-desc { font-size: 13px; line-height: 1.6; margin-top: 4px; }
.stm-prev-row { display: flex; align-items: baseline; gap: 6px; flex-wrap: wrap; }
.stm-prev-num { font-size: 20px; font-weight: 700; color: #7C3AED; font-variant-numeric: tabular-nums; }
.stm-prev-lab { font-size: 13px; color: #6B7280; margin-right: 8px; }
.stm-prev-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.stm-prev-foot {
  margin-top: 12px; padding-top: 10px; border-top: 1px dashed #E5E7EB;
  font-size: 13px; color: #6B7280; display: flex; align-items: center; gap: 6px;
}
.stm-prev-foot b { color: #7C3AED; font-size: 15px; }
.stm-chip {
  display: inline-flex; align-items: center; height: 26px; padding: 0 10px; border-radius: 99px;
  background: #F5F3FF; border: 1px solid #EDE9FE; color: #6D28D9; font-size: 13px; font-weight: 600;
}
.stm-chip-mute { background: #F9FAFB; border-color: #E5E7EB; color: #9CA3AF; }

/* ---------- 底部主按钮区 ---------- */
.stm-cta { margin: 22px 0 20px; text-align: center; }
.stm-btn-primary {
  width: 100%; height: 48px; border: 0; border-radius: 12px; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  background: linear-gradient(135deg, #7C3AED 0%, #A78BFA 100%);
  color: #fff; font-size: 15px; font-weight: 600; font-family: inherit; letter-spacing: .3px;
  box-shadow: 0 6px 18px rgba(124, 58, 237, .22);
  transition: transform .16s ease, box-shadow .2s ease, filter .2s ease;
}
.stm-btn-primary:hover:not(:disabled) {
  filter: brightness(1.04);
  box-shadow: 0 10px 26px rgba(124, 58, 237, .38), 0 0 0 4px rgba(167, 139, 250, .16);
  transform: translateY(-1px);
}
.stm-btn-primary:active:not(:disabled) { transform: translateY(0); }
.stm-btn-primary:disabled { opacity: .72; cursor: progress; }
.stm-btn-primary.sm { width: auto; height: 42px; padding: 0 22px; margin-top: 6px; }
.stm-cta-note { margin-top: 10px; font-size: 13px; color: #9CA3AF; line-height: 1.6; }

.stm-ghost-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  height: 38px; padding: 0 14px; border-radius: 10px; cursor: pointer;
  border: 1px solid #E5E7EB; background: #fff; color: #4B5563;
  font-size: 13px; font-weight: 600; font-family: inherit;
  transition: border-color .16s ease, color .16s ease, background .16s ease;
}
.stm-ghost-btn:hover { border-color: #8B5CF6; color: #7C3AED; background: #FBF9FF; }
.stm-ghost-btn:disabled { opacity: .6; cursor: progress; }
.stm-link-btn {
  display: inline-flex; align-items: center; gap: 5px; background: none; border: 0; cursor: pointer;
  font-size: 13px; font-weight: 600; color: #7C3AED; padding: 4px 6px; border-radius: 6px; font-family: inherit;
}
.stm-link-btn:hover { background: #F5F3FF; }

/* ---------- 骨架屏 ---------- */
.stm-skel { background: #fff; border: 1px solid #E5E7EB; border-radius: 12px; padding: 22px; }
.stm-skel-line { height: 14px; border-radius: 8px; background: #F3F4F6; margin-bottom: 12px; position: relative; overflow: hidden; }
.stm-skel-line::after {
  content: ''; position: absolute; inset: 0; transform: translateX(-100%);
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.85), transparent);
  animation: stm-shim 1.1s infinite;
}
@keyframes stm-shim { to { transform: translateX(100%); } }
.stm-skel-line.w90 { width: 90%; } .stm-skel-line.w70 { width: 70%; }
.stm-skel-line.w80 { width: 80%; } .stm-skel-line.w60 { width: 60%; }
.stm-skel-tip { font-size: 13px; color: #9CA3AF; margin-top: 6px; }

/* ---------- 报告区 ---------- */
.stm-report-wrap { display: flex; flex-direction: column; gap: 16px; animation: stm-fade .4s ease both; }
@keyframes stm-fade { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.stm-fade-in { animation: stm-fade .4s ease both; }
.stm-sec { padding: 20px; }
.stm-sec-head { display: flex; align-items: center; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }
.stm-sec-tip { font-size: 13px; color: #9CA3AF; margin-left: auto; text-align: right; max-width: 52%; line-height: 1.6; }

/* ① 核心优势标签 */
.stm-tags { display: flex; flex-wrap: wrap; gap: 10px; }
.stm-tag {
  display: inline-flex; align-items: center; gap: 8px; height: 38px; padding: 0 14px; border-radius: 99px;
  background: linear-gradient(135deg, #F5F3FF 0%, #EDE9FE 100%);
  border: 1px solid #DDD6FE; color: #5B21B6; box-shadow: 0 1px 2px rgba(124, 58, 237, .08);
}
.stm-tag b { font-size: 14px; font-weight: 600; }
.stm-tag-i { font-size: 13px; font-weight: 500; color: #8B5CF6; font-style: normal; padding-left: 8px; border-left: 1px solid #DDD6FE; }

/* ② 优势溯源 */
.stm-src-wrap { display: flex; flex-direction: column; gap: 16px; }
.stm-src-block { border-left: 3px solid #8B5CF6; padding-left: 14px; }
.stm-src-name { font-size: 14px; font-weight: 600; color: #111827; margin-bottom: 8px; }
.stm-src-item { background: #F9FAFB; border: 1px solid #F3F4F6; border-radius: 10px; padding: 10px 12px; margin-bottom: 8px; }
.stm-src-head { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; flex-wrap: wrap; }
.stm-src-ref { font-size: 12px; font-weight: 700; color: #fff; background: #8B5CF6; border-radius: 5px; padding: 1px 6px; }
.stm-src-title { font-size: 13px; font-weight: 600; color: #374151; }
.stm-src-quant { font-size: 12px; color: #059669; display: inline-flex; align-items: center; gap: 3px; }
.stm-src-quote { font-size: 14px; line-height: 1.6; color: #4B5563; display: flex; gap: 6px; align-items: flex-start; }
.stm-quote-ico { color: #C4B5FD; flex: none; margin-top: 2px; }
.stm-src-meta { margin-top: 6px; font-size: 13px; color: #9CA3AF; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.stm-kw { background: #F5F3FF; color: #6D28D9; border-radius: 5px; padding: 1px 6px; font-size: 12px; font-weight: 600; }
.stm-src-none { font-size: 13px; color: #9CA3AF; }

/* ③ 段位对标 */
.stm-rank-wrap { display: flex; flex-direction: column; gap: 12px; }
.stm-rank-row { display: grid; grid-template-columns: 108px 1fr 158px 62px; align-items: center; gap: 10px; }
.stm-rank-name { font-size: 14px; font-weight: 600; color: #374151; }
.stm-rank-bar { height: 10px; background: #F3F4F6; border-radius: 99px; overflow: hidden; }
.stm-rank-fill { display: block; height: 100%; border-radius: 99px; transition: width .5s cubic-bezier(.16,1,.3,1); }
.stm-rank-fill.lv-top { background: linear-gradient(90deg, #059669, #34D399); }
.stm-rank-fill.lv-good { background: linear-gradient(90deg, #7C3AED, #A78BFA); }
.stm-rank-fill.lv-mid { background: linear-gradient(90deg, #2563EB, #60A5FA); }
.stm-rank-fill.lv-low { background: linear-gradient(90deg, #F59E0B, #FBBF24); }
.stm-rank-val { font-size: 13px; color: #6B7280; font-variant-numeric: tabular-nums; }
.stm-rank-val b { color: #111827; font-size: 14px; }
.stm-rank-lv { font-size: 12px; font-weight: 600; text-align: center; border-radius: 6px; padding: 2px 0; }
.stm-rank-lv.lv-top { color: #065F46; background: #D1FAE5; }
.stm-rank-lv.lv-good { color: #5B21B6; background: #EDE9FE; }
.stm-rank-lv.lv-mid { color: #1E40AF; background: #DBEAFE; }
.stm-rank-lv.lv-low { color: #92400E; background: #FEF3C7; }

/* ④ 匹配度 / 差距 */
.stm-match { display: grid; grid-template-columns: 160px 1fr; gap: 22px; align-items: center; }
.stm-match-ring { position: relative; width: 132px; height: 132px; margin: 0 auto; }
.stm-ring-txt { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.stm-ring-txt b { font-size: 30px; font-weight: 700; color: #111827; font-variant-numeric: tabular-nums; line-height: 1; }
.stm-ring-txt span { font-size: 13px; color: #9CA3AF; margin-top: 4px; }
.stm-ring-txt b.ok { color: #059669; } .stm-ring-txt b.mid { color: #D97706; } .stm-ring-txt b.bad { color: #DC2626; }
.stm-match-hd { font-size: 13px; color: #6B7280; margin-bottom: 8px; }
.stm-match-list { display: flex; flex-direction: column; gap: 8px; }
.stm-gap-item {
  display: grid; grid-template-columns: 14px 1fr auto; align-items: center; gap: 8px;
  background: #F9FAFB; border: 1px solid #F3F4F6; border-radius: 8px; padding: 7px 12px;
}
.stm-gap-dot { width: 10px; height: 10px; border-radius: 50%; }
.stm-gap-dot.dot-ok { background: #10B981; }
.stm-gap-dot.dot-mid { background: #F59E0B; }
.stm-gap-dot.dot-bad { background: #EF4444; }
.stm-gap-name { font-size: 14px; color: #374151; }
.stm-gap-word { font-size: 13px; font-weight: 600; }
.stm-gap-word.dot-ok { color: #059669; }
.stm-gap-word.dot-mid { color: #B45309; }
.stm-gap-word.dot-bad { color: #DC2626; }

.stm-fix-wrap { margin-top: 16px; padding-top: 14px; border-top: 1px dashed #E5E7EB; }
.stm-fix-hd { display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: #B45309; margin-bottom: 10px; }
.stm-fix-body { display: flex; flex-wrap: wrap; gap: 8px; }
.stm-fix {
  display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 6px 0 12px;
  border-radius: 99px; background: #FEF2F2; border: 1px solid #FECACA; color: #B91C1C; font-size: 13px; font-weight: 600;
}
.stm-fix-btn {
  display: inline-flex; align-items: center; gap: 3px; border: 0; cursor: pointer; height: 24px; padding: 0 9px;
  border-radius: 99px; background: #EF4444; color: #fff; font-size: 12px; font-weight: 600; font-family: inherit;
  transition: background .16s ease, transform .16s ease;
}
.stm-fix-btn:hover { background: #DC2626; transform: translateX(2px); }

/* ⑤ 面试话术 */
.stm-script-box { background: linear-gradient(135deg, #FBF9FF 0%, #F6F4FF 100%); border: 1px solid #EDE9FE; border-radius: 12px; padding: 14px 16px; }
.stm-script-lab { display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: #7C3AED; margin-bottom: 8px; }
.stm-script-text { font-size: 14px; line-height: 1.7; color: #4B5563; white-space: pre-wrap; }
.stm-star-flow { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; margin-top: 12px; }
.stm-star-item { background: #fff; border: 1px solid #E5E7EB; border-radius: 10px; padding: 10px 12px; font-size: 13px; line-height: 1.6; color: #4B5563; }
.stm-star-tag { display: block; font-size: 12px; font-weight: 700; color: #7C3AED; margin-bottom: 4px; letter-spacing: .5px; }

/* ⑥ AI 补充 */
.stm-ai-pos { font-size: 14px; line-height: 1.6; color: #4B5563; background: #F9FAFB; border-radius: 10px; padding: 12px 14px; }
.stm-ai-list { margin: 10px 0 0; padding-left: 18px; }
.stm-ai-list li { font-size: 14px; line-height: 1.6; color: #4B5563; margin-bottom: 6px; }

/* ---------- 报告底部动作条 ---------- */
.stm-footer-actions { display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 4px 0 8px; }
.stm-footer-actions .stm-btn-primary { max-width: 460px; }
.stm-act-sub { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; }

/* ---------- 空态 ---------- */
.stm-empty { text-align: center; padding: 34px 20px; }
.stm-empty .stm-ico { color: #C4B5FD; margin-bottom: 10px; }
.stm-empty-title { font-size: 17px; font-weight: 600; margin: 0 0 8px; }
.stm-empty-desc { font-size: 14px; line-height: 1.8; color: #6B7280; margin: 0 0 14px; }

/* ---------- 响应式 ---------- */
@media (max-width: 1240px) {
  .stm-match { grid-template-columns: 1fr; }
  .stm-star-flow { grid-template-columns: 1fr; }
}
@media (max-width: 900px) {
  .stm-page { padding: 16px 14px 56px; }
  .stm-rank-row { grid-template-columns: 1fr 1fr; grid-template-areas: 'n n' 'bar bar' 'val lv'; row-gap: 4px; }
  .stm-rank-row .stm-rank-name { grid-area: n; }
  .stm-rank-row .stm-rank-bar { grid-area: bar; }
  .stm-rank-row .stm-rank-val { grid-area: val; }
  .stm-rank-row .stm-rank-lv { grid-area: lv; }
  .stm-star-grid { grid-template-columns: 1fr; }
  .stm-sec-tip { max-width: 100%; margin-left: 0; text-align: left; }
}

/* ---------- 打印：只保留报告本体 ---------- */
@media print {
  .stm-cta, .stm-head, .stm-grid, .stm-footer-actions, .stm-no-print,
  #stm-report ~ * button, .stm-page .stm-col { display: none !important; }
  .stm-page { padding: 0 !important; max-width: none !important; }
  .stm-card { box-shadow: none !important; break-inside: avoid; page-break-inside: avoid; border-color: #E5E7EB !important; }
  .stm-report-wrap { display: block !important; }
}
#print-root .stm-print-clone {
  display: block !important; width: 100% !important; max-width: none !important;
  margin: 0 !important; padding: 0 !important; background: #fff !important;
}

/* ===================== v126.3 工作台主页面重构（留白 / 字号 / 空状态） ===================== */

/* ---- 第三部分：流水线零投递 → 全宽引导卡片（隐藏 4 个空列） ---- */
.wb-pipe-guide {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  padding: 40px 24px;
  border: 1.5px dashed #DDD6FE;
  border-radius: 12px;
  background: linear-gradient(180deg, #FDFCFF 0%, #F8F6FF 100%);
  cursor: pointer;
  transition: border-color .2s ease, box-shadow .2s ease, background .2s ease;
}
.wb-pipe-guide:hover {
  border-color: #8B5CF6;
  background: #FBF9FF;
  box-shadow: 0 8px 28px rgba(124, 58, 237, 0.10);
}
.wb-pipe-guide-art {
  filter: drop-shadow(0 0 14px rgba(139, 92, 246, 0.30));
  animation: wb-guide-glow 2.8s ease-in-out infinite;
}
@keyframes wb-guide-glow {
  0%, 100% { filter: drop-shadow(0 0 10px rgba(139, 92, 246, 0.22)); transform: translateY(0); }
  50%      { filter: drop-shadow(0 0 22px rgba(139, 92, 246, 0.45)); transform: translateY(-5px); }
}
.wb-pipe-guide-text {
  font-size: 15px;
  font-weight: 500;
  color: #4B5563;
  line-height: 1.7;
  text-align: center;
}
.wb-pipe-guide-text strong { color: #7C3AED; font-weight: 700; }
.wb-pipe-guide:hover .wb-pipe-guide-text strong { text-decoration: underline; }

/* ---- 第四部分：AI 求职诊断（行距 16px + 规整红黄绿标签胶囊） ---- */
.wb-diag { gap: 16px; }   /* v126.3：条目行距 10 → 16px */
.wb-diag-tag {
  display: inline-flex;
  align-items: center;
  border-radius: 6px;          /* 规整圆角 6px */
  padding: 4px 10px;           /* 内边距 4px 10px */
  font-size: 12px;
  font-weight: 700;
  line-height: 1.2;
  margin-right: 8px;
  vertical-align: 1px;
  white-space: nowrap;
}
.wb-diag-tag.red    { background: #FDECEA; color: #C2351B; border: 1px solid #F8CFC8; }
.wb-diag-tag.yellow { background: #FEF4E4; color: #9A6206; border: 1px solid #FAE3B8; }
.wb-diag-tag.green  { background: #E7F8F1; color: #067A57; border: 1px solid #B7E9D5; }

/* ---- 第四部分：投递岗位分布 · 空数据优雅占位 ---- */
.wb-dist-empty {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 32px 16px;
  border: 1.5px dashed #E5E7EB;
  border-radius: 12px;
  background: #FAFBFC;
  text-align: center;
}
.wb-dist-empty-t { font-size: 14px; font-weight: 600; color: #9CA3AF; margin-top: 4px; }
.wb-dist-empty-s { font-size: 13px; font-weight: 500; color: #B7BCC7; }

/* ---- 第四部分：明细表行高保障（≥48px，表头浅灰 v92 已有 #F9FAFB） ---- */
.wb-table td { height: 52px; }

/* ============================================================
   v126.26 工作台首页右侧内容区 UX 去重与排版重构
   ① 看板高度约束（min 200 / max 400）② 已投递列底部链接
   ③ AI 诊断呼吸感 + 迷你活跃度折线 ④ 底部 2/3+1/3 双栏 + 截止预警
   ============================================================ */

/* --- 内联 SVG 线性图标统一规格（替代 Emoji 功能图标） --- */
.wb-ico { width: 16px; height: 16px; flex: 0 0 16px; vertical-align: -2px; }
.wb-pipe-name .wb-ico { width: 15px; height: 15px; flex: 0 0 15px; color: #6D28D9; }
.wb-diag-love .wb-ico { width: 14px; height: 14px; flex: 0 0 14px; color: #F59E0B; }
.wb-dl-title-head .wb-ico { color: #D97706; }

/* --- 第一/二部分：流水线看板高度约束 + 已投递列底部链接 --- */
.wb-pipe { min-height: 200px; max-height: 400px; overflow-y: auto; }
.wb-pipe::-webkit-scrollbar { width: 4px; }
.wb-pipe::-webkit-scrollbar-thumb { background: #E5E7EB; border-radius: 4px; }
.wb-pipe-more {
  margin-top: 10px; padding: 2px 0;
  font-size: 12.5px; font-weight: 600; color: #8B5CF6;
  cursor: pointer; text-align: center; letter-spacing: 0.01em;
  transition: color .15s ease;
}
.wb-pipe-more:hover { text-decoration: underline; color: #7C3AED; }

/* --- 第二部分：AI 诊断卡呼吸感（行距/内边距加大）+ 底部迷你活跃度折线 --- */
.wb-diag { gap: 14px; }
.wb-diag-item { padding: 14px 16px; }
.wb-diag-love { padding: 4px 2px; display: flex; align-items: flex-start; gap: 6px; }
.wb-diag-spark { margin-top: auto; padding-top: 14px; border-top: 1px dashed #EEF0F4; }
.wb-diag-spark-t {
  display: flex; justify-content: space-between; align-items: baseline;
  font-size: 12px; font-weight: 600; color: #6B7280; margin-bottom: 8px;
}
.wb-diag-spark-t .wb-num { color: #8B5CF6; font-weight: 700; }
.wb-diag-spark svg { display: block; width: 100%; height: auto; }

/* --- 第三部分：底部双栏（左 2/3 投递明细 + 右 1/3 截止预警，1px 分割线） --- */
.wb-detail-card { padding: 24px; }
.wb-detail-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 0; align-items: stretch; }
.wb-detail-left { min-width: 0; padding-right: 24px; }
.wb-detail-right {
  min-width: 0; padding-left: 24px;
  border-left: 1px solid #F3F4F6;
}
@media (max-width: 1100px) {
  .wb-detail-grid { grid-template-columns: 1fr; }
  .wb-detail-left { padding-right: 0; }
  .wb-detail-right { padding-left: 0; padding-top: 20px; border-left: none; border-top: 1px solid #F3F4F6; }
}
/* 明细表格行高 56px */
.wb-detail-left .wb-table td { height: 56px; padding: 8px 12px; vertical-align: middle; }

/* --- 第四部分：网申截止预警列表（每项 ~60px，紧凑） --- */
.wb-dl-list { display: flex; flex-direction: column; }
.wb-dl-item {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 10px 2px; min-height: 60px;
  border-bottom: 1px dashed #F3F4F6;
}
.wb-dl-item:last-child { border-bottom: none; }
.wb-dl-main { min-width: 0; flex: 1 1 auto; }
.wb-dl-title {
  font-size: 13px; font-weight: 700; color: #111827; line-height: 1.45;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.wb-dl-meta { display: flex; align-items: center; gap: 8px; margin-top: 5px; flex-wrap: wrap; }
.wb-dl-date { font-size: 12px; color: #9CA3AF; font-weight: 500; }
.wb-dl-badge { font-size: 12px; font-weight: 700; white-space: nowrap; }
.wb-dl-badge.urgent { color: #EF4444; }
.wb-dl-badge.soon { color: #D97706; }
.wb-dl-item.urgent .wb-dl-title { color: #B91C1C; }
.wb-dl-btn {
  flex: 0 0 auto; height: 30px; padding: 0 12px; border-radius: 8px;
  border: 1px solid #E5E7EB; background: #FFFFFF; color: #4B5563;
  font-size: 12px; font-weight: 600; cursor: pointer; font-family: var(--wb-font);
  transition: all .16s ease; white-space: nowrap;
}
.wb-dl-btn:hover { border-color: #8B5CF6; color: #8B5CF6; background: #FAF9FF; box-shadow: 0 2px 8px rgba(139, 92, 246, .12); }
.wb-dl-empty {
  padding: 28px 8px; text-align: center; font-size: 12.5px; color: #9CA3AF;
  line-height: 2; cursor: pointer; transition: color .15s ease;
}
.wb-dl-empty:hover { color: #6B7280; }
.wb-dl-empty .go { color: #8B5CF6; font-weight: 600; }
.wb-dl-empty:hover .go { text-decoration: underline; }

/* --- 第五部分：诊断/看板双卡等高（拉伸对齐，右侧 sparkline 沉底） --- */
.wb-grid-2 .wb-card .wb-pipe { margin-top: auto; }
.wb-grid-2 .wb-diag-love { margin-top: 0; }   /* v126.26：沉底职责移交 sparkline */

/* ============================================================
   v126.27 工作台首页最终版：去重与重排（对齐参考截图审美）
   ============================================================ */

/* --- 第五部分：整体排版与视觉降噪 --- */
.wb-body { font-size: 14px; line-height: 1.6; }
.wb-card {
  border-radius: 16px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.03);
}
.wb-card:hover {
  border-color: rgba(123, 92, 255, .35);
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.05);
}

/* --- KPI 紧凑横排样式已随 KPI 卡片行删除（v126.32 清理） --- */

/* --- 第一/二部分：看板与诊断完全等高（取消 max-height，height:100% 撑满） --- */
.wb-grid-2 { align-items: stretch; }
.wb-pipe-card { display: flex; flex-direction: column; }
.wb-pipe {
  min-height: 0; max-height: none; height: 100%;
  overflow: visible; flex: 1 1 auto;
}
.wb-pipe-col { display: flex; flex-direction: column; min-height: 0; }
.wb-pipe-col-head { flex: 0 0 auto; }
.wb-pipe-item { flex: 0 0 auto; }
.wb-pipe-none {
  flex: 1 1 auto; display: flex; align-items: center; justify-content: center;
  border: 1px dashed #E8EAF1; border-radius: 10px; min-height: 96px;
  font-size: 12.5px; color: #B0B7C3; background: #FDFDFE;
}
.wb-pipe-more { flex: 0 0 auto; margin-top: auto; padding-top: 10px; }
/* 幽灵按钮（卡片头右上「查看全部 →」） */
.wb-ghost-btn {
  height: 30px; padding: 0 14px; border-radius: 999px;
  border: 1px solid #E5E7EB; background: #FFFFFF; color: #6B7280;
  font-size: 12.5px; font-weight: 600; cursor: pointer; font-family: var(--wb-font);
  transition: all .16s ease; white-space: nowrap; flex: 0 0 auto;
}
.wb-ghost-btn:hover { border-color: #8B5CF6; color: #8B5CF6; background: #FAF9FF; }

/* --- 第二部分：AI 诊断——寄语沉底（lavender 胶囊），删除活跃度折线 --- */
.wb-diag-card { display: flex; flex-direction: column; }
.wb-diag { flex: 1 1 auto; }
.wb-grid-2 .wb-diag-love,
.wb-diag-love {
  margin-top: auto;   /* v126.27：覆盖 v126.26 的 margin-top:0，沉底职责回归寄语 */
  background: #F4F1FF; border: 1px solid #E9E2FF; border-radius: 12px;
  padding: 12px 14px; display: flex; align-items: flex-start; gap: 8px;
  font-size: 13.5px; color: #5B3FE0;
}
.wb-diag-love .wb-ico { margin-top: 3px; }
.wb-diag-love b { font-weight: 700; }

/* --- 第三部分：趋势降级卡（数据点 <3 时优雅替代折线） --- */
.wb-trend-fb {
  min-height: 200px;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 10px; padding: 36px 20px; text-align: center;
}
.wb-trend-fb-badge {
  width: 52px; height: 52px; border-radius: 14px;
  display: flex; align-items: center; justify-content: center;
  background: #F1EDFF; color: #7B5CFF;
}
.wb-trend-fb-main { font-size: 21px; font-weight: 700; color: #6D28D9; letter-spacing: -0.01em; }
.wb-trend-fb-main .wb-num { color: #7B5CFF; }
.wb-trend-fb-sub { font-size: 13px; color: #9CA3AF; }

/* --- 第三部分：单类别分布 → 居中 Donut 环图 --- */
.wb-donut-wrap {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 22px 0 14px; gap: 10px;
}
.wb-donut-sub { font-size: 12.5px; color: #9CA3AF; }

/* --- 底部：两张独立卡片（左 2/3 明细 + 右 1/3 预警，20px 间距） --- */
.wb-grid-detail { display: grid; grid-template-columns: 2fr 1fr; gap: 20px; align-items: stretch; }
@media (max-width: 1100px) { .wb-grid-detail { grid-template-columns: 1fr; } }
.wb-detail-card { min-width: 0; }
.wb-deadline-card { min-width: 0; display: flex; flex-direction: column; }
.wb-deadline-card .wb-dl-list { flex: 1 1 auto; }
.wb-detail-card .wb-table td { height: 56px; padding: 8px 12px; vertical-align: middle; }
/* 旧 v126.26 单卡内分割样式已废弃（双卡布局取代） */

/* ============================================================
   v126.28 优势挖掘「一键补齐短板」交互修复
   未开发功能统一兜底弹窗（居中/白底/12px 圆角/品牌紫/半透明遮罩）
   ============================================================ */
.stm-soon-overlay {
  position: fixed; inset: 0; z-index: 9999;
  display: flex; align-items: center; justify-content: center;
  background: rgba(17, 24, 39, 0.45);
  backdrop-filter: blur(2px);
  animation: stmSoonIn .18s ease;
}
@keyframes stmSoonIn { from { opacity: 0; } to { opacity: 1; } }
.stm-soon-modal {
  position: relative; width: min(400px, calc(100vw - 48px));
  background: #FFFFFF; border-radius: 12px;
  box-shadow: 0 20px 60px rgba(17, 24, 39, 0.22);
  padding: 28px 26px 24px; text-align: center;
  animation: stmSoonPop .22s cubic-bezier(.34, 1.4, .64, 1);
}
@keyframes stmSoonPop { from { transform: scale(.92); opacity: 0; } to { transform: scale(1); opacity: 1; } }
.stm-soon-x {
  position: absolute; top: 12px; right: 12px;
  width: 28px; height: 28px; border-radius: 8px;
  border: none; background: transparent; color: #9CA3AF;
  cursor: pointer; display: flex; align-items: center; justify-content: center;
  transition: background .15s ease, color .15s ease;
}
.stm-soon-x:hover { background: #F3F4F6; color: #374151; }
.stm-soon-ico {
  width: 48px; height: 48px; margin: 0 auto 14px; border-radius: 12px;
  background: #F1EDFF; color: #7B5CFF;
  display: flex; align-items: center; justify-content: center;
}
.stm-soon-title { font-size: 17px; font-weight: 700; color: #111827; letter-spacing: -0.01em; }
.stm-soon-text { font-size: 13.5px; line-height: 1.7; color: #6B7280; margin-top: 10px; text-align: left; }
.stm-soon-wx {
  margin-top: 14px; padding: 10px 14px; border-radius: 10px;
  background: #F9F8FF; border: 1px dashed #C9BCFF;
  display: flex; align-items: center; justify-content: center; gap: 10px;
}
.stm-soon-wx-lab { font-size: 12.5px; color: #9CA3AF; font-weight: 500; }
.stm-soon-wx-val { font-size: 15px; font-weight: 700; color: #7B5CFF; letter-spacing: 0.02em; }
.stm-soon-acts { display: flex; gap: 10px; margin-top: 16px; }
.stm-soon-copy {
  flex: 1 1 auto; height: 40px; border-radius: 10px;
  border: 1px solid #7B5CFF; background: #7B5CFF; color: #FFFFFF;
  font-size: 13.5px; font-weight: 600; cursor: pointer; font-family: inherit;
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  transition: background .15s ease, border-color .15s ease;
}
.stm-soon-copy:hover { background: #6D4EF0; border-color: #6D4EF0; }
.stm-soon-ok {
  flex: 0 0 auto; height: 40px; padding: 0 18px; border-radius: 10px;
  border: 1px solid #E5E7EB; background: #FFFFFF; color: #6B7280;
  font-size: 13.5px; font-weight: 600; cursor: pointer; font-family: inherit;
  transition: border-color .15s ease, color .15s ease;
}
.stm-soon-ok:hover { border-color: #C9BCFF; color: #7B5CFF; }

/* ============================================================
   v126.30 工作台首页·高级质感重构（严格按用户演示稿）
   —— 左侧侧边栏零改动；仅右侧主内容区视觉升级
   ============================================================ */

/* --- 舞台：紫韵径向渐变底（演示稿 --bg-gradient） --- */
.wb-body {
  background: radial-gradient(circle at 10% 0%, #F4F2FF 0%, #F8F9FC 40%, #F8F9FC 100%);
  gap: 24px;
}

/* --- 卡片基座：白描边 + 分层阴影；hover 只加深阴影不变紫边（演示稿） --- */
.wb-card {
  border-radius: 18px;
  border-color: rgba(255, 255, 255, 0.8);
  box-shadow: 0 2px 6px rgba(16, 24, 40, 0.04), 0 1px 2px rgba(16, 24, 40, 0.02);
}
.wb-card:hover {
  border-color: rgba(255, 255, 255, 0.8);
  box-shadow: 0 12px 32px rgba(16, 24, 40, 0.08);
  transform: none;
}

/* --- 欢迎条（演示稿 welcome-bar）：大标题 + 日期胶囊 --- */
.wb-welcome { display: flex; justify-content: space-between; align-items: flex-end; padding: 0 4px; }
.wb-welcome h1 {
  margin: 0; font-size: 26px; font-weight: 800; color: var(--wb-title);
  letter-spacing: -0.6px; line-height: 1.25;
}
.wb-welcome p { font-size: 14px; color: var(--wb-aux); margin: 6px 0 0; font-weight: 500; }
.wb-welcome p b { color: var(--wb-title); font-weight: 700; }
.wb-welcome-date {
  background: rgba(255, 255, 255, 0.8); padding: 8px 18px; border-radius: 20px;
  font-size: 13px; font-weight: 600; color: var(--wb-title); white-space: nowrap;
  box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04); border: 1px solid rgba(255, 255, 255, 0.8);
  font-variant-numeric: tabular-nums;
}
@media (max-width: 900px) { .wb-welcome { flex-direction: column; align-items: flex-start; gap: 10px; } }

/* --- KPI 卡样式已随 KPI 卡片行删除（v126.32 清理死规则） --- */

/* --- 主双栏（演示稿 2.8 : 1.2）：流水线 + AI 诊断等高 --- */
.wb-grid-main { display: grid; grid-template-columns: 2.8fr 1.2fr; gap: 20px; align-items: stretch; }
@media (max-width: 1100px) { .wb-grid-main { grid-template-columns: 1fr; } }
.wb-grid-main > .wb-card { display: flex; flex-direction: column; }

/* --- 流水线看板（演示稿 kanban）：四列色彩区分 + 顶部 3px 色条 + 光晕圆点 --- */
.wb-kanban { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; flex: 1 1 auto; min-height: 0; }
@media (max-width: 1280px) { .wb-kanban { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 700px) { .wb-kanban { grid-template-columns: 1fr; } }
.wb-kcol { border-radius: 12px; padding: 14px; display: flex; flex-direction: column; min-height: 168px; }
.wb-kcol.col-applied   { background: linear-gradient(180deg, #F9FAFB 0%, #F3F4F6 100%); border-top: 3px solid #9CA3AF; }
.wb-kcol.col-test      { background: linear-gradient(180deg, #F0F9FF 0%, #E0F2FE 100%); border-top: 3px solid #3B82F6; }
.wb-kcol.col-interview { background: linear-gradient(180deg, #FFFBF5 0%, #FFEDD5 100%); border-top: 3px solid #F97316; }
.wb-kcol.col-offer     { background: linear-gradient(180deg, #F0FDF4 0%, #DCFCE7 100%); border-top: 3px solid #10B981; }
.wb-kcol-head {
  display: flex; justify-content: space-between; align-items: center;
  font-size: 13px; font-weight: 700; color: var(--wb-title);
  padding-bottom: 4px; flex: 0 0 auto;
}
.wb-kcol-name { display: flex; align-items: center; gap: 6px; }
.wb-kdot { width: 8px; height: 8px; border-radius: 50%; flex: none; }
.col-applied .wb-kdot   { background: #9CA3AF; box-shadow: 0 0 6px #9CA3AF; }
.col-test .wb-kdot      { background: #3B82F6; box-shadow: 0 0 6px #3B82F6; }
.col-interview .wb-kdot { background: #F97316; box-shadow: 0 0 6px #F97316; }
.col-offer .wb-kdot     { background: #10B981; box-shadow: 0 0 6px #10B981; }
.wb-kcount {
  background: rgba(255, 255, 255, 0.9); color: var(--wb-aux);
  padding: 2px 8px; border-radius: 10px; font-size: 11px; font-weight: 700;
}
.wb-kcol-body { display: flex; flex-direction: column; gap: 8px; flex: 1 1 auto; margin-top: 10px; min-height: 0; }
/* 岗位小卡（演示稿 job-card）：白底圆角 + 头像 + 公司/岗位/日期 */
.wb-kjob {
  background: #FFFFFF; border-radius: 10px; padding: 12px;
  border: 1px solid rgba(0, 0, 0, 0.03);
  box-shadow: 0 2px 6px rgba(16, 24, 40, 0.04), 0 1px 2px rgba(16, 24, 40, 0.02);
  display: flex; flex-direction: column; gap: 7px; cursor: pointer;
  transition: all 0.3s ease; flex: 0 0 auto;
}
.wb-kjob:hover {
  box-shadow: 0 6px 16px rgba(16, 24, 40, 0.05), 0 2px 4px rgba(16, 24, 40, 0.03);
  transform: translateY(-2px);
}
.wb-kjob-head { display: flex; align-items: center; gap: 8px; min-width: 0; }
.wb-kavatar {
  width: 24px; height: 24px; border-radius: 8px; flex: none;
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 700; color: #FFFFFF;
}
.wb-kjob-co {
  font-size: 12px; font-weight: 600; color: var(--wb-title);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.wb-kjob-role { font-size: 11px; font-weight: 500; color: var(--wb-aux); }
.wb-kjob-date { font-size: 10px; font-weight: 500; color: #9CA3AF; }
/* 空列（演示稿 empty-state-dashed）：虚线框 + 「去投递 →」引导 */
.wb-kempty {
  flex: 1 1 auto; border: 2px dashed #D1D5DB; border-radius: 10px;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 8px; background: rgba(255, 255, 255, 0.4); min-height: 120px;
  cursor: pointer; transition: all 0.2s ease;
}
.wb-kempty:hover { background: rgba(255, 255, 255, 0.8); border-color: #A78BFA; }
.wb-kempty span { font-size: 12px; color: #9CA3AF; font-weight: 500; }
.wb-kempty a { font-size: 12px; color: #7C3AED; font-weight: 700; text-decoration: none; cursor: pointer; }
.wb-kempty:hover a { text-decoration: underline; }
.wb-kcol .wb-pipe-more { flex: 0 0 auto; margin-top: auto; }

/* --- AI 诊断卡（演示稿 ai-card）：紫色光晕 + 白色胶囊条目 + 渐变寄语 --- */
.wb-ai-card {
  background: linear-gradient(180deg, #FFFFFF 0%, #FBF9FF 100%);
  border-color: rgba(124, 58, 237, 0.12);
  box-shadow: 0 0 30px rgba(124, 58, 237, 0.08), 0 6px 16px rgba(16, 24, 40, 0.05), 0 2px 4px rgba(16, 24, 40, 0.03);
}
.wb-ai-card:hover {
  border-color: rgba(124, 58, 237, 0.12);
  box-shadow: 0 0 30px rgba(124, 58, 237, 0.1), 0 12px 32px rgba(16, 24, 40, 0.08);
}
.wb-ai-card .wb-diag { gap: 12px; }
.wb-ai-card .wb-diag-item {
  background: rgba(255, 255, 255, 0.9); border: 1px solid #F3F4F6;
  border-radius: 12px; padding: 14px;
  transition: all 0.2s ease;
}
.wb-ai-card .wb-diag-item:hover { background: #FFFFFF; box-shadow: 0 2px 6px rgba(16, 24, 40, 0.04); transform: translateX(2px); }
.wb-ai-card .wb-diag-item.red,
.wb-ai-card .wb-diag-item.yellow,
.wb-ai-card .wb-diag-item.green { background: rgba(255, 255, 255, 0.9); border-color: #F3F4F6; }
.wb-ai-card .wb-diag-dot { display: none; }   /* 演示稿用彩色标签胶囊，不用圆点 */
.wb-ai-card .wb-diag-text { font-size: 13px; font-weight: 500; line-height: 1.6; }
.wb-diag-tag {
  display: inline-block; padding: 3px 8px; border-radius: 6px;
  font-size: 11px; font-weight: 700; flex-shrink: 0; margin-right: 2px;
  vertical-align: 1px;
}
.wb-diag-tag.red    { background: #FEF2F2; color: #DC2626; }
.wb-diag-tag.yellow { background: #FFFBEB; color: #D97706; }
.wb-diag-tag.green  { background: #ECFDF5; color: #059669; }
.wb-ai-card .wb-diag-love {
  background: linear-gradient(135deg, #F5F3FF, #EDE9FE);
  border: 1px solid rgba(124, 58, 237, 0.1);
  border-radius: 12px; padding: 14px 16px;
  font-size: 12px; font-weight: 600; color: #6D28D9; line-height: 1.6;
  box-shadow: inset 0 1px 3px rgba(124, 58, 237, 0.05);
}
.wb-ai-card .wb-diag-love .wb-num { color: #6D28D9; }

/* --- 图表区（演示稿 chart-grid 2 : 1 保持 wb-grid-2）---
   趋势降级卡：32px 品牌紫大数字（演示稿 h2） */
.wb-trend-fb { padding: 28px 20px; }
.wb-trend-fb-badge {
  background: linear-gradient(135deg, #F5F3FF, #EDE9FE); color: #7C3AED;
  border-radius: 14px;
}
.wb-trend-fb-main { font-size: 32px; font-weight: 800; color: #7C3AED; letter-spacing: -1.5px; }
.wb-trend-fb-main .wb-num { color: #7C3AED; }
.wb-trend-fb-sub { font-size: 13px; color: var(--wb-aux); font-weight: 500; }
/* 单类别 Donut：品牌紫光晕（演示稿 box-shadow 0 4px 16px 紫） */
.wb-donut-wrap svg { filter: drop-shadow(0 4px 16px rgba(124, 58, 237, 0.2)); }

/* --- 底部双栏（演示稿 2 : 1.2）--- */
.wb-grid-detail { grid-template-columns: 2fr 1.2fr; }
/* 截止预警空态（演示稿 alert-empty）：居中大图标 + 引导链接 */
.wb-dl-empty {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; padding: 40px 12px; flex: 1 1 auto;
  color: var(--wb-aux); font-size: 13px; line-height: 1.6;
}
.wb-dl-empty p { margin: 12px 0 0; }
.wb-dl-empty .go {
  display: inline-block; margin-top: 8px; color: #7C3AED;
  font-weight: 600; cursor: pointer;
}
.wb-dl-empty:hover .go { text-decoration: underline; }

/* --- 幽灵按钮（演示稿 btn-small）：白底细边 + 悬浮紫微光 --- */
.wb-ghost-btn {
  height: 30px; padding: 0 14px; border-radius: 8px;
  background: #FFFFFF; border: 1px solid #E5E7EB; color: var(--wb-aux);
}
.wb-ghost-btn:hover {
  border-color: #7C3AED; color: #7C3AED; background: #F5F3FF;
  box-shadow: 0 0 12px rgba(124, 58, 237, 0.1);
}

/* ============================================================
   v126.32 工作台首页·全局紧凑化重构（高信息密度 + SaaS 质感）
   —— 左侧侧边栏零改动；KPI 卡片行已彻底移除（函数+死规则全清）
   ============================================================ */

/* --- 第二部分：全局间距 / 内边距 / 圆角 / 紫韵阴影 --- */
.wb-body { gap: 12px; }
.wb-welcome { margin-bottom: 4px; }   /* 12px 容器 gap + 4px = 问候语底部间距 16px */
.wb-body .wb-card {
  padding: 16px;
  border-radius: 16px;
  border-color: rgba(255, 255, 255, 0.8);
  box-shadow: 0 2px 10px rgba(124, 58, 237, 0.06), 0 1px 2px rgba(16, 24, 40, 0.03);
}
.wb-body .wb-card:hover {
  border-color: rgba(255, 255, 255, 0.8);
  box-shadow: 0 8px 24px rgba(124, 58, 237, 0.10), 0 2px 6px rgba(16, 24, 40, 0.05);
}
.wb-card-head { margin-bottom: 10px; }
.wb-grid-main { gap: 12px; }
.wb-grid-2 { gap: 12px; }
.wb-grid-detail { gap: 12px; }

/* --- 第三部分-1：路线图卡片（height auto + 16/24 内边距 + 步骤垂直居中） --- */
.wb-card.wb-roadmap-card { height: auto; min-height: 0; padding: 16px 24px; }
.wb-roadmap { display: flex; align-items: center; height: auto; padding: 8px 0 0; }
.wb-rm-step { display: flex; flex-direction: column; align-items: center; justify-content: center; }
.wb-rm-dot { width: 30px; height: 30px; margin: 0 auto 6px; font-size: 13px; }
.wb-rm-label { font-size: 13px; }
.wb-rm-desc { font-size: 12px; }

/* --- 第三部分-2：流水线看板（列距 8 / 列内边距 10 / 小卡 8 / 空态 60px） --- */
.wb-kanban { gap: 8px; }
.wb-kcol { padding: 10px; min-height: 0; border-radius: 10px; }
.wb-kcol-body { gap: 8px; margin-top: 8px; }
.wb-kjob { padding: 8px; gap: 5px; border-radius: 8px; }
.wb-kjob:hover { transform: translateY(-1px); }
.wb-kavatar { width: 22px; height: 22px; border-radius: 7px; font-size: 10px; }
.wb-kempty { flex: 0 0 auto; min-height: 60px; padding: 8px 6px; gap: 4px; border-radius: 8px; }
.wb-kempty span { font-size: 11px; }
.wb-kempty a { font-size: 11px; }

/* --- 第三部分-3：AI 诊断卡（条目 10px / gap 8 / 字号 11-12 / 寄语 10px） --- */
.wb-ai-card .wb-diag { gap: 8px; }
.wb-ai-card .wb-diag-item { padding: 10px; border-radius: 10px; }
.wb-ai-card .wb-diag-text { font-size: 12px; line-height: 1.5; }
.wb-diag-tag { font-size: 11px; padding: 2px 7px; border-radius: 5px; }
.wb-ai-card .wb-diag-love { padding: 10px; font-size: 11.5px; line-height: 1.5; border-radius: 10px; }

/* --- 第三部分-4：图表区压缩至 100px（趋势数据卡横排 / Donut 70px） --- */
.wb-chart { height: 100px; }
.wb-legend { margin-top: 4px; }
.wb-legend span { font-size: 12px; }
.wb-trend-fb {
  min-height: 0; height: 100px;
  display: grid; grid-template-columns: 40px 1fr; grid-template-rows: auto auto;
  column-gap: 14px; row-gap: 3px; align-items: center;
  padding: 8px 6px; text-align: left;
}
.wb-trend-fb-badge { grid-row: 1 / 3; width: 40px; height: 40px; border-radius: 12px; }
.wb-trend-fb-badge svg { width: 20px; height: 20px; }
.wb-trend-fb-main { font-size: 22px; font-weight: 800; letter-spacing: -0.5px; }
.wb-trend-fb-sub { font-size: 12px; }
.wb-donut-wrap { padding: 4px 0 2px; gap: 4px; }
.wb-donut-sub { font-size: 11px; }
.wb-dist-empty { padding: 10px 0; }

/* --- 第四部分-1：投递明细表（表头 8/12 / 行高 44 / 字号 12 / 紫色胶囊标签） --- */
.wb-detail-card .wb-table th { padding: 8px 12px; font-size: 12px; }
.wb-detail-card .wb-table td { padding: 8px 12px; height: 44px; font-size: 12px; vertical-align: middle; }
.wb-detail-card .wb-table .c-company { font-size: 12px; }
.wb-detail-card .wb-table .wb-tag {
  background: #F5F3FF; color: #7C3AED; border: 1px solid #EDE9FE;
  border-radius: 999px; padding: 3px 10px; font-size: 11px; font-weight: 600;
}
.wb-mini-btn { height: 28px; padding: 0 10px; font-size: 12px; }

/* --- 第四部分-2：网申截止预警（条目 10px / gap 8 / 空态 28px 图标 + 11px 文字） --- */
.wb-dl-item { padding: 10px 2px; gap: 8px; min-height: 0; }
.wb-dl-empty { padding: 14px 8px; font-size: 11px; line-height: 1.8; }
.wb-dl-empty svg { width: 28px; height: 28px; }
.wb-dl-empty p { margin: 6px 0 0; }
.wb-dl-title { font-size: 12.5px; }
.wb-dl-meta { gap: 8px; margin-top: 4px; }
.wb-dl-badge { font-size: 11px; }
.wb-dl-date { font-size: 11px; }
.wb-dl-btn { height: 28px; padding: 0 10px; font-size: 11px; border-radius: 7px; }

/* --- 幽灵按钮紧凑化 --- */
.wb-ghost-btn { height: 28px; padding: 0 12px; font-size: 12px; }

/* ============================================================
   v126.36 工作台首页·UI Polish（一线 SaaS 质感升级）
   —— 只动视觉层：功能 / 数据联动 / 紧凑布局全部保持不变
   ============================================================ */

/* --- 第一部分：全局阴影与背景质感 --- */
.wb-body {
  background: linear-gradient(135deg, #F8F9FC 0%, #F3F4F9 100%);
}
.wb-body .wb-card {
  border: 1px solid rgba(255, 255, 255, 0.8);
  box-shadow: 0 4px 20px rgba(16, 24, 40, 0.03), 0 1px 3px rgba(16, 24, 40, 0.02);
}
.wb-body .wb-card:hover {
  box-shadow: 0 8px 28px rgba(16, 24, 40, 0.05), 0 2px 6px rgba(16, 24, 40, 0.03);
}

/* --- 第二部分：问候与路线图精致化 --- */
.wb-welcome h1 { font-size: 22px; letter-spacing: -0.4px; }
.wb-welcome-date {
  background: #FFFFFF;
  box-shadow: 0 1px 3px rgba(16, 24, 40, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.9);
}
/* 路线图步骤圆圈：柔和投影；当前步品牌紫 + 一圈光晕（呼吸动画退役，改静态光晕） */
.wb-rm-dot {
  box-shadow: 0 2px 6px rgba(16, 24, 40, 0.08);
}
.wb-rm-step.done .wb-rm-dot {
  box-shadow: 0 2px 6px rgba(5, 150, 105, 0.16);
}
.wb-rm-step.current .wb-rm-dot {
  background: #7C3AED;
  animation: none;
  box-shadow: 0 0 0 6px rgba(124, 58, 237, 0.15);
}
/* 连接线：已完成/当前步绿 / 未完成浅灰（v126.49：#F3F4F6 白卡片上不可见 → #E5E7EB 可见浅灰；
   top 14px = 30px 圆心 15px - 1px，2px 线像素级居中） */
.wb-rm-line { height: 2px; background: #E5E7EB; top: 14px; }
.wb-rm-step.done .wb-rm-line,
.wb-rm-step.current .wb-rm-line { background: var(--wb-ok); }
/* 步骤文字：标题 12px 加粗 / 描述 10px 浅灰 */
.wb-rm-label { font-size: 12px; font-weight: 700; }
.wb-rm-desc { font-size: 10px; color: #9CA3AF; margin-top: 2px; }

/* --- 第三部分：看板色彩与岗位小卡重绘 --- */
.wb-kcol { border-top-width: 2px; }
.wb-kcol.col-applied   { background: linear-gradient(180deg, #F9FAFB 0%, #F3F4F6 100%); border-top: 2px solid #9CA3AF; }
.wb-kcol.col-test      { background: linear-gradient(180deg, #EFF6FF 0%, #DBEAFE 100%); border-top: 2px solid #3B82F6; }
.wb-kcol.col-interview { background: linear-gradient(180deg, #FFF7ED 0%, #FFEDD5 100%); border-top: 2px solid #F97316; }
.wb-kcol.col-offer     { background: linear-gradient(180deg, #ECFDF5 0%, #D1FAE5 100%); border-top: 2px solid #10B981; }
/* 岗位小卡：左侧 3px 品牌紫渐变竖线（伪类） */
.wb-kjob { position: relative; }
.wb-kjob::before {
  content: ''; position: absolute; left: 0; top: 7px; bottom: 7px;
  width: 3px; border-radius: 2px;
  background: linear-gradient(180deg, #A78BFA, #7C3AED);
  opacity: .85;
}
.wb-kjob:hover::before { opacity: 1; }
.wb-kjob-co { font-weight: 700; color: #1F2937; }
/* 岗位 + 日期一行（JS 已合并为 .wb-kjob-sub），降低卡高 */
.wb-kjob-sub {
  display: flex; align-items: center; justify-content: space-between;
  gap: 6px; min-width: 0;
}
.wb-kjob-role { color: #9CA3AF; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; flex: 1 1 auto; }
.wb-kjob-date { color: #9CA3AF; white-space: nowrap; }
/* 空列：虚线变浅、内容垂直居中 */
.wb-kempty { border: 1px dashed #D1D5DB; min-height: 64px; }

/* --- 第四部分：AI 诊断卡（核心卖点发光） ---
   注意：必须用 .wb-body .wb-card.wb-ai-card（0,3,0）压过上方 .wb-body .wb-card 通用阴影（0,2,0），
   hover 态用 (0,4,0) 压过 .wb-body .wb-card:hover，否则光晕被通用规则覆盖 */
.wb-body .wb-card.wb-ai-card {
  background: linear-gradient(180deg, #FFFFFF 0%, #FBF9FF 100%);
  border-color: rgba(124, 58, 237, 0.10);
  box-shadow: 0 12px 32px rgba(124, 58, 237, 0.10), 0 4px 12px rgba(16, 24, 40, 0.03);
}
.wb-body .wb-card.wb-ai-card:hover {
  border-color: rgba(124, 58, 237, 0.14);
  box-shadow: 0 16px 40px rgba(124, 58, 237, 0.14), 0 4px 12px rgba(16, 24, 40, 0.04);
}
/* 诊断标签：浅色底 + 深色字 + 左侧小圆点 */
.wb-diag-tag { display: inline-flex; align-items: center; gap: 5px; }
.wb-diag-tag::before {
  content: ''; width: 6px; height: 6px; border-radius: 50%; flex: none;
}
.wb-diag-tag.red    { background: #FEF2F2; color: #DC2626; }
.wb-diag-tag.red::before    { background: #DC2626; }
.wb-diag-tag.yellow { background: #FFFBEB; color: #D97706; }
.wb-diag-tag.yellow::before { background: #D97706; }
.wb-diag-tag.green  { background: #ECFDF5; color: #059669; }
.wb-diag-tag.green::before  { background: #059669; }
/* AI 伙伴寄语：淡紫光晕 + 发光 ✨（0,3,0 选择器压过旧 .wb-ai-card .wb-diag-love 的 inset 阴影） */
.wb-body .wb-ai-card .wb-diag-love {
  background: linear-gradient(135deg, #F5F3FF 0%, #FBF9FF 60%, #FFFFFF 100%);
  box-shadow: 0 0 20px rgba(124, 58, 237, 0.08), inset 0 1px 3px rgba(124, 58, 237, 0.05);
  color: #6D28D9;
}
.wb-love-spark {
  font-style: normal; display: inline-block;
  filter: drop-shadow(0 0 5px rgba(168, 130, 252, 0.7));
  animation: wb-sparkle 2.4s ease-in-out infinite;
}
@keyframes wb-sparkle {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: .72; transform: scale(.92); }
}

/* --- 第五部分：图表区与底部表格打磨 --- */
.wb-trend-fb {
  background: linear-gradient(135deg, #F5F3FF 0%, #FFFFFF 100%);
  border-radius: 12px;
}
.wb-detail-card .wb-table th { font-weight: 700; background: #F9FAFB; }
.wb-detail-card .wb-table tbody tr:hover td { background: #F9FAFB; }
/* 状态胶囊：白底 + 彩色小圆点（● 已投递 式样） */
.wb-detail-card .wb-table .wb-tag {
  background: #FFFFFF; border: 1px solid #EDE9FE; color: #4B5563;
  display: inline-flex; align-items: center; gap: 5px;
}
.wb-detail-card .wb-table .wb-tag::before {
  content: ''; width: 6px; height: 6px; border-radius: 50%; flex: none;
}
.wb-detail-card .wb-table .wb-tag.purple::before { background: #7C3AED; }
.wb-detail-card .wb-table .wb-tag.blue::before   { background: #2C54D6; }
.wb-detail-card .wb-table .wb-tag.green::before  { background: #067A57; }
.wb-detail-card .wb-table .wb-tag.orange::before { background: #D97706; }
.wb-detail-card .wb-table .wb-tag.gray::before   { background: #9CA3AF; }
/* 网申预警空态：小号品牌紫线框闹钟 + 居中文案（JS 已换图标） */
.wb-dl-empty svg { width: 24px; height: 24px; }

/* ==========================================================================
   v3.0 指挥中心（工作台总览升级）：动态数据行 + 今日行动 CTA + 步骤态
   依赖 fonts.css 排版变量（--text-* / --color-* / .metric-value / .step-*）
   ========================================================================== */

/* ---- 欢迎条右侧：今日行动 CTA（主色按钮，hover 深化） ---- */
.wb-welcome { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; }
.wb-welcome-right { display: flex; flex-direction: column; align-items: flex-end; gap: 10px; flex-shrink: 0; }
.wb-cta-btn {
  background: var(--color-primary, #6366F1); color: #fff; border: none; cursor: pointer;
  font-family: var(--font-sans); font-size: var(--text-sm, 14px); font-weight: var(--font-weight-semibold, 600);
  line-height: var(--leading-snug, 1.375); padding: 10px 18px; border-radius: 10px;
  box-shadow: 0 4px 14px rgba(99, 102, 241, .32);
  transition: background .15s ease, transform .15s ease, box-shadow .15s ease;
}
.wb-cta-btn:hover { background: var(--color-primary-hover, #4F46E5); transform: translateY(-1px); box-shadow: 0 6px 18px rgba(79, 70, 229, .38); }
.wb-cta-btn:active { transform: translateY(0); }

/* ---- 动态数据行：4 卡（等宽数字 .metric-value · 深灰标签 · 悬浮上浮） ---- */
.wb-metrics {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px;
  margin: 0 0 18px 0; min-width: 0;
}
.wb-metric {
  background: #fff; border: 1px solid var(--color-border, #E5E7EB); border-radius: 12px;
  padding: 16px 18px 14px; cursor: pointer; text-align: left; min-width: 0; overflow: hidden;
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
.wb-metric:hover {
  transform: translateY(-2px); border-color: var(--color-primary, #6366F1);
  box-shadow: 0 8px 22px rgba(99, 102, 241, .12);
}
.wb-metric-label {
  display: flex; align-items: center; gap: 6px;
  font-size: var(--text-xs, 12px); color: var(--color-text-muted, #6B7280);
  letter-spacing: var(--tracking-wide, 0.02em); margin-bottom: 6px;
}
.wb-metric-label .wb-ico { width: 14px; height: 14px; }
.wb-metric-val {
  font-size: var(--text-3xl, 30px); line-height: var(--leading-tight, 1.25);
  margin-bottom: 4px;
}
.wb-metric-sub { font-size: var(--text-xs, 12px); color: var(--color-text-muted, #6B7280); line-height: var(--leading-normal, 1.5); }

/* ---- 路线图步骤态适配（.step-* 全局类来自 fonts.css，此处做布局衔接） ---- */
.wb-rm-step { transition: opacity .25s ease, transform .25s ease, box-shadow .25s ease; }
.wb-rm-step.step-stuck .wb-rm-label { color: var(--color-warning, #F59E0B); }
.wb-rm-step.step-stuck .wb-rm-dot { border-color: var(--color-warning, #F59E0B); color: var(--color-warning, #F59E0B); }

/* ---- 响应式：数据行 4 → 2 列 ---- */
@media (max-width: 1000px) {
  .wb-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
  .wb-welcome { flex-direction: column; }
  .wb-welcome-right { flex-direction: row; align-items: center; width: 100%; justify-content: space-between; flex-wrap: wrap; gap: 8px; }
  .wb-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .wb-metric { padding: 12px 14px 10px; }
  .wb-metric-val { font-size: 24px; }
}

/* ---- v3.0 移动端彻底修复：grid 轨道收敛 + 表格容器内横滚（根治 554px 溢出） ----
   根因：.wb-table min-width 720px + 各卡片固有最小内容宽，把 .wb-body 的
   auto 轨道撑到 554px，超出 375px 视口（存量问题，本轮一并根治）。 */
@media (max-width: 768px) {
  .wb-body { grid-template-columns: minmax(0, 1fr); }
  .wb-body > * { min-width: 0; max-width: 100%; }
  .wb-grid-main > * { min-width: 0; }
  .wb-card, .wb-welcome, .wb-metrics, .wb-roadmap-card { min-width: 0; max-width: 100%; }
  /* 投递明细表：卡片内横向滚动（表格保持可读列宽，页面不再被撑爆） */
  .wb-detail-card { padding: 14px; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .wb-table { min-width: 640px; }
  .wb-pipe-guide-text { font-size: 14px; line-height: 1.6; }
}

/* ==========================================================================
   v1.1 UI 细节微调：数字强制等宽 / 问候语行高 / 推荐卡与Checklist / 移动端路线图
   ========================================================================== */

/* ---- ① 全站数字强制等宽（问候语数字/日期胶囊/路线图步骤号/看板计数，极客且专业） ---- */
.wb-num, .wb-welcome-date, .wb-rm-dot, .wb-kcount {
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
  font-weight: 700;
}
/* 问候语长文本行高 1.75（阅读不挤） */
.wb-welcome p { line-height: var(--leading-relaxed, 1.75); }

/* ---- ③ 今日高匹配岗位推荐卡（<10 投递替换空图表） ---- */
.wb-reco-card { min-width: 0; }
.wb-reco-list { display: flex; flex-direction: column; gap: 10px; }
.wb-reco-job {
  display: flex; align-items: center; gap: 14px;
  border: 1px solid var(--color-border, #E5E7EB); border-radius: 10px;
  padding: 12px 14px; cursor: pointer; background: #fff;
  transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.wb-reco-job:hover {
  border-color: var(--color-primary, #6366F1);
  box-shadow: 0 6px 16px rgba(99, 102, 241, .12);
  transform: translateY(-1px);
}
.wb-reco-score {
  font-size: 20px; flex-shrink: 0; min-width: 58px; text-align: center;
  background: #EEF2FF; border-radius: 8px; padding: 8px 6px; line-height: 1.1;
}
.wb-reco-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.wb-reco-title {
  font-size: var(--text-sm, 14px); font-weight: var(--font-weight-semibold, 600);
  color: var(--color-text-main, #1F2937);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.wb-reco-co { font-size: var(--text-xs, 12px); color: var(--color-text-muted, #6B7280);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wb-reco-sal {
  flex-shrink: 0; font-size: var(--text-sm, 14px); font-weight: var(--font-weight-semibold, 600);
  color: #D97706; font-variant-numeric: tabular-nums;
}

/* ---- ③-b 简历完善度 Checklist（无推荐数据时的降级态） ---- */
.wb-ck-list { display: flex; flex-direction: column; gap: 8px; }
.wb-ck-item {
  font-size: var(--text-sm, 14px); color: var(--color-text-main, #1F2937);
  line-height: var(--leading-normal, 1.5);
  border: 1px dashed var(--color-border, #E5E7EB); border-radius: 8px; padding: 10px 12px;
}
.wb-ck-item.done { color: var(--color-text-muted, #6B7280); background: var(--color-success-bg, #ECFDF5); border-style: solid; border-color: #B7E9D5; }
.wb-ck-item a { color: var(--color-primary, #6366F1); cursor: pointer; font-weight: var(--font-weight-semibold, 600); margin-left: 4px; }

/* ---- ④ 移动端路线图：竖向连接线清晰可见 + stuck 黄框不溢出 ---- */
@media (max-width: 768px) {
  .wb-rm-step { position: relative; }
  .wb-rm-step::before {
    content: ''; position: absolute; left: 20px; top: 8px; bottom: -8px; width: 2px;
    background: linear-gradient(180deg, #C7CBF9, #E5E7EB); z-index: 0; border-radius: 1px;
  }
  .wb-rm-step:last-child::before { display: none; }
  .wb-rm-step.step-completed::before { background: #D1FAE5; }
  .wb-rm-step.step-stuck::before { background: #FDE68A; }
  .wb-rm-dot { position: relative; z-index: 1; background: #fff; flex-shrink: 0; }
  /* stuck 黄框：内缩 padding + 边框盒模型，绝不溢出屏幕 */
  .wb-rm-step.step-stuck {
    box-sizing: border-box; max-width: 100%;
    margin: 2px 0; padding: 10px 12px;
  }
}

/* ---------- v143：全站通用页脚（驾驶舱 .wb-main 与 工具页 #page-tool 共用，吸底不悬空） ---------- */
.site-footer {
  margin-top: auto;               /* 关键：父容器为纵向 flex（.wb-main / #page-tool），内容不足时顶到最底 */
  flex-shrink: 0;
  padding: 24px 0 28px;
  border-top: 1px solid #E5E7EB; /* 极细浅灰分隔线 */
  text-align: center;
  font-size: 12px;
  color: #9CA3AF;
  line-height: 1.7;
  background: transparent;        /* 背景随主背景 */
}
.site-footer a { color: #9CA3AF; text-decoration: none; transition: color .16s ease; }
.site-footer a:hover { color: #7B5CFF; }
/* 工具页容器由 block 改纵向 flex：页脚 margin-top:auto 才能吸底（单块级子元素在 flex column 中布局等同块流） */
body.wb-tool #page-tool { display: flex; flex-direction: column; }
/* 关键修复：.tool-page 基础规则是 margin:0 auto —— flex 项的交叉轴 auto margin 会取消 stretch，
   宽度退化为 fit-content 被宽表格撑爆（移动端横向溢出）。显式 width:100% 定宽，
   max-width:1200 与 margin:auto 居中均保留（桌面端视觉不变）。 */
body.wb-tool #page-tool > .tool-page { width: 100%; }
/* 移动端：避开底部固定移动 Tab 栏（v197：断点同步 1023px） */
@media (max-width: 1023px) {
  .site-footer { padding: 18px 0 84px; }
}

/* ---------- v144：求职行动路线图重构（Stripe/Linear 级）——替代旧 .wb-rm-* ----------
   设计：贯穿背景线双段（绿实线到当前节点圆心 + 浅灰虚线到终点）、
   节点白边圆圈切断连线（z 高于线）、当前节点品牌紫 + 极光阴影 + 脉冲呼吸环 + 放大一圈、
   副标题当前节点胶囊强调；旧 .wb-roadmap/.wb-rm-* 规则随 DOM 结构替换自然失效，保留无副作用。 */
.wb-road-track { position: relative; display: flex; align-items: flex-start; padding: 6px 0 6px; }
/* 背景贯穿线：绝对定位于节点圆心高度（ring 高 48px → 圆心 24px，线高 2px → top 23px） */
.wb-road-line { position: absolute; top: 29px; left: 0; right: 0; z-index: 1; pointer-events: none; }
.wb-road-line-done { height: 2px; background: #10B981; }                                  /* 已完成：绿色实线 */
.wb-road-line-todo { height: 0; border-top: 2px dashed #E2E8F0; }                         /* 未完成：浅灰虚线 */
/* 节点列 */
.wb-road-node { flex: 1 1 0; min-width: 0; text-align: center; cursor: pointer; position: relative; z-index: 2; }
.wb-road-ring { height: 48px; display: flex; align-items: center; justify-content: center; }
/* 圆圈基础：白边（border-4 white）切断背后连线；未完成态 */
.wb-road-dot {
  width: 40px; height: 40px; border-radius: 50%; box-sizing: border-box;
  border: 4px solid #FFFFFF;
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; font-weight: 700; font-family: var(--wb-font, inherit); line-height: 1;
  background: #F8FAFC; color: #94A3B8;
  box-shadow: 0 1px 2px rgba(15, 23, 42, .05);
  transition: transform .3s ease, box-shadow .3s ease;
  position: relative;
  z-index: 2; /* 移动端竖排：竖线(::before z=1)与 dot 同处节点 stacking context，dot 须压线（白边切断） */
}
.wb-road-check { display: block; }
/* 已完成：浅绿底 + 深绿勾号，无阴影 */
.wb-road-node.is-done .wb-road-dot { background: #DCFCE7; color: #059669; box-shadow: none; }
/* 当前进行中：品牌紫渐变 + 白数字 + 极光阴影 + 脉冲呼吸环 + 放大一圈（48px vs 40px） */
.wb-road-node.is-current .wb-road-dot {
  width: 48px; height: 48px; font-size: 16px;
  background: linear-gradient(135deg, #7B5CFF, #4F6BFF); color: #FFFFFF;
  box-shadow: 0 0 15px rgba(124, 58, 237, .5);
}
.wb-road-node.is-current .wb-road-dot::after {
  content: ''; position: absolute; inset: -2px; border-radius: 50%;
  border: 2px solid rgba(123, 92, 255, .55); pointer-events: none;
  animation: wb-road-ring 2s cubic-bezier(.4, 0, .2, 1) infinite;
}
@keyframes wb-road-ring {
  0% { transform: scale(1); opacity: .8; }
  70%, 100% { transform: scale(1.42); opacity: 0; }
}
/* 悬停微交互：轻微放大 */
.wb-road-node:hover .wb-road-dot { transform: scale(1.1); }
/* 文字排版 */
.wb-road-label { font-size: 14px; font-weight: 700; color: #334155; margin-top: 6px; line-height: 1.3; }
.wb-road-node.is-todo .wb-road-label { color: #94A3B8; }
.wb-road-node.is-current .wb-road-label { color: #7B5CFF; }
.wb-road-node.is-stuck .wb-road-label { color: #D97706; }
.wb-road-desc { font-size: 12px; font-weight: 500; color: #94A3B8; margin-top: 4px; line-height: 1.6; }
/* 当前节点副标题：品牌紫胶囊强调 */
.wb-road-desc-pill {
  display: inline-block; padding: 2px 10px; border-radius: 999px;
  background: rgba(123, 92, 255, .10); color: #7B5CFF; font-weight: 600;
}
.wb-road-pill-warn { background: rgba(245, 158, 11, .12); color: #D97706; }
/* ---------- 移动端 ≤768px：竖排 + 左侧竖向连接线（完成段绿实线 / 未完成段灰虚线） ---------- */
@media (max-width: 768px) {
  .wb-road-track { flex-direction: column; align-items: stretch; gap: 0; padding: 4px 0; }
  .wb-road-line { display: none; } /* 水平贯穿线退场，改用节点级竖线 */
  .wb-road-node { display: flex; align-items: center; text-align: left; gap: 12px; padding: 7px 2px; }
  .wb-road-node::before {
    content: ''; position: absolute; left: 25px; top: 31px; bottom: 0;
    border-left: 2px dashed #E2E8F0; z-index: 1; pointer-events: none;
  }
  .wb-road-node.is-done::before {
    border-left-style: solid; border-left-color: #10B981;
  }
  .wb-road-node:last-child::before { display: none; }
  .wb-road-node.is-stuck { box-sizing: border-box; max-width: 100%; margin: 2px 0; padding: 8px 10px; border: 1px solid #FDE68A; border-radius: 10px; background: #FFFBEB; }
  .wb-road-node.is-stuck::before { left: 33px; }
  .wb-road-ring { height: 48px; width: 48px; flex-shrink: 0; justify-content: center; }
  .wb-road-label { margin-top: 0; font-size: 13px; }
  .wb-road-desc { margin-top: 1px; }
}
