/* ===== CSS Variables：v14 三主题（mist 云雾蓝=默认 / sand 暖沙杏 / night 石墨夜） ===== */
:root,
[data-theme="mist"] {
  --bg-primary: #E7EDF6;
  --bg-secondary: #F4F8FC;
  --bg-tertiary: #DDE6F1;
  --bg-elevated: #F7FAFD;
  --border-color: #C7D3E4;
  --border-light: #B0C0D8;
  --accent-cyan: #0090C9;
  --accent-blue: #0066FF;
  --accent-purple: #6D3FD8;
  --gradient-primary: linear-gradient(135deg, #14b8e8 0%, #0066ff 100%);
  --gradient-purple: linear-gradient(135deg, #6D3FD8 0%, #0066ff 100%);
  --gradient-dark: linear-gradient(180deg, #E7EDF6 0%, #F4F8FC 100%);
  --gradient-hero-text: linear-gradient(135deg, #1E2A3A 0%, #5A6B80 100%);
  --ambient: radial-gradient(ellipse at 20% 0%, rgba(0, 102, 255, 0.05) 0%, transparent 50%),
             radial-gradient(ellipse at 80% 100%, rgba(109, 63, 216, 0.04) 0%, transparent 50%);
  --overlay-soft: rgba(100, 120, 150, 0.08);
  --overlay-line: rgba(30, 42, 58, 0.06);
  --text-primary: #1E2A3A;
  --text-secondary: #5A6B80;
  --text-muted: #8494A9;
  --price-color: #E85D24;
  --success: #0E9F5A;
  --success-soft: rgba(14, 159, 90, 0.12);
  --gradient-success: linear-gradient(135deg, #0E9F5A 0%, #3F7D45 100%);
  --warning: #C77700;
  --error: #D64545;
  --shadow-glow: 0 0 20px rgba(0, 102, 255, 0.10);
  --shadow-card: 0 4px 24px rgba(30, 42, 58, 0.08);
  --shadow-hover: 0 8px 32px rgba(0, 102, 255, 0.10);
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

[data-theme="sand"] {
  --bg-primary: #F6F0E6;
  --bg-secondary: #FBF7EE;
  --bg-tertiary: #EFE6D6;
  --bg-elevated: #FDFBF5;
  --border-color: #E4D9C4;
  --border-light: #D2C1A3;
  --accent-cyan: #A87B24;
  --accent-blue: #D9622B;
  --accent-purple: #8A5FA8;
  --gradient-primary: linear-gradient(135deg, #E8834D 0%, #C2521C 100%);
  --gradient-purple: linear-gradient(135deg, #8A5FA8 0%, #C2521C 100%);
  --gradient-dark: linear-gradient(180deg, #F6F0E6 0%, #FBF7EE 100%);
  --gradient-hero-text: linear-gradient(135deg, #3A322B 0%, #8A7A5E 100%);
  --ambient: radial-gradient(ellipse at 20% 0%, rgba(217, 98, 43, 0.05) 0%, transparent 50%),
             radial-gradient(ellipse at 80% 100%, rgba(168, 123, 36, 0.04) 0%, transparent 50%);
  --overlay-soft: rgba(140, 110, 60, 0.09);
  --overlay-line: rgba(58, 50, 43, 0.08);
  --text-primary: #3A322B;
  --text-secondary: #6E6357;
  --text-muted: #9A8E7F;
  --price-color: #C24A1A;
  --success: #4C8C3F;
  --success-soft: rgba(76, 140, 63, 0.12);
  --gradient-success: linear-gradient(135deg, #4C8C3F 0%, #6B8E23 100%);
  --warning: #C77700;
  --error: #C0392B;
  --shadow-glow: 0 0 20px rgba(217, 98, 43, 0.10);
  --shadow-card: 0 4px 24px rgba(58, 50, 43, 0.08);
  --shadow-hover: 0 8px 32px rgba(217, 98, 43, 0.10);
}

[data-theme="night"] {
  --bg-primary: #151A24;
  --bg-secondary: #1A2232;
  --bg-tertiary: #202A3C;
  --bg-elevated: #1E2635;
  --border-color: #2E3A50;
  --border-light: #3C4A64;
  --accent-cyan: #38C6E8;
  --accent-blue: #4F9DFF;
  --accent-purple: #8B6FE8;
  --gradient-primary: linear-gradient(135deg, #38C6E8 0%, #4F9DFF 100%);
  --gradient-purple: linear-gradient(135deg, #8B6FE8 0%, #4F9DFF 100%);
  --gradient-dark: linear-gradient(180deg, #151A24 0%, #1A2232 100%);
  --gradient-hero-text: linear-gradient(135deg, #E6EDF5 0%, #8C99AD 100%);
  --ambient: radial-gradient(ellipse at 20% 0%, rgba(79, 157, 255, 0.07) 0%, transparent 50%),
             radial-gradient(ellipse at 80% 100%, rgba(139, 111, 232, 0.05) 0%, transparent 50%);
  --overlay-soft: rgba(255, 255, 255, 0.04);
  --overlay-line: rgba(255, 255, 255, 0.05);
  --text-primary: #C6D0DE;
  --text-secondary: #8C99AD;
  --text-muted: #64708A;
  --price-color: #FF8A5C;
  --success: #3DD68C;
  --success-soft: rgba(61, 214, 140, 0.15);
  --gradient-success: linear-gradient(135deg, #3DD68C 0%, #2AAE6F 100%);
  --warning: #FFB74D;
  --error: #FF6B6B;
  --shadow-glow: 0 0 20px rgba(79, 157, 255, 0.12);
  --shadow-card: 0 4px 24px rgba(0, 0, 0, 0.3);
  --shadow-hover: 0 8px 32px rgba(79, 157, 255, 0.10);
}

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

html { scroll-behavior: smooth; }

body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  background: var(--bg-primary);
  color: var(--text-primary);
  line-height: 1.6;
  overflow-x: hidden;
}

/* Animated background */
body::before {
  content: '';
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: var(--ambient);
  z-index: -1;
  pointer-events: none;
}

/* Custom scrollbar */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: var(--bg-secondary); }
::-webkit-scrollbar-thumb { background: var(--border-light); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: var(--accent-cyan); }

/* Selection */
::selection { background: rgba(0, 212, 255, 0.25); color: var(--text-primary); }

/* ===== App Shell：左侧侧边栏 + 顶部 navbar（Linear/Notion 风格） ===== */
.app-shell {
  display: grid;
  grid-template-columns: 232px 1fr;
  grid-template-rows: 1fr;
  min-height: 100vh;
}

/* —— 侧边栏 —— */
.sidebar {
  grid-column: 1;
  grid-row: 1;
  background: var(--bg-secondary);
  border-right: 1px solid var(--border-color);
  display: flex;
  flex-direction: column;
  position: sticky;
  top: 0;
  height: 100vh;
  overflow-y: auto;
  overflow-x: hidden;
  transition: width 0.25s ease;
}
.sidebar-brand {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 18px 20px 16px;
  cursor: pointer;
  border-bottom: 1px solid var(--border-color);
  user-select: none;
}
.sidebar-brand-mark {
  width: 32px; height: 32px;
  border-radius: 8px;
  background: var(--gradient-primary);
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.sidebar-brand-text {
  font-size: 14px;
  font-weight: 600;
  color: var(--text-primary);
  letter-spacing: 0.3px;
  white-space: nowrap;
  background: var(--gradient-primary);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
.sidebar-nav {
  padding: 12px 12px;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.sidebar-group { margin-top: 12px; display: flex; flex-direction: column; gap: 2px; }
.sidebar-group:first-child { margin-top: 0; }
.sidebar-group-title {
  font-size: 11px;
  font-weight: 600;
  color: var(--text-tertiary);
  letter-spacing: 0.8px;
  text-transform: uppercase;
  padding: 6px 12px 4px;
}
.sidebar-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 9px 12px;
  border-radius: var(--radius-sm);
  color: var(--text-secondary);
  font-size: 13.5px;
  font-weight: 500;
  cursor: pointer;
  text-decoration: none;
  transition: background 0.15s ease, color 0.15s ease;
  position: relative;
  white-space: nowrap;
}
.sidebar-item:hover {
  background: rgba(0, 212, 255, 0.08);
  color: var(--accent-cyan);
}
.sidebar-item.active {
  background: rgba(0, 212, 255, 0.12);
  color: var(--accent-cyan);
}
.sidebar-item.active::before {
  content: '';
  position: absolute;
  left: 0; top: 6px; bottom: 6px;
  width: 2px;
  background: var(--accent-cyan);
  border-radius: 2px;
}
.sidebar-icon {
  font-size: 14px;
  width: 18px;
  text-align: center;
  flex-shrink: 0;
  opacity: 0.85;
}
.sidebar-label { flex: 1; }

.sidebar-footer {
  padding: 12px;
  border-top: 1px solid var(--border-color);
  display: flex;
  justify-content: flex-end;
}
.sidebar-collapse-btn {
  background: transparent;
  border: 1px solid var(--border-color);
  color: var(--text-secondary);
  width: 28px; height: 28px;
  border-radius: 6px;
  font-size: 16px;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background 0.15s;
}
.sidebar-collapse-btn:hover { background: rgba(0, 212, 255, 0.08); color: var(--accent-cyan); }

/* —— v21：统计更新截止时间标签（页头显眼位置） —— */
.stats-meta-tag {
  display: inline-block;
  vertical-align: 4px;
  margin-left: 10px;
  padding: 4px 12px;
  font-size: 12px;
  font-weight: 500;
  color: var(--accent-cyan);
  background: rgba(0, 212, 255, 0.1);
  border: 1px solid rgba(0, 212, 255, 0.35);
  border-radius: 999px;
  white-space: nowrap;
}

/* —— 折叠态（v21：折叠按钮保留在底部，‹/› 原地切换，废弃顶部 ≡） —— */
body.sidebar-collapsed .app-shell { grid-template-columns: 64px 1fr; }
body.sidebar-collapsed .sidebar-brand-text,
body.sidebar-collapsed .sidebar-label,
body.sidebar-collapsed .sidebar-group-title { display: none; }
body.sidebar-collapsed .sidebar-footer { justify-content: center; }
body.sidebar-collapsed .sidebar-brand { justify-content: center; padding: 18px 12px; }
body.sidebar-collapsed .sidebar-item { justify-content: center; padding: 9px 0; }
body.sidebar-collapsed .sidebar-icon { width: auto; font-size: 16px; }
body.sidebar-collapsed .sidebar-group { gap: 4px; }

/* —— 主区域：topbar + 内容 —— */
.main-area {
  grid-column: 2;
  grid-row: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
}
.topbar {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 0 24px;
  height: 60px;
  background: var(--bg-elevated);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-bottom: 1px solid var(--border-color);
  position: sticky;
  top: 0;
  z-index: 50;
}
.topbar-search {
  flex: 1;
  max-width: 480px;
  display: flex;
  align-items: center;
  gap: 8px;
  background: var(--overlay-soft);
  border: 1px solid var(--border-color);
  border-radius: 8px;
  padding: 0 12px;
  height: 36px;
  transition: border-color 0.15s, background 0.15s;
}
.topbar-search:focus-within {
  border-color: var(--accent-cyan);
  background: rgba(0, 212, 255, 0.04);
}
.topbar-search-icon { color: var(--text-tertiary); font-size: 14px; }
.topbar-search input {
  flex: 1;
  background: transparent;
  border: none;
  outline: none;
  color: var(--text-primary);
  font-size: 13px;
}
.topbar-search input::placeholder { color: var(--text-tertiary); }
.topbar-kbd {
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--text-tertiary);
  border: 1px solid var(--border-color);
  border-radius: 4px;
  padding: 1px 5px;
  background: var(--overlay-soft);
}

.topbar-actions { display: flex; align-items: center; gap: 10px; margin-left: auto; }
.topbar-ai-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 16px;
  background: var(--gradient-primary);
  color: #fff;
  border: none;
  border-radius: 20px;
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  transition: transform 0.15s, box-shadow 0.15s;
  box-shadow: 0 2px 10px rgba(0, 212, 255, 0.25);
}
.topbar-ai-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 16px rgba(0, 212, 255, 0.4);
}
.topbar-ai-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--success);
  box-shadow: 0 0 8px var(--success-soft);
  animation: pulse 1.8s infinite;
}
/* —— v14 主题切换（topbar 色卡） —— */
.theme-switch {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 4px 6px;
  background: var(--overlay-soft);
  border: 1px solid var(--border-color);
  border-radius: 16px;
}
.theme-swatch {
  width: 16px; height: 16px;
  border-radius: 50%;
  border: 2px solid var(--bg-secondary);
  cursor: pointer;
  padding: 0;
  transition: var(--transition);
}
.theme-swatch:hover { transform: scale(1.15); }
.theme-swatch.active { box-shadow: 0 0 0 2px var(--accent-blue); }
.theme-swatch-mist { background: linear-gradient(135deg, #E7EDF6 50%, #0066FF 50%); }
.theme-swatch-sand { background: linear-gradient(135deg, #F6F0E6 50%, #D9622B 50%); }
.theme-swatch-night { background: linear-gradient(135deg, #151A24 50%, #4F9DFF 50%); }

.topbar-user { display: flex; align-items: center; }
.topbar-user-avatar {
  width: 32px; height: 32px;
  border-radius: 50%;
  background: linear-gradient(135deg, #185FA5, #534AB7);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
}
.content {
  flex: 1;
  min-width: 0;
}

/* ===== 站点合规备案页脚 ===== */
.site-beian {
  text-align: center;
  padding: 10px 0 14px;
  font-size: 12px;
  color: #9aa7b4;
  border-top: 1px solid rgba(0, 0, 0, 0.05);
}
.site-beian a { color: inherit; text-decoration: none; }
.site-beian a:hover { color: #0088FF; text-decoration: underline; }
:root[data-theme="night"] .site-beian { color: #6b7a89; border-top-color: rgba(255, 255, 255, 0.06); }

/* ===== Pages ===== */
.page {
  display: none;
  min-height: calc(100vh - 60px);
  padding: 32px 24px;
  max-width: 1280px;
  margin: 0 auto;
}
.page.active { display: block; animation: fadeIn 0.4s ease; }
.hidden { display: none !important; }

@keyframes fadeIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.5; }
}

@keyframes shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

/* ===== Hero / Banner ===== */
.hero {
  position: relative;
  text-align: center;
  padding: 80px 24px 48px;
  overflow: hidden;
}

.hero::before {
  content: '';
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 600px; height: 600px;
  background: radial-gradient(circle, rgba(0, 212, 255, 0.08) 0%, transparent 60%);
  z-index: -1;
}

.hero-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: rgba(0, 212, 255, 0.1);
  border: 1px solid rgba(0, 212, 255, 0.2);
  color: var(--accent-cyan);
  padding: 4px 14px;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 500;
  margin-bottom: 20px;
}

.hero-badge::before {
  content: '';
  width: 6px; height: 6px;
  background: var(--accent-cyan);
  border-radius: 50%;
  animation: pulse 2s infinite;
}

.hero h1 {
  font-size: 42px;
  font-weight: 700;
  background: var(--gradient-hero-text);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  margin-bottom: 14px;
  letter-spacing: 1px;
}

.hero p {
  font-size: 16px;
  color: var(--text-secondary);
  max-width: 500px;
  margin: 0 auto;
}

/* Stats bar */
.hero-stats {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 40px;
  margin-top: 36px;
  flex-wrap: wrap;
}

.stat-item { text-align: center; }

/* 首页 KPI 看板（总签约 / 已到店）强调样式 */
.stat-kpi .stat-value {
  font-size: 40px;
  background: var(--gradient-primary);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.stat-kpi .stat-label {
  font-size: 14px;
  color: var(--text-secondary);
  letter-spacing: 1px;
}

.stat-kpi-arrived .stat-value {
  background: var(--gradient-success);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.stat-divider {
  width: 1px;
  height: 44px;
  background: linear-gradient(180deg, transparent, var(--border-color), transparent);
}

.stat-value {
  font-size: 32px;
  font-weight: 700;
  background: var(--gradient-primary);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.stat-label {
  font-size: 13px;
  color: var(--text-muted);
  margin-top: 4px;
}

/* ===== Module Cards ===== */
.module-cards {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 24px;
  max-width: 880px;
  margin: 0 auto;
}

.module-card {
  background: var(--bg-secondary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-lg);
  padding: 36px 28px;
  cursor: pointer;
  transition: var(--transition);
  text-align: center;
  position: relative;
  overflow: hidden;
}

.module-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 2px;
  background: var(--gradient-primary);
  opacity: 0;
  transition: var(--transition);
}

.module-card:hover {
  border-color: var(--accent-cyan);
  box-shadow: var(--shadow-hover);
  transform: translateY(-4px);
}

.module-card:hover::before { opacity: 1; }

.module-icon {
  width: 56px; height: 56px;
  background: rgba(0, 212, 255, 0.1);
  border: 1px solid rgba(0, 212, 255, 0.2);
  border-radius: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  font-weight: 700;
  margin: 0 auto 20px;
  color: var(--accent-cyan);
  transition: var(--transition);
}

.module-card:hover .module-icon {
  background: rgba(0, 212, 255, 0.15);
  box-shadow: 0 0 20px rgba(0, 212, 255, 0.2);
}

.module-card h2 { font-size: 18px; font-weight: 600; margin-bottom: 8px; color: var(--text-primary); }
.module-card p { font-size: 14px; color: var(--text-secondary); line-height: 1.6; }

.module-card .module-arrow {
  margin-top: 16px;
  font-size: 13px;
  color: var(--accent-cyan);
  opacity: 0;
  transition: var(--transition);
}

.module-card:hover .module-arrow { opacity: 1; }

/* 三卡差异化主题色：1 青色 / 2 蓝色 / 3 橙色 */
.module-card:nth-child(2) .module-icon {
  background: rgba(0, 102, 255, 0.1);
  border-color: rgba(0, 102, 255, 0.25);
  color: #4d8dff;
}
.module-card:nth-child(2):hover { border-color: var(--accent-blue); }
.module-card:nth-child(2):hover .module-icon {
  background: rgba(0, 102, 255, 0.18);
  box-shadow: 0 0 20px rgba(0, 102, 255, 0.25);
}
.module-card:nth-child(2) .module-arrow { color: #4d8dff; }

.module-card:nth-child(3) .module-icon {
  background: rgba(255, 107, 53, 0.1);
  border-color: rgba(255, 107, 53, 0.25);
  color: #ff6b35;
}
.module-card:nth-child(3):hover { border-color: #ff6b35; }
.module-card:nth-child(3):hover .module-icon {
  background: rgba(255, 107, 53, 0.18);
  box-shadow: 0 0 20px rgba(255, 107, 53, 0.25);
}
.module-card:nth-child(3) .module-arrow { color: #ff6b35; }

.module-card:nth-child(4) .module-icon {
  background: rgba(177, 106, 255, 0.1);
  border-color: rgba(177, 106, 255, 0.25);
  color: #b16aff;
}
.module-card:nth-child(4):hover { border-color: #b16aff; }
.module-card:nth-child(4):hover .module-icon {
  background: rgba(177, 106, 255, 0.18);
  box-shadow: 0 0 20px rgba(177, 106, 255, 0.25);
}
.module-card:nth-child(4) .module-arrow { color: #b16aff; }

/* ===== 门店采购价（密码门） ===== */
.purchase-gate {
  display: flex;
  justify-content: center;
  padding: 60px 0 40px;
}
.purchase-gate-card {
  width: 100%;
  max-width: 420px;
  background: var(--bg-secondary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-lg);
  padding: 40px 36px;
  text-align: center;
  box-shadow: var(--shadow);
}
.purchase-gate-icon {
  font-size: 40px;
  margin-bottom: 12px;
}
.purchase-gate-card h2 { margin-bottom: 8px; }
.purchase-gate-tip {
  color: var(--text-secondary);
  font-size: 14px;
  margin-bottom: 24px;
}
.purchase-input {
  width: 100%;
  padding: 12px 16px;
  background: var(--bg-primary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  color: var(--text-primary);
  font-size: 15px;
  text-align: center;
  letter-spacing: 2px;
  margin-bottom: 16px;
  box-sizing: border-box;
}
.purchase-input:focus {
  outline: none;
  border-color: var(--accent-cyan);
  box-shadow: 0 0 0 3px rgba(0, 212, 255, 0.1);
}
.purchase-actions { display: flex; gap: 10px; }
.purchase-changepwd { margin-bottom: 20px; }
.purchase-changepwd .admin-card { max-width: 460px; text-align: left; }

/* ===== 采购价表格 ===== */
.price-table-wrap {
  overflow-x: auto;
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-secondary);
  margin-top: 16px;
}
.price-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  min-width: 1100px;
  white-space: nowrap;
}
.price-table th {
  background: rgba(0, 212, 255, 0.06);
  color: var(--accent-cyan);
  font-weight: 600;
  padding: 12px 14px;
  text-align: left;
  border-bottom: 1px solid var(--border-color);
  position: sticky;
  top: 0;
}
.price-table td {
  padding: 11px 14px;
  color: var(--text-primary);
  border-bottom: 1px solid var(--overlay-line);
}
.price-table tbody tr:hover { background: rgba(0, 212, 255, 0.03); }
.price-table td:first-child { color: var(--accent-cyan); font-weight: 500; }

/* ===== Page Header ===== */
.page-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 24px;
  flex-wrap: wrap;
  gap: 12px;
}

.page-header h2 {
  font-size: 24px;
  font-weight: 700;
  color: var(--text-primary);
  position: relative;
  padding-left: 14px;
}

.page-header h2::before {
  content: '';
  position: absolute;
  left: 0; top: 50%;
  transform: translateY(-50%);
  width: 4px; height: 20px;
  background: var(--gradient-primary);
  border-radius: 2px;
}

/* ===== Search Input ===== */
.search-input {
  padding: 10px 16px;
  background: var(--bg-secondary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  font-size: 14px;
  color: var(--text-primary);
  width: 320px;
  max-width: 100%;
  outline: none;
  transition: var(--transition);
}

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

.search-input:focus {
  border-color: var(--accent-cyan);
  box-shadow: 0 0 0 3px rgba(0, 212, 255, 0.1);
}

/* ===== Vehicle Grid ===== */
.vehicle-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
  gap: 16px;
}

.vehicle-card {
  background: var(--bg-secondary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  padding: 18px;
  cursor: pointer;
  transition: var(--transition);
  position: relative;
  overflow: hidden;
}

.vehicle-card::after {
  content: '';
  position: absolute;
  top: 0; right: 0;
  width: 80px; height: 80px;
  background: radial-gradient(circle, rgba(0, 212, 255, 0.05) 0%, transparent 70%);
  pointer-events: none;
}

.vehicle-card:hover {
  border-color: rgba(0, 212, 255, 0.4);
  box-shadow: var(--shadow-hover);
  transform: translateY(-2px);
}

.vehicle-card .vc-brand {
  font-size: 12px;
  color: var(--text-muted);
  margin-bottom: 6px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.vehicle-card .vc-model {
  font-size: 15px;
  font-weight: 600;
  margin-bottom: 10px;
  line-height: 1.4;
  color: var(--text-primary);
}

.vehicle-card .vc-info {
  display: flex;
  gap: 8px;
  font-size: 13px;
  color: var(--text-secondary);
  margin-bottom: 10px;
  flex-wrap: wrap;
}

.vehicle-card .vc-price {
  font-size: 18px;
  font-weight: 700;
  color: var(--price-color);
}

.vc-tag {
  display: inline-block;
  font-size: 11px;
  padding: 3px 10px;
  border-radius: 4px;
  background: rgba(0, 212, 255, 0.08);
  color: var(--accent-cyan);
  border: 1px solid rgba(0, 212, 255, 0.15);
}

/* ===== Buttons ===== */
.btn-back {
  background: none;
  border: none;
  color: var(--accent-cyan);
  font-size: 14px;
  cursor: pointer;
  margin-bottom: 16px;
  padding: 6px 0;
  transition: var(--transition);
}

.btn-back:hover { opacity: 0.8; transform: translateX(-4px); }

.btn-primary {
  background: var(--gradient-primary);
  color: #fff;
  border: none;
  padding: 10px 24px;
  border-radius: var(--radius-sm);
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: var(--transition);
  position: relative;
  overflow: hidden;
}

.btn-primary:hover {
  box-shadow: 0 4px 20px rgba(0, 212, 255, 0.3);
  transform: translateY(-1px);
}

.btn-secondary {
  background: var(--bg-tertiary);
  color: var(--text-secondary);
  border: 1px solid var(--border-color);
  padding: 10px 24px;
  border-radius: var(--radius-sm);
  font-size: 14px;
  cursor: pointer;
  transition: var(--transition);
}

.btn-secondary:hover {
  border-color: var(--accent-cyan);
  color: var(--accent-cyan);
}

.btn-full { width: 100%; margin-top: 12px; }

/* ===== Vehicle Detail ===== */
.detail-header {
  background: var(--bg-secondary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-lg);
  padding: 28px;
  margin-bottom: 16px;
  position: relative;
  overflow: hidden;
}

.detail-header::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: var(--gradient-primary);
}

.detail-header h2 {
  font-size: 22px;
  font-weight: 700;
  margin-bottom: 8px;
  color: var(--text-primary);
}

.detail-header .detail-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 14px;
}

.info-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}

.info-table th {
  background: var(--bg-tertiary);
  padding: 12px 16px;
  text-align: left;
  font-weight: 500;
  color: var(--text-secondary);
  border: 1px solid var(--border-color);
  width: 150px;
}

.info-table td {
  padding: 12px 16px;
  border: 1px solid var(--border-color);
  color: var(--text-primary);
}

.detail-section {
  background: var(--bg-secondary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-lg);
  padding: 24px;
  margin-bottom: 16px;
}

.detail-section h3 {
  font-size: 16px;
  font-weight: 600;
  margin-bottom: 16px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--border-color);
  color: var(--accent-cyan);
  display: flex;
  align-items: center;
  gap: 8px;
}

.detail-section h3::before {
  content: '';
  width: 3px; height: 16px;
  background: var(--gradient-primary);
  border-radius: 2px;
}

/* PPT 3-column layout */
.ppt-layout {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 16px;
}

.ppt-column {
  background: var(--bg-tertiary);
  border-radius: var(--radius-md);
  padding: 18px;
  border: 1px solid var(--border-color);
}

.ppt-column h4 {
  font-size: 14px;
  font-weight: 600;
  color: var(--accent-cyan);
  margin-bottom: 14px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--border-color);
}

.param-table { width: 100%; font-size: 12px; }
.param-table td { padding: 5px 8px; border-bottom: 1px solid var(--border-color); color: var(--text-primary); }
.param-table td:first-child { color: var(--text-muted); width: 45%; }

.highlight-item {
  margin-bottom: 14px;
  padding: 10px;
  background: rgba(0, 212, 255, 0.04);
  border-radius: var(--radius-sm);
  border-left: 3px solid var(--accent-cyan);
}

.highlight-item .hl-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-primary);
  margin-bottom: 4px;
}

.highlight-item .hl-desc {
  font-size: 12px;
  color: var(--text-secondary);
  line-height: 1.6;
}

.reason-item {
  font-size: 12px;
  color: var(--text-secondary);
  margin-bottom: 12px;
  padding: 10px 12px;
  background: rgba(124, 58, 237, 0.06);
  border-left: 3px solid var(--accent-purple);
  border-radius: var(--radius-sm);
  line-height: 1.6;
}

.ppt-images {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 16px;
}

.ppt-images img {
  max-width: 300px;
  border-radius: var(--radius-md);
  border: 1px solid var(--border-color);
}

.no-detail {
  text-align: center;
  padding: 48px;
  color: var(--text-muted);
  font-size: 14px;
}

/* ===== Store Tabs ===== */
.store-tabs {
  display: flex;
  gap: 4px;
  margin-bottom: 20px;
  border-bottom: 1px solid var(--border-color);
}

.tab-btn {
  padding: 10px 28px;
  border: none;
  background: transparent;
  border-radius: var(--radius-sm) var(--radius-sm) 0 0;
  cursor: pointer;
  font-size: 14px;
  color: var(--text-secondary);
  font-weight: 500;
  transition: var(--transition);
  position: relative;
  border-bottom: 2px solid transparent;
}

.tab-btn:hover { color: var(--text-primary); }

.tab-btn.active {
  color: var(--accent-cyan);
  border-bottom-color: var(--accent-cyan);
}

/* ===== Search Bar ===== */
.search-bar {
  display: flex;
  gap: 8px;
  margin-bottom: 24px;
  flex-wrap: wrap;
}

/* ===== Store Cards ===== */
.store-card {
  background: var(--bg-secondary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  padding: 18px;
  margin-bottom: 12px;
  transition: var(--transition);
}

.store-card:hover {
  border-color: rgba(0, 212, 255, 0.3);
  box-shadow: 0 2px 16px rgba(0, 0, 0, 0.2);
}

.store-card .sc-name {
  font-size: 15px;
  font-weight: 600;
  margin-bottom: 8px;
  color: var(--text-primary);
}

.store-card .sc-info {
  font-size: 13px;
  color: var(--text-secondary);
  margin-bottom: 4px;
}

.store-card .sc-info span {
  color: var(--text-muted);
  margin-right: 8px;
  min-width: 60px;
  display: inline-block;
}

/* Nearby groups */
.nearby-group { margin-bottom: 24px; }

.nearby-group-header {
  font-size: 15px;
  font-weight: 600;
  color: var(--accent-cyan);
  margin-bottom: 12px;
  padding: 10px 16px;
  background: rgba(0, 212, 255, 0.06);
  border: 1px solid rgba(0, 212, 255, 0.15);
  border-radius: var(--radius-sm);
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.distance-badge {
  font-size: 12px;
  color: var(--price-color);
  font-weight: 500;
  background: rgba(255, 107, 53, 0.1);
  padding: 3px 10px;
  border-radius: 12px;
  border: 1px solid rgba(255, 107, 53, 0.2);
}

.search-message {
  background: rgba(255, 171, 64, 0.08);
  border: 1px solid rgba(255, 171, 64, 0.2);
  border-radius: var(--radius-sm);
  padding: 14px 18px;
  margin-bottom: 16px;
  font-size: 14px;
  color: var(--warning);
}

.no-result {
  text-align: center;
  padding: 48px;
  color: var(--text-muted);
}

/* ===== Admin ===== */
.admin-card {
  max-width: 420px;
  margin: 80px auto;
  background: var(--bg-secondary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-lg);
  padding: 36px;
  position: relative;
  overflow: hidden;
}

.admin-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: var(--gradient-primary);
}

.admin-card h2 {
  text-align: center;
  margin-bottom: 24px;
  color: var(--text-primary);
}

.form-group { margin-bottom: 16px; }

.form-group label {
  display: block;
  font-size: 13px;
  color: var(--text-secondary);
  margin-bottom: 6px;
  font-weight: 500;
}

.form-group input {
  width: 100%;
  padding: 10px 14px;
  background: var(--bg-tertiary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  font-size: 14px;
  color: var(--text-primary);
  outline: none;
  transition: var(--transition);
}

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

.form-group input:focus {
  border-color: var(--accent-cyan);
  box-shadow: 0 0 0 3px rgba(0, 212, 255, 0.1);
}

.form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

.form-row.form-row--3col {
  grid-template-columns: 1.4fr 1fr 1fr;
}

.admin-form {
  max-width: 720px;
  background: var(--bg-secondary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-lg);
  padding: 28px;
}

.admin-actions {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  max-width: 1080px;
}

/* v66：管理面板五模块分区标题 */
.admin-section-title {
  max-width: 1080px;
  margin: 26px 0 12px;
  padding-left: 12px;
  border-left: 4px solid var(--accent-cyan, #00b8d9);
  font-size: 16px;
  font-weight: 800;
  color: var(--text, #111);
  letter-spacing: 1px;
}
.admin-actions + .admin-section-title { margin-top: 30px; }

.admin-card-action {
  background: var(--bg-secondary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  padding: 24px;
  cursor: pointer;
  transition: var(--transition);
  text-align: center;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 8px;
  min-height: 118px;
}

/* 模块首卡（入口卡）高亮 */
.admin-card-action.admin-card-primary {
  background: linear-gradient(135deg, rgba(0, 184, 217, .08), rgba(0, 136, 255, .05));
  border-color: var(--accent-cyan, #00b8d9);
}
.admin-card-action.admin-card-primary h3 { color: var(--accent-cyan, #0088FF); }

/* 管理面板底部卡片（统计更新截止时间）：居左、收紧边距 */
.admin-card.admin-card-bottom {
  max-width: 560px;
  margin: 24px 0 40px;
}

.admin-card-action:hover {
  border-color: var(--accent-cyan);
  box-shadow: var(--shadow-hover);
  transform: translateY(-2px);
}

.admin-card-action h3 {
  font-size: 15px;
  margin-bottom: 8px;
  color: var(--text-primary);
}

.admin-card-action p {
  font-size: 13px;
  color: var(--text-secondary);
}

.badge-admin {
  font-size: 12px;
  color: var(--success);
  background: rgba(0, 230, 118, 0.1);
  border: 1px solid rgba(0, 230, 118, 0.2);
  padding: 3px 12px;
  border-radius: 12px;
}

.msg-error { color: var(--error); font-size: 13px; margin-top: 8px; }
.msg-success { color: var(--success); font-size: 13px; margin-top: 8px; }

.loading {
  text-align: center;
  padding: 48px;
  color: var(--text-muted);
  font-size: 14px;
}

.loading::after {
  content: '...';
  animation: pulse 1.5s infinite;
}

/* ===== 信息管理（编辑/删除） ===== */
.manage-count {
  color: var(--text-muted);
  font-size: 13px;
  margin: 10px 0 12px;
}

.manage-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  background: var(--bg-secondary);
  border: 1px solid var(--border-color);
  border-radius: 10px;
  padding: 14px 18px;
  margin-bottom: 10px;
  transition: border-color 0.2s, box-shadow 0.2s;
}

.manage-row:hover {
  border-color: rgba(0, 212, 255, 0.35);
  box-shadow: 0 4px 18px rgba(0, 102, 255, 0.12);
}

.manage-info { flex: 1; min-width: 0; }

.manage-title {
  font-size: 15px;
  font-weight: 600;
  color: var(--text-primary);
  margin-bottom: 4px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.manage-sub {
  font-size: 12px;
  color: var(--text-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.manage-actions { display: flex; gap: 8px; flex-shrink: 0; }

.btn-edit {
  padding: 7px 18px;
  border-radius: 6px;
  border: 1px solid rgba(0, 212, 255, 0.45);
  background: rgba(0, 102, 255, 0.12);
  color: var(--accent-cyan);
  font-size: 13px;
  cursor: pointer;
  transition: var(--transition);
}

.btn-edit:hover {
  background: rgba(0, 102, 255, 0.28);
  box-shadow: 0 0 12px rgba(0, 212, 255, 0.3);
}

.btn-delete {
  padding: 7px 18px;
  border-radius: 6px;
  border: 1px solid rgba(255, 82, 82, 0.45);
  background: rgba(255, 82, 82, 0.1);
  color: var(--error);
  font-size: 13px;
  cursor: pointer;
  transition: var(--transition);
}

.btn-delete:hover {
  background: rgba(255, 82, 82, 0.25);
  box-shadow: 0 0 12px rgba(255, 82, 82, 0.3);
}

/* ===== Inventory Module ===== */
.inv-dashboard {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 16px;
  margin-bottom: 20px;
}
.inv-stat-card {
  background: var(--bg-secondary);
  border: 1px solid var(--border-color);
  border-radius: 12px;
  padding: 20px;
  text-align: center;
  transition: var(--transition);
}
.inv-stat-card:hover { border-color: var(--accent-cyan); box-shadow: 0 0 16px rgba(0,212,255,0.15); }
.inv-stat-card.inv-arrived { border-color: rgba(0,230,118,0.2); }
.inv-stat-card.inv-arrived .inv-stat-num { color: var(--success); }
.inv-stat-card.inv-transit { border-color: rgba(255,107,53,0.2); }
.inv-stat-card.inv-transit .inv-stat-num { color: #ff6b35; }
.inv-stat-num { font-size: 28px; font-weight: 700; color: var(--accent-cyan); }
.inv-stat-label { font-size: 13px; color: #8b95a7; margin-top: 6px; }

.inv-table { width: 100%; border-collapse: collapse; }
.inv-table th { background: var(--bg-elevated); padding: 10px 14px; text-align: left; font-size: 13px; color: #8b95a7; border-bottom: 1px solid var(--border-color); }
.inv-table td { padding: 10px 14px; border-bottom: 1px solid var(--border-color); font-size: 14px; }

.inv-status-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }
.inv-status-card { background: var(--bg-tertiary); border: 1px solid var(--border-color); border-radius: 10px; padding: 16px; }
.inv-status-card.inv-status-arrived { border-left: 3px solid var(--success); }
.inv-status-card.inv-status-transit { border-left: 3px solid #ff6b35; }
.inv-status-card.inv-status-partial { border-left: 3px solid #ffaa00; }
.inv-status-card.inv-status-other { border-left: 3px solid #5a6580; }
.inv-status-name { font-size: 15px; font-weight: 600; color: var(--text-primary); }
.inv-status-count { font-size: 20px; font-weight: 700; color: var(--accent-cyan); margin: 4px 0; }
.inv-status-detail { font-size: 12px; color: #5a6580; }

.inv-search-section { margin-bottom: 20px; border-radius: 12px; overflow: hidden; }
.inv-section-arrived { border: 1px solid rgba(0,230,118,0.2); }
.inv-section-transit { border: 1px solid rgba(255,107,53,0.2); }
.inv-section-partial { border: 1px solid rgba(255,170,0,0.2); }
.inv-section-other { border: 1px solid var(--border-color); }
.inv-section-header { padding: 12px 16px; font-size: 15px; font-weight: 600; color: var(--text-primary); background: var(--bg-elevated); }
.inv-section-arrived .inv-section-header { border-bottom: 2px solid rgba(0,230,118,0.3); }
.inv-section-transit .inv-section-header { border-bottom: 2px solid rgba(255,107,53,0.3); }
.inv-section-partial .inv-section-header { border-bottom: 2px solid rgba(255,170,0,0.3); }

.inv-store-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; padding: 16px; }
.inv-store-card { background: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 10px; padding: 14px; transition: var(--transition); }
.inv-store-card:hover { border-color: var(--accent-cyan); transform: translateY(-2px); }
.inv-store-card.inv-transit { border-left: 3px solid #ff6b35; }
.inv-store-card.inv-other { border-left: 3px solid #5a6580; }
.inv-store-name { font-size: 14px; font-weight: 600; color: var(--text-primary); margin-bottom: 4px; }
.inv-store-loc { font-size: 12px; color: #5a6580; margin-bottom: 6px; }
.inv-store-count { font-size: 13px; color: #8b95a7; }
.inv-count-num { color: var(--accent-cyan); font-weight: 700; font-size: 16px; }
.inv-store-sub { font-size: 11px; color: #5a6580; margin-top: 4px; }

.inv-dimension { margin-bottom: 20px; }
.inv-dim-title { font-size: 15px; font-weight: 600; color: var(--accent-cyan); margin-bottom: 12px; padding-bottom: 6px; border-bottom: 1px solid var(--border-color); }

/* Store card inventory section */
.sc-inventory { margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--border-color); }
.sc-inv-title { font-size: 12px; color: var(--accent-cyan); margin-bottom: 8px; font-weight: 600; }
.sc-inv-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; font-size: 12px; }
.sc-inv-model { color: var(--text-primary); min-width: 120px; }
.sc-inv-status { padding: 2px 8px; border-radius: 4px; font-size: 11px; font-weight: 600; }
.inv-tag-arrived { background: var(--success-soft); color: var(--success); }
.inv-tag-transit { background: rgba(255,107,53,0.15); color: #ff6b35; }
.inv-tag-partial { background: rgba(255,170,0,0.15); color: #ffaa00; }
.inv-tag-other { background: rgba(90,101,128,0.2); color: #8b95a7; }
.sc-inv-count { color: #5a6580; }
.sc-inv-empty { margin-top: 8px; padding: 8px 12px; border-radius: 6px; background: rgba(90,101,128,0.12); color: #8b95a7; font-size: 12px; }

/* ===== 查车工具内嵌页 ===== */
.car-tool-actions { display: flex; gap: 8px; }
.car-tool-tip { color: var(--text-secondary); font-size: 13px; margin: -6px 0 14px; }
.car-tool-frame-wrap {
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  background: var(--bg-tertiary);
  overflow: hidden;
}
.car-tool-frame {
  display: block;
  width: 100%;
  min-height: calc(100vh - 260px);
  border: none;
}

/* ===== Responsive ===== */
@media (max-width: 1024px) {
  .topbar-search { max-width: 320px; }
  .topbar-kbd { display: none; }
}
@media (max-width: 768px) {
  .app-shell { grid-template-columns: 1fr; }
  .sidebar {
    position: fixed;
    left: 0; top: 0;
    z-index: 200;
    width: 232px;
    transform: translateX(-100%);
    transition: transform 0.25s ease;
  }
  body.sidebar-open .sidebar { transform: translateX(0); }
  body.sidebar-open::after {
    content: '';
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.5);
    z-index: 150;
  }
  .topbar { padding: 0 16px; }
  .topbar-search { max-width: none; }
  .topbar-ai-btn { padding: 8px 12px; font-size: 12px; }
  .hero { padding: 48px 16px 32px; }
  .hero h1 { font-size: 28px; }
  .hero-stats { gap: 24px; }
  .stat-value { font-size: 24px; }
  .stat-kpi .stat-value { font-size: 28px; }
  .stat-divider { display: none; }
  .module-cards { grid-template-columns: 1fr; }
  .ppt-layout { grid-template-columns: 1fr; }
  .form-row { grid-template-columns: 1fr; }
  .admin-actions { grid-template-columns: 1fr; }
  .search-input { width: 100%; }
  .page { padding: 20px 16px; }
  .page-header h2 { font-size: 20px; }
  .vehicle-grid { grid-template-columns: 1fr; }
  .manage-row { flex-direction: column; align-items: stretch; }
  .manage-actions { justify-content: flex-end; }
  .inv-dashboard { grid-template-columns: repeat(2, 1fr); }
  .inv-store-grid { grid-template-columns: 1fr; }
  .inv-status-grid { grid-template-columns: 1fr; }
}

/* ===== 落地价报价计算器 ===== */
.calc-wrap {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 360px;
  gap: 24px;
  align-items: start;
}

.calc-section {
  background: var(--bg-secondary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  padding: 20px 24px;
  margin-bottom: 20px;
}

.calc-section h3 {
  font-size: 15px;
  font-weight: 600;
  color: var(--accent-cyan);
  margin-bottom: 16px;
}

.calc-section .form-row { margin-bottom: 0; }
.calc-section .form-group { margin-bottom: 14px; }
.calc-section .form-group:last-child { margin-bottom: 0; }

.calc-field-hint {
  font-size: 12px;
  color: var(--text-muted);
  margin-top: 4px;
  line-height: 1.5;
}

.calc-input-hint {
  font-size: 12px;
  color: var(--text-muted);
  margin-top: 6px;
  line-height: 1.5;
}

.calc-source-tip {
  display: none;
  font-size: 12px;
  color: var(--accent-cyan);
  background: var(--success-soft);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  padding: 6px 10px;
  margin-top: 8px;
  line-height: 1.5;
}
.calc-source-tip.show { display: block; }

/* 国补资格提示：OK=绿色 / WARN=黄色 */
.calc-subsidy-tip {
  display: none;
  font-size: 12px;
  border-radius: var(--radius-sm);
  padding: 8px 12px;
  margin: 4px 0 10px;
  line-height: 1.55;
  border-left: 3px solid transparent;
}
.calc-subsidy-tip--ok {
  display: block;
  color: var(--success);
  background: var(--success-soft);
  border-left-color: var(--success);
}
.calc-subsidy-tip--warn {
  display: block;
  color: var(--warning);
  background: rgba(186, 117, 23, 0.08);
  border-left-color: var(--warning);
}

.calc-radio-disabled {
  opacity: 0.45;
  cursor: not-allowed;
  pointer-events: none;
}

.calc-tip {
  font-size: 12px;
  color: var(--warning);
  background: rgba(255, 171, 64, 0.08);
  border: 1px solid rgba(255, 171, 64, 0.25);
  border-radius: var(--radius-sm);
  padding: 8px 12px;
  margin-top: 8px;
  line-height: 1.5;
}

.calc-scenario {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 14px;
}

.calc-radio {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--text-primary);
  background: var(--bg-tertiary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  padding: 8px 14px;
  cursor: pointer;
  transition: var(--transition);
}

.calc-radio:hover { border-color: var(--accent-cyan); }

.calc-radio input { accent-color: var(--accent-cyan); cursor: pointer; }

.calc-radio:has(input:checked) {
  border-color: var(--accent-cyan);
  background: rgba(0, 212, 255, 0.08);
  color: var(--accent-cyan);
}

.calc-result-col { position: sticky; top: 84px; }

.calc-result-card {
  background: var(--bg-secondary);
  border: 1px solid var(--border-light);
  border-radius: var(--radius-lg);
  padding: 24px;
  box-shadow: var(--shadow-card);
}

.calc-result-label {
  font-size: 13px;
  color: var(--text-secondary);
  margin-bottom: 6px;
}

.calc-result-num {
  font-size: 34px;
  font-weight: 700;
  background: var(--gradient-primary);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  line-height: 1.2;
  word-break: break-all;
}

.calc-result-sub {
  font-size: 12px;
  color: var(--text-muted);
  margin: 8px 0 16px;
  line-height: 1.5;
}

.calc-breakdown { width: 100%; border-collapse: collapse; }

.calc-breakdown td {
  font-size: 13px;
  padding: 7px 0;
  border-bottom: 1px dashed var(--border-color);
}

.calc-breakdown td:first-child { color: var(--text-secondary); }
.calc-breakdown td:last-child { text-align: right; color: var(--text-primary); font-variant-numeric: tabular-nums; }

.calc-breakdown .calc-neg td:last-child { color: var(--success); }

.calc-breakdown .calc-total-row td {
  border-bottom: none;
  border-top: 1px solid var(--border-light);
  font-weight: 600;
  color: var(--accent-cyan);
  padding-top: 12px;
}

.calc-disclaimer {
  font-size: 11px;
  color: var(--text-muted);
  margin-top: 14px;
  line-height: 1.6;
}

/* —— v21：报价长图预览 —— */
.calc-image-preview {
  margin-top: 14px;
  text-align: center;
}
.calc-image-preview canvas {
  max-width: 100%;
  border: 1px solid var(--border-light);
  border-radius: 12px;
  box-shadow: var(--shadow-card);
}

.btn-quote {
  margin-top: 14px;
  padding: 10px 22px;
  font-size: 14px;
  font-weight: 600;
  color: #fff;
  background: linear-gradient(135deg, #ff6b35 0%, #ff9800 100%);
  border: none;
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: var(--transition);
}

.btn-quote:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(255, 107, 53, 0.35); }

@media (max-width: 960px) {
  .calc-wrap { grid-template-columns: 1fr; }
  .calc-result-col { position: static; }
}

/* 计算器下拉选择样式（补齐 select 与 input 一致外观） */
.form-group select {
  width: 100%;
  padding: 10px 14px;
  background: var(--bg-tertiary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  font-size: 14px;
  color: var(--text-primary);
  outline: none;
  transition: var(--transition);
  cursor: pointer;
}

.form-group select:focus {
  border-color: var(--accent-cyan);
  box-shadow: 0 0 0 3px rgba(0, 212, 255, 0.1);
}

.form-group select option { background: var(--bg-tertiary); color: var(--text-primary); }

.form-row .form-group { margin-bottom: 14px; }

/* ===== 批量数据上传 ===== */
.upload-section {
  max-width: 720px;
}

.upload-step {
  margin-bottom: 28px;
}

.upload-step-label {
  display: block;
  font-size: 14px;
  font-weight: 600;
  color: var(--accent-cyan);
  margin-bottom: 10px;
}

.upload-select {
  width: 100%;
  max-width: 400px;
  padding: 10px 14px;
  background: var(--bg-tertiary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  font-size: 14px;
  color: var(--text-primary);
  outline: none;
  cursor: pointer;
  transition: var(--transition);
}

.upload-select:focus {
  border-color: var(--accent-cyan);
  box-shadow: 0 0 0 3px rgba(0, 212, 255, 0.1);
}

.upload-modes {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.upload-radio {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: 13px;
  color: var(--text-primary);
  background: var(--bg-tertiary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-sm);
  padding: 12px 16px;
  cursor: pointer;
  transition: var(--transition);
}

.upload-radio:hover { border-color: var(--accent-cyan); }

.upload-radio input {
  margin-top: 3px;
  accent-color: var(--accent-cyan);
  cursor: pointer;
}

.upload-radio:has(input:checked) {
  border-color: var(--accent-cyan);
  background: rgba(0, 212, 255, 0.08);
}

.upload-field-hint {
  font-size: 12px;
  color: var(--text-muted);
  margin-bottom: 10px;
  line-height: 1.8;
}

.upload-field-hint code {
  display: inline-block;
  background: var(--bg-tertiary);
  border: 1px solid var(--border-color);
  border-radius: 3px;
  padding: 1px 6px;
  margin: 2px 2px;
  font-size: 11px;
  color: var(--text-secondary);
}

.upload-note {
  display: block;
  margin-top: 6px;
  color: var(--warning);
}

.upload-drop-zone {
  border: 2px dashed var(--border-color);
  border-radius: var(--radius-md);
  padding: 36px 20px;
  text-align: center;
  cursor: pointer;
  transition: var(--transition);
  background: var(--bg-tertiary);
}

.upload-drop-zone:hover { border-color: var(--accent-cyan); }

.upload-drop-zone.drag-over {
  border-color: var(--accent-cyan);
  background: rgba(0, 212, 255, 0.08);
}

.upload-drop-icon { font-size: 36px; margin-bottom: 8px; }
.upload-drop-zone p { font-size: 13px; color: var(--text-secondary); margin: 8px 0; }

.upload-pick-btn { margin-top: 8px; }

.upload-file-info {
  margin-top: 12px;
  padding: 10px 14px;
  background: rgba(0, 212, 255, 0.06);
  border: 1px solid rgba(0, 212, 255, 0.2);
  border-radius: var(--radius-sm);
  font-size: 13px;
  color: var(--text-primary);
}

.upload-clear-btn {
  background: none;
  border: none;
  color: var(--warning);
  cursor: pointer;
  font-size: 12px;
  margin-left: 8px;
  text-decoration: underline;
}

.upload-submit-btn {
  padding: 12px 32px;
  font-size: 15px;
}

.upload-submit-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.upload-template-link {
  display: inline-block;
  margin-left: 16px;
  font-size: 13px;
  color: var(--accent-cyan);
  text-decoration: none;
  border-bottom: 1px dashed var(--accent-cyan);
  cursor: pointer;
}

.upload-template-link:hover { opacity: 0.8; }

.upload-result {
  margin-top: 20px;
  padding: 20px;
  border-radius: var(--radius-md);
  text-align: center;
}

.upload-result.upload-success {
  background: rgba(76, 217, 100, 0.08);
  border: 1px solid rgba(76, 217, 100, 0.3);
}

.upload-result.upload-error {
  background: rgba(255, 99, 99, 0.08);
  border: 1px solid rgba(255, 99, 99, 0.3);
}

.upload-result.upload-loading {
  background: var(--bg-tertiary);
  border: 1px solid var(--border-color);
}

.upload-result-icon { font-size: 32px; margin-bottom: 8px; }
.upload-result h4 { font-size: 16px; margin-bottom: 12px; }

.upload-result-stats {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px 20px;
  font-size: 13px;
  color: var(--text-secondary);
}

.upload-result-stats strong { color: var(--text-primary); }

.upload-backup-info {
  margin-top: 12px;
  font-size: 12px;
  color: var(--text-muted);
}

.upload-headers-debug {
  margin-top: 10px;
  font-size: 12px;
  color: var(--text-muted);
  word-break: break-all;
}

.upload-spinner {
  width: 28px;
  height: 28px;
  border: 3px solid var(--border-color);
  border-top-color: var(--accent-cyan);
  border-radius: 50%;
  margin: 0 auto 12px;
  animation: spin 0.8s linear infinite;
}

@keyframes spin { to { transform: rotate(360deg); } }

/* ===== 客服数据智能问答 ===== */
.im-messages {
  max-height: calc(100vh - 280px);
  min-height: 300px;
  overflow-y: auto;
  padding: 16px 0;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.im-welcome {
  text-align: center;
  padding: 40px 20px;
}

.im-welcome-icon { font-size: 48px; margin-bottom: 12px; }
.im-welcome h3 { font-size: 18px; color: var(--text-primary); margin-bottom: 8px; }
.im-welcome p { font-size: 13px; color: var(--text-muted); margin-bottom: 20px; }

.im-suggestions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  max-width: 600px;
  margin: 0 auto;
}

.im-suggestion-chip {
  background: var(--bg-tertiary);
  border: 1px solid var(--border-color);
  border-radius: 20px;
  padding: 8px 16px;
  font-size: 13px;
  color: var(--text-secondary);
  cursor: pointer;
  transition: var(--transition);
}

.im-suggestion-chip:hover {
  border-color: var(--accent-cyan);
  color: var(--accent-cyan);
  background: rgba(0, 212, 255, 0.08);
}

/* v65.16：数据源切换器 */
.im-ds-bar {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  margin: 0 auto 10px;
  max-width: 600px;
}
.im-ds-label {
  font-size: 13px;
  color: var(--text-muted);
}
.im-ds-switch {
  display: inline-flex;
  background: var(--bg-tertiary);
  border: 1px solid var(--border-color);
  border-radius: 20px;
  padding: 3px;
  gap: 2px;
}
.im-ds-btn {
  border: none;
  background: transparent;
  border-radius: 16px;
  padding: 6px 14px;
  font-size: 13px;
  color: var(--text-secondary);
  cursor: pointer;
  transition: var(--transition);
  white-space: nowrap;
}
.im-ds-btn:hover { color: var(--accent-cyan); }
.im-ds-btn.active {
  background: var(--gradient-primary);
  color: #fff;
}
.im-ds-tag {
  display: inline-block;
  margin-left: 8px;
  padding: 1px 8px;
  border-radius: 10px;
  font-size: 11px;
  background: rgba(255, 255, 255, 0.22);
  vertical-align: middle;
}
.im-ds-tag-bot {
  margin: 0 0 8px;
  background: var(--bg-tertiary);
  border: 1px solid var(--border-color);
  color: var(--text-muted);
}

.im-msg { display: flex; }
.im-msg-user { justify-content: flex-end; }
.im-msg-bot { justify-content: flex-start; }

.im-msg-bubble {
  max-width: 80%;
  padding: 12px 16px;
  border-radius: var(--radius-md);
  font-size: 14px;
  line-height: 1.6;
  word-break: break-word;
}

.im-msg-user .im-msg-bubble {
  background: var(--gradient-primary);
  color: #fff;
  border-radius: var(--radius-md) var(--radius-md) 4px var(--radius-md);
}

.im-msg-bot .im-msg-bubble {
  background: var(--bg-secondary);
  border: 1px solid var(--border-color);
  color: var(--text-primary);
  border-radius: var(--radius-md) var(--radius-md) var(--radius-md) 4px;
}

.im-msg-loading {
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--text-muted);
}

.im-spinner {
  width: 18px;
  height: 18px;
  border: 2px solid var(--border-color);
  border-top-color: var(--accent-cyan);
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}

.im-msg-error { color: #ff6b6b; }

.im-msg-answer { padding: 0; background: none !important; border: none !important; max-width: 90%; }

.im-understanding {
  font-size: 12px;
  color: var(--text-muted);
  margin-bottom: 8px;
  font-style: italic;
}

.im-text-answer {
  font-size: 14px;
  color: var(--text-primary);
  margin-bottom: 12px;
  line-height: 1.7;
}

/* v65.16h：气泡是收缩盒，width:100% 会让图表容器没有固有宽度、跟着文字宽度缩成一条——必须给固定宽度 */
.im-chart-container {
  width: 640px;
  max-width: 100%;
  height: 350px;
  margin-top: 8px;
}

.im-table-wrap {
  overflow-x: auto;
  margin-top: 8px;
  border-radius: var(--radius-sm);
  border: 1px solid var(--border-color);
}

.im-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

.im-table th {
  background: var(--bg-tertiary);
  color: var(--accent-cyan);
  font-weight: 600;
  padding: 8px 12px;
  text-align: left;
  white-space: nowrap;
  border-bottom: 1px solid var(--border-color);
}

.im-table td {
  padding: 7px 12px;
  color: var(--text-secondary);
  border-bottom: 1px solid var(--border-color);
}

.im-table tbody tr:last-child td { border-bottom: none; }
.im-table tbody tr:hover td { background: rgba(0, 212, 255, 0.04); }

.im-input-bar {
  display: flex;
  gap: 10px;
  padding: 14px 0 0;
  border-top: 1px solid var(--border-color);
  margin-top: 8px;
}

.im-input {
  flex: 1;
  padding: 12px 16px;
  background: var(--bg-tertiary);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-md);
  font-size: 14px;
  color: var(--text-primary);
  outline: none;
  transition: var(--transition);
}

.im-input:focus {
  border-color: var(--accent-cyan);
  box-shadow: 0 0 0 3px rgba(0, 212, 255, 0.1);
}

.im-send-btn {
  padding: 12px 28px;
  font-size: 14px;
  font-weight: 600;
  white-space: nowrap;
}

.im-send-btn:disabled { opacity: 0.5; cursor: not-allowed; }

@media (max-width: 768px) {
  .im-chart-container { height: 280px; }
  .im-msg-bubble { max-width: 92%; }
}

/* ===== v20：行情查询（车行168）===== */
.btn-danger {
  background: #fff;
  color: var(--error, #c0392b);
  border: 1px solid var(--error, #c0392b);
  padding: 9px 18px;
  border-radius: 8px;
  cursor: pointer;
  font-size: 14px;
  transition: all .2s;
}
.btn-danger:hover { background: var(--error, #c0392b); color: #fff; }

.market-source-tag {
  font-size: 12px; font-weight: normal; color: var(--text-muted, #888);
  background: rgba(0,0,0,.05); padding: 2px 10px; border-radius: 10px; margin-left: 10px;
  vertical-align: middle;
}
.market-tip {
  color: var(--text-muted, #888); font-size: 13px; margin-bottom: 12px; line-height: 1.7;
}
.market-sort-select {
  padding: 9px 12px; border: 1px solid var(--border, #d9d9d9); border-radius: 8px;
  font-size: 14px; background: #fff; color: var(--text, #333); cursor: pointer;
}
.market-status-bar {
  margin: 4px 0 14px; padding: 10px 14px; border-radius: 8px; font-size: 13px;
  background: #f7f7f7; border: 1px solid var(--border, #e5e5e5);
}
.market-ok { color: #1e8e3e; font-weight: 500; }
.market-warn { color: #b26a00; font-weight: 500; }
.market-meta { color: var(--text-muted, #888); font-size: 13px; margin: 6px 0 14px; }
.market-meta a { color: var(--primary, #1a66ff); }

.market-list { display: flex; flex-direction: column; gap: 10px; }
.market-card {
  display: flex; gap: 16px; align-items: center;
  background: #fff; border: 1px solid var(--border, #e8e8e8); border-radius: 10px;
  padding: 14px 16px; box-shadow: 0 1px 2px rgba(0,0,0,.03);
}
.market-card-left { min-width: 130px; text-align: left; }
.market-price-main { font-size: 24px; font-weight: 700; color: #c0392b; line-height: 1.2; }
.market-price-unit { font-size: 13px; font-weight: normal; color: #c0392b; margin-left: 2px; }
.market-price-none { color: #888; font-size: 18px; font-weight: 500; }
.market-price-tag {
  display: inline-block; margin-top: 4px; font-size: 11px; color: #c0392b;
  background: rgba(192,57,43,.08); padding: 1px 8px; border-radius: 8px;
}
.market-card-mid { flex: 1; min-width: 0; }
.market-title { font-size: 15px; font-weight: 600; color: var(--text, #222); margin-bottom: 5px; }
.market-sub { font-size: 13px; color: #666; margin: 2px 0; line-height: 1.5; }
.market-meta-row { margin-top: 6px; display: flex; gap: 16px; flex-wrap: wrap; }
.market-loc { font-size: 12px; color: var(--text-muted, #888); }
.market-time { font-size: 12px; color: var(--text-muted, #888); }
.market-card-right { flex-shrink: 0; }
.market-detail-btn { white-space: nowrap; }
.market-cookie-input {
  width: 100%; resize: vertical; font-family: Consolas, Monaco, monospace;
  font-size: 12px; line-height: 1.6; color: #555;
}

/* ===== v22：首页实时计数条（v22.2 改版：跟随主题变量 + 放大体量） ===== */
.rt-counter-bar {
  position: sticky;
  top: 0;
  z-index: 90;
  display: flex;
  align-items: stretch;
  background: color-mix(in srgb, var(--bg-elevated) 92%, transparent);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid var(--border-color);
  border-radius: var(--radius-lg);
  padding: 22px 16px;
  margin-bottom: 26px;
  box-shadow: var(--shadow-card);
}
.rt-cell { flex: 1; text-align: center; padding: 0 10px; min-width: 0; }
.rt-cell-wide { flex: 1.4; }
.rt-label {
  font-size: 13px; color: var(--text-muted); letter-spacing: 1px;
  margin-bottom: 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.rt-value { font-family: Consolas, 'Courier New', monospace; font-size: 30px; font-weight: 700; line-height: 1.15; }
.rt-time { color: var(--accent-blue); }
.rt-dom { color: var(--success); }
.rt-exp { color: var(--warning); }
.rt-unit { font-size: 13px; font-weight: 400; color: var(--text-secondary); margin-left: 6px; }
.rt-divider { width: 1px; background: var(--border-light); opacity: 0.6; }
@media (max-width: 768px) {
  .rt-counter-bar { padding: 12px 6px; margin-bottom: 14px; }
  .rt-value { font-size: 18px; }
  .rt-label { font-size: 10px; }
  .rt-unit { font-size: 10px; }
}

/* ===== v22：海报工坊（场景一 门店活动海报） ===== */
.poster-wrap {
  display: grid;
  grid-template-columns: minmax(340px, 460px) 1fr;
  gap: 24px;
  align-items: start;
}
.poster-form-col { display: flex; flex-direction: column; gap: 18px; }
.poster-optional-tag {
  font-size: 12px; font-weight: 400; color: var(--text-muted);
  background: var(--bg-tertiary); border-radius: 10px; padding: 3px 10px; margin-left: 8px;
}
.poster-count-hint { font-size: 12px; font-weight: 400; color: var(--text-muted); margin-left: 6px; }
.form-group textarea {
  width: 100%; box-sizing: border-box; padding: 10px 14px; font-size: 14px; font-family: inherit;
  color: var(--text-primary); background: var(--bg-tertiary);
  border: 1px solid var(--border-color); border-radius: var(--radius-sm); outline: none; resize: vertical;
}
.form-group textarea::placeholder { color: var(--text-muted); }
.form-group textarea:focus { border-color: var(--accent-blue); box-shadow: 0 0 0 3px rgba(0, 102, 255, 0.15); }
.poster-style-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
}
.poster-style-card {
  position: relative;
  border: 2px solid var(--border-color); border-radius: var(--radius-md); overflow: hidden; cursor: pointer;
  background: var(--bg-secondary); transition: var(--transition);
}
.poster-bg-del {
  position: absolute; top: 6px; right: 6px; width: 22px; height: 22px; border-radius: 50%;
  background: #B22D3D; color: #fff; display: flex; align-items: center; justify-content: center;
  font-size: 14px; line-height: 1; cursor: pointer; z-index: 2;
}
.poster-bg-del:hover { background: #8f1f2c; }
.poster-style-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-hover); }
.poster-style-card.selected { border-color: var(--accent-blue); box-shadow: 0 0 0 3px rgba(0, 102, 255, 0.2); }
.poster-style-card img { display: block; width: 100%; aspect-ratio: 4/3; object-fit: cover; }
.poster-style-meta {
  display: flex; align-items: center; justify-content: space-between;
  padding: 6px 8px; font-size: 12px; color: var(--text-primary);
}
.poster-style-tag { font-size: 10px; padding: 1px 6px; border-radius: 8px; }
.poster-tag-通用 { background: rgba(0, 102, 255, 0.12); color: var(--accent-blue); }
.poster-tag-节日 { background: rgba(245, 158, 11, 0.18); color: #d97706; }
.poster-actions { display: flex; gap: 12px; }
/* v50 画布粘性跟随：滚动左侧面板时预览始终可见，添加文本框/图标后立刻能拖 */
.poster-preview-col { display: flex; flex-direction: column; gap: 10px; position: sticky; top: 84px; }
.poster-preview-box {
  border: 1px solid var(--border-color); border-radius: var(--radius-lg); overflow: hidden;
  background: var(--bg-tertiary); box-shadow: var(--shadow-card);
}
.poster-preview-box canvas { display: block; width: 100%; height: auto; }
.poster-preview-tip { font-size: 12px; color: var(--text-muted); text-align: center; margin: 0; }
@media (max-width: 1024px) {
  .poster-wrap { grid-template-columns: 1fr; }
  .poster-style-grid { grid-template-columns: repeat(6, 1fr); }
  .poster-preview-col { position: static; } /* 窄屏单列布局下取消粘性 */
}
@media (max-width: 768px) {
  .poster-style-grid { grid-template-columns: repeat(3, 1fr); }
  .poster-actions { flex-direction: column; }
}

/* ===== 海报工坊：标题字体选择（web 字体嵌入，客户端无需安装） ===== */
@font-face {
  font-family: 'YouSheBiaoTiHei';
  src: url('/fonts/YouSheBiaoTiHei.ttf') format('truetype');
  font-display: swap;
}
@font-face {
  font-family: 'ZcoolKuaile';
  src: url('/fonts/ZcoolKuaile.ttf') format('truetype');
  font-display: swap;
}
/* v48 自由排版新增电商字体（均 OFL 免费可商用） */
@font-face {
  font-family: 'ZcoolQingKeHuangYou';
  src: url('/fonts/ZcoolQingKeHuangYou.ttf') format('truetype');
  font-display: swap;
}
@font-face {
  font-family: 'ZcoolXiaoWei';
  src: url('/fonts/ZcoolXiaoWei.ttf') format('truetype');
  font-display: swap;
}
@font-face {
  font-family: 'MaShanZheng';
  src: url('/fonts/MaShanZheng.ttf') format('truetype');
  font-display: swap;
}

/* ===== v48 海报自由排版：模式切换 + 文本图层编辑器 ===== */
.poster-mode-toggle {
  display: inline-flex;
  border: 1px solid var(--border-color, #ddd);
  border-radius: 10px;
  overflow: hidden;
}
.poster-mode-btn {
  padding: 10px 22px;
  cursor: pointer;
  font-size: 14px;
  background: var(--card-bg, #fff);
  color: var(--text-color, #333);
  transition: all 0.15s;
  user-select: none;
}
.poster-mode-btn.selected {
  background: #2E5CF6;
  color: #fff;
}
.poster-free-editor {
  margin-top: 14px;
  padding: 14px;
  border: 1px dashed var(--border-color, #ddd);
  border-radius: 12px;
  background: var(--card-bg, #fafafa);
}
#poster-canvas.free-mode { cursor: crosshair; }
#poster-canvas.layer-dragging { cursor: grabbing; }
#poster-free-text {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid var(--border-color, #ddd);
  border-radius: 10px;
  background: var(--card-bg, #fff);
  color: var(--text-color, #333);
  font-size: 14px;
  line-height: 1.6;
  resize: vertical;
  box-sizing: border-box;
}
#poster-free-stroke {
  width: 34px;
  height: 34px;
  padding: 0;
  border: 1px solid var(--border-color, #ddd);
  border-radius: 8px;
  background: none;
  cursor: pointer;
}
#poster-free-icon-grid .poster-font-chip { display: flex; align-items: center; justify-content: center; }
#poster-free-icon-grid .poster-font-chip.selected { border-color: #2E5CF6; }
.poster-font-grid {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}
.poster-font-chip {
  padding: 10px 20px;
  border: 1px solid var(--border-color, #ddd);
  border-radius: 10px;
  background: var(--card-bg, #fff);
  color: var(--text-color, #333);
  cursor: pointer;
  font-size: 14px;
  transition: all 0.15s;
  user-select: none;
}
.poster-font-chip:hover { border-color: var(--accent-blue, #4C6BF5); }
.poster-font-chip.selected {
  border-color: var(--accent-blue, #4C6BF5);
  background: rgba(76, 107, 245, 0.08);
  color: var(--accent-blue, #4C6BF5);
  font-weight: 600;
}

/* ===== 海报工坊：管理员专属标题颜色/字号 ===== */
.poster-color-row {
  display: flex;
  gap: 10px;
  align-items: center;
  flex-wrap: wrap;
}
.poster-color-chip {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border: 2px solid var(--border-color, #ddd);
  cursor: pointer;
  transition: all 0.15s;
}
.poster-color-chip:hover { transform: scale(1.1); }
.poster-color-chip.selected {
  border-color: var(--accent-blue, #4C6BF5);
  box-shadow: 0 0 0 2px rgba(76, 107, 245, 0.25);
}
#poster-color-custom {
  width: 34px;
  height: 34px;
  padding: 0;
  border: 2px solid var(--border-color, #ddd);
  border-radius: 50%;
  background: none;
  cursor: pointer;
}
#poster-size-range { width: 100%; accent-color: var(--accent-blue, #4C6BF5); }
.poster-range { width: 100%; accent-color: var(--accent-blue, #4C6BF5); margin-top: 8px; }

/* ===== 场景二：车型卡片 ===== */
.card-roi-actions {
  display: flex;
  gap: 10px;
  margin-top: 12px;
}
/* 车型卡片抠图进度条 */
.card-matting-progress { margin-top: 12px; }
.card-mp-track {
  height: 8px;
  border-radius: 6px;
  background: #e8ecf4;
  overflow: hidden;
}
.card-mp-fill {
  height: 100%;
  width: 0;
  border-radius: 6px;
  background: linear-gradient(90deg, #4c6bf5, #6a8bff);
  transition: width .25s ease;
  position: relative;
  overflow: hidden;
}
.card-mp-fill::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.4), transparent);
  animation: cardMpShimmer 1.1s linear infinite;
}
@keyframes cardMpShimmer {
  from { transform: translateX(-100%); }
  to { transform: translateX(100%); }
}
.card-mp-text { margin: 6px 0 0; font-size: 12px; color: #5a6478; flex: 1; }
.card-mp-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.card-mp-row .card-mp-text { margin: 0; }
.card-matting-progress.mp-done .card-mp-cancel,
.card-matting-progress.mp-fail .card-mp-cancel,
.card-matting-progress.mp-cancelled .card-mp-cancel { display: none; }
.card-matting-progress.mp-cancelled .card-mp-fill { background: #98a2b3; }
.card-matting-progress.mp-cancelled .card-mp-fill::after { display: none; }
.card-matting-progress.mp-cancelled .card-mp-text { color: #667085; }
.card-matting-progress.mp-done .card-mp-fill { background: #34b96f; }
.card-matting-progress.mp-done .card-mp-fill::after { display: none; }
.card-matting-progress.mp-done .card-mp-text { color: #2c9a5c; }
.card-matting-progress.mp-fail .card-mp-fill { background: #e5484d; }
.card-matting-progress.mp-fail .card-mp-fill::after { display: none; }
.card-matting-progress.mp-fail .card-mp-text { color: #c73840; }
.btn-sm {
  padding: 8px 18px;
  font-size: 14px;
}
#card-roi-canvas {
  border: 1px solid var(--border-color, #ddd);
  border-radius: 8px;
  background: #f5f5f5;
}

/* ===== v55：客服话术库 ===== */
.cs-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  margin-bottom: 16px;
}
.cs-cats {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  flex: 1;
  min-width: 260px;
}
.cs-chip {
  padding: 7px 14px;
  border-radius: 999px;
  border: 1px solid var(--border-color, #ddd);
  background: var(--bg-elevated, #fff);
  color: var(--text-primary, #333);
  font-size: 14px;
  cursor: pointer;
  user-select: none;
  transition: all .15s;
}
.cs-chip:hover { border-color: var(--accent-blue, #0066ff); }
.cs-chip.active {
  background: var(--accent-blue, #0066ff);
  border-color: var(--accent-blue, #0066ff);
  color: #fff;
}
.cs-chip-n {
  opacity: .65;
  font-size: 12px;
  margin-left: 2px;
}
.cs-search-input {
  max-width: 480px;
  min-width: 260px;
  flex: 1;
  height: 42px;
  font-size: 15px;
  padding: 8px 14px;
}
.cs-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
  gap: 14px;
}
.cs-item {
  background: var(--bg-elevated, #fff);
  border: 1px solid var(--border-color, #e3e8f0);
  border-radius: 12px;
  padding: 14px 16px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.cs-item-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 8px;
}
.cs-item-title { font-weight: 600; font-size: 15px; color: var(--text-primary, #222); }
.cs-item-cat {
  font-size: 12px;
  color: var(--accent-blue, #0066ff);
  white-space: nowrap;
}
.cs-item-scene { font-size: 12.5px; color: var(--text-secondary, #7a8699); }
.cs-item-text {
  font-size: 14px;
  line-height: 1.7;
  color: var(--text-primary, #333);
  white-space: pre-wrap;
}
.cs-ph {
  color: var(--accent-blue, #0066ff);
  font-weight: 600;
  background: color-mix(in srgb, var(--accent-blue, #0066ff) 10%, transparent);
  border-radius: 4px;
  padding: 0 3px;
}
.cs-item-action {
  font-size: 12.5px;
  color: #b8860b;
  background: color-mix(in srgb, #ffc850 18%, transparent);
  border-radius: 6px;
  padding: 5px 8px;
}
.cs-item-foot { display: flex; justify-content: flex-end; }
.cs-empty {
  grid-column: 1 / -1;
  text-align: center;
  color: var(--text-secondary, #999);
  padding: 40px 0;
}
.cs-copy-toast {
  position: fixed;
  top: 72px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--success, #22c55e);
  color: #fff;
  padding: 8px 22px;
  border-radius: 999px;
  font-size: 14px;
  box-shadow: 0 4px 16px rgba(0,0,0,.18);
  z-index: 999;
}
.cs-admin-cat-row {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-bottom: 8px;
  flex-wrap: wrap;
}
.cs-admin-item {
  border: 1px solid var(--border-color, #e3e8f0);
  border-radius: 10px;
  padding: 12px;
  margin-bottom: 12px;
}
.cs-admin-item-row {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

/* ===== v57：访问统计 ===== */
.vs-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}
.vs-card {
  background: var(--bg-elevated, #fff);
  border: 1px solid var(--border-color, #e3e8f0);
  border-radius: 12px;
  padding: 14px 16px;
}
.vs-card-label {
  font-size: 13px;
  color: var(--text-secondary, #7a8699);
  margin-bottom: 6px;
}
.vs-card-num {
  font-size: 28px;
  font-weight: 700;
  color: var(--text-primary, #222);
  font-variant-numeric: tabular-nums;
}
.vs-chart { width: 100%; height: 320px; }
.vs-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 12px;
  font-size: 14px;
}
.vs-table th, .vs-table td {
  text-align: left;
  padding: 8px 10px;
  border-bottom: 1px solid var(--border-color, #eee);
}
.vs-table th { color: var(--text-secondary, #7a8699); font-weight: 600; }
.vs-table td:nth-child(2), .vs-table td:nth-child(3),
.vs-table th:nth-child(2), .vs-table th:nth-child(3) {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

/* ===== 卡片工坊（v65.11） ===== */
.mf-topbar { display:flex; gap:18px; flex-wrap:wrap; align-items:flex-end; background:var(--panel-bg,#fff); border:1px solid var(--border-light,#e5e7eb); border-radius:12px; padding:12px 16px; margin-bottom:14px; }
.mf-tb-group { display:flex; flex-direction:column; gap:4px; }
.mf-tb-group > label { font-size:12px; color:var(--text-muted,#888); }
.mf-tb-group select, .mf-tb-group input[type="number"] { font-size:13px; padding:6px 8px; }
.mf-color-input { width:42px; height:32px; padding:2px; border:1px solid var(--border-light,#e5e7eb); border-radius:8px; background:transparent; cursor:pointer; }
.mf-workspace { display:grid; grid-template-columns:250px 1fr 290px; gap:14px; align-items:start; }
.mf-left, .mf-right { display:flex; flex-direction:column; gap:12px; }
.mf-center { background:var(--bg-main,#f2f4f8); border:1px solid var(--border-light,#e5e7eb); border-radius:12px; min-height:420px; display:flex; align-items:center; justify-content:center; padding:24px; overflow:auto; }
.mf-stage { position:relative; box-shadow:0 4px 24px rgba(0,0,0,.12); flex-shrink:0; }
.mf-stage canvas { display:block; }
#cs-overlays { position:absolute; left:0; top:0; right:0; bottom:0; }
.mf-ov { position:absolute; border:1px dashed rgba(79,150,255,.0); cursor:move; }
.mf-ov:hover { border-color:rgba(79,150,255,.55); }
.mf-ov.selected { border:1.5px solid #4F96FF; background:rgba(79,150,255,.06); }
.mf-handle { position:absolute; width:14px; height:14px; background:#fff; border:2px solid #4F96FF; border-radius:4px; cursor:nwse-resize; z-index:5; box-shadow:0 1px 4px rgba(0,0,0,.25); }
#cs-guides { position:absolute; left:0; top:0; pointer-events:none; }
.mf-guide-v { position:absolute; top:0; bottom:0; width:0; border-left:1.5px dashed rgba(255,222,89,.85); }
.mf-guide-h { position:absolute; left:0; right:0; height:0; border-top:1.5px dashed rgba(255,222,89,.85); }
.mf-guide-tag { position:absolute; font-size:10px; color:#12173A; background:rgba(255,222,89,.92); padding:1px 5px; border-radius:4px; white-space:nowrap; }
.mf-guide-v .mf-guide-tag { top:2px; left:3px; }
.mf-guide-h .mf-guide-tag { left:2px; top:-9px; }
.mf-layer-list { display:flex; flex-direction:column; gap:4px; max-height:300px; overflow:auto; }
.mf-layer-row { display:flex; justify-content:space-between; align-items:center; gap:6px; padding:6px 8px; border:1px solid var(--border-light,#e5e7eb); border-radius:8px; cursor:pointer; font-size:13px; background:var(--panel-bg,#fff); }
.mf-layer-row.selected { border-color:#4F96FF; background:rgba(79,150,255,.08); }
.mf-layer-row.hiddened { opacity:.45; }
.mf-layer-name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mf-layer-ops { display:flex; gap:2px; flex-shrink:0; }
.mf-layer-ops button { border:none; background:transparent; cursor:pointer; font-size:12px; padding:2px 4px; border-radius:4px; color:var(--text-main,#333); }
.mf-layer-ops button:hover { background:rgba(79,150,255,.15); }
.btn-secondary.selected { border-color:#4F96FF; color:#4F96FF; background:rgba(79,150,255,.08); }
@media (max-width: 1100px) { .mf-workspace { grid-template-columns:1fr; } }

/* ===== 卡片工坊 v65.12：主卡选择器 + 落位参考区 ===== */
.mf-picker { position: relative; }
.mf-picker-btn { min-width: 230px; text-align: left; cursor: pointer; }
.mf-picker-menu {
  position: absolute; top: calc(100% + 6px); left: 0; z-index: 60;
  min-width: 280px; max-height: 480px; overflow-y: auto;
  background: var(--bg-card, #fff); border: 1px solid var(--border, #e0e4f0);
  border-radius: 10px; box-shadow: 0 10px 32px rgba(20, 24, 60, .18); padding: 6px;
}
.mf-pk-card { position: relative; border-radius: 8px; }
.mf-pk-card + .mf-pk-card { margin-top: 2px; }
.mf-pk-card-row {
  display: flex; align-items: center; justify-content: space-between;
  padding: 9px 12px; cursor: pointer; border-radius: 8px; font-weight: 600; font-size: 13px;
}
.mf-pk-card-row:hover { background: rgba(90, 120, 255, .10); }
.mf-pk-card-name { color: var(--text, #1c2340); }
.mf-pk-arrow { color: var(--text-muted, #8a90b8); font-size: 16px; }
.mf-pk-hint { padding: 0 12px 8px; font-size: 11px; color: var(--text-muted, #8a90b8); line-height: 1.5; }
.mf-pk-sub { display: none; border-top: 1px dashed var(--border, #e0e4f0); padding: 4px 6px 6px; }
.mf-pk-card.has-sub:hover .mf-pk-sub { display: block; }
.mf-pk-card:not(.has-sub) .mf-pk-sub { display: none; }
.mf-pk-slot {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  padding: 7px 10px; border-radius: 6px; cursor: pointer; font-size: 12.5px;
}
.mf-pk-slot:hover { background: rgba(90, 120, 255, .14); }
.mf-pk-slot-name { color: var(--text, #1c2340); }
.mf-pk-slot-name em { font-style: normal; color: var(--text-muted, #8a90b8); font-size: 11px; margin-left: 6px; }
.mf-pk-badge { font-size: 10px; color: #5B8CFF; border: 1px solid #5B8CFF; border-radius: 8px; padding: 1px 6px; white-space: nowrap; }
.mf-preset-menu { left: auto; right: 0; min-width: 200px; }

/* 落位参考区（虚线框，仅叠加层显示，不导出） */
.mf-zone {
  position: absolute; pointer-events: none;
  border: 1.5px dashed rgba(91, 214, 255, .85);
  background: rgba(91, 214, 255, .07);
  border-radius: 4px;
}
.mf-zone-tag {
  position: absolute; top: 2px; left: 4px;
  font-size: 10px; line-height: 1.4; white-space: nowrap;
  color: #0b1030; background: rgba(91, 214, 255, .9);
  border-radius: 3px; padding: 1px 5px; font-weight: 600;
}

/* 卡片工坊：四角圆角裁切提示 */
.mf-corner {
  position: absolute; pointer-events: none;
  background: rgba(255, 100, 100, .16);
  box-shadow: inset 0 0 0 1.5px rgba(255, 100, 100, .75);
}
.mf-corner-note {
  position: absolute; right: 4px; bottom: 4px; pointer-events: none;
  font-size: 10px; font-weight: 600; white-space: nowrap;
  color: #fff; background: rgba(255, 90, 90, .85);
  border-radius: 3px; padding: 1px 6px;
}

/* ===== v65.15 加微跟进 BI 大屏 ===== */
#bi-lead { padding: 0 !important; }
.bi-wrap { min-height: calc(100vh - 0px); background: radial-gradient(1200px 500px at 20% -10%, #10306a 0%, transparent 60%), radial-gradient(1000px 500px at 90% 110%, #0b2a5e 0%, transparent 55%), linear-gradient(160deg, #06122e 0%, #04122e 45%, #030c22 100%); padding: 18px 22px 14px; }
.bi-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.bi-header-left { display: flex; align-items: center; gap: 14px; }
.bi-header-left h2 { margin: 0; font-size: 22px; letter-spacing: 6px; color: #eaf6ff; text-shadow: 0 0 18px rgba(0,212,255,.65); font-weight: 700; }
.bi-deco { width: 120px; height: 8px; background: linear-gradient(90deg, transparent, #00d4ff); clip-path: polygon(0 40%, 70% 40%, 78% 0, 100% 0, 100% 60%, 30% 60%, 22% 100%, 0 100%); opacity: .85; }
.bi-deco-flip { transform: scaleX(-1); }
.bi-header-right { display: flex; align-items: center; gap: 10px; }
.bi-sub { color: #7fa8d9; font-size: 12px; letter-spacing: 1px; }
.bi-btn { background: rgba(0,212,255,.08) !important; border: 1px solid rgba(0,212,255,.35) !important; color: #9fdcff !important; }
.bi-btn:hover { background: rgba(0,212,255,.18) !important; }
.bi-kpis { display: grid; grid-template-columns: repeat(6, 1fr); gap: 12px; margin-bottom: 12px; }
.bi-kpi { position: relative; background: linear-gradient(150deg, rgba(23,58,118,.55), rgba(9,26,58,.75)); border: 1px solid rgba(0,212,255,.22); border-radius: 10px; padding: 12px 14px; overflow: hidden; }
.bi-kpi::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--accent, #00d4ff); box-shadow: 0 0 12px var(--accent, #00d4ff); }
.bi-kpi::after { content: ''; position: absolute; right: -22px; top: -22px; width: 64px; height: 64px; border-radius: 50%; background: radial-gradient(circle, var(--accent, #00d4ff) 0%, transparent 70%); opacity: .12; }
.bi-kpi-label { color: #8fb6e3; font-size: 12px; letter-spacing: 1px; }
.bi-kpi-val { color: #ffffff; font-size: 30px; font-weight: 700; line-height: 1.25; text-shadow: 0 0 14px var(--accent, #00d4ff); }
.bi-kpi-unit { font-size: 13px; color: #9fc2ee; margin-left: 4px; font-weight: 400; }
.bi-kpi-sub { color: #6f9ccf; font-size: 11px; margin-top: -2px; }
.bi-grid { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: 235px; grid-auto-flow: row dense; gap: 12px; }
.bi-panel { background: linear-gradient(160deg, rgba(16,44,92,.5), rgba(7,22,50,.8)); border: 1px solid rgba(0,212,255,.18); border-radius: 12px; padding: 10px 12px 6px; position: relative; }
.bi-panel::before { content: ''; position: absolute; top: -1px; left: 18px; right: 40%; height: 2px; background: linear-gradient(90deg, transparent, rgba(0,212,255,.75), transparent); }
.bi-panel-title { color: #bfe3ff; font-size: 13px; font-weight: 600; letter-spacing: 2px; margin-bottom: 2px; padding-left: 10px; border-left: 3px solid #00d4ff; line-height: 1.4; }
.bi-chart { width: 100%; height: 196px; }
/* v65.15f 布局（方案三）：漏斗 2×1 矮宽占左上；来源/分类各 1 格同排；宽面板（趋势/时段/榜单/明细）沉底 */
.bi-span-funnel { grid-column: span 2; }
.bi-span2 { grid-column: span 2; }
.bi-span-daily { grid-column: span 2; }
.bi-span-hour { grid-column: span 2; }
.bi-span-recent { grid-column: span 2; }
/* v65.15h 有效咨询分类下钻面板：2 列宽 + 面包屑芯片 */
.bi-span-vcat { grid-column: span 2; }
.bi-vcat-crumb { min-height: 24px; margin: 2px 0 0; display: flex; flex-wrap: wrap; align-items: center; gap: 4px; padding: 0 2px; }
.bi-vcat-crumb:empty { display: none; }
.bi-vcat-chip { background: rgba(0,212,255,.1); border: 1px solid rgba(0,212,255,.3); color: #bfe9ff; font-size: 11px; padding: 2px 10px; border-radius: 10px; cursor: pointer; max-width: 320px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bi-vcat-chip:hover { background: rgba(0,212,255,.22); border-color: rgba(0,212,255,.6); }
.bi-vcat-root { background: rgba(0,230,168,.12); border-color: rgba(0,230,168,.35); color: #a8f0d4; }
.bi-vcat-sep { color: #44618f; font-size: 11px; }
.bi-vcat-chart { height: 172px; }
.bi-table { max-height: 196px; overflow: auto; }
.bi-table table { width: 100%; border-collapse: collapse; }
.bi-table th { text-align: left; color: #8fb6e3; font-size: 11px; font-weight: 600; padding: 6px 10px; border-bottom: 1px solid rgba(0,212,255,.25); background: rgba(0,212,255,.06); position: sticky; top: 0; }
.bi-table td { color: #cfe6ff; font-size: 12px; padding: 6px 10px; border-bottom: 1px solid rgba(120,180,255,.08); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 220px; }
.bi-footnote { color: #55779f; font-size: 11px; margin-top: 10px; line-height: 1.7; }

/* ===== v65.15b BI 大屏：筛选栏 / 配置弹窗 / 演示模式 ===== */
.bi-filters { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; background: rgba(9,26,58,.55); border: 1px solid rgba(0,212,255,.16); border-radius: 10px; padding: 8px 12px; margin-bottom: 12px; }
.bi-f-label { color: #7fa8d9; font-size: 12px; letter-spacing: 2px; }
.bi-f-sep { color: #55779f; }
.bi-f-input { background: rgba(6,18,46,.9); border: 1px solid rgba(0,212,255,.3); color: #d8ecff; border-radius: 6px; padding: 4px 8px; font-size: 12px; outline: none; }
.bi-f-input:focus { border-color: #00d4ff; box-shadow: 0 0 8px rgba(0,212,255,.35); }
.bi-f-input::-webkit-calendar-picker-indicator { filter: invert(.8) sepia(1) saturate(4) hue-rotate(160deg); cursor: pointer; }
select.bi-f-input { min-width: 110px; }
.bi-f-btn { padding: 4px 14px !important; }
.bi-f-chip { color: #ffd166; font-size: 12px; border: 1px dashed rgba(255,209,102,.5); border-radius: 999px; padding: 2px 12px; background: rgba(255,209,102,.08); }
.bi-cfg-box { background: linear-gradient(160deg, #0d2450, #071a38); border: 1px solid rgba(0,212,255,.35); border-radius: 14px; padding: 20px 22px; width: min(92vw, 620px); max-height: 82vh; overflow: auto; box-shadow: 0 20px 60px rgba(0,0,0,.5); }
.bi-cfg-tip { color: #7fa8d9; font-size: 12.5px; margin: 0 0 12px; line-height: 1.7; }
.bi-cfg-sec { color: #9fdcff; font-size: 13px; font-weight: 600; letter-spacing: 1px; margin: 12px 0 8px; padding-left: 8px; border-left: 3px solid #00d4ff; }
.bi-cfg-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; }
.bi-cfg-item { display: flex; align-items: center; gap: 6px; color: #cfe6ff; font-size: 12.5px; background: rgba(0,212,255,.05); border: 1px solid rgba(0,212,255,.18); border-radius: 8px; padding: 8px 10px; cursor: pointer; user-select: none; }
.bi-cfg-item:hover { background: rgba(0,212,255,.12); }
.bi-cfg-item input { accent-color: #00d4ff; cursor: pointer; }
/* 演示模式：隐藏全部控件，仅保留「退出演示」按钮（也可按 ESC） */
.bi-wrap.bi-presenting .bi-filters,
.bi-wrap.bi-presenting .bi-header-right .bi-btn { display: none !important; }
.bi-wrap.bi-presenting #bi-present-btn { display: inline-block !important; }

/* ===== v65.15c BD 拉群响应榜 ===== */
.bi-span-group { grid-column: span 2; }
.bi-rate-tag { display: inline-block; min-width: 44px; text-align: center; font-weight: 600; border: 1px solid; border-radius: 999px; padding: 1px 8px; font-size: 11px; }

/* ===== v65.15d 排版优化 ===== */
/* 标题：两行居中对齐（负 margin 抵消 letter-spacing 尾随空隙，保证视觉真居中） */
.bi-title { white-space: nowrap; text-align: center; }
.bi-title-l1 { font-size: 21px; font-weight: 700; letter-spacing: 4px; margin-right: -4px; color: #eaf6ff; text-shadow: 0 0 18px rgba(0,212,255,.65); line-height: 1.3; }
.bi-title-l2 { font-size: 13px; font-weight: 600; letter-spacing: 10px; margin-right: -10px; color: #7fd8ff; opacity: .9; line-height: 1.4; }
/* 右上按钮：不换行、紧凑，杜绝「面板配/置」式断行 */
.bi-header-right .bi-btn { white-space: nowrap !important; padding: 5px 12px !important; font-size: 12px !important; line-height: 1.5 !important; }
/* KPI 容器改为纵向分组布局 */
.bi-kpis { display: block !important; }
.bi-kpi-group { margin-bottom: 10px; }
.bi-kpi-group-title { display: inline-block; color: #bfe3ff; font-size: 13px; font-weight: 600; letter-spacing: 3px; padding: 2px 12px 2px 10px; margin-bottom: 8px; border-left: 3px solid #00d4ff; background: linear-gradient(90deg, rgba(0,212,255,.14), transparent); border-radius: 0 6px 6px 0; }
.bi-kpi-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 12px; }

/* ===== v65.15f 用户意向 TOP3 卡：三项横排等大 + 车型款 hover 浮层 ===== */
.bi-top-row { display: flex; gap: 8px; margin-top: 4px; }
.bi-top-item { flex: 1; min-width: 0; position: relative; background: rgba(0,230,168,.07); border: 1px solid rgba(0,230,168,.28); border-radius: 8px; padding: 6px 4px 5px; text-align: center; cursor: default; transition: background .15s, border-color .15s; }
.bi-top-item:hover { background: rgba(0,230,168,.16); border-color: rgba(0,230,168,.6); }
.bi-top-name { color: #ffffff; font-size: 15px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bi-top-n { color: #7fd8ff; font-size: 12px; margin-top: 2px; }
.bi-top-pop { position: absolute; bottom: calc(100% + 8px); left: 50%; transform: translateX(-50%); width: max-content; max-width: 300px; background: rgba(8,25,55,.97); border: 1px solid rgba(0,212,255,.45); border-radius: 10px; padding: 10px 12px 8px; z-index: 80; box-shadow: 0 12px 34px rgba(0,0,0,.55); opacity: 0; visibility: hidden; transition: opacity .15s; text-align: left; pointer-events: none; }
.bi-top-item:hover .bi-top-pop { opacity: 1; visibility: visible; }
.bi-top-pop-t { color: #7fd8ff; font-size: 12px; font-weight: 600; margin-bottom: 6px; }
.bi-top-pop-r { display: flex; justify-content: space-between; gap: 14px; color: #dff1ff; font-size: 12px; line-height: 1.7; }
.bi-top-pop-r b { color: #00e6a8; font-weight: 600; }
.bi-top-pop-tip { color: #55779f; font-size: 10.5px; margin-top: 6px; border-top: 1px solid rgba(120,180,255,.14); padding-top: 4px; }

/* ===== v65.15e 全屏模式 ===== */
#bi-lead:fullscreen { background: #04122e; overflow: auto; }
#bi-lead:fullscreen .bi-wrap { min-height: 100vh; }
/* 悬停口径提示：卡片允许溢出，提示浮层绝对定位 */
.bi-kpi { overflow: visible; position: relative; }
.bi-kpi::after { right: 6px; top: 6px; width: 44px; height: 44px; }
.bi-kpi-q { display: inline-flex; align-items: center; justify-content: center; width: 14px; height: 14px; margin-left: 6px; border: 1px solid rgba(159,194,238,.55); border-radius: 50%; font-size: 10px; color: #9fc2ee; vertical-align: 1px; cursor: help; }
.bi-kpi-tip { position: absolute; left: 8px; right: 8px; top: calc(100% + 6px); z-index: 60; background: rgba(7,22,48,.97); border: 1px solid rgba(0,212,255,.45); border-radius: 8px; padding: 8px 10px; color: #cfe6ff; font-size: 12px; line-height: 1.65; box-shadow: 0 8px 24px rgba(0,0,0,.5); opacity: 0; visibility: hidden; transition: opacity .15s; pointer-events: none; }
.bi-kpi:hover .bi-kpi-tip { opacity: 1; visibility: visible; }
/* 表头重叠修复：粘性表头用实色背景 + 不换行，滚动时行内容不再透出重叠 */
.bi-table th { background: #0b2547; z-index: 2; white-space: nowrap; }
.bi-table td { height: 30px; }

/* ===== v65.19：BI 大屏 AI 解读卡片 ===== */
.bi-insight{grid-column:1/-1;background:linear-gradient(135deg,rgba(13,27,62,.92),rgba(8,18,44,.92));border:1px solid rgba(64,156,255,.35);border-radius:12px;padding:14px 18px;margin-bottom:14px;box-shadow:0 0 18px rgba(32,110,255,.18) inset;color:#dbe7ff;font-size:14px;line-height:1.9}
.bi-insight.hidden{display:none}
.bi-insight-head{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.bi-insight-tag{display:inline-block;padding:1px 10px;border-radius:999px;font-size:12px;letter-spacing:2px;color:#8fc2ff;border:1px solid rgba(64,156,255,.55);background:rgba(32,110,255,.14)}
.bi-insight-time{font-size:12px;color:#6f8cc4}
.bi-insight-close{margin-left:auto;background:none;border:none;color:#6f8cc4;font-size:20px;line-height:1;cursor:pointer;padding:0 4px}
.bi-insight-close:hover{color:#fff}
.bi-insight-body{white-space:normal;word-break:break-word}
.bi-insight-body.bi-insight-err{color:#ff9d9d}
.bi-insight-loading{display:flex;align-items:center;gap:10px;color:#8fc2ff;padding:6px 0}
.bi-insight-spinner{width:16px;height:16px;border:2px solid rgba(64,156,255,.3);border-top-color:#4d9aff;border-radius:50%;animation:biSpin 1s linear infinite}
@keyframes biSpin{to{transform:rotate(360deg)}}
.bi-btn-insight{border-color:rgba(79,209,197,.6);color:#7fe3d8}
.bi-btn-insight:hover{border-color:#4fd1c5;color:#a8f0e8}
.bi-btn-insight:disabled{opacity:.5;cursor:wait}

/* ==================================================================
   v66.2 方向A「清风工作台」四页面美化
   范围：自营车源(#vehicles) / 话术库(#cs-scripts) / 门店采购价(#purchase-content)
        / 客服数据智能分析(#im-content)
   原则：页面 ID 作用域隔离，不影响其他页面与大屏；浅色卡片精修，
        统一圆角/阴影/间距，模块色条区分，可读性零损失
   ================================================================== */
:root {
  --qa-blue: #2563eb;
  --qa-blue-soft: #eef3ff;
  --qa-ink: #1c2333;
  --qa-sub: #5b6478;
  --qa-line: #e6eaf2;
  --qa-price: #e05a12;
  --qa-teal: #0d9488;
  --qa-amber: #d97706;
  --qa-shadow: 0 2px 10px rgba(30, 50, 90, .06);
  --qa-shadow-hover: 0 10px 24px rgba(30, 50, 90, .12);
}

/* ---------- 1. 自营车源 ---------- */
#vehicles .vehicle-grid { gap: 16px; }
#vehicles .vehicle-card {
  background: #fff;
  border: 1px solid var(--qa-line);
  border-top: 3px solid #9aa5b8;
  border-radius: 12px;
  padding: 16px 18px 14px;
  box-shadow: var(--qa-shadow);
}
#vehicles .vehicle-card::after { display: none; }
#vehicles .vehicle-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--qa-shadow-hover);
  border-color: #c9d6f5;
}
#vehicles .vehicle-card.vc-ev   { border-top-color: var(--qa-blue); }
#vehicles .vehicle-card.vc-phev { border-top-color: var(--qa-teal); }
#vehicles .vehicle-card.vc-fuel { border-top-color: var(--qa-amber); }
#vehicles .vehicle-card.vc-other{ border-top-color: #9aa5b8; }
#vehicles .vc-brand {
  color: var(--qa-sub);
  text-transform: none;
  letter-spacing: .3px;
  display: flex;
  align-items: center;
  gap: 6px;
}
#vehicles .vc-brand::before {
  content: '';
  width: 6px; height: 6px;
  border-radius: 50%;
  background: currentColor;
  opacity: .55;
}
#vehicles .vc-model { font-size: 15.5px; color: var(--qa-ink); margin-bottom: 12px; }
#vehicles .vc-info { margin-bottom: 8px; }
#vehicles .vc-tag {
  background: var(--qa-blue-soft);
  color: var(--qa-blue);
  border: none;
  border-radius: 20px;
  padding: 3px 10px;
  font-weight: 500;
}
#vehicles .vehicle-card.vc-phev .vc-tag { background: #e6f5f3; color: var(--qa-teal); }
#vehicles .vehicle-card.vc-fuel .vc-tag { background: #fdf3e5; color: var(--qa-amber); }
#vehicles .vc-price { font-size: 20px; color: var(--qa-price); letter-spacing: .2px; }

/* ---------- 2. 客服话术库 ---------- */
#cs-scripts .cs-toolbar { align-items: flex-start; gap: 12px; }
#cs-scripts .cs-cats {
  flex-wrap: nowrap;
  overflow-x: auto;
  padding-bottom: 4px;
  scrollbar-width: thin;
}
#cs-scripts .cs-chip {
  white-space: nowrap;
  flex: 0 0 auto;
  border: 1px solid var(--qa-line);
  color: var(--qa-sub);
  background: #fff;
  font-size: 13.5px;
  padding: 6px 13px;
  box-shadow: 0 1px 3px rgba(30, 50, 90, .04);
}
#cs-scripts .cs-chip:hover { border-color: var(--qa-blue); color: var(--qa-blue); }
#cs-scripts .cs-search-input {
  flex: 0 0 300px;
  min-width: 220px;
  border: 1px solid var(--qa-line);
  border-radius: 10px;
  background: #fff;
}
#cs-scripts .cs-item {
  background: #fff;
  border: 1px solid var(--qa-line);
  box-shadow: 0 2px 8px rgba(30, 50, 90, .05);
  transition: box-shadow .15s, transform .15s;
}
#cs-scripts .cs-item:hover { box-shadow: 0 8px 20px rgba(30, 50, 90, .1); transform: translateY(-2px); }
#cs-scripts .cs-item-text { flex: 1; }
#cs-scripts .cs-item-cat {
  background: var(--qa-blue-soft);
  color: var(--qa-blue);
  border-radius: 20px;
  padding: 2px 10px;
  font-size: 11.5px;
}
#cs-scripts .cs-ph {
  background: var(--qa-blue-soft);
  color: var(--qa-blue);
  font-weight: 600;
}
#cs-scripts .cs-item-action {
  background: #fff8e8;
  border-left: 3px solid #f0b429;
  color: #8a6d1a;
}
#cs-scripts .cs-item-foot { margin-top: 2px; }
#cs-scripts .cs-item-foot .btn-primary {
  background: var(--qa-blue);
  border: none;
  border-radius: 8px;
  padding: 6px 16px;
  font-size: 13px;
}
#cs-scripts .cs-item-foot .btn-primary:hover { background: #1d4fd8; }
#cs-scripts .cs-empty {
  background: #fff;
  border: 1.5px dashed var(--qa-line);
  border-radius: 12px;
}

/* ---------- 3. 门店采购价 ---------- */
#purchase-content .search-bar { margin-bottom: 14px; }
#purchase-content .search-input {
  max-width: 420px;
  background: #fff;
  border: 1px solid var(--qa-line);
  border-radius: 10px;
}
#purchase-content .price-table-wrap {
  background: #fff;
  border: 1px solid var(--qa-line);
  border-radius: 12px;
  box-shadow: var(--qa-shadow);
  max-height: calc(100vh - 300px);
}
#purchase-content .price-table th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: #f4f6fb;
  color: var(--qa-sub);
  font-weight: 600;
  border-bottom: 1px solid var(--qa-line);
}
#purchase-content .price-table td { border-bottom: 1px solid #f0f2f8; }
#purchase-content .price-table tbody tr:nth-child(even) { background: #fafbfe; }
#purchase-content .price-table tbody tr:hover { background: var(--qa-blue-soft); }
#purchase-content .manage-count {
  display: inline-block;
  margin-top: 12px;
  background: var(--qa-blue-soft);
  color: var(--qa-blue);
  border-radius: 20px;
  padding: 4px 14px;
  font-size: 12.5px;
}
#purchase .no-result, #cs-scripts .no-result {
  background: #fff;
  border: 1.5px dashed var(--qa-line);
  border-radius: 12px;
  color: var(--qa-sub);
}

/* ---------- 4. 客服数据智能分析 ---------- */
#im-content .im-welcome {
  background: linear-gradient(180deg, #f6f9ff 0%, #ffffff 70%);
  border: 1px solid #dfe8fb;
  border-radius: 16px;
  padding: 38px 28px 32px;
  box-shadow: var(--qa-shadow);
  max-width: 760px;
  margin: 8px auto 0;
}
#im-content .im-welcome h3 { color: var(--qa-ink); font-size: 19px; }
#im-content .im-suggestion-chip {
  background: #fff;
  border: 1px solid #d7e2f8;
  color: var(--qa-sub);
  border-radius: 20px;
  transition: all .15s;
}
#im-content .im-suggestion-chip:hover {
  border-color: var(--qa-blue);
  color: var(--qa-blue);
  box-shadow: 0 2px 8px rgba(37, 99, 235, .12);
  transform: translateY(-1px);
}
#im-content .im-ds-bar { max-width: 760px; margin: 14px auto 10px; }
#im-content .im-ds-switch {
  display: inline-flex;
  gap: 2px;
  background: #eef2f9;
  border-radius: 10px;
  padding: 3px;
}
#im-content .im-ds-btn {
  border: none;
  background: transparent;
  color: var(--qa-sub);
  border-radius: 8px;
  padding: 6px 16px;
  font-size: 13px;
  transition: all .15s;
}
#im-content .im-ds-btn:hover { color: var(--qa-blue); }
#im-content .im-ds-btn.active {
  background: #fff;
  color: var(--qa-blue);
  font-weight: 600;
  box-shadow: 0 1px 4px rgba(30, 50, 90, .15);
}

/* ===== v65.26 海报工坊排版模式区隔：模式大卡 + 质量版/普通版分组 ===== */
.poster-mode-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.poster-mode-card { border: 2px solid var(--border-color, #e3e6ee); border-radius: 12px; padding: 12px 14px; cursor: pointer; background: var(--bg-secondary, #fff); transition: all .15s; user-select: none; }
.poster-mode-card:hover { transform: translateY(-1px); }
.poster-mode-card .pmc-head { display: flex; align-items: center; gap: 8px; }
.poster-mode-card .pmc-ico { font-size: 20px; line-height: 1; }
.poster-mode-card .pmc-title { font-size: 16px; font-weight: 800; color: var(--text-color, #222); }
.poster-mode-card .pmc-state { margin-left: auto; font-size: 12px; font-weight: 700; color: #8a5a00; background: rgba(249,224,142,.4); border: 1px solid rgba(217,142,0,.5); padding: 2px 9px; border-radius: 999px; display: none; }
.poster-mode-card .pmc-state:not(:empty) { display: inline-block; }
.poster-mode-card .pmc-desc { margin-top: 6px; font-size: 12.5px; line-height: 1.6; color: var(--text-secondary, #66707e); }
.poster-mode-card .pmc-desc b { color: #8a5a00; }
.poster-mode-card.mode-template.selected { border-color: #2E5CF6; background: rgba(46,92,246,.06); box-shadow: 0 0 0 3px rgba(46,92,246,.12); }
.poster-mode-card.mode-free.selected { border-color: #7B3BD4; background: rgba(123,59,212,.06); box-shadow: 0 0 0 3px rgba(123,59,212,.12); }
.poster-grid-group { margin-bottom: 14px; }
.poster-grid-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; padding: 8px 12px; border-radius: 8px; margin-bottom: 8px; font-size: 13px; border-left: 4px solid; }
.poster-grid-head b { font-size: 14px; }
.poster-grid-head span { color: var(--text-secondary, #77808f); font-size: 12px; }
.poster-grid-head.q { background: linear-gradient(90deg, rgba(249,224,142,.3), rgba(249,224,142,.05)); border-left-color: #D98E00; }
.poster-grid-head.q b { color: #8a5a00; }
.poster-grid-head.n { background: rgba(46,92,246,.07); border-left-color: #2E5CF6; }
.poster-grid-head.n b { color: #2E5CF6; }
.poster-style-card.is-quality { border-color: rgba(217,142,0,.5); }
.poster-style-card.is-quality.selected { border-color: #D98E00; box-shadow: 0 0 0 2px rgba(217,142,0,.35); }
.poster-ver-badge { position: absolute; top: 6px; left: 6px; z-index: 2; font-size: 11px; font-weight: 800; padding: 2px 8px; border-radius: 999px; pointer-events: none; }
.poster-ver-badge.q { color: #5A3A00; background: linear-gradient(135deg, #F9E08E, #F0B93C); box-shadow: 0 1px 3px rgba(0,0,0,.25); }
.poster-ver-badge.n { color: #fff; background: rgba(60,70,90,.72); }
@media (max-width: 768px) { .poster-mode-cards { grid-template-columns: 1fr; } }

