*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{height:100vh}.login-page{position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1e3c72,#2a5298,#3a6dc7);overflow:hidden}.login-watermark{position:absolute;top:-10%;right:-10%;bottom:-10%;left:-10%;pointer-events:none;overflow:hidden;z-index:1}.login-card{position:relative;z-index:1;width:400px;padding:40px;background:#fffffff5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:12px;box-shadow:0 20px 60px #00000040}.login-logo{text-align:center;margin-bottom:32px}.login-logo h1{font-size:24px;color:#1677ff;margin-top:8px}.login-logo p{color:#999;font-size:14px;margin-top:4px}.dashboard-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin-bottom:24px}.stat-card{padding:24px;background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000000f}.stat-card .stat-label{color:#999;font-size:14px;margin-bottom:8px}.stat-card .stat-value{font-size:28px;font-weight:600;color:#333}.stat-card .stat-sub{font-size:12px;color:#999;margin-top:4px}.page-header{margin-bottom:24px}.page-header h2{font-size:20px;color:#333;margin-bottom:4px}.page-header p{font-size:14px;color:#999}.customer-type-c{background:#e6f4ff;color:#1677ff}.customer-type-b{background:#f6ffed;color:#52c41a}.customer-type-g{background:#fff7e6;color:#fa8c16}.ant-tag{font-size:12px;border-radius:11px;padding:2px 10px;line-height:20px;border:none;font-weight:500}.ant-tag-green{background:#ecfdf5;color:#065f46}.ant-tag-blue{background:#eff6ff;color:#1e40af}.ant-tag-orange{background:#fff7ed;color:#9a3412}.ant-tag-red{background:#fef2f2;color:#991b1b}.ant-tag-purple{background:#f5f3ff;color:#5b21b6}.ant-tag-cyan{background:#ecfeff;color:#164e63}.ant-tag-geekblue{background:#eef2ff;color:#3730a3}.ant-tag-gold{background:#fffbeb;color:#92400e}.ant-tag[style*=background]{box-shadow:none;font-weight:600;letter-spacing:.3px}.crm-progress{height:6px;border-radius:3px;background:#e5e7eb;overflow:hidden}.crm-progress-bar{height:100%;border-radius:3px;transition:width .3s ease}.crm-progress-low .crm-progress-bar{background:#ef4444}.crm-progress-mid .crm-progress-bar{background:#f59e0b}.crm-progress-high .crm-progress-bar{background:#10b981}.crm-sparkline{display:inline-block;width:80px;height:32px;vertical-align:middle}.crm-filter-card{border:1px solid #F0F0F0;border-radius:8px;box-shadow:0 1px 3px #0000000a;margin-bottom:16px}.crm-filter-card .ant-card-body{padding:12px 16px!important}.ant-card{border-radius:8px;border:1px solid #F0F0F0;box-shadow:0 1px 3px #0000000a}.ant-card-head{border-bottom:1px solid #F0F0F0;padding:0 20px;min-height:48px}.ant-card-head-title{font-size:15px;font-weight:600;padding:12px 0}.ant-card-body{padding:20px}.ant-table{border-radius:8px;overflow:hidden}.ant-table-thead>tr>th{background:#f9fafb!important;color:#6b7280!important;font-weight:500!important;font-size:12px;text-transform:none;padding:12px 16px!important;border-bottom:1px solid #E5E7EB!important}.ant-table-tbody>tr>td{padding:14px 16px!important;border-bottom:1px solid #F3F4F6!important;color:#1f2937;font-size:14px}.ant-table-tbody>tr:hover>td{background:#f9fafb!important}.ant-table-tbody>tr:last-child>td{border-bottom:none!important}.ant-table a{color:#1677ff;font-weight:500}.ant-table a:hover{color:#4096ff}.ant-table .ant-btn-link{font-weight:500;padding:0 4px}.ant-pagination{margin:16px 0 0!important}.ant-pagination-item-active{border-color:#1677ff!important;background:#1677ff!important}.ant-pagination-item-active a{color:#fff!important}.ant-btn-primary{box-shadow:0 2px 6px #1677ff40;border-radius:6px}.ant-input,.ant-select-selector,.ant-picker{border-radius:6px;border-color:#e5e7eb}.ant-input:hover,.ant-select:hover .ant-select-selector,.ant-picker:hover{border-color:#1677ff}.ant-input:focus,.ant-select-focused .ant-select-selector,.ant-picker-focused{border-color:#1677ff;box-shadow:0 0 0 2px #1677ff1a}.ant-picker{padding:5px 11px}


/* ============================================================
   数据看板页 UI 重构（仅作用于 .dash-page 作用域，不影响其他页面）
   参照企业级 CRM 设计：淡紫灰底、柔和色板、藏青标题、悬浮反馈
   ============================================================ */

.dash-page { font-feature-settings: "tnum"; }

/* 页头 */
.dash-page .page-header h2 {
  font-size: 20px;
  font-weight: 700;
  color: #1F2D5A;
  letter-spacing: 0.3px;
}
.dash-page .page-header p { font-size: 13px; color: #8A93B2; }

/* 统计卡悬浮反馈 */
.dash-page .ant-card {
  transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1),
    box-shadow 0.25s cubic-bezier(0.4, 0, 0.2, 1),
    border-color 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}
.dash-page .ant-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 10px 24px rgba(31, 45, 90, 0.12);
  border-color: #E2E6F5;
}

/* 统计卡标题与数值节奏 */
.dash-page .ant-card .ant-card-body { line-height: 1.4; }

/* 销售漏斗柱体柔和过渡 */
.dash-page div[style*="transition: height"] { will-change: height; }

/* 客户类型 / 合同状态列表行 hover */
.dash-page div[style*="border-bottom: 1px solid #EFF1F8"]:hover,
.dash-page div[style*="border-bottom: 1px solid #F3F4F6"]:hover {
  background: #F7F8FD;
}

/* 响应式：六列统计卡降列 */
@media (max-width: 1400px) {
  .dash-page div[style*="repeat(6, minmax"] {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  }
}
@media (max-width: 900px) {
  .dash-page div[style*="repeat(6, minmax"] {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
  /* 漏斗行 / 分布列在小屏堆叠 */
  .dash-page .ant-col-14,
  .dash-page .ant-col-10 {
    flex: 0 0 100% !important;
    max-width: 100% !important;
  }
  .dash-page { padding: 16px !important; }
}
@media (max-width: 560px) {
  .dash-page div[style*="repeat(6, minmax"] {
    grid-template-columns: minmax(0, 1fr) !important;
  }
}

/* ============================================================
   全站设计语言统一（淡紫灰底 + 藏青标题 + 柔和卡片，v57.1）
   作用于客户管理 / 线索管理 / 跟进记录 / 合同管理 / 产品管理 / 用户管理
   ============================================================ */

/* 内容区淡紫灰底（登录页与全球版图页不受影响） */
.ant-layout-content { background: #EEF0F8 !important; }

/* 页头标题：藏青加粗 */
.page-header h2 { color: #1F2D5A; font-weight: 700; letter-spacing: 0.3px; }
.page-header p { color: #8A93B2; }

/* 卡片：统一边框 / 阴影 / 标题色 */
.ant-card { border-color: #EDEFF7; box-shadow: 0 2px 8px rgba(31, 45, 90, 0.05); }
.ant-card-head { border-bottom-color: #EFF1F8; }
.ant-card-head-title { color: #1F2D5A; font-weight: 600; }
.crm-filter-card { border-color: #EDEFF7; box-shadow: 0 2px 8px rgba(31, 45, 90, 0.05); }

/* 表格：淡紫灰表头与更柔和的分隔线 */
.ant-table-wrapper .ant-table-thead > tr > th {
  background: #F7F8FD !important;
  color: #5A6478 !important;
  border-bottom: 1px solid #E8EBF6 !important;
}
.ant-table-tbody > tr > td { border-bottom: 1px solid #F0F2F9 !important; }
.ant-table-tbody > tr:hover > td { background: #F7F8FD !important; }

/* 弹窗标题同步藏青 */
.ant-modal .ant-modal-title { color: #1F2D5A; }
.ant-drawer .ant-drawer-title { color: #1F2D5A; }
