﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿﻿/* ============================================
   搜索引擎竞价数据统计系统 - 样式表
   文件：css/style.css
   ============================================ */

:root {
    --bg-primary: #0a0e1a;
    --bg-secondary: #111827;
    --bg-card: #1a2235;
    --bg-card-hover: #222d44;
    --border-color: #4a6080;
    --text-primary: #f1f5f9;
    --text-secondary: #94a3b8;
    --text-muted: #64748b;
    --accent-blue: #3b82f6;
    --accent-blue-glow: rgba(59, 130, 246, 0.25);
    --accent-green: #10b981;
    --accent-green-bg: rgba(16, 185, 129, 0.12);
    --accent-red: #ef4444;
    --accent-red-bg: rgba(239, 68, 68, 0.12);
    --accent-amber: #f59e0b;
    --accent-purple: #8b5cf6;
    --accent-cyan: #06b6d4;
    --radius-sm: 6px;
    --radius-md: 10px;
    --radius-lg: 16px;
    --shadow-sm: 0 2px 8px rgba(0,0,0,0.2);
    --shadow-md: 0 4px 16px rgba(0,0,0,0.3);
    --shadow-lg: 0 8px 32px rgba(0,0,0,0.4);
    --transition: all 0.25s cubic-bezier(0.4,0,0.2,1);
    --font-display: 'DM Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
    --font-mono: 'JetBrains Mono','SF Mono','Fira Code',monospace;
}

* { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { font-family:var(--font-display); background:var(--bg-primary); color:var(--text-primary); min-height:100vh; line-height:1.6; overflow-x:hidden; }

body::before {
    content:''; position:fixed; top:0;left:0;right:0;bottom:0;
    background:
        radial-gradient(ellipse 80%50% at 20%-10%,rgba(59,130,246,0.08) 0%,transparent 50%),
        radial-gradient(ellipse 60%40% at 80%100%,rgba(139,92,246,0.06) 0%,transparent 50%);
    pointer-events:none; z-index:0;
}

/* ========== 布局 ========== */
.app-layout { display:flex; min-height:100vh; position:relative; z-index:1; }
.sidebar { width:280px; background:var(--bg-secondary); border-right:1px solid var(--border-color); display:flex; flex-direction:column; position:fixed; top:0; left:0; bottom:0; z-index:100; transition:transform 0.3s ease; box-shadow: 4px 0 24px rgba(0,0,0,0.5), -2px 0 8px rgba(59,130,246,0.04); }
.sidebar::after { content:''; position:absolute; top:0; right:0; bottom:0; width:1px; background:linear-gradient(to bottom, transparent, rgba(59,130,246,0.25), rgba(139,92,246,0.15), transparent); }
.main-content { flex:1; margin-left:280px; min-height:100vh; overflow-x:hidden; }

/* ====== 侧边栏 - 公司/平台/类型树形导航 ====== */
.sidebar-header { padding:18px 20px; border-bottom:1px solid var(--border-color); display:flex; align-items:center; gap:10px; flex-shrink:0; background:rgba(17,24,39,0.6); box-shadow:0 1px 8px rgba(0,0,0,0.3); }
.sidebar-header-icon { width:36px;height:36px; background:linear-gradient(135deg,var(--accent-blue),var(--accent-purple)); border-radius:var(--radius-md); display:flex;align-items:center;justify-content:center; font-size:18px; box-shadow:0 4px 12px var(--accent-blue-glow); }
.sidebar-header h1 { font-size:14px; font-weight:700; letter-spacing:-0.02em; line-height:1.3; }
.sidebar-header span { font-size:11px; color:var(--text-muted); }
.sidebar-project-select { margin-left:auto; }
.sidebar-project-select select { background-color:#1e293b !important; border:1px solid var(--border-color); border-radius:var(--radius-sm); color:var(--text-primary); font-size:12px; padding:4px 22px 4px 8px; cursor:pointer; outline:none; max-width:120px; }
.sidebar-project-select select:focus { border-color:var(--accent-blue); }

/* ========== 全局 select 浏览器默认样式清除 ========== */
select {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background-color: #1e293b !important;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    padding: 5px 28px 5px 10px;
    font-size: 12px;
    font-family: inherit;
    outline: none;
    cursor: pointer;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2394a3b8' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
}

select option {
    background-color: #1e293b !important;
    color: var(--text-primary);
}

.breadcrumb-bar {
    padding:10px 16px; border-bottom:1px solid var(--border-color);
    display:flex; align-items:center; gap:6px;
    font-size:11px; color:var(--text-muted); flex-shrink:0;
    background:rgba(59,130,246,0.03);
}
.breadcrumb-bar .bc-item { cursor:pointer; padding:3px 8px; border-radius:4px; transition:var(--transition); white-space:nowrap; }
.breadcrumb-bar .bc-item:hover { background:rgba(59,130,246,0.1); color:var(--accent-blue); }
.breadcrumb-bar .bc-sep { opacity:0.4; }
.breadcrumb-bar .bc-current { color:var(--accent-blue); font-weight:600; }

.tree-nav { flex:1; overflow-y:auto; padding:8px 0; }
.tree-nav-section-label { padding:6px 16px 4px; font-size:10px; color:var(--text-muted); text-transform:uppercase; letter-spacing:0.08em; font-weight:700; }
.sidebar-nav-bottom { padding:6px 10px; border-top:1px solid var(--border-color); flex-shrink:0; margin-top:auto; }

/* 公司树形节点 */
.company-tree-node { margin-bottom:2px; }
.company-tree-header {
    display:flex; align-items:center; gap:8px;
    padding:10px 16px; cursor:pointer; transition:var(--transition);
    border-left:3px solid transparent;
}
.company-tree-header:hover { background:var(--bg-card); }
.company-tree-header.active { background:linear-gradient(135deg,rgba(59,130,246,0.12),rgba(139,92,246,0.08)); border-left-color:var(--accent-blue); }
.company-toggle-arrow { font-size:10px; color:var(--text-muted); transition:transform 0.2s; flex-shrink:0; }
.company-tree-node.expanded > .company-tree-header .company-toggle-arrow { transform:rotate(90deg); }
.company-page-link {
    font-size:14px; color:var(--text-muted); text-decoration:none; padding:2px 4px;
    border-radius:4px; transition:var(--transition); margin-left:auto; flex-shrink:0;
}
.company-page-link:hover { color:var(--accent-blue); background:rgba(59,130,246,0.1); }
.platform-page-link {
    font-size:12px; color:var(--text-muted); text-decoration:none; padding:2px 4px;
    border-radius:4px; transition:var(--transition); margin-left:auto; flex-shrink:0;
}
.platform-page-link:hover { color:var(--accent-blue); background:rgba(59,130,246,0.1); }
.company-tree-node > .platform-list { display:none; }
.company-tree-node.expanded > .platform-list { display:block; }

/* 公司详情页 - 平台筛选按钮 */
.platform-filter-btn {
    padding:5px 12px; border-radius:16px; border:1px solid var(--border-color);
    background:var(--bg-card); color:var(--text-secondary); font-size:11px;
    font-family:inherit; cursor:pointer; transition:var(--transition);
    display:inline-flex; align-items:center; gap:4px;
    text-decoration:none;
}
.platform-filter-btn:hover { border-color:var(--accent-blue); color:var(--text-primary); }
.platform-filter-btn.active { background:var(--accent-blue); color:#fff; border-color:var(--accent-blue); }
.platform-filter-btn.sub-btn { font-size:11px; padding:4px 10px; opacity:0.75; }
.platform-filter-btn.sub-btn:hover { opacity:1; }
.platform-filter-btn.sub-btn.active { opacity:1; }
.platform-filter-btn:active { transform:scale(0.96); }

/* 客户管理 / 去重客户管理 顶部筛选按钮（与默认 platform-filter-btn 保持一致的 CSS 过渡与点击动画） */
.platform-filter-btn.customer-filter-btn:hover { border-color:#6366f1; color:#6366f1; }
.platform-filter-btn.customer-filter-btn.active { background:#6366f1; color:#fff; border-color:#6366f1; }
.platform-filter-btn.customer-filter-btn:active { box-shadow:0 2px 8px rgba(99,102,241,0.25); }

/* 去重客户管理按钮选中态统一使用主题蓝色，与"全部/feed/bid"等默认按钮选中色一致 */
.platform-filter-btn.dedup-filter-btn:hover { border-color:#3b82f6; color:#3b82f6; }
.platform-filter-btn.dedup-filter-btn.active {
    background:#3b82f6 !important;
    color:#fff !important;
    border-color:#3b82f6 !important;
    box-shadow:0 2px 10px rgba(59, 130, 246, 0.25);
    font-weight:600;
}
.platform-filter-btn.dedup-filter-btn:active { box-shadow:0 2px 8px rgba(59, 130, 246, 0.25); }

/* 去重数据统计对比条（比普通卡片稍深，带左侧蓝色强调条形成轻微视觉区分） */
.dedup-stats-bar {
    padding:10px 14px;
    margin-bottom:10px;
    background:#141c2e;
    border:1px solid var(--border-color);
    border-left:3px solid var(--accent-blue);
    border-radius:8px;
    color:var(--text-secondary);
    font-size:13px;
    display:flex;
    align-items:center;
    flex-wrap:wrap;
    gap:6px 10px;
}
.dedup-stats-bar .dedup-title { font-weight:600; color:var(--text-primary); }
.dedup-stats-bar .dedup-kept { color:var(--accent-green); font-weight:700; }
.dedup-stats-bar .dedup-removed { color:var(--accent-red); font-weight:700; }
.dedup-stats-bar .dedup-orig { color:var(--text-primary); font-weight:600; }
.dedup-stats-bar .dedup-regen-link {
    color:var(--accent-blue);
    text-decoration:none;
    font-weight:500;
    transition:var(--transition);
    margin-left:auto;
}
.dedup-stats-bar .dedup-regen-link:hover { color:var(--accent-purple); text-decoration:underline; }

.tree-node { user-select:none; }

.project-node { margin-bottom:2px; }
.project-header {
    display:flex; align-items:center; gap:8px;
    padding:10px 16px; cursor:pointer; transition:var(--transition);
    border-left:3px solid transparent;
}
.project-header:hover { background:var(--bg-card); }
.project-header.active { background:linear-gradient(135deg,rgba(139,92,246,0.12),rgba(59,130,246,0.08)); border-left-color:var(--accent-purple); }
.project-header .company-arrow { font-size:10px; color:var(--text-muted); transition:transform 0.2s; flex-shrink:0; }
.project-node.expanded > .project-header .company-arrow { transform:rotate(90deg); }

.company-list { display:none; }
.project-node.expanded > .company-list { display:block; }

.company-node { margin-bottom:2px; }
.company-header {
    display:flex; align-items:center; gap:8px;
    padding:10px 16px; cursor:pointer; transition:var(--transition);
    border-left:3px solid transparent;
}
.company-header:hover { background:var(--bg-card); }
.company-header.active { background:linear-gradient(135deg,rgba(59,130,246,0.12),rgba(139,92,246,0.08)); border-left-color:var(--accent-blue); }
.company-icon { width:28px;height:28px; border-radius:6px; display:flex;align-items:center;justify-content:center; font-size:13px; font-weight:700; flex-shrink:0; }
.company-name { font-size:13px; font-weight:600; flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.company-arrow { font-size:10px; color:var(--text-muted); transition:transform 0.2s; flex-shrink:0; }
.company-node.expanded > .company-header .company-arrow { transform:rotate(90deg); }

.platform-list { display:none; }
.company-node.expanded > .platform-list { display:block; }

.platform-node { margin-left:18px; border-left:1px solid var(--border-color); }
.platform-header {
    display:flex; align-items:center; gap:7px;
    padding:8px 14px; cursor:pointer; transition:var(--transition);
    border-left:2px solid transparent; margin-left:-2px;
}
.platform-header:hover { background:rgba(255,255,255,0.02); }
.platform-header.active { background:rgba(59,130,246,0.08); border-left-color:var(--accent-cyan); }
.platform-dot { width:8px;height:8px; border-radius:50%; flex-shrink:0; }
.platform-name { font-size:12.5px; font-weight:500; color:var(--text-secondary); flex:1; }
.platform-name.active-color { color:var(--text-primary); font-weight:600; }
.platform-arrow { font-size:9px; color:var(--text-muted); transition:transform 0.2s; flex-shrink:0; }
.platform-node.expanded > .platform-header .platform-arrow { transform:rotate(90deg); }

.type-list { display:none; }
.platform-node.expanded > .type-list { display:block; }

.type-item {
    display:flex; align-items:center; gap:8px;
    padding:7px 14px 7px 28px; cursor:pointer; transition:var(--transition);
    font-size:12px; color:var(--text-muted); margin-left:-2px;
    border-left:2px solid transparent;
}
.type-item:hover { background:rgba(255,255,255,0.03); color:var(--text-secondary); }
.type-item.active { background:rgba(59,130,246,0.1); color:var(--accent-blue); border-left-color:var(--accent-blue); font-weight:600; }
.type-badge { font-size:9px; padding:1px 6px; border-radius:8px; font-weight:700; text-transform:uppercase; letter-spacing:0.04em; }

.sidebar-footer { padding:12px 16px; border-top:1px solid var(--border-color); flex-shrink:0; }
.btn-add-company { width:100%; padding:8px; border:1px dashed var(--border-color); border-radius:var(--radius-sm); background:transparent; color:var(--text-secondary); font-size:12px; font-family:inherit; cursor:pointer; transition:var(--transition); display:flex; align-items:center; justify-content:center; gap:6px; }
.btn-add-company:hover { border-color:var(--accent-blue); color:var(--accent-blue); background:rgba(59,130,246,0.05); }

/* ========== 顶栏 ========== */
.topbar { height:60px; background:rgba(17,24,39,0.85); backdrop-filter:blur(12px); border-bottom:1px solid var(--border-color); display:flex; align-items:center; justify-content:space-between; padding:0 28px; position:sticky; top:0; z-index:50; }
.topbar-left { display:flex; align-items:center; gap:14px; flex-shrink:0; min-width:0; }
.page-title { font-size:17px; font-weight:700; letter-spacing:-0.01em; white-space:nowrap; }
.current-path-tag { font-size:11px; padding:4px 10px; border-radius:12px; background:rgba(59,130,246,0.1); color:var(--accent-blue); font-weight:600; white-space:nowrap; }
.topbar-right { display:flex; align-items:center; gap:10px; }
.date-range-wrapper { display:flex; align-items:center; gap:3px; flex-wrap:nowrap; }
.date-shortcuts { display:flex; align-items:center; gap:2px; flex-wrap:nowrap; }
.date-shortcut-btn { background:#253050; border:1px solid var(--border-color); border-radius:var(--radius-md); padding:4px 7px; font-size:11px; color:var(--text-secondary); cursor:pointer; transition:var(--transition); white-space:nowrap; font-family:inherit; flex-shrink:0; }
.date-shortcut-btn:hover { border-color:var(--accent-blue); color:var(--accent-blue); }
.date-shortcut-btn.active { background:var(--accent-blue); color:#fff; border-color:var(--accent-blue); }
.date-shortcut-month { position:relative; }
.month-dropdown { display:none; position:absolute; top:calc(100% + 6px); left:50%; transform:translateX(-50%); background:#1a2035; border:1px solid var(--border-color); border-radius:var(--radius-md); padding:12px; box-shadow:0 8px 24px rgba(0,0,0,0.4); z-index:1000; min-width:220px; }
.month-dropdown.show { display:block; }
.month-dropdown-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; padding:0 4px; }
.month-dropdown-header span { font-size:13px; font-weight:600; color:var(--text-primary); }
.month-nav-btn { background:none; border:1px solid var(--border-color); border-radius:4px; color:var(--text-secondary); cursor:pointer; font-size:14px; width:26px; height:26px; display:flex; align-items:center; justify-content:center; transition:var(--transition); }
.month-nav-btn:hover { border-color:var(--accent-blue); color:var(--accent-blue); }
.month-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:4px; }
.month-grid-item { padding:6px 4px; text-align:center; font-size:12px; border-radius:4px; cursor:pointer; color:var(--text-secondary); transition:var(--transition); border:1px solid var(--border-color); background:var(--bg-secondary); font-family:inherit; }
.month-grid-item:hover { background:var(--bg-card-hover); color:var(--accent-blue); border-color:var(--accent-blue); }
.month-grid-item.active { background:var(--accent-blue); color:#fff; }
.month-grid-item.disabled { opacity:0.3; cursor:default; pointer-events:none; }
.date-range-picker { display:flex; align-items:center; gap:4px; background:var(--bg-card); border:1px solid var(--border-color); border-radius:var(--radius-md); padding:5px 6px; font-size:12px; color:var(--text-secondary); cursor:pointer; transition:var(--transition); }
.date-range-picker:hover { border-color:var(--accent-blue); }
.date-range-picker input { background:transparent; border:none; color:var(--text-primary); font-family:inherit; font-size:12px; min-width:0; width:85px; max-width:100px; outline:none; }
.date-range-picker input::-webkit-calendar-picker-indicator { filter:invert(0.5); cursor:pointer; }

/* 顶部筛选栏（三级联动下拉框） */
.filter-bar {
    display:flex; align-items:center; gap:4px;
    background:var(--bg-card); border:1px solid var(--border-color);
    border-radius:var(--radius-md); padding:6px 12px;
    margin-right:10px; flex-shrink:0;
}
.filter-group { display:flex; align-items:center; gap:6px; }
.filter-label {
    font-size:11px; color:var(--text-muted); font-weight:600;
    white-space:nowrap; text-transform:uppercase; letter-spacing:0.04em;
}
.filter-select {
    background-color:#1e293b !important; border:1px solid var(--border-color);
    border-radius:var(--radius-sm); padding:5px 28px 5px 10px;
    color:var(--text-primary); font-size:12px; font-family:inherit;
    outline:none; cursor:pointer; transition:var(--transition);
    min-width:90px;
}
.filter-select:hover { border-color:var(--accent-blue); }
.filter-select:focus { border-color:var(--accent-blue); box-shadow:0 0 0 3px var(--accent-blue-glow); }
.filter-select:disabled { opacity:0.35; cursor:not-allowed; }
.filter-divider { width:1px; height:20px; background:var(--border-color); flex-shrink:0; }

.page-content { padding:24px 28px; }
.page-section { display:none; animation:fadeIn 0.35s ease; }
.page-section.active { display:block; }
@keyframes fadeIn { from{opacity:0;transform:translateY(12px)} to{opacity:1;transform:translateY(0)} }

/* 侧边栏快捷导航 */
.sidebar-nav-quick { padding:6px 10px; border-bottom:1px solid var(--border-color); flex-shrink:0; display:flex; flex-direction:column; gap:2px; }
.quick-nav-item { display:flex; align-items:center; gap:8px; padding:8px 12px; border-radius:var(--radius-sm); font-size:12px; font-weight:500; color:var(--text-secondary); text-decoration:none; cursor:pointer; transition:var(--transition); }
.quick-nav-item:hover { background:rgba(59,130,246,0.08); color:var(--accent-blue); }
.quick-nav-item.active { background:linear-gradient(135deg,rgba(59,130,246,0.15),rgba(139,92,246,0.08)); color:var(--accent-blue); font-weight:700; }

/* 汇总统计页 */
.summary-kpi-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:16px; margin-bottom:24px; }
.summary-kpi-card { background:var(--bg-card); border:1px solid var(--border-color); border-radius:var(--radius-lg); padding:20px; position:relative; overflow:hidden; transition:var(--transition); opacity:0; transform:translateY(20px); }
.summary-kpi-card.visible { opacity:1; transform:translateY(0); }
.summary-kpi-card:hover { transform:translateY(-3px); box-shadow:var(--shadow-md); }
.summary-kpi-card .sk-label { font-size:11px; color:var(--text-muted); text-transform:uppercase; letter-spacing:0.05em; margin-bottom:8px; font-weight:600; }
.summary-kpi-card .sk-value { font-family:var(--font-mono); font-size:26px; font-weight:700; letter-spacing:-0.02em; margin-bottom:4px; }
.summary-kpi-card .sk-sub { font-size:11px; color:var(--text-muted); }
.summary-kpi-card .sk-trend { display:flex; align-items:center; gap:6px; font-size:11px; font-weight:600; margin-top:8px; padding-top:8px; border-top:1px dashed rgba(148,163,184,0.18); flex-wrap:wrap; }
.summary-kpi-card .sk-trend-label { color:var(--text-muted); font-weight:500; }
.summary-kpi-card .sk-trend.up { color:#ef4444; }
.summary-kpi-card .sk-trend.down { color:#10b981; }
.summary-kpi-card .sk-trend.flat { color:var(--text-muted); opacity:0.75; }
.summary-kpi-card .sk-trend-arrow { font-size:12px; }
.summary-kpi-card .sk-trend-diff { color:var(--text-muted); font-weight:500; font-family:var(--font-mono); font-size:10px; }
.summary-kpi-card.sk-total::before { content:''; position:absolute; top:0;left:0;right:0; height:3px; background:linear-gradient(90deg,var(--accent-blue),var(--accent-purple)); border-radius:var(--radius-lg) var(--radius-lg) 0 0; }
.summary-kpi-card.sk-clicks::before { content:''; position:absolute; top:0;left:0;right:0; height:3px; background:linear-gradient(90deg,var(--accent-green),#34d399); border-radius:var(--radius-lg) var(--radius-lg) 0 0; }
.summary-kpi-card.sk-ctr::before { content:''; position:absolute; top:0;left:0;right:0; height:3px; background:linear-gradient(90deg,var(--accent-amber),#fbbf24); border-radius:var(--radius-lg) var(--radius-lg) 0 0; }
.summary-kpi-card.sk-leads::before { content:''; position:absolute; top:0;left:0;right:0; height:3px; background:linear-gradient(90deg,var(--accent-cyan),#22d3ee); border-radius:var(--radius-lg) var(--radius-lg) 0 0; }
.summary-kpi-card.sk-cpl::before { content:''; position:absolute; top:0;left:0;right:0; height:3px; background:linear-gradient(90deg,var(--accent-red),#f87171); border-radius:var(--radius-lg) var(--radius-lg) 0 0; }

/* 汇总统计页 - 紧凑布局 */
.summary-kpi-grid.compact { gap:8px; margin-bottom:12px; }
.summary-kpi-grid.compact .summary-kpi-card { padding:12px 14px; border-radius:8px; }
.summary-kpi-grid.compact .summary-kpi-card .sk-value { font-size:18px; }
.summary-kpi-grid.compact .summary-kpi-card .sk-label { font-size:10px; margin-bottom:4px; }
.summary-kpi-grid.compact .summary-kpi-card .sk-sub { font-size:10px; }
.summary-kpi-grid.compact .summary-kpi-card .sk-trend { font-size:10px; margin-top:6px; padding-top:6px; }
.summary-kpi-grid.compact .summary-kpi-card .sk-trend-diff { font-size:9px; }

/* ====== KPI 区加载遮罩（日期切换即时视觉反馈） ====== */
#summaryKpiGrid.loading { position:relative; pointer-events:none; user-select:none; }
#summaryKpiGrid .sk-loading-overlay {
    position:absolute; inset:0; z-index:20;
    background:rgba(255,255,255,0.72); backdrop-filter:blur(2px);
    border-radius:10px;
    display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px;
}
#summaryKpiGrid .sk-loading-spinner {
    width:28px; height:28px;
    border:3px solid rgba(59,130,246,0.2);
    border-top-color:var(--accent-blue);
    border-radius:50%;
    animation:skSpin 0.9s linear infinite;
}
#summaryKpiGrid .sk-loading-text {
    font-size:12px; color:var(--text-secondary); font-weight:500;
    letter-spacing:0.2px;
}
@keyframes skSpin { to { transform:rotate(360deg); } }

.comparison-table-container.compact { border-radius:8px; }
.comparison-table.compact th, .comparison-table.compact td { padding:8px 12px; font-size:12px; }
.comparison-table.compact th { font-size:11px; }

/* 汇总页 - 快捷操作栏 */
.summary-toolbar { display:flex; align-items:center; justify-content:space-between; padding:10px 14px; margin-bottom:12px; background:var(--bg-card); border:1px solid var(--border-color); border-radius:8px; flex-wrap:wrap; gap:8px; }
.summary-toolbar-left { display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.summary-range-info { font-size:12px; color:var(--text-secondary); }
.summary-range-info strong { color:var(--accent-blue); font-family:var(--font-mono); }
.summary-update-time { font-size:11px; color:var(--text-muted); }
.summary-toolbar-right { display:flex; gap:6px; }

/* 汇总页 - 区块容器（分组面板） */
.summary-section { background:var(--bg-secondary); border:1px solid var(--border-color); border-radius:10px; padding:14px; margin-bottom:14px; box-shadow:0 1px 3px rgba(0,0,0,0.15); }
.summary-section-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; padding-bottom:10px; border-bottom:1px solid var(--border-color); }
.summary-section-title { font-size:13px; font-weight:700; color:var(--text-primary); display:flex; align-items:center; gap:8px; }
.summary-section-title::before { content:''; width:4px; height:14px; background:linear-gradient(180deg,var(--accent-blue),var(--accent-purple)); border-radius:2px; }
.summary-section-title .ss-sub { font-size:11px; font-weight:400; color:var(--text-muted); }
.summary-section > *:last-child { margin-bottom:0; }
.summary-section .summary-kpi-grid,
.summary-section .summary-insights-grid,
.summary-section .summary-leaderboard-grid,
.summary-section .charts-grid { margin-bottom:10px; }
.summary-section > *:last-child,
.summary-section .charts-grid:last-child { margin-bottom:0; }

/* 汇总页 - 数据洞察 */
.summary-insights-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-bottom:12px; }
.insight-card { background:var(--bg-card); border:1px solid var(--border-color); border-radius:8px; padding:12px 14px; position:relative; overflow:hidden; transition:var(--transition); }
.insight-card:hover { transform:translateY(-2px); box-shadow:var(--shadow-sm); }
.insight-card::before { content:''; position:absolute; top:0;left:0;bottom:0; width:3px; }
.insight-card.ic-blue::before { background:var(--accent-blue); }
.insight-card.ic-green::before { background:var(--accent-green); }
.insight-card.ic-amber::before { background:var(--accent-amber); }
.insight-card.ic-purple::before { background:var(--accent-purple); }
.insight-label { font-size:10px; color:var(--text-muted); text-transform:uppercase; letter-spacing:0.05em; margin-bottom:6px; font-weight:600; }
.insight-text { font-size:12px; color:var(--text-primary); line-height:1.5; }
.insight-text strong { font-weight:700; }
.insight-text .insight-value { font-family:var(--font-mono); font-weight:700; }
.insight-text .insight-pos { color:var(--accent-green); }
.insight-text .insight-neg { color:var(--accent-red); }
.insight-sub { font-size:10px; color:var(--text-muted); margin-top:4px; }

/* 汇总页 - 排行榜 */
.summary-leaderboard-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-bottom:12px; }
.leaderboard-card { background:var(--bg-card); border:1px solid var(--border-color); border-radius:8px; overflow:hidden; }
.leaderboard-header { display:flex; align-items:center; gap:8px; padding:10px 12px; border-bottom:1px solid var(--border-color); background:var(--bg-secondary); }
.leaderboard-icon { width:24px; height:24px; border-radius:6px; display:flex; align-items:center; justify-content:center; font-size:13px; }
.leaderboard-title { font-size:12px; font-weight:600; color:var(--text-primary); }
.leaderboard-body { padding:6px 0; }
.leaderboard-item { display:flex; align-items:center; gap:8px; padding:6px 12px; font-size:11px; transition:var(--transition); }
.leaderboard-item:hover { background:var(--bg-card-hover); }
.leaderboard-rank { width:18px; height:18px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:10px; font-weight:700; flex-shrink:0; background:var(--bg-secondary); color:var(--text-muted); }
.leaderboard-item.rank-1 .leaderboard-rank { background:linear-gradient(135deg,#f59e0b,#fbbf24); color:#1a2235; }
.leaderboard-item.rank-2 .leaderboard-rank { background:linear-gradient(135deg,#94a3b8,#cbd5e1); color:#1a2235; }
.leaderboard-item.rank-3 .leaderboard-rank { background:linear-gradient(135deg,#b45309,#d97706); color:#1a2235; }
.leaderboard-name { flex:1; color:var(--text-primary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.leaderboard-value { font-family:var(--font-mono); font-weight:700; color:var(--text-secondary); font-size:11px; }
.leaderboard-empty { padding:20px 12px; text-align:center; color:var(--text-muted); font-size:11px; }

/* 异常计数徽章 */
.anomaly-count-badge { display:inline-flex; align-items:center; padding:2px 8px; border-radius:10px; font-size:10px; font-weight:700; background:var(--accent-red-bg); color:var(--accent-red); }
.anomaly-count-badge.zero { background:var(--accent-green-bg); color:var(--accent-green); }

@media(max-width:1400px){
    .summary-insights-grid { grid-template-columns:repeat(2,1fr); }
    .summary-leaderboard-grid { grid-template-columns:repeat(2,1fr); }
}
@media(max-width:768px){
    .summary-insights-grid { grid-template-columns:1fr; }
    .summary-leaderboard-grid { grid-template-columns:1fr; }
}

/* KPI卡片 */
.kpi-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:16px; margin-bottom:24px; }
.kpi-card { background:var(--bg-card); border:1px solid var(--border-color); border-radius:var(--radius-lg); padding:20px; position:relative; overflow:hidden; transition:var(--transition); opacity:0; transform:translateY(20px); }
.kpi-card.visible { opacity:1; transform:translateY(0); }
.kpi-card:hover { transform:translateY(-4px); border-color:rgba(59,130,246,0.3); box-shadow:var(--shadow-md),0 0 24px var(--accent-blue-glow); }
.kpi-card::before { content:''; position:absolute; top:0;left:0;right:0; height:3px; border-radius:var(--radius-lg) var(--radius-lg) 0 0; }
.kpi-card.blue::before { background:linear-gradient(90deg,var(--accent-blue),var(--accent-cyan)); }
.kpi-card.green::before { background:linear-gradient(90deg,var(--accent-green),#34d399); }
.kpi-card.purple::before { background:linear-gradient(90deg,var(--accent-purple),#a78bfa); }
.kpi-card.amber::before { background:linear-gradient(90deg,var(--accent-amber),#fbbf24); }
.kpi-card.red::before { background:linear-gradient(90deg,var(--accent-red),#f87171); }
.kpi-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; }
.kpi-label { font-size:12px; color:var(--text-secondary); font-weight:500; }
.kpi-icon { width:34px;height:34px; border-radius:var(--radius-sm); display:flex;align-items:center;justify-content:center; font-size:15px; }
.kpi-card.blue .kpi-icon { background:rgba(59,130,246,0.12); color:var(--accent-blue); }
.kpi-card.green .kpi-icon { background:var(--accent-green-bg); color:var(--accent-green); }
.kpi-card.purple .kpi-icon { background:rgba(139,92,246,0.12); color:var(--accent-purple); }
.kpi-card.amber .kpi-icon { background:rgba(245,158,11,0.12); color:var(--accent-amber); }
.kpi-card.red .kpi-icon { background:var(--accent-red-bg); color:var(--accent-red); }
.kpi-value { font-family:var(--font-mono); font-size:26px; font-weight:700; letter-spacing:-0.02em; margin-bottom:8px; line-height:1.2; }
.kpi-trend { display:flex; align-items:center; gap:5px; font-size:11px; font-weight:600; }
.kpi-trend.up { color:#ef4444 !important; } .kpi-trend.down { color:#10b981 !important; }
.trend-arrow { display:inline-flex; align-items:center; font-size:13px; }

/* 表格 */
.table-container { background:var(--bg-card); border:1px solid var(--border-color); border-radius:var(--radius-lg); overflow:hidden; border-left:4px solid var(--accent-blue); box-shadow:0 1px 3px rgba(0,0,0,0.04); }
.table-toolbar { display:flex; align-items:center; justify-content:space-between; padding:14px 18px; border-bottom:1px solid var(--border-color); flex-wrap:wrap; gap:10px; }
.toolbar-left,.toolbar-right { display:flex; align-items:center; gap:8px; }
.search-input { background:var(--bg-secondary); border:1px solid #5a7a9a; border-radius:var(--radius-sm); padding:7px 12px; color:var(--text-primary); font-size:12px; width:180px; outline:none; transition:var(--transition); font-family:inherit; }
.search-input:focus { border-color:var(--accent-blue); box-shadow:0 0 0 3px var(--accent-blue-glow); }
.btn { display:inline-flex; align-items:center; gap:5px; padding:7px 14px; border-radius:var(--radius-sm); font-size:12px; font-weight:600; font-family:inherit; cursor:pointer; transition:var(--transition); border:1px solid transparent; white-space:nowrap; }
.btn-primary { background:linear-gradient(135deg,var(--accent-blue),#2563eb); color:white; border-color:var(--accent-blue); }
.btn-primary:hover { transform:translateY(-1px); box-shadow:0 4px 12px var(--accent-blue-glow); }
.btn-secondary { background:var(--bg-secondary); color:var(--text-secondary); border-color:var(--border-color); }
.btn-secondary:hover { background:var(--bg-card-hover); color:var(--text-primary); border-color:var(--accent-blue); }
.btn-success { background:linear-gradient(135deg,var(--accent-green),#059669); color:white; }
.btn-success:hover { transform:translateY(-1px); box-shadow:0 4px 12px rgba(16,185,129,0.25); }
.btn-danger { background:linear-gradient(135deg,var(--accent-red),#dc2626); color:white; border:1px solid white!important; }
.btn-danger:hover { transform:translateY(-1px); box-shadow:0 4px 12px rgba(239,68,68,0.25); }
.btn-warning { background:linear-gradient(135deg,var(--accent-amber),#d97706); color:white; }
.btn-warning:hover { transform:translateY(-1px); box-shadow:0 4px 12px rgba(245,158,11,0.25); }
.btn-outline-warning { background:transparent; color:#d97706; border-color:#d97706; }
.btn-outline-warning:hover { background:#fef3c7; }
.btn-outline-danger { background:transparent; color:#ef4444; border-color:#ef4444; }
.btn-outline-danger:hover { background:#fef2f2; }
.btn-sm { padding:5px 10px; font-size:11px; }
.row-checkbox { width:15px; height:15px; cursor:pointer; accent-color:var(--accent-blue); }
#selectAllCheckbox { width:15px; height:15px; cursor:pointer; accent-color:var(--accent-blue); }
.data-table tbody tr.selected { background:rgba(59,130,246,0.08); }
.data-table { width:100%; border-collapse:collapse; font-size:12px; }
.data-table thead { background:var(--bg-secondary); }
.data-table th { padding:12px 14px; text-align:left; font-weight:600; color:var(--text-secondary); font-size:11px; text-transform:uppercase; letter-spacing:0.05em; border:1px solid #8090a8 !important; white-space:nowrap; cursor:pointer; user-select:none; transition:var(--transition); }
.data-table th:hover { color:var(--accent-blue); background:rgba(59,130,246,0.05); }
.data-table th .sort-indicator { margin-left:3px; font-size:9px; opacity:0.4; }
.data-table th.sorted .sort-indicator { opacity:1; color:var(--accent-blue); }
/* 列筛选行 */
.data-table thead .filter-row th { padding:4px 6px !important; background:var(--bg-card); cursor:default; vertical-align:middle; }
.data-table thead .filter-row th:hover { background:var(--bg-card); }
.col-filter-input { width:100%; min-width:60px; height:26px; border:1px solid var(--border-color); border-radius:4px; background:var(--bg-secondary); color:var(--text-primary); font-size:11px; padding:0 6px; outline:none; font-family:inherit; box-sizing:border-box; transition:var(--transition); }
.col-filter-input:focus { border-color:var(--accent-blue); box-shadow:0 0 0 2px rgba(59,130,246,0.2); }
.col-filter-input::placeholder { color:var(--text-muted); font-size:10px; }
.data-table td { padding:12px 14px; border:1px solid #8090a8 !important; color:var(--text-primary); vertical-align:middle; }
.data-table tbody tr { transition:var(--transition); }
.data-table tbody tr:nth-child(even) { background:rgba(255,255,255,0.01); }
.data-table tbody tr:hover { background:rgba(59,130,246,0.05); }
.cell-number { font-family:var(--font-mono); font-variant-numeric:tabular-nums; }
.cell-positive { color:var(--accent-green); } .cell-negative { color:var(--accent-red); }
.cell-actions { display:flex; gap:5px; }
.action-btn { width:28px;height:28px; border-radius:var(--radius-sm); border:1px solid var(--border-color); background:var(--bg-secondary); color:var(--text-secondary); cursor:pointer; display:inline-flex;align-items:center;justify-content:center; transition:var(--transition); font-size:13px; }
.action-btn:hover { border-color:var(--accent-blue); color:var(--accent-blue); background:rgba(59,130,246,0.1); }
.action-btn.delete:hover { border-color:var(--accent-red); color:var(--accent-red); background:var(--accent-red-bg); }
/* 表格操作列按钮 */
.btn-sm { display:inline-flex;align-items:center;gap:3px; padding:3px 8px; border-radius:4px; font-size:11px; font-family:inherit; cursor:pointer; transition:var(--transition); border:1px solid transparent; white-space:nowrap; }
.btn-edit { background:rgba(59,130,246,0.12); color:var(--accent-blue); border-color:rgba(59,130,246,0.25); }
.btn-edit:hover { background:rgba(59,130,246,0.2); }
.btn-delete { background:rgba(239,68,68,0.12); color:var(--accent-red); border-color:rgba(239,68,68,0.25); }
.btn-delete:hover { background:rgba(239,68,68,0.2); }
.btn-save { background:rgba(16,185,129,0.12); color:var(--accent-green); border-color:rgba(16,185,129,0.25); }
.btn-save:hover { background:rgba(16,185,129,0.2); }
.btn-cancel { background:rgba(156,163,175,0.12); color:var(--text-secondary); border-color:rgba(156,163,175,0.25); }
.btn-cancel:hover { background:rgba(156,163,175,0.2); }
.action-cell { display:flex; align-items:center; gap:4px; white-space:nowrap; min-width:85px; }
.editing-row td { padding:2px 4px !important; }
.edit-cell-input { width:100%; min-width:60px; height:26px; border:1px solid var(--accent-blue); border-radius:3px; background:var(--bg-card); color:var(--text-primary); font-size:11px; padding:0 5px; outline:none; font-family:inherit; box-sizing:border-box; }
/* 批量编辑工具栏 */
.batch-edit-bar { display:flex; align-items:center; gap:10px; padding:8px 14px; background:rgba(59,130,246,0.08); border-bottom:1px solid var(--border-color); font-size:12px; }
.batch-edit-bar span { font-weight:600; color:var(--accent-blue); }
.batch-edit-field { width:100%; }
.customer-row-checkbox { cursor:pointer; vertical-align:middle; }
.table-footer { display:flex; align-items:center; justify-content:space-between; padding:12px 18px; border-top:1px solid var(--border-color); font-size:12px; color:var(--text-secondary); }
.pagination { display:flex; align-items:center; gap:3px; }
.page-btn { min-width:30px;height:30px; border-radius:var(--radius-sm); border:1px solid var(--border-color); background:transparent; color:var(--text-secondary); cursor:pointer; display:flex;align-items:center;justify-content:center; font-size:12px; font-family:inherit; transition:var(--transition); }
.page-btn:hover:not(:disabled) { border-color:var(--accent-blue); color:var(--accent-blue); }
.page-btn.active { background:var(--accent-blue); border-color:var(--accent-blue); color:white; }
.page-btn:disabled { opacity:0.3; cursor:not-allowed; }
.page-size-select { background-color:#1e293b !important; border:1px solid var(--border-color); border-radius:var(--radius-sm); padding:5px 28px 5px 8px; color:var(--text-primary); font-size:12px; font-family:inherit; outline:none; cursor:pointer; }

/* 自定义分页大小选择器（替代原生 select 下拉） */
.custom-ps-wrapper {
    position:relative; display:inline-block; width:auto; min-width:90px;
    user-select:none; -webkit-user-select:none;
    vertical-align:middle;
}
.custom-ps-display {
    display:flex; align-items:center; justify-content:space-between; gap:6px;
    padding:5px 10px 5px 8px;
    background-color:var(--bg-secondary);
    border:1px solid var(--border-color); border-radius:var(--radius-sm);
    color:var(--text-primary); font-size:12px;
    cursor:pointer; transition:var(--transition);
    line-height:1.4; white-space:nowrap;
}
.custom-ps-display:hover { border-color:var(--accent-blue); }
.custom-ps-display::after {
    content:''; flex-shrink:0;
    width:10px; height:10px;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath fill='%2394a3b8' d='M5 7L1 2h8z'/%3E%3C/svg%3E");
    background-repeat:no-repeat; background-position:center;
    transition:transform 0.2s;
}
.custom-ps-display.open::after { transform:rotate(180deg); }
.custom-ps-dropdown {
    display:none; position:absolute; top:calc(100% + 4px); left:0;
    min-width:100%; width:auto; white-space:nowrap;
    background-color:var(--bg-card);
    border:1px solid var(--border-color); border-radius:var(--radius-sm);
    box-shadow:0 8px 24px rgba(0,0,0,0.4); z-index:1000;
    overflow:hidden; padding:3px 0;
}
.custom-ps-dropdown.open { display:block; }
.custom-ps-option {
    padding:6px 12px; font-size:12px;
    background-color:var(--bg-card);
    color:var(--text-primary); cursor:pointer;
    transition:background 0.15s;
}
.custom-ps-option:hover { background-color:var(--bg-card-hover); }
.custom-ps-option.selected { background-color:rgba(59,130,246,0.15); color:var(--accent-blue); font-weight:600; }

/* 图表 */
.charts-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:16px; margin-bottom:20px; }
.chart-card { background:var(--bg-card); border:1px solid var(--border-color); border-radius:var(--radius-lg); padding:20px; position:relative; box-shadow:0 1px 3px rgba(0,0,0,0.04); }
.chart-card.full-width { grid-column:1/-1; }
.chart-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:16px; }
.chart-title { font-size:14px; font-weight:700; display:flex; align-items:center; gap:8px; }
.chart-title::before { content:''; width:4px;height:16px; background:linear-gradient(180deg,var(--accent-blue),var(--accent-purple)); border-radius:2px; }
.chart-actions { display:flex; gap:5px; }
.chart-type-btn { padding:4px 10px; border-radius:20px; border:1px solid var(--border-color); background:transparent; color:var(--text-muted); font-size:11px; font-family:inherit; cursor:pointer; transition:var(--transition); }
.chart-type-btn.active { background:var(--accent-blue); border-color:var(--accent-blue); color:white; }
.chart-wrapper { position:relative; height:280px; }
.chart-wrapper canvas { width:100%!important; height:100%!important; }

/* 统计分析 */
.analytics-tabs { display:flex; gap:4px; background:var(--bg-secondary); padding:4px; border-radius:var(--radius-md); margin-bottom:20px; width:fit-content; }
.analytics-tab { padding:9px 20px; border-radius:var(--radius-sm); border:none; background:transparent; color:var(--text-secondary); font-size:12px; font-weight:600; font-family:inherit; cursor:pointer; transition:var(--transition); }
.analytics-tab.active { background:var(--accent-blue); color:white; box-shadow:0 2px 8px var(--accent-blue-glow); }
.stats-summary-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:20px; }
.stat-summary-card { background:var(--bg-card); border:1px solid var(--border-color); border-radius:var(--radius-md); padding:18px; }
.stat-summary-card .stat-label { font-size:11px; color:var(--text-muted); margin-bottom:6px; text-transform:uppercase; letter-spacing:0.05em; }
.stat-summary-card .stat-value { font-family:var(--font-mono); font-size:20px; font-weight:700; }
.comparison-table-container { background:var(--bg-card); border:1px solid var(--border-color); border-radius:var(--radius-lg); overflow:hidden; border-left:4px solid var(--accent-blue); box-shadow:0 1px 3px rgba(0,0,0,0.04); }
.comparison-table { width:100%; border-collapse:collapse; font-size:12px; }
.comparison-table th,.comparison-table td { padding:12px 16px; text-align:left; border-bottom:1px solid var(--border-color); }
.comparison-table th { background:var(--bg-secondary); color:var(--text-secondary); font-weight:600; font-size:11px; text-transform:uppercase; letter-spacing:0.05em; }

/* 模态框 */
.modal-overlay { position:fixed; top:0;left:0;right:0;bottom:0; background:rgba(0,0,0,0.65); backdrop-filter:blur(4px); display:flex; align-items:center; justify-content:center; z-index:1000; opacity:0; visibility:hidden; transition:all 0.3s ease; }
.modal-overlay.show { opacity:1; visibility:visible; }
.modal { background:var(--bg-secondary); border:1px solid var(--border-color); border-radius:var(--radius-lg); width:520px; max-height:90vh; overflow-y:auto; transform:scale(0.92) translateY(20px); transition:transform 0.3s cubic-bezier(0.34,1.56,0.64,1); box-shadow:var(--shadow-lg); }
.modal-overlay.show .modal { transform:scale(1) translateY(0); }
.modal-header { display:flex; align-items:center; justify-content:space-between; padding:18px 22px; border-bottom:1px solid var(--border-color); }
.modal-header h3 { font-size:16px; font-weight:700; }
.modal-close { width:30px;height:30px; border-radius:var(--radius-sm); border:none; background:var(--bg-card); color:var(--text-secondary); cursor:pointer; display:flex;align-items:center;justify-content:center; font-size:17px; transition:var(--transition); }
.modal-close:hover { background:var(--accent-red-bg); color:var(--accent-red); }
.modal-body { padding:22px; }
.form-group { margin-bottom:16px; }
.form-group label { display:block; font-size:12px; font-weight:600; color:var(--text-secondary); margin-bottom:5px; }
.form-group input,.form-group select { width:100%; padding:9px 28px 9px 12px; background-color:#1e293b !important; border:1px solid var(--border-color); border-radius:var(--radius-sm); color:var(--text-primary); font-size:13px; font-family:inherit; outline:none; transition:var(--transition); }
.form-group input:focus,.form-group select:focus { border-color:var(--accent-blue); box-shadow:0 0 0 3px var(--accent-blue-glow); }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.modal-footer { display:flex; justify-content:flex-end; gap:8px; padding:14px 22px; border-top:1px solid var(--border-color); }

/* 批量编辑弹窗 */
#batchEditModal .modal { background:#1e293b; }

/* 手动新增客户弹窗 */
#manualAddCustomerModal .modal { background:#1e293b; }
#manualAddCustomerModal .modal-header { background:linear-gradient(135deg, rgba(59,130,246,0.15), rgba(139,92,246,0.10)); border-bottom:1px solid rgba(59,130,246,0.2); }
#manualAddCustomerModal .modal-body { max-height:55vh; overflow-y:auto; background:linear-gradient(135deg, rgba(59,130,246,0.15), rgba(139,92,246,0.10)); border:1px solid rgba(59,130,246,0.12); border-radius:0 0 var(--radius-lg) var(--radius-lg); margin:0 1px 1px; }
#manualAddCustomerModal .modal-footer { background:linear-gradient(135deg, rgba(59,130,246,0.15), rgba(139,92,246,0.10)); }
.manual-add-form { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.manual-add-form .form-group { margin-bottom:0; }
.manual-add-field { width:100%; padding:8px 10px; background-color:#1e293b !important; border:1px solid var(--border-color); border-radius:var(--radius-sm); color:var(--text-primary); font-size:13px; font-family:inherit; outline:none; transition:var(--transition); }
.manual-add-field:focus { border-color:var(--accent-blue); box-shadow:0 0 0 3px var(--accent-blue-glow); }
.input-with-btn { display:flex; gap:4px; }
.input-with-btn .manual-add-field { flex:1; min-width:0; }
.btn-random { white-space:nowrap; flex-shrink:0; padding:4px 8px; font-size:11px; height:auto; line-height:1; }

/* 批量新增客户弹窗 */
#batchAddCustomerModal .modal { background:#1e293b; }
#batchAddCustomerModal .modal-body { max-height:60vh; overflow-y:auto; }
#batchAddCustomerModal textarea { font-family:Consolas,'Courier New',monospace; }

/* 登录弹窗优化 */
#loginModal .modal { width:400px; border:1px solid rgba(59,130,246,0.3); box-shadow:0 20px 60px rgba(0,0,0,0.6), 0 0 0 1px rgba(59,130,246,0.1); overflow:hidden; }
#loginModal .modal-header { background:linear-gradient(135deg, rgba(59,130,246,0.18), rgba(139,92,246,0.14)); border-bottom:1px solid rgba(59,130,246,0.25); padding:16px 22px; }

/* 新增记录弹窗 */
#addRecordModal .modal-header { background:linear-gradient(135deg, rgba(59,130,246,0.15), rgba(16,185,129,0.10)); border-bottom:1px solid rgba(59,130,246,0.2); }
#addRecordModal .modal-body { background:linear-gradient(135deg, rgba(59,130,246,0.15), rgba(16,185,129,0.10)); border:1px solid rgba(59,130,246,0.12); border-radius:0 0 var(--radius-lg) var(--radius-lg); margin:0 1px 1px; }

/* 编辑记录弹窗 */
#editModal .modal-header { background:linear-gradient(135deg, rgba(59,130,246,0.15), rgba(16,185,129,0.10)); border-bottom:1px solid rgba(59,130,246,0.2); }
#editModal .modal-body { background:linear-gradient(135deg, rgba(59,130,246,0.15), rgba(16,185,129,0.10)); border:1px solid rgba(59,130,246,0.12); border-radius:0 0 var(--radius-lg) var(--radius-lg); margin:0 1px 1px; }
#loginModal .modal-header h3 { display:flex; align-items:center; gap:8px; font-size:15px; background:linear-gradient(135deg, var(--accent-blue), var(--accent-purple)); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }
#loginModal .modal-body { padding:24px 24px 8px; text-align:center; }
#loginModal .login-icon { width:56px; height:56px; margin:0 auto 14px; border-radius:16px; background:linear-gradient(135deg, var(--accent-blue), var(--accent-purple)); display:flex; align-items:center; justify-content:center; font-size:26px; box-shadow:0 8px 24px var(--accent-blue-glow); }
#loginModal .login-subtitle { font-size:12px; color:var(--text-muted); margin-bottom:20px; }
#loginModal .form-group { text-align:left; margin-bottom:14px; }
#loginModal .form-group label { font-size:11px; text-transform:uppercase; letter-spacing:0.04em; }
#loginModal .form-group input { padding:11px 14px; font-size:13px; background-color:#0f172a !important; }
#loginModal .modal-footer { padding:12px 24px 22px; border-top:none; flex-direction:column-reverse; gap:10px; }
#loginModal .modal-footer .btn { width:100%; justify-content:center; padding:10px 14px; font-size:13px; }
#loginModal .btn-primary { background:linear-gradient(135deg, var(--accent-blue), #2563eb); box-shadow:0 4px 14px var(--accent-blue-glow); }
#loginModal .btn-primary:hover { box-shadow:0 6px 20px var(--accent-blue-glow); transform:translateY(-1px); }
#loginModal .btn-secondary { background:transparent; border-color:var(--border-color); }

/* 导入区域 */
.import-zone { border:2px dashed var(--border-color); border-radius:var(--radius-md); padding:36px; text-align:center; cursor:pointer; transition:var(--transition); margin-bottom:16px; }
.import-zone:hover,.import-zone.dragover { border-color:var(--accent-blue); background:rgba(59,130,246,0.03); }
.import-zone-icon { font-size:44px; margin-bottom:10px; opacity:0.5; }
.import-zone p { color:var(--text-secondary); font-size:13px; }
.import-zone span { color:var(--accent-blue); font-weight:600; }

/* 空状态 */
.empty-state { text-align:center; padding:56px 20px; color:var(--text-muted); }
.empty-state p { font-size:14px; margin-bottom:18px; }

/* 异常标记 */
.anomaly-badge { display:inline-flex; align-items:center; gap:4px; padding:2px 7px; border-radius:10px; font-size:10px; font-weight:600; }
.anomaly-badge.warning { background:rgba(245,158,11,0.15); color:var(--accent-amber); }
.anomaly-badge.danger { background:var(--accent-red-bg); color:var(--accent-red); }

/* Toast */
.toast-container { position:fixed; top:76px; right:20px; z-index:99999; display:flex; flex-direction:column; gap:7px; }
.toast { background:rgba(0,0,0,0.88); backdrop-filter:blur(8px); border:1px solid rgba(255,255,255,0.1); border-radius:var(--radius-md); padding:12px 18px; display:flex; align-items:center; gap:9px; font-size:13px; font-weight:600; color:#fff; box-shadow:0 8px 32px rgba(0,0,0,0.5); animation:slideInRight 0.3s ease; min-width:260px; }
.toast.success { border-left:4px solid #22c55e; background:rgba(0,0,0,0.88); backdrop-filter:blur(8px); color:#bbf7d0; } .toast.error { border-left:4px solid #f87171; background:rgba(0,0,0,0.88); backdrop-filter:blur(8px); color:#fecaca; } .toast.info { border-left:4px solid #60a5fa; background:rgba(0,0,0,0.88); backdrop-filter:blur(8px); color:#bfdbfe; }
@keyframes slideInRight { from{transform:translateX(100%);opacity:0} to{transform:translateX(0);opacity:1} }
@keyframes slideOutRight { from{transform:translateX(0);opacity:1} to{transform:translateX(100%);opacity:0} }

/* ========== 公司页面紧凑布局 ========== */
.kpi-grid.compact { grid-template-columns:repeat(5,1fr); gap:8px; margin-bottom:12px; }
.kpi-grid.compact .kpi-card { padding:12px 14px; border-radius:8px; }
.kpi-grid.compact .kpi-card .kpi-value { font-size:18px; }
.kpi-grid.compact .kpi-card .kpi-label { font-size:11px; }
.kpi-grid.compact .kpi-card .kpi-trend { font-size:10px; }
.kpi-grid.compact .kpi-card .kpi-icon { width:28px; height:28px; font-size:12px; }
.charts-grid.compact { gap:10px; margin-bottom:10px; }
.charts-grid.compact .chart-card { border-radius:8px; padding:12px 14px; }
.charts-grid.compact .chart-header { margin-bottom:8px; }
.charts-grid.compact .chart-title { font-size:12px; }
.charts-grid.compact .chart-wrapper { height:220px; }
.charts-grid.compact .chart-wrapper.compact { height:220px; }
.table-container.compact { border-radius:8px; }
.data-table.compact th, .data-table.compact td { padding:8px 10px; font-size:12px; }
.data-table.compact th { font-size:11px; }

/* 表格横向滚动容器 */
.table-scroll-wrapper {
    overflow-x: auto;
    max-width: 100%;
    cursor: grab;
    scrollbar-width: thin;
    scrollbar-color: rgba(59,130,246,0.4) rgba(0,0,0,0.08);
}
.table-scroll-wrapper.grabbing {
    cursor: grabbing !important;
    user-select: none;
    -webkit-user-select: none;
}
.table-scroll-wrapper::-webkit-scrollbar { height: 8px; }
.table-scroll-wrapper::-webkit-scrollbar-track { background: rgba(0,0,0,0.08); border-radius: 4px; }
.table-scroll-wrapper::-webkit-scrollbar-thumb { background: rgba(59,130,246,0.4); border-radius: 4px; }
.table-scroll-wrapper::-webkit-scrollbar-thumb:hover { background: rgba(59,130,246,0.7); }
/* 强制表格不收缩，确保出现横向滚动条 */
.table-scroll-wrapper .data-table {
    min-width: 900px;
}
@media(max-width:1400px){ .kpi-grid.compact{grid-template-columns:repeat(3,1fr)} }

/* 响应式 */
@media(max-width:1400px){ .kpi-grid{grid-template-columns:repeat(3,1fr)} .charts-grid{grid-template-columns:1fr} .stats-summary-grid{grid-template-columns:repeat(2,1fr)} }
@media(max-width:1024px){ .sidebar{transform:translateX(-100%)} .sidebar.open{transform:translateX(0)} .main-content{margin-left:0} .kpi-grid{grid-template-columns:repeat(2,1fr)} }
@media(max-width:768px){ .page-content{padding:14px} .topbar{padding:0 14px} .kpi-grid{grid-template-columns:1fr} .table-toolbar{flex-direction:column;align-items:stretch} .table-footer{flex-direction:column;gap:10px} .form-row{grid-template-columns:1fr} .modal{width:95%;margin:14px} }
::-webkit-scrollbar{width:5px;height:5px} ::-webkit-scrollbar-track{background:transparent} ::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}
.mobile-menu-btn { display:none; width:34px;height:34px; border-radius:var(--radius-sm); border:1px solid var(--border-color); background:var(--bg-card); color:var(--text-primary); cursor:pointer; align-items:center; justify-content:center; font-size:17px; }
@media(max-width:1024px){ .mobile-menu-btn{display:inline-flex} }

/* 平台颜色 */
.plat-baidu { background:#2932E1!important; color:#fff!important; }
.plat-360 { background:#F5A623!important; color:#fff!important; }
.plat-bing { background:#008373!important; color:#fff!important; }
.dot-baidu { background:#4F6EF7!important; }
.dot-360 { background:#FFB900!important; }
.dot-bing { background:#00A4EF!important; }
.badge-feed { background:rgba(139,92,246,0.15); color:#a78bfa; }
.badge-bid { background:rgba(59,130,246,0.15); color:#60a5fa; }

/* 客户表头必填标记 */
.required-star { color: #ef4444; font-size: 18px; font-weight: 700; margin-left: 3px; vertical-align: middle; line-height: 1; }
/* 系统生成的手机号背景色 */
.cell-auto-gen { background-color: #a16207 !important; color: #fef3c7 !important; } /* 深黄色醒目背景，确保文字清晰 */
.row-auto-gen { background: rgba(255, 152, 0, 0.08) !important; } /* 随机生成的行浅橙背景 */

/* ========== 数据导入区块 ========== */
.data-import-section {
    background:rgba(17,24,39,0.7); border:2px solid rgba(59,130,246,0.25);
    border-radius:8px; padding:16px 18px; margin-top:16px;
    border-left:4px solid var(--accent-blue);
    box-shadow:0 4px 16px rgba(0,0,0,0.15), inset 0 1px 0 rgba(255,255,255,0.03);
}
.data-import-section .btn { border:1.5px solid; }
.data-import-section .btn-secondary { background:rgba(255,255,255,0.08); color:#e0e0e0; border-color:rgba(255,255,255,0.18); }
.data-import-section .btn-secondary:hover { background:rgba(255,255,255,0.14); color:#fff; border-color:var(--accent-blue); }
.data-import-section .btn-primary { background:linear-gradient(135deg,var(--accent-blue),#2563eb); color:#fff; border-color:rgba(96,165,250,0.5); box-shadow:0 2px 8px var(--accent-blue-glow); }
.data-import-section .btn-primary:hover { box-shadow:0 4px 16px var(--accent-blue-glow); }
.data-import-section .btn-danger { background:linear-gradient(135deg,var(--accent-red),#dc2626); color:#fff; border-color:rgba(248,113,113,0.25); box-shadow:0 2px 8px rgba(239,68,68,0.2); }
.data-import-section .btn-customer-scroll { background:rgba(255,255,255,0.06); border:1.5px solid rgba(255,255,255,0.12); color:var(--text-secondary); }
.data-import-section .btn-customer-scroll:hover { background:rgba(255,255,255,0.12); color:#fff; border-color:var(--accent-blue); }
.data-import-section .import-tab { border:1.5px solid rgba(255,255,255,0.1); background:rgba(255,255,255,0.04); color:var(--text-muted); }
.data-import-section .import-tab.active { background:var(--accent-blue); color:#fff; border-color:var(--accent-blue); }
.customer-section {
    background:var(--bg-card); border:1px solid var(--border-color);
    border-radius:8px; padding:16px 18px; margin-top:16px;
    border-left:4px solid var(--accent-green);
    box-shadow:0 1px 3px rgba(0,0,0,0.04);
}
.import-section-header {
    display:flex; align-items:center; justify-content:space-between;
    margin-bottom:14px;
}
.import-section-title {
    font-size:14px; font-weight:700; display:flex; align-items:center; gap:8px;
}
.import-section-title::before {
    content:''; width:4px; height:16px;
    background:linear-gradient(180deg,var(--accent-blue),var(--accent-purple));
    border-radius:2px;
}
.import-options {
    display:flex; align-items:flex-end; gap:16px; margin-bottom:14px; flex-wrap:wrap;
}
.import-option-group { display:flex; flex-direction:column; gap:4px; }
.import-option-group label {
    font-size:11px; font-weight:600; color:var(--text-muted);
    text-transform:uppercase; letter-spacing:0.04em;
}
.import-path-display {
    background:var(--bg-secondary); border:1px solid var(--border-color);
    border-radius:var(--radius-sm); padding:7px 12px;
    font-size:12px; color:var(--text-secondary); min-width:200px;
    font-family:var(--font-mono);
}
.import-preview {
    background:var(--bg-secondary); border:1px solid var(--border-color);
    border-radius:var(--radius-md); overflow:hidden;
}
.import-preview-header {
    display:flex; align-items:center; justify-content:space-between;
    padding:10px 14px; border-bottom:1px solid var(--border-color);
    font-size:12px; font-weight:600; color:var(--text-secondary);
    min-width: 0;
    overflow: hidden;
}
.import-preview-table-wrapper {
    max-height:300px;
    overflow-x: auto;
    overflow-y: auto;
    cursor: grab;
    scrollbar-width: thin;
    scrollbar-color: rgba(59,130,246,0.4) rgba(0,0,0,0.08);
    min-width: 0;
}
.import-preview-table-wrapper::-webkit-scrollbar { width: 8px; height: 8px; }
.import-preview-table-wrapper::-webkit-scrollbar-track { background: rgba(0,0,0,0.08); border-radius: 4px; }
.import-preview-table-wrapper::-webkit-scrollbar-thumb { background: rgba(59,130,246,0.4); border-radius: 4px; }
.import-preview-table-wrapper::-webkit-scrollbar-thumb:hover { background: rgba(59,130,246,0.7); }
.import-preview-table-wrapper .data-table {
    margin: 0;
    table-layout: fixed;
}

/* 导入预览表格滚动容器 */
#importScrollArea,
#customerPreviewScrollArea {
    position: relative;
    overflow: hidden;
    min-width: 0;
}
#importPreviewWrapper,
#customerPreviewWrapper {
    cursor: grab;
    min-width: 0;
}
#importPreviewWrapper.grabbing,
#customerPreviewWrapper.grabbing {
    cursor: grabbing !important;
    user-select: none;
    -webkit-user-select: none;
}
#customerTableWrapper .data-table { width:max-content; min-width:100%; }

/* 客户表格滚动条 */
#customerTableWrapper {
    cursor: grab;
}
#customerTableWrapper.grabbing {
    cursor: grabbing !important;
    user-select: none;
    -webkit-user-select: none;
}
#customerTableWrapper::-webkit-scrollbar { width:14px; height:14px; }
#customerTableWrapper::-webkit-scrollbar-track { background:rgba(0,0,0,0.08); border-radius:7px; }
#customerTableWrapper::-webkit-scrollbar-thumb { background:rgba(59,130,246,0.5); border-radius:7px; }
#customerTableWrapper::-webkit-scrollbar-thumb:hover { background:rgba(59,130,246,0.8); }
#customerTableWrapper::-webkit-scrollbar-corner { background:rgba(0,0,0,0.08); }

/* 拖拽手柄 */
.customer-scroll-handle {
    position:absolute; z-index:20; cursor:grab;
    display:flex; align-items:center; justify-content:center;
    font-size:9px; color:#fff;
    user-select:none !important; -webkit-user-select:none !important;
    touch-action:none !important;
    opacity:0.7; transition:opacity 0.15s, box-shadow 0.15s;
    -webkit-user-drag:none;
}
.customer-scroll-handle:hover { opacity:1; box-shadow:0 0 8px rgba(59,130,246,0.5); }
.customer-scroll-handle.dragging { cursor:grabbing; opacity:1 !important; box-shadow:0 0 12px rgba(59,130,246,0.7); }
.customer-scroll-handle-v {
    right:18px; width:14px; height:50px; border-radius:7px;
    background:rgba(59,130,246,0.8);
}
.customer-scroll-handle-h {
    bottom:18px; height:14px; width:50px; border-radius:7px;
    background:rgba(59,130,246,0.8);
}

/* 客户表格左右滑动按钮 */
.btn-customer-scroll {
    display:inline-flex; align-items:center; justify-content:center;
    width:32px; height:32px; border-radius:8px;
    border:1px solid var(--border-color);
    background:var(--bg-card); color:var(--text-secondary);
    cursor:pointer; transition:all 0.2s ease;
    padding:0; flex-shrink:0;
}
.btn-customer-scroll:hover {
    background:var(--primary-color); color:#fff;
    border-color:var(--primary-color);
    box-shadow:0 2px 8px rgba(59,130,246,0.3);
}
.btn-customer-scroll:active { transform:scale(0.92); }
.btn-customer-scroll.disabled {
    opacity:0.35; cursor:not-allowed;
    pointer-events:none;
}

/* 导入Tab切换 */
.import-tabs {
    display:flex; gap:4px; background:var(--bg-secondary);
    padding:4px; border-radius:var(--radius-md); margin-bottom:14px; width:fit-content;
}
.import-tab {
    padding:7px 16px; border-radius:var(--radius-sm); border:none;
    background:transparent; color:var(--text-secondary); font-size:12px;
    font-weight:600; font-family:inherit; cursor:pointer; transition:var(--transition);
    display:inline-flex; align-items:center; gap:5px;
}
.import-tab:hover { color:var(--text-primary); background:rgba(255,255,255,0.03); }
.import-tab.active { background:var(--accent-blue); color:white; box-shadow:0 2px 8px var(--accent-blue-glow); }

/* 截图识别区 */
.import-image-zone {
    border:2px dashed var(--border-color); border-radius:var(--radius-md);
    padding:36px; text-align:center; cursor:pointer; transition:var(--transition);
    margin-bottom:14px;
}
.import-image-zone:hover,.import-image-zone.dragover {
    border-color:var(--accent-cyan); background:rgba(6,182,212,0.03);
}

/* 粘贴上传区 */
.import-paste-zone {
    border:2px dashed var(--border-color); border-radius:var(--radius-md);
    padding:24px 20px; text-align:center; transition:var(--transition);
    margin-bottom:14px;
}
.import-paste-zone:hover { border-color:var(--accent-cyan); background:rgba(6,182,212,0.03); }
.import-paste-zone textarea:focus { outline:none; border-color:var(--accent-blue) !important; box-shadow:0 0 0 3px var(--accent-blue-glow); }

/* OCR进度条 */
.ocr-progress {
    margin-bottom:14px;
}
.ocr-progress-bar {
    height:6px; background:var(--bg-secondary); border-radius:3px;
    overflow:hidden; margin-bottom:8px;
}
.ocr-progress-fill {
    height:100%; width:0%; border-radius:3px;
    background:linear-gradient(90deg,var(--accent-blue),var(--accent-cyan));
    transition:width 0.3s ease;
}
.ocr-progress-text {
    font-size:11px; color:var(--text-muted); text-align:center;
}

/* 截图预览 */
.image-preview {
    margin-bottom:14px; text-align:center;
    border:1px solid var(--border-color); border-radius:var(--radius-md);
    padding:8px; background:var(--bg-secondary);
}
.image-preview img {
    max-width:100%; max-height:300px; border-radius:4px;
}

/* 预览编辑输入框 */
.preview-edit-input {
    background:var(--bg-card); border:1px solid var(--accent-blue);
    border-radius:4px; color:var(--text-primary); font-size:12px;
    font-family:var(--font-mono); padding:3px 6px; outline:none;
    box-shadow:0 0 0 2px var(--accent-blue-glow);
}
.preview-edit-input:focus {
    border-color:var(--accent-cyan);
}

/* ========== 术语解释页 ========== */
.glossary-container { max-width:100%; }
.glossary-header {
    margin-bottom:16px; padding-bottom:14px;
    border-bottom:1px solid var(--border-color);
}
.glossary-header h2 { font-size:18px; font-weight:700; margin-bottom:4px; }
.glossary-header p { font-size:12px; color:var(--text-muted); line-height:1.5; }

/* 快速导航 */
.glossary-nav {
    display:flex; flex-wrap:wrap; gap:6px;
    padding:10px 12px; margin-bottom:18px;
    background:rgba(26,34,53,0.85); border:1px solid var(--border-color);
    border-radius:var(--radius-md);
    position:sticky; top:8px; z-index:20;
    backdrop-filter:blur(8px);
}
.glossary-nav-item {
    font-size:11px; font-weight:600;
    color:var(--text-secondary); text-decoration:none;
    padding:4px 11px; background:var(--bg-secondary);
    border:1px solid var(--border-color); border-radius:12px;
    transition:var(--transition); white-space:nowrap;
}
.glossary-nav-item:hover {
    color:var(--accent-blue); border-color:var(--accent-blue);
    background:rgba(59,130,246,0.12);
}

.glossary-category { margin-bottom:18px; scroll-margin-top:72px; }
.glossary-category-title {
    font-size:13px; font-weight:700; color:var(--text-primary);
    padding:8px 12px; margin-bottom:10px;
    background:linear-gradient(90deg,rgba(59,130,246,0.14),transparent);
    border-left:3px solid var(--accent-blue);
    border-radius:0 var(--radius-sm) var(--radius-sm) 0;
    display:flex; align-items:center; gap:8px;
}
.glossary-list {
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(320px,1fr));
    gap:8px; align-items:start;
}

.glossary-item {
    background:var(--bg-card); border:1px solid var(--border-color);
    border-radius:var(--radius-sm); padding:10px 12px;
    transition:var(--transition);
    display:flex; flex-direction:column; gap:5px;
}
.glossary-item:hover {
    border-color:rgba(59,130,246,0.4);
    background:var(--bg-card-hover);
    box-shadow:0 2px 8px rgba(59,130,246,0.1);
}

.glossary-term {
    font-size:13px; font-weight:700; color:var(--text-primary);
    display:flex; align-items:center; gap:8px; flex-wrap:wrap;
}
.glossary-tag {
    font-size:10px; font-weight:600; color:var(--accent-blue);
    background:rgba(59,130,246,0.12); padding:2px 7px;
    border-radius:8px; letter-spacing:0.03em;
    font-family:var(--font-mono);
}
.glossary-tag.platform-baidu { color:#4F6EF7; background:rgba(79,110,247,0.16); }
.glossary-tag.platform-360 { color:#FFB900; background:rgba(255,185,0,0.16); }
.glossary-tag.platform-bing { color:#00A4EF; background:rgba(0,164,239,0.16); }

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

.glossary-formula-section {
    background:linear-gradient(135deg,rgba(59,130,246,0.07),rgba(139,92,246,0.05));
    border:1px solid rgba(59,130,246,0.3);
    border-radius:var(--radius-md); padding:14px 16px; margin-top:8px;
    scroll-margin-top:72px;
}
.glossary-formula-section .glossary-category-title {
    background:transparent; border-left-color:var(--accent-purple);
    padding:0 0 0 10px; margin-bottom:10px;
}
.glossary-formula-list {
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
    gap:8px;
}
.glossary-formula-item {
    display:flex; align-items:center; gap:10px;
    padding:8px 12px; background:var(--bg-card);
    border-radius:var(--radius-sm); border:1px solid var(--border-color);
}
.formula-label {
    font-size:12px; font-weight:700; color:var(--accent-blue);
    min-width:56px; font-family:var(--font-mono);
}
.formula-eq {
    font-size:14px; color:var(--text-muted); font-weight:700;
}
.formula-expr {
    font-size:12px; color:var(--text-secondary);
    font-family:var(--font-mono); letter-spacing:0.02em;
}
@media(max-width:768px){
    .glossary-list { grid-template-columns:1fr; }
    .glossary-formula-list { grid-template-columns:1fr; }
    .glossary-nav { position:static; }
}

/* ==================== 上半月与下半月对比页 ==================== */
.halfmonth-legend {
    display:flex; align-items:center; gap:18px; flex-wrap:wrap;
    background:var(--bg-secondary); border:1px solid var(--border-color);
    border-radius:var(--radius-md); padding:10px 14px; margin-bottom:14px;
    border-left:4px solid var(--accent-purple);
}
.halfmonth-legend-item {
    display:inline-flex; align-items:center; gap:6px;
    font-size:12px; color:var(--text-secondary); font-weight:600;
}
.halfmonth-dot {
    display:inline-block; width:10px; height:10px; border-radius:50%;
}
.halfmonth-dot.first { background:#3b82f6; box-shadow:0 0 6px rgba(59,130,246,0.5); }
.halfmonth-dot.second { background:#f59e0b; box-shadow:0 0 6px rgba(245,158,11,0.5); }
.halfmonth-legend-hint {
    font-size:11px; color:var(--text-muted); margin-left:auto;
}

.halfmonth-overview-grid {
    display:grid; grid-template-columns:repeat(3,1fr); gap:12px;
}
.hm-kpi-card {
    background:var(--bg-card); border:1px solid var(--border-color);
    border-radius:var(--radius-md); padding:12px 14px;
    display:flex; flex-direction:column; gap:8px;
    transition:var(--transition);
}
.hm-kpi-card:hover { border-color:rgba(59,130,246,0.4); background:var(--bg-card-hover); }
.hm-kpi-label {
    font-size:11px; color:var(--text-muted); font-weight:600;
    text-transform:uppercase; letter-spacing:0.05em;
}
.hm-kpi-rows { display:flex; flex-direction:column; gap:5px; }
.hm-kpi-row {
    display:flex; align-items:center; justify-content:space-between; gap:8px;
    padding:6px 10px; border-radius:var(--radius-sm); background:rgba(255,255,255,0.02);
}
.hm-kpi-row.first { border-left:3px solid #3b82f6; }
.hm-kpi-row.second { border-left:3px solid #f59e0b; }
.hm-tag {
    font-size:10px; color:var(--text-muted); font-weight:600;
    padding:1px 6px; border-radius:8px; background:rgba(255,255,255,0.05);
}
.hm-val {
    font-size:14px; font-weight:700; color:var(--text-primary);
    font-family:var(--font-mono);
}
.hm-kpi-change {
    font-size:11px; font-weight:600; text-align:right;
    font-family:var(--font-mono);
}
.hm-kpi-diff {
    font-size:10px; font-weight:500; text-align:right;
    font-family:var(--font-mono); opacity:0.7;
    margin-top:-6px;
    line-height:1.3;
}
.hm-good { color:var(--accent-green); }
.hm-bad { color:var(--accent-red); }
.hm-flat { color:var(--text-muted); opacity:0.7; }

.halfmonth-count-badge {
    font-size:11px; color:var(--accent-blue); font-weight:600;
    background:rgba(59,130,246,0.12); padding:3px 10px;
    border-radius:10px;
}

.hm-cell-tag {
    display:inline-block; font-size:10px; font-weight:600;
    padding:2px 7px; border-radius:8px;
}
.hm-cell-tag.first { color:#3b82f6; background:rgba(59,130,246,0.14); }
.hm-cell-tag.second { color:#f59e0b; background:rgba(245,158,11,0.14); }
.hm-cell-tag.new { color:var(--accent-cyan); background:rgba(6,182,212,0.14); }
.hm-cell-tag.flat { color:var(--text-muted); background:rgba(255,255,255,0.05); }
.hm-cell-change {
    font-size:11px; font-weight:600; font-family:var(--font-mono);
}

/* ========== 线索计数模式下拉：与 date-shortcut-btn 背景风格统一 ========== */
#leadsCountMode {
    height: 28px;
    padding: 0 28px 0 10px;
    font-weight: 600;
    font-size: 11px;
    line-height: 28px;
    border-radius: var(--radius-md);
    background-color: #253050 !important;
    border: 1px solid var(--border-color);
    color: var(--text-secondary);
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2394a3b8' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
    transition: var(--transition);
    cursor: pointer;
    white-space: nowrap;
    flex-shrink: 0;
}
#leadsCountMode:hover {
    background-color: #253050 !important;
    color: var(--accent-blue);
    border-color: var(--accent-blue);
}
#leadsCountMode option {
    background-color: #1a2235;
    color: #f1f5f9;
}
#leadsCountMode:focus {
    outline: none;
    border-color: var(--accent-blue);
    color: var(--accent-blue);
    box-shadow: 0 0 0 3px var(--accent-blue-glow);
}

/* ========== 顶栏登出/登录按钮：与 date-shortcut-btn 背景风格统一 ========== */
.topbar-right > .btn-secondary.btn-sm {
    height: 28px;
    padding: 0 12px;
    line-height: 26px;
    background-color: #253050;
    background-image: none;
    border: 1px solid var(--border-color);
    color: var(--text-secondary);
    font-weight: 600;
    font-size: 11px;
    border-radius: var(--radius-md);
    transition: var(--transition);
    flex-shrink: 0;
}
.topbar-right > .btn-secondary.btn-sm:hover {
    background-color: #253050;
    color: var(--accent-blue);
    border-color: var(--accent-blue);
    transform: none;
    box-shadow: none;
}

@media(max-width:1400px){
    .halfmonth-overview-grid { grid-template-columns:repeat(2,1fr); }
}
@media(max-width:768px){
    .halfmonth-overview-grid { grid-template-columns:1fr; }
    .halfmonth-legend-hint { margin-left:0; width:100%; }
}

