/* 防止 Vue 未挂载时模板闪烁 */
[v-cloak]{display:none!important}
*{margin:0;padding:0;box-sizing:border-box}
:root{
  --primary:#2563eb;--primary-light:#3b82f6;--primary-dark:#1d4ed8;
  --sidebar-bg:#1e293b;--sidebar-width:200px;--sidebar-width-left:60px;--sidebar-width-right:140px;
  --header-height:56px;--bg:#f1f5f9;
  --card-radius:12px;--border:#e2e8f0;--text:#1e293b;--text-muted:#64748b;
  --success:#10b981;--warning:#f59e0b;--danger:#ef4444;--info:#6366f1;
  --shadow:0 1px 3px rgba(0,0,0,0.08),0 1px 2px rgba(0,0,0,0.06);
  --shadow-lg:0 10px 40px rgba(0,0,0,0.12);
  --card-bg:#fff;--header-bg:#fff;--input-bg:#fff;
}
:root.dark{
  --primary:#3b82f6;--primary-light:#60a5fa;--primary-dark:#2563eb;
  --sidebar-bg:#0f172a;--bg:#0f172a;
  --card-radius:12px;--border:#334155;--text:#f1f5f9;--text-muted:#94a3b8;
  --success:#10b981;--warning:#f59e0b;--danger:#ef4444;--info:#818cf8;
  --shadow:0 1px 3px rgba(0,0,0,0.3),0 1px 2px rgba(0,0,0,0.2);
  --shadow-lg:0 10px 40px rgba(0,0,0,0.4);
  --card-bg:#1e293b;--header-bg:#1e293b;--input-bg:#334155;
}
body{font-family:'Inter','PingFang SC','Microsoft YaHei',sans-serif;background:var(--bg);color:var(--text);font-size:14px;overflow:hidden;height:100vh;transition:background 0.3s, color 0.3s}
#app,html,body{height:100%}
/* 整体布局 */
.layout{display:flex;height:100vh;overflow:hidden}
/* 侧边栏 */
.sidebar{width:var(--sidebar-width);background:var(--sidebar-bg);display:flex;flex-direction:column;transition:width 0.2s;overflow:hidden;flex-shrink:0}
.sidebar.collapsed{width:0;padding:0;overflow:hidden}
.sidebar-logo{height:var(--header-height);display:flex;align-items:center;padding:0 16px;gap:10px;border-bottom:1px solid rgba(255,255,255,0.08);flex-shrink:0}
.sidebar-logo-icon{width:32px;height:32px;background:linear-gradient(135deg,var(--primary),var(--primary-light));border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.sidebar-logo-text{font-size:18px;font-weight:700;color:#fff;letter-spacing:-0.5px;white-space:nowrap;overflow:hidden}
.sidebar.collapsed .sidebar-logo-text{display:none}
.sidebar-menu{flex:1;overflow-y:auto;padding:8px 0}
/* 版本号区域 */
.sidebar-version{display:flex;align-items:center;gap:6px;padding:10px 16px;cursor:pointer;border-top:1px solid rgba(255,255,255,0.06);color:rgba(255,255,255,0.35);font-size:12px;user-select:none;transition:color 0.15s;flex-shrink:0}
.sidebar-version:hover{color:rgba(255,255,255,0.65)}
.sidebar-version-icon{flex-shrink:0}
.sidebar-version-text{display:flex;align-items:center;gap:5px;white-space:nowrap;overflow:hidden}
.sidebar.collapsed .sidebar-version-text{display:none}
.sidebar-version-num{font-weight:600;color:rgba(255,255,255,0.5)}
.sidebar-version-env{font-size:10px;padding:1px 5px;border-radius:4px;font-weight:600;text-transform:uppercase}
.env-main{background:rgba(16,185,129,0.2);color:#34d399}
.env-consultant{background:rgba(245,158,11,0.2);color:#fbbf24}
.env-dev{background:rgba(99,102,241,0.2);color:#a5b4fc}
/* 版本详情弹窗 */
.version-detail-popup{position:absolute;bottom:48px;left:12px;width:280px;background:#1e293b;border:1px solid rgba(255,255,255,0.12);border-radius:10px;padding:14px 16px;z-index:200;box-shadow:0 8px 24px rgba(0,0,0,0.4)}
.version-detail-header{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:#fff;margin-bottom:6px}
.version-detail-meta{font-size:11px;color:#6b7280;margin-bottom:10px}
.version-changelog{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:5px}
.version-changelog li{font-size:12px;color:#9ca3af;padding-left:12px;position:relative}
.version-changelog li::before{content:'·';position:absolute;left:0;color:#4ade80}
.env-badge{font-size:11px;padding:2px 7px;border-radius:4px;font-weight:600;text-transform:uppercase}
.version-fade-enter-active,.version-fade-leave-active{transition:opacity 0.15s,transform 0.15s}
.version-fade-enter-from,.version-fade-leave-to{opacity:0;transform:translateY(6px)}
.sidebar-menu::-webkit-scrollbar{width:4px}
.sidebar-menu::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.1);border-radius:4px}
.menu-item{position:relative}
.menu-item-link{display:flex;align-items:center;padding:10px 16px;gap:10px;color:rgba(255,255,255,0.6);text-decoration:none;cursor:pointer;border-radius:8px;margin:2px 8px;transition:all 0.15s;white-space:nowrap;overflow:hidden;user-select:none}
.menu-item-link:hover{background:rgba(255,255,255,0.08);color:#fff}
.menu-item-link.active{background:rgba(37,99,235,0.25);color:#93c5fd}
.menu-item-link .menu-icon{width:20px;height:20px;flex-shrink:0;opacity:0.8}
.menu-item-link.active .menu-icon{opacity:1}
.menu-item-link .menu-text{font-size:13.5px;font-weight:500;overflow:hidden;text-overflow:ellipsis}
.sidebar.collapsed .menu-text,.sidebar.collapsed .menu-submenu,.sidebar.collapsed .menu-badge{display:none}
.menu-submenu{padding-left:0}
.menu-submenu .menu-item-link{padding:8px 16px;font-size:13px}
.menu-badge{background:var(--primary);color:#fff;font-size:10px;padding:2px 6px;border-radius:10px;margin-left:auto;white-space:nowrap}
.menu-arrow{width:16px;height:16px;flex-shrink:0;margin-left:auto;transition:transform 0.2s;color:#9ca3af}
.menu-item-link.active .menu-arrow{color:var(--primary)}
/* 一级菜单（父级菜单）样式 */
.menu-item.parent-menu{margin-top:8px}
.menu-item.parent-menu::before{content:'';display:block;height:1px;background:rgba(255,255,255,0.1);margin:8px 16px}
.menu-item.parent-menu:first-child::before{display:none}
.menu-item.parent-menu .menu-item-link{font-weight:600;padding:12px 16px;cursor:pointer;opacity:0.75}
.menu-item.parent-menu .menu-item-link.has-children{cursor:pointer}
.menu-item.parent-menu .menu-item-link .menu-icon{width:22px;height:22px}
.menu-item.parent-menu .menu-item-link:hover{background:rgba(255,255,255,0.08);opacity:1}
/* 二级菜单（子级菜单）样式 */
.menu-item.child-menu .menu-item-link{padding-left:44px;font-weight:400;opacity:0.85}
.menu-item.child-menu .menu-item-link .menu-icon{width:18px;height:18px}
.menu-item.child-menu .menu-item-link:hover{opacity:1}
/* 菜单分组标题 */
.menu-section-title{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:rgba(255,255,255,0.3);padding:16px 24px 6px;white-space:nowrap}
/* ====== 双列菜单布局 ====== */
.sidebar-inner{display:flex;flex:1;overflow:hidden;min-height:0}
/* 左列：一级菜单 */
.sidebar-col-left{width:var(--sidebar-width-left);min-width:var(--sidebar-width-left);background:rgba(0,0,0,0.15);overflow-y:auto;border-right:1px solid rgba(255,255,255,0.06)}
.sidebar-col-left::-webkit-scrollbar{width:3px}
.sidebar-col-left::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.08);border-radius:3px}
.sidebar-left-item{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:10px 4px 8px;cursor:pointer;color:rgba(255,255,255,0.45);transition:all 0.15s;font-size:10px;gap:2px;text-align:center;position:relative;border-left:3px solid transparent}
.sidebar-left-item:hover{background:rgba(255,255,255,0.06);color:rgba(255,255,255,0.85)}
.sidebar-left-item.active{background:rgba(37,99,235,0.2);color:#93c5fd;border-left-color:#60a5fa}
.sidebar-left-item svg{width:20px;height:20px;flex-shrink:0;opacity:0.7}
.sidebar-left-item.active svg{opacity:1}
.sidebar-left-item:hover svg{opacity:0.9}
.sidebar-left-label{font-size:10px;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
/* 右列：二级菜单 */
.sidebar-col-right{width:var(--sidebar-width-right);min-width:var(--sidebar-width-right);display:flex;flex-direction:column;overflow:hidden;background:rgba(0,0,0,0.08)}
.sidebar-right-header{padding:12px 14px 10px;font-size:11px;font-weight:500;color:rgba(255,255,255,0.35);background:rgba(0,0,0,0.12);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0;letter-spacing:1px;text-transform:uppercase}
.sidebar-right-menu{flex:1;overflow-y:auto;padding:6px 0}
.sidebar-right-menu::-webkit-scrollbar{width:4px}
.sidebar-right-menu::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.1);border-radius:4px}
/* 右列菜单项 */
.sidebar-col-right .menu-item-link{margin:2px 6px;padding:10px 12px;border-radius:8px;color:rgba(255,255,255,0.7);transition:all 0.15s}
.sidebar-col-right .menu-item-link:hover{background:rgba(255,255,255,0.06);color:rgba(255,255,255,0.95)}
.sidebar-col-right .menu-item-link.active{background:rgba(37,99,235,0.2);color:#93c5fd}
.sidebar-col-right .menu-item-link .menu-icon{display:none}
.sidebar-col-right .menu-item-link .menu-text{font-size:13px}
/* 侧边栏折叠 */
.sidebar.collapsed{width:0;min-width:0}
.sidebar.collapsed .sidebar-inner{display:none}
/* 移动端 */
.sidebar-mobile-back{display:none;padding:10px 14px;font-size:12px;color:#93c5fd;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.06);background:rgba(0,0,0,0.1)}
.sidebar-mobile-back:hover{background:rgba(255,255,255,0.05)}
@media(max-width:768px){
  .sidebar:not(.collapsed){position:fixed;z-index:100;height:100vh;transform:translateX(0);box-shadow:4px 0 20px rgba(0,0,0,0.15)}
  .sidebar.col-mobile-shift .sidebar-mobile-back{display:flex;align-items:center;gap:4px}
  .sidebar-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.4);z-index:99}
  .sidebar.collapsed{transform:translateX(-100%)}
}
/* 主内容 */
.main{flex:1;display:flex;flex-direction:column;overflow:clip;min-width:0}
/* 顶部栏 */
.header{height:var(--header-height);background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 20px;gap:16px;flex-shrink:0;box-shadow:var(--shadow)}
.header-left{display:flex;align-items:center;gap:12px}
.toggle-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;border-radius:8px;color:var(--text-muted);transition:background 0.15s}
.toggle-btn:hover{background:var(--bg)}
.header-breadcrumb{display:flex;align-items:center;gap:6px;font-size:14px;color:var(--text-muted)}
.header-breadcrumb span{color:var(--text);font-weight:500}
.header-right{display:flex;align-items:center;gap:8px;margin-left:auto}
.header-action{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;border-radius:8px;color:var(--text-muted);transition:all 0.15s;position:relative}
.header-action:hover{background:var(--bg);color:var(--text)}
.header-action svg{width:20px;height:20px}
.notif-badge{position:absolute;top:6px;right:6px;width:8px;height:8px;background:var(--danger);border-radius:50%;border:2px solid #fff}
.user-menu{display:flex;align-items:center;gap:8px;padding:4px 10px;border-radius:8px;cursor:pointer;transition:background 0.15s}
.user-menu:hover{background:var(--bg)}
.user-avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--info));display:flex;align-items:center;justify-content:center;color:#fff;font-size:13px;font-weight:600}
.user-info{font-size:13px;line-height:1.3}
.user-name{font-weight:600;color:var(--text)}
.user-role{font-size:11px;color:var(--text-muted)}
/* 页面内容 */
.content{padding:20px;overflow-y:auto;flex:1;height:calc(100vh - var(--header-height))}
/* 页面标题 */
.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;flex-wrap:wrap;gap:12px}
.page-title{font-size:20px;font-weight:700;color:var(--text);letter-spacing:-0.5px}
.page-subtitle{font-size:13px;color:var(--text-muted);margin-top:2px}
.page-actions{display:flex;gap:8px;flex-wrap:wrap}
/* 卡片 */
.card{background:#fff;border-radius:var(--card-radius);box-shadow:var(--shadow);border:1px solid var(--border);overflow:hidden}
.card-header{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:12px}
.card-title{font-size:15px;font-weight:600;color:var(--text)}
.card-body{padding:20px}
/* 按钮 */
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;border:none;transition:all 0.15s;white-space:nowrap;text-decoration:none}
.btn svg{width:16px;height:16px}
.btn-primary{background:var(--primary);color:#fff}
.btn-primary:hover{background:var(--primary-dark);transform:translateY(-1px);box-shadow:0 4px 12px rgba(37,99,235,0.3)}
.btn-secondary{background:#fff;color:var(--text);border:1px solid var(--border)}
.btn-secondary:hover{background:var(--bg);border-color:#cbd5e1}
.btn-danger{background:#fef2f2;color:#dc2626;border:1px solid #fecaca}
.btn-danger:hover{background:#fee2e2}
.btn-success{background:#f0fdf4;color:#16a34a;border:1px solid #bbf7d0}
.btn-sm{padding:5px 12px;font-size:12px}
.btn-sm svg{width:14px;height:14px}
.btn:disabled{opacity:0.5;cursor:not-allowed;transform:none!important;box-shadow:none!important}
/* 表格 */
.table-wrapper{overflow-x:auto;overflow-y:auto;max-height:calc(100vh - 260px)}
.table-wrapper thead{position:sticky;top:0;z-index:2}
.table-wrapper thead th{background:#f8fafc}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{padding:10px 14px;text-align:left;white-space:nowrap}
th{background:#f8fafc;font-weight:600;color:var(--text-muted);font-size:12px;text-transform:uppercase;letter-spacing:0.5px;border-bottom:1px solid var(--border)}
th .sort-icon{font-size:11px;opacity:0.4;margin-left:2px}
th:hover .sort-icon{opacity:1}
td{border-bottom:1px solid #f1f5f9}
tr:hover td{background:#f8fafc}
tr:last-child td{border-bottom:none}
/* 标签 */
.tag{display:inline-flex;align-items:center;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:600;white-space:nowrap}
.tag-blue{background:#eff6ff;color:#2563eb}
.tag-green{background:#f0fdf4;color:#16a34a}
.tag-yellow{background:#fffbeb;color:#d97706}
.tag-red{background:#fef2f2;color:#dc2626}
.tag-orange{background:#fff7ed;color:#ea580c}
.tag-purple{background:#f5f3ff;color:#7c3aed}
.tag-gray{background:#f1f5f9;color:#475569}
.tab-bar{display:flex;gap:2px;border-bottom:2px solid #e5e7eb;margin-bottom:16px;}
.tab-btn{display:flex;align-items:center;gap:6px;padding:10px 18px;font-size:14px;border:none;background:transparent;color:#6b7280;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .2s;border-radius:6px 6px 0 0;}
.tab-btn:hover{color:#374151;background:#f3f4f6;}
.tab-btn.active{color:#3b82f6;font-weight:600;border-bottom-color:#3b82f6;background:#eff6ff;}
.tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:700;border-radius:9px;background:#ef4444;color:#fff;}
/* 表单 */
.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:16px}
.form-group{margin-bottom:16px}
.form-label{display:block;font-size:13px;font-weight:500;color:#374151;margin-bottom:6px}
.form-input,.form-select{width:100%;padding:8px 12px;border:1.5px solid var(--border);border-radius:8px;font-size:13px;transition:border-color 0.2s;outline:none;background:#fff}
.form-input:focus,.form-select:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,0.1)}
textarea.form-input{resize:vertical;min-height:80px}
/* 统计卡片 */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:20px}
.stat-card{background:#fff;border-radius:var(--card-radius);padding:20px;box-shadow:var(--shadow);border:1px solid var(--border);position:relative;overflow:hidden}
.stat-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px}
.stat-card.blue::before{background:linear-gradient(90deg,var(--primary),var(--info))}
.stat-card.green::before{background:linear-gradient(90deg,#10b981,#34d399)}
.stat-card.yellow::before{background:linear-gradient(90deg,#f59e0b,#fbbf24)}
.stat-card.red::before{background:linear-gradient(90deg,#ef4444,#f87171)}
.stat-label{font-size:12px;color:var(--text-muted);margin-bottom:8px;display:flex;align-items:center;gap:6px}
.stat-label svg{width:16px;height:16px}
.stat-value{font-size:28px;font-weight:700;color:var(--text);letter-spacing:-1px}
.stat-change{font-size:12px;margin-top:6px;display:flex;align-items:center;gap:4px}
.stat-change.up{color:#16a34a}
.stat-change.down{color:#dc2626}
/* ── 扩展色彩与阴影 ── */
:root{
  --purple:#8b5cf6;--purple-light:#a78bfa;--purple-dark:#7c3aed;
  --teal:#0d9488;--teal-light:#2dd4bf;--teal-dark:#0f766e;
  --orange:#f97316;--orange-light:#fb923c;--orange-dark:#ea580c;
  --cyan:#06b6d4;--cyan-light:#22d3ee;--cyan-dark:#0891b2;
  --indigo:#6366f1;--indigo-light:#818cf8;--indigo-dark:#4f46e5;
  --shadow-sm:0 1px 2px rgba(0,0,0,0.05);
  --shadow:0 1px 3px rgba(0,0,0,0.08),0 1px 2px rgba(0,0,0,0.06);
  --shadow-md:0 4px 6px rgba(0,0,0,0.07),0 2px 4px rgba(0,0,0,0.06);
  --shadow-xl:0 20px 25px rgba(0,0,0,0.1),0 10px 10px rgba(0,0,0,0.04);
  --gradient-blue:linear-gradient(135deg,#2563eb,#6366f1);
  --gradient-purple:linear-gradient(135deg,#8b5cf6,#a855f7);
  --gradient-teal:linear-gradient(135deg,#0d9488,#14b8a6);
  --gradient-warm:linear-gradient(135deg,#f97316,#ef4444);
  --gradient-green:linear-gradient(135deg,#10b981,#34d399);
}
:root.dark{
  --shadow-sm:0 1px 2px rgba(0,0,0,0.2);
  --shadow:0 1px 3px rgba(0,0,0,0.3),0 1px 2px rgba(0,0,0,0.2);
  --shadow-md:0 4px 6px rgba(0,0,0,0.3),0 2px 4px rgba(0,0,0,0.2);
  --shadow-xl:0 20px 25px rgba(0,0,0,0.4),0 10px 10px rgba(0,0,0,0.2);
}
/* ── 统计卡片增强 ── */
.stat-card.purple::before{background:linear-gradient(90deg,var(--purple),var(--purple-light))}
.stat-card.orange::before{background:linear-gradient(90deg,var(--orange),var(--orange-light))}
.stat-card.teal::before{background:linear-gradient(90deg,var(--teal),var(--teal-light))}
.stat-card.cyan::before{background:linear-gradient(90deg,var(--cyan),var(--cyan-light))}
.stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);transition:all 0.2s}
.stat-card .stat-icon{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;margin-bottom:12px}
.stat-card .stat-icon.blue{background:#eff6ff;color:var(--primary)}
.stat-card .stat-icon.purple{background:#f5f3ff;color:var(--purple)}
.stat-card .stat-icon.green{background:#f0fdf4;color:var(--success)}
.stat-card .stat-icon.orange{background:#fff7ed;color:var(--orange)}
.stat-card .stat-icon.teal{background:#f0fdfa;color:var(--teal)}
.stat-card .stat-footer{font-size:11px;color:var(--text-muted);margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}
.stat-card-sm{padding:14px 16px}
.stat-card-sm .stat-value{font-size:22px}
/* ── 标签扩展 ── */
.tag-indigo{background:#eef2ff;color:#4f46e5}
.tag-teal{background:#f0fdfa;color:#0f766e}
.tag-cyan{background:#ecfeff;color:#0e7490}
/* ── 状态徽章（圆点+文字） ── */
.status-badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500}
.status-badge::before{content:'';width:7px;height:7px;border-radius:50%;flex-shrink:0}
.status-badge.blue::before{background:var(--primary)}
.status-badge.green::before{background:var(--success)}
.status-badge.yellow::before{background:var(--warning)}
.status-badge.red::before{background:var(--danger)}
.status-badge.purple::before{background:var(--purple)}
.status-badge.gray::before{background:#94a3b8}
/* ── 图表容器 ── */
.chart-box{background:var(--card-bg);border-radius:var(--card-radius);border:1px solid var(--border);box-shadow:var(--shadow-sm);overflow:hidden}
.chart-box-header{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}
.chart-box-title{font-size:14px;font-weight:600;color:var(--text)}
.chart-box-body{padding:16px}
.chart-box-footer{padding:12px 20px;border-top:1px solid var(--border);font-size:12px;color:var(--text-muted)}
/* ── KPI 条 ── */
.kpi-row{display:flex;align-items:center;gap:12px;padding:8px 0}
.kpi-row-label{font-size:13px;color:var(--text-muted);min-width:80px}
.kpi-row-value{font-size:18px;font-weight:700;color:var(--text)}
.kpi-row-arrow{font-size:14px;margin-left:4px}
.kpi-row-arrow.up{color:var(--success)}
.kpi-row-arrow.down{color:var(--danger)}
/* ── 汇总条 ── */
.summary-bar{background:linear-gradient(135deg,var(--primary),var(--primary-light));border-radius:var(--card-radius);padding:24px 28px;color:#fff;display:flex;align-items:center;gap:24px;flex-wrap:wrap}
.summary-bar-item{text-align:center;min-width:100px}
.summary-bar-value{font-size:32px;font-weight:700;letter-spacing:-1px;line-height:1.1}
.summary-bar-label{font-size:12px;opacity:0.85;margin-top:4px}
.summary-bar-divider{width:1px;height:40px;background:rgba(255,255,255,0.25)}
/* ── 时间轴 ── */
.timeline{position:relative;padding-left:24px}
.timeline::before{content:'';position:absolute;left:8px;top:4px;bottom:4px;width:2px;background:var(--border);border-radius:1px}
.timeline-item{position:relative;margin-bottom:16px}
.timeline-item:last-child{margin-bottom:0}
.timeline-dot{position:absolute;left:-20px;top:4px;width:10px;height:10px;border-radius:50%;border:2px solid}
.timeline-dot.blue{background:var(--primary);border-color:var(--primary)}
.timeline-dot.green{background:var(--success);border-color:var(--success)}
.timeline-dot.purple{background:var(--purple);border-color:var(--purple)}
.timeline-dot.orange{background:var(--orange);border-color:var(--orange)}
.timeline-time{font-size:11px;color:var(--text-muted);margin-bottom:2px}
.timeline-content{font-size:13px;color:var(--text);line-height:1.5}
/* ── 管道卡片 ── */
.pipeline-card{background:var(--card-bg);border-radius:var(--card-radius);border:1px solid var(--border);overflow:hidden;transition:box-shadow 0.2s}
.pipeline-card:hover{box-shadow:var(--shadow-md)}
.pipeline-header{padding:12px 16px;font-weight:600;font-size:13px;display:flex;align-items:center;justify-content:space-between}
.pipeline-count{font-size:20px;font-weight:700}
.pipeline-seg .pipeline-count{position:absolute;right:4px;top:50%;transform:translateY(-50%);font-size:11px;font-weight:700;color:rgba(255,255,255,0.9);text-shadow:0 1px 2px rgba(0,0,0,0.3)}
.pipeline-body{padding:8px 12px 12px;max-height:300px;overflow-y:auto}
.pipeline-item{padding:8px 10px;border-radius:6px;cursor:pointer;font-size:12px;display:flex;align-items:center;gap:8px;margin-bottom:4px;transition:background 0.15s}
.pipeline-item:hover{background:var(--bg)}
.pipeline-item-avatar{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0}
.pipeline-item-name{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pipeline-item-time{font-size:10px;color:var(--text-muted);margin-left:auto;flex-shrink:0}
/* ── 快速操作卡片 ── */
.quick-actions{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
.quick-action-card{display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--card-bg);border:1px solid var(--border);border-radius:10px;cursor:pointer;transition:all 0.15s;text-decoration:none;color:var(--text)}
.quick-action-card:hover{transform:translateY(-1px);box-shadow:var(--shadow-md);border-color:var(--primary)}
.quick-action-card .qa-icon{width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.quick-action-card .qa-label{font-size:13px;font-weight:500}
/* ── 渐变 Hero 区块 ── */
.hero-banner{background:var(--gradient-blue);border-radius:var(--card-radius);padding:28px 32px;color:#fff;margin-bottom:20px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:20px}
.hero-banner.purple{background:var(--gradient-purple)}
.hero-banner.teal{background:var(--gradient-teal)}
.hero-banner-title{font-size:20px;font-weight:700;letter-spacing:-0.5px}
.hero-banner-sub{font-size:13px;opacity:0.85;margin-top:4px}
.hero-banner-value{font-size:40px;font-weight:800;letter-spacing:-2px;line-height:1}
/* ── 对比网格（2列） ── */
.compare-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:768px){.compare-grid{grid-template-columns:1fr}}
/* 搜索栏 */
.toolbar{display:flex;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--border);flex-wrap:wrap}
.toolbar-search{display:flex;align-items:center;background:var(--bg);border:1px solid var(--border);border-radius:8px;overflow:hidden;flex:1;min-width:200px;max-width:360px}
.toolbar-search input{border:none;background:transparent;padding:8px 12px;font-size:13px;outline:none;width:100%}
.toolbar-search svg{width:16px;height:16px;color:var(--text-muted);margin:0 10px;flex-shrink:0}
.toolbar-filter{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.toolbar-right{margin-left:auto;display:flex;gap:8px;align-items:center}
/* 分页（靠左，避免被AI助手遮挡） */
.pagination{display:flex;align-items:center;padding:14px 20px;border-top:1px solid var(--border);flex-wrap:wrap;gap:10px}
.pagination-info{font-size:13px;color:var(--text-muted)}
.pagination-controls{display:flex;gap:4px}
.page-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:6px;background:#fff;font-size:13px;cursor:pointer;transition:all 0.15s}
.page-btn:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}
.page-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.page-btn:disabled{opacity:0.4;cursor:not-allowed}
/* 模态框 */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.5);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}
.modal{background:#fff;border-radius:var(--card-radius);width:100%;max-width:640px;max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg)}
.modal-lg{max-width:900px}
.modal-fixed-height .modal-body{min-height:480px;max-height:480px}
.modal-header{padding:20px 24px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}
.modal-title{font-size:17px;font-weight:700}
.modal-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;border-radius:6px;transition:background 0.15s;color:var(--text-muted)}
.modal-close:hover{background:var(--bg)}
.modal-body{padding:24px;overflow-y:auto;flex:1}
.modal-footer{padding:16px 24px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px}
/* 空状态 */
.empty-state{padding:60px 20px;text-align:center;color:var(--text-muted)}
.empty-state svg{width:64px;height:64px;margin-bottom:16px;opacity:0.4}
.empty-state p{font-size:15px}
/* 加载 */
.loading{display:flex;align-items:center;justify-content:center;padding:40px;color:var(--text-muted)}
.spinner{width:24px;height:24px;border:2.5px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin 0.7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
/* 徽章状态 */
.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px}
.status-dot.active{background:#10b981}
.status-dot.inactive{background:#94a3b8}
.status-dot.pending{background:#f59e0b}
/* 工具提示 */
.text-muted{color:var(--text-muted)}
.text-sm{font-size:12px}
.text-right{text-align:right}
.text-center{text-align:center}
.font-mono{font-family:monospace}
.phone-link{color:inherit;text-decoration:none}
.phone-link:hover{color:var(--primary);text-decoration:underline}
.copyable-id{cursor:pointer;transition:background 0.15s}
.copyable-id:hover{background:#e0f2fe;border-radius:3px}
/* 下拉菜单 */
.dropdown{position:relative}
.dropdown-menu{position:absolute;top:100%;right:0;background:#fff;border-radius:8px;box-shadow:var(--shadow-lg);border:1px solid var(--border);min-width:180px;z-index:100;padding:6px;margin-top:4px}
.dropdown-item{padding:8px 12px;border-radius:6px;cursor:pointer;font-size:13px;display:flex;align-items:center;gap:8px;transition:background 0.15s;color:var(--text)}
.dropdown-item:hover{background:var(--bg)}
.dropdown-item.danger{color:#dc2626}
.dropdown-item.danger:hover{background:#fef2f2}
.dropdown-divider{height:1px;background:var(--border);margin:6px 0}
/* 详情布局 */
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.detail-item{display:flex;flex-direction:column;gap:2px}
.detail-label{font-size:12px;color:var(--text-muted)}
.detail-value{font-size:14px;font-weight:500}
/* 路由视图过渡 */
.fade-enter-active,.fade-leave-active{transition:opacity 0.2s}
.fade-enter-from,.fade-leave-to{opacity:0}
/* 快捷菜单 */
.quick-actions{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:20px}
.quick-action{background:#fff;border:1px solid var(--border);border-radius:10px;padding:16px 20px;display:flex;align-items:center;gap:12px;cursor:pointer;transition:all 0.15s;min-width:160px}
.quick-action:hover{border-color:var(--primary);box-shadow:0 4px 12px rgba(37,99,235,0.1);transform:translateY(-1px)}
.quick-action-icon{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center}
.quick-action-icon svg{width:20px;height:20px}
.quick-action-text{font-size:13px;font-weight:500}
.quick-action-sub{font-size:11px;color:var(--text-muted)}
/* 企微外部联系人 - 次要字段横行样式 */
.sub-field{display:inline-flex;align-items:center;gap:3px;white-space:nowrap}
.sub-label{color:#9ca3af;font-size:11px;flex-shrink:0}
.sub-value{color:#374151;font-size:12px;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sub-value.mono{font-family:monospace;font-size:11px;color:#6b7280}
/* 分页跳转输入框 */
.page-goto{font-size:12px;color:var(--text-muted);display:inline-flex;align-items:center;gap:4px;margin-left:8px}
.page-goto-input{width:48px;padding:4px 6px;border:1px solid var(--border);border-radius:4px;font-size:12px;text-align:center;outline:none}
.page-goto-input:focus{border-color:var(--primary)}
/* 企微外部联系人 - 表格样式 */
.ec-table{width:100%;border-collapse:collapse;font-size:13px}
.ec-table thead{position:sticky;top:0;z-index:2}
.ec-table thead th{background:#f8fafc;border-bottom:2px solid #e2e8f0;padding:10px 12px;text-align:left;font-weight:600;font-size:12px;color:#475569;white-space:nowrap;user-select:none}
.ec-table tbody tr{border-bottom:1px solid #f1f5f9}
.ec-table tbody td{padding:10px 12px;vertical-align:middle}
/* ===== 蓝色系 (even idx) ===== */
.ec-table .grp-blue{background-color:#dceefb}
.ec-table .grp-blue.grp-expand{background-color:#d0e6f8}
.ec-table .grp-blue-sub{background-color:#e8f2fb}
.ec-table .grp-blue-sub td:first-child{border-left:3px solid #7eb8da;padding-left:9px}
.ec-table .grp-blue-detail{background-color:#f0f6fc}
.ec-table .grp-blue-detail td:first-child{border-left:3px solid #bfdbfe;padding-left:9px}
/* ===== 暖色系 (odd idx) ===== */
.ec-table .grp-warm{background-color:#ffdeb6}
.ec-table .grp-warm.grp-expand{background-color:#ffd4a1}
.ec-table .grp-warm-sub{background-color:#ffe9cf}
.ec-table .grp-warm-sub td:first-child{border-left:3px solid #e8be8a;padding-left:9px}
.ec-table .grp-warm-detail{background-color:#fff1e0}
.ec-table .grp-warm-detail td:first-child{border-left:3px solid #f5d8b8;padding-left:9px}
/* ===== hover 状态（JS 控制 .grp-hover）===== */
.ec-table .grp-hover.grp-blue{background-color:#cbe4f5}
.ec-table .grp-hover.grp-blue-sub{background-color:#dae8f3}
.ec-table .grp-hover.grp-blue-detail{background-color:#e2ecf5}
.ec-table .grp-hover.grp-warm{background-color:#ffd19a}
.ec-table .grp-hover.grp-warm-sub{background-color:#fde0bd}
.ec-table .grp-hover.grp-warm-detail{background-color:#fce8d0}
.ec-table .sortable-th{cursor:pointer}
th.sortable{cursor:pointer;user-select:none;white-space:nowrap}
th.sortable:hover{background:#f1f5f9}
th.sortable span{font-size:10px;margin-left:2px;color:var(--text-muted)}
.ec-table .sortable-th:hover{background:#f1f5f9}
.advisor-tag{display:inline-block;background:#fef3c7;border:1px solid #fde68a;border-radius:4px;padding:1px 7px;font-size:12px;color:#92400e;font-weight:500}
.detail-panel{padding:6px 16px}
.detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:2px 24px}
.detail-item{display:flex;align-items:center;gap:8px;padding:4px 0}
.detail-label{font-size:11px;color:#94a3b8;font-weight:500;white-space:nowrap;flex-shrink:0}
.detail-value{font-size:13px;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tag-blue{display:inline-block;background:#eff6ff;color:#2563eb;border-radius:4px;padding:1px 8px;font-size:12px;margin:1px 2px}
.tag-green{display:inline-block;background:#f0fdf4;color:#16a34a;border-radius:4px;padding:1px 8px;font-size:12px;margin:1px 2px}
/* 审批步骤 */
.approval-steps{display:inline-block;background:#f1f5f9;color:#475569;border-radius:4px;padding:2px 10px;font-size:12px;font-weight:500;white-space:nowrap}
/* 进度条 */
.progress-bar-small{width:100%;height:8px;background:#e5e7eb;border-radius:4px;overflow:hidden;margin:2px 0}
.progress-bar-fill{height:100%;border-radius:4px;transition:width 0.3s}
/* 统计网格 */
.stat-grid{display:flex;gap:16px;flex-wrap:wrap}
.stat-item{flex:1;min-width:100px;text-align:center;padding:16px 12px;background:#f8fafc;border-radius:8px;border:1px solid var(--border)}
.stat-value{font-size:28px;font-weight:700;color:var(--text);line-height:1.2}
.stat-label{font-size:12px;color:var(--text-muted);margin-top:4px}
/* 多顾问标记 */
.multi-advisor-badge{display:inline-block;background:#fef2f2;color:#dc2626;border:1px solid #fecaca;border-radius:3px;padding:0 5px;font-size:10px;margin-left:4px;cursor:help}
/* 顾问变更记录 */
.advisor-history{margin-top:12px;padding-top:10px;border-top:1px solid var(--border)}
.advisor-history-title{font-size:11px;color:#94a3b8;font-weight:600;margin-bottom:6px}
.advisor-history-list{display:flex;flex-direction:column;gap:4px}
.advisor-history-item{display:flex;align-items:center;gap:8px;font-size:12px}
.advisor-history-time{color:#9ca3af;min-width:80px}
.advisor-history-staff{color:#64748b;min-width:60px}
.advisor-history-arrow{color:#d1d5db}

/* ===== AI 聊天助手 ===== */
.ai-fab{position:fixed;right:20px;bottom:80px;width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#1a73e8,#0d47a1);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 3px 14px rgba(26,115,232,0.3);z-index:9999;transition:transform 0.2s,box-shadow 0.2s;opacity:0.85}
.ai-fab:hover{transform:scale(1.1);box-shadow:0 5px 20px rgba(26,115,232,0.45);opacity:1}
.ai-fab svg{width:20px;height:20px;fill:none;stroke:white;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ai-fab-badge{position:absolute;top:-2px;right:-2px;width:18px;height:18px;border-radius:50%;background:#ef4444;color:#fff;font-size:10px;display:flex;align-items:center;justify-content:center;font-weight:600}
.ai-chat{position:fixed;right:24px;bottom:90px;width:400px;max-height:560px;background:var(--bg);border:1px solid var(--border);border-radius:16px;box-shadow:0 8px 40px rgba(0,0,0,0.15);z-index:9998;display:flex;flex-direction:column;overflow:hidden;transition:opacity 0.2s,transform 0.2s}
.ai-chat.closing{opacity:0;transform:translateY(10px) scale(0.95)}
.ai-chat-header{padding:14px 16px;background:linear-gradient(135deg,#1a73e8,#0d47a1);color:#fff;display:flex;align-items:center;gap:10px}
.ai-chat-header h3{font-size:14px;font-weight:600;margin:0;flex:1}
.ai-chat-header .subtitle{font-size:11px;opacity:0.8;margin-top:2px}
.ai-chat-close{background:none;border:none;color:#fff;cursor:pointer;padding:4px;border-radius:6px;display:flex;align-items:center;justify-content:center}
.ai-chat-close:hover{background:rgba(255,255,255,0.2)}
.ai-chat-action-btn{background:rgba(255,255,255,0.15);border:1px solid rgba(255,255,255,0.3);color:#fff;cursor:pointer;padding:3px 8px;border-radius:6px;display:flex;align-items:center;gap:4px;font-size:12px;transition:background 0.15s}
.ai-chat-action-btn:hover:not(:disabled){background:rgba(255,255,255,0.28)}
.ai-chat-action-btn:disabled{opacity:0.45;cursor:not-allowed}
.ai-chat-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px;min-height:300px;max-height:400px}
.ai-msg{display:flex;gap:8px;max-width:92%}
.ai-msg.user{align-self:flex-end;flex-direction:row-reverse}
.ai-msg-avatar{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex-shrink:0}
.ai-msg.user .ai-msg-avatar{background:linear-gradient(135deg,#1a73e8,#0d47a1);color:#fff}
.ai-msg.assistant .ai-msg-avatar{background:linear-gradient(135deg,#1a73e8,#4fc3f7);color:#fff}
.ai-msg-bubble{padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.6;word-break:break-word}
.ai-msg.user .ai-msg-bubble{background:linear-gradient(135deg,#1a73e8,#0d47a1);color:#fff;border-bottom-right-radius:4px}
.ai-msg.assistant .ai-msg-bubble{background:var(--bg-secondary,#f3f4f6);color:var(--text);border-bottom-left-radius:4px}
.ai-msg-bubble p{margin:0 0 6px}
.ai-msg-bubble p:last-child{margin:0}
.ai-msg-bubble strong{font-weight:600}
.ai-msg-bubble ul,.ai-msg-bubble ol{padding-left:18px;margin:4px 0}
.ai-msg-bubble code{background:rgba(0,0,0,0.06);padding:1px 4px;border-radius:3px;font-size:12px}
.ai-typing{display:flex;gap:4px;padding:10px 14px}
.ai-typing span{width:6px;height:6px;border-radius:50%;background:var(--text-muted,#9ca3af);animation:ai-bounce 1.2s infinite}
.ai-typing span:nth-child(2){animation-delay:0.2s}
.ai-typing span:nth-child(3){animation-delay:0.4s}
@keyframes ai-bounce{0%,60%,100%{transform:translateY(0)}30%{transform:translateY(-6px)}}
.ai-chat-input{padding:12px 16px;border-top:1px solid var(--border);display:flex;gap:8px;align-items:flex-end}
.ai-chat-input textarea{flex:1;border:1px solid var(--border);border-radius:10px;padding:8px 12px;font-size:13px;resize:none;outline:none;max-height:80px;line-height:1.5;font-family:inherit;background:var(--bg)}
.ai-chat-input textarea:focus{border-color:#1a73e8}
.ai-chat-send{width:36px;height:36px;border-radius:10px;border:none;background:linear-gradient(135deg,#1a73e8,#0d47a1);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:opacity 0.15s}
.ai-chat-send:disabled{opacity:0.5;cursor:not-allowed}
.ai-chat-send svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2}
.ai-quick-tags{padding:8px 16px 4px;display:flex;gap:6px;flex-wrap:wrap}
.ai-quick-tag{font-size:11px;padding:4px 10px;border-radius:20px;border:1px solid var(--border);background:transparent;cursor:pointer;color:var(--text-secondary);transition:all 0.15s}
.ai-quick-tag:hover{border-color:#1a73e8;color:#1a73e8;background:rgba(26,115,232,0.05)}
/* AI 历史会话面板 */
.ai-history-panel{position:absolute;top:0;left:0;width:100%;height:100%;background:var(--bg);z-index:10;display:flex;flex-direction:column;border-radius:16px;overflow:hidden}
.ai-history-panel-header{padding:12px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px}
.ai-history-panel-header h4{font-size:13px;font-weight:600;margin:0;flex:1}
.ai-history-panel-header button{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:4px 8px;border-radius:6px;font-size:12px}
.ai-history-panel-header button:hover{background:var(--bg-secondary);color:var(--text)}
.ai-history-list{flex:1;overflow-y:auto;padding:8px}
.ai-history-item{padding:10px 12px;border-radius:8px;cursor:pointer;transition:background 0.15s;margin-bottom:2px}
.ai-history-item:hover{background:var(--bg-secondary)}
.ai-history-item.active{background:rgba(26,115,232,0.1)}
.ai-history-item .title{font-size:13px;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ai-history-item .meta{font-size:11px;color:var(--text-muted);margin-top:4px;display:flex;justify-content:space-between}
.ai-history-empty{text-align:center;padding:40px 16px;color:var(--text-muted);font-size:13px}
@media(max-width:480px){.ai-chat{right:8px;left:8px;width:auto;bottom:80px;max-height:70vh}}
.ai-chat.fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;width:100%!important;max-height:100vh!important;border-radius:0;z-index:10000}
.ai-chat.fullscreen .ai-chat-messages{max-height:none;flex:1}
.ai-chat.fullscreen .ai-msg{max-width:70%}
/* 数据源栏（在快捷标签和输入框之间，折叠式下拉）*/
.ai-sources-bar{padding:4px 12px}
.ai-sources-summary{font-size:11px;color:var(--text-muted);cursor:pointer;padding:4px 0;user-select:none}
.ai-sources-summary:hover{color:var(--primary)}
.ai-sources-dropdown{display:flex;flex-wrap:wrap;gap:4px;padding-bottom:6px}
.ai-source-pill{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:12px;font-size:11px;cursor:pointer;border:1px solid var(--border,#e5e7eb);background:var(--bg,#fff);transition:all 0.15s;user-select:none}
.ai-source-pill:hover{background:var(--primary-bg,#eff6ff);border-color:var(--primary)}
.ai-source-pill.off{opacity:0.4;background:var(--bg-secondary,#f9fafb);text-decoration:line-through}
.ai-fade-enter-active,.ai-fade-leave-active{transition:opacity 0.2s,transform 0.2s}
.ai-fade-enter-from,.ai-fade-leave-to{opacity:0;transform:translateY(10px) scale(0.95)}

/* ===== AI 内容创作助手 ===== */
.content-ai-workspace{display:flex;height:100%;background:var(--bg);overflow:clip}
.cai-sidebar{width:260px;border-right:1px solid var(--border);display:flex;flex-direction:column;background:var(--bg);flex-shrink:0}
.cai-sidebar-header{padding:14px 16px;display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--border)}
.cai-logo{display:flex;align-items:center;gap:8px;font-weight:600;font-size:14px;color:var(--text)}
.cai-logo svg{color:#1a73e8}
.cai-btn-new{width:32px;height:32px;border-radius:8px;border:1px solid var(--border);background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:all 0.15s}
.cai-btn-new:hover{background:var(--bg-secondary);color:#1a73e8;border-color:#1a73e8}
.cai-quick-actions{padding:12px}
.cai-quick-title{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.5px;margin-bottom:8px;padding:0 4px}
.cai-quick-btn{width:100%;text-align:left;padding:8px 12px;border:1px solid transparent;border-radius:8px;background:transparent;cursor:pointer;font-size:13px;color:var(--text-secondary);display:flex;align-items:center;gap:8px;transition:all 0.15s;margin-bottom:2px}
.cai-quick-btn:hover{background:rgba(26,115,232,0.06);color:#1a73e8;border-color:rgba(26,115,232,0.15)}
.cai-quick-btn svg{flex-shrink:0;color:#1a73e8;opacity:0.7}
.cai-history{flex:1;overflow-y:auto;padding:0 12px 12px}
.cai-history-empty{text-align:center;padding:20px;color:var(--text-muted);font-size:12px}
.cai-history-item{padding:10px 12px;border-radius:8px;cursor:pointer;transition:background 0.15s;margin-bottom:2px;position:relative}
.cai-history-item:hover{background:var(--bg-secondary)}
.cai-history-item.active{background:rgba(26,115,232,0.08);border-left:3px solid #1a73e8}
.cai-history-text{font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:20px}
.cai-history-meta{font-size:11px;color:var(--text-muted);margin-top:4px}
.cai-history-del{position:absolute;top:8px;right:8px;width:20px;height:20px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;border-radius:4px;font-size:14px;display:none;align-items:center;justify-content:center}
.cai-history-item:hover .cai-history-del{display:flex}
.cai-history-del:hover{background:rgba(239,68,68,0.1);color:#ef4444}
.cai-main{flex:1;display:flex;flex-direction:column;min-width:0;overflow:clip}
.cai-topbar{padding:8px 16px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--border)}
.cai-toggle-sidebar{width:32px;height:32px;border-radius:6px;border:1px solid var(--border);background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:all 0.15s}
.cai-toggle-sidebar:hover{background:var(--bg-secondary);color:var(--text)}
.cai-balance{margin-left:auto;font-size:12px;color:var(--text-muted);display:flex;align-items:center;gap:8px}
.cai-balance-low{color:#ef4444;font-weight:600}
.cai-balance-warn{font-size:11px;padding:2px 8px;border-radius:4px;background:rgba(239,68,68,0.1);animation:cai-pulse 2s infinite}
@keyframes cai-pulse{0%,100%{opacity:1}50%{opacity:0.5}}
.cai-sidebar-collapsed .cai-sidebar{display:none}
.cai-stop-btn{width:36px;height:36px;border-radius:10px;border:none;background:#ef4444;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:opacity 0.15s}
.cai-stop-btn:hover{opacity:0.85}
.cai-search-panel{padding:16px 20px;border-bottom:1px solid var(--border);background:var(--bg-secondary)}
.cai-search-header{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;margin-bottom:12px}
.cai-search-header svg{color:#1a73e8}
.cai-search-input-wrap{display:flex;gap:8px}
.cai-search-input{flex:1;padding:8px 12px;border:1px solid var(--border);border-radius:8px;font-size:13px;outline:none;background:var(--bg)}
.cai-search-input:focus{border-color:#1a73e8}
.cai-search-btn{padding:8px 16px;border-radius:8px;border:none;background:#1a73e8;color:#fff;cursor:pointer;font-size:13px;white-space:nowrap}
.cai-search-btn:disabled{opacity:0.6;cursor:not-allowed}
.cai-search-results{max-height:300px;overflow-y:auto;margin-top:12px}
.cai-search-result-item{padding:10px 12px;border-radius:8px;border:1px solid var(--border);margin-bottom:8px;cursor:pointer;transition:background 0.15s}
.cai-search-result-item:hover{background:var(--bg)}
.cai-search-result-title{font-size:13px;font-weight:500;color:var(--text);margin-bottom:4px}
.cai-search-result-desc{font-size:12px;color:var(--text-muted);line-height:1.5}
.cai-search-empty{text-align:center;padding:20px;color:var(--text-muted);font-size:13px}
.cai-messages{flex:1;overflow-y:auto;padding:20px}
.cai-welcome{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;padding:40px}
.cai-welcome-icon{width:80px;height:80px;border-radius:20px;background:linear-gradient(135deg,rgba(26,115,232,0.1),rgba(13,71,161,0.05));display:flex;align-items:center;justify-content:center;margin-bottom:16px}
.cai-welcome-icon svg{color:#1a73e8}
.cai-welcome h2{font-size:20px;font-weight:600;margin:0 0 8px;color:var(--text)}
.cai-welcome p{font-size:14px;color:var(--text-muted);margin:0 0 32px;max-width:400px}
.cai-welcome-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;max-width:400px;width:100%}
.cai-welcome-card{padding:16px;border:1px solid var(--border);border-radius:12px;cursor:pointer;transition:all 0.15s;text-align:center}
.cai-welcome-card:hover{border-color:#1a73e8;background:rgba(26,115,232,0.03);transform:translateY(-2px)}
.cai-welcome-card-icon{font-size:24px;margin-bottom:8px}
.cai-welcome-card div:last-child{font-size:13px;color:var(--text-secondary)}
.cai-msg{display:flex;gap:10px;margin-bottom:16px;max-width:85%}
.cai-msg-user{align-self:flex-end;flex-direction:row-reverse}
.cai-msg-assistant{align-self:flex-start}
.cai-msg-avatar{width:32px;height:32px;border-radius:10px;background:linear-gradient(135deg,#1a73e8,#0d47a1);color:#fff;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0}
.cai-msg-bubble{padding:12px 16px;border-radius:12px;font-size:13.5px;line-height:1.7;word-break:break-word;position:relative;max-height:500px;overflow-y:auto;overflow-x:auto}
.cai-msg-user .cai-msg-bubble{background:linear-gradient(135deg,#1a73e8,#0d47a1);color:#fff;border-bottom-right-radius:4px}
.cai-msg-assistant .cai-msg-bubble{background:var(--bg-secondary);color:var(--text);border-bottom-left-radius:4px;border:1px solid var(--border)}
.cai-msg-bubble p{margin:0 0 8px}.cai-msg-bubble p:last-child{margin:0}
.cai-msg-bubble strong{font-weight:600}
.cai-msg-bubble ul,.cai-msg-bubble ol{padding-left:18px;margin:4px 0}
.cai-msg-bubble code{background:rgba(0,0,0,0.06);padding:1px 4px;border-radius:3px;font-size:12px;white-space:pre-wrap;word-break:break-all}
.cai-msg-bubble h1,.cai-msg-bubble h2,.cai-msg-bubble h3{margin:12px 0 6px;font-size:14px}
.cai-msg-bubble table{border-collapse:collapse;max-width:100%;margin:8px 0;font-size:12px;display:block;overflow-x:auto}
.cai-msg-bubble th,.cai-msg-bubble td{border:1px solid var(--border);padding:4px 8px;text-align:left;white-space:nowrap}
.cai-msg-bubble th{background:var(--bg);font-weight:600}
.cai-msg-bubble pre{max-width:100%;overflow-x:auto;white-space:pre-wrap;word-break:break-all;background:rgba(0,0,0,0.04);padding:8px;border-radius:6px;font-size:12px}
.cai-copy-btn{position:absolute;top:8px;right:8px;width:28px;height:28px;border:none;background:rgba(0,0,0,0.05);border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-muted);opacity:0;transition:opacity 0.15s}
.cai-msg-bubble:hover .cai-copy-btn{opacity:1}
.cai-copy-btn:hover{background:rgba(0,0,0,0.1);color:var(--text)}
.cai-typing{display:flex;gap:4px;padding:4px 0}
.cai-typing span{width:6px;height:6px;border-radius:50%;background:var(--text-muted);animation:cai-bounce 1.2s infinite}
.cai-typing span:nth-child(2){animation-delay:0.2s}
.cai-typing span:nth-child(3){animation-delay:0.4s}
@keyframes cai-bounce{0%,60%,100%{transform:translateY(0)}30%{transform:translateY(-6px)}}
.cai-toolbar{display:flex;align-items:center;gap:12px;padding:0 20px 8px;border-top:1px solid var(--border);background:var(--bg)}
.cai-model-select{position:relative;display:flex;align-items:center;gap:4px;padding:4px 10px;border-radius:6px;border:1px solid var(--border);cursor:pointer;font-size:12px;color:var(--text-secondary);transition:all 0.15s;user-select:none}
.cai-model-select:hover{border-color:#1a73e8;color:#1a73e8}
.cai-model-label{font-weight:500}
.cai-model-dropdown{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);margin-bottom:4px;background:var(--bg);border:1px solid var(--border);border-radius:10px;box-shadow:0 4px 20px rgba(0,0,0,0.12);min-width:220px;z-index:100;overflow-y:auto;max-height:400px}
.cai-model-option{padding:10px 14px;cursor:pointer;transition:background 0.1s;border-bottom:1px solid var(--border)}
.cai-model-option:last-child{border-bottom:none}
.cai-model-option:hover{background:var(--bg-secondary)}
.cai-model-option.active{background:rgba(26,115,232,0.06)}
.cai-model-option-name{font-size:13px;font-weight:500;color:var(--text);display:flex;align-items:center;gap:6px;white-space:normal;word-break:break-word}
.cai-model-badge{font-size:10px;padding:1px 5px;border-radius:4px;background:rgba(26,115,232,0.1);color:#1a73e8;font-weight:600;white-space:nowrap}
.cai-model-option-desc{font-size:11px;color:var(--text-muted);margin-top:2px;white-space:normal;word-break:break-word;line-height:1.4}
.cai-search-toggle{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--text-muted);cursor:pointer;user-select:none;padding:4px 10px;border-radius:6px;border:1px solid var(--border);transition:all 0.15s}
.cai-search-toggle:hover{border-color:#1a73e8;color:#1a73e8}
.cai-search-toggle.active{background:rgba(26,115,232,0.06);border-color:#1a73e8;color:#1a73e8}

/* ===== 爆款库 & 竞品拆解 美化样式 ===== */
/* 通用网格布局 */
.viral-grid,.competitor-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:20px}
.viral-empty,.competitor-empty{text-align:center;padding:60px;color:var(--text-muted);grid-column:1/-1;font-size:14px}

/* 卡片样式 */
.viral-card,.competitor-card{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:24px;display:flex;flex-direction:column;gap:14px;transition:box-shadow 0.2s,transform 0.15s}
.viral-card:hover,.competitor-card:hover{box-shadow:0 4px 20px rgba(0,0,0,0.08);transform:translateY(-2px)}

/* 卡片头部 */
.viral-card-header,.competitor-card-header{display:flex;flex-direction:column;gap:8px}
.viral-topic,.competitor-title{font-size:17px;font-weight:600;color:var(--text);line-height:1.5}
.viral-meta,.competitor-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.viral-tag,.competitor-tag{font-size:12px;padding:4px 10px;border-radius:20px;font-weight:500}
.viral-tag-ip,.competitor-tag-ip{background:#f0fdf4;color:#16a34a}
.viral-tag-cat{background:#fef3c7;color:#d97706}
.competitor-tag-topic{background:#f0f4ff;color:#3b82f6}
.viral-date{font-size:12px;color:var(--text-muted)}

/* 运营、标签 */
.viral-operator,.viral-tags{font-size:13px;color:var(--text-muted)}
.competitor-topic-row{font-size:14px;color:var(--text);padding:8px 0;border-bottom:1px dashed var(--border)}
.competitor-traffic{font-size:13px;color:#8b5cf6;background:#faf5ff;padding:8px 12px;border-radius:8px}

/* 内容展示区域 - 重点美化 */
.viral-content-box,.competitor-content-box{background:linear-gradient(135deg,#f8fafc 0%,#f1f5f9 100%);border:1px solid #e2e8f0;border-radius:10px;padding:16px;margin:4px 0}
.competitor-content-box-secondary{background:linear-gradient(135deg,#fafaf9 0%,#f5f5f4 100%);border-color:#e7e5e4}
.viral-content-label,.competitor-content-label{font-size:12px;font-weight:600;color:#64748b;margin-bottom:10px;text-transform:uppercase;letter-spacing:0.5px}
.viral-content-text,.competitor-content-text{font-size:14px;line-height:1.8;color:var(--text);white-space:pre-wrap;max-height:200px;overflow-y:auto}
.viral-content-text::-webkit-scrollbar,.competitor-content-text::-webkit-scrollbar{width:4px}
.viral-content-text::-webkit-scrollbar-thumb,.competitor-content-text::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:2px}

/* 统计数据 */
.viral-stats,.competitor-stats{display:flex;gap:16px;font-size:13px;color:var(--text-muted);margin-top:auto;padding-top:12px;border-top:1px solid var(--border)}
.viral-stat,.competitor-stat{display:flex;align-items:center;gap:4px}
.viral-stat-leads{color:#16a34a;font-weight:500}

/* 操作按钮 */
.viral-actions,.competitor-actions{display:flex;gap:8px;margin-top:4px}

/* 弹窗样式 - 放大到90%窗口 */
.viral-modal,.competitor-modal{width:90vw;max-width:1200px;height:90vh;max-height:800px;display:flex;flex-direction:column}
.viral-modal .modal-header,.competitor-modal .modal-header{flex-shrink:0}
.viral-modal .modal-body,.competitor-modal .modal-body{flex:1;overflow-y:auto;padding:24px}
.viral-modal .modal-footer,.competitor-modal .modal-footer{flex-shrink:0}
.viral-modal-body,.competitor-modal-body{display:flex;flex-direction:column;gap:20px}
.viral-form-row,.competitor-form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.viral-form-row-3col,.competitor-form-row-3col{grid-template-columns:repeat(3,1fr)}
.viral-form-group,.competitor-form-group{display:flex;flex-direction:column;gap:8px}
.viral-form-full,.competitor-form-full{grid-column:1/-1;display:flex;flex-direction:column;gap:8px}
@media (max-width:600px) {
  .viral-form-row,.competitor-form-row,
  .viral-form-row-3col,.competitor-form-row-3col{grid-template-columns:1fr}
}
.viral-textarea,.competitor-textarea{font-size:14px;line-height:1.8;padding:16px;resize:vertical;min-height:150px;width:100%;box-sizing:border-box}
.label .required{color:#ef4444;margin-left:2px}
.label .hint{font-size:12px;color:var(--text-muted);font-weight:normal;margin-left:4px}
.cai-search-toggle input{display:none}
.cai-input-area{padding:8px 20px 16px;border-top:none;background:var(--bg)}
.cai-input-wrap{display:flex;gap:8px;align-items:flex-end;background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;padding:8px 12px;transition:border-color 0.15s}
.cai-input-wrap:focus-within{border-color:#1a73e8}
.cai-textarea{flex:1;border:none;outline:none;resize:none;font-size:13.5px;line-height:1.5;min-height:144px;max-height:300px;background:transparent;font-family:inherit;color:var(--text)}
.cai-send-btn{width:36px;height:36px;border-radius:10px;border:none;background:linear-gradient(135deg,#1a73e8,#0d47a1);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:opacity 0.15s}
.cai-send-btn:disabled{opacity:0.4;cursor:not-allowed}
.cai-input-hint{font-size:11px;color:var(--text-muted);margin-top:6px;text-align:center}

/* ===== 资料库样式 ===== */
.knowledge-modal{width:90vw;max-width:1200px;height:90vh;max-height:800px;display:flex;flex-direction:column}
.knowledge-modal .modal-header{flex-shrink:0}
.knowledge-modal .modal-body{flex:1;overflow-y:auto;padding:24px}
.knowledge-modal .modal-footer{flex-shrink:0}
.knowledge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:20px}
.knowledge-card{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:20px;display:flex;flex-direction:column;gap:12px;transition:box-shadow 0.2s,transform 0.15s}
.knowledge-card:hover{box-shadow:0 4px 20px rgba(0,0,0,0.08);transform:translateY(-2px)}
.knowledge-card-title{font-size:16px;font-weight:600;color:var(--text);line-height:1.5}
.knowledge-card-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.knowledge-tag{font-size:12px;padding:3px 10px;border-radius:12px;background:#f0f4ff;color:#3b82f6;font-weight:500}
.knowledge-tag-cat{background:#fef3c7;color:#d97706}
.knowledge-tag-ai{background:#f0fdf4;color:#16a34a}
.knowledge-card-summary{font-size:13px;color:var(--text-muted);line-height:1.6;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.knowledge-card-footer{display:flex;gap:12px;align-items:center;font-size:12px;color:var(--text-muted);margin-top:auto;padding-top:10px;border-top:1px solid var(--border)}
.knowledge-card-actions{display:flex;gap:8px;margin-left:auto}
.knowledge-form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}
.knowledge-form-group label{font-size:13px;font-weight:500;color:var(--text)}
.knowledge-form-group .input{font-size:14px}
.knowledge-textarea{font-size:14px;line-height:1.8;padding:16px;resize:vertical;min-height:200px;width:100%;box-sizing:border-box}
.knowledge-empty{text-align:center;padding:60px;color:var(--text-muted);grid-column:1/-1;font-size:14px}
.knowledge-switch{position:relative;display:inline-block;width:36px;height:20px}
.knowledge-switch input{opacity:0;width:0;height:0}
.knowledge-switch .slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:#cbd5e1;border-radius:20px;transition:0.2s}
.knowledge-switch .slider:before{content:'';position:absolute;height:16px;width:16px;left:2px;bottom:2px;background:#fff;border-radius:50%;transition:0.2s}
.knowledge-switch input:checked+.slider{background:#22c55e}
.knowledge-switch input:checked+.slider:before{transform:translateX(16px)}

/* 飞书同步页面 */
.sync-card{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:24px}
.sync-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}
.sync-stat-item{text-align:center;padding:20px;background:var(--bg-secondary);border-radius:10px}
.sync-stat-num{font-size:32px;font-weight:700;color:var(--primary)}
.sync-stat-label{font-size:13px;color:var(--text-muted);margin-top:4px}
.sync-progress{height:8px;background:var(--border);border-radius:4px;overflow:hidden;margin-bottom:16px}
.sync-progress-bar{height:100%;background:linear-gradient(90deg,#1a73e8,#22c55e);border-radius:4px;transition:width 0.3s}
.sync-log{max-height:300px;overflow-y:auto;font-size:13px;font-family:monospace}
.sync-log-item{padding:8px 12px;border-bottom:1px solid var(--border);display:flex;gap:12px}
.sync-log-time{color:var(--text-muted);white-space:nowrap}
.sync-log-msg{color:var(--text)}

/* ===== Skill 选择器 ===== */
.cai-skill-selector{display:flex;align-items:center;gap:8px;flex:1}
.cai-skill-select{padding:6px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font-size:13px;cursor:pointer;min-width:160px}
.cai-skill-select:focus{outline:none;border-color:var(--primary)}
.cai-skill-desc{font-size:12px;color:var(--text-muted);max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ===== AI内容助手图片上传 ===== */
.cai-image-preview{display:flex;gap:8px;padding:8px 0;flex-wrap:wrap}
.cai-image-item{position:relative;width:80px;height:80px;border-radius:8px;overflow:hidden;border:1px solid var(--border)}
.cai-image-item img{width:100%;height:100%;object-fit:cover}
.cai-image-remove{position:absolute;top:2px;right:2px;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,0.6);color:#fff;border:none;cursor:pointer;font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center}
.cai-image-remove:hover{background:rgba(220,38,38,0.8)}
.cai-input-toolbar{display:flex;align-items:center;gap:16px;padding:8px 0}
.cai-upload-btn{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:6px;background:var(--bg-secondary);color:var(--text-muted);font-size:13px;cursor:pointer;transition:all 0.2s}
.cai-upload-btn:hover{background:var(--border);color:var(--text)}
.cai-upload-btn svg{width:16px;height:16px}

/* ===== 欢迎页dbs卡片 ===== */
.cai-welcome-section-title{font-size:14px;font-weight:600;color:var(--text);margin:20px 0 12px;padding-left:4px;border-left:3px solid var(--primary)}
.cai-welcome-grid-dbs{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))!important}
.cai-welcome-grid-dbs .cai-welcome-card{padding:16px;cursor:pointer}
.cai-welcome-card-name{font-size:14px;font-weight:600;color:var(--text);margin-top:4px}
.cai-welcome-card-desc{font-size:12px;color:var(--text-muted);margin-top:4px;line-height:1.4}

/* ===== 竞品拆解图片上传 ===== */
.competitor-image-upload{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-start}
.competitor-image-item{position:relative;width:100px;height:100px;border-radius:8px;overflow:hidden;border:1px solid var(--border)}
.competitor-image-item img{width:100%;height:100%;object-fit:cover}
.competitor-image-remove{position:absolute;top:2px;right:2px;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,0.6);color:#fff;border:none;cursor:pointer;font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center}
.competitor-image-remove:hover{background:rgba(220,38,38,0.8)}
.competitor-image-add{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100px;height:100px;border:2px dashed var(--border);border-radius:8px;cursor:pointer;color:var(--text-muted);transition:all 0.2s}
.competitor-image-add:hover{border-color:var(--primary);color:var(--primary)}
.competitor-image-add svg{margin-bottom:4px}
.competitor-image-add span{font-size:12px}
.competitor-ai-result{margin-top:16px;padding:16px;background:var(--bg-secondary);border-radius:8px;border-left:3px solid var(--primary)}
.competitor-ai-result-title{font-weight:600;margin-bottom:8px;color:var(--primary)}
.competitor-ai-result-content{font-size:14px;line-height:1.6;white-space:pre-wrap}

/* ===== Toast 消息提示 ===== */
.toast-container{position:fixed;top:24px;left:50%;transform:translateX(-50%);z-index:99999;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast-item{padding:10px 20px;border-radius:8px;font-size:14px;font-weight:500;color:#fff;white-space:nowrap;box-shadow:0 4px 16px rgba(0,0,0,0.15);opacity:0;transform:translateY(-12px);transition:opacity 0.3s,transform 0.3s;pointer-events:auto;max-width:480px;overflow:hidden;text-overflow:ellipsis}
.toast-visible{opacity:1;transform:translateY(0)}
.toast-hiding{opacity:0;transform:translateY(-12px)}
.toast-success{background:#10b981}
.toast-error{background:#ef4444}
.toast-info{background:#6366f1}
.toast-warning{background:#f59e0b}

/* ===== 手机端卡片模式（桌面端隐藏） ===== */
@media(min-width:769px){.card-list{display:none}}

/* ===== 移动端响应式 ===== */
@media(max-width:768px){
  .main{margin-left:0}
  .header{padding:0 12px}
  .header-breadcrumb{font-size:13px}
  .page-header{flex-direction:column;align-items:flex-start;gap:12px}
  .page-actions{width:100%;justify-content:flex-start;flex-wrap:wrap}
  .toolbar{flex-direction:column;gap:8px}
  .toolbar-search input,.toolbar select{width:100%!important}
  .filter-bar{flex-direction:column;gap:8px}
  .filter-bar input,.filter-bar select{width:100%!important}
  .modal{width:95vw!important;max-width:none!important;margin:20px}
  .modal-body{max-height:60vh;overflow-y:auto}
  .data-table,.ec-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .data-table thead,.ec-table thead{display:table;width:100%;table-layout:fixed}
  .data-table tbody,.ec-table tbody{display:table;width:100%;table-layout:fixed}
  .data-table td,.ec-table td{white-space:nowrap}
  .post-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))!important}
  .ai-chat{right:0;left:0;width:100%;bottom:0;max-height:60vh;border-radius:16px 16px 0 0}
  /* 手机端卡片模式 */
  .table-wrapper{display:none}
  .card-list{display:flex;flex-direction:column;gap:10px}
  .card-item{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:14px;box-shadow:0 1px 3px rgba(0,0,0,0.06)}
  .card-item:active{background:#f9fafb}
  .card-item-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
  .card-item-name{font-size:15px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:8px}
  .card-item-name .avatar-dot{width:36px;height:36px;border-radius:50%;background:#e5e7eb;display:flex;align-items:center;justify-content:center;font-size:14px;color:#6b7280;flex-shrink:0}
  .card-item-name .avatar-dot img{width:36px;height:36px;border-radius:50%;object-fit:cover}
  .card-item-actions{display:flex;gap:6px}
  .card-item-row{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:13px;color:var(--text-muted)}
  .card-item-row .row-label{color:var(--text-muted);flex-shrink:0;min-width:28px}
  .card-item-row .tag{font-size:11px}
  .card-item-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
  .card-item-footer{display:flex;align-items:center;justify-content:space-between;padding-top:8px;border-top:1px solid var(--border);font-size:12px;color:var(--text-muted)}
  .ai-fab{bottom:70px;right:14px}
  .user-info{display:none}
  .toggle-btn{display:block}
  .header-right{gap:8px}
  .content{padding:16px 12px}
  /* AI内容助手 手机端 */
  .cai-sidebar{position:absolute;left:0;top:0;bottom:0;width:280px;z-index:30;transform:translateX(-100%);transition:transform 0.25s}
  .cai-sidebar.visible{transform:translateX(0);box-shadow:4px 0 24px rgba(0,0,0,0.2)}
  .cai-sidebar-overlay{display:block;position:absolute;inset:0;background:rgba(0,0,0,0.35);z-index:29}
  .cai-toggle-sidebar-mobile{display:flex}
  .cai-main{width:100%}
  .cai-topbar{padding:6px 12px}
  .cai-messages{padding:12px}
  .cai-welcome h2{font-size:18px}
  .cai-welcome p{font-size:13px}
  .cai-welcome-grid{grid-template-columns:1fr 1fr;gap:8px}
  .cai-welcome-grid-dbs{grid-template-columns:1fr 1fr!important;gap:8px}
  .cai-welcome-card{padding:12px}
  .cai-input-area{padding:8px 12px 12px}
  .cai-textarea{font-size:13px;min-height:80px}
}

/* ================================================================
   AI记账本 (Ledger)
   ================================================================ */
.ledger-app { max-width:900px; margin:0 auto; }
.ledger-top-cards { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-bottom:16px; }
.ledger-summary-card { background:#fff; border-radius:var(--card-radius); padding:16px 20px; box-shadow:var(--shadow); }
.ledger-summary-card .card-label { font-size:12px; color:var(--text-muted); margin-bottom:4px; }
.ledger-summary-card .card-amount { font-size:22px; font-weight:700; }
.ledger-summary-card .card-sub { font-size:11px; color:var(--text-muted); margin-top:2px; }

/* 快捷记账 */
.ledger-quick-add { background:#fff; border-radius:var(--card-radius); padding:16px 20px; margin-bottom:16px; box-shadow:var(--shadow); }
.quick-add-tabs { display:flex; gap:8px; margin-bottom:12px; }
.quick-add-tabs button { padding:6px 14px; border:1px solid var(--border); border-radius:6px; background:#fff; cursor:pointer; font-size:13px; color:var(--text-muted); transition:all 0.2s; }
.quick-add-tabs button:hover { border-color:var(--primary); color:var(--primary); }
.quick-add-tabs button.active { background:var(--primary); color:#fff; border-color:var(--primary); }
.quick-add-text textarea { width:100%; border:1px solid var(--border); border-radius:8px; padding:12px; font-size:14px; resize:vertical; font-family:inherit; }
.quick-add-text textarea:focus { outline:none; border-color:var(--primary); box-shadow:0 0 0 3px rgba(37,99,235,0.1); }
.quick-add-actions { display:flex; gap:8px; margin-top:8px; align-items:center; }
.source-select { padding:6px 10px; border:1px solid var(--border); border-radius:6px; font-size:13px; }
.btn-ai-recognize { padding:8px 16px; background:linear-gradient(135deg,#6366f1,#8b5cf6); color:#fff; border:none; border-radius:8px; cursor:pointer; font-size:14px; font-weight:500; transition:opacity 0.2s; }
.btn-ai-recognize:hover { opacity:0.9; }
.btn-ai-recognize:disabled { opacity:0.5; cursor:not-allowed; }
.btn-clear { padding:8px 16px; background:#f1f5f9; border:1px solid var(--border); border-radius:8px; cursor:pointer; font-size:13px; }
.btn-close-sm { background:none; border:none; font-size:18px; cursor:pointer; color:var(--text-muted); padding:0 4px; }

/* 图片上传 */
.image-upload-zone { border:2px dashed var(--border); border-radius:12px; padding:32px; text-align:center; cursor:pointer; transition:border-color 0.2s; min-height:120px; display:flex; align-items:center; justify-content:center; }
.image-upload-zone:hover { border-color:var(--primary); background:#f8fafc; }
.upload-placeholder { color:var(--text-muted); }
.upload-icon { font-size:36px; margin-bottom:8px; }
.upload-hint { font-size:11px; color:#94a3b8; margin-top:4px; }
.upload-preview { max-width:100%; max-height:400px; border-radius:8px; object-fit:contain; }
.image-actions { display:flex; gap:8px; margin-top:8px; }

/* AI识别结果 */
.ai-result-card { margin-top:12px; background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:16px; }
.ai-result-header { display:flex; justify-content:space-between; align-items:center; font-weight:600; font-size:14px; margin-bottom:12px; color:var(--primary); }
.ai-result-body { display:grid; gap:8px; }
.ai-result-row { display:flex; justify-content:space-between; align-items:center; font-size:13px; }
.ai-result-row .ai-label { color:var(--text-muted); }
.ai-result-row .ai-value { font-weight:500; }
.ai-result-actions { display:flex; gap:8px; margin-top:12px; }
.ai-result-fallback { text-align:center; padding:12px; color:var(--text-muted); }

/* 手动表单 */
.manual-form { margin-top:12px; }
.form-row { display:flex; gap:10px; margin-bottom:10px; }
.form-group { display:flex; flex-direction:column; gap:4px; }
.form-group label { font-size:12px; color:var(--text-muted); font-weight:500; }
.form-group input,.form-group select { padding:8px 10px; border:1px solid var(--border); border-radius:6px; font-size:14px; }
.form-group input:focus,.form-group select:focus { outline:none; border-color:var(--primary); }
.flex-1 { flex:1; }
.flex-2 { flex:2; }
.amount-input { font-size:20px!important; font-weight:600; }
.type-toggle { display:flex; gap:4px; }
.type-toggle button { flex:1; padding:8px; border:1px solid var(--border); border-radius:6px; background:#fff; cursor:pointer; font-size:13px; transition:all 0.15s; }
.type-toggle button.active { background:var(--primary); color:#fff; border-color:var(--primary); }
.category-picker { display:flex; flex-wrap:wrap; gap:6px; }
.category-picker button { padding:5px 10px; border:1px solid var(--border); border-radius:16px; background:#fff; cursor:pointer; font-size:12px; transition:all 0.15s; white-space:nowrap; }
.category-picker button:hover { border-color:var(--primary); }
.category-picker button.active { background:var(--primary); color:#fff; border-color:var(--primary); }
.form-section { padding:8px 0 4px; margin-bottom:4px; border-bottom:1px solid var(--border); }
.form-section span { font-size:12px; font-weight:600; color:var(--text-muted); text-transform:uppercase; letter-spacing:0.5px; }
.form-actions { display:flex; gap:8px; margin-top:12px; }
/* ── SOP 引导提示条 ── */
.sop-hint-bar{display:flex;align-items:center;padding:8px 14px;border-radius:8px;font-size:12px;margin:4px 0 8px}
.sop-hint-bar.sop-info{background:#eff6ff;color:#2563eb;border:1px solid #bfdbfe}
.sop-hint-bar.sop-warn{background:#fffbeb;color:#d97706;border:1px solid #fde68a}
.sop-hint-bar.sop-success{background:#f0fdf4;color:#16a34a;border:1px solid #bbf7d0}
.sop-hint-bar.sop-danger{background:#fef2f2;color:#dc2626;border:1px solid #fecaca}
/* ── 工作台管道增强 ── */
.wb-stat{cursor:pointer;transition:all 0.2s;position:relative}
.wb-stat:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,0.08)}
.wb-stat .wb-sop-tip{display:none;position:absolute;bottom:-24px;left:50%;transform:translateX(-50%);background:#1e293b;color:#fff;font-size:10px;padding:3px 8px;border-radius:4px;white-space:nowrap;z-index:10}
.wb-stat:hover .wb-sop-tip{display:block}
.btn-text { background:none; border:none; color:var(--text-muted); cursor:pointer; font-size:13px; padding:8px; }
.btn-text:hover { color:var(--text); }
.btn-danger { padding:6px 14px; background:#fff; border:1px solid var(--danger); color:var(--danger); border-radius:6px; cursor:pointer; font-size:13px; }
.btn-danger:hover { background:var(--danger); color:#fff; }

/* 工具栏 */
.ledger-toolbar { display:flex; justify-content:space-between; align-items:center; gap:8px; margin-bottom:12px; flex-wrap:wrap; }
.toolbar-left,.toolbar-right { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.ledger-toolbar select { padding:6px 10px; border:1px solid var(--border); border-radius:6px; font-size:12px; }
.month-input { padding:6px 10px; border:1px solid var(--border); border-radius:6px; font-size:12px; }
.search-input { padding:6px 10px; border:1px solid var(--border); border-radius:6px; font-size:12px; width:160px; }
.btn-sm { padding:5px 12px; border:1px solid var(--border); border-radius:6px; background:#fff; cursor:pointer; font-size:12px; color:var(--text); }
.btn-sm:hover { border-color:var(--primary); color:var(--primary); }

/* 列表 */
.ledger-list { background:#fff; border-radius:var(--card-radius); box-shadow:var(--shadow); overflow:hidden; }
.ledger-list-summary { padding:10px 16px; border-bottom:1px solid var(--border); display:flex; gap:8px; flex-wrap:wrap; }
.summary-chip { font-size:12px; color:var(--text-muted); background:#f1f5f9; padding:2px 8px; border-radius:4px; }
.ledger-group { border-bottom:1px solid var(--border); }
.ledger-group:last-child { border-bottom:none; }
.ledger-group-header { padding:8px 16px; background:#f8fafc; font-size:12px; color:var(--text-muted); display:flex; justify-content:space-between; align-items:center; }
.group-date { font-weight:600; color:var(--text); }
.ledger-item { display:flex; align-items:center; padding:12px 16px; cursor:pointer; transition:background 0.1s; gap:10px; }
.ledger-item:hover { background:#f8fafc; }
.item-icon { font-size:24px; width:40px; height:40px; display:flex; align-items:center; justify-content:center; background:#f1f5f9; border-radius:10px; flex-shrink:0; }
.item-body { flex:1; min-width:0; }
.item-title { font-size:14px; font-weight:500; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.item-merchant { font-size:12px; color:var(--text-muted); font-weight:400; }
.item-desc { font-size:12px; color:var(--text-muted); margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.item-amount { font-size:15px; font-weight:600; white-space:nowrap; }
.amount-income { color:#10b981; }
.amount-expense { color:#ef4444; }
.item-source-tag { font-size:10px; padding:1px 6px; border-radius:4px; font-weight:500; }
.tag-personal { background:#dbeafe; color:#2563eb; }
.tag-company { background:#fef3c7; color:#d97706; }
.tag-ai { font-size:10px; padding:1px 5px; border-radius:4px; background:linear-gradient(135deg,#ede9fe,#ddd6fe); color:#7c3aed; }
.tag-blue { font-size:11px; padding:1px 6px; border-radius:4px; background:#dbeafe; color:#2563eb; }

.ledger-empty { text-align:center; padding:60px 20px; color:var(--text-muted); }
.empty-icon { font-size:48px; margin-bottom:12px; }
.empty-hint { font-size:12px; color:#94a3b8; margin-top:6px; }

/* 详情弹窗 */
.ledger-detail-modal { max-width:480px; }
.detail-amount { font-size:28px; font-weight:700; text-align:center; padding:16px 0; }
.text-income { color:#10b981; }
.text-expense { color:#ef4444; }
.detail-grid { display:grid; gap:6px; }
.ledger-detail-modal .detail-row { display:flex; justify-content:space-between; align-items:center; padding:6px 0; border-bottom:1px solid #f1f5f9; font-size:13px; }
.ledger-detail-modal .detail-row span:first-child { color:var(--text-muted); }
.detail-images { margin-top:12px; }
.detail-label { font-size:12px; color:var(--text-muted); margin-bottom:6px; }
.image-grid { display:flex; gap:8px; flex-wrap:wrap; }
.detail-image-thumb { width:80px; height:80px; object-fit:cover; border-radius:8px; cursor:pointer; border:1px solid var(--border); }
.detail-image-thumb:hover { border-color:var(--primary); }

/* 预算弹窗 */
.ledger-budget-modal { max-width:600px; }
.budget-tabs { display:flex; gap:4px; margin-bottom:16px; }
.budget-tabs button { flex:1; padding:8px; border:1px solid var(--border); border-radius:6px; background:#fff; cursor:pointer; font-size:13px; }
.budget-tabs button.active { background:var(--primary); color:#fff; border-color:var(--primary); }
.budget-row { display:flex; align-items:center; gap:10px; padding:10px 0; border-bottom:1px solid #f1f5f9; }
.budget-info { width:120px; display:flex; align-items:center; gap:6px; flex-shrink:0; }
.budget-icon { font-size:18px; }
.budget-name { font-size:13px; font-weight:500; }
.budget-bar-wrap { flex:1; height:8px; background:#f1f5f9; border-radius:4px; overflow:hidden; }
.budget-bar { height:100%; background:var(--success); border-radius:4px; transition:width 0.3s; }
.budget-bar.alert { background:var(--warning); }
.budget-bar.over { background:var(--danger); }
.budget-amounts { display:flex; align-items:center; gap:4px; font-size:12px; width:140px; flex-shrink:0; }
.budget-amounts .over { color:var(--danger); font-weight:600; }
.budget-sep { color:var(--text-muted); }
.budget-pct { font-size:11px; color:var(--text-muted); margin-left:4px; }
.budget-pct.over { color:var(--danger); font-weight:600; }
.budget-actions { display:flex; gap:4px; align-items:center; }
.budget-actions input { padding:4px 8px; border:1px solid var(--border); border-radius:4px; font-size:12px; }
.budget-add-row { display:flex; gap:8px; align-items:center; margin-top:12px; padding-top:12px; border-top:1px solid var(--border); }
.budget-add-row select { padding:6px 8px; border:1px solid var(--border); border-radius:6px; font-size:13px; }

/* ── 页面过渡动画 ── */
.page-enter-active { transition: opacity 0.2s, transform 0.2s; }
.page-enter-from { opacity: 0; transform: translateY(8px); }

/* ── 骨架屏 ── */
.skeleton { background: linear-gradient(90deg,var(--bg) 25%,#e2e8f0 50%,var(--bg) 75%); background-size:200% 100%; animation: shimmer 1.5s infinite; border-radius:6px; }
@keyframes shimmer { 0%{background-position:200% 0} 100%{background-position:-200% 0} }

/* ── 渐入动画 ── */
.fade-up { animation: fadeUp 0.3s ease-out; }
@keyframes fadeUp { from{opacity:0;transform:translateY(12px)} to{opacity:1;transform:translateY(0)} }

/* ── 仪表盘 Hero Banner ── */
.dashboard-hero { background: linear-gradient(135deg, #1e293b 0%, #334155 50%, #1e293b 100%); border-radius: var(--card-radius); padding: 32px; color: #fff; margin-bottom: 20px; position: relative; overflow: hidden; }
.dashboard-hero::after { content: ''; position: absolute; top: -50%; right: -10%; width: 300px; height: 300px; border-radius: 50%; background: rgba(99,102,241,0.15); pointer-events: none; }
.dashboard-hero-title { font-size: 24px; font-weight: 700; letter-spacing: -1px; margin-bottom: 6px; }
.dashboard-hero-sub { font-size: 13px; opacity: 0.6; margin-bottom: 20px; }
.dashboard-hero-stats { display: flex; gap: 32px; flex-wrap: wrap; }
.dashboard-hero-stat { text-align: center; min-width: 80px; }
.dashboard-hero-stat-val { font-size: 32px; font-weight: 800; letter-spacing: -2px; line-height: 1; }
.dashboard-hero-stat-lbl { font-size: 11px; opacity: 0.5; margin-top: 4px; text-transform: uppercase; letter-spacing: 1px; }

/* ── 管道阶段条增强 ── */
.pipeline-bar { display: flex; gap: 2px; border-radius: 8px; overflow: hidden; height: 8px; margin: 8px 0 16px; }
.pipeline-seg { height: 100%; transition: width 0.4s ease; cursor: pointer; position: relative; }
.pipeline-seg:hover { filter: brightness(1.15); }
.pipeline-seg.new_contact { background: #6366f1; }
.pipeline-seg.valid { background: #3b82f6; }
.pipeline-seg.mini_course { background: #f59e0b; }
.pipeline-seg.reviewing { background: #8b5cf6; }
.pipeline-seg.intending { background: #10b981; }
.pipeline-seg.closed { background: #059669; }

/* ── 阶段步骤指示器 ── */
.stage-steps { display: flex; align-items: center; justify-content: center; gap: 0; padding: 8px 0; flex-wrap: wrap; }
.stage-step { display: flex; align-items: center; gap: 4px; font-size: 11px; color: var(--text-muted); padding: 4px 8px; border-radius: 4px; transition: all 0.2s; cursor: pointer; }
.stage-step.active { color: var(--primary); font-weight: 600; background: #eff6ff; }
.stage-step.done { color: var(--success); }
.stage-step-arrow { margin: 0 2px; color: #cbd5e1; }

/* ── 通知点 ── */
.notify-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; animation: pulse-dot 2s infinite; }
@keyframes pulse-dot { 0%,100%{opacity:1} 50%{opacity:0.4} }
.notify-dot.urgent { background: var(--danger); }
.notify-dot.info { background: var(--primary); }

/* ── 空状态增强 ── */
.empty-state { padding: 60px 20px; text-align: center; color: var(--text-muted); }
.empty-state-icon { width: 48px; height: 48px; margin: 0 auto 12px; opacity: 0.3; }
.empty-state-title { font-size: 15px; font-weight: 600; margin-bottom: 4px; color: var(--text); }
.empty-state-desc { font-size: 12px; }

/* ── 卡片网格自适应 ── */
.card-grid-3 { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; }
.card-grid-4 { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 16px; }

/* ── 分割标题 ── */
.section-title { font-size: 15px; font-weight: 600; color: var(--text); margin-bottom: 12px; display: flex; align-items: center; gap: 8px; }
.section-title::after { content: ''; flex: 1; height: 1px; background: var(--border); }

/* ── 数据对比条 ── */
.compare-bar { display: flex; height: 24px; border-radius: 6px; overflow: hidden; }
.compare-bar-seg { display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 600; color: #fff; transition: width 0.4s; }

/* ── 工作台SOP进度条 ── */
.sop-progress { display: flex; gap: 0; margin: 8px 0 16px; }
.sop-progress-step { flex: 1; text-align: center; padding: 8px 4px; background: #f8fafc; border: 1px solid var(--border); font-size: 11px; color: var(--text-muted); position: relative; }
.sop-progress-step:first-child { border-radius: 6px 0 0 6px; }
.sop-progress-step:last-child { border-radius: 0 6px 6px 0; }
.sop-progress-step.active { background: #eff6ff; color: var(--primary); border-color: var(--primary); font-weight: 600; }
.sop-progress-step.done { background: #f0fdf4; color: var(--success); border-color: #bbf7d0; }

/* 响应式 */
@media (max-width:768px) {
  .ledger-top-cards { grid-template-columns:repeat(3,1fr); gap:8px; }
  .ledger-summary-card { padding:10px 12px; }
  .ledger-summary-card .card-amount { font-size:16px; }
  .form-row { flex-direction:column; gap:6px; }
  .ledger-toolbar { flex-direction:column; align-items:stretch; }
  .toolbar-left,.toolbar-right { flex-wrap:wrap; }
  .search-input { width:100%; }
}
/* 下划线标识未保存变更 */
.row-dirty { background: #fefce8 !important; }
/* 新增时段按钮 */
.btn-add-period { width:24px; height:24px; border-radius:50%; border:1px solid #cbd5e1; background:#fff; color:#64748b; font-size:16px; line-height:1; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; transition:all 0.15s; }
.btn-add-period:hover { background:#eff6ff; border-color:#3b82f6; color:#3b82f6; }
/* 添加人搜索下拉 */
.follower-dropdown { position:absolute; top:100%; left:0; min-width:100%; width:max-content; max-height:240px; overflow-y:auto; background:#fff; border:1px solid #e2e8f0; border-radius:6px; box-shadow:0 4px 12px rgba(0,0,0,0.1); z-index:100; margin-top:2px; }
.follower-option { padding:6px 10px; cursor:pointer; font-size:12px; display:flex; align-items:center; gap:8px; transition:background 0.1s; white-space:nowrap; }
.follower-option:hover { background:#f1f5f9; }
.follower-option.active { background:#eff6ff; color:#2563eb; }
.follower-name { font-weight:500; }
.follower-uid { color:#94a3b8; font-family:monospace; font-size:11px; flex:1; }
.follower-cnt { color:#cbd5e1; font-size:11px; }

/* ===== 顾问工作台 ===== */
.wb-shell { max-width:1200px; margin:0 auto; }
.wb-topbar { display:flex; gap:8px; margin-bottom:12px; flex-wrap:wrap; }
.wb-stat { flex:1; min-width:90px; text-align:center; padding:10px 6px; background:#fff; border-radius:10px; cursor:pointer; border:2px solid transparent; box-shadow:0 1px 3px rgba(0,0,0,0.06); transition:all 0.15s; }
.wb-stat:hover { border-color:#e2e8f0; transform:translateY(-1px); box-shadow:0 2px 8px rgba(0,0,0,0.1); }
.wb-stat.overdue { background:#fef2f2; }
.wb-stat-num { font-size:28px; font-weight:700; }
.wb-stat-label { font-size:11px; color:#64748b; margin-top:2px; }
@media (max-width:600px) {
  .wb-shell { max-width:100%; overflow:hidden; }
  .wb-topbar { flex-wrap:wrap; gap:6px; }
  .wb-stat { flex:1 1 calc(25% - 6px); min-width:75px; padding:8px 3px; }
  .wb-stat-num { font-size:20px; }
  .wb-stat-label { font-size:10px; white-space:nowrap; }
}
.wb-toolbar { display:flex; gap:12px; margin-bottom:12px; align-items:center; flex-wrap:wrap; }
.wb-toolbar-title { font-weight:600; font-size:16px; white-space:nowrap; }
.wb-toolbar-search { flex:1; max-width:260px; min-width:160px; }
.wb-toolbar-select { width:130px; font-size:11px; }
.wb-toolbar-btn { white-space:nowrap; }
@media (max-width:600px) {
  .wb-toolbar { gap:8px; }
  .wb-toolbar-search { max-width:100%; flex:1 1 100%; }
  .wb-toolbar-select { width:auto; flex:1; }
}
.wb-cards { display:flex; flex-direction:column; gap:6px; }
.wb-card { display:flex; justify-content:space-between; align-items:center; padding:12px 16px; background:#fff; border-radius:8px; cursor:pointer; border:1px solid #e2e8f0; transition:all 0.12s; position:relative; }
.wb-card:hover { border-color:#93c5fd; box-shadow:0 2px 8px rgba(59,130,246,0.08); }
.wb-card-left { flex:1; min-width:0; }
.wb-card-name { font-weight:600; font-size:14px; display:flex; align-items:center; gap:6px; }
.wb-card-meta { display:flex; align-items:center; gap:8px; margin-top:3px; flex-wrap:wrap; }
.wb-card-mini { font-size:12px; color:#f59e0b; margin-top:2px; }
.wb-card-right { text-align:right; display:flex; flex-direction:column; align-items:flex-end; gap:2px; flex-shrink:0; }
.wb-card-arrow { font-size:20px; color:#cbd5e1; }
/* 批量操作 */
.batch-toolbar{position:sticky;top:0;z-index:10;background:var(--card-bg);padding:8px 12px;border-radius:8px;box-shadow:var(--shadow-lg);margin-bottom:8px;display:flex;align-items:center;gap:8px;border:1px solid var(--primary);flex-wrap:wrap}
.wb-card.selected{border-color:var(--primary);background:rgba(37,99,235,0.04)}
.wb-card-checkbox{accent-color:var(--primary)}
.wb-stats-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:12px; font-size:12px; }
@media (max-width:600px) {
  .wb-stats-grid { grid-template-columns:repeat(2,1fr); gap:8px; }
}
.wb-stats-card { background:#fff; border-radius:8px; padding:12px; border:1px solid #e2e8f0; }
.wb-stats-card-title { font-weight:600; margin-bottom:6px; font-size:12px; }
.wb-stats-row { display:flex; justify-content:space-between; padding:2px 0; color:#64748b; font-size:11px; }
.wb-timeline { position:relative; padding-left:20px; }
.wb-timeline::before { content:''; position:absolute; left:7px; top:0; bottom:0; width:2px; background:#e2e8f0; }
.wb-timeline-item { position:relative; margin-bottom:12px; padding-left:8px; }
.wb-timeline-dot { position:absolute; left:-17px; top:4px; width:10px; height:10px; border-radius:50%; border:2px solid #fff; }
.wb-timeline-dot.follow { background:#3b82f6; }
.wb-timeline-dot.deal { background:#10b981; }
.wb-timeline-dot.review { background:#8b5cf6; }
.wb-timeline-content { font-size:12px; line-height:1.5; }

/* ========== 仪表盘模板系统 ========== */
.dashboard-grid {
  display:grid; grid-template-columns:repeat(12,1fr); gap:16px; padding:16px 0;
}
.dashboard-widget {
  background:var(--card-bg,#fff); border-radius:var(--card-radius,10px);
  box-shadow:var(--shadow,0 1px 3px rgba(0,0,0,.08)); border:1px solid var(--border,#e5e7eb);
  padding:16px; min-height:120px; transition:box-shadow .2s;
}
.dashboard-widget:hover { box-shadow:0 4px 12px rgba(0,0,0,.1); }
.widget-ghost { opacity:.4; box-shadow:0 0 0 2px var(--primary); }
.widget-header {
  display:flex; justify-content:space-between; align-items:center;
  margin-bottom:12px; font-size:13px; font-weight:600; color:var(--text-muted,#6b7280);
}
.btn-icon {
  background:none; border:none; cursor:pointer; padding:4px; border-radius:4px;
  color:var(--text-muted); display:flex; align-items:center;
}
.btn-icon:hover { background:var(--bg-secondary,#f3f4f6); color:var(--text-primary); }
.designer-layout { display:flex; gap:16px; min-height:calc(100vh - 180px); }
.designer-sidebar { width:260px; overflow-y:auto; flex-shrink:0; max-height:calc(100vh - 180px); }
.designer-canvas { flex:1; overflow-y:auto; background:var(--bg,#f9fafb); border-radius:8px; padding:16px; }
.metric-card {
  padding:10px; border:1px solid var(--border,#e5e7eb); border-radius:8px;
  cursor:pointer; margin-bottom:8px; transition:border-color .15s,background .15s;
}
.metric-card:hover { border-color:var(--primary); background:rgba(37,99,235,.04); }
.metric-card-active { border-color:var(--primary); background:rgba(37,99,235,.06); }
@media(max-width:768px) {
  .dashboard-grid { grid-template-columns:1fr; }
  .designer-layout { flex-direction:column; }
  .designer-sidebar { width:100%; max-height:none; }
}

/* ========== 工资基础表：行内编辑 ========== */
.editable-cell {
  cursor: pointer;
  position: relative;
  transition: background .15s;
  border-radius: 4px;
  padding: 4px 6px;
  margin: -4px -6px;
}
.editable-cell:hover {
  background: rgba(99,102,241,.06);
}
.editable-cell .salary-value {
  display: inline-block;
  min-width: 60px;
  border-bottom: 1px dashed transparent;
  transition: border-color .15s;
}
.editable-cell:hover .salary-value {
  border-bottom-color: var(--primary,#6366f1);
}
.inline-edit-input {
  width: 100%;
  max-width: 120px;
  padding: 4px 8px;
  border: 2px solid var(--primary,#6366f1);
  border-radius: 6px;
  font-size: 13px;
  font-family: inherit;
  background: #fff;
  outline: none;
  box-shadow: 0 0 0 3px rgba(99,102,241,.12);
}
.toast-save {
  position: fixed;
  bottom: 24px;
  right: 24px;
  padding: 10px 20px;
  border-radius: 8px;
  font-size: 14px;
  font-weight: 600;
  z-index: 9999;
  animation: toastIn .25s ease;
  box-shadow: 0 4px 12px rgba(0,0,0,.12);
}
.toast-save.success { background: #16a34a; color: #fff; }
.toast-save.error { background: #dc2626; color: #fff; }
@keyframes toastIn { from { opacity:0; transform:translateY(10px); } to { opacity:1; transform:translateY(0); } }
.row-highlight { background: rgba(99,102,241,.03); }

/* ============================================================
   帮助中心
   ============================================================ */
.help-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 16px;
  margin-bottom: 20px;
}
.help-card {
  background: #fff;
  border: 1px solid var(--border-color, #e5e7eb);
  border-radius: 12px;
  padding: 22px 20px;
  cursor: pointer;
  transition: all 0.2s ease;
  display: flex;
  flex-direction: column;
  gap: 12px;
  box-shadow: 0 1px 2px rgba(0,0,0,.04);
}
.help-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 25px rgba(0,0,0,.08);
  border-color: var(--primary, #6366f1);
}
.help-card-icon {
  width: 44px;
  height: 44px;
  border-radius: 12px;
  background: #eef2ff;
  color: var(--primary, #6366f1);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.help-card-title {
  font-size: 15px;
  font-weight: 600;
  color: #111827;
  line-height: 1.45;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.help-card-meta {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 12px;
  color: #9ca3af;
  margin-top: auto;
  padding-top: 10px;
  border-top: 1px solid #f3f4f6;
}

/* Markdown 渲染样式 */
.help-markdown {
  line-height: 1.85;
  font-size: 15px;
  color: #1f2937;
  max-width: 800px;
}
.help-markdown h1 { font-size: 26px; font-weight: 700; margin: 28px 0 18px; padding-bottom: 10px; border-bottom: 2px solid #e5e7eb; color: #111827; }
.help-markdown h2 { font-size: 21px; font-weight: 600; margin: 24px 0 14px; color: #1f2937; }
.help-markdown h3 { font-size: 17px; font-weight: 600; margin: 20px 0 10px; color: #374151; }
.help-markdown h4 { font-size: 15px; font-weight: 600; margin: 16px 0 8px; color: #4b5563; }
.help-markdown p { margin: 0 0 14px; }
.help-markdown ul, .help-markdown ol { padding-left: 24px; margin: 8px 0 16px; }
.help-markdown li { margin: 5px 0; }
.help-markdown strong { font-weight: 600; color: #111827; }
.help-markdown a { color: var(--primary, #6366f1); text-decoration: underline; }
.help-markdown code {
  background: #f1f5f9;
  padding: 2px 7px;
  border-radius: 4px;
  font-size: 13.5px;
  color: #dc2626;
  font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
}
.help-markdown pre {
  background: #1e293b;
  color: #e2e8f0;
  padding: 18px 22px;
  border-radius: 10px;
  overflow-x: auto;
  margin: 14px 0;
  font-size: 13.5px;
  line-height: 1.65;
}
.help-markdown pre code { background: transparent; color: inherit; padding: 0; font-size: inherit; }
.help-markdown blockquote {
  border-left: 4px solid var(--primary, #6366f1);
  padding: 10px 18px;
  margin: 14px 0;
  background: #f8fafc;
  color: #475569;
  border-radius: 0 8px 8px 0;
}
.help-markdown table {
  width: 100%;
  border-collapse: collapse;
  margin: 14px 0;
  font-size: 14px;
}
.help-markdown th, .help-markdown td {
  padding: 10px 14px;
  border: 1px solid #e5e7eb;
  text-align: left;
}
.help-markdown th { background: #f9fafb; font-weight: 600; color: #374151; }
.help-markdown tr:nth-child(even) td { background: #fafafa; }
.help-markdown img { max-width: 100%; border-radius: 8px; margin: 14px 0; }
.help-markdown hr { margin: 22px 0; border: none; border-top: 1px solid #e5e7eb; }

/* 编辑相关 */
.help-editor-textarea {
  font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
  font-size: 13px;
  line-height: 1.7;
  resize: vertical;
}
.help-markdown-preview {
  padding: 16px 20px;
  background: #fafbfc;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  overflow-y: auto;
  line-height: 1.7;
  font-size: 14px;
  color: #374151;
}
.form-hint {
  font-size: 11px;
  color: #9ca3af;
  margin-top: 4px;
}
