/* =============================================================
 * app.css —— 纯运营线索 CRM 设计系统
 * 设计语言：浅色留白 + 靛紫主色(Indigo) + 圆角卡片 + 胶囊控件
 * 依赖：Tabler Core（基础组件），此处做品牌化覆盖
 * ============================================================= */

:root {
  /* 主色：靛紫 */
  --crm-primary: #5b5bd6;
  --crm-primary-600: #4b4bc4;
  --crm-primary-700: #3f3fb0;
  --crm-primary-50: #eef0ff;
  --crm-primary-100: #e2e4fb;

  /* 文本 */
  --crm-ink: #1a1f36;
  --crm-ink-2: #333a4f;
  --crm-ink-3: #5b6178;
  --crm-muted: #8b91a4;

  /* 线条 / 背景 */
  --crm-line: #edeef4;
  --crm-line-2: #f5f6fa;
  --crm-bg: #f7f8fc;

  /* 圆角 / 阴影 */
  --crm-radius: 14px;
  --crm-radius-sm: 9px;
  --crm-shadow: 0 1px 2px rgba(20, 24, 40, .04), 0 12px 32px -20px rgba(20, 24, 40, .24);
  --crm-shadow-sm: 0 1px 2px rgba(20, 24, 40, .05);
  --crm-shadow-primary: 0 8px 20px -8px rgba(91, 91, 214, .55);

  --crm-font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
    "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Arial, Roboto, sans-serif;

  /* 覆盖 Tabler 主色，统一为靛紫 */
  --tblr-primary: #5b5bd6;
  --tblr-primary-rgb: 91, 91, 214;
}

* { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }

body {
  font-family: var(--crm-font);
  background: var(--crm-bg);
  color: var(--crm-ink-2);
}

a { text-decoration: none; }

.container-xl { max-width: 1280px; }

/* =============================================================
 * 卡片
 * ============================================================= */
.card {
  border: 1px solid var(--crm-line);
  border-radius: var(--crm-radius);
  box-shadow: var(--crm-shadow-sm);
}
.card-header {
  border-bottom: 1px solid var(--crm-line);
  padding: .9rem 1.15rem;
  min-height: 56px;
  background: #fff;
  border-radius: var(--crm-radius) var(--crm-radius) 0 0;
}
.card-title { font-size: .96rem; font-weight: 650; color: var(--crm-ink); letter-spacing: .005em; margin: 0; }
.card-body { padding: 1.15rem; }
.card-footer { background: #fdfdff; border-top: 1px solid var(--crm-line); }

/* =============================================================
 * 按钮
 * ============================================================= */
.btn { border-radius: var(--crm-radius-sm); font-weight: 500; letter-spacing: .005em; }
.btn-sm { border-radius: 8px; font-size: .82rem; }
.btn-primary {
  background: var(--crm-primary);
  border-color: var(--crm-primary);
  box-shadow: var(--crm-shadow-primary);
}
.btn-primary:hover, .btn-primary:focus, .btn-primary:active {
  background: var(--crm-primary-600) !important;
  border-color: var(--crm-primary-600) !important;
}
.btn-outline-primary { color: var(--crm-primary); border-color: #d5d7f2; }
.btn-outline-primary:hover { background: var(--crm-primary); border-color: var(--crm-primary); color: #fff; }
.btn-outline-secondary { color: var(--crm-ink-3); border-color: var(--crm-line); }
.btn-outline-secondary:hover { background: var(--crm-line-2); border-color: #dfe2ec; color: var(--crm-ink); }

/* 浅色底软按钮（如：投海 / 次要操作） */
.btn-soft {
  background: var(--crm-primary-50);
  color: var(--crm-primary);
  border: 1px solid transparent;
}
.btn-soft:hover { background: var(--crm-primary-100); color: var(--crm-primary-600); }

/* 图标按钮 */
.btn-icon { display: inline-flex; align-items: center; justify-content: center; }

/* =============================================================
 * 表单
 * ============================================================= */
.form-control, .form-select {
  border-radius: var(--crm-radius-sm);
  border-color: #e3e5ee;
  color: var(--crm-ink);
  background-color: #fff;
}
.form-control::placeholder { color: #aab0c2; }
.form-control:focus, .form-select:focus {
  border-color: var(--crm-primary);
  box-shadow: 0 0 0 3.5px var(--crm-primary-50);
}
.form-label { font-weight: 500; color: var(--crm-ink-3); font-size: .82rem; margin-bottom: .35rem; }
.form-hint { font-size: .76rem; color: var(--crm-muted); margin-top: .3rem; }

/* 带图标输入框 */
.input-icon { position: relative; }
.input-icon > i {
  position: absolute; left: .8rem; top: 50%; transform: translateY(-50%);
  color: #9aa0b4; font-size: 1.05rem; pointer-events: none;
}
.input-icon .form-control { padding-left: 2.45rem; }

/* =============================================================
 * 徽章
 * ============================================================= */
.badge { border-radius: 7px; font-weight: 500; letter-spacing: .005em; padding: .34em .58em; }

/* =============================================================
 * 侧边导航（浅色）
 * ============================================================= */
.navbar-vertical {
  width: 266px;
  background: #fff;
  border-right: 1px solid var(--crm-line);
  /* Tabler 默认 overflow-y:scroll 会常驻一条空滚动条，改为 auto 仅在需要时显示 */
  overflow-y: auto;
}
.navbar-vertical .navbar-brand { padding: 0; height: auto; }

.crm-brand {
  display: flex;
  align-items: center;
  gap: .7rem;
  padding: 1.15rem 1.15rem 1.15rem 1.3rem;
  color: var(--crm-ink) !important;
}
.crm-logo {
  width: 40px; height: 40px; flex: none;
  display: grid; place-items: center;
  border-radius: 12px;
  background: linear-gradient(135deg, #6d6bf0, #5b5bd6);
  box-shadow: 0 8px 18px -8px rgba(91, 91, 214, .85);
  color: #fff; font-size: 1.2rem;
}
.crm-brand-title { display: block; font-size: .96rem; font-weight: 700; line-height: 1.2; color: var(--crm-ink); }
.crm-brand-sub { display: block; font-size: .66rem; color: #9aa0b4; letter-spacing: .16em; text-transform: uppercase; margin-top: 2px; }

/* ⚠️ Tabler 内置 `.navbar-vertical.navbar-expand-lg .navbar-nav{flex-grow:1}`（3 个类），
   优先级高于普通的 2 类选择器，会让「每一个菜单组」各自拉满整屏，导致
   「线索运营」「系统管理」两段之间出现大块空白。
   这里用同等优先级 + !important 强制取消拉伸，菜单自然从上往下紧凑堆叠。 */
.navbar-vertical.navbar-expand-lg .navbar-nav {
  flex: 0 0 auto !important;
  min-height: 0 !important;
  padding: .35rem .7rem !important;
  gap: 2px;
}
.navbar-vertical.navbar-expand-lg .nav-item { width: 100%; }
.navbar-vertical.navbar-expand-lg .navbar-nav .nav-link {
  color: #6b7280 !important;
  border-radius: 10px !important;
  padding: .6rem .8rem !important;
  display: flex;
  align-items: center;
  gap: .7rem;
  font-size: .885rem;
  font-weight: 500;
  transition: background .15s, color .15s;
}
.navbar-vertical.navbar-expand-lg .navbar-nav .nav-link .nav-link-icon { margin: 0 !important; width: 20px; color: #9aa0b4; }
.navbar-vertical.navbar-expand-lg .navbar-nav .nav-link .nav-link-icon i { font-size: 1.16rem; }
.navbar-vertical.navbar-expand-lg .navbar-nav .nav-link:hover { background: var(--crm-line-2) !important; color: var(--crm-ink) !important; }
.navbar-vertical.navbar-expand-lg .navbar-nav .nav-link:hover .nav-link-icon { color: var(--crm-ink-3); }
.navbar-vertical.navbar-expand-lg .navbar-nav .nav-link.active,
.navbar-vertical.navbar-expand-lg .navbar-nav .nav-link.active:focus {
  background: var(--crm-primary-50) !important;
  color: var(--crm-primary) !important;
  font-weight: 650;
}
.navbar-vertical.navbar-expand-lg .navbar-nav .nav-link.active .nav-link-icon { color: var(--crm-primary); }

.nav-sep {
  margin: .85rem 1.35rem .35rem;
  font-size: .68rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: #a6abbd;
  font-weight: 700;
}

.crm-side-foot {
  margin-top: auto;
  padding: 1rem 1.15rem 1.35rem;
  border-top: 1px solid var(--crm-line);
}
.crm-side-foot a {
  color: var(--crm-ink-3); font-size: .85rem;
  display: flex; align-items: center; gap: .55rem;
  padding: .5rem .35rem; border-radius: 9px;
}
.crm-side-foot a:hover { color: var(--crm-primary); background: var(--crm-primary-50); }

/* =============================================================
 * 顶栏
 * ============================================================= */
.crm-topbar {
  background: rgba(255, 255, 255, .92) !important;
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--crm-line);
  min-height: 62px;
  position: sticky;
  top: 0;
  z-index: 10;
}
.crm-topbar .page-pretitle { color: var(--crm-muted); font-size: .78rem; margin: 0; }
.crm-topbar .crm-top-title { font-size: 1.02rem; font-weight: 700; color: var(--crm-ink); letter-spacing: .005em; }

.crm-user { display: flex; align-items: center; gap: .6rem; }
.crm-avatar {
  width: 36px; height: 36px; border-radius: 11px; flex: none;
  display: grid; place-items: center;
  background: var(--crm-primary-50);
  color: var(--crm-primary); font-weight: 700; font-size: .88rem;
}
.crm-user-name { line-height: 1.15; }
.crm-user-name b { font-size: .86rem; color: var(--crm-ink); font-weight: 650; }
.crm-user-name span { display: block; font-size: .72rem; color: var(--crm-muted); }

.page-body { padding-top: 1.4rem; padding-bottom: .5rem; }

/* 内容区页头 */
.content-head { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 1.15rem; gap: 1rem; flex-wrap: wrap; }
.content-head h2 { font-size: 1.4rem; font-weight: 700; color: var(--crm-ink); margin: 0; letter-spacing: -.01em; }
.content-head p { margin: .3rem 0 0; color: var(--crm-muted); font-size: .85rem; }

/* 导出范围下拉菜单：可滚动，避免资源库/员工过多时超出视口 */
.crm-export-menu { min-width: 248px; max-height: 62vh; overflow-y: auto; padding: .4rem .35rem; }
.crm-export-menu .dropdown-header { font-size: .72rem; font-weight: 600; letter-spacing: .04em; color: var(--crm-ink-3); padding: .5rem .75rem .25rem; }
.crm-export-menu .dropdown-item { border-radius: 8px; padding: .45rem .75rem; font-size: .86rem; }
.crm-export-menu .dropdown-item i { color: var(--crm-ink-3); width: 1.1rem; text-align: center; }
.crm-export-menu .dropdown-item:hover,
.crm-export-menu .dropdown-item:focus { background: var(--crm-primary-50); color: var(--crm-primary-700); }
.crm-export-menu .dropdown-item:hover i { color: var(--crm-primary-700); }
.crm-export-menu .dropdown-divider { margin: .3rem .25rem; }

/* =============================================================
 * KPI 统计卡
 * ============================================================= */
.kpi {
  display: flex; align-items: center; gap: 1rem;
  padding: 1.15rem 1.25rem;
  background: #fff;
  border: 1px solid var(--crm-line);
  border-radius: var(--crm-radius);
  box-shadow: var(--crm-shadow-sm);
  height: 100%;
  transition: box-shadow .18s, transform .18s;
}
.kpi:hover { box-shadow: var(--crm-shadow); transform: translateY(-1px); }
.kpi-icon {
  width: 50px; height: 50px; border-radius: 14px; flex: none;
  display: grid; place-items: center; font-size: 1.45rem;
}
.kpi-icon.blue   { background: #eef1fe; color: #4f46e5; }
.kpi-icon.amber  { background: #fff4e8; color: #ea8a1a; }
.kpi-icon.green  { background: #e9f9ef; color: #17a25b; }
.kpi-icon.violet { background: #f2eeff; color: #7c5cf5; }
.kpi-value { font-size: 1.7rem; font-weight: 750; color: var(--crm-ink); line-height: 1; letter-spacing: -.02em; }
.kpi-label { font-size: .8rem; color: var(--crm-muted); margin-top: .35rem; }

/* =============================================================
 * 胶囊标签页 / 分段控件
 * ============================================================= */
.crm-tabs { display: flex; gap: .5rem; flex-wrap: wrap; }
.crm-tab {
  padding: .5rem 1rem; border-radius: 10px;
  font-size: .86rem; font-weight: 550;
  color: var(--crm-ink-3); background: #fff;
  border: 1px solid var(--crm-line);
  transition: all .15s;
}
.crm-tab:hover { color: var(--crm-primary); border-color: #d7d9f4; background: #fbfbff; }
.crm-tab.active {
  background: var(--crm-primary); color: #fff; border-color: var(--crm-primary);
  box-shadow: var(--crm-shadow-primary);
}

/* 分段控件：等宽排列，文字不折行（窄屏也不会被压成竖排） */
.crm-seg { display: flex; gap: 4px; background: #f1f2f8; border-radius: 11px; padding: 4px; }
.crm-seg a, .crm-seg button {
  flex: 1 1 0; min-width: 0; white-space: nowrap; text-align: center;
  border: 0; background: transparent; cursor: pointer;
  padding: .42rem .6rem; border-radius: 8px;
  font-size: .83rem; font-weight: 550; color: var(--crm-ink-3);
  transition: all .15s;
}
.crm-seg a:hover, .crm-seg button:hover { color: var(--crm-primary); }
.crm-seg .active { background: var(--crm-primary); color: #fff; box-shadow: var(--crm-shadow-primary); }

/* 工具条 */
.crm-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.crm-toolbar-left { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.crm-toolbar-right { display: flex; align-items: center; gap: .5rem; }

/* 分配状态页签组（与状态页签并排，中间一条竖分隔线） */
.crm-tabgroup { display: flex; align-items: center; gap: .55rem; flex-wrap: wrap; }
.crm-tablabel { font-size: .82rem; font-weight: 500; color: var(--crm-ink-3); white-space: nowrap; }
.crm-tabsep { width: 1px; align-self: stretch; min-height: 1.6rem; background: var(--crm-line); margin: 0 .15rem; }

/* 可点击 KPI（点击跳转到对应筛选） */
a.kpi { text-decoration: none; color: inherit; cursor: pointer; transition: box-shadow .15s, transform .15s; }
a.kpi:hover { box-shadow: 0 6px 18px rgba(79, 70, 229, .12); transform: translateY(-1px); }
a.kpi:hover .kpi-label { color: var(--crm-primary); }

/* 筛选面板 */
.crm-filter {
  background: #fbfbfe;
  border: 1px solid var(--crm-line);
  border-radius: 12px;
  padding: 1rem 1.1rem 1.05rem;
}
.crm-filter-head {
  display: flex; align-items: center; justify-content: space-between;
  gap: .75rem; flex-wrap: wrap;
  margin-bottom: .9rem;
}
.crm-filter-title {
  display: inline-flex; align-items: center; gap: .45rem;
  font-size: .86rem; font-weight: 650; color: var(--crm-ink);
}
.crm-filter-title i { color: var(--crm-primary); font-size: 1rem; }

/* 字段区：一行自适应排开，关键词撑满剩余宽度 */
.crm-fields { display: flex; flex-wrap: wrap; gap: .8rem 1rem; }
.crm-field { display: flex; flex-direction: column; flex: 0 1 172px; min-width: 152px; }
.crm-field .form-label { margin-bottom: .35rem; white-space: nowrap; }
.crm-field-grow { flex: 1 1 240px; min-width: 200px; }
/* 区间输入（年龄 / 身高：最小~最大） */
.crm-field-range { flex: 0 1 210px; }
.crm-range { display: flex; align-items: center; gap: .35rem; }
.crm-range .form-control { min-width: 0; }
.crm-range-sep { color: var(--crm-muted); font-size: .85rem; flex: none; }

/* 面板底部：左「时间筛选」右「查询/重置」 */
.crm-filter-foot {
  display: flex; align-items: center; justify-content: space-between;
  gap: .85rem 1rem; flex-wrap: wrap;
  margin-top: 1rem; padding-top: .9rem;
  border-top: 1px dashed var(--crm-line);
}
.crm-time { display: flex; align-items: center; gap: .7rem; flex-wrap: wrap; }
.crm-time-label { font-size: .82rem; font-weight: 500; color: var(--crm-ink-3); white-space: nowrap; }
.crm-time .crm-seg { flex: 0 0 auto; }
.crm-time .crm-seg button { flex: 0 0 auto; }
.crm-date { width: 250px; flex: none; }
.crm-date .form-control { min-width: 0; }

/* =============================================================
 * 表格
 * ============================================================= */
.table > thead th {
  font-size: .74rem; letter-spacing: .04em; text-transform: uppercase;
  color: var(--crm-muted); font-weight: 650;
  background: #f8f9fc; border-bottom: 1px solid var(--crm-line);
  padding-top: .7rem; padding-bottom: .7rem; white-space: nowrap;
}
.table > tbody > tr > td { padding-top: .8rem; padding-bottom: .8rem; border-bottom-color: var(--crm-line-2); }
.table-hover > tbody > tr:hover > * { background: #fafbff; }
.table-vcenter td, .table-vcenter th { vertical-align: middle; }
.card-table > :not(caption) > * > * { padding-left: 1.15rem; padding-right: 1.15rem; }

/* 行内下拉（状态 / 分配） */
.select-inline {
  border: 1px solid var(--crm-line);
  border-radius: 8px;
  font-size: .8rem;
  color: var(--crm-ink-3);
  padding: .3rem 1.6rem .3rem .55rem;
  background-color: #fff;
  cursor: pointer;
}
.select-inline:focus { border-color: var(--crm-primary); box-shadow: 0 0 0 3px var(--crm-primary-50); }

/* 头像 */
.avatar { border-radius: 10px; font-weight: 650; }

/* =============================================================
 * 空状态
 * ============================================================= */
.empty-soft { padding: 2.75rem 1rem; text-align: center; color: var(--crm-muted); }
.empty-soft i { font-size: 2.1rem; color: #cdd2e0; display: block; margin-bottom: .55rem; }

/* =============================================================
 * 登录页
 * ============================================================= */
.login-page { min-height: 100vh; display: flex; }
.login-aside {
  flex: 0 0 46%;
  background: linear-gradient(155deg, #4b4bc4 0%, #5b5bd6 45%, #7b6cf0 120%);
  color: #fff;
  padding: 3.2rem;
  display: flex; flex-direction: column;
  position: relative; overflow: hidden;
}
.login-aside::before {
  content: ""; position: absolute; top: -140px; right: -80px;
  width: 380px; height: 380px; border-radius: 50%;
  background: radial-gradient(circle, rgba(255, 255, 255, .22), transparent 70%);
}
.login-aside::after {
  content: ""; position: absolute; left: -120px; bottom: -150px;
  width: 460px; height: 460px; border-radius: 50%;
  background: radial-gradient(circle, rgba(255, 255, 255, .14), transparent 70%);
}
.login-aside .brand { display: flex; align-items: center; gap: .7rem; font-weight: 650; font-size: 1.05rem; position: relative; z-index: 1; }
.login-aside .brand .crm-logo { background: rgba(255, 255, 255, .18); box-shadow: none; backdrop-filter: blur(4px); }
.login-aside .lede { margin-top: auto; position: relative; z-index: 1; }
.login-aside .lede h1 { font-size: 2rem; font-weight: 750; line-height: 1.3; letter-spacing: -.02em; }
.login-aside .lede p { color: #e0e2ff; margin-top: .85rem; font-size: .95rem; }
.login-feats { display: grid; gap: .7rem; margin-top: 1.7rem; }
.login-feats div { display: flex; align-items: center; gap: .6rem; color: #eceeff; font-size: .885rem; }
.login-feats i { color: #fff; font-size: 1.05rem; opacity: .9; }
.login-main { flex: 1; display: flex; align-items: center; justify-content: center; padding: 2rem; background: #fff; }
.login-card { width: 100%; max-width: 380px; }
.login-card h2 { font-size: 1.55rem; font-weight: 750; color: var(--crm-ink); letter-spacing: -.01em; }
.login-card .sub { color: var(--crm-muted); font-size: .88rem; margin-top: .35rem; margin-bottom: 1.7rem; }
.login-card .input-icon .form-control { height: 48px; }
.btn-login { height: 48px; font-weight: 650; }

@media (max-width: 991.98px) {
  .login-aside { display: none; }
  .login-page { background: linear-gradient(160deg, #4b4bc4, #5b5bd6); }
  .login-main { background: transparent; }
  .login-card { background: #fff; padding: 1.7rem; border-radius: 20px; box-shadow: var(--crm-shadow); }
}

/* =============================================================
 * 手机端 H5（App 风格）
 * ============================================================= */
body.m-body { background: #eef0f7; }
.m-shell { max-width: 560px; margin: 0 auto; min-height: 100vh; background: var(--crm-bg); padding-bottom: 84px; box-shadow: 0 0 50px rgba(20, 24, 40, .07); }
.m-topbar {
  position: sticky; top: 0; z-index: 20;
  background: linear-gradient(135deg, #5b5bd6, #6d6bf0);
  color: #fff; padding: 1rem 1.15rem;
  display: flex; align-items: center; justify-content: space-between;
  border-radius: 0 0 18px 18px;
}
.m-topbar .m-title { font-weight: 650; font-size: .98rem; }
.m-topbar .m-sub { font-size: .72rem; color: #dcdeff; margin-top: 1px; }
.m-topbar a { color: #e6e7ff; font-size: .82rem; }
.m-pad { padding: 1rem; }

.m-hero { background: linear-gradient(135deg, #5b5bd6, #6d6bf0); border-radius: var(--crm-radius); color: #fff; padding: 1.2rem; box-shadow: var(--crm-shadow-primary); }
.m-hero .t { font-size: 1.08rem; font-weight: 650; }
.m-hero .d { font-size: .8rem; color: #e3e4ff; margin-top: .25rem; }

.m-kpi { background: #fff; border: 1px solid var(--crm-line); border-radius: var(--crm-radius); padding: 1rem; text-align: center; box-shadow: var(--crm-shadow-sm); }
.m-kpi .v { font-size: 1.55rem; font-weight: 750; color: var(--crm-primary); }
.m-kpi .l { font-size: .76rem; color: var(--crm-muted); margin-top: .25rem; }
a.m-kpi { display: block; color: inherit; transition: box-shadow .15s, transform .15s, border-color .15s; }
a.m-kpi:hover, a.m-kpi:active { border-color: var(--crm-primary); box-shadow: var(--crm-shadow); transform: translateY(-1px); }

/* 首页可点击的资源库条目 */
.m-pool-link { padding: .85rem 1rem; color: var(--crm-ink); font-weight: 550; transition: background .15s, color .15s; }
.m-pool-link:hover, .m-pool-link:active { background: var(--crm-primary-50); color: var(--crm-primary-700); }

.m-list { border: 1px solid var(--crm-line); border-radius: var(--crm-radius); overflow: hidden; background: #fff; }
.m-item { display: flex; align-items: center; gap: .5rem; padding: .9rem 1rem; border-bottom: 1px solid var(--crm-line-2); }
.m-item:last-child { border-bottom: 0; }
/* 左侧信息区整体可点（看详情），右侧留给「领取」按钮或箭头 */
.m-item-main { flex: 1 1 auto; min-width: 0; color: inherit; transition: color .15s; }
.m-item-main:hover .who, .m-item-main:active .who { color: var(--crm-primary-700); }
.m-item .who { font-weight: 650; color: var(--crm-ink); font-size: .95rem; }
.m-item .meta { font-size: .76rem; color: var(--crm-muted); margin-top: .2rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m-item-arrow { flex: 0 0 auto; display: inline-flex; align-items: center; color: var(--crm-muted); font-size: 1.1rem; }
/* 公海「领取」按钮：行内主操作 */
.m-claim-form { flex: 0 0 auto; margin: 0; }
.m-claim-btn { white-space: nowrap; }

.m-bottomnav {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 30;
  max-width: 560px; margin: 0 auto;
  background: rgba(255, 255, 255, .96); backdrop-filter: blur(12px);
  border-top: 1px solid var(--crm-line);
  display: flex; padding: .5rem 0 .7rem;
}
.m-bottomnav a { flex: 1; text-align: center; color: #9aa0b4; font-size: .72rem; display: flex; flex-direction: column; align-items: center; gap: .2rem; }
.m-bottomnav a i { font-size: 1.4rem; }
.m-bottomnav a.active { color: var(--crm-primary); }

.m-body .card { box-shadow: var(--crm-shadow-sm); }

/* 表单分区标题 */
.crm-section-title, .crm-m-sec {
  font-size: .78rem; font-weight: 750; color: var(--crm-primary);
  letter-spacing: .06em; text-transform: uppercase; margin-bottom: .75rem;
}

/* =============================================================
 * 通用工具
 * ============================================================= */
.text-ink { color: var(--crm-ink) !important; }
.text-primary { color: var(--crm-primary) !important; }
.mono { font-variant-numeric: tabular-nums; }
.hr-soft { border-top: 1px solid var(--crm-line); margin: 1.15rem 0; }
.fw-550 { font-weight: 550; }

/* =============================================================
 * 资源库卡片：标题与「N 条线索」可点，跳转到该库的线索列表
 * ============================================================= */
.pool-link { color: inherit; }
.pool-link:hover { text-decoration: none; color: inherit; }
.pool-link .fw-550 { transition: color .16s ease; }
.pool-link:hover .fw-550 { color: var(--crm-primary) !important; }
.pool-link .kpi-icon { transition: transform .16s ease, box-shadow .16s ease; }
.pool-link:hover .kpi-icon { transform: translateY(-1px); box-shadow: 0 8px 16px -9px rgba(91, 91, 214, .75); }
.pool-link .kpi-value { transition: color .16s ease; }
.pool-link:hover .kpi-value { color: var(--crm-primary); }
.pool-go { color: var(--crm-muted); white-space: nowrap; transition: color .16s ease; }
.pool-link:hover .pool-go { color: var(--crm-primary); }
.pool-go i { font-size: .95em; }

/* 资源库「分享此库」按钮 */
.pv-share { text-decoration: none; color: var(--crm-primary); font-weight: 550; }
.pv-share:hover { text-decoration: none; color: var(--crm-primary-600, var(--crm-primary)); }
.pv-share i { font-size: .95em; }

/* 资源库线索页 面包屑 */
.crm-crumb { display: flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--crm-muted); margin-bottom: 7px; }
.crm-crumb a { color: var(--crm-muted); text-decoration: none; display: inline-flex; align-items: center; gap: 4px; }
.crm-crumb a:hover { color: var(--crm-primary); }
.crm-crumb i { font-size: 13px; }

/* 轻提示 toast */
.crm-toast {
  position: fixed; left: 50%; bottom: 30px; z-index: 1080;
  transform: translate(-50%, 12px);
  max-width: 82vw; padding: 9px 16px;
  background: #1f2430; color: #fff; font-size: 13px; line-height: 1.4;
  border-radius: 10px; box-shadow: 0 14px 34px -12px rgba(15, 20, 40, .5);
  opacity: 0; pointer-events: none;
  transition: opacity .22s ease, transform .22s ease;
}
.crm-toast.show { opacity: 1; transform: translate(-50%, 0); }

/* =============================================================
 * 弹窗（新建资源库 / 新增账号 等）
 * ============================================================= */
.modal-content { border: 1px solid var(--crm-line); border-radius: var(--crm-radius); box-shadow: 0 24px 60px -24px rgba(20, 24, 40, .38); }
.modal-header { border-bottom: 1px solid var(--crm-line); padding: .95rem 1.15rem; }
.modal-title { font-size: 1rem; font-weight: 700; color: var(--crm-ink); }
.modal-body { padding: 1.15rem; }
.modal-footer { border-top: 1px solid var(--crm-line); padding: .8rem 1.15rem; }
.modal-body .form-label { margin-bottom: .4rem; }
.modal .btn-close { opacity: .5; }
.modal .btn-close:hover { opacity: .9; }

/* 弹窗内分区标题（如「授权资源库」「基本信息与密码」） */
.crm-block-title { display: flex; align-items: center; font-size: .88rem; font-weight: 650; color: var(--crm-ink); margin-bottom: .5rem; }
.crm-block-title i { color: var(--crm-primary); font-size: 1.05rem; }

/* =============================================================
 * 合同 / 提示清单
 * ============================================================= */
.crm-tips {
  margin: 0; padding-left: 1.05rem;
  color: var(--crm-muted); font-size: .84rem; line-height: 1.75;
}
.crm-tips li { margin-bottom: .3rem; }
.crm-tips li:last-child { margin-bottom: 0; }
.crm-tips b { color: var(--crm-ink); font-weight: 620; }
