*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
:root{--primary:#1a56db;--primary-hover:#1648c0;--primary-light:#e8effd;--text-primary:#111827;--text-secondary:#6b7280;--text-muted:#9ca3af;--bg-body:#f3f4f6;--bg-white:#ffffff;--bg-sidebar:#1e293b;--border:#e5e7eb;--radius:8px}
body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei','Helvetica Neue',Arial,sans-serif;color:#111827;background:#f3f4f6;line-height:1.5;overflow:hidden;height:100vh}
.app-layout{display:flex;height:100vh}
.sidebar{width:200px;background:#1e293b;display:flex;flex-direction:column;flex-shrink:0}
.sidebar-header{padding:20px 16px 16px;border-bottom:1px solid rgba(255,255,255,0.08)}
.sidebar-header h1{font-size:15px;font-weight:600;color:white}
.sidebar-header p{font-size:11px;color:rgba(255,255,255,0.4)}
.nav{padding:8px;flex:1}
.nav-item{display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:6px;color:rgba(255,255,255,0.65);cursor:pointer;font-size:13px;border:none;background:none;width:100%;text-align:left;transition:0.2s}
.nav-item:hover{background:#334155;color:white}
.nav-item.active{background:#1a56db;color:white}
.nav-item .badge{margin-left:auto;background:#ef4444;color:white;font-size:10px;padding:1px 6px;border-radius:8px;min-width:18px;text-align:center}
.sidebar-footer{padding:14px 16px;border-top:1px solid rgba(255,255,255,0.08);color:rgba(255,255,255,0.4);font-size:12px}
.main-content{flex:1;display:flex;flex-direction:column;overflow:hidden;background:#f3f4f6}
.page-header{padding:24px 28px 0;flex-shrink:0}
.page-header h2{font-size:20px;font-weight:600}
.page-header p{font-size:13px;color:#6b7280}
.page-body{flex:1;padding:16px 28px 28px;overflow-y:auto}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.stat-card{background:white;border-radius:8px;padding:16px;border:1px solid #e5e7eb}
.stat-card .num{font-size:24px;font-weight:700}
.stat-card .label{font-size:12px;color:#6b7280}
.toolbar{display:flex;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.toolbar-left{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.sbar{position:relative;width:200px}
.sbar input{width:100%;padding:7px 10px 7px 30px;border:1px solid #e5e7eb;border-radius:6px;font-size:13px;font-family:inherit;outline:none;background:white}
.sbar input:focus{border-color:#1a56db;box-shadow:0 0 0 3px rgba(26,86,219,0.1)}
.sbar .ico{position:absolute;left:9px;top:50%;transform:translateY(-50%);color:#9ca3af}
.fs{padding:6px 28px 6px 8px;border:1px solid #e5e7eb;border-radius:6px;font-size:12px;font-family:inherit;outline:none;background:white;cursor:pointer}
.btn{display:inline-flex;align-items:center;gap:4px;padding:7px 16px;border:none;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;font-family:inherit;transition:0.2s;white-space:nowrap}
.btn-p{background:#1a56db;color:white}
.btn-s{background:white;color:#111827;border:1px solid #e5e7eb}
.btn-g{background:#16a34a;color:white}
.btn-d{background:#ef4444;color:white}
.btn-gh{background:transparent;color:#6b7280;padding:4px 8px;font-size:12px}
.btn-gh:hover{background:#e5e7eb;color:#111827}
.btn-sm{padding:4px 10px;font-size:12px}
.card{background:white;border-radius:8px;border:1px solid #e5e7eb}
.card-h{padding:12px 16px;border-bottom:1px solid #e5e7eb;font-size:13px;font-weight:600;display:flex;align-items:center;justify-content:space-between}
.card-b{padding:16px;font-size:13px}
table{width:100%;border-collapse:collapse}
th{text-align:left;padding:10px 12px;font-size:11px;font-weight:600;color:#6b7280;background:#f9fafb;border-bottom:2px solid #e5e7eb}
td{padding:10px 12px;font-size:13px;border-bottom:1px solid #f3f4f6;vertical-align:middle}
tr{cursor:pointer}tr:hover td{background:#f8fafc}
.sb{display:inline-flex;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:500}
.s-已报价{background:#fef9c3;color:#a16207}
.s-谈价阶段{background:#ffedd5;color:#c2410c}
.s-支付方式阶段{background:#dbeafe;color:#1d4ed8}
.s-待支付{background:#ede9fe;color:#7c3aed}
.s-未知{background:#f3f4f6;color:#6b7280}
.s-回应强度不够{background:#fee2e2;color:#dc2626}
.pb{display:inline-flex;padding:1px 6px;border-radius:3px;font-size:11px;font-weight:600}
.p-高{background:#fef2f2;color:#dc2626}
.p-中{background:#fffbeb;color:#d97706}
.p-低{background:#f9fafb;color:#6b7280}
.tag{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;background:#e8effd;border-radius:4px;font-size:11px;color:#1a56db;margin:1px}
.empty-state{text-align:center;padding:60px 20px;color:#9ca3af}
.empty-icon{font-size:40px;margin-bottom:12px;opacity:0.5}
.empty-state h3{font-size:16px;font-weight:500;color:#6b7280;margin-bottom:6px}
.back{color:#1a56db;cursor:pointer;font-size:13px;display:inline-block;margin-bottom:10px}
.fg{margin-bottom:14px}
.fg label{display:block;font-size:12px;font-weight:500;margin-bottom:4px}
.fc{width:100%;padding:7px 10px;border:1px solid #e5e7eb;border-radius:6px;font-size:13px;font-family:inherit;outline:none;background:white}
.fc:focus{border-color:#1a56db;box-shadow:0 0 0 3px rgba(26,86,219,0.1)}
textarea.fc{resize:vertical;min-height:70px}
.fr{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.mo{position:fixed;inset:0;background:rgba(0,0,0,0.4);display:flex;align-items:center;justify-content:center;z-index:1000}
.mo-in{background:white;border-radius:12px;width:500px;max-width:90vw;max-height:85vh;box-shadow:0 20px 60px rgba(0,0,0,0.15);display:flex;flex-direction:column}
.mo-h{padding:16px 20px 0;display:flex;align-items:center;justify-content:space-between}
.mo-h h3{font-size:16px;font-weight:600}
.mo-b{padding:16px 20px;overflow-y:auto;flex:1}
.mo-f{padding:12px 20px;border-top:1px solid #e5e7eb;display:flex;justify-content:flex-end;gap:8px}
.dh{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px;gap:12px}
.di{flex:1}
.di h1{font-size:22px;font-weight:700}
.dm{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:4px;font-size:13px;color:#6b7280}
.dm .lb{color:#9ca3af}
.pbar{display:flex;align-items:center;gap:8px;padding:10px 0}
.pbar .tr{flex:1;height:6px;background:#e5e7eb;border-radius:3px;overflow:hidden}
.pbar .fl{height:100%;border-radius:3px;transition:width 0.3s}
.fl-h{background:#ef4444}.fl-m{background:#f59e0b}.fl-l{background:#9ca3af}
.pl{font-size:11px;color:#9ca3af;display:flex;gap:12px}
.tc{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.ri{padding:10px 0 10px 18px;border-left:2px solid #e5e7eb;margin-left:10px;position:relative}
.ri::before{content:"";position:absolute;left:-6px;top:14px;width:10px;height:10px;border-radius:50%;background:#1a56db;border:2px solid white}
.ri:last-child{border-left-color:transparent}
.rh{display:flex;align-items:center;gap:8px;font-size:12px;color:#6b7280;margin-bottom:3px}
.rh .st{color:#f59e0b;margin-left:auto}
.rc{font-size:13px;line-height:1.5}
.ra{margin-top:6px;display:flex;gap:4px}
.cs{display:flex;flex-wrap:wrap;gap:6px}
.co{padding:5px 12px;border:1px solid #e5e7eb;border-radius:16px;font-size:12px;cursor:pointer;transition:0.2s;user-select:none}
.co.active{background:#1a56db;color:white;border-color:#1a56db}
.tt{position:fixed;top:16px;right:16px;z-index:2000;display:flex;flex-direction:column;gap:6px}
.ti{padding:10px 16px;background:white;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,0.12);font-size:13px;border-left:4px solid #22c55e;animation:si 0.25s ease;max-width:340px}
.ti.e{border-left-color:#ef4444}
.ti.w{border-left-color:#f59e0b}
@keyframes si{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}
.sr{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid #f3f4f6}
.sr:last-child{border-bottom:none}
@media(max-width:768px){.sidebar{width:56px}.sidebar-header h1,.sidebar-header p,.nav-item span:not(.badge),.sidebar-footer{display:none}.nav-item{justify-content:center;padding:10px}.stats{grid-template-columns:repeat(2,1fr)}.tc{grid-template-columns:1fr}.page-body{padding:12px 16px}.dh{flex-direction:column}.sbar{width:100%}}
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}

/* ====== app.html CSS classes (added for compatibility) ====== */
.search-box{position:relative;width:200px}
.search-box input{width:100%;padding:7px 10px 7px 30px;border:1px solid #e5e7eb;border-radius:6px;font-size:13px;font-family:inherit;outline:none;background:white}
.search-box input:focus{border-color:#1a56db;box-shadow:0 0 0 3px rgba(26,86,219,0.1)}
.search-box .icon{position:absolute;left:9px;top:50%;transform:translateY(-50%);color:#9ca3af}
.filter-select{padding:6px 28px 6px 8px;border:1px solid #e5e7eb;border-radius:6px;font-size:12px;font-family:inherit;outline:none;background:white;cursor:pointer}
.text-muted{color:#9ca3af}
.loading{text-align:center;padding:40px;color:#9ca3af}
.stars{color:#f59e0b}
.concern-selector{display:flex;flex-wrap:wrap;gap:6px}
.concern-opt{padding:5px 12px;border:1px solid #e5e7eb;border-radius:16px;font-size:12px;cursor:pointer;transition:0.2s;user-select:none}
.concern-opt.active{background:#1a56db;color:white;border-color:#1a56db}
.detail-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px;gap:12px}
.detail-info{flex:1}
.detail-info h1{font-size:22px;font-weight:700}
.detail-meta{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:4px;font-size:13px;color:#6b7280}
.lbl{color:#9ca3af}
.detail{font-size:11px;color:var(--text-muted)}
.danger-zone{background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:16px;margin-top:16px}
.settings-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid #f3f4f6}
.settings-row:last-child{border-bottom:none}
.desc{font-size:11px;color:var(--text-muted)}
.modal{background:white;border-radius:12px;width:500px;max-width:90vw;max-height:85vh;box-shadow:0 20px 60px rgba(0,0,0,0.15);display:flex;flex-direction:column}
.cb-row{cursor:pointer}

/* ====== 新增模块化样式（从 app.html 提取） ====== */

/* 导航 */
.sidebar-nav{flex:1;padding:8px;display:flex;flex-direction:column;gap:2px}

/* 状态标签（复写旧版 .sb） */
.status-badge{display:inline-flex;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:500}
.s-已报价{background:#fef9c3;color:#a16207}
.s-谈价阶段{background:#ffedd5;color:#c2410c}
.s-支付方式阶段{background:#dbeafe;color:#1d4ed8}
.s-待支付{background:#ede9fe;color:#7c3aed}
.s-回应强度不够{background:#fee2e2;color:#dc2626}
.s-已完成{background:#dcfce7;color:#16a34a}
.s-已流失{background:#f3f4f6;color:#6b7280}

/* 优先级标签 */
.priority-badge{display:inline-flex;padding:1px 6px;border-radius:3px;font-size:11px;font-weight:600}
.p-高{background:#fef2f2;color:#dc2626}
.p-中{background:#fffbeb;color:#d97706}
.p-低{background:#f9fafb;color:#6b7280}

/* 模态框 */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.4);display:flex;align-items:center;justify-content:center;z-index:1000;backdrop-filter:blur(2px)}
.modal{background:#fff;border-radius:12px;width:500px;max-width:90vw;max-height:85vh;box-shadow:0 20px 60px rgba(0,0,0,0.15);display:flex;flex-direction:column}
.modal-header{padding:16px 20px 0;display:flex;align-items:center;justify-content:space-between}
.modal-header h3{font-size:16px;font-weight:600}
.modal-body{padding:16px 20px;overflow-y:auto;flex:1}
.modal-footer{padding:12px 20px;border-top:1px solid #e5e7eb;display:flex;justify-content:flex-end;gap:8px}

/* 记录条目 */
.record-item{padding:10px 0 10px 18px;border-left:2px solid #e5e7eb;margin-left:10px;position:relative}
.record-item::before{content:"";position:absolute;left:-6px;top:14px;width:10px;height:10px;border-radius:50%;background:#1a56db;border:2px solid #fff}
.record-item:last-child{border-left-color:transparent}
.record-header{display:flex;align-items:center;gap:8px;font-size:12px;color:#6b7280;margin-bottom:3px}
.record-header .stars{color:#f59e0b;margin-left:auto}
.record-content{font-size:13px;line-height:1.5}
.record-actions{margin-top:6px;display:flex;gap:4px}

/* 详情页布局 */
.pri-bar{display:flex;align-items:center;gap:8px;padding:10px 0}
.pri-bar .track{flex:1;height:6px;background:#e5e7eb;border-radius:3px;overflow:hidden}
.pri-bar .fill{height:100%;border-radius:3px;transition:width 0.3s}
.fill-h{background:#ef4444}
.fill-m{background:#f59e0b}
.fill-l{background:#9ca3af}
.pri-label{font-size:11px;color:#9ca3af;display:flex;gap:12px}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}

/* 返回链接 */
.back-link{color:#1a56db;cursor:pointer;font-size:13px;display:inline-block;margin-bottom:10px}
.back-link:hover{text-decoration:underline}

/* Toast */
.toast-container{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:2000;max-width:min(340px,calc(100vw - 32px))}
.toast{padding:10px 16px;background:#fff;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,0.12);font-size:13px;border-left:4px solid #22c55e;animation:si 0.25s ease;max-width:340px}
.toast.error{border-left-color:#ef4444}
.toast.warn{border-left-color:#f59e0b}

/* ====== 修复：JS 模块使用的类名（从 app.html 提取） ====== */

/* 按钮类名映射 */
.btn-primary{background:var(--primary);color:white}
.btn-primary:hover{background:var(--primary-hover)}
.btn-secondary{background:var(--bg-white);color:var(--text-primary);border:1px solid var(--border)}
.btn-secondary:hover{background:#f9fafb}
.btn-success{background:#16a34a;color:white}
.btn-success:hover{background:#15803d}
.btn-danger{background:#ef4444;color:white}
.btn-danger:hover{background:#dc2626}
.btn-ghost{background:transparent;color:var(--text-secondary);padding:4px 8px;font-size:12px}
.btn-ghost:hover{background:#e5e7eb}
.btn-block{width:100%;display:block}

/* 卡片类名映射 */
.card-header{padding:12px 16px;border-bottom:1px solid var(--border);font-size:13px;font-weight:600;display:flex;align-items:center;justify-content:space-between}
.card-body{padding:16px;font-size:13px}

/* 表单类名映射 */
.form-group{margin-bottom:14px}
.form-group label{display:block;font-size:12px;font-weight:500;margin-bottom:4px}
.form-control{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;font-family:inherit;outline:none;background:var(--bg-white)}
.form-control:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(26,86,219,0.1)}
textarea.form-control{resize:vertical;min-height:70px;line-height:1.5}
select.form-control{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;padding-right:28px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}

/* ====== 修复：switchView 使用的 .nav-item 选择器 ====== */

/* ====== 第二次交付新增样式 ====== */
/* 看板卡片 */
.stat-card-lg{background:var(--bg-white);border-radius:var(--radius);padding:20px;border:1px solid var(--border)}
.stat-card-lg .num{font-size:32px;font-weight:700;line-height:1.1}
.stat-card-lg .label{font-size:12px;color:var(--text-secondary);margin-top:2px}

/* 漏斗滚动容器 */
.funnel-scroll{display:flex;gap:12px;overflow-x:auto;padding-bottom:12px;min-height:500px}
.funnel-scroll::-webkit-scrollbar{height:4px}
.funnel-scroll::-webkit-scrollbar-thumb{background:#30363d;border-radius:2px}

/* 漏斗列 */
.funnel-col{min-width:200px;flex:1}
.funnel-card{cursor:pointer;transition:border-color 0.2s}
.funnel-card:hover{border-color:var(--primary)}

/* Canvas 图表容器 */
.chart-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.chart-full{grid-column:1/-1}
canvas{max-width:100%;height:auto}

/* ==================== 沟通协作 - 任务模块 ==================== */
/* 任务模块复用现有卡片、记录、按钮样式，特化样式如下： */
.task-priority-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  margin-right: 6px;
}
.task-priority-dot.high { background: #ef4444; }
.task-priority-dot.medium { background: #f59e0b; }
.task-priority-dot.low { background: #8b949e; }

/* 内部备注蓝色左边框 */
.note-item {
  border-left: 3px solid #3b82f6;
  padding: 10px 12px;
  border-bottom: 1px solid var(--border);
}
.note-item:last-child { border-bottom: none; }

/* 日历任务占位 */
.cal-task-dot {
  display: inline-block;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: #3b82f6;
  margin-right: 2px;
}

/* 详情页中的任务/备注切换 */
.detail-tab-bar {
  display: flex;
  gap: 0;
  border-bottom: 2px solid var(--border);
  margin-bottom: 0;
}
.detail-tab {
  padding: 8px 16px;
  font-size: 13px;
  cursor: pointer;
  color: var(--text-muted);
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  transition: color 0.15s, border-color 0.15s;
}
.detail-tab:hover { color: var(--text); }
.detail-tab.active {
  color: var(--primary);
  border-bottom-color: var(--primary);
  font-weight: 600;
}

/* 任务摘要折叠 */
details.task-done-summary {
  border-top: 1px solid var(--border);
}
details.task-done-summary summary {
  padding: 8px 12px;
  font-size: 12px;
  cursor: pointer;
  color: var(--text-muted);
  user-select: none;
}
details.task-done-summary summary:hover { color: var(--text); }

/* 任务表格精简 */
.task-table-small th {
  font-size: 11px;
  padding: 6px 8px;
}
.task-table-small td {
  font-size: 12px;
  padding: 6px 8px;
}

/* ====== 系统管理模块样式 ====== */
.admin-dashboard{padding:8px 0}
.admin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.admin-card{background:var(--bg-white);border:1px solid var(--border);border-radius:var(--radius);padding:24px;cursor:pointer;transition:all 0.2s;text-align:center}
.admin-card:hover{border-color:var(--primary);box-shadow:0 2px 12px rgba(26,86,219,0.1);transform:translateY(-2px)}
.admin-card-icon{font-size:32px;margin-bottom:8px}
.admin-card-title{font-size:14px;font-weight:600;margin-bottom:4px}
.admin-card-desc{font-size:11px;color:var(--text-secondary);line-height:1.4}

/* 部门树 */
.dept-tree{padding:4px 0}
.dept-node{padding:2px 0}
.dept-node-content{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:6px;transition:background 0.15s}
.dept-node-content:hover{background:#f8fafc}
.dept-expand{font-size:10px;color:var(--text-muted);width:14px;text-align:center;flex-shrink:0}
.dept-name{font-size:13px;font-weight:500;flex:1}
.dept-leader{font-size:11px;color:var(--text-muted);margin-right:8px}
.dept-actions{display:flex;gap:2px;opacity:0.4;transition:opacity 0.2s}
.dept-node-content:hover .dept-actions{opacity:1}

/* 审批 */
.approval-item:hover{background:#f8fafc}
.tab-btn.active{border-color:var(--primary) !important}
.tab-btn:not(.active):hover{background:#f3f4f6}

/* 权限矩阵滚动 */
.card-body table{font-size:12px}
.card-body th{font-size:11px;white-space:nowrap}
.card-body td{font-size:12px;white-space:nowrap}

/* ====== 公告栏 ====== */
.announcement-bar{background:#1a2332;border-bottom:1px solid #30363d;padding:6px 16px;display:flex;align-items:center;gap:8px;font-size:13px;color:#c9d1d9;overflow:hidden;position:relative}
.announcement-content{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.announcement-close{background:none;border:none;color:#8b949e;cursor:pointer;font-size:14px;padding:0 4px;line-height:1;flex-shrink:0}
.announcement-close:hover{color:#c9d1d9}
@keyframes announcement-scroll{0%{transform:translateX(100%)}100%{transform:translateX(-100%)}}

/* ============================================================
 * 模块：移动端 MOB - 样式
 * ============================================================ */

/* 移动端搜索栏 */
.mob-search-bar{margin-bottom:10px}
.mob-search-input{width:100%;padding:10px 14px;border:1px solid var(--border);border-radius:10px;font-size:15px;font-family:inherit;outline:none;background:var(--bg-white)}
.mob-search-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(26,86,219,0.1)}
.mob-filter-row{display:flex;gap:8px;margin-bottom:12px;align-items:center}
.mob-filter-select{padding:7px 12px;border:1px solid var(--border);border-radius:8px;font-size:13px;font-family:inherit;background:var(--bg-white);flex:1}
.mob-customer-list{display:flex;flex-direction:column;gap:8px}
.mob-customer-card{background:var(--bg-white);border:1px solid var(--border);border-radius:10px;padding:12px 14px;cursor:pointer;transition:all 0.15s}
.mob-customer-card:hover{border-color:var(--primary);box-shadow:0 1px 4px rgba(26,86,219,0.08)}
.mob-customer-card:active{transform:scale(0.99)}
.mob-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.mob-customer-name{font-size:15px;font-weight:600;color:var(--text-primary)}
.mob-card-meta{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--text-secondary);margin-top:2px}

/* 移动端详情 */
.mob-detail{padding:0}
.mob-detail-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}
.mob-detail-header h3{font-size:18px;font-weight:700;margin-bottom:4px}
.mob-detail-section{background:var(--bg-white);border:1px solid var(--border);border-radius:10px;padding:14px;margin-bottom:12px}
.mob-detail-section h4{font-size:13px;font-weight:600;color:var(--text-secondary);margin-bottom:8px}

/* CRM 5.0 补充样式 */
.action-cell{white-space:nowrap;text-align:right}
.detail-section{margin-bottom:18px}
.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.mob-dashboard{display:grid;grid-template-columns:1fr;gap:14px;padding:14px}
.tabs{display:flex;gap:4px;margin-bottom:12px;border-bottom:1px solid var(--border);overflow-x:auto}
.wh-event{accent-color:var(--primary,#1a56db);margin-right:6px;vertical-align:middle}
.mob-detail-row{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid #f3f4f6;font-size:13px}
.mob-detail-row:last-child{border-bottom:none}
.mob-label{color:var(--text-secondary);font-weight:500}
.mob-summary{font-size:13px;line-height:1.6;color:var(--text-primary)}

/* 移动端编辑表单 */
.mob-edit-form{background:var(--bg-white);border:1px solid var(--border);border-radius:10px;padding:16px}
.mob-edit-form h3{font-size:16px;font-weight:600}

/* 移动端看板 */
.mob-dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}
.mob-dash-card{background:var(--bg-white);border:1px solid var(--border);border-radius:10px;padding:14px;text-align:center}
.mob-dash-num{font-size:26px;font-weight:700}
.mob-dash-label{font-size:11px;color:var(--text-secondary);margin-top:2px}
.mob-dash-section{background:var(--bg-white);border:1px solid var(--border);border-radius:10px;padding:14px;margin-bottom:12px}
.mob-dash-section h4{font-size:13px;font-weight:600;margin-bottom:8px;color:var(--text-secondary)}
.mob-quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.mob-quick-btn{padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--bg-white);font-size:12px;cursor:pointer;text-align:center;transition:0.15s}
.mob-quick-btn:hover{border-color:var(--primary);background:var(--primary-light)}
.mob-dash-item{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid #f3f4f6;cursor:pointer;font-size:13px}
.mob-dash-item:last-child{border-bottom:none}

/* 移动端签到 */
.mob-checkin-page{max-width:400px;margin:0 auto}
.mob-checkin-card{background:var(--bg-white);border:1px solid var(--border);border-radius:12px;padding:20px;text-align:center;margin-bottom:14px}
.mob-checkin-icon{font-size:48px;margin-bottom:8px}
.mob-checkin-status{margin:8px 0;font-size:13px;color:var(--text-muted)}
.mob-checkin-addr{font-size:12px;color:var(--text-secondary);margin-bottom:8px}
.mob-checkin-history{background:var(--bg-white);border:1px solid var(--border);border-radius:10px;padding:14px}
.mob-checkin-history h4{font-size:13px;font-weight:600;margin-bottom:8px}
.mob-checkin-item{padding:8px 0;border-bottom:1px solid #f3f4f6;font-size:12px}
.mob-checkin-item:last-child{border-bottom:none}
.mob-ci-time{color:var(--text-muted);font-size:11px}
.mob-ci-addr{color:var(--text-primary);margin:2px 0}
.mob-ci-note{color:var(--text-secondary);font-style:italic}

/* 移动端审批 */
.mob-approval-page{max-width:500px}
.mob-approval-card{background:var(--bg-white);border:1px solid var(--border);border-radius:10px;padding:14px;margin-bottom:10px}
.mob-app-title{font-size:14px;font-weight:600;margin-bottom:4px}
.mob-app-meta{font-size:11px;color:var(--text-muted);margin-bottom:6px}
.mob-app-content{font-size:12px;color:var(--text-secondary);margin-bottom:8px}
.mob-app-actions{display:flex;gap:8px}
.mob-app-history{opacity:0.7}

/* ====== 移动端响应式适配 ====== */
@media(max-width:768px){
  .sidebar{width:56px}
  .sidebar-header h1,.sidebar-header p,.nav-item span:not(.badge),.sidebar-footer{display:none}
  .nav-item{justify-content:center;padding:10px;font-size:16px}
  .stats{grid-template-columns:repeat(2,1fr)}
  .page-body{padding:12px 16px}
}
@media(max-width:480px){
  .mob-dash-grid{grid-template-columns:1fr 1fr;gap:8px}
  .mob-quick-actions{grid-template-columns:1fr 1fr}
}

/* ============================================================
 * 模块：集成能力 INT - 样式
 * ============================================================ */
.int-page{padding:0}
.int-nav-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}
.int-nav-card{background:var(--bg-white);border:1px solid var(--border);border-radius:10px;padding:20px 14px;text-align:center;cursor:pointer;transition:all 0.2s}
.int-nav-card:hover{border-color:var(--primary);box-shadow:0 2px 10px rgba(26,86,219,0.08);transform:translateY(-2px)}
.int-nav-icon{font-size:32px;margin-bottom:6px}
.int-nav-card div:last-child{font-size:13px;font-weight:500;color:var(--text-primary)}
.int-section{margin-bottom:20px}
.int-section h3{font-size:15px;font-weight:600;margin-bottom:8px}

/* ERP 集成 */
.int-erp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.int-erp-card{background:var(--bg-white);border:1px solid var(--border);border-radius:10px;padding:16px;cursor:pointer;transition:all 0.2s;text-align:center}
.int-erp-card:hover{border-color:var(--primary);box-shadow:0 2px 8px rgba(26,86,219,0.08)}
.int-erp-icon{font-size:28px;margin-bottom:6px}
.int-erp-card h4{font-size:13px;font-weight:600;margin-bottom:4px}
.int-erp-card p{font-size:11px;color:var(--text-secondary)}

/* 集成配置输入 */
.int-cfg-input{font-family:monospace}

/* Alert 提示框 */
.alert{padding:10px 14px;border-radius:8px;font-size:13px;margin-bottom:8px}
.alert-success{background:#dcfce7;color:#15803d;border:1px solid #bbf7d0}
.alert-warn{background:#fffbeb;color:#a16207;border:1px solid #fde68a}
.alert-error{background:#fef2f2;color:#dc2626;border:1px solid #fecaca}

/* ====== code 标签样式 ====== */
code{background:#f3f4f6;padding:2px 6px;border-radius:4px;font-size:12px;color:#1a56db;font-family:Menlo,Monaco,monospace}

/* ====== 营销管理 & 服务管理 模块样式 ====== */

.card-tabs {
  display: flex;
  gap: 4px;
  margin-bottom: 16px;
  flex-wrap: wrap;
}
.card-tabs .btn {
  white-space: nowrap;
}

/* 星标评分 */
#sv-stars span {
  font-size: 28px;
  cursor: pointer;
  transition: transform 0.15s, color 0.15s;
  user-select: none;
}
#sv-stars span:hover {
  transform: scale(1.2);
  color: #f59e0b;
}

/* 状态标签 */
.badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 12px;
  background: #1e293b;
  color: #c9d1d9;
}

/* 表单增强 */
.form textarea.form-control {
  font-family: inherit;
  resize: vertical;
  min-height: 60px;
}
.form .form-row {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}
.form .form-row .form-group {
  flex: 1;
  min-width: 100px;
}

/* filter-select */
.filter-select {
  padding: 6px 10px;
  border: 1px solid #30363d;
  border-radius: 6px;
  background: #0d1117;
  color: #c9d1d9;
  font-size: 13px;
  outline: none;
}
.filter-select:focus {
  border-color: #58a6ff;
}

/* ====== 登录用户区域 ====== */
.sidebar-footer{display:flex;flex-direction:column;align-items:stretch;gap:8px;padding:12px 14px}
.logout-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;width:100%;padding:7px 10px;background:rgba(239,68,68,0.12);color:#f87171;border:1px solid rgba(239,68,68,0.25);border-radius:6px;font-size:12px;cursor:pointer;transition:all 0.2s;font-family:inherit}
.logout-btn:hover{background:rgba(239,68,68,0.25);color:#fff}
.logout-btn span{font-size:14px;font-weight:700}
@media(max-width:768px){.sidebar-footer{display:none}}

/* ====== 新增客户表单样式 ====== */
.cust-form-wrap{max-width:720px;margin:0 auto}
.cust-form-section{background:var(--bg-white);border:1px solid var(--border);border-radius:10px;padding:20px 24px;margin-bottom:16px}
.cust-section-title{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;color:var(--text-primary);margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid #f3f4f6}
.cust-section-icon{font-size:18px}
.cust-form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.cust-dup-warn{background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:10px 14px;margin-bottom:14px;font-size:13px;color:#dc2626;display:flex;align-items:center;gap:6px}
.input-wrap{position:relative}
.input-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);font-size:14px;pointer-events:none;z-index:1}
.input-wrap .form-control{padding-left:34px}
.input-wrap select.form-control{padding-left:34px}
.req{color:#ef4444;font-weight:700;margin-right:2px}
.cust-form-actions{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-top:8px}
.cust-actions-main{display:flex;gap:10px}
.cust-actions-extra{display:flex;gap:6px}
.btn-lg{padding:10px 28px;font-size:14px;font-weight:600;border-radius:8px}
@media(max-width:768px){.cust-form-row{grid-template-columns:1fr}.cust-form-actions{flex-direction:column}.cust-actions-main,.cust-actions-extra{width:100%}.cust-actions-main .btn-lg{flex:1}.btn-lg{width:100%;text-align:center}}
