/* 央国企采购订单商机一体化平台 - 合伙人工作台样式（仿 partner.czgjp360.com） */

:root {
  --cz-primary: rgb(22, 112, 96);
  --cz-primary-rgb: 22, 112, 96;
  --cz-ink: rgb(24, 51, 47);
  --cz-ink-2: rgb(18, 63, 57);
  --cz-ink-3: rgb(14, 81, 70);
  --cz-tab: rgb(21, 95, 83);
  --cz-muted: rgb(113, 128, 125);
  --cz-muted-2: rgb(85, 113, 108);
  --cz-muted-3: rgb(122, 137, 134);
  --cz-table-text: rgb(50, 75, 71);
  --cz-table-th-text: rgb(76, 98, 94);
  --cz-table-th-bg: rgb(228, 239, 235);
  --cz-body: rgb(245, 247, 246);
  --cz-sidebar-grad: linear-gradient(rgb(18, 63, 57), rgb(11, 45, 42));

  --el-color-primary: var(--cz-primary);
  --el-color-primary-light-3: rgb(74, 142, 128);
  --el-color-primary-light-5: rgb(104, 163, 151);
  --el-color-primary-light-7: rgb(150, 193, 184);
  --el-color-primary-light-9: rgb(206, 230, 225);
  --el-border-radius-base: 9px;
  --el-font-family: Inter, "Avenir Next", "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;

  /* ===== 侧边栏主题变量（默认 = 墨绿深侧栏；各 data-theme 覆盖） ===== */
  --cz-sidebar-glow: rgba(73, 184, 158, 0.22);   /* 侧栏左上角光晕 */
  --cz-side-thumb: rgba(255, 255, 255, 0.16);   /* 侧栏滚动条 */
  --cz-side-text: rgba(255, 255, 255, 0.82);    /* 侧栏主文字 */
  --cz-side-strong: rgb(255, 253, 248);         /* 侧栏强文字（品牌名/hover） */
  --cz-side-faint: rgba(255, 255, 255, 0.46);   /* 分组标题/单位名 */
  --cz-side-item: rgba(255, 255, 255, 0.7);     /* 导航项文字 */
  --cz-side-hover: rgba(255, 255, 255, 0.06);   /* 导航项 hover 底 */
  --cz-side-active-bg: rgba(255, 255, 255, 0.15); /* 跟进页窄侧栏选中底 */
  --cz-side-line: rgba(255, 255, 255, 0.08);    /* 分隔线 */
  --cz-side-line-strong: rgba(255, 255, 255, 0.2); /* 退出按钮描边 */
  --cz-side-active-grad: linear-gradient(135deg, rgb(255, 250, 240), rgb(245, 230, 201)); /* 选中导航 pill */
  --cz-side-active-text: rgb(18, 63, 57);       /* 选中 pill 文字 */
  --cz-side-active-shadow: rgba(0, 0, 0, 0.17) 0 9px 24px 0;
}

/* ===== 主题：橘色（深暖棕侧栏） ===== */
html[data-theme="orange"] {
  --cz-primary: rgb(204, 108, 24);
  --cz-primary-rgb: 204, 108, 24;
  --cz-tab: rgb(184, 90, 18);
  --el-color-primary: var(--cz-primary);
  --el-color-primary-light-3: rgb(228, 150, 90);
  --el-color-primary-light-5: rgb(240, 178, 128);
  --el-color-primary-light-7: rgb(248, 210, 180);
  --el-color-primary-light-9: rgb(253, 235, 220);
  --cz-sidebar-grad: linear-gradient(rgb(102, 52, 14), rgb(72, 34, 7));
  --cz-sidebar-glow: rgba(255, 170, 80, 0.22);
  --cz-side-active-text: rgb(94, 48, 12);
}

/* ===== 主题：蓝色（深藏青侧栏） ===== */
html[data-theme="blue"] {
  --cz-primary: rgb(32, 96, 178);
  --cz-primary-rgb: 32, 96, 178;
  --cz-tab: rgb(28, 84, 160);
  --el-color-primary: var(--cz-primary);
  --el-color-primary-light-3: rgb(86, 135, 200);
  --el-color-primary-light-5: rgb(128, 166, 218);
  --el-color-primary-light-7: rgb(176, 200, 235);
  --el-color-primary-light-9: rgb(224, 236, 248);
  --cz-sidebar-grad: linear-gradient(rgb(17, 45, 94), rgb(10, 27, 60));
  --cz-sidebar-glow: rgba(96, 150, 245, 0.22);
  --cz-side-active-grad: linear-gradient(135deg, rgb(240, 246, 255), rgb(222, 234, 250));
  --cz-side-active-text: rgb(15, 42, 88);
  --cz-side-active-shadow: rgba(0, 0, 0, 0.22) 0 9px 24px 0;
}

/* ===== 主题：灰色（深炭灰侧栏） ===== */
html[data-theme="gray"] {
  --cz-primary: rgb(87, 96, 108);
  --cz-primary-rgb: 87, 96, 108;
  --cz-tab: rgb(75, 83, 94);
  --el-color-primary: var(--cz-primary);
  --el-color-primary-light-3: rgb(138, 145, 155);
  --el-color-primary-light-5: rgb(170, 176, 184);
  --el-color-primary-light-7: rgb(205, 209, 214);
  --el-color-primary-light-9: rgb(233, 235, 238);
  --cz-sidebar-grad: linear-gradient(rgb(58, 62, 68), rgb(37, 40, 45));
  --cz-sidebar-glow: rgba(200, 205, 212, 0.14);
  --cz-side-active-grad: linear-gradient(135deg, rgb(248, 249, 250), rgb(232, 234, 237));
  --cz-side-active-text: rgb(45, 49, 55);
}

/* ===== 浅色系公共变量（浅色侧栏 + 深色文字） ===== */
html[data-theme="light-yellow"],
html[data-theme="light-pink"],
html[data-theme="white"] {
  --cz-side-thumb: rgba(30, 30, 30, 0.18);
  --cz-side-text: rgb(60, 52, 40);
  --cz-side-strong: rgb(38, 32, 22);
  --cz-side-faint: rgba(60, 52, 40, 0.52);
  --cz-side-item: rgba(60, 52, 40, 0.78);
  --cz-side-hover: rgba(30, 30, 30, 0.06);
  --cz-side-active-bg: rgba(30, 30, 30, 0.08);
  --cz-side-line: rgba(30, 30, 30, 0.1);
  --cz-side-line-strong: rgba(30, 30, 30, 0.28);
  --cz-side-active-grad: linear-gradient(135deg, rgba(30, 30, 30, 0.07), rgba(30, 30, 30, 0.03));
  --cz-side-active-text: rgb(30, 26, 18);
  --cz-side-active-shadow: rgba(30, 30, 30, 0.08) 0 6px 16px 0;
}

/* ===== 主题：浅黄色（奶油侧栏 + 琥珀强调） ===== */
html[data-theme="light-yellow"] {
  --cz-primary: rgb(163, 108, 12);
  --cz-primary-rgb: 163, 108, 12;
  --cz-tab: rgb(150, 98, 10);
  --cz-ink: rgb(60, 46, 20);
  --cz-muted: rgb(130, 112, 78);
  --cz-muted-2: rgb(120, 98, 60);
  --cz-muted-3: rgb(140, 122, 90);
  --cz-body: rgb(250, 248, 242);
  --el-color-primary: var(--cz-primary);
  --el-color-primary-light-3: rgb(206, 168, 96);
  --el-color-primary-light-5: rgb(222, 192, 136);
  --el-color-primary-light-7: rgb(240, 220, 178);
  --el-color-primary-light-9: rgb(250, 242, 222);
  --cz-sidebar-grad: linear-gradient(rgb(255, 249, 232), rgb(249, 238, 208));
  --cz-sidebar-glow: rgba(234, 179, 8, 0.16);
  --cz-side-text: rgb(99, 71, 22);
  --cz-side-strong: rgb(74, 52, 10);
  --cz-side-faint: rgba(99, 71, 22, 0.55);
  --cz-side-item: rgba(99, 71, 22, 0.78);
  --cz-side-hover: rgba(163, 108, 12, 0.09);
  --cz-side-active-bg: rgba(163, 108, 12, 0.14);
  --cz-side-line: rgba(99, 71, 22, 0.14);
  --cz-side-line-strong: rgba(99, 71, 22, 0.3);
  --cz-side-active-grad: linear-gradient(135deg, rgba(163, 108, 12, 0.16), rgba(163, 108, 12, 0.07));
  --cz-side-active-text: rgb(133, 88, 10);
  --cz-side-active-shadow: rgba(120, 80, 10, 0.12) 0 6px 16px 0;
  --cz-side-thumb: rgba(99, 71, 22, 0.22);
}

/* ===== 主题：浅粉（樱粉侧栏 + 玫红强调） ===== */
html[data-theme="light-pink"] {
  --cz-primary: rgb(190, 66, 96);
  --cz-primary-rgb: 190, 66, 96;
  --cz-tab: rgb(176, 56, 86);
  --cz-ink: rgb(74, 32, 46);
  --cz-muted: rgb(146, 104, 118);
  --cz-muted-2: rgb(140, 82, 100);
  --cz-muted-3: rgb(156, 112, 126);
  --cz-body: rgb(252, 246, 248);
  --el-color-primary: var(--cz-primary);
  --el-color-primary-light-3: rgb(222, 128, 152);
  --el-color-primary-light-5: rgb(236, 166, 184);
  --el-color-primary-light-7: rgb(247, 205, 216);
  --el-color-primary-light-9: rgb(252, 232, 238);
  --cz-sidebar-grad: linear-gradient(rgb(255, 241, 244), rgb(252, 227, 234));
  --cz-sidebar-glow: rgba(244, 114, 182, 0.14);
  --cz-side-text: rgb(110, 36, 58);
  --cz-side-strong: rgb(88, 26, 46);
  --cz-side-faint: rgba(110, 36, 58, 0.55);
  --cz-side-item: rgba(110, 36, 58, 0.78);
  --cz-side-hover: rgba(190, 66, 96, 0.09);
  --cz-side-active-bg: rgba(190, 66, 96, 0.14);
  --cz-side-line: rgba(110, 36, 58, 0.14);
  --cz-side-line-strong: rgba(110, 36, 58, 0.3);
  --cz-side-active-grad: linear-gradient(135deg, rgba(190, 66, 96, 0.16), rgba(190, 66, 96, 0.07));
  --cz-side-active-text: rgb(160, 50, 82);
  --cz-side-active-shadow: rgba(150, 40, 80, 0.1) 0 6px 16px 0;
  --cz-side-thumb: rgba(110, 36, 58, 0.22);
}

/* ===== 主题：白色（净白侧栏 + 石板灰强调） ===== */
html[data-theme="white"] {
  --cz-primary: rgb(55, 68, 86);
  --cz-primary-rgb: 55, 68, 86;
  --cz-tab: rgb(52, 64, 80);
  --cz-ink: rgb(36, 44, 56);
  --cz-muted: rgb(107, 116, 128);
  --cz-muted-2: rgb(90, 100, 112);
  --cz-muted-3: rgb(120, 128, 138);
  --cz-body: rgb(246, 247, 249);
  --el-color-primary: var(--cz-primary);
  --el-color-primary-light-3: rgb(108, 119, 134);
  --el-color-primary-light-5: rgb(148, 157, 169);
  --el-color-primary-light-7: rgb(192, 198, 206);
  --el-color-primary-light-9: rgb(230, 233, 237);
  --cz-sidebar-grad: linear-gradient(rgb(255, 255, 255), rgb(243, 245, 247));
  --cz-sidebar-glow: rgba(100, 116, 139, 0.08);
  --cz-side-text: rgb(51, 61, 73);
  --cz-side-strong: rgb(30, 38, 48);
  --cz-side-faint: rgba(51, 61, 73, 0.52);
  --cz-side-item: rgba(51, 61, 73, 0.75);
  --cz-side-hover: rgba(55, 68, 86, 0.07);
  --cz-side-active-bg: rgba(55, 68, 86, 0.1);
  --cz-side-line: rgba(15, 23, 42, 0.1);
  --cz-side-line-strong: rgba(15, 23, 42, 0.28);
  --cz-side-active-grad: linear-gradient(135deg, rgba(55, 68, 86, 0.12), rgba(55, 68, 86, 0.05));
  --cz-side-active-text: rgb(40, 50, 64);
  --cz-side-active-shadow: rgba(15, 23, 42, 0.08) 0 6px 16px 0;
  --cz-side-thumb: rgba(51, 61, 73, 0.2);
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: Inter, "Avenir Next", "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;
  background-color: var(--cz-body);
  color: var(--cz-ink);
  -webkit-font-smoothing: antialiased;
}

#app { height: 100vh; }

/* ===== 布局 ===== */
.portal-layout {
  display: grid;
  grid-template-columns: 252px 1fr;
  height: 100vh;
  background-color: var(--cz-body);
}

/* ===== 侧边栏 ===== */
.portal-sidebar {
  display: flex;
  flex-direction: column;
  padding: 18px 14px 14px;
  color: var(--cz-side-text);
  background-image:
    radial-gradient(circle at 8% 0%, var(--cz-sidebar-glow), rgba(0, 0, 0, 0) 31%),
    var(--cz-sidebar-grad);
  border-right: 1px solid var(--cz-side-line);
  overflow: hidden;
}

.portal-sidebar::-webkit-scrollbar { width: 6px; }
.portal-sidebar::-webkit-scrollbar-thumb { background: var(--cz-side-thumb); border-radius: 3px; }

.sidebar-brand {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 0 6px;
  height: 56px;
  background: transparent;
  border: 0;
  cursor: pointer;
  text-align: left;
}

.sidebar-brand .brand-mark {
  width: 50px;
  height: 32px;
  object-fit: contain;
  flex-shrink: 0;
}

.sidebar-brand .brand-copy { line-height: 1.15; }

.sidebar-brand .brand-title {
  display: block;
  font-size: 15px;
  font-weight: 600;
  color: var(--cz-side-strong);
  letter-spacing: 0.5px;
}

.sidebar-brand .brand-sub {
  display: block;
  font-size: 10px;
  font-weight: 700;
  color: var(--cz-side-faint);
  letter-spacing: 1.4px;
  margin-top: 2px;
}

.sidebar-nav {
  margin-top: 6px;
  display: flex;
  flex-direction: column;
  gap: 18px;
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
}

.sidebar-nav::-webkit-scrollbar { width: 6px; }
.sidebar-nav::-webkit-scrollbar-thumb { background: var(--cz-side-thumb); border-radius: 3px; }
.sidebar-nav::-webkit-scrollbar-track { background: transparent; }

.nav-group { display: flex; flex-direction: column; gap: 4px; }

.nav-group-title {
  font-size: 11px;
  font-weight: 750;
  color: var(--cz-side-faint);
  letter-spacing: 0.88px;
  padding: 0 11px;
  margin: 0 0 4px;
}

.sidebar-nav-item {
  display: grid;
  align-items: center;
  gap: 11px;
  grid-template-columns: 18px 1fr;
  height: 37px;
  padding: 7px 11px;
  border-radius: 11px;
  font-size: 14px;
  font-weight: 600;
  color: var(--cz-side-item);
  background: transparent;
  border: 0;
  cursor: pointer;
  text-align: left;
  transition: color 0.2s ease, background 0.2s ease;
}

.sidebar-nav-item:hover {
  color: var(--cz-side-strong);
  background: var(--cz-side-hover);
}

.sidebar-nav-item .nav-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  font-size: 16px;
}

.sidebar-nav-item.is-active {
  color: var(--cz-side-active-text);
  background-image: var(--cz-side-active-grad);
  box-shadow: var(--cz-side-active-shadow);
}

.sidebar-nav-item.is-active:hover {
  color: var(--cz-side-active-text);
  background-image: var(--cz-side-active-grad);
}

/* ===== 工作区 ===== */
.portal-workspace {
  display: grid;
  grid-template-rows: 71px 1fr;
  height: 100vh;
  overflow: hidden;
}

/* ===== 顶栏 ===== */
.portal-header {
  position: relative;
  z-index: 60;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  height: 71px;
  padding: 10px 26px;
  background-color: rgba(248, 250, 249, 0.9);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid rgba(24, 53, 49, 0.08);
}

.header-page-copy {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}

.header-title-row {
  display: flex;
  align-items: baseline;
  gap: 14px;
}

.header-title-row strong {
  font-size: 16px;
  font-weight: 500;
  color: var(--cz-ink);
}

.header-opportunity-nav {
  display: flex;
  gap: 6px;
}

.header-opportunity-tab {
  height: 30px;
  padding: 5px 13px;
  font-size: 13px;
  font-weight: 650;
  color: var(--cz-tab);
  background: #fff;
  border: 1px solid rgba(24, 53, 49, 0.09);
  border-radius: 8px;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease;
}

.header-opportunity-tab:hover { background: rgba(var(--cz-primary-rgb), 0.08); }

.header-opportunity-tab.is-active {
  background: var(--cz-primary);
  color: #fff;
  border-color: var(--cz-primary);
}

.header-context {
  display: flex;
  align-items: center;
  gap: 12px;
}

.privacy-note {
  font-size: 13px;
  font-weight: 500;
  color: var(--cz-muted-2);
  padding: 7px 11px;
  background: rgba(var(--cz-primary-rgb), 0.05);
  border-radius: 999px;
}

.header-account {
  display: flex;
  align-items: center;
  height: 50px;
  background: rgba(255, 255, 255, 0.88);
  border: 1px solid rgba(24, 53, 49, 0.09);
  border-radius: 13px;
  overflow: hidden;
}

.header-account-summary {
  display: flex;
  align-items: center;
  gap: 9px;
  height: 40px;
  padding: 0 4px 0 4px;
  background: transparent;
  border: 0;
  cursor: pointer;
  color: var(--cz-ink);
  font-size: 15px;
  font-weight: 500;
}

.header-account-avatar {
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(var(--cz-primary-rgb), 0.1);
  border-radius: 10px;
  color: var(--cz-primary);
  font-size: 18px;
  flex-shrink: 0;
}

.header-account-name { white-space: nowrap; }

/* ===== 右上角主题换色圆形按钮 + 下拉色板 ===== */
.theme-picker {
  position: relative;
  display: inline-flex;
  align-items: center;
  margin-left: -4px;
}

.theme-circle {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  border: 2px solid #fff;
  box-shadow: 0 1px 5px rgba(24, 53, 49, 0.25);
  cursor: pointer;
  padding: 0;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.theme-circle:hover {
  transform: scale(1.12);
  box-shadow: 0 2px 8px rgba(24, 53, 49, 0.35);
}

.theme-menu {
  position: absolute;
  top: 42px;
  right: 0;
  z-index: 50;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  background: #fff;
  border: 1px solid rgba(24, 53, 49, 0.12);
  border-radius: 999px;
  box-shadow: 0 10px 30px rgba(24, 53, 49, 0.16);
}

.theme-menu::before {
  content: "";
  position: absolute;
  top: -6px;
  right: 12px;
  width: 12px;
  height: 12px;
  background: #fff;
  border-left: 1px solid rgba(24, 53, 49, 0.12);
  border-top: 1px solid rgba(24, 53, 49, 0.12);
  transform: rotate(45deg);
}

.theme-dot {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  border: 1px solid rgba(24, 53, 49, 0.15);
  cursor: pointer;
  padding: 0;
  position: relative;
  transition: transform 0.15s ease;
}

.theme-dot:hover { transform: scale(1.18); }

.theme-dot.is-on {
  border: 2px solid var(--cz-primary);
  box-shadow: 0 0 0 2px #fff inset;
  transform: scale(1.12);
  cursor: default;
}

/* ===== 主区 ===== */
.portal-main {
  padding: 20px 24px 28px;
  overflow: auto;
  background: transparent;
}

.portal-view { min-height: 100%; }

/* ===== 商机中心 / 标签页 ===== */
.opportunity-tabs .el-tabs__header {
  margin: 0 0 16px;
}

.opportunity-tabs .el-tabs__nav-wrap::after { display: none; }

.opportunity-tabs .el-tabs__item {
  height: 34px;
  padding: 0 20px 0 0;
  font-size: 14px;
  font-weight: 650;
  color: var(--cz-tab);
}

.opportunity-tabs .el-tabs__item.is-active { color: var(--cz-tab); }
.opportunity-tabs .el-tabs__active-bar { background-color: var(--cz-tab); }

.opportunity-tabs .el-tabs__item .count {
  display: inline-block;
  margin-left: 6px;
  padding: 0 7px;
  min-width: 20px;
  height: 18px;
  line-height: 18px;
  text-align: center;
  font-size: 12px;
  font-weight: 700;
  color: var(--cz-muted);
  background: rgba(var(--cz-primary-rgb), 0.08);
  border-radius: 999px;
}

/* 筛选折叠条 */
.filter-bar {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 10px;
  margin-bottom: 14px;
}

.filter-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 32px;
  padding: 0 14px;
  font-size: 13px;
  font-weight: 600;
  color: var(--cz-ink);
  background: #fff;
  border: 1px solid rgba(24, 53, 49, 0.09);
  border-radius: 9px;
  cursor: pointer;
  transition: all .2s ease;
}

.filter-toggle:hover { background: rgb(237, 246, 243); }

.filter-bar .filter-tip {
  font-size: 13px;
  color: var(--cz-muted);
  align-self: flex-start;
  padding-left: 4px;
}

.filter-search {
  display: flex;
  flex-direction: column;
  gap: 12px;
  width: 100%;
  padding: 14px 16px 12px;
  background: #fff;
  border: 1px solid rgba(24, 53, 49, 0.07);
  border-radius: 12px;
  box-sizing: border-box;
}

/* 筛选行 */
.filter-row {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.filter-row--tight {
  padding-bottom: 8px;
  border-bottom: 1px dashed rgba(24, 53, 49, 0.08);
}

.filter-row--controls {
  padding-bottom: 4px;
}

.filter-label {
  font-size: 13px;
  color: var(--cz-muted);
  margin-right: -4px;
  white-space: nowrap;
}

/* 商机类型小 Tab（全部/招标/非招标） */
.filter-type-tabs {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 3px;
  background: rgba(var(--cz-primary-rgb), 0.07);
  border-radius: 8px;
}

.type-tab {
  min-width: 68px;
  height: 30px;
  padding: 0 14px;
  border: none;
  background: transparent;
  color: var(--cz-ink);
  font-size: 13px;
  font-weight: 600;
  border-radius: 6px;
  cursor: pointer;
  transition: all .18s ease;
}

.type-tab:hover { background: rgba(255,255,255,0.6); }
.type-tab.is-active {
  background: #fff;
  color: var(--cz-primary);
  box-shadow: 0 1px 3px rgba(24,53,49,0.1);
}

/* 采集天数"全部"切换按钮 */
.all-days-btn {
  height: 32px;
  padding: 0 12px;
  border-radius: 6px;
  border: 1px solid rgba(24,53,49,0.12);
  background: #fff;
  font-size: 13px;
  color: var(--cz-ink);
  cursor: pointer;
  transition: all .18s ease;
}
.all-days-btn:hover { border-color: rgba(var(--cz-primary-rgb),0.4); }
.all-days-btn.is-active {
  background: rgba(var(--cz-primary-rgb),0.1);
  border-color: var(--cz-primary);
  color: var(--cz-primary);
  font-weight: 600;
}

/* 经营类目标签区（展开收起类目） */
.filter-category {
  position: relative;
  padding: 10px 110px 10px 0; /* 右侧预留 100px 给展开类目按钮 */
  border-top: 1px dashed rgba(24,53,49,0.08);
}

.filter-category-label {
  display: block;
  font-size: 12px;
  font-weight: 700;
  color: var(--cz-muted);
  margin: 0 0 6px 2px;
  letter-spacing: 0.3px;
}

.filter-category-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  max-height: 66px; /* 约 2 行（每行 30px + gap 6px = 36，×2 - 6 = 66） */
  overflow: hidden;
  transition: max-height .25s ease;
}

.filter-category-tags.is-open {
  max-height: 500px; /* 全开 */
}

.cat-tag {
  height: 28px;
  padding: 0 11px;
  border: 1px solid rgba(24,53,49,0.12);
  background: #fff;
  border-radius: 999px;
  font-size: 12px;
  color: var(--cz-ink);
  cursor: pointer;
  white-space: nowrap;
  transition: all .18s ease;
}

.cat-tag:hover {
  border-color: rgba(var(--cz-primary-rgb), 0.45);
  color: var(--cz-primary);
}

.cat-tag.is-active {
  background: var(--cz-primary);
  border-color: var(--cz-primary);
  color: #fff;
  font-weight: 600;
  box-shadow: 0 2px 6px rgba(var(--cz-primary-rgb),0.22);
}

.category-toggle {
  position: absolute;
  top: 8px;
  right: 0;
  height: 30px;
  padding: 0 12px;
  border: none;
  background: transparent;
  color: var(--cz-primary);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  border-radius: 6px;
  transition: all .18s ease;
}
.category-toggle:hover {
  background: rgba(var(--cz-primary-rgb), 0.08);
}

/* ===== 表格 ===== */
.opp-table-wrap {
  background: #fff;
  border-radius: 14px;
  border: 1px solid rgba(24, 53, 49, 0.07);
  overflow: hidden;
}

.opp-table .el-table {
  background: transparent;
  color: var(--cz-table-text);
  font-size: 14px;
  --el-table-border-color: rgba(24, 53, 49, 0.07);
  --el-table-header-bg-color: var(--cz-table-th-bg);
  --el-table-row-hover-bg-color: rgb(244, 250, 248);
}

.opp-table .el-table th.el-table__cell {
  background: var(--cz-table-th-bg);
  color: var(--cz-table-th-text);
  font-size: 14px;
  font-weight: 750;
  height: 46px;
}

.opp-table .el-table .cell { line-height: 1.4; }

/* ===== 试看结束表格蒙版 ===== */
.opp-table-wrap { position: relative; }
.opp-table-wrap.is-locked .el-table__body-wrapper,
.opp-table-wrap.is-locked .el-table__fixed-body-wrapper {
  filter: blur(6px);
  user-select: none;
  pointer-events: none;
}
.table-lock-overlay {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  top: 47px;                  /* 表头高度 46px + 1px 边框，仅遮主体保留表头 */
  background: linear-gradient(rgba(255,255,255,0.35), rgba(255,255,255,0.82));
  backdrop-filter: blur(3px);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 20;
  border-radius: 0 0 13px 13px;
}
.table-lock-box {
  text-align: center;
  padding: 18px 28px;
  background: rgba(255,255,255,0.92);
  border: 1px solid rgba(24,53,49,0.1);
  border-radius: 12px;
  box-shadow: 0 6px 24px rgba(24,53,49,0.12);
}
.table-lock-icon { font-size: 30px; line-height: 1; margin-bottom: 8px; }
.table-lock-title { font-size: 16px; font-weight: 700; color: var(--cz-ink, #183531); margin-bottom: 4px; }
.table-lock-desc { font-size: 13px; color: var(--cz-muted, #6b7a76); margin-bottom: 12px; }
.table-lock-box .el-button { font-weight: 600; }

.opp-empty {
  padding: 40px 0;
  text-align: center;
  color: var(--cz-muted);
  font-size: 14px;
}

/* 分页 */
.opp-pager {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 12px;
  margin-top: 14px;
  color: var(--cz-muted);
  font-size: 13px;
}

.opp-pager .page-nums {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.opp-pager .page-num {
  height: 28px;
  min-width: 44px;
  padding: 0 10px;
  font-size: 12px;
  font-weight: 600;
  color: var(--cz-muted-2);
  background: #fff;
  border: 1px solid rgba(24, 53, 49, 0.12);
  border-radius: 7px;
  cursor: pointer;
  transition: all 0.18s ease;
}

.opp-pager .page-num:hover {
  color: var(--cz-primary);
  border-color: var(--cz-primary);
}

.opp-pager .page-num.is-active {
  color: #fff;
  background: var(--cz-primary);
  border-color: var(--cz-primary);
}

/* ===== 商机详情弹窗 ===== */
.opp-detail { padding: 0 4px; }

.opp-detail-meta {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px 24px;
  padding: 4px 0 16px;
  font-size: 14px;
  color: var(--cz-table-text);
  border-bottom: 1px solid rgba(24, 53, 49, 0.08);
}

.opp-detail-meta span {
  color: var(--cz-muted);
  margin-right: 4px;
}

.opp-detail-label {
  margin: 16px 0 8px;
  font-size: 14px;
  font-weight: 700;
  color: var(--cz-ink);
}

.opp-detail > .opp-detail-label:first-child {
  margin-top: 0;
}

/* 公告内容正文区：全文不截断，可纵向滚动 */
.opp-detail-text {
  margin: 0;
  padding: 14px 16px;
  max-height: 46vh;
  overflow-y: auto;
  white-space: pre-wrap;
  word-break: break-word;
  font-family: inherit;
  font-size: 13px;
  line-height: 1.7;
  color: var(--cz-table-text);
  background: rgb(244, 250, 248);
  border-radius: 10px;
}

/* 直采详情弹窗：公告内容 / 原文页面 双 Tab */
.opp-detail-tabs { margin-top: 16px; }
.opp-detail-tabs .el-tabs__content { overflow: hidden; }
.opp-detail-frame-tip {
  margin-bottom: 10px;
  padding: 9px 12px;
  font-size: 12.5px;
  line-height: 1.6;
  color: rgb(113, 128, 125);
  background: rgb(245, 247, 246);
  border: 1px solid rgb(228, 239, 235);
  border-radius: 8px;
}
.opp-detail-frame-wrap {
  border: 1px solid #e4e7ed;
  border-radius: 10px;
  overflow: hidden;
  background: #fff;
}
.opp-detail-frame {
  display: block;
  width: 100%;
  height: 56vh;
  min-height: 420px;
  border: 0;
  background: #fff;
}
.opp-detail-frame-empty {
  height: 200px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #909399;
  font-size: 13px;
}

/* ===== 联系客服 浮窗 ===== */
.service-widget {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 50;
}

.contact-button {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  border: 0;
  background: transparent;
  color: #fff;
  font-size: 22px;
  cursor: pointer;
  box-shadow: rgba(9, 77, 67, 0.27) 0 14px 34px 0;
  background-image: linear-gradient(135deg, var(--cz-primary), rgb(14, 81, 70));
  display: flex;
  align-items: center;
  justify-content: center;
}

.contact-button:hover { filter: brightness(1.05); }

/* ===== 响应式（窄屏折叠侧栏） ===== */
@media (max-width: 880px) {
  .portal-layout { grid-template-columns: 1fr; }
  .portal-sidebar { display: none; }
  .portal-header { padding: 10px 16px; }
  .privacy-note { display: none; }
}

/* ===== 数据源切换条（原站商机 / 央企平台直采） ===== */
.data-source-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
  padding: 10px 14px;
  background: #fff;
  border: 1px solid rgba(24, 53, 49, 0.08);
  border-radius: 12px;
}
.ds-btn {
  height: 36px;
  padding: 0 18px;
  border: 1px solid rgba(24, 53, 49, 0.15);
  background: #fff;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 600;
  color: var(--cz-muted-2);
  cursor: pointer;
  transition: all .18s ease;
}
.ds-btn:hover { border-color: var(--cz-primary); color: var(--cz-primary); }
.ds-btn.is-active {
  background: var(--cz-primary);
  border-color: var(--cz-primary);
  color: #fff;
  box-shadow: 0 3px 10px rgba(var(--cz-primary-rgb), 0.25);
}
.ds-badge {
  display: inline-block;
  min-width: 26px;
  padding: 0 7px;
  margin-left: 4px;
  height: 20px;
  line-height: 20px;
  border-radius: 999px;
  background: rgba(var(--cz-primary-rgb), 0.12);
  color: var(--cz-primary);
  font-size: 12px;
  font-weight: 700;
}
.ds-btn.is-active .ds-badge { background: rgba(255,255,255,.25); color: #fff; }
.ds-tip { color: var(--cz-muted); font-size: 12px; }

/* ===== 央企直采面板 ===== */
.spider-panel { background: transparent; }
.sp-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 14px;
  flex-wrap: wrap;
  margin-bottom: 12px;
  padding: 12px 14px;
  background: #fff;
  border: 1px solid rgba(24, 53, 49, 0.08);
  border-radius: 12px;
}
.sp-source-tabs { display: flex; flex-wrap: wrap; gap: 8px; }
.sp-source-tab {
  height: 32px;
  padding: 0 14px;
  border: 1px solid rgba(24, 53, 49, 0.14);
  background: #fff;
  border-radius: 999px;
  font-size: 13px;
  color: var(--cz-ink);
  cursor: pointer;
  white-space: nowrap;
  transition: all .16s ease;
}
.sp-source-tab:hover { border-color: var(--cz-primary); color: var(--cz-primary); }
.sp-source-tab.is-active {
  background: var(--cz-primary);
  border-color: var(--cz-primary);
  color: #fff;
  font-weight: 600;
}
.sp-count {
  display: inline-block;
  min-width: 22px;
  margin-left: 5px;
  font-size: 12px;
  font-weight: 700;
  color: var(--cz-primary);
}
.sp-source-tab.is-active .sp-count { color: #fff; }
.sp-search { display: flex; gap: 8px; align-items: center; }

/* ===== 多板块扩展：全部 / 政府机关 / 地方国企 / 高校医院 / 部队航天 ===== */
/* 顶部板块按钮「新」标记 */
.ds-new {
  display: inline-block;
  margin-left: 6px;
  padding: 0 6px;
  height: 16px;
  line-height: 16px;
  border-radius: 999px;
  background: #fff3e6;
  color: #e6a23c;
  font-size: 11px;
  font-weight: 700;
  border: 1px solid #f5dab1;
}
.ds-btn.is-active .ds-new { background: rgba(255,255,255,.28); color: #fff; border-color: transparent; }

/* 板块内子导航 el-tabs（el-tabs__nav-scroll）：白底卡片，仅作导航用，隐藏空内容区 */
.sp-subtabs {
  background: #fff;
  border: 1px solid rgba(24, 53, 49, 0.08);
  border-radius: 12px;
  padding: 2px 16px 0;
  margin-bottom: 12px;
}
.sp-subtabs .el-tabs__header { margin: 0; }
.sp-subtabs .el-tabs__content { display: none; }
.sp-subtabs .el-tabs__item { padding-right: 22px; }

/* 子导航 filter-bar 按钮条（替换 el-tabs：全部板块 / 地方国企二级平台） */
.filter-bar.sp-subtabs,
.filter-bar.sp-subtabs-2 {
  flex-direction: row;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  background: #fff;
  border: 1px solid rgba(24, 53, 49, 0.08);
  border-radius: 12px;
  padding: 8px 14px;
  margin-bottom: 12px;
}
.sp-sub-btn {
  appearance: none;
  border: 0;
  background: transparent;
  cursor: pointer;
  padding: 5px 14px;
  border-radius: 8px;
  font-size: 14px;
  font-weight: 600;
  font-family: inherit;
  line-height: 1.5;
  color: var(--cz-muted-2);
  transition: color .2s ease, background .2s ease;
}
.sp-sub-btn:hover {
  color: var(--cz-primary);
  background: rgba(var(--cz-primary-rgb), 0.08);
}
.sp-sub-btn.is-active {
  color: var(--cz-primary);
  font-weight: 700;
  background: rgba(var(--cz-primary-rgb), 0.1);
}

/* 全部 / 央企直采 板块筛选条：横向一行（区别于原站的竖向折叠） */
.sp-filter-bar {
  flex-direction: row;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  padding: 12px 14px;
  background: #fff;
  border: 1px solid rgba(24, 53, 49, 0.08);
  border-radius: 12px;
}
.sp-filter-bar .filter-tip { align-self: center; padding-left: 2px; }

/* 商机详情弹窗操作按钮区 */
.opp-detail-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  padding-top: 4px;
}

/* 地方国企省份子导航：省份名 + 来源名上下排列（陕建华山云采挂在陕西省下方） */
.soe-prov {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  line-height: 1.25;
  padding: 3px 0;
}
.soe-prov .prov-src {
  font-size: 11px;
  color: #909399;
}

/* 地方国企二级平台子导航：更紧凑、左缩进 */
.sp-subtabs-2 {
  background: #fff;
  border: 1px solid rgba(24, 53, 49, 0.08);
  border-radius: 10px;
  padding: 0 16px 0 28px;
  margin-bottom: 10px;
}
.sp-subtabs-2 .el-tabs__header { margin: 0; }
.sp-subtabs-2 .el-tabs__content { display: none; }
.sp-subtabs-2 .el-tabs__item {
  height: 34px; line-height: 34px;
  font-size: 13px; color: #606266;
  padding-right: 18px;
}
.sp-subtabs-2 .el-tabs__item.is-active { color: var(--cz-primary); font-weight: 500; }

/* ==================== 跟进管理页面样式 ==================== */
.portal-page {
  display: flex;
  min-height: 100vh;
  background: var(--cz-body);
}
.portal-page .sidebar {
  width: 240px;
  background-image:
    radial-gradient(circle at 8% 0%, var(--cz-sidebar-glow), rgba(0, 0, 0, 0) 31%),
    var(--cz-sidebar-grad);
  border-right: 1px solid var(--cz-side-line);
  display: flex;
  flex-direction: column;
  flex-shrink: 0;
  position: sticky;
  top: 0;
  height: 100vh;
  overflow-y: auto;
}
.portal-page .sidebar::-webkit-scrollbar { width: 6px; }
.portal-page .sidebar::-webkit-scrollbar-thumb { background: var(--cz-side-thumb); border-radius: 3px; }
.portal-page .brand {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 18px 16px;
  border: 0;
  background: transparent;
  cursor: pointer;
  text-align: left;
}
.portal-page .brand-mark { width: 36px; height: 36px; border-radius: 8px; }
.portal-page .brand-copy { display: flex; flex-direction: column; line-height: 1.2; }
.portal-page .brand-title { font-size: 13px; font-weight: 700; color: var(--cz-side-strong); }
.portal-page .brand-sub { font-size: 10px; color: var(--cz-side-faint); letter-spacing: 1px; }
.portal-page .fu-nav { flex: 1; padding: 8px 12px; }
.portal-page .fu-nav-item {
  display: block;
  width: 100%;
  padding: 10px 14px;
  margin-bottom: 4px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: var(--cz-side-item);
  font-size: 14px;
  text-align: left;
  cursor: pointer;
  transition: all .16s ease;
}
.portal-page .fu-nav-item:hover { background: var(--cz-side-hover); color: var(--cz-side-strong); }
.portal-page .fu-nav-item.is-active { background: var(--cz-side-active-bg); color: var(--cz-side-strong); font-weight: 600; }
.portal-page .sidebar-footer { padding: 14px 16px; border-top: 1px solid var(--cz-side-line); }
.portal-page .account-info { display: flex; flex-direction: column; margin-bottom: 8px; }
.portal-page .account-name { font-size: 13px; font-weight: 600; color: var(--cz-side-strong); }
.portal-page .account-role { font-size: 11px; color: var(--cz-side-faint); }
.portal-page .logout-btn {
  width: 100%; padding: 6px; border: 1px solid var(--cz-side-line-strong); border-radius: 6px;
  background: transparent; color: var(--cz-side-item); font-size: 12px; cursor: pointer;
}
.portal-page .logout-btn:hover { background: var(--cz-side-hover); color: var(--cz-side-strong); }

/* portal-sidebar 侧边栏底部：账号 + 退出按钮（所有 portal 页共用，静态常驻在导航下方） */
.portal-sidebar .sidebar-footer {
  flex-shrink: 0;
  margin-top: 12px;
  padding: 12px 0 2px;
  border-top: 1px solid var(--cz-side-line);
}
.portal-sidebar .account-info {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin-bottom: 10px;
  padding: 0 2px;
}
.portal-sidebar .account-name {
  font-size: 13px;
  font-weight: 600;
  color: var(--cz-side-strong);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.portal-sidebar .account-role {
  font-size: 11px;
  color: var(--cz-side-faint);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.portal-sidebar .logout-btn {
  width: 100%;
  padding: 8px;
  border: 1px solid var(--cz-side-line-strong);
  border-radius: 8px;
  background: transparent;
  color: var(--cz-side-item);
  font-size: 13px;
  font-weight: 600;
  font-family: inherit;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease;
}
.portal-sidebar .logout-btn:hover { background: var(--cz-side-hover); color: var(--cz-side-strong); }

.portal-page .portal-workspace { flex: 1; padding: 24px 28px; overflow-x: auto; }
.fu-header { display: flex; align-items: center; gap: 16px; margin-bottom: 16px; }
.fu-header h2 { font-size: 20px; font-weight: 700; color: #1a1a1a; margin: 0; }
.fu-total { font-size: 13px; color: #8c8c8c; }
.fu-tabs { margin-bottom: 8px; }
.fu-toolbar { display: flex; gap: 10px; align-items: center; margin-bottom: 12px; flex-wrap: wrap; }
.fu-panel { background: #fff; border-radius: 12px; padding: 20px; box-shadow: 0 1px 4px rgba(0,0,0,0.04); }
.fu-panel h3 { font-size: 16px; font-weight: 600; color: #1a1a1a; margin: 0 0 12px; }
.fu-detail { display: flex; flex-direction: column; gap: 10px; }
.fu-detail-row { display: flex; align-items: flex-start; gap: 12px; font-size: 14px; }
.fu-detail-row .lbl { color: #8c8c8c; width: 70px; flex-shrink: 0; text-align: right; }

.stat-row { display: flex; gap: 16px; flex-wrap: wrap; }
.stat-card {
  background: #fff; border-radius: 12px; padding: 18px 22px; min-width: 140px; flex: 1;
  box-shadow: 0 1px 4px rgba(0,0,0,0.04); text-align: center;
}
.stat-card .stat-label { font-size: 13px; color: #8c8c8c; margin-bottom: 6px; }
.stat-card .stat-value { font-size: 28px; font-weight: 700; color: var(--cz-primary); }
.stat-card-muted .stat-value { color: #fa8c16; }
.stat-card .stat-sub { font-size: 11px; color: #bfbfbf; margin-top: 4px; }

/* 商机购买面板（试看结束后的单条解锁/时间包） */
.buy-panel { padding: 4px 2px; }
.buy-price {
  background: #f6ffed; border: 1px solid #b7eb8f; border-radius: 8px;
  padding: 16px 20px; text-align: center;
}
.buy-price-num { font-size: 26px; font-weight: 700; color: #389e0d; }
.buy-price-tip { font-size: 12px; color: #8c8c8c; margin-top: 4px; }

/* VIP 会员套餐卡片（标讯VIP / 黑钻VIP 切换 + 年/3年/5年/永久） */
.vip-tier-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.vip-tier-card {
  border: 1px solid #e4e7ed; border-radius: 8px; padding: 14px 6px 12px;
  text-align: center; cursor: pointer; user-select: none; background: #fff;
  transition: border-color .2s, box-shadow .2s, background-color .2s;
}
.vip-tier-card:hover { border-color: rgba(var(--cz-primary-rgb), .55); }
.vip-tier-card.is-on {
  border-color: var(--cz-primary); background: rgba(var(--cz-primary-rgb), .06);
  box-shadow: inset 0 0 0 1px var(--cz-primary);
}
.vip-tier-label {
  display: inline-block; font-size: 13px; font-weight: 600; color: #fff;
  background: var(--cz-primary); border-radius: 10px; padding: 1px 12px; margin-bottom: 8px;
}
.vip-tier-price { line-height: 1.2; }
.vip-tier-price i { font-style: normal; font-size: 13px; color: #fa541c; margin-right: 1px; }
.vip-tier-price b { font-size: 22px; color: #fa541c; font-weight: 700; }
.vip-tier-sub { font-size: 11px; color: #999; margin-top: 6px; }
