/* 腾讯营销教育行业商达撮合平台 - 样式表（全响应式 · 品牌主题） */
:root {
  --primary: #2B6BF5;
  --primary-50: #eef4ff;
  --primary-100: #d9e8ff;
  --primary-200: #bcd5ff;
  --primary-300: #8eb8ff;
  --primary-400: #4B8CF7;
  --primary-500: #2B6BF5;
  --primary-600: #1A5FD9;
  --primary-700: #164BB5;
  --primary-800: #1E3A8A;
  --primary-light: #eef4ff;
  --secondary: #7EC8FD;
  --accent: #FFAA00;
  --success: #10B981;
  --warning: #FFAA00;
  --danger: #EF4444;
  --gray-50: #f8fafc;
  --gray-100: #f1f5f9;
  --gray-200: #e2e8f0;
  --gray-300: #cbd5e1;
  --gray-400: #94a3b8;
  --gray-500: #64748b;
  --gray-600: #475569;
  --gray-700: #334155;
  --gray-800: #1e293b;
  --gray-900: #0f172a;
  --shadow-sm: 0 1px 3px rgba(43, 107, 245, 0.05);
  --shadow-md: 0 4px 12px rgba(43, 107, 245, 0.08);
  --shadow-lg: 0 10px 25px rgba(43, 107, 245, 0.12);
  --radius: 12px;
  --sidebar-width: 260px;
  --topbar-height: 56px;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
body {
  font-family: "PingFang SC", "Microsoft YaHei", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  background: linear-gradient(135deg, #f0f4ff 0%, #e8f0fd 50%, #f0f2ff 100%);
  color: var(--gray-800);
  line-height: 1.6;
  -webkit-text-size-adjust: 100%;
  -webkit-tap-highlight-color: transparent;
  min-height: 100vh;
}

/* ==================== Login Page ==================== */
.login-page {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  padding: 16px;
  background:
    /* 网格线装饰 */
    linear-gradient(rgba(255,255,255,0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.04) 1px, transparent 1px),
    /* 浮动光斑 */
    radial-gradient(circle at 15% 85%, rgba(126,200,253,0.15) 0%, transparent 30%),
    radial-gradient(circle at 85% 15%, rgba(255,255,255,0.08) 0%, transparent 25%),
    radial-gradient(circle at 50% 50%, rgba(255,255,255,0.05) 0%, transparent 40%),
    /* 主渐变 */
    linear-gradient(135deg, #1E3A8A 0%, #2B6BF5 50%, #7EC8FD 100%);
  background-size: 60px 60px, 60px 60px, auto, auto, auto, auto;
  position: relative;
  overflow: hidden;
}
/* 左上大弧线装饰 */
.login-page::before {
  content: '';
  position: absolute;
  top: -100px;
  left: -100px;
  width: 500px;
  height: 500px;
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 50%;
  animation: float 18s infinite ease-in-out;
}
/* 右下圆环装饰 */
.login-page::after {
  content: '';
  position: absolute;
  bottom: -60px;
  right: -60px;
  width: 320px;
  height: 320px;
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 50%;
  animation: float 22s infinite reverse ease-in-out;
}
/* 额外小圆点装饰（用多重box-shadow模拟） */
.login-page .login-card::before {
  content: '';
  position: absolute;
  top: -200px;
  right: -150px;
  width: 8px;
  height: 8px;
  background: rgba(255,255,255,0.25);
  border-radius: 50%;
  box-shadow:
    -40px 60px 0 rgba(255,255,255,0.18),
    -80px 120px 0 rgba(255,255,255,0.12),
    30px 90px 0 rgba(255,255,255,0.10),
    -20px 160px 0 rgba(255,255,255,0.08),
    60px 30px 0 rgba(255,255,255,0.15);
  animation: float 25s infinite ease-in-out;
}
@keyframes float {
  0%, 100% { transform: translate(0, 0) rotate(0deg); }
  33% { transform: translate(20px, -25px) rotate(2deg); }
  66% { transform: translate(-15px, 15px) rotate(-1deg); }
}

/* 背景装饰图 */
.login-decor {
  position: absolute;
  z-index: 0;
  pointer-events: none;
}
.login-decor-handshake {
  bottom: 5%;
  left: 5%;
  width: 280px;
  animation: decorFloat 20s infinite ease-in-out;
}
.login-decor-campus {
  top: 3%;
  right: 3%;
  width: 260px;
  animation: decorFloat 24s infinite reverse ease-in-out;
}
.login-decor-books {
  bottom: 15%;
  right: 8%;
  width: 200px;
  animation: decorFloat 18s infinite ease-in-out;
}
@keyframes decorFloat {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-15px) scale(1.02); }
}
@media (max-width: 1200px) {
  .login-decor-handshake { width: 200px; opacity: 0.10; }
  .login-decor-campus { width: 180px; opacity: 0.10; }
  .login-decor-books { width: 140px; opacity: 0.10; }
}
@media (max-width: 768px) {
  .login-decor { display: none; }
}

.login-card {
  background: rgba(255, 255, 255, 0.97);
  backdrop-filter: blur(20px);
  border-radius: 20px;
  padding: 48px 40px 40px;
  width: 440px;
  max-width: 100%;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15);
  position: relative;
  z-index: 1;
  border: 1px solid rgba(255, 255, 255, 0.5);
}

.login-header { text-align: center; margin-bottom: 32px; }
.login-logo { display:flex; align-items:center; justify-content:center; gap:10px; margin-bottom:20px; }
.login-logo img { height: 40px; width: auto; }
.login-logo-text { font-size: 28px; font-weight: 700; color: var(--primary); letter-spacing: 2px; }
.login-brand-tag {
  display: inline-block;
  font-size: 11px;
  font-weight: 500;
  color: var(--primary-700);
  background: var(--primary-50);
  border: 1px solid var(--primary-200);
  border-radius: 999px;
  padding: 3px 12px;
  margin-top: 10px;
  letter-spacing: 0.5px;
}
.login-header h1 { font-size: 22px; margin-bottom: 6px; color: var(--gray-900); font-weight:700; letter-spacing: 0.5px; }
.login-header p { color: var(--gray-500); font-size: 13px; }
.login-footer-brand {
  text-align: center;
  margin-top: 24px;
  padding-top: 16px;
  border-top: 1px solid var(--gray-100);
  font-size: 11px;
  color: var(--gray-400);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
}
.login-footer-brand img { height: 14px; width: auto; opacity: 0.5; }
.login-error {
  background: #fef2f2;
  border: 1px solid #fecaca;
  color: var(--danger);
  padding: 8px 12px;
  border-radius: 8px;
  margin-top: 4px;
  font-size: 13px;
}

.login-hints {
  margin-top: 24px;
  padding: 14px 16px;
  background: var(--primary-50);
  border-radius: 10px;
  font-size: 12px;
  color: var(--gray-500);
  line-height: 2;
  border: 1px solid var(--primary-100);
}

/* ==================== App Layout ==================== */
.app-container { display: flex; min-height: 100vh; }

/* --- Mobile Top Bar --- */
.mobile-topbar {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: var(--topbar-height);
  background: linear-gradient(135deg, var(--primary-800), var(--primary-600));
  color: white;
  align-items: center;
  padding: 0 16px;
  z-index: 200;
  gap: 12px;
  box-shadow: 0 2px 10px rgba(43, 107, 245, 0.2);
}

.mobile-title { font-size: 16px; flex: 1; font-weight: 600; }
.mobile-user { font-size: 12px; color: rgba(255,255,255,0.7); }

.hamburger {
  width: 32px;
  height: 32px;
  background: none;
  border: none;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 5px;
  padding: 4px;
}
.hamburger span {
  display: block;
  width: 20px;
  height: 2px;
  background: white;
  border-radius: 2px;
  transition: all 0.3s;
}

.sidebar-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.4);
  z-index: 299;
  opacity: 0;
  transition: opacity 0.3s;
  backdrop-filter: blur(2px);
}
.sidebar-overlay.active { display: block; opacity: 1; }

/* --- Sidebar --- */
.sidebar {
  width: var(--sidebar-width);
  background: linear-gradient(180deg, #1e293b 0%, #0f172a 100%);
  color: white;
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  display: flex;
  flex-direction: column;
  z-index: 300;
  transition: transform 0.3s ease;
  box-shadow: 4px 0 20px rgba(0,0,0,0.1);
}

.sidebar-header {
  padding: 20px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  position: relative;
  background: linear-gradient(135deg, rgba(43, 107, 245, 0.12) 0%, transparent 100%);
}
.sidebar-brand { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.sidebar-brand img { height: 28px; width: auto; }
.sidebar-brand-text { font-size: 16px; font-weight: 700; letter-spacing: 0.3px; }
.sidebar-header h1 { font-size: 16px; font-weight: 700; }
.sidebar-header p { font-size: 11px; color: var(--gray-400); margin-top: 4px; }

.sidebar-close {
  display: none;
  position: absolute;
  top: 16px;
  right: 16px;
  background: none;
  border: none;
  color: var(--gray-400);
  font-size: 24px;
  cursor: pointer;
}

.sidebar-footer { margin-top: auto; }
.nav-menu { padding: 12px 0; flex: 1; overflow-y: auto; }

/* 分组导航 */
.nav-group {
  margin-bottom: 6px;
}
.nav-group-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 8px 20px 6px;
  cursor: pointer; user-select: none;
  transition: opacity 0.2s;
}
.nav-group-header:hover { opacity: 0.85; }
.nav-group-label {
  font-size: 11px; font-weight: 600;
  color: rgba(255,255,255,0.45);
  letter-spacing: 0.6px; text-transform: uppercase;
}
.nav-group-arrow {
  color: rgba(255,255,255,0.4);
  transition: transform 0.2s;
}
.nav-group-collapsed .nav-group-arrow { transform: rotate(-90deg); }
.nav-group-items {
  max-height: 600px;
  overflow: hidden;
  transition: max-height 0.25s ease;
}
.nav-group-collapsed .nav-group-items {
  max-height: 0;
}

.nav-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 16px;
  cursor: pointer;
  transition: all 0.2s;
  color: var(--gray-300);
  font-size: 13.5px;
  position: relative;
  margin: 2px 12px;
  border-radius: 8px;
}
.nav-item:hover { background: rgba(59, 130, 246, 0.1); color: white; }
.nav-item.active { 
  background: linear-gradient(135deg, var(--primary-600), var(--primary-500)); 
  color: white; 
  box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
}
.nav-item .icon {
  font-size: 0;
  width: 4px;
  border-radius: 2px;
  background: transparent;
  transition: all 0.25s;
}
.nav-item.active .icon,
.nav-item:hover .icon {
  background: var(--primary);
}

.badge-dot {
  position: absolute;
  right: 12px;
  background: var(--danger);
  color: white;
  font-size: 10px;
  min-width: 18px;
  height: 18px;
  border-radius: 9px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  box-shadow: 0 2px 4px rgba(239, 68, 68, 0.3);
}

/* --- Main Content --- */
.main-content {
  margin-left: var(--sidebar-width);
  flex: 1;
  padding: 28px 32px;
  min-height: 100vh;
  max-width: 100%;
  overflow-x: hidden;
}

/* ==================== Components ==================== */

/* Card */
.card {
  background: white;
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  border: 1px solid rgba(59, 130, 246, 0.08);
  margin-bottom: 16px;
  overflow: hidden;
  transition: all 0.2s;
}
.card:hover { box-shadow: var(--shadow-md); }
.card-header {
  padding: 16px 20px;
  border-bottom: 1px solid var(--gray-100);
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  background: linear-gradient(135deg, var(--primary-50), white);
}
.card-header h3 { font-size: 15px; color: var(--primary-700); }
.card-body { padding: 16px 20px; }

/* Page Header */
.page-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 24px;
  flex-wrap: wrap;
  gap: 12px;
}
.page-header h2 { font-size: 22px; white-space: nowrap; color: var(--gray-800); }
.page-header-actions { display: flex; gap: 8px; flex-wrap: wrap; }

/* Stats Grid */
.stats-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
  margin-bottom: 24px;
}

.stat-card {
  background: white;
  border-radius: var(--radius);
  padding: 22px;
  box-shadow: var(--shadow-sm);
  border: 1px solid rgba(59, 130, 246, 0.06);
  text-align: center;
  transition: all 0.2s;
  position: relative;
  overflow: hidden;
}
.stat-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--primary-400), var(--secondary));
}
.stat-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.stat-icon { font-size: 28px; margin-bottom: 8px; }
.stat-value { font-size: 28px; font-weight: 700; color: var(--primary-700); }
.stat-label { font-size: 13px; color: var(--gray-500); margin-top: 4px; }
.stat-desc { font-size: 11px; color: var(--gray-400); margin-top: 2px; }

/* Dashboard Charts Grid */
.dashboard-charts {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-top: 20px;
}

/* ==================== Buttons ==================== */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 9px 18px;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  border: 1px solid transparent;
  transition: all 0.2s;
  text-decoration: none;
  white-space: nowrap;
  touch-action: manipulation;
}
.btn-primary { background: linear-gradient(135deg, var(--primary-600), var(--primary-500)); color: white; box-shadow: 0 2px 8px rgba(43, 107, 245, 0.25); }
.btn-primary:hover { background: linear-gradient(135deg, var(--primary-700), var(--primary-600)); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(43, 107, 245, 0.35); }
.btn-success { background: linear-gradient(135deg, #059669, var(--success)); color: white; box-shadow: 0 2px 8px rgba(16, 185, 129, 0.2); }
.btn-success:hover { transform: translateY(-1px); }
.btn-danger { background: linear-gradient(135deg, #dc2626, var(--danger)); color: white; box-shadow: 0 2px 8px rgba(239, 68, 68, 0.2); }
.btn-danger:hover { transform: translateY(-1px); }
.btn-warning { background: linear-gradient(135deg, #d97706, var(--warning)); color: white; }
.btn-outline { background: white; color: var(--gray-700); border-color: var(--gray-200); }
.btn-outline:hover { background: var(--primary-50); border-color: var(--primary-300); color: var(--primary-700); }
.btn-sm { padding: 5px 12px; font-size: 12px; border-radius: 8px; }
.btn-block { width: 100%; }
.btn-invite { background: linear-gradient(135deg, #7c3aed, #6d28d9); color: white; box-shadow: 0 2px 8px rgba(124, 58, 237, 0.2); }
.btn-invite:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(124, 58, 237, 0.3); }
.btn-apply { background: linear-gradient(135deg, #ea580c, #f97316); color: white; box-shadow: 0 2px 8px rgba(249, 115, 22, 0.2); }
.btn-apply:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(249, 115, 22, 0.3); }

/* ==================== Forms ==================== */
.form-group { margin-bottom: 16px; }
.form-group label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--gray-700);
  margin-bottom: 6px;
}
.form-group input, .form-group select, .form-group textarea {
  width: 100%;
  padding: 11px 14px;
  border: 1.5px solid var(--gray-200);
  border-radius: 10px;
  font-size: 14px;
  transition: all 0.2s;
  -webkit-appearance: none;
  appearance: none;
  background: white;
}
.form-group select {
  background: white url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%2364748b' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10z'/%3E%3C/svg%3E") no-repeat right 12px center;
  padding-right: 32px;
}
.form-group input:focus, .form-group select:focus, .form-group textarea:focus {
  outline: none;
  border-color: var(--primary-400);
  box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.1);
}
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.form-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 768px) { .form-grid-2 { grid-template-columns: 1fr; gap: 0; } }

/* 达人编辑弹窗：分组折叠 */
.edit-inf-form .edit-group {
  border: 1px solid var(--gray-200, #e2e8f0);
  border-radius: 8px;
  margin-bottom: 12px;
  padding: 0 14px;
  background: #fff;
}
.edit-inf-form .edit-group > summary {
  cursor: pointer;
  font-size: 13px;
  font-weight: 600;
  color: #1e293b;
  padding: 12px 4px;
  list-style: none;
  user-select: none;
}
.edit-inf-form .edit-group > summary::-webkit-details-marker { display: none; }
.edit-inf-form .edit-group > summary::before {
  content: '▸';
  display: inline-block;
  margin-right: 8px;
  color: #94a3b8;
  transition: transform .15s;
}
.edit-inf-form .edit-group[open] > summary::before { transform: rotate(90deg); }
.edit-inf-form .edit-group .form-grid-2 { padding-bottom: 14px; }
.edit-inf-form .edit-group-internal { background: #fef2f2; border-color: #fecaca; }
.edit-inf-form .edit-group-internal > summary { color: #dc2626; }

/* ==================== Badges & Tags ==================== */
.badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 20px;
  font-size: 11px;
  font-weight: 600;
}
.badge-open { background: #dcfce7; color: #166534; }
.badge-closed { background: #fee2e2; color: #991b1b; }
.badge-pending { background: var(--primary-50); color: #92400e; }
.badge-accepted { background: #d1fae5; color: #065f46; }
.badge-confirmed { background: #d1fae5; color: #065f46; }
.tag-type { background: #ede9fe; color: #5b21b6; font-weight: 600; }

.tab-btn { 
  padding: 8px 16px; 
  border: 1.5px solid var(--gray-200); 
  border-radius: 8px; 
  background: white; 
  cursor: pointer; 
  font-size: 13px; 
  transition: all 0.2s; 
}
.tab-btn:hover { border-color: var(--primary-300); background: var(--primary-50); }
.tab-btn.active { background: var(--primary-500); color: white; border-color: var(--primary-500); box-shadow: 0 2px 8px rgba(59, 130, 246, 0.2); }

/* 发布需求 - tabs 容器 */
.publish-tabs {
  display: flex;
  gap: 8px;
  margin-bottom: 20px;
  flex-wrap: wrap;
}

/* 发布需求 - 发布者信息条 */
.publisher-info-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  margin-bottom: 16px;
  background: linear-gradient(90deg, var(--primary-50), #f8fafc);
  border-left: 3px solid var(--primary-400);
  border-radius: 6px;
  font-size: 13px;
}
.publisher-info-label {
  color: #64748b;
  font-weight: 500;
}
.publisher-info-value {
  color: var(--primary-700);
  font-weight: 700;
  font-size: 14px;
}
.publisher-info-tip {
  margin-left: auto;
  color: #94a3b8;
  font-size: 12px;
}
@media (max-width: 600px) {
  .publisher-info-tip { display: none; }
}

.tag { display: inline-block; padding: 2px 8px; background: var(--primary-50); border-radius: 6px; font-size: 11px; color: var(--primary-600); border: 1px solid var(--primary-100); }

.multi-value { display: flex; flex-wrap: wrap; gap: 4px; }
.tag-sm { display: inline-block; padding: 2px 7px; background: var(--primary-50); border-radius: 5px; font-size: 11px; color: var(--primary-600); }

/* Level Badge */
.level-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  font-size: 11px;
  font-weight: 700;
  color: white;
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

/* Willingness */
.willingness { font-size: 12px; font-weight: 600; }
.willingness.高 { color: var(--success); }
.willingness.中 { color: var(--warning); }
.willingness.低 { color: var(--gray-400); }

/* Match Score */
.match-score { display: inline-block; padding: 3px 10px; border-radius: 20px; font-size: 12px; font-weight: 700; }
.match-score.high { background: #d1fae5; color: #065f46; }
.match-score.mid { background: var(--primary-50); color: #92400e; }
.match-score.low { background: #fee2e2; color: #991b1b; }

/* ==================== Filter Bar ==================== */
.filter-bar {
  display: flex;
  gap: 12px;
  margin-bottom: 16px;
  align-items: center;
  flex-wrap: wrap;
}
.filter-bar select, .filter-bar input {
  padding: 9px 14px;
  border: 1.5px solid var(--gray-200);
  border-radius: 10px;
  font-size: 13px;
  min-width: 0;
  flex: 1;
  max-width: 240px;
  background: white;
}

/* ==================== Demand Cards ==================== */
.demand-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
  gap: 16px;
}

/* ==================== 需求列表视图 V3（紧凑行式 · 严格对齐） ==================== */
.demand-list {
  display: flex;
  flex-direction: column;
  gap: 0;
  background: white;
  border-radius: 12px;
  border: 1px solid #f1f5f9;
  overflow-x: auto;
}

/* 统一 Grid 模板（不含销售列）：
   check | type | title+merchant | price | stock | pureComm | adComm | status | date | action */
.demand-list .demand-row,
.demand-list .demand-row-header {
  display: grid;
  grid-template-columns: 32px 50px minmax(220px, 2.4fr) 70px 60px 70px 76px 76px 88px 264px;
  gap: 12px;
  align-items: center;
  padding: 12px 16px;
  border-bottom: 1px solid #f1f3f7;
  transition: background 0.15s;
  min-width: 1214px;
}
/* 含归属销售列：插在 status 之前 */
.demand-list .demand-row.has-sales,
.demand-list .demand-row-header.has-sales {
  grid-template-columns: 32px 50px minmax(220px, 2.4fr) 70px 60px 70px 76px 84px 76px 88px 264px;
  min-width: 1314px;
}
.demand-list .demand-row:last-child { border-bottom: none; }
.demand-list .demand-row:hover { background: #fafbfc; }

/* 表头 */
.demand-list .demand-row-header {
  background: #f8fafc;
  font-size: 12px; font-weight: 600; color: #64748b;
  border-bottom: 2px solid #e2e8f0;
  position: sticky; top: 0; z-index: 2;
  padding: 14px 16px;
}
.demand-th {
  display: flex; align-items: center; gap: 3px;
  white-space: nowrap; user-select: none;
  color: #64748b;
  cursor: pointer;
  min-width: 0;
}
.demand-th.no-hover { cursor: default; }
.demand-th:hover:not(.no-hover) { color: var(--primary); }
.demand-th.th-right { justify-content: flex-end; text-align: right; }
.demand-th.th-center { justify-content: center; text-align: center; }
.sort-icon { display: inline-flex; flex-shrink: 0; opacity: 0.6; }

/* 数据单元格 — 全部依靠 grid 列顺序，不使用 grid-area */
.demand-row .demand-checkbox {
  width: 16px; height: 16px; accent-color: var(--primary-600);
  justify-self: center;
}
.type-badge-sm {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 3px 8px; border-radius: 5px;
  font-size: 11px; font-weight: 600; letter-spacing: 0.3px;
  justify-self: center;
  min-width: 36px;
}
.demand-row-main {
  display: flex; flex-direction: column; gap: 3px;
  min-width: 0; overflow: hidden;
}
.demand-row-title {
  font-size: 14px; font-weight: 500; color: #1e293b;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.demand-row-sub {
  font-size: 12px; color: #94a3b8;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
/* 数值列 — 右对齐 */
.demand-row-price,
.demand-row-stock,
.demand-row-commission,
.demand-row-date {
  font-size: 13px; text-align: right;
  white-space: nowrap; overflow: hidden;
}
.demand-row-price { color: #dc2626; font-weight: 700; }
.demand-row-stock { color: #64748b; font-weight: 500; font-size: 12px; }
.demand-row-commission { color: #ea580c; font-weight: 600; }
.demand-row-date { color: #94a3b8; font-size: 12px; }
/* 销售列 — 居中 */
.demand-row-sales {
  font-size: 12px; color: #16a34a; font-weight: 600;
  text-align: center;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
/* 状态列 — 居中 */
.demand-row-status {
  display: flex; align-items: center; justify-content: center;
}
/* 操作列 — 右对齐 */
.demand-row-actions {
  display: flex; gap: 6px; align-items: center;
  justify-content: flex-end;
}
.btn-xs { padding: 3px 9px; font-size: 11px; border-radius: 6px; cursor: pointer; transition: all 0.15s; }

/* ==================== 达人需求列表视图 ====================
   列结构: check | type | account+sub | fans | level | brief | status | date | action  */
.id-list {
  display: flex; flex-direction: column; gap: 0;
  background: white; border-radius: 12px; border: 1px solid #f1f5f9;
  overflow-x: auto;
}
.id-list .id-row,
.id-list .id-row-header {
  display: grid;
  grid-template-columns: 32px 56px minmax(180px, 2fr) 80px 60px minmax(180px, 2.2fr) 80px 96px 140px;
  gap: 12px;
  align-items: center;
  padding: 12px 16px;
  border-bottom: 1px solid #f1f3f7;
  transition: background 0.15s;
  min-width: 1080px;
}
.id-list .id-row:last-child { border-bottom: none; }
.id-list .id-row:hover { background: #fafbfc; }
.id-list .id-row-header {
  background: #f8fafc;
  font-size: 12px; font-weight: 600; color: #64748b;
  border-bottom: 2px solid #e2e8f0;
  position: sticky; top: 0; z-index: 2;
  padding: 14px 16px;
}
.id-row .inf-demand-checkbox {
  width: 16px; height: 16px; accent-color: var(--primary-600);
  justify-self: center;
}
.id-row-main {
  display: flex; flex-direction: column; gap: 3px;
  min-width: 0; overflow: hidden;
}
.id-row-title {
  font-size: 14px; font-weight: 600; color: #1e293b;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.id-row-sub {
  font-size: 12px; color: #94a3b8;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.id-row-fans {
  font-size: 13px; color: #475569; font-weight: 600;
  text-align: right; white-space: nowrap;
}
.id-row-level {
  display: flex; align-items: center; justify-content: center;
}
.id-row-brief {
  font-size: 13px; color: #475569;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.id-row-status {
  display: flex; align-items: center; justify-content: center;
}
.id-row-date {
  font-size: 12px; color: #94a3b8;
  text-align: right; white-space: nowrap;
}
.id-row-actions {
  display: flex; gap: 6px; align-items: center; justify-content: flex-end;
}

/* ==================== 商家招募需求列表视图 ====================
   列结构: type | title+merchant | fans | level | commission | status | date | action  */
.mr-list {
  display: flex; flex-direction: column; gap: 0;
  background: white; border-radius: 12px; border: 1px solid #f1f5f9;
  overflow-x: auto;
}
.mr-list .mr-row,
.mr-list .mr-row-header {
  display: grid;
  grid-template-columns: 56px minmax(220px, 2.4fr) 110px 90px minmax(140px, 1.4fr) 80px 96px 160px;
  gap: 12px;
  align-items: center;
  padding: 12px 16px;
  border-bottom: 1px solid #f1f3f7;
  transition: background 0.15s;
  min-width: 1080px;
}
.mr-list .mr-row:last-child { border-bottom: none; }
.mr-list .mr-row:hover { background: #fafbfc; }
.mr-list .mr-row-header {
  background: #f8fafc;
  font-size: 12px; font-weight: 600; color: #64748b;
  border-bottom: 2px solid #e2e8f0;
  position: sticky; top: 0; z-index: 2;
  padding: 14px 16px;
}
.mr-row-main {
  display: flex; flex-direction: column; gap: 3px;
  min-width: 0; overflow: hidden;
}
.mr-row-title {
  font-size: 14px; font-weight: 600; color: #1e293b;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mr-row-sub {
  font-size: 12px; color: #94a3b8;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mr-row-fans {
  font-size: 13px; color: #475569; font-weight: 500;
  text-align: center; white-space: nowrap;
}
.mr-row-level {
  font-size: 13px; color: #475569;
  text-align: center; white-space: nowrap;
}
.mr-row-commission {
  font-size: 13px; color: #ea580c; font-weight: 600;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mr-row-status {
  display: flex; align-items: center; justify-content: center;
}
.mr-row-date {
  font-size: 12px; color: #94a3b8;
  text-align: right; white-space: nowrap;
}
.mr-row-actions {
  display: flex; gap: 6px; align-items: center; justify-content: flex-end;
}

/* ==================== 达人管理页 ==================== */
.im-hero {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}
.im-hero-card {
  background: white;
  border-radius: 10px;
  padding: 14px 16px;
  border: 1px solid #f1f5f9;
  text-align: center;
}
.im-hero-val {
  font-size: 22px;
  font-weight: 700;
  line-height: 1.2;
}
.im-hero-label {
  font-size: 12px;
  color: #94a3b8;
  margin-top: 4px;
}

.im-list {
  background: white;
  border-radius: 12px;
  border: 1px solid #f1f5f9;
  overflow-x: auto;
}
.im-row {
  display: grid;
  gap: 10px;
  align-items: center;
  padding: 12px 16px;
  border-bottom: 1px solid #f1f3f7;
  transition: background 0.15s;
}
.im-row:last-child { border-bottom: none; }
.im-row:hover:not(.im-row-header) { background: #fafbfc; }
.im-row-header {
  background: #f8fafc;
  font-size: 12px; font-weight: 600; color: #64748b;
  border-bottom: 2px solid #e2e8f0;
  position: sticky; top: 0; z-index: 2;
  padding: 14px 16px;
}
.im-th {
  white-space: nowrap;
  color: #64748b;
}
.im-th.th-right, .im-cell.th-right { text-align: right; }
.im-cell {
  font-size: 13px; color: #475569;
  min-width: 0; overflow: hidden;
  white-space: nowrap; text-overflow: ellipsis;
}
.im-cell-name { display: flex; flex-direction: column; gap: 2px; }
.im-name-main {
  font-size: 14px; font-weight: 600; color: #1e293b;
  overflow: hidden; text-overflow: ellipsis;
}
.im-name-sub {
  font-size: 11px; color: #94a3b8;
  overflow: hidden; text-overflow: ellipsis;
}
.im-actions {
  display: flex; gap: 4px; justify-content: flex-end; flex-shrink: 0;
}

/* 商家管理特有列宽（9 列：公司|联系人|行业|手机|销售|需求数|状态|时间|操作） */
.im-list .im-row.mm-row {
  grid-template-columns: minmax(180px, 1.6fr) 100px 100px 110px minmax(110px, 1.2fr) 70px 80px 100px 280px;
  min-width: 1280px;
}
.im-list .im-row.mm-row.mm-row-deleted {
  background: #fef2f2;
  opacity: 0.65;
}
.im-list .im-row.mm-row.mm-row-deleted:hover { background: #fee2e2; }

.demand-card {
  background: white;
  border-radius: var(--radius);
  padding: 18px;
  border: 1px solid rgba(59, 130, 246, 0.08);
  box-shadow: var(--shadow-sm);
  transition: all 0.25s;
  position: relative;
}
.demand-card:hover { 
  box-shadow: var(--shadow-md); 
  border-color: var(--primary-200);
  transform: translateY(-2px);
}
.demand-card-detail { padding: 18px; }
.demand-title { font-size: 15px; font-weight: 600; flex: 1; min-width: 0; word-break: break-all; color: var(--gray-800); }

/* Demand Detail Grid */
.demand-detail-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin: 12px 0;
  padding: 14px;
  background: linear-gradient(135deg, var(--primary-50), #f8faff);
  border-radius: 10px;
  border: 1px solid var(--primary-100);
}
.detail-field {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.detail-field.full-width {
  grid-column: 1 / -1;
}
.detail-label {
  font-size: 11px;
  color: var(--gray-400);
  font-weight: 500;
}
.detail-value {
  font-size: 13px;
  color: var(--gray-800);
  word-break: break-all;
}
.price-text {
  font-weight: 700;
  color: var(--danger);
  font-size: 16px;
}
.demand-meta { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
.demand-desc { font-size: 13px; color: var(--gray-500); margin: 8px 0; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.demand-footer { display: flex; justify-content: space-between; align-items: center; margin-top: 10px; flex-wrap: wrap; gap: 6px; padding-top: 10px; border-top: 1px solid var(--gray-100); }
.merchant-info { font-size: 12px; color: var(--gray-500); }

/* ==================== 筛选面板 V2 ==================== */
.filter-panel {
  background: white;
  border-radius: var(--radius);
  padding: 16px 20px;
  margin-bottom: 16px;
  border: 1px solid rgba(59,130,246,0.08);
  box-shadow: var(--shadow-sm);
}

/* 商家需求大厅工具栏 */
.md-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 12px;
  padding: 4px 0;
  flex-wrap: wrap;
}
.md-toolbar-left {
  display: flex;
  align-items: center;
  gap: 8px;
}
.md-toolbar-right {
  display: flex;
  align-items: center;
  gap: 6px;
}
.filter-row {
  display: flex;
  gap: 12px;
  align-items: flex-end;
}
.filter-item {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.filter-item label {
  font-size: 11px;
  color: var(--gray-400);
  font-weight: 600;
}
.filter-item select,
.filter-item input {
  padding: 7px 10px;
  border: 1px solid var(--gray-200);
  border-radius: 8px;
  font-size: 13px;
  background: #fafbfc;
  outline: none;
  transition: border-color 0.2s;
}
.filter-item select:focus,
.filter-item input:focus {
  border-color: var(--primary-400);
  box-shadow: 0 0 0 3px rgba(59,130,246,0.08);
}

/* ==================== 需求卡片 V2（巨量星图风格） ==================== */
.demand-card-v2 {
  background: white;
  border-radius: 14px;
  border: 1px solid #e8ecf1;
  box-shadow: 0 1px 4px rgba(0,0,0,0.04);
  transition: all 0.25s ease;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.demand-card-v2:hover {
  box-shadow: 0 6px 20px rgba(0,0,0,0.08);
  transform: translateY(-2px);
  border-color: #c7d6ed;
}

/* 卡片头部：类型badge + 标题 + 状态 */
.demand-header {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 18px 10px;
  border-bottom: 1px solid #f0f3f8;
}
.type-badge {
  display: inline-flex;
  align-items: center;
  padding: 2px 9px;
  border-radius: 6px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.5px;
  flex-shrink: 0;
}
.demand-header .demand-title {
  font-size: 15px;
  font-weight: 600;
  color: #1e293b;
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* 卡片主体信息区 */
.demand-body {
  padding: 12px 18px;
}
.demand-info-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 8px 16px;
}
.info-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.info-label {
  font-size: 11px;
  color: #94a3b8;
  font-weight: 500;
  letter-spacing: 0.3px;
}
.info-value {
  font-size: 13px;
  color: #374151;
  font-weight: 500;
}
.info-item.highlight .info-value {
  color: #ef4444;
  font-weight: 700;
  font-size: 15px;
}

.demand-desc {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px dashed #e5e7eb;
  font-size: 13px;
  color: #64748b;
  line-height: 1.6;
}
.demand-requirements {
  margin-top: 8px;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.demand-requirements span {
  background: var(--primary-50);
  color: #92400e;
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 4px;
}

/* 底部操作栏 */
.demand-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 18px;
  border-top: 1px solid #f0f3f8;
  background: #fafbfd;
  flex-wrap: wrap;
  gap: 6px;
}
.demand-meta { font-size: 12px; color: #94a3b8; }
.demand-actions {
  display: flex;
  gap: 6px;
  align-items: center;
}
.btn-danger-outline {
  color: #dc2626 !important;
  background: #fff;
  border: 1px solid #fecaca;
  padding: 5px 12px;
  border-radius: 8px;
  font-size: 12px;
  cursor: pointer;
  transition: all 0.15s;
}
.btn-danger-outline:hover {
  background: #fef2f2;
  border-color: #f87171;
}
.btn-warning-outline {
  color: #d97706 !important;
  background: #fff;
  border: 1px solid #fde68a;
  padding: 5px 12px;
  border-radius: 8px;
  font-size: 12px;
  cursor: pointer;
  transition: all 0.15s;
}
.btn-warning-outline:hover {
  background: #fffbeb;
  border-color: var(--warning);
}

/* 移动端适配 */
@media(max-width:768px) {
  .filter-row { flex-direction: column; }
  .filter-item { width: 100%; }
  .demand-info-grid { grid-template-columns: 1fr 1fr; }
  .demand-header { flex-wrap: wrap; }
  /* 列表视图移动端 */
  .demand-list .demand-row-header { display: none; }
  .demand-list .demand-row {
    grid-template-columns: 1fr auto;
    grid-auto-rows: auto;
    padding: 12px; gap: 6px;
    min-width: unset;
  }
  /* 移动端重排：checkbox+type+title 占满行，价格置顶，操作底行 */
  .demand-row .demand-checkbox { grid-column: 1 / 2; justify-self: start; align-self: start; margin-top:2px; }
  .type-badge-sm { grid-column: 2 / 3; justify-self: start; align-self: start; margin-top:2px; }
  .demand-row-main { grid-column: 1 / -3; grid-row: 1; }
  .demand-row-price { grid-column: -2 / -1; grid-row: 1; order: -1; }
  .demand-row-sales, .demand-row-commission,
  .demand-row-date { display: none; }
  .demand-row-actions { grid-column: 1 / -1; justify-content: flex-end; margin-top: 4px; }
}

/* ==================== Tables ==================== */
.table-responsive {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  margin: -1px;
  border-radius: var(--radius);
}

.data-table { width: 100%; border-collapse: collapse; font-size: 12px; white-space: nowrap; }
.data-table th { background: linear-gradient(135deg, var(--primary-50), var(--gray-100)); padding: 12px 14px; font-weight: 600; text-align: left; position: sticky; top: 0; z-index: 1; color: var(--primary-700); }
.data-table td { padding: 10px 14px; border-bottom: 1px solid var(--gray-100); }
.data-table tr:hover { background: var(--primary-50); }
.cell-ellipsis { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 150px; }

/* ==================== Mobile Card View for Tables ==================== */
.mobile-card-list { display: none; }

.mobile-data-card {
  background: white;
  border: 1px solid rgba(59, 130, 246, 0.08);
  border-radius: var(--radius);
  padding: 14px;
  margin-bottom: 12px;
  box-shadow: var(--shadow-sm);
}
.mobile-data-card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--gray-100);
}
.mobile-data-card-header .name { font-weight: 600; font-size: 15px; }
.mobile-data-card-body { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.mobile-data-card-body.single-col { grid-template-columns: 1fr; }
.mobile-data-field { font-size: 12px; }
.mobile-data-field .field-label { color: var(--gray-400); margin-bottom: 2px; }
.mobile-data-field .field-value { color: var(--gray-800); word-break: break-all; }
.mobile-data-card-footer {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--gray-100);
  display: flex;
  gap: 8px;
  justify-content: flex-end;
}

/* ==================== Recommend Items ==================== */
.recommend-item {
  padding: 16px;
  border: 1px solid rgba(59, 130, 246, 0.08);
  border-radius: var(--radius);
  margin-bottom: 12px;
  transition: all 0.2s;
  background: white;
}
.recommend-item:hover { border-color: var(--primary-300); box-shadow: var(--shadow-sm); }
.recommend-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; flex-wrap: wrap; gap: 8px; }
.recommend-header > div { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; flex: 1; min-width: 0; }
.recommend-info { display: flex; flex-wrap: wrap; gap: 8px 12px; font-size: 12px; color: var(--gray-500); margin-bottom: 6px; }
.recommend-desc { font-size: 13px; color: var(--gray-600); }

/* ==================== Upload ==================== */
.upload-area {
  border: 2px dashed var(--primary-200);
  border-radius: 14px;
  padding: 36px 20px;
  text-align: center;
  cursor: pointer;
  transition: all 0.2s;
  background: var(--primary-50);
}
.upload-area:hover { border-color: var(--primary-400); background: var(--primary-100); }
.upload-icon { font-size: 36px; margin-bottom: 8px; }
.upload-text { font-size: 14px; font-weight: 600; color: var(--primary-700); }
.upload-hint { font-size: 12px; color: var(--gray-400); margin-top: 4px; }

/* Import Result */
.import-result-box { padding: 14px 18px; border-radius: 10px; font-size: 13px; }
.import-result-box.success { background: #f0fdf4; border: 1px solid #bbf7d0; color: #065f46; }
.import-result-box.error { background: #fef2f2; border: 1px solid #fecaca; color: #991b1b; }
.result-errors { margin-top: 8px; font-size: 12px; }

/* Thumb Image */
.thumb-img {
  width: 42px; height: 42px;
  object-fit: cover;
  border-radius: 8px;
  cursor: pointer;
  border: 1px solid var(--gray-200);
  transition: transform 0.2s;
}
.thumb-img:hover { transform: scale(1.1); }
.link-text { color: var(--primary-500); text-decoration: none; font-weight: 500; }
.link-text:hover { text-decoration: underline; color: var(--primary-700); }

/* ==================== Toast ==================== */
.toast-container { position: fixed; top: 20px; right: 20px; z-index: 10000; display: flex; flex-direction: column; gap: 8px; max-width: calc(100vw - 40px); }
.toast {
  background: white;
  padding: 14px 20px;
  border-radius: 12px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  border-left: 4px solid var(--success);
  animation: slideIn 0.3s ease;
  word-break: break-all;
}
.toast.error { border-left-color: var(--danger); }

@keyframes slideIn {
  from { transform: translateX(100%); opacity: 0; }
  to { transform: translateX(0); opacity: 1; }
}

/* ==================== Modal ==================== */
.modal-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, 0.5);
  z-index: 9999;
  align-items: center;
  justify-content: center;
  padding: 16px;
  backdrop-filter: blur(4px);
}
.modal-overlay.active { display: flex; }
.modal {
  background: white;
  border-radius: 20px;
  width: 520px;
  max-width: 100%;
  max-height: 85vh;
  overflow-y: auto;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15);
  transition: width 0.2s ease;
}
.modal-wide { width: 720px; }
.modal-header { 
  display: flex; 
  justify-content: space-between; 
  align-items: center; 
  padding: 18px 24px; 
  border-bottom: 1px solid var(--gray-100);
  background: linear-gradient(135deg, var(--primary-50), white);
}
.modal-header h3 { color: var(--primary-700); }
.modal-body { padding: 24px; }
.modal-footer { padding: 14px 24px; border-top: 1px solid var(--gray-100); display: flex; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
.modal-close { background: none; border: none; font-size: 24px; cursor: pointer; color: var(--gray-400); padding: 4px; }
.modal-close:hover { color: var(--gray-700); }

/* Empty State */
.empty-state { text-align: center; padding: 50px 20px; color: var(--gray-400); }
.empty-state .icon { font-size: 52px; margin-bottom: 12px; }

/* ==================== Matchmaking / Cooperation ==================== */
.matchmaking-vertical-container {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin-bottom: 24px;
}

/* 环节分区头部 */
.matchmaking-stage-section {
  margin-bottom: 0;
}
.matchmaking-stage-section.hidden { display: none; }

.stage-section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px;
  background: white;
  border-radius: 12px 12px 0 0;
  cursor: pointer;
  transition: all 0.2s;
  box-shadow: var(--shadow-sm);
  margin-top: 0;
}
.stage-section-header:hover {
  background: var(--primary-50);
}
.stage-section-title {
  display: flex;
  align-items: center;
  gap: 10px;
}
.stage-section-icon { font-size: 20px; }
.stage-section-title h3 { margin: 0; font-size: 15px; font-weight: 700; color: var(--gray-800); }
.stage-section-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 24px;
  padding: 0 8px;
  border-radius: 12px;
  font-size: 12px;
  font-weight: 700;
  color: white;
}
.stage-section-arrow { color: var(--gray-400); font-size: 12px; transition: transform 0.2s; }

.stage-section-body {
  padding: 12px 16px 16px;
  background: var(--gray-50);
  border-radius: 0 0 12px 12px;
  border: 1px solid rgba(59, 130, 246, 0.06);
  border-top: none;
}
.stage-section-body.empty { padding: 20px; text-align: center; }
.stage-empty-hint { color: var(--gray-400); font-size: 13px; font-style: italic; }

/* 环节间连接线 */
.stage-connector {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 8px 0;
}
.connector-line { width: 2px; height: 16px; background: linear-gradient(to bottom, var(--primary-300), var(--primary-400)); }
.connector-arrow { color: var(--primary-400); font-size: 10px; line-height: 1; }

/* 纵向撮合卡片 */
.matchmaking-vcard {
  display: flex;
  gap: 0;
  margin-bottom: 10px;
  border-radius: 10px;
  overflow: hidden;
  background: white;
  box-shadow: 0 1px 4px rgba(0,0,0,0.06);
  transition: all 0.2s;
  border: 1px solid rgba(59, 130, 246, 0.06);
}
.matchmaking-vcard:hover {
  box-shadow: 0 4px 16px rgba(59, 130, 246, 0.12);
  transform: translateY(-1px);
  border-color: var(--primary-200);
}
.matchmaking-vcard:last-child { margin-bottom: 0; }

.matchmaking-vcard-left {
  width: 48px;
  min-width: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 12px 8px;
}
.vcard-progress {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
  height: 100%;
  justify-content: center;
}
.vcard-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--gray-200);
  transition: all 0.2s;
}
.vcard-dot.active { transform: scale(1.2); }
.vcard-line { width: 2px; height: 8px; background: var(--gray-200); }

.matchmaking-vcard-content {
  flex: 1;
  padding: 14px 16px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.vcard-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  flex-wrap: wrap;
  gap: 8px;
}
.vcard-parties {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.vcard-merchant { font-weight: 600; font-size: 13px; color: var(--gray-700); }
.vcard-arrow { color: var(--gray-300); font-size: 12px; }
.vcard-influencer { font-weight: 600; font-size: 13px; color: var(--primary-600); }
.vcard-meta { display: flex; align-items: center; gap: 8px; }
.vcard-date { font-size: 11px; color: var(--gray-400); }

.vcard-details {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 8px;
  padding: 10px 12px;
  background: linear-gradient(135deg, var(--primary-50) 0%, #f0f9ff 100%);
  border-radius: 8px;
  font-size: 12px;
}
.vcard-detail-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.detail-label { color: var(--gray-400); font-size: 11px; }
.detail-value { color: var(--gray-700); font-weight: 500; }

.vcard-actions {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  padding-top: 4px;
  border-top: 1px solid var(--gray-100);
}

/* 保留旧样式兼容 */
.stage-pipeline {
  display: flex;
  gap: 4px;
  margin-bottom: 20px;
  padding: 6px;
  background: white;
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  border: 1px solid rgba(59, 130, 246, 0.08);
}
.stage-item {
  flex: 1;
  text-align: center;
  padding: 14px 10px;
  border-radius: 10px;
  cursor: pointer;
  transition: all 0.2s;
  background: var(--gray-50);
}
.stage-item:hover { background: var(--primary-50); }
.stage-item.active { background: var(--primary-500); color: white; box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3); }
.stage-item.completed { background: var(--primary-100); }
.stage-name { font-size: 13px; font-weight: 600; }
.stage-count { font-size: 20px; font-weight: 700; margin-top: 4px; }
.stage-item.active .stage-count { color: white; }

.matchmaking-card {
  background: white;
  border-radius: var(--radius);
  padding: 18px;
  margin-bottom: 12px;
  border: 1px solid rgba(59, 130, 246, 0.08);
  box-shadow: var(--shadow-sm);
  transition: all 0.2s;
}
.matchmaking-card:hover { box-shadow: var(--shadow-md); border-color: var(--primary-200); }
.matchmaking-card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; flex-wrap: wrap; gap: 8px; }
.matchmaking-card-body { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; font-size: 13px; color: var(--gray-600); padding: 12px; background: var(--primary-50); border-radius: 8px; }
.matchmaking-card-footer { display: flex; gap: 8px; margin-top: 12px; justify-content: flex-end; flex-wrap: wrap; }

/* Profile */
.profile-card {
  background: white;
  border-radius: 16px;
  padding: 28px;
  margin-bottom: 24px;
  box-shadow: var(--shadow-md);
  border: 1px solid rgba(59, 130, 246, 0.08);
  position: relative;
  overflow: hidden;
}
.profile-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 80px;
  background: linear-gradient(135deg, var(--primary-100), var(--primary-50));
}
.profile-header {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 20px;
  position: relative;
  z-index: 1;
}
.profile-avatar {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--primary-500), var(--primary-400));
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 28px;
  box-shadow: 0 4px 12px rgba(59, 130, 246, 0.2);
  border: 3px solid white;
}
.profile-info h3 { font-size: 18px; color: var(--gray-800); }
.profile-info p { font-size: 13px; color: var(--gray-500); }
.profile-stats {
  display: flex;
  gap: 24px;
  position: relative;
  z-index: 1;
}
.profile-stat-item { text-align: center; }
.profile-stat-value { font-size: 24px; font-weight: 700; color: var(--primary-600); }
.profile-stat-label { font-size: 12px; color: var(--gray-500); margin-top: 2px; }

/* Cooperation Card */
.coop-card {
  background: white;
  border: 1px solid rgba(59, 130, 246, 0.08);
  border-radius: var(--radius);
  padding: 16px;
  margin-bottom: 12px;
  box-shadow: var(--shadow-sm);
  transition: all 0.2s;
}
.coop-card:hover { box-shadow: var(--shadow-md); }
.coop-card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; flex-wrap: wrap; gap: 8px; }
.coop-card-body { font-size: 13px; color: var(--gray-600); }
.coop-card-body p { margin-bottom: 4px; }
.coop-card-footer { display: flex; gap: 8px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--gray-100); justify-content: flex-end; flex-wrap: wrap; }

.count-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 20px;
  border-radius: 10px;
  background: var(--primary-500);
  color: white;
  font-size: 11px;
  font-weight: 700;
  padding: 0 6px;
  margin-left: 6px;
}

/* ==================== 员工管理（表格布局） ==================== */
.em-hero {
  display: flex; gap: 12px; margin-bottom: 16px; overflow-x: auto; padding-bottom: 4px;
}
.em-table-wrap { box-shadow: var(--shadow-sm); }
.em-table {
  width: 100%; border-collapse: collapse;
  font-size: 13px;
}
.em-table thead th {
  background: #f8fafc; padding: 10px 14px; text-align: left; font-weight: 600; color: #475569;
  border-bottom: 2px solid #e2e8f0; white-space: nowrap; font-size: 12px;
}
.em-table tbody td {
  padding: 10px 14px; border-bottom: 1px solid #f1f5f9; vertical-align: middle;
}
.em-table tbody tr:hover { background: #fafbfc; }
.emp-avatar {
  width: 30px; height: 30px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 700; color: #334155; flex-shrink: 0;
}
/* 账号管理 - 统一操作按钮 */
.em-action-group {
  display: flex;
  gap: 5px;
  flex-wrap: nowrap;
  justify-content: flex-end;
}
.em-btn {
  padding: 3px 10px;
  font-size: 11px !important;
  font-weight: 500;
  border-radius: 6px !important;
  cursor: pointer;
  white-space: nowrap;
  border: 1px solid;
  transition: all 0.15s;
}
.em-btn-edit { background:#fff; color:var(--primary-400) !important; border-color:var(--primary-300); }
.em-btn-edit:hover { background:var(--primary-50); }
.em-btn-pwd { background:#fff; color:#d97706 !important; border-color:#fde68a; }
.em-btn-pwd:hover { background:#fffbeb; }
.em-btn-enable { background:#fff; color:#16a34a !important; border-color:#86efac; }
.em-btn-enable:hover { background:#f0fdf4; }
.em-btn-disable { background:#fff; color:#d97706 !important; border-color:#fde68a; }
.em-btn-disable:hover { background:#fffbeb; }
.em-btn-del { background:#fff; color:#dc2626 !important; border-color:#fecaca; }
.em-btn-del:hover { background:#fef2f2; }
.info-box { animation: fadeIn 0.3s; }

/* ==================== Responsive: Tablet ==================== */
@media (max-width: 1024px) {
  .stats-grid { grid-template-columns: repeat(2, 1fr); }
  .dashboard-charts { grid-template-columns: 1fr; }
  .demand-grid { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
  .matchmaking-card-body { grid-template-columns: 1fr 1fr; }
  .vcard-details { grid-template-columns: repeat(2, 1fr); }
}

/* ==================== Responsive: Mobile ==================== */
@media (max-width: 768px) {
  .mobile-topbar { display: flex; }

  .sidebar {
    transform: translateX(-100%);
    width: 280px;
    top: 0;
  }
  .sidebar.open { transform: translateX(0); }
  .sidebar-close { display: block; }

  .main-content {
    margin-left: 0;
    padding: 16px;
    padding-top: calc(var(--topbar-height) + 16px);
  }

  .page-header {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
  }
  .page-header h2 { font-size: 18px; }
  .page-header > div,
  .page-header > span { width: 100%; }
  .page-header > div { display: flex; flex-wrap: wrap; gap: 8px; }

  .stats-grid { grid-template-columns: 1fr 1fr; gap: 10px; }
  .stat-card { padding: 14px; }
  .stat-value { font-size: 22px; }
  .stat-icon { font-size: 22px; margin-bottom: 4px; }

  .dashboard-charts { grid-template-columns: 1fr; }

  .form-row { grid-template-columns: 1fr; gap: 0; }
  .form-group input, .form-group select, .form-group textarea { font-size: 16px; padding: 12px; }

  .filter-bar { flex-direction: column; align-items: stretch; }
  .filter-bar select, .filter-bar input { max-width: 100%; }

  .demand-grid { grid-template-columns: 1fr; }
  .demand-detail-grid { grid-template-columns: 1fr; }

  .table-responsive.has-mobile-cards { display: none; }
  .mobile-card-list.has-mobile-cards { display: block; }

  .table-responsive { margin: 0 -16px; padding: 0; }

  .btn { padding: 10px 16px; font-size: 14px; }
  .btn-sm { padding: 7px 12px; font-size: 12px; }

  .upload-area { padding: 24px 16px; }

  .recommend-header { flex-direction: column; align-items: flex-start; gap: 10px; }
  .recommend-header > div { width: 100%; }
  .recommend-header > button, .recommend-header > .btn { width: 100%; }

  .login-card { padding: 28px 20px; }
  .login-header h1 { font-size: 20px; }

  .modal { border-radius: 16px; margin: 0; }
  .modal-body { padding: 16px; }
  .modal .form-row { grid-template-columns: 1fr; }

  .toast-container { top: calc(var(--topbar-height) + 8px); right: 12px; left: 12px; }
  .toast { font-size: 12px; padding: 10px 14px; }

  .card-body { padding: 12px 14px; }
  .card-header { padding: 12px 14px; }

  .tab-btn { flex: 1; text-align: center; }

  .stage-pipeline { flex-wrap: wrap; }
  .stage-item { min-width: calc(50% - 4px); }

  .matchmaking-card-body { grid-template-columns: 1fr; }
  
  .matchmaking-vcard { flex-direction: column; }
  .matchmaking-vcard-left { width: 100%; min-width: 100%; padding: 8px 16px; flex-direction: row; }
  .vcard-progress { flex-direction: row; height: auto; width: 100%; }
  .vcard-line { width: 8px; height: 2px; }
  .vcard-details { grid-template-columns: 1fr; }
  .vcard-header { flex-direction: column; }
  .vcard-actions { justify-content: flex-start; }

  .profile-stats { flex-wrap: wrap; gap: 16px; }
  .profile-card { padding: 20px; }
}

/* ==================== Responsive: Small Mobile ==================== */
@media (max-width: 480px) {
  .stats-grid { grid-template-columns: 1fr 1fr; gap: 8px; }
  .stat-card { padding: 12px; }
  .stat-value { font-size: 20px; }
  .stat-label { font-size: 11px; }
  .page-header h2 { font-size: 16px; }
  .mobile-data-card-body { grid-template-columns: 1fr; }
  .demand-card { padding: 12px; }
  .demand-title { font-size: 14px; }
}

/* ==================== Desktop Large ==================== */
@media (min-width: 1400px) {
  .main-content { padding: 32px 48px; }
  .stats-grid { gap: 20px; }
  .stat-card { padding: 26px; }
  .stat-value { font-size: 32px; }
  .demand-grid { grid-template-columns: repeat(auto-fill, minmax(380px, 1fr)); }
}

/* ==================== Pagination ==================== */
.pagination-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 18px 0;
  margin-top: 18px;
  border-top: 1px solid var(--gray-100);
  flex-wrap: wrap;
  gap: 12px;
}
.pagination-info { font-size: 13px; color: var(--gray-500); }
.pagination-controls {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.page-size-select {
  padding: 6px 12px;
  border: 1px solid var(--gray-200);
  border-radius: 8px;
  font-size: 12px;
  background: white;
}
.page-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 34px;
  height: 34px;
  background: linear-gradient(135deg, var(--primary-600), var(--primary-500));
  color: white;
  border-radius: 8px;
  font-size: 13px;
  font-weight: 600;
  box-shadow: 0 2px 6px rgba(59, 130, 246, 0.2);
}

/* ==================== Search Filter Bar ==================== */
.search-filter-bar {
  display: flex;
  gap: 10px;
  margin-bottom: 18px;
  align-items: center;
  flex-wrap: wrap;
}
.search-filter-bar input {
  flex: 1;
  min-width: 180px;
  padding: 10px 16px;
  border: 1.5px solid var(--gray-200);
  border-radius: 10px;
  font-size: 13px;
  background: white;
}
.search-filter-bar input:focus {
  outline: none;
  border-color: var(--primary-400);
  box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.1);
}
.search-filter-bar select {
  padding: 10px 32px 10px 14px;
  border: 1.5px solid var(--gray-200);
  border-radius: 10px;
  font-size: 13px;
  background: white url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%2364748b' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10z'/%3E%3C/svg%3E") no-repeat right 10px center;
  -webkit-appearance: none;
  appearance: none;
}

/* ==================== Level Stats Bar ==================== */
.level-stats-bar {
  display: flex;
  gap: 12px;
  margin-bottom: 20px;
  padding: 16px 20px;
  background: white;
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  border: 1px solid rgba(59, 130, 246, 0.08);
  flex-wrap: wrap;
  align-items: center;
}
.level-stat-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 14px;
  background: var(--primary-50);
  border-radius: 10px;
  border: 1px solid var(--primary-100);
}
.level-stat-label {
  font-size: 12px;
  color: var(--gray-500);
  font-weight: 500;
}
.level-stat-value {
  font-size: 18px;
  font-weight: 700;
  color: var(--primary-700);
}
.level-stat-change {
  font-size: 11px;
}

/* ==================== Section Title ==================== */
.section-title {
  font-size: 15px;
  font-weight: 700;
  color: var(--primary-700);
  margin-bottom: 14px;
  padding-bottom: 10px;
  border-bottom: 2px solid var(--primary-200);
  display: flex;
  align-items: center;
}

/* ==================== Back Button ==================== */
.back-btn {
  margin-bottom: 14px;
}

/* ==================== Batch Select ==================== */
.batch-select-all {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--gray-600);
  cursor: pointer;
  white-space: nowrap;
}
.batch-select-all input[type="checkbox"] {
  width: 16px;
  height: 16px;
  cursor: pointer;
  accent-color: var(--primary-500);
}
.demand-checkbox, .inf-demand-checkbox, .inf-checkbox {
  width: 16px;
  height: 16px;
  cursor: pointer;
  accent-color: var(--primary-500);
  flex-shrink: 0;
}

/* ==================== Stage Badge ==================== */
.stage-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  border-radius: 20px;
  font-size: 11px;
  font-weight: 600;
}
.stage-badge.需求发布 { background: var(--primary-100); color: var(--primary-700); }
.stage-badge.合作匹配 { background: var(--primary-50); color: #92400e; }
.stage-badge.样品寄送 { background: #e0e7ff; color: #3730a3; }
.stage-badge.开始合作 { background: #d1fae5; color: #065f46; }

/* ==================== Responsive additions ==================== */
@media (max-width: 768px) {
  .pagination-bar { flex-direction: column; align-items: stretch; gap: 10px; }
  .pagination-controls { justify-content: center; }
  .search-filter-bar { flex-direction: column; }
  .search-filter-bar input { min-width: auto; }
  .level-stats-bar { gap: 8px; padding: 12px; }
  .level-stat-item { padding: 4px 8px; }
  .level-stat-value { font-size: 15px; }
  .section-title { font-size: 13px; }
  .coop-card-footer { justify-content: stretch; }
  .coop-card-footer .btn { flex: 1; }
}

/* ============ 撮合联想下拉组件 ============ */
.suggest-wrap { position: relative; }
.suggest-dropdown {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  max-height: 280px;
  overflow-y: auto;
  background: #fff;
  border: 1px solid var(--primary-200, var(--primary-200));
  border-radius: 10px;
  box-shadow: 0 8px 24px rgba(43, 107, 245, 0.15);
  z-index: 9999;
  margin-top: 4px;
}
.suggest-item {
  padding: 8px 12px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  border-bottom: 1px solid #f1f5f9;
  transition: background 0.15s;
}
.suggest-item:hover { background: var(--primary-light, var(--primary-50)); }
.suggest-item:last-child { border-bottom: none; }
.suggest-name {
  flex: 1;
  min-width: 0;
  font-weight: 500;
  color: #1f2937;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.suggest-meta {
  font-size: 11px;
  color: #6b7280;
  flex-shrink: 0;
}
.suggest-badge {
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 10px;
  flex-shrink: 0;
  font-weight: 500;
}
.suggest-empty {
  padding: 12px;
  color: #9ca3af;
  font-size: 12px;
  text-align: center;
}
/* 自定义滚动条 */
.suggest-dropdown::-webkit-scrollbar { width: 6px; }
.suggest-dropdown::-webkit-scrollbar-thumb { background: var(--primary-300, var(--primary-300)); border-radius: 3px; }

/* ============ 升级佣金标识（红色"⬆ 升级"胶囊 + 自定义 tooltip）============
   触发条件：撮合的 upgrade_commission_rate > commission_rate
   业务含义：达人达到了某个里程碑（如订单量/复推/投流等），佣金从原比例升高到了新比例
            财务结算时按升级后佣金率算。运营可以一眼挑出"高佣金合作"做专项跟进。 */
.upgrade-star {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 2px 8px;
  background: linear-gradient(135deg, #ef4444, #dc2626);
  color: #fff;
  border-radius: 10px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.3px;
  white-space: nowrap;
  box-shadow: 0 2px 6px rgba(220, 38, 38, 0.4);
  animation: pulse-star 1.8s ease-in-out infinite;
  flex-shrink: 0;
  cursor: help;
  position: relative;
}
@keyframes pulse-star {
  0%, 100% { transform: scale(1); box-shadow: 0 2px 6px rgba(220, 38, 38, 0.4); }
  50% { transform: scale(1.05); box-shadow: 0 3px 10px rgba(220, 38, 38, 0.6); }
}

/* 自定义 tooltip：position:fixed 浮在最顶层，避开 overflow:hidden / 父级 stacking context 裁切
   显示/隐藏 + 定位 全部由 JS 在 mouseenter/mouseleave 时控制（见 app.js 全局监听） */
.upgrade-tip {
  position: fixed;
  left: 0;
  top: 0;
  background: #1e293b;
  color: #fff;
  padding: 8px 12px;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.5;
  white-space: nowrap;
  box-shadow: 0 4px 16px rgba(0,0,0,0.25);
  opacity: 0;
  pointer-events: none;
  transition: opacity .15s ease;
  z-index: 99999;
  text-align: left;
  letter-spacing: normal;
  animation: none;
  transform: translateX(-50%) translateY(-100%);
  display: none;
}
.upgrade-tip.is-visible {
  display: block;
  opacity: 1;
}
.upgrade-tip::after {
  content: "";
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  border: 5px solid transparent;
  border-top-color: #1e293b;
}

.upgrade-preview {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  background: linear-gradient(90deg, #fef2f2, #fee2e2);
  border: 1px solid #fca5a5;
  border-radius: 8px;
  color: #b91c1c;
  font-size: 13px;
  font-weight: 500;
  margin-top: 8px;
}

/* ============ 撮合管理 · 看板式（Kanban）布局 ============ */
.matchmaking-kanban {
  display: grid;
  grid-template-columns: repeat(4, minmax(260px, 1fr));
  gap: 14px;
  margin-top: 16px;
  align-items: stretch;
}
.kanban-column {
  display: flex;
  flex-direction: column;
  background: #fff;
  border-radius: 12px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
  overflow: hidden;
  min-height: 420px;
  max-height: calc(100vh - 280px);
  transition: transform .2s ease, box-shadow .2s ease, opacity .2s ease;
}
.kanban-column:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(0, 0, 0, 0.08); }
.kanban-column-dim { opacity: 0.35; }
.kanban-column-active { box-shadow: 0 0 0 3px rgba(43, 107, 245, 0.25), 0 6px 18px rgba(0, 0, 0, 0.1); }
.kanban-column-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 14px;
  color: #fff;
  cursor: pointer;
  user-select: none;
  font-weight: 600;
}
.kanban-col-title { display: flex; align-items: center; gap: 8px; font-size: 15px; }
.kanban-col-icon { font-size: 18px; }
.kanban-col-count {
  background: rgba(255, 255, 255, 0.28);
  padding: 2px 10px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 700;
  min-width: 28px;
  text-align: center;
}
.kanban-column-body {
  flex: 1;
  padding: 10px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.kanban-column-body::-webkit-scrollbar { width: 6px; }
.kanban-column-body::-webkit-scrollbar-thumb { background: rgba(0,0,0,.15); border-radius: 3px; }
.kanban-empty {
  padding: 36px 10px;
  text-align: center;
  color: #94a3b8;
}
.kanban-empty-icon { font-size: 32px; opacity: 0.5; margin-bottom: 6px; }
.kanban-empty-text { font-size: 12px; }

/* 看板卡片 */
.kanban-card {
  background: #fff;
  border-radius: 8px;
  padding: 10px 12px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
  display: flex;
  flex-direction: column;
  gap: 8px;
  transition: transform .15s ease, box-shadow .15s ease;
  cursor: default;
  border: 1px solid #e5e7eb;
}
.kanban-card:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
.kanban-card-header { display: flex; align-items: flex-start; }
.kanban-card-parties {
  display: flex;
  flex-direction: column;
  gap: 3px;
  width: 100%;
  font-size: 13px;
  position: relative;
}
.kanban-card-parties .upgrade-star {
  position: absolute;
  top: -6px;
  right: -4px;
  padding: 1px 6px;
  font-size: 10px;
  z-index: 5;
}
.kanban-party {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-weight: 600;
}
.kanban-merchant { color: #0f172a; }
.kanban-influencer { color: var(--primary); }
.kanban-arrow-down {
  font-size: 10px;
  color: #94a3b8;
  line-height: 1;
  padding-left: 4px;
}

.kanban-card-product {
  background: #f8fafc;
  border-radius: 6px;
  padding: 6px 8px;
  font-size: 12px;
}
.kanban-product-name {
  font-weight: 600;
  color: #0f172a;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-bottom: 3px;
}
.kanban-product-meta { display: flex; flex-wrap: wrap; gap: 8px; color: #475569; }
.kanban-product-meta .kanban-gmv { color: #10b981; font-weight: 600; }

.kanban-card-commission { display: flex; flex-wrap: wrap; gap: 4px; }
.kanban-tag {
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 4px;
  background: #f1f5f9;
  color: #475569;
  font-weight: 500;
}
.kanban-tag-rate { background: var(--primary-100); color: var(--primary-700); }
.kanban-tag-upgrade {
  background: linear-gradient(90deg, #fef2f2, #fee2e2);
  color: #b91c1c;
  font-weight: 700;
  border: 1px solid #fca5a5;
}

.kanban-card-account,
.kanban-card-demand,
.kanban-card-notes {
  font-size: 12px;
  color: #64748b;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.kanban-card-notes { color: #475569; font-style: italic; }

.kanban-card-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 11px;
  color: #94a3b8;
  padding-top: 6px;
  border-top: 1px dashed #e5e7eb;
}
.kanban-source {
  padding: 2px 8px;
  border-radius: 10px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.2px;
  border: 1px solid transparent;
}
.kanban-source-manual { background: #f1f5f9; color: #475569; border-color: #cbd5e1; }
.kanban-source-invite { background: var(--primary-100); color: var(--primary-700); border-color: var(--primary-300); }
.kanban-source-apply  { background: #ede9fe; color: #6d28d9; border-color: #c4b5fd; }
.kanban-source-pending { background: #fef9c3; color: #a16207; border-color: #fde68a; }

/* 待撮合需求卡片（导入/发布后自动联动到「需求发布」列） */
.kanban-card-pending { background: #fcfdff; }
.kanban-card-pending .kanban-influencer-empty { color: #94a3b8; font-style: italic; }

/* 撮合管理 - 顶部统计条 */
.mm-summary {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin: 16px 0;
}
.mm-summary-item {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  padding: 14px 16px;
  box-shadow: 0 1px 2px rgba(0,0,0,.03);
}
.mm-summary-label { font-size: 12px; color: #94a3b8; }
.mm-summary-value { font-size: 24px; font-weight: 700; color: #0f172a; margin-top: 4px; }
.mm-summary-gmv { color: #ef4444 !important; }
.mm-summary-sub { font-size: 11px; color: #cbd5e1; margin-top: 2px; }

/* 撮合管理 - 来源筛选 chips */
.mm-chip-group {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-left: 10px;
  flex-wrap: wrap;
}
.mm-chip-label { font-size: 12px; color: #94a3b8; }
.mm-chip {
  padding: 4px 10px;
  border: 1px solid #e5e7eb;
  background: #fff;
  border-radius: 14px;
  font-size: 12px;
  color: #475569;
  cursor: pointer;
  transition: all .15s;
}
.mm-chip:hover { border-color: #cbd5e1; background: #f8fafc; }
.mm-chip.active { background: var(--primary-700); color: #fff; border-color: var(--primary-700); }
.mm-chip-manual.active { background: #475569; border-color: #475569; }
.mm-chip-invite.active { background: var(--primary-700); border-color: var(--primary-700); }
.mm-chip-apply.active  { background: #6d28d9; border-color: #6d28d9; }
.mm-chip-upgrade { color: #b91c1c; border-color: #fca5a5; }
.mm-chip-upgrade:hover { background: #fef2f2; border-color: #f87171; }
.mm-chip-upgrade.active { background: linear-gradient(135deg, #ef4444, #dc2626); color: #fff; border-color: #dc2626; }

.mm-tip { font-size: 12px; color: #94a3b8; padding: 4px 0 8px; }

/* 撮合管理 - demand_kind 类别小徽标 */
.kanban-demand-kind {
  display: inline-block;
  padding: 1px 6px;
  font-size: 10px;
  font-weight: 600;
  border-radius: 3px;
  background: #e0f2fe;
  color: #075985;
  border: 1px solid #bae6fd;
  margin-right: 4px;
  vertical-align: middle;
}

.kanban-card-actions {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
}
.btn-tiny {
  flex: 1;
  min-width: 38px;
  padding: 4px 6px;
  font-size: 11px;
  border: 1px solid #e5e7eb;
  background: #fff;
  border-radius: 4px;
  cursor: pointer;
  color: #475569;
  font-weight: 500;
  transition: all .15s;
}
.btn-tiny:hover { background: #f8fafc; }
.btn-tiny-view:hover { border-color: var(--primary-400); color: var(--primary-400); }
.btn-tiny-edit:hover { border-color: var(--warning); color: var(--warning); }
.btn-tiny-move:hover { border-color: #6366f1; color: #6366f1; }
.btn-tiny-del:hover { border-color: #ef4444; color: #ef4444; background: #fef2f2; }

/* 响应式：屏幕窄时纵向堆叠 */
@media (max-width: 1100px) {
  .matchmaking-kanban { grid-template-columns: repeat(2, minmax(260px, 1fr)); }
  .kanban-column { max-height: none; min-height: 260px; }
}
@media (max-width: 640px) {
  .matchmaking-kanban { grid-template-columns: 1fr; }
}

/* ============================================================
   🎨 统一蓝色主题 / 无障碍对比度修复 / 模块背景区分 / Icon 增强
   （追加于文件末尾，不改动原有样式结构）
   ============================================================ */

/* ---------- 1) 全局色调：统一偏冷蓝主基调 ---------- */
body {
  background: linear-gradient(135deg, #eaf2ff 0%, var(--primary-100) 45%, #e8f4ff 100%);
}

/* ---------- 2) 模块差异化背景色（通过 data-module 切换） ---------- */
#page-container { transition: background-color .25s ease; border-radius: 16px; padding: 4px; }
#page-container[data-module="dashboard"]         { background: linear-gradient(135deg, #f0f7ff 0%, #e0ecff 100%); }
#page-container[data-module="merchant-demands"]  { background: linear-gradient(135deg, #eef6ff 0%, var(--primary-100) 100%); }
#page-container[data-module="influencer-demands"]{ background: linear-gradient(135deg, #ecfeff 0%, #cffafe 100%); }
#page-container[data-module="influencer-plaza"]  { background: linear-gradient(135deg, var(--primary-50) 0%, var(--primary-100) 100%); }
#page-container[data-module="publish"]           { background: linear-gradient(135deg, #f5f3ff 0%, #ede9fe 100%); }
#page-container[data-module="matchmaking"]       { background: linear-gradient(135deg, #f0fdfa 0%, #ccfbf1 100%); }
#page-container[data-module="merchant-manage"]   { background: linear-gradient(135deg, #fef7ed 0%, #fed7aa33 100%); }
#page-container[data-module="admin-manage"]      { background: linear-gradient(135deg, #fffbeb 0%, var(--primary-50) 100%); }
#page-container[data-module="profile"]           { background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%); }

/* 模块标题左侧装饰条 */
#page-container .page-header {
  padding: 14px 18px;
  background: rgba(255,255,255,0.72);
  border-radius: 14px;
  box-shadow: 0 2px 12px rgba(43, 107, 245, 0.06);
  backdrop-filter: blur(6px);
  border-left: 5px solid var(--primary-500);
  margin-bottom: 20px;
}
#page-container[data-module="matchmaking"] .page-header { border-left-color: #14b8a6; }
#page-container[data-module="merchant-manage"] .page-header { border-left-color: #f97316; }
#page-container[data-module="admin-manage"] .page-header { border-left-color: var(--warning); }
#page-container[data-module="influencer-demands"] .page-header { border-left-color: var(--secondary); }
#page-container[data-module="publish"] .page-header { border-left-color: #8b5cf6; }

/* ---------- 3) 统一按钮对比度修复（防止背景与文字同色） ---------- */
.btn,
button.btn,
a.btn {
  color: #fff;
  text-shadow: 0 1px 1px rgba(0,0,0,0.06);
}
/* 填充按钮统一白字 */
.btn-primary, .btn-success, .btn-danger, .btn-warning,
.btn-invite, .btn-apply { color: #fff !important; }
.btn-primary:hover, .btn-success:hover, .btn-danger:hover,
.btn-warning:hover, .btn-invite:hover, .btn-apply:hover { color:#fff !important; }

/* 修复 warning：原先是浅黄渐变+浅字，现改为深字高对比 */
.btn-warning {
  background: linear-gradient(135deg, #d97706, var(--warning));
  box-shadow: 0 2px 8px rgba(245, 158, 11, 0.28);
}
.btn-warning:hover {
  background: linear-gradient(135deg, #b45309, #d97706);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(245, 158, 11, 0.4);
}

/* 幽灵/描边按钮确保文字深色而非白色 */
.btn-outline,
.btn-outline:visited,
.btn.btn-outline { color: var(--primary-700) !important; background: #fff; border: 1.5px solid var(--primary-200); text-shadow: none; }
.btn-outline:hover { background: var(--primary-50); border-color: var(--primary-400); color: var(--primary-800) !important; }

/* 新增：蓝色次级按钮（跨模块统一使用） */
.btn-info {
  background: linear-gradient(135deg, #0ea5e9, #38bdf8);
  color: #fff !important;
  box-shadow: 0 2px 8px rgba(14, 165, 233, 0.25);
}
.btn-info:hover { background: linear-gradient(135deg, #0284c7, #0ea5e9); transform: translateY(-1px); }

/* 小按钮：保证可读 */
.btn-sm { line-height: 1.4; }

/* ---------- 4) 看板/卡片 tiny 按钮对比度修复 ---------- */
.btn-tiny {
  color: #334155 !important;
  background: #fff;
  border: 1px solid #cbd5e1;
  font-weight: 600;
}
.btn-tiny:hover { background: var(--primary-50); color: var(--primary-600) !important; border-color: var(--primary-300); }
.btn-tiny-view { color: var(--primary-600) !important; border-color: var(--primary-300); background: var(--primary-50); }
.btn-tiny-view:hover { background: var(--primary-100); color: var(--primary-800) !important; }
.btn-tiny-edit { color: #b45309 !important; border-color: #fcd34d; background: #fffbeb; }
.btn-tiny-edit:hover { background: var(--primary-50); color: #92400e !important; }
.btn-tiny-move { color: #4f46e5 !important; border-color: #c7d2fe; background: #eef2ff; }
.btn-tiny-move:hover { background: #e0e7ff; color: #3730a3 !important; }
.btn-tiny-del  { color: #b91c1c !important; border-color: #fecaca; background: #fef2f2; }
.btn-tiny-del:hover { background: #fee2e2; color: #7f1d1d !important; }

/* ---------- 5) 标签对比度：确保文字与背景至少 4.5:1 ---------- */
.badge, .stage-badge, .tag, .tag-sm, .tag-type, .kanban-tag {
  text-shadow: none;
}
.badge-open { background: #bbf7d0; color: #14532d; }
.badge-closed { background: #fecaca; color: #7f1d1d; }
.badge-pending { background: #fde68a; color: #78350f; }
.badge-accepted, .badge-confirmed { background: #a7f3d0; color: #064e3b; }
.stage-badge.需求发布 { background: var(--primary-200); color: var(--primary-800); }
.stage-badge.合作匹配 { background: #fde68a; color: #78350f; }
.stage-badge.样品寄送 { background: #c7d2fe; color: #312e81; }
.stage-badge.开始合作 { background: #a7f3d0; color: #064e3b; }
.tag { background: var(--primary-100); color: var(--primary-700); border-color: var(--primary-200); }
.tag-sm { background: var(--primary-100); color: var(--primary-700); }
.tag-type { background: #ddd6fe; color: #4c1d95; }

/* ---------- 6) 搜索栏/筛选栏的按钮：避免看不清 ---------- */
.search-filter-bar .btn-primary,
.filter-bar .btn-primary { box-shadow: 0 2px 8px rgba(43, 107, 245, 0.3); }

/* ---------- 7) 表单控件：聚焦环加深，边框使用蓝色 ---------- */
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus,
.search-filter-bar input:focus,
.filter-bar input:focus,
.filter-bar select:focus {
  border-color: var(--primary-500);
  box-shadow: 0 0 0 4px rgba(43, 107, 245, 0.18);
}

/* ---------- 8) 导航菜单：激活状态更显眼 ---------- */
.nav-item .icon { filter: drop-shadow(0 1px 1px rgba(0,0,0,0.15)); }
.nav-item.active { background: linear-gradient(135deg, var(--primary), var(--primary-400)); box-shadow: 0 4px 14px rgba(43, 107, 245, 0.45); }
.nav-item.active::before {
  content: '';
  position: absolute;
  left: -8px;
  top: 20%;
  bottom: 20%;
  width: 3px;
  background: #60a5fa;
  border-radius: 2px;
}

/* ---------- 9) 看板列头：文字加阴影，增强可读 ---------- */
.kanban-column-header { text-shadow: 0 1px 2px rgba(0,0,0,0.15); }
.kanban-col-count { color: #fff; text-shadow: 0 1px 1px rgba(0,0,0,0.2); }

/* ---------- 10) 页面标题添加蓝色装饰 ---------- */
.page-header h2 {
  color: var(--primary-800);
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-weight: 700;
}

/* ---------- 11) 分页条/统计栏统一风格 ---------- */
.pagination-bar, .level-stats-bar {
  background: rgba(255,255,255,0.7);
  border: 1px solid rgba(43, 107, 245, 0.08);
  border-radius: 12px;
  padding: 14px 18px;
  box-shadow: 0 2px 8px rgba(43, 107, 245, 0.05);
}
.pagination-bar { margin-top: 18px; border-top: none; }

/* ---------- 12) 统计卡顶部色带统一为品牌蓝 ---------- */
.stat-card::before {
  background: linear-gradient(90deg, var(--primary), var(--secondary));
}
.stat-card { border-color: rgba(43, 107, 245, 0.12); }

/* ---------- 13) 表格：斑马纹 + 悬停 ---------- */
.data-table tbody tr:nth-child(even) { background: rgba(219, 234, 254, 0.25); }
.data-table tbody tr:hover { background: var(--primary-100) !important; }
.data-table th { color: var(--primary-800); background: linear-gradient(135deg, var(--primary-100), var(--primary-50)); border-bottom: 2px solid var(--primary-200); }

/* ---------- 14) 弹窗头部更统一 ---------- */
.modal-header { background: linear-gradient(135deg, var(--primary-100), var(--primary-50)); }
.modal-header h3 { color: var(--primary-800); font-weight: 700; display: inline-flex; align-items: center; gap: 8px; }

/* ---------- 15) 链接色 ---------- */
a, .link-text { color: var(--primary-600); }
a:hover, .link-text:hover { color: var(--primary-800); }

/* ---------- 16) 分组卡片标题：添加左侧竖条 ---------- */
.section-title {
  padding-left: 12px;
  border-left: 4px solid var(--primary-500);
  border-bottom: none;
  background: linear-gradient(90deg, rgba(37,99,235,0.06), transparent);
  padding: 10px 14px;
  border-radius: 8px;
  color: var(--primary-800);
}

/* ---------- 17) 上传框、登录按钮清晰度 ---------- */
.upload-area {
  background: linear-gradient(135deg, var(--primary-50), var(--primary-100)55);
  border-color: var(--primary-300);
}
.upload-area:hover { background: linear-gradient(135deg, var(--primary-100), var(--primary-200)55); border-color: var(--primary-400); }
.upload-text { color: var(--primary-800); }

/* ---------- 18) 达人广场/商家需求 卡片蓝色基调装饰 ---------- */
#page-container[data-module="influencer-plaza"] .demand-card,
#page-container[data-module="merchant-demands"] .demand-card {
  border-top: 3px solid var(--primary-500);
}
#page-container[data-module="influencer-demands"] .demand-card {
  border-top: 3px solid var(--secondary);
}
#page-container[data-module="publish"] .card {
  border-top: 3px solid #8b5cf6;
}
#page-container[data-module="merchant-manage"] .card {
  border-top: 3px solid #f97316;
}
#page-container[data-module="admin-manage"] .em-table-wrap {
  border-top: 3px solid #8b5cf6;
}

/* ---------- 19) 空状态 icon 蓝色化 ---------- */
.empty-state .icon { filter: hue-rotate(0deg); }
.empty-state { color: #64748b; }

/* ---------- 20) Toast/全局提示增强可读 ---------- */
.toast { color: #0f172a; font-weight: 500; }
.toast.error { color: #7f1d1d; }

/* ---------- 21) 返回按钮蓝化 ---------- */
.back-btn .btn-outline { border-color: var(--primary-300); color: var(--primary-700) !important; }
.back-btn .btn-outline:hover { background: var(--primary-50); }

/* ---------- 22) 强制 tab-btn.active 文字白色（避免浅蓝+白字低对比） ---------- */
.tab-btn.active { background: linear-gradient(135deg, var(--primary), var(--primary-400)); color: #fff !important; border-color: var(--primary); }

/* ---------- 23) 移动端微调：按钮间距 ---------- */
@media (max-width: 768px) {
  #page-container { padding: 2px; border-radius: 10px; }
  #page-container .page-header { padding: 12px 14px; margin-bottom: 14px; }
}

/* ---------- 24) 侧边栏退出登录按钮：高对比、玻璃质感 ---------- */
.sidebar-logout-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin: 10px 16px 14px;
  width: calc(100% - 32px);
  padding: 10px 14px;
  font-size: 13px;
  font-weight: 600;
  color: #fff;
  background: linear-gradient(135deg, rgba(239, 68, 68, 0.85), rgba(220, 38, 38, 0.85));
  border: 1px solid rgba(255,255,255,0.25);
  border-radius: 10px;
  cursor: pointer;
  transition: all .2s ease;
  box-shadow: 0 4px 10px rgba(239, 68, 68, 0.25);
}
.sidebar-logout-btn:hover {
  background: linear-gradient(135deg, #dc2626, #b91c1c);
  transform: translateY(-1px);
  box-shadow: 0 6px 14px rgba(239, 68, 68, 0.4);
}

/* ---------- 25) 给各弹窗"取消/关闭"按钮增加 icon hover 反馈 ---------- */
.btn-outline[onclick*="closeModal"]::before {
  content: "";
  margin-right: 2px;
}

/* ==================== 数据看板 V2 ==================== */
.dashboard-page { padding-bottom: 24px; }

.dash-header {
  display: flex; justify-content: space-between; align-items: flex-end;
  margin-bottom: 20px; flex-wrap: wrap; gap: 12px;
}
.dash-toolbar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.range-selector {
  display: inline-flex; background: white; border-radius: 8px; padding: 3px;
  border: 1px solid #e2e8f0;
}
.range-btn {
  padding: 5px 14px; font-size: 12px; border: none; background: transparent;
  color: #64748b; cursor: pointer; border-radius: 5px; transition: all 0.15s;
}
.range-btn:hover { color: var(--primary); }
.range-btn.active { background: linear-gradient(135deg,var(--primary),var(--primary-400)); color: white; }

/* Level 1 KPI 大卡 */
.kpi-row { display: grid; gap: 16px; margin-bottom: 16px; }
.kpi-row-primary { grid-template-columns: repeat(4, 1fr); }
.kpi-card {
  background: white; border-radius: 12px; padding: 18px;
  display: flex; align-items: center; gap: 14px;
  box-shadow: 0 1px 3px rgba(15,23,42,0.04);
  border: 1px solid #f1f5f9;
  position: relative; overflow: hidden;
  transition: transform 0.15s, box-shadow 0.15s;
}
.kpi-card:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(15,23,42,0.06); }
.kpi-card::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
}
.kpi-blue::before { background: linear-gradient(180deg,var(--primary),var(--primary-400)); }
.kpi-green::before { background: linear-gradient(180deg,#10b981,#34d399); }
.kpi-orange::before { background: linear-gradient(180deg,var(--warning),#fbbf24); }
.kpi-purple::before { background: linear-gradient(180deg,#8b5cf6,#a78bfa); }
.kpi-icon {
  width: 44px; height: 44px; border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.kpi-blue .kpi-icon { background: var(--primary-50); color: var(--primary); }
.kpi-green .kpi-icon { background: #ecfdf5; color: #10b981; }
.kpi-orange .kpi-icon { background: #fffbeb; color: var(--warning); }
.kpi-purple .kpi-icon { background: #f5f3ff; color: #8b5cf6; }
.kpi-content { flex: 1; min-width: 0; }
.kpi-label { font-size: 12px; color: #64748b; margin-bottom: 4px; }
.kpi-value { font-size: 24px; font-weight: 700; color: #1e293b; line-height: 1.2; }
.kpi-sub { font-size: 11px; color: #94a3b8; margin-top: 4px; }
.kpi-tip { font-size: 11px; color: #cbd5e1; cursor: help; }

/* Level 2 小卡 */
.kpi-row-secondary { grid-template-columns: repeat(8, 1fr); }
.mini-kpi {
  background: white; border-radius: 10px; padding: 14px 12px;
  border: 1px solid #f1f5f9; position: relative; overflow: hidden;
  text-align: center;
}
.mini-kpi-bar {
  position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
}
.mini-kpi-value { font-size: 20px; font-weight: 700; color: #1e293b; line-height: 1; }
.mini-kpi-label { font-size: 11px; color: #94a3b8; margin-top: 6px; }

/* 图表卡 */
.dash-chart-card {
  background: white; border-radius: 12px; padding: 18px;
  border: 1px solid #f1f5f9;
  box-shadow: 0 1px 3px rgba(15,23,42,0.03);
}
.dash-chart-title {
  font-size: 14px; font-weight: 600; color: #1e293b; margin-bottom: 12px;
  display: flex; align-items: baseline; gap: 8px;
}
.dash-chart-sub { font-size: 11px; color: #94a3b8; font-weight: 400; }

.dash-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; }
.dash-grid-3 { display: grid; grid-template-columns: 1fr 1fr 1.2fr; gap: 16px; margin-bottom: 16px; }

/* 排行榜列表 */
.rank-list { display: flex; flex-direction: column; gap: 6px; max-height: 360px; overflow-y: auto; }
.rank-item {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 10px; border-radius: 8px;
  background: #fafbfc; transition: background 0.15s;
}
.rank-item:hover { background: #f1f5f9; }
.rank-no {
  width: 22px; height: 22px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 700; color: white; flex-shrink: 0;
}
.rank-no-1 { background: linear-gradient(135deg,#fbbf24,var(--warning)); }
.rank-no-2 { background: linear-gradient(135deg,#cbd5e1,#94a3b8); }
.rank-no-3 { background: linear-gradient(135deg,#fca5a5,#f87171); }
.rank-no-rest { background: #e2e8f0; color: #64748b; }
.rank-name {
  flex: 1; font-size: 13px; color: #334155;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  display: flex; align-items: center; gap: 6px;
}
.rank-level {
  display: inline-block; padding: 1px 6px; font-size: 10px; font-weight: 600;
  border-radius: 4px;
}
.rank-level-S { background: #fee2e2; color: #ef4444; }
.rank-level-A { background: var(--primary-50); color: var(--warning); }
.rank-level-B { background: var(--primary-100); color: var(--primary-400); }
.rank-level-C { background: #d1fae5; color: #10b981; }
.rank-level-D { background: #f1f5f9; color: #64748b; }
.rank-stat { font-size: 13px; flex-shrink: 0; }
.rank-num { font-weight: 700; color: var(--primary); }
.rank-unit { font-size: 11px; color: #94a3b8; }

.empty-mini { text-align: center; padding: 30px 10px; color: #cbd5e1; font-size: 13px; }

/* 撮合成功明细（谁和谁撮合成功了） */
.match-success-list { display: flex; flex-direction: column; gap: 8px; max-height: 420px; overflow-y: auto; }
.match-success-item {
  display: flex; flex-direction: column; gap: 6px;
  padding: 10px 12px; border: 1px solid #eef2f7; border-radius: 10px; background: #fbfdff;
}
.match-success-item:hover { border-color: #d7e3f4; background: #f5f9ff; }
.msi-parties { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 13px; }
.msi-merchant { font-weight: 600; color: #1e293b; max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.msi-arrow { color: #10b981; font-weight: 700; }
.msi-influencer { font-weight: 600; color: #0ea5e9; max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.msi-meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 12px; color: #64748b; }
.msi-tag { padding: 1px 7px; border-radius: 6px; background: #eef2ff; color: #6366f1; font-weight: 600; }
.msi-product { max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.msi-chip { padding: 1px 7px; border-radius: 6px; background: #f1f5f9; color: #475569; }
.msi-gmv { background: #ecfdf5; color: #059669; font-weight: 700; }
.msi-date { margin-left: auto; color: #94a3b8; }

/* 时间线 */
.timeline-list {
  display: flex; flex-direction: column; gap: 8px;
  max-height: 360px; overflow-y: auto;
  padding-left: 4px;
}
.tl-item {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 6px 0;
  position: relative;
}
.tl-dot {
  width: 8px; height: 8px; border-radius: 50%;
  margin-top: 6px; flex-shrink: 0;
  box-shadow: 0 0 0 3px rgba(0,0,0,0.04);
}
.tl-content { flex: 1; min-width: 0; }
.tl-text {
  font-size: 12.5px; color: #334155; line-height: 1.4;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.tl-tag {
  display: inline-block; padding: 1px 6px; font-size: 10px; font-weight: 600;
  border-radius: 4px; margin-right: 4px;
}
.tl-meta { font-size: 11px; color: #94a3b8; margin-top: 2px; }

/* 响应式 */
@media (max-width: 1280px) {
  .kpi-row-primary { grid-template-columns: repeat(2, 1fr); }
  .kpi-row-secondary { grid-template-columns: repeat(4, 1fr); }
  .dash-grid-3 { grid-template-columns: 1fr 1fr; }
  .dash-grid-3 > .dash-chart-card:last-child { grid-column: span 2; }
}
@media (max-width: 768px) {
  .kpi-row-primary { grid-template-columns: 1fr; }
  .kpi-row-secondary { grid-template-columns: repeat(2, 1fr); }
  .dash-grid-2 { grid-template-columns: 1fr; }
  .dash-grid-3 { grid-template-columns: 1fr; }
  .dash-grid-3 > .dash-chart-card:last-child { grid-column: span 1; }
}


/* ==================== 达人广场 V2 ==================== */
.inf-plaza-page { padding-bottom: 24px; }

/* Tab 栏 */
.plaza-tab-bar { box-shadow: 0 1px 2px rgba(0,0,0,0.04); }
.plaza-tab:hover:not(.plaza-tab-active) { background: #e2e8f0; color: #334155; }
.plaza-tab-active { box-shadow: 0 1px 3px rgba(0,0,0,0.08); }

/* Hero 数据条 — 素雅风格 */
.inf-hero {
  background: white;
  border-radius: 12px;
  padding: 18px 20px;
  margin-bottom: 16px;
  border: 1px solid #f1f5f9;
  display: flex; flex-wrap: wrap;
  align-items: center; justify-content: space-between;
  gap: 16px;
}
.inf-hero-title h2 { margin: 0; font-size: 20px; color: #1e293b; font-weight: 700; }
.inf-hero-title p { margin: 4px 0 0; font-size: 12px; color: #94a3b8; }
.inf-hero-stats { display: flex; flex-wrap: wrap; gap: 8px; }
.inf-stat-card {
  background: #fafbfc;
  border-radius: 8px; padding: 8px 14px;
  min-width: 84px; text-align: center;
  border: 1px solid #f1f5f9;
  cursor: pointer;
  transition: all 0.15s ease;
}
.inf-stat-card:hover {
  background: #f0f9ff;
  border-color: #bae6fd;
  transform: translateY(-1px);
  box-shadow: 0 2px 6px rgba(14, 165, 233, 0.12);
}
.inf-stat-card.inf-stat-active {
  background: var(--primary-100);
  border-color: var(--primary);
  box-shadow: 0 0 0 2px rgba(43, 107, 245, 0.15);
}
.inf-stat-card.inf-stat-primary {
  background: var(--primary-50);
  border-color: var(--primary-100);
}
.inf-stat-card.inf-stat-primary .inf-stat-value { color: var(--primary); }
.inf-stat-value {
  font-size: 18px; font-weight: 700; color: #334155; line-height: 1.1;
  display: flex; align-items: center; justify-content: center; gap: 5px;
}
.inf-stat-label { font-size: 11px; color: #94a3b8; margin-top: 4px; }

/* 等级徽章（迷你）— 降低饱和度，使用纯色不渐变 */
.level-badge-mini {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 2px 7px; border-radius: 4px;
  font-size: 11px; font-weight: 600; letter-spacing: 0.3px;
  flex-shrink: 0;
}
.level-badge-mini.lv-S { background: #fee2e2; color: #b91c1c; }
.level-badge-mini.lv-A { background: var(--primary-50); color: #b45309; }
.level-badge-mini.lv-B { background: var(--primary-100); color: var(--primary-700); }
.level-badge-mini.lv-C { background: #cffafe; color: #0e7490; }
.level-badge-mini.lv-D { background: #f1f5f9; color: #475569; }

/* Chip 多选 */
.chip-group { display: flex; flex-wrap: wrap; gap: 6px; }
.chip {
  display: inline-flex; align-items: center;
  padding: 4px 12px; border-radius: 14px;
  font-size: 12px; color: #475569; background: #f1f5f9;
  border: 1px solid transparent; cursor: pointer; transition: all 0.15s;
}
.chip:hover { background: #e0e7ff; color: var(--primary); }
.chip-active {
  background: var(--primary);
  color: white; border-color: var(--primary);
}

/* 排序下拉（工具栏中） */
.sort-select {
  font-size: 12px; padding: 5px 10px; border-radius: 6px;
  border: 1px solid #e2e8f0; background: white; color: #475569; cursor: pointer;
}
.sort-select:focus { outline: none; border-color: var(--primary-300); }

/* 卡片视图 */
.inf-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 14px;
}
.inf-card-v2 {
  background: white; border-radius: 12px; padding: 14px;
  border: 1px solid #f1f5f9;
  transition: all 0.2s;
  display: flex; flex-direction: column; gap: 10px;
}
.inf-card-v2:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(15,23,42,0.06);
  border-color: var(--primary-300);
}
.inf-card-head {
  display: flex; align-items: center; gap: 8px;
}
.inf-card-name {
  flex: 1; font-size: 15px; font-weight: 600; color: #1e293b;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.inf-mutual-tag {
  display: inline-flex; align-items: center;
  padding: 2px 7px; border-radius: 4px;
  font-size: 10px; font-weight: 600;
  background: #d1fae5; color: #047857;
  border: 1px solid #a7f3d0;
}
.inf-mutual-tag-sm {
  display: inline-block; padding: 1px 5px; font-size: 10px;
  background: #d1fae5; color: #059669; border-radius: 3px; margin-left: 4px;
}
.inf-card-meta {
  display: flex; flex-wrap: wrap; gap: 6px;
}
.inf-tag {
  display: inline-flex; align-items: center;
  padding: 2px 8px; border-radius: 5px;
  font-size: 11px; font-weight: 500;
}
.inf-tag-cat { background: var(--primary-50); color: var(--primary); }
.inf-tag-region { background: #f0fdfa; color: #0d9488; }
.inf-tag-mcn { background: var(--primary-50); color: #d97706; }
.inf-tag-type { background: #ede9fe; color: #7c3aed; }
.inf-tag-tag { background: #fce7f3; color: #be185d; }
.inf-tag-audience { background: #ecfccb; color: #4d7c0f; }
.inf-tag-age { background: #fef9c3; color: #a16207; }
.inf-card-stats {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  padding: 10px 0;
  border-top: 1px solid #f1f5f9;
  border-bottom: 1px solid #f1f5f9;
}
.inf-stat { text-align: center; }
.inf-stat-num { font-size: 16px; font-weight: 700; line-height: 1.2; }
.inf-stat-key { font-size: 11px; color: #94a3b8; margin-top: 3px; }
.inf-card-tracks {
  display: flex; flex-direction: column; gap: 4px;
  font-size: 12px; line-height: 1.5;
}
.inf-track-line { display: flex; gap: 8px; }
.inf-track-label { color: #64748b; flex-shrink: 0; min-width: 50px; }
.inf-track-val {
  color: #334155; flex: 1; min-width: 0;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.inf-card-sales { font-size: 12px; color: #64748b; }
.inf-card-foot {
  display: flex; gap: 6px; justify-content: flex-end;
  padding-top: 8px; border-top: 1px solid #f8fafc;
}

/* 列表视图：.inf-list 通过 --inf-cols CSS 变量传递列定义，所有子行共享同一套 grid */
.inf-list {
  background: white; border-radius: 12px;
  border: 1px solid #f1f5f9; overflow-x: auto;
}
.inf-list .inf-row,
.inf-list .inf-row-header {
  display: grid;
  grid-template-columns: var(--inf-cols);
  gap: 12px;
  align-items: center;
  padding: 12px 16px;
  border-bottom: 1px solid #f1f3f7;
}

.inf-list .inf-row:last-child { border-bottom: none; }
.inf-list .inf-row:hover { background: #fafbfc; }
.inf-list .inf-row-header {
  background: #f8fafc;
  font-size: 12px; font-weight: 600; color: #64748b;
  border-bottom: 2px solid #e2e8f0;
  position: sticky; top: 0; z-index: 2;
  padding: 14px 16px;
}
.inf-list .inf-row > .inf-checkbox {
  width: 16px; height: 16px; accent-color: var(--primary-600);
  justify-self: center;
}
.inf-list .inf-row > .level-badge-mini {
  justify-self: center;
}
.inf-row-sales {
  font-size: 12px; color: #475569;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  text-align: center;
}
.inf-th { display: flex; align-items: center; gap: 4px; white-space: nowrap; user-select: none; }
.inf-th.th-right { justify-content: flex-end; text-align: right; }
.inf-th.th-center { justify-content: center; text-align: center; }
/* 数据单元格与表头对齐（关键：之前缺失，导致数字列表头右对齐而数据左对齐） */
.inf-cell.th-right { text-align: right; justify-content: flex-end; }
.inf-cell.th-center { text-align: center; justify-content: center; }
.inf-th.sortable { cursor: pointer; transition: color 0.15s; }
.inf-th.sortable:hover { color: var(--primary); }
.sort-arrow { color: #cbd5e1; font-size: 10px; }
.sort-arrow.active { color: var(--primary); }
.inf-row-name {
  font-size: 13px; font-weight: 500; color: #1e293b;
  display: flex; align-items: center; gap: 4px;
  min-width: 0; overflow: hidden;
}
.inf-row-account { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.inf-row-cat,
.inf-row-region,
.inf-row-mcn {
  font-size: 12px; color: #475569;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.inf-row-num {
  font-size: 13px; text-align: right;
  white-space: nowrap;
}
.inf-row-freq {
  font-size: 11px; line-height: 1.4;
  text-align: right;
}
.inf-row-actions {
  display: flex; gap: 4px; justify-content: flex-end;
}

/* 达人广场列表单元格（复用 .inf-list 容器内的 grid 行） */
.inf-cell {
  font-family: "PingFang SC", "Microsoft YaHei", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  font-size: 13px;
  font-weight: 400;
  color: #334155;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.4;
}
.inf-cell-name {
  font-weight: 500;
  color: #1e293b;
}
.inf-cell-ellipsis {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* 详情弹窗 */
.inf-detail { padding: 4px 0; }
.inf-detail-head {
  display: flex; align-items: center; gap: 12px;
  padding-bottom: 16px; border-bottom: 1px solid #f1f5f9;
  margin-bottom: 16px;
}
.inf-detail-stats {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 12px; margin-bottom: 16px;
}
.inf-detail-stat {
  background: #f8fafc; border-radius: 8px; padding: 12px;
  text-align: center;
}
.inf-detail-stat .dl { font-size: 11px; color: #94a3b8; margin-bottom: 6px; }
.inf-detail-stat .dv { font-size: 18px; font-weight: 700; color: #1e293b; }
.inf-detail-grid {
  display: grid; grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}
.inf-detail-grid > div { padding: 8px 12px; background: #fafbfc; border-radius: 6px; }
.inf-detail-grid .dl { font-size: 11px; color: #94a3b8; }
.inf-detail-grid .dv { font-size: 13px; color: #334155; margin-top: 4px; word-break: break-all; }

/* 响应式 */
@media (max-width: 1024px) {
  .inf-detail-stats { grid-template-columns: repeat(2, 1fr); }
  .inf-detail-grid { grid-template-columns: 1fr; }
}
@media (max-width: 768px) {
  .inf-grid { grid-template-columns: 1fr; }
  .inf-hero { flex-direction: column; align-items: flex-start; }
  .inf-card-stats { grid-template-columns: repeat(2, 1fr); }
}

/* ======================================================= */
/* =============== V3 新增样式：需求广场等 =================== */
/* ======================================================= */

/* 需求广场 */
.plaza-page { padding: 24px; }
.plaza-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 20px; flex-wrap: wrap; gap: 16px; }
.plaza-stats { margin-bottom: 20px; }
.plaza-stats .stat-card { display: inline-block; padding: 8px 16px; background: #f1f5f9; border-radius: 8px; }
.plaza-stats .stat-label { font-size: 13px; color: #64748b; }
.plaza-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 16px;
}
.plaza-card {
  background: #ffffff;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  padding: 18px;
  transition: all 0.2s;
  display: flex;
  flex-direction: column;
}
.plaza-card:hover {
  border-color: var(--primary);
  box-shadow: 0 4px 12px rgba(43, 107, 245, 0.08);
  transform: translateY(-2px);
}
.plaza-card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
.plaza-card-time { font-size: 12px; color: #94a3b8; }
.plaza-tag {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 500;
}
.plaza-tag-merchant { background: var(--primary-100); color: var(--primary-600); }
.plaza-tag-admin { background: var(--primary-50); color: #b45309; }
.plaza-tag-influencer { background: #dcfce7; color: #15803d; }
.plaza-card-title { font-size: 15px; font-weight: 600; color: #0f172a; margin-bottom: 8px; line-height: 1.4; }
.plaza-card-publisher { font-size: 12px; color: #64748b; margin-bottom: 10px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.plaza-meta { font-size: 12px; color: #64748b; }
.plaza-card-desc {
  font-size: 13px;
  color: #475569;
  line-height: 1.6;
  margin-bottom: 12px;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.plaza-tags-row { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.chip {
  display: inline-block;
  padding: 3px 8px;
  border-radius: 4px;
  font-size: 11px;
  line-height: 1.4;
}
.chip-blue { background: var(--primary-100); color: var(--primary-700); }
.chip-green { background: #dcfce7; color: #166534; }
.chip-orange { background: #ffedd5; color: #c2410c; }
.chip-gray { background: #f1f5f9; color: #475569; }
.inf-level {
  display: inline-block;
  padding: 2px 6px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 600;
}
.inf-level.level-S { background: var(--primary-50); color: #b45309; }
.inf-level.level-A { background: var(--primary-100); color: var(--primary-600); }
.inf-level.level-B { background: #e0e7ff; color: #4338ca; }
.inf-level.level-C { background: #f1f5f9; color: #64748b; }
.plaza-budget { font-size: 13px; color: #0f172a; margin-bottom: 12px; }
.plaza-budget strong { color: #dc2626; }
.plaza-respond-btn { margin-top: auto; }
.btn-block { width: 100%; }

/* chip-check 多选标签 */
.chip-check-row { display: flex; flex-wrap: wrap; gap: 8px; }
.chip-check {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 14px;
  background: #fff;
  border: 1.5px solid #cbd5e1;
  border-radius: 8px;
  cursor: pointer;
  font-size: 13px;
  font-weight: 500;
  color: #475569;
  transition: all 0.15s ease;
  user-select: none;
  line-height: 1.4;
}
.chip-check input[type="checkbox"] {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  border: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  clip-path: inset(50%);
  white-space: nowrap;
  opacity: 0;
  cursor: pointer;
}
/* 选中状态：左侧小圆点 + 蓝色高亮 */
.chip-check::before {
  content: '';
  display: inline-block;
  width: 8px; height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
  border: 1.8px solid #94a3b8;
  background: #fff;
  transition: all 0.15s ease;
}
.chip-check:hover {
  border-color: var(--primary);
  color: #334155;
  box-shadow: 0 0 0 3px rgba(59,130,246,0.08);
}
.chip-check:hover::before { border-color: var(--primary); }
.chip-check:has(input:checked) {
  background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);
  border-color: #3b82f6;
  color: #1e40af;
  font-weight: 600;
  box-shadow: 0 1px 4px rgba(59,130,246,0.12);
}
.chip-check:has(input:checked)::before {
  background: #3b82f6;
  border-color: #3b82f6;
}

/* 合作管理 */
.coop-manage-page { padding: 24px; max-width: 900px; }
.coop-tabs { display: flex; gap: 4px; border-bottom: 1px solid #e2e8f0; margin-bottom: 20px; }
.coop-tab {
  padding: 10px 20px;
  cursor: pointer;
  border-bottom: 2px solid transparent;
  font-size: 14px;
  color: #64748b;
  transition: all 0.15s;
}
.coop-tab:hover { color: var(--primary); }
.coop-tab.active { color: var(--primary); border-bottom-color: var(--primary); font-weight: 500; }
.coop-count {
  display: inline-block;
  background: #f1f5f9;
  color: #475569;
  padding: 1px 6px;
  border-radius: 10px;
  font-size: 11px;
  margin-left: 4px;
}
.coop-tab.active .coop-count { background: var(--primary-100); color: var(--primary-600); }
.coop-list { display: flex; flex-direction: column; gap: 12px; }
.coop-item {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  padding: 16px;
}
.coop-item-header { display: flex; justify-content: space-between; margin-bottom: 8px; }
.coop-item-name { font-weight: 600; color: #0f172a; font-size: 15px; }
.coop-item-dir { font-size: 12px; color: #64748b; }
.coop-item-msg { font-size: 13px; color: #475569; line-height: 1.6; margin-bottom: 8px; }
.coop-item-meta { display: flex; gap: 10px; align-items: center; font-size: 12px; color: #94a3b8; }
.coop-badge { padding: 2px 8px; border-radius: 4px; font-size: 11px; }
.coop-badge-ok { background: #dcfce7; color: #166534; }
.coop-badge-rej { background: #fee2e2; color: #991b1b; }
.coop-item-actions { display: flex; gap: 8px; margin-top: 12px; }

/* 个人中心 */
.profile-page { padding: 24px; }
.profile-card {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  padding: 24px;
}
.profile-header { display: flex; align-items: center; gap: 16px; margin-bottom: 24px; padding-bottom: 20px; border-bottom: 1px solid #f1f5f9; }
.profile-avatar {
  width: 64px; height: 64px; border-radius: 50%;
  background: linear-gradient(135deg, var(--primary), var(--primary-600));
  color: #fff; font-size: 24px; font-weight: 600;
  display: flex; align-items: center; justify-content: center;
}
.profile-name { font-size: 20px; font-weight: 600; color: #0f172a; }
.profile-role { font-size: 13px; color: #64748b; margin-top: 4px; }
.profile-section { margin-top: 20px; }
.profile-section h3 { font-size: 14px; color: #64748b; margin: 0 0 12px; font-weight: 500; }
.profile-field { display: flex; padding: 10px 0; border-bottom: 1px dashed #f1f5f9; }
.profile-field label { width: 100px; color: #94a3b8; font-size: 13px; }
.profile-field > div { flex: 1; color: #0f172a; font-size: 14px; }

/* 系统设置 */
.settings-page { padding: 24px; }
.settings-card {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  padding: 24px;
}
.settings-card h3 { margin: 0 0 8px; font-size: 16px; color: #0f172a; }
.form-hint { font-size: 12px; color: #94a3b8; margin-top: 4px; }

/* 通知铃铛 */
.notify-bell-wrap { position: relative; display: inline-block; }
.notify-bell {
  position: relative;
  cursor: pointer;
  padding: 8px;
  border-radius: 8px;
  transition: background 0.15s;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.notify-bell:hover { background: rgba(43, 107, 245, 0.08); }
.notify-badge {
  position: absolute;
  top: 2px; right: 2px;
  background: #ef4444;
  color: #fff;
  font-size: 10px;
  border-radius: 10px;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
}
.notify-panel {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  width: 360px;
  max-height: 480px;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  box-shadow: 0 10px 32px rgba(0, 0, 0, 0.12);
  z-index: 1000;
  display: none;
  flex-direction: column;
  overflow: hidden;
}
.notify-panel.active { display: flex; }
.notify-panel-header {
  padding: 12px 16px;
  border-bottom: 1px solid #f1f5f9;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.notify-panel-title { font-weight: 600; color: #0f172a; font-size: 14px; }
.notify-mark-all { font-size: 12px; color: var(--primary); cursor: pointer; background: none; border: none; }
.notify-list { flex: 1; overflow-y: auto; max-height: 400px; }
.notify-item {
  padding: 12px 16px;
  border-bottom: 1px solid #f8fafc;
  cursor: pointer;
  transition: background 0.1s;
}
.notify-item.unread { background: #f0f9ff; }
.notify-item:hover { background: #f1f5f9; }
.notify-item-content { font-size: 13px; color: #334155; line-height: 1.5; }
.notify-item-time { font-size: 11px; color: #94a3b8; margin-top: 4px; }
.notify-empty { padding: 40px; text-align: center; color: #94a3b8; font-size: 13px; }

/* 隐私授权弹窗 */
.consent-overlay {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(15, 23, 42, 0.6);
  z-index: 9999;
  display: none;
  align-items: center;
  justify-content: center;
}
.consent-overlay.active { display: flex; }
.consent-modal {
  background: #fff;
  border-radius: 16px;
  max-width: 480px;
  width: 90%;
  padding: 32px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);
}
.consent-modal h2 { font-size: 20px; color: #0f172a; margin: 0 0 16px; }
.consent-modal p { font-size: 14px; color: #475569; line-height: 1.7; margin: 0 0 12px; }
.consent-modal .consent-btn {
  width: 100%;
  padding: 12px;
  background: var(--primary);
  color: #fff;
  border: none;
  border-radius: 8px;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  margin-top: 20px;
}
.consent-modal .consent-btn:hover { background: var(--primary-600); }

/* 顶部通知栏容器位置（桌面端） */
.mobile-topbar .notify-bell-wrap { margin-left: auto; margin-right: 12px; }

@media (max-width: 768px) {
  .plaza-grid { grid-template-columns: 1fr; }
  .notify-panel { width: calc(100vw - 20px); right: -100px; }
}

/* ========== V4 新增样式 ========== */

/* KPI 旁的"?"小图标 */
.kpi-help-dot {
  display: inline-block;
  margin-left: 4px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: #cbd5e1;
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  line-height: 14px;
  text-align: center;
  cursor: help;
}
.kpi-help-dot:hover { background: var(--warning); }

/* 撮合 5 列看板 */
.matchmaking-kanban-5col {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 12px;
}
.kanban-column-optional .kanban-column-header {
  position: relative;
  opacity: 0.92;
}
.kanban-col-optional {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 6px;
  background: rgba(255, 255, 255, 0.35);
  color: #fff;
  font-size: 10px;
  border-radius: 3px;
  font-weight: 600;
}

/* 置顶（热推）角标 */
.pin-badge {
  position: absolute;
  top: 6px;
  right: 6px;
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 3px 8px;
  background: linear-gradient(135deg, #ef4444, #dc2626);
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  border-radius: 4px;
  box-shadow: 0 2px 4px rgba(220, 38, 38, 0.3);
  z-index: 2;
}

/* 收藏 ⭐ 按钮 */
.fav-star {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.9);
  color: #cbd5e1;
  font-size: 18px;
  cursor: pointer;
  border: 1px solid #e2e8f0;
  transition: all 0.15s;
}
.fav-star:hover { color: var(--warning); transform: scale(1.1); }
.fav-star.is-fav { color: var(--warning); background: #fff7ed; border-color: #fde68a; }

/* 联络弹窗 */
.contact-modal-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 0;
  border-bottom: 1px dashed #e2e8f0;
}
.contact-modal-row:last-child { border-bottom: none; }
.contact-label { font-size: 13px; color: #64748b; }
.contact-value { font-size: 14px; color: #1e293b; font-weight: 500; }
.contact-copy-btn {
  margin-left: 10px;
  padding: 3px 10px;
  background: var(--primary-400);
  color: #fff;
  border: none;
  border-radius: 4px;
  font-size: 12px;
  cursor: pointer;
}
.contact-copy-btn:hover { background: var(--primary); }
.contact-future-btn {
  width: 100%;
  margin-top: 14px;
  padding: 10px;
  background: #f1f5f9;
  color: #94a3b8;
  border: 1px dashed #cbd5e1;
  border-radius: 6px;
  font-size: 13px;
  cursor: not-allowed;
}

/* "我的收藏"页 */
.fav-page-tabs {
  display: flex;
  gap: 8px;
  padding: 0 0 16px;
  border-bottom: 1px solid #e2e8f0;
  margin-bottom: 16px;
}
.fav-tab {
  padding: 8px 18px;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 6px;
  font-size: 13px;
  color: #475569;
  cursor: pointer;
}
.fav-tab.active {
  background: var(--primary-400);
  color: #fff;
  border-color: var(--primary-400);
}

/* 批量导入页 */
.batch-import-tabs {
  display: flex;
  gap: 0;
  border-bottom: 2px solid #e2e8f0;
  margin-bottom: 20px;
}
.batch-import-tab {
  padding: 10px 20px;
  background: transparent;
  border: none;
  border-bottom: 2px solid transparent;
  font-size: 14px;
  color: #64748b;
  cursor: pointer;
  margin-bottom: -2px;
}
.batch-import-tab.active {
  color: var(--primary-400);
  border-bottom-color: var(--primary-400);
  font-weight: 600;
}
.batch-import-panel {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  padding: 24px;
}
.batch-import-drop {
  border: 2px dashed #cbd5e1;
  border-radius: 8px;
  padding: 30px;
  text-align: center;
  color: #94a3b8;
  background: #f8fafc;
}

@media (max-width: 1100px) {
  .matchmaking-kanban-5col { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 768px) {
  .matchmaking-kanban-5col { grid-template-columns: 1fr; }
}

/* V4 合作管理：链回原需求 */
.coop-link-back {
  display: inline-block;
  margin: 6px 0 0;
  padding: 3px 10px;
  background: var(--primary-50);
  color: var(--primary);
  font-size: 12px;
  border-radius: 4px;
  cursor: pointer;
  border: 1px solid var(--primary-100);
  transition: all 0.15s;
}
.coop-link-back:hover {
  background: var(--primary-100);
  border-color: var(--primary-300);
}

/* V4 达人详情：4 字段展示 */
.inf-detail-section {
  margin-top: 14px;
  padding: 12px;
  background: #f8fafc;
  border-radius: 6px;
  border-left: 3px solid var(--secondary);
}
.inf-detail-section-title {
  font-size: 12px;
  color: var(--secondary);
  font-weight: 600;
  margin-bottom: 6px;
}
.inf-detail-section-content {
  font-size: 13px;
  color: #1e293b;
  line-height: 1.6;
}
.inf-internal-section {
  background: #fef2f2;
  border: 1px dashed #fecaca;
}
.inf-works-link {
  display: inline-block;
  margin: 2px 4px 2px 0;
  padding: 3px 8px;
  background: #fff;
  border: 1px solid #cbd5e1;
  border-radius: 4px;
  font-size: 11px;
  color: #475569;
  text-decoration: none;
}
.inf-works-link:hover { background: var(--primary-50); border-color: var(--primary-300); color: var(--primary-600); }

/* 我的需求：下架/复制按钮 */
.demand-action-archived {
  background: #f3f4f6;
  color: #9ca3af;
  font-size: 11px;
  padding: 2px 6px;
  border-radius: 3px;
}

/* V4 业绩榜 4 tab 切换按钮 */
.rank-tab-btn {
  padding: 4px 10px;
  background: #f1f5f9;
  border: 1px solid transparent;
  border-radius: 4px;
  font-size: 12px;
  color: #64748b;
  cursor: pointer;
}
.rank-tab-btn.active {
  background: var(--primary-400);
  color: #fff;
  border-color: var(--primary-400);
}

/* ============================================== */
/* V5: 商家需求图片管理弹窗（与导入解耦）         */
/* ============================================== */
.demand-img-panel { padding: 4px 0; }
.demand-img-tip {
  font-size: 13px;
  color: #475569;
  background: #f8fafc;
  padding: 10px 14px;
  border-radius: 8px;
  margin-bottom: 16px;
  border-left: 3px solid var(--primary);
}
.demand-img-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}
.demand-img-slot,
.demand-img-add,
.demand-img-empty {
  position: relative;
  aspect-ratio: 1;
  border-radius: 10px;
  overflow: hidden;
}
.demand-img-slot {
  border: 1px solid #e2e8f0;
  background: #f1f5f9;
}
.demand-img-slot img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.demand-img-broken {
  display: flex; align-items: center; justify-content: center;
  width: 100%; height: 100%;
  font-size: 12px; color: #94a3b8;
  background: #f8fafc;
}
.demand-img-del {
  position: absolute;
  top: 6px; right: 6px;
  width: 24px; height: 24px;
  border: none;
  border-radius: 50%;
  background: rgba(15, 23, 42, 0.7);
  color: #fff;
  font-size: 14px;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: all 0.15s;
}
.demand-img-del:hover {
  background: #dc2626;
  transform: scale(1.1);
}
.demand-img-add {
  border: 2px dashed #cbd5e1;
  background: #f8fafc;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  transition: all 0.15s;
  color: #94a3b8;
}
.demand-img-add:hover {
  border-color: var(--primary);
  background: var(--primary-50);
  color: var(--primary);
}
.demand-img-add-icon {
  font-size: 32px;
  font-weight: 300;
  line-height: 1;
}
.demand-img-add-text {
  font-size: 12px;
}
.demand-img-empty {
  border: 1px dashed #e2e8f0;
  background: #fafafa;
}
.demand-img-progress {
  margin-top: 16px;
  padding: 10px 14px;
  background: var(--primary-50);
  border-radius: 8px;
}
.demand-img-progress .progress-bar {
  height: 6px;
  background: var(--primary-100);
  border-radius: 3px;
  overflow: hidden;
}
.demand-img-progress .progress-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--primary), var(--primary-600));
  width: 0;
  transition: width 0.3s;
}
.demand-img-progress .progress-text {
  font-size: 12px;
  color: var(--primary-600);
  margin-top: 6px;
}

/* ============================================== */
/* V5: 企微推送事件开关样式                       */
/* ============================================== */
.wework-event-list { display: flex; flex-direction: column; gap: 4px; }
.wework-event-row {
  display: flex; align-items: center; gap: 14px;
  padding: 12px 14px;
  border-radius: 8px;
  transition: background 0.15s;
}
.wework-event-row:hover { background: #f8fafc; }
.wework-event-meta { flex: 1; min-width: 0; }
.wework-event-label { font-size: 14px; color: #0f172a; font-weight: 500; margin-bottom: 2px; }
.wework-event-desc { font-size: 12px; color: #94a3b8; line-height: 1.5; }

/* 滑动开关 */
.wework-event-switch {
  position: relative;
  display: inline-block;
  width: 44px;
  height: 24px;
  flex-shrink: 0;
}
.wework-event-switch input { display: none; }
.wework-switch-slider {
  position: absolute;
  cursor: pointer;
  top: 0; left: 0; right: 0; bottom: 0;
  background-color: #e2e8f0;
  border-radius: 24px;
  transition: 0.2s;
}
.wework-switch-slider:before {
  content: "";
  position: absolute;
  height: 18px; width: 18px;
  left: 3px; top: 3px;
  background-color: white;
  border-radius: 50%;
  transition: 0.2s;
  box-shadow: 0 1px 3px rgba(0,0,0,0.2);
}
.wework-event-switch input:checked + .wework-switch-slider {
  background-color: var(--primary);
}
.wework-event-switch input:checked + .wework-switch-slider:before {
  transform: translateX(20px);
}

/* ============================================== */
/* V5: 需求广场卡片增强（缩略图/价格盒/卖点）    */
/* ============================================== */
.plaza-card-thumb {
  position: relative;
  width: 100%;
  height: 140px;
  border-radius: 8px;
  overflow: hidden;
  background: #f1f5f9;
  margin: 8px 0 10px;
}
.plaza-card-thumb img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
.plaza-card-thumb-count {
  position: absolute;
  bottom: 6px; right: 6px;
  background: rgba(0,0,0,0.6);
  color: white;
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 10px;
}

/* ====== 轮播组件 ====== */
.carousel-wrap {
  position: relative;
  width: 100%;
  height: 160px;
  border-radius: 8px;
  overflow: hidden;
  background: #f1f5f9;
  margin: 8px 0 10px;
  user-select: none;
  -webkit-user-select: none;
}
.carousel-slides {
  width: 100%; height: 100%;
}
.carousel-slide {
  width: 100%; height: 100%;
}
.carousel-slide img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
.carousel-btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 28px; height: 28px;
  border-radius: 50%;
  border: none;
  background: rgba(255,255,255,0.85);
  color: #334155;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 1px 4px rgba(0,0,0,0.15);
  transition: background 0.15s, opacity 0.15s;
  z-index: 2;
  opacity: 0;
}
.carousel-wrap:hover .carousel-btn,
.carousel-wrap:focus-within .carousel-btn,
.carousel-wrap:active .carousel-btn { opacity: 1; }
.carousel-prev { left: 6px; }
.carousel-next { right: 6px; }
.carousel-btn:hover { background: #fff; }
.carousel-dots {
  position: absolute;
  bottom: 8px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 6px;
  z-index: 2;
}
.carousel-dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: rgba(255,255,255,0.5);
  cursor: pointer;
  transition: background 0.2s, transform 0.2s;
}
.carousel-dot.active {
  background: #fff;
  transform: scale(1.25);
  box-shadow: 0 0 3px rgba(0,0,0,0.3);
}

/* compact 模式下轮播高度 */
.plaza-card.compact .carousel-wrap {
  height: 110px;
  margin: 6px 0 8px;
}
.plaza-card.compact .carousel-btn {
  width: 24px; height: 24px;
  font-size: 15px;
}

/* 移动端轮播触控优化 */
@media (max-width: 768px) {
  .carousel-wrap { height: 180px; }
  .carousel-btn { opacity: 0.8; width: 32px; height: 32px; font-size: 20px; }
  .carousel-dot { width: 10px; height: 10px; }
  .plaza-card.compact .carousel-wrap { height: 130px; }
}
.plaza-price-box {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  padding: 10px 12px;
  background: linear-gradient(135deg, #fef9e7 0%, #fff5d6 100%);
  border-radius: 8px;
  margin: 8px 0;
  border: 1px solid #fde68a;
}
.plaza-price-item { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; min-width: 60px; }
.plaza-price-label { font-size: 11px; color: #92400e; }
.plaza-price-val { font-size: 16px; font-weight: 700; color: #b45309; line-height: 1.2; }
.plaza-price-red { color: #dc2626; }
.plaza-selling-points {
  background: #f0f9ff;
  border-left: 3px solid var(--primary);
  padding: 8px 12px;
  border-radius: 6px;
  margin: 8px 0;
  display: flex;
  gap: 8px;
  align-items: flex-start;
}
.plaza-sp-label { font-size: 12px; color: var(--primary-600); font-weight: 600; flex-shrink: 0; }
.plaza-sp-text { font-size: 13px; color: var(--primary-700); line-height: 1.5; flex: 1; }

/* 需求广场：货品链接 */
.plaza-link-row {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  background: #f6f8fb;
  border-radius: 6px;
  padding: 6px 10px;
  margin: 6px 0;
  font-size: 12px;
}
.plaza-link-label { color: #475569; font-weight: 500; flex-shrink: 0; white-space: nowrap; }
.plaza-link-url { color: var(--primary); word-break: break-all; text-decoration: none; }
.plaza-link-url:hover { text-decoration: underline; }

/* ============================================== */
/* V5: 可点击卡片样式                             */
/* ============================================== */
.fav-card-clickable {
  cursor: pointer;
  transition: all 0.2s;
}
.fav-card-clickable:hover {
  border-color: var(--primary);
  box-shadow: 0 6px 20px rgba(43, 107, 245, 0.15);
  transform: translateY(-2px);
}

/* ============================================== */
/* V5: 合作管理 - 下一步指引                       */
/* ============================================== */
.coop-hint {
  margin: 10px 0;
  padding: 10px 14px;
  border-radius: 8px;
  font-size: 13px;
  line-height: 1.6;
}
.coop-hint strong { font-weight: 600; }
.coop-hint-action {
  background: linear-gradient(135deg, var(--primary-50) 0%, #fde68a 100%);
  color: #92400e;
  border-left: 3px solid var(--warning);
}
.coop-hint-wait {
  background: #f0f9ff;
  color: #0c4a6e;
  border-left: 3px solid #0ea5e9;
}
.coop-hint-ok {
  background: #ecfdf5;
  color: #065f46;
  border-left: 3px solid #10b981;
}
.coop-hint-rej {
  background: #fef2f2;
  color: #991b1b;
  border-left: 3px solid #ef4444;
}

/* ============================================== */
/* V6: 需求广场 — 商家维度聚合展示                */
/* ============================================== */

/* 视图切换工具条 */
.view-mode-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 16px;
  flex-wrap: wrap;
}
.view-mode-btn {
  padding: 6px 14px;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  background: #fff;
  font-size: 13px;
  color: #64748b;
  cursor: pointer;
  transition: all 0.2s;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.view-mode-btn:hover { border-color: #94a3b8; }
.view-mode-btn.active {
  background: var(--primary-50);
  border-color: var(--primary);
  color: var(--primary-600);
  font-weight: 500;
}

/* 商家聚合区块 */
.merchant-group-section {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  overflow: hidden;
  margin-bottom: 16px;
  transition: box-shadow 0.2s;
}
.merchant-group-section:hover {
  box-shadow: 0 4px 12px rgba(43, 107, 245, 0.06);
}

/* 商家分组头部 */
.merchant-group-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 18px;
  background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
  border-bottom: 1px solid #e2e8f0;
  cursor: pointer;
  user-select: none;
}
.merchant-group-header-left {
  display: flex;
  align-items: center;
  gap: 10px;
}
.merchant-group-icon {
  width: 32px; height: 32px;
  border-radius: 8px;
  background: var(--primary-100);
  color: var(--primary-600);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  font-weight: 700;
}
.merchant-group-name {
  font-size: 15px;
  font-weight: 600;
  color: #1e293b;
}
.merchant-group-count {
  font-size: 12px;
  color: #64748b;
  background: #e2e8f0;
  padding: 2px 8px;
  border-radius: 10px;
}
.merchant-group-latest {
  font-size: 12px;
  color: #94a3b8;
}
.merchant-group-toggle {
  font-size: 12px;
  color: var(--primary-600);
  font-weight: 500;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

/* 商家内部卡片网格 */
.merchant-group-body {
  padding: 16px;
}
.merchant-group-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 14px;
}

/* 紧凑版 plaza-card（聚合视图内部） */
.plaza-card.compact {
  padding: 14px;
  border-radius: 10px;
}
.plaza-card.compact .plaza-card-title {
  font-size: 14px;
}
.plaza-card.compact .plaza-card-thumb {
  height: 110px;
  margin: 6px 0 8px;
}
.plaza-card.compact .plaza-price-box {
  padding: 8px 10px;
  gap: 8px;
  margin: 6px 0;
}
.plaza-card.compact .plaza-price-val {
  font-size: 14px;
}
.plaza-card.compact .plaza-selling-points {
  padding: 6px 10px;
  margin: 6px 0;
}
.plaza-card.compact .plaza-card-desc {
  font-size: 12px;
  margin-bottom: 8px;
  -webkit-line-clamp: 2;
}

/* 商家筛选下拉 */
.merchant-filter-bar {
  display: flex;
  gap: 10px;
  align-items: center;
  flex-wrap: wrap;
  margin-bottom: 12px;
}
.merchant-filter-bar select {
  padding: 6px 10px;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  font-size: 13px;
  color: #334155;
  background: #fff;
  min-width: 180px;
}

/* 防霸屏：更多提示 */
.merchant-more-hint {
  text-align: center;
  padding: 12px;
  color: var(--primary-600);
  font-size: 13px;
  cursor: pointer;
  border-top: 1px dashed #e2e8f0;
  transition: background 0.2s;
}
.merchant-more-hint:hover {
  background: var(--primary-50);
}

@media (max-width: 768px) {
  .merchant-group-grid { grid-template-columns: 1fr; }
}
