/* ============================================================
 * 供灯运营 · 暖金禅意样式（2026-10-15 老板反馈「页面不美观」重设计）
 * 根因：旧版 lamp-offering.js 全部内联深色主题配色（#1e293b 边框、
 * #94a3b8 文字），而全站是浅色主题，表分隔线/次要文字几乎不可见。
 * 本次把样式外置为本文件，选择器一律以 .lo-root 打头，不污染全局
 * （同 assets/daily-fortune-styles.css 的隔离套路）。
 * ============================================================ */
/* CSS 变量要同时挂 .lo-root 与弹窗遮罩：_lrModal 把遮罩挂在 #page-lamp-offering 下、
   是 .lo-root 的兄弟节点，变量只定义在 .lo-root 上时级联不进弹窗，弹窗内所有 var()
   失效——「确认删除/确认清空」红按钮的内联 var(--lo-red) 算成透明底+白字，在白底栏上
   整个隐身（2026-10-15 老板报障实事故）。布局属性仍只留 .lo-root，不污染遮罩。 */
.lo-root, .lo-modal-mask {
  --lo-ink: #3d2c1e;
  --lo-ink-soft: #8a7663;
  --lo-ink-faint: #b3a48f;
  --lo-line: #eadfcc;
  --lo-gold: #a06b0f;
  --lo-gold-deep: #7c4f06;
  --lo-gold-soft: #faeeda;
  --lo-red: #a02c2c;
  --lo-green: #2f7d4f;
  --lo-radius: 12px;
}
.lo-root {
  /* 全屏宽（2026-10-16 老板「做成全屏的，不然太小，许多数据还得拖」）：
     原先 max-width:1200 居中，宽屏下两侧各空出一大截，台账/汇总表被迫横向滚动。
     改为吃满 .main 容器（.main 本身已扣掉侧边栏宽度并带内边距），不再设上限。 */
  max-width: none;
  margin: 0 auto;
  padding: 22px 24px 40px;
  color: var(--lo-ink);
  font-size: 14px;
  line-height: 1.6;
}

/* backBar 已移入 .lo-root 内部与内容同宽对齐；其自带 margin-bottom:12px，
   容器顶 padding 压缩避免与 back 条叠加出大空白（页面顶部另有「供灯运营」标题栏，hero 不再需要大顶距） */
.lo-root > .card { margin-top: 0; }
.lo-root:has(> .card) { padding-top: 4px; }

/* ── 页头：暖金横幅 ── */
.lo-hero {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  padding: 18px 22px;
  border-radius: 16px;
  border: 1px solid var(--lo-line);
  background: linear-gradient(135deg, #fdf6e9 0%, #faeeda 60%, #f5e3c3 100%);
  box-shadow: 0 1px 3px rgba(122, 79, 6, .08);
  margin-bottom: 14px;
}
.lo-hero-icon {
  width: 46px; height: 46px;
  display: flex; align-items: center; justify-content: center;
  font-size: 26px;
  background: #fff;
  border-radius: 13px;
  box-shadow: 0 2px 6px rgba(122, 79, 6, .14);
  flex-shrink: 0;
}
.lo-hero h2 { margin: 0; font-size: 20px; font-weight: 700; color: var(--lo-ink); }
.lo-hero-sub { margin: 2px 0 0; font-size: 12.5px; color: var(--lo-ink-soft); }
.lo-hero-link { margin-left: auto; }

/* ── Tab 导航（药丸） ── */
.lo-tabs {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 16px;
  padding: 5px;
  background: #fff;
  border: 1px solid var(--lo-line);
  border-radius: 14px;
  box-shadow: 0 1px 2px rgba(61, 44, 30, .04);
}
.lo-tab {
  padding: 7px 14px;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 500;
  color: var(--lo-ink-soft);
  cursor: pointer;
  border: none;
  background: none;
  transition: .15s;
  white-space: nowrap;
}
.lo-tab:hover { background: var(--lo-gold-soft); color: var(--lo-gold-deep); }
.lo-tab.active {
  background: linear-gradient(135deg, #b07d1e, #8a5c0e);
  color: #fff;
  font-weight: 600;
  box-shadow: 0 2px 6px rgba(122, 79, 6, .28);
}

/* ── 统计卡 ── */
.lo-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 10px;
  margin-bottom: 14px;
}
.lo-stat {
  background: #fff;
  border: 1px solid var(--lo-line);
  border-radius: var(--lo-radius);
  padding: 12px 16px;
  box-shadow: 0 1px 2px rgba(61, 44, 30, .04);
}
.lo-stat-num { font-size: 22px; font-weight: 700; line-height: 1.3; }
.lo-stat-label { font-size: 12px; color: var(--lo-ink-soft); }
.lo-stat-hot { border-color: #e2b64d; background: linear-gradient(180deg, #fffaf0, #fff); }

/* ── 卡片容器 ── */
.lo-card {
  background: #fff;
  border: 1px solid var(--lo-line);
  border-radius: var(--lo-radius);
  padding: 16px 18px;
  margin-bottom: 14px;
  box-shadow: 0 1px 2px rgba(61, 44, 30, .04);
}
.lo-card-title { font-size: 14px; font-weight: 700; color: var(--lo-ink); margin-bottom: 10px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.lo-hint { font-size: 12px; color: var(--lo-ink-soft); }
.lo-muted { color: var(--lo-ink-faint); }

/* ── 表单控件 ── */
.lo-input, .lo-select {
  padding: 8px 10px;
  /* 2026-10-15 老板「填写框不明显」：旧边框 var(--lo-line) #eadfcc 在白底上几乎看不见，
     输入区像没框；边框加深 + 暖白底，让可填写区域一眼能认出来 */
  border: 1px solid #d5c096;
  border-radius: 8px;
  font-size: 13px;
  color: var(--lo-ink);
  background: #fffdf9;
  min-width: 0;
  transition: border-color .15s, box-shadow .15s;
}
.lo-input:focus, .lo-select:focus {
  outline: none;
  border-color: #c99a3c;
  box-shadow: 0 0 0 3px rgba(201, 154, 60, .15);
}
.lo-input::placeholder { color: var(--lo-ink-faint); }
.lo-form-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 10px;
  margin-top: 4px;
}
.lo-form-span { grid-column: 1 / -1; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.lo-toolbar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }

/* ── 按钮补充（.btn/.btn-sm/.btn-primary/.btn-ghost/.btn-danger 沿用全局） ── */
.lo-btn-gold {
  padding: 8px 16px;
  border-radius: 8px;
  border: none;
  font-size: 13px;
  font-weight: 600;
  color: #fff;
  background: linear-gradient(135deg, #b07d1e, #8a5c0e);
  cursor: pointer;
  transition: .15s;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.lo-btn-gold:hover { filter: brightness(1.08); box-shadow: 0 2px 8px rgba(122, 79, 6, .25); }
.lo-btn-mini {
  padding: 4px 10px;
  border-radius: 7px;
  border: 1px solid var(--lo-line);
  background: #fff;
  font-size: 12px;
  color: var(--lo-ink-soft);
  cursor: pointer;
  transition: .15s;
  white-space: nowrap;
}
.lo-btn-mini:hover { border-color: #c99a3c; color: var(--lo-gold-deep); background: #fffaf0; }
.lo-btn-mini-danger { border-color: #e29a9a; color: var(--lo-red); background: #fdf3f3; }
.lo-btn-mini-danger:hover { border-color: var(--lo-red); color: #fff; background: var(--lo-red); }
/* 禁用态（2026-10-16 老板拍板：已完成活动的报名记录不允许编辑/删除）：
   置灰不置没（保留行可扫读），盖掉 hover 换色防「看着还能点」；不用 pointer-events:none，
   否则 disabled 按钮上的 title（为何不可操作）悬停不显示。 */
.lo-btn-mini:disabled { opacity: .45; cursor: not-allowed; }
.lo-btn-mini:disabled, .lo-btn-mini:disabled:hover { border-color: var(--lo-line); color: var(--lo-ink-soft); background: #f5f6f8; }
.lo-btn-mini-danger:disabled, .lo-btn-mini-danger:disabled:hover { border-color: var(--lo-line); color: var(--lo-ink-soft); background: #f5f6f8; }

/* ── 表格 ── */
.lo-table-wrap { overflow: auto; }
.lo-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.lo-table th {
  text-align: left;
  padding: 9px 12px;
  font-size: 12px;
  font-weight: 600;
  color: var(--lo-ink-soft);
  background: #faf6ec;
  border-bottom: 1px solid var(--lo-line);
  white-space: nowrap;
}
.lo-table td {
  padding: 10px 12px;
  border-bottom: 1px solid #f3ecdd;
  color: var(--lo-ink);
  vertical-align: middle;
  /* 2026-10-15 老板「表头和列没对齐」：对齐不靠继承/默认，td 显式写死，
     与 th 的 text-align:left 同基线，任何缓存状态下表头与数据列不错位 */
  text-align: left;
}
.lo-table tbody tr:hover { background: #fdfaf3; }
.lo-table tbody tr:last-child td { border-bottom: none; }
.lo-cell-main { font-weight: 600; }
.lo-cell-soft { color: var(--lo-ink-soft); }
.lo-cell-num { font-variant-numeric: tabular-nums; }
/* 不给 lo-cell-num 加 text-align:center（曾于 2026-10-15 加过、当天回滚）：
   该类挂在 td 上的表有 6+ 张（渠道数据/客户轨迹/复购/报名记录…），但表头普遍不挂，
   只居中 td 会把原本 th/td 同为 left 的对齐改成 th left + td center，反而造出真错位。
   对齐统一由上方 td 的显式 left 保证：同列同对齐。 */
/* 心愿列：自由文本可能较长，定宽省略号防撑破表格，完整内容看 title 悬浮 */
/* 活动管理表专用居中列（2026-10-15 老板：圈起 6 列列名居中）：只挂在活动管理这一张表的
   th/td 上，不动 lo-cell-num（它横跨 6+ 张表，见上方回滚注释）；th 与 td 挂同一个类，
   表头与数据列同步居中，不会造出 th left + td center 的错位 */
.lo-cell-center { text-align: center !important; }
.lo-cell-wish { max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--lo-ink-soft); }
/* 报名记录台账（2026-10-16 加序号后共 15 列）：此前容器只有 ~1198px（现全屏更宽，但窄窗口下同样成立），auto 布局会把「来源 / 生日 / 活动 /
   微信名」压成一列一个字竖排（离线量宽实测行高 125px，不加序号也有 104px）。这里让除心愿外的
   单元格一律 nowrap，表格按内容自然展开，超出部分走 .lo-table-wrap 已有的 overflow:auto 横向滚动
   ——与本模块窄屏「‹ 左右滑动查看全部列 ›」的既有口径一致。只锁 .lo-table-ledger（由
   _lrTableHtml 单独挂类），不影响底下共用 .lo-table 的其他 6+ 张表。 */
.lo-table-ledger > tbody > tr > td { white-space: nowrap; }
.lo-row-hot td { background: #fff8ec; }
.lo-tag-manual {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 7px;
  border-radius: 999px;
  background: var(--lo-gold-soft);
  color: var(--lo-gold-deep);
  font-size: 11px;
  font-weight: 500;
}
/* 话术来源徽标（2026-10-15 模型生成话术待审核流程） */
.lo-tag-model {
  display: inline-flex; align-items: center; gap: 3px;
  margin-left: 6px; padding: 1px 8px; border-radius: 999px;
  background: #fff2e0; color: #b45309; border: 1px solid #f0d4a8;
  font-size: 11px; font-weight: 600;
}
.lo-tag-ok {
  display: inline-flex; align-items: center; gap: 3px;
  margin-left: 6px; padding: 1px 8px; border-radius: 999px;
  background: #e3f4e6; color: var(--lo-green);
  font-size: 11px; font-weight: 600;
}

/* ── 状态徽标 ── */
.lo-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 2px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
}
.lo-badge::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.lo-badge-upcoming { background: #e8f0fe; color: #1d4ed8; }   /* 2026-10-16 老板：状态按待办紧急程度着色——蓝·待启动(未到，低) */
.lo-badge-warmup { background: #fff4e0; color: #b45309; }        /* 橙·预热中(该发朋友圈，中) */
.lo-badge-active { background: #fdecec; color: #d13438; }        /* 红·活动中(朋友圈+私发同时在跑，高紧急) */
.lo-badge-done { background: #f3f4f6; color: #6b7280; }         /* 灰·已完成(无需办) */
.lo-badge-cancelled { background: #f3f4f6; color: #9ca3af; }     /* 淡灰·已取消(无需办) */

/* ── 倒计时 ── */
.lo-countdown { font-size: 12.5px; color: var(--lo-ink-soft); font-variant-numeric: tabular-nums; }
.lo-countdown-urgent { color: var(--lo-red); font-weight: 700; }
.lo-countdown-soon { color: var(--lo-gold-deep); font-weight: 600; }

/* ── 话术库 ── */
/* .lo-script-group（总表下方的折叠记录卡）样式已随卡片列表退役删除（2026-10-15 老板：查看统一走总表点行弹窗） */
/* 生成记录头（2026-10-15 老板：话术库圈起来的列表做成记录类型）：
   账户/生成识别号/活动名称/采用模型/生成日期 五字段一行，窄屏自动换行 */
/* 2026-10-15 老板「点开后页面不明显」：记录头五字段原为白底裸排一行，
   加浅底面板把弹窗头部层次撑起来 */
.lo-rec-meta {
  display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 12.5px; font-weight: 600;
  padding: 10px 14px;
  background: #faf6ec;
  border: 1px solid var(--lo-line);
  border-radius: 10px;
}
.lo-rec-meta b { color: var(--lo-ink-faint); font-weight: 600; font-size: 12px; margin-right: 5px; }

/* ── 生成记录总表行点击（2026-10-15 老板：总表里的记录要能点击查看，弹窗看该记录话术）──
   2026-10-15 再补（老板：移上去要有选中效果）：旧 hover 仅 #fffaf0 太弱，
   改暖金底 + 左侧金条 + 活动名变色三重提示，选中哪行一眼可辨 */
.lo-row-link { cursor: pointer; }
.lo-row-link:hover td { background: #fff3dc; }
.lo-row-link:hover td:first-child { box-shadow: inset 3px 0 0 var(--lo-gold); }
.lo-row-link:hover .lo-cell-main { color: var(--lo-gold-deep); }
.lo-row-link:active td { background: #f8e7c6; }
/* 话术原文卡：旧版底 #fffdf8 与弹窗白底几乎同色、只有一道浅边，层次糊；
   改白卡 + 可见边框 + 阴影，头行虚线分隔，正文加深加行距 */
.lo-script {
  border: 1px solid #e2d2b2;
  border-radius: 10px;
  padding: 12px 14px;
  margin: 10px 0;
  background: #fff;
  box-shadow: 0 1px 3px rgba(122, 79, 6, .07);
}
.lo-script-head { display: flex; align-items: center; gap: 8px; padding-bottom: 8px; border-bottom: 1px dashed var(--lo-line); }
.lo-script-tag {
  font-size: 12px; font-weight: 700; color: var(--lo-gold-deep);
  background: var(--lo-gold-soft); border-radius: 999px; padding: 2px 10px;
}
.lo-script-body { white-space: pre-wrap; font-size: 13.5px; margin-top: 8px; color: #3d2c1e; line-height: 1.9; }
/* 已采纳定稿卡改绿调，与待审核的暖金卡区分（2026-10-15 老板：点采纳后不好看） */
.lo-script-done { border-color: #b9dcc4; background: #f6fbf7; }

/* ── 效果分析：漏斗条 ── */
.lo-bar-row { display: flex; align-items: center; gap: 10px; margin: 5px 0; font-size: 12px; }
.lo-bar-label { width: 44px; color: var(--lo-ink-soft); flex-shrink: 0; }
.lo-bar-track { flex: 1; background: #f1eadb; border-radius: 6px; height: 14px; overflow: hidden; }
.lo-bar-fill { height: 100%; border-radius: 6px; transition: width .3s; }
.lo-bar-val { width: 110px; text-align: right; font-variant-numeric: tabular-nums; color: var(--lo-ink); flex-shrink: 0; }
.lo-funnel-card {
  border: 1px solid var(--lo-line);
  border-radius: 10px;
  padding: 12px 14px;
  margin-bottom: 10px;
  background: #fffdf8;
}
.lo-funnel-head { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.lo-funnel-name { font-weight: 700; }
.lo-analysis-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
  gap: 14px;
  align-items: start;
}
.lo-section-title { font-size: 14px; font-weight: 700; margin: 4px 0 10px; display: flex; align-items: center; gap: 6px; }
.lo-yoy-line { padding: 8px 2px; border-bottom: 1px dashed var(--lo-line); font-size: 13px; }
.lo-yoy-line:last-child { border-bottom: none; }
.lo-up { color: var(--lo-green); font-weight: 700; }
.lo-down { color: var(--lo-red); font-weight: 700; }
.lo-kv-row { display: flex; gap: 26px; flex-wrap: wrap; font-size: 13px; }
.lo-empty {
  padding: 28px;
  color: var(--lo-ink-soft);
  text-align: center;
  line-height: 2;
}

/* ── 报名记录 Tab（2026-10-15 合并报名登记+供灯名单，新增筛选栏/编辑弹窗/批量导入） ── */
.lo-filterbar { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin: 4px 0 10px; font-size: 12.5px; color: var(--lo-ink-soft); }
.lo-sub { margin-top: 10px; border: 1px dashed var(--lo-line); border-radius: 10px; padding: 8px 12px; background: #fffdf8; }
.lo-sub summary { cursor: pointer; font-weight: 600; font-size: 13px; color: var(--lo-gold-deep); list-style: none; display: flex; align-items: center; gap: 6px; }
.lo-sub summary::-webkit-details-marker { display: none; }
.lo-sub summary::before { content: '▸'; color: var(--lo-gold); transition: transform .15s; }
.lo-sub[open] summary::before { transform: rotate(90deg); }
.lo-sub .lo-form-grid { margin-top: 10px; }
.lo-modal-mask {
  position: fixed;
  inset: 0;
  /* 2026-10-15 老板「页面不明显」：遮罩加深 + 弹窗阴影加重，让弹窗从页面上「浮」起来 */
  background: rgba(45, 32, 15, .5);
  z-index: 1200;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}
.lo-modal {
  background: #fff;
  border-radius: 14px;
  width: min(700px, 96vw);
  max-height: 88vh;
  overflow: auto;
  box-shadow: 0 24px 64px rgba(45, 32, 15, .36);
  border: 1px solid #ddc9a3;
}
.lo-modal-head { display: flex; align-items: center; gap: 10px; padding: 14px 18px; border-bottom: 1px solid var(--lo-line); font-size: 15px; position: sticky; top: 0; background: #fff; z-index: 1; }
.lo-modal-body { padding: 16px 18px; }
.lo-modal-foot { display: flex; gap: 10px; justify-content: flex-end; padding: 12px 18px; border-top: 1px solid var(--lo-line); position: sticky; bottom: 0; background: #fff; }
/* 弹窗内正文编辑框（编辑话术/采纳话术）：给足高度与行距，输入区一眼可辨 */
.lo-modal textarea.lo-input { min-height: 110px; line-height: 1.9; font-size: 13.5px; resize: vertical; }
/* 删除确认弹窗正文（2026-10-15 老板：原生 confirm 五行字太多 → 样式化弹窗只留两行主文） */
.lo-del-tip { font-size: 14px; line-height: 2; color: var(--lo-ink); }
.lo-field { display: flex; flex-direction: column; gap: 4px; }
.lo-field > label { font-size: 12px; color: var(--lo-ink-soft); font-weight: 600; }

/* ── 响应式适配（2026-10-15 老板「没适配浏览器和屏幕大小」）
   桌面宽屏：.lo-root 全屏宽（2026-10-16 改版，max-width 已取消，宽表少拖拽）。
   逐级收窄：640（小屏/分屏）→ 480（手机）。控件用 auto-fit 已能折行，
   这里补的是窄屏下的间距/字号/单列化与表格横向滚动提示。 */
@media (max-width: 900px) {
  .lo-filterbar .lo-select { min-width: 160px; }
  .lo-modal { width: min(700px, 94vw); }
}
@media (max-width: 640px) {
  .lo-root { padding: 14px 12px 32px; }
  .lo-hero { padding: 14px 14px; gap: 10px; }
  .lo-hero-icon { width: 40px; height: 40px; font-size: 22px; }
  .lo-hero h2 { font-size: 18px; }
  .lo-hero-link { margin-left: 0; flex-basis: 100%; }
  .lo-tab { padding: 6px 11px; font-size: 12.5px; }
  .lo-stats { grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 8px; }
  .lo-stat-num { font-size: 19px; }
  .lo-analysis-grid, .lo-funnel-grid { grid-template-columns: 1fr; }
  /* 筛选栏：下拉与搜索框各占整行，避免窄屏挤成半宽难读 */
  .lo-filterbar > .lo-select, .lo-filterbar > .lo-input { flex: 1 1 100%; min-width: 0; }
}
@media (max-width: 480px) {
  .lo-root { padding: 10px 8px 28px; font-size: 13.5px; }
  .lo-card { padding: 12px 12px; border-radius: 10px; }
  /* 表单栅格收为单列，输入不再被压到 170px 以下 */
  .lo-form-grid { grid-template-columns: 1fr; }
  .lo-tabs { gap: 4px; }
  .lo-table th, .lo-table td { padding: 8px 9px; }
  .lo-table { font-size: 12.5px; }
  /* 表头提示可横向拖动（宽表在手机上必然横向滚动，给出视觉线索） */
  .lo-table-wrap::after { content: '‹ 左右滑动查看全部列 ›'; display: block; text-align: center; font-size: 11px; color: var(--lo-ink-faint); padding: 6px; }
  .lo-modal { width: 100vw; max-height: 92vh; border-radius: 12px; }
  .lo-modal-mask { padding: 0; align-items: flex-end; }
  .lo-modal-foot { justify-content: space-between; }
  .lo-btn-gold { padding: 8px 12px; }
}

/* ── 通用分页（modules/lamp-paginate.js，2026-10-15 老板「分页不要忘记，还有每个 N 个」）── */
.lo-pager {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  padding: 10px 14px;
  margin-top: 10px;
  background: var(--lo-gold-soft);
  border: 1px solid var(--lo-line);
  border-radius: var(--lo-radius);
}
.lo-pager .lo-pg-size { width: auto; padding: 4px 8px; font-size: 13px; }
.lo-pg-nums { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 4px; margin-left: auto; }
.lo-pg-num {
  min-width: 30px;
  padding: 4px 9px;
  border: 1px solid var(--lo-line);
  border-radius: 8px;
  background: #fff;
  color: var(--lo-ink);
  font-size: 13px;
  cursor: pointer;
}
.lo-pg-num:hover:not(:disabled) { border-color: var(--lo-gold); color: var(--lo-gold-deep); }
.lo-pg-num.active { background: var(--lo-gold-deep); border-color: var(--lo-gold-deep); color: #fff; }
.lo-pg-num:disabled { opacity: 0.4; cursor: default; }
.lo-pg-gap { color: var(--lo-ink-faint); padding: 0 2px; }
@media (max-width: 640px) {
  .lo-pager { padding: 8px 10px; gap: 6px; }
  .lo-pg-nums { margin-left: 0; }
}

/* ── 活动自定义下拉（2026-10-15：原生 select 上拉且选项过长 → 向下自定义面板，
   只留最近/前一/后一 + 全部活动标签）── */
.lr-dd { position: relative; min-width: 240px; }
.lr-dd-btn {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 8px;
  text-align: left;
  cursor: pointer;
  font-family: inherit;
}
.lr-dd-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lr-dd-caret { margin-left: auto; font-size: 10px; color: var(--lo-ink-soft); transition: transform .15s; }
.lr-dd-open .lr-dd-caret { transform: rotate(180deg); }
.lr-dd-panel {
  display: none;
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  min-width: 100%;
  max-height: 240px;
  overflow: auto;
  background: #fff;
  border: 1px solid var(--lo-line);
  border-radius: 10px;
  box-shadow: 0 12px 28px rgba(96, 64, 12, .16);
  padding: 4px;
  z-index: 80;
}
.lr-dd-open .lr-dd-panel { display: block; }
.lr-dd-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  border-radius: 8px;
  cursor: pointer;
  font-size: 13px;
  color: var(--lo-ink);
  white-space: nowrap;
}
.lr-dd-item:hover { background: var(--lo-gold-soft); }
.lr-dd-on { background: var(--lo-gold-soft); font-weight: 700; color: var(--lo-gold-deep); }
.lr-dd-tag {
  margin-left: auto;
  font-size: 10px;
  font-weight: 400;
  color: var(--lo-gold-deep);
  background: rgba(160, 107, 15, .12);
  border-radius: 999px;
  padding: 1px 8px;
}

/* ── 一键导出（2026-10-15：名单表右上方按钮 + 选活动弹窗列表）── */
.lr-exportbar { display: flex; justify-content: flex-end; margin: 0 2px 8px; }
.lr-exp-list { display: flex; flex-direction: column; gap: 6px; max-height: 320px; overflow: auto; }
.lr-exp-item {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  text-align: left;
  padding: 9px 12px;
  border: 1px solid var(--lo-line);
  border-radius: 10px;
  background: #fff;
  cursor: pointer;
  font-size: 13px;
  color: var(--lo-ink);
  transition: .15s;
}
.lr-exp-item:hover:not(:disabled) { border-color: #c99a3c; background: #fffaf0; }
.lr-exp-item span { margin-left: auto; font-size: 12px; color: var(--lo-ink-soft); white-space: nowrap; }
.lr-exp-empty { opacity: .5; cursor: not-allowed; }

/* ── 活动数据钻取（2026-10-15 老板：报名记录第一层只放活动名称，点名称才看名单）── */
.lr-act-list { display: flex; flex-direction: column; gap: 8px; padding: 12px 14px; }
.lr-act-item {
  display: block;
  width: 100%;
  text-align: left;
  padding: 10px 14px;
  border: 1px solid var(--lo-line);
  border-radius: 10px;
  background: #fff;
  cursor: pointer;
  font-size: 14px;
  font-weight: 600;
  color: var(--lo-ink);
  transition: .15s;
}
.lr-act-item:hover { border-color: #c99a3c; background: #fffaf0; color: var(--lo-gold-deep); }

/* ── 活动数据多维汇总（2026-10-15 老板：活动数据做成数据汇总，喂效果分析趋势图）──
   原「逐场画像卡」专用类（.lp-ad-name / .lp-ad-badge(s) / .lp-ad-dim(-t)）已于
   2026-10-16 随画像卡整块下线删除（生产者 `_lpDim`/`_lpAdBadge` 已退役，零引用）。
   共用的 .lo-funnel-card / .lo-funnel-head / .lo-analysis-grid 保留（渠道数据、效果分析仍在用）。 */

/* ── 每次活动人群汇总表（2026-10-16 老板改口径：只留 年份/活动名称/活动人数/新客/老客 5 列；
   同日再拍「所有涉及到记录的都得加序号」→ 序号列前置，共 6 列）──
   所有选择器锁在 .lp-sum-table 内：.lo-table 底下挂6+ 张表，在那里改 text-align 会
   把其他表的表头/数据列对齐改坏（见本文件 .lo-cell-num 那段回滚记录）。
   旧 22 列版的 min-width:1240 、前三列钉左 sticky、分组分隔线（lp-sum-grp/src/edge）
   整套已随 2026-10-16 瘦身下线——列数少不需要横向滚动，也就不需要钉列。 */
.lp-sum-table { width: 100%; table-layout: fixed; font-size: 12.5px; }
/* 本表直接行的单元格统一居中 + 紧凑内边距（同样用 > 隔住内嵌名单表，
   否则 nowrap 会泄到名单列上把它们竖排拆字）。 */
.lp-sum-table > thead > tr > th,
.lp-sum-table > tbody > tr > td,
.lp-sum-table > tfoot > tr > td { text-align: center; padding: 7px 8px; white-space: nowrap; }
/* 8 列定宽（5 + 8 + 27 + 12×5 = 100%）：序号最窄、年份次之、活动名称占大头、五个数字列等宽。
   2026-10-16 老板：报名条数/合计金额从展开行标题提到汇总表列里 → 6 列变 8 列，活动名称从 42% 缩到 27%。
   列序映射：1=序号 / 2=年份 / 3=活动名称 / n+4=五个数字列。
   【改列序必须同步改这里的 nth-child】：序号是 2026-10-16 新插的第一列，当时的映射是
   1=序号 / 2=年份 / 3=活动名称 / n+4=三个数字列；漏改会让「年份」拿到 46% 而活动名称被挤到 15%。
   配合上面 table-layout:fixed，展开行的 td 能拿到确定宽度 → 内嵌名单表的 .lo-table-wrap
   才真能横向滚动，不会拿 980px 的 min-width 反过来把外层列表撑到变形
   （旧 22 列版靠 min-width:1240 盖住了这个问题）。
   【必须用子选择器 >】：展开行里嵌着一张 14 列名单表，它也在 .lp-sum-table 的后代里——
   写成后代选择器的话 nth-child(1)/(2) 会同时命中名单表的「序号/账户」列，
   2026-10-16 离线量宽实测：泄漏后「年份」列被拉到 365px，后面的生日/心愿列挤到 40px 竖排拆字。 */
.lp-sum-table > thead > tr > th:nth-child(1),
.lp-sum-table > tbody > tr > td:nth-child(1),
.lp-sum-table > tfoot > tr > td:nth-child(1) { width: 5%; }
.lp-sum-table > thead > tr > th:nth-child(2),
.lp-sum-table > tbody > tr > td:nth-child(2),
.lp-sum-table > tfoot > tr > td:nth-child(2) { width: 8%; }
.lp-sum-table > thead > tr > th:nth-child(3),
.lp-sum-table > tbody > tr > td:nth-child(3),
.lp-sum-table > tfoot > tr > td:nth-child(3) { width: 27%; }
.lp-sum-table > thead > tr > th:nth-child(n+4),
.lp-sum-table > tbody > tr > td:nth-child(n+4),
.lp-sum-table > tfoot > tr > td:nth-child(n+4) { width: 12%; }
/* 本表单元格强制 border-box：不押在宿主 index.html 的全局星号 reset 上（历史实测过两种宿主不自洽）。 */
.lp-sum-table { box-sizing: border-box; }
.lp-sum-table th, .lp-sum-table td { box-sizing: border-box; }
/* 活动名称列左对齐 + 允许换行（列宽由上面 fixed 布局的 42% 定，长名字折行而不顶宽表格）；
   同样只作用于本表直接行，不拿 text-align 去盖内嵌名单表自己的左对齐规则。 */
.lp-sum-table > thead > tr > th:nth-child(3),
.lp-sum-table > tbody > tr > td:nth-child(3),
.lp-sum-table > tfoot > tr > td:nth-child(3) { text-align: left; }
.lp-sum-table > tbody > tr > td:nth-child(3) { white-space: normal; word-break: break-word; }
.lp-sum-table thead tr:first-child th { border-bottom: 1px solid var(--lo-line); }
/* 整行可点→行内展开：hover 只换背景不动文字颜色，与展开行的浅色底衔接 */
.lp-sum-table tbody tr.lp-sum-click { cursor: pointer; }
.lp-sum-table tbody tr.lp-sum-click:hover td { background: #fdfaf3; }
.lp-sum-table tfoot td { font-weight: 700; background: #faf6ec; border-top: 2px solid var(--lo-line); border-bottom: none; }

/* ── 行内展开（2026-10-16 老板「行内展开」）：点行在该行下方插一条横跨全列的名单行 ──
   展开行只有一个 colspan 的 td；下面这批重置是旧 22 列版钉左 sticky 规则的中和层，
   瘦身后的 5 列版已无 sticky 规则，保留它们作为防御（对普通 td 无副作用）。 */
.lp-sum-table tbody tr.lp-sum-detail td {
  position: static; left: auto; width: auto; min-width: 0; max-width: none;
  box-shadow: none; overflow: visible; text-align: left;
  padding: 10px 14px; background: #fffdf6; border-top: 1px dashed var(--lo-line);
}
.lp-sum-detail-bar { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; flex-wrap: wrap; }
.lp-sum-detail-bar b { color: var(--lo-gold-deep); font-size: 13.5px; }
/* 内嵌名单表：不能直接把外层汇总表撑爆。2026-10-16 子代理实测：旧写法（只给 min-width:980 + 全局 nowrap）
   下，心愿列的单列 min-content 高达 678px，而嵌在表格单元格里的 .lo-table-wrap 根本滚不起来
   （clientWidth == scrollWidth、maxScroll 0），于是外层汇总表从 1313px 被顶到 2260px、
   19 个数字列宽几乎翻倍，表头与数字之间拉出大空档。
   分两档处理（已踩过的两个反面）：
   · 整列 nowrap → 长文本列拿 min-content 顶宽外层（上面那个 2260 的事故）；
   · 整列 normal → 窄列被竖排拆字，实测「2026-10-15」折成 5 行、名单行高从 34px 涨到 125px。
   所以：默认允许换行（长文本列），但序号/账户/年份/性别/微信ID/金额/动作/创建时间这类窄列强制单行。
   （2026-10-16 序号列前置与「创建时间移到行末」两次列序变更后重新对过一遍索引：
   名单行现为 1序号 2账户 3年份 4祈福姓名 5性别 6生日 7心愿 8微信名 9微信ID 10来源 11客服号 12金额 13操作 14创建时间；
   补上 14 是因为「创建时间」移到行末后不在集合里，一个北京时间戳会被拆成两行。）
   这样内嵌表的 min-content 回落到 min-width:980 这个地板以下，外层表宽不再受它影响。
   选择器要多带一层 .lp-sum-table tbody tr.lp-sum-detail：否则会被上面那条给展开 td 的重置规则
   （max-width:none 等）以更高特异度盖掉——实测写 .lp-sum-detail .lo-table td{max-width:240px} 完全不生效。 */
.lp-sum-detail .lo-table { min-width: 980px; }
.lp-sum-detail .lo-table th, .lp-sum-detail .lo-table td { text-align: left; }
.lp-sum-table tbody tr.lp-sum-detail .lo-table td { white-space: normal; word-break: break-word; }
.lp-sum-table tbody tr.lp-sum-detail .lo-table td:nth-child(1),
.lp-sum-table tbody tr.lp-sum-detail .lo-table td:nth-child(2),
.lp-sum-table tbody tr.lp-sum-detail .lo-table td:nth-child(3),
.lp-sum-table tbody tr.lp-sum-detail .lo-table td:nth-child(5),
.lp-sum-table tbody tr.lp-sum-detail .lo-table td:nth-child(9),
.lp-sum-table tbody tr.lp-sum-detail .lo-table td:nth-child(12),
.lp-sum-table tbody tr.lp-sum-detail .lo-table td:nth-child(13),
.lp-sum-table tbody tr.lp-sum-detail .lo-table td:nth-child(14) { white-space: nowrap; }
/* 2026-10-16 序号列前置带来的修正：台账序号列使内嵌名单表可用宽度少 44px，「生日 / 来源 / 客服号 /
   微信名」被压成一列一个字竖排（中位行高 104 → 146，最差 250，「红莲听雨旗舰店」拆 7 行）。
   中途只转三个短列试过，不够：定宽列一锁定，剩下宽度全泄给心愿列，实测心愿被撑到 678px、
   整表 1871px，而微信名仍只拿到 62px 拆 5 行并与心愿列文字重叠。
   改法：名单表与台账本来就是同一批字段、同一个 _lrRowHtml 渲染，列宽口径也扶成一致—
   —除心愿外全列 nowrap，心愿定宽 200px 省略号，整表 min-width 1600 作为地板，超出部分走本 wrap
   的横向滚动。选择器多带一层 .lo-table.lo-table-ledger 是为了压过上面两条：td{white-space:normal}
   与展开行重置 td{max-width:none; overflow:visible}（后者就是心愿列文字溢出压字的成因）。
   【外层安全性已实测】：汇总表是 table-layout:fixed，展开 td 宽度确定 → 本 wrap 真能横向滚动，
   不会重现上面注释里那次 2260px 撑爆（改后复量：外层表宽 1154 不变、document.scrollWidth ≤ 视口）。 */
.lp-sum-table tbody tr.lp-sum-detail .lo-table.lo-table-ledger > tbody > tr > td { white-space: nowrap; }
.lp-sum-table tbody tr.lp-sum-detail .lo-table td.lo-cell-wish { max-width: 200px; overflow: hidden; text-overflow: ellipsis; }
.lp-sum-detail .lo-table.lo-table-ledger { min-width: 1600px; }
.lp-sum-detail .lo-table-wrap { overflow-x: auto; }
/* 行首三角：▸ 可展开 / ▾ 已展开。当前展开的行给一层浅金底，与面板视觉相连 */
.lp-sum-caret { display: inline-block; width: 12px; color: var(--lo-gold-deep); font-size: 10px; }
.lp-sum-table tbody tr.lp-sum-click.lp-sum-open td { background: #fdf6e6; }

/* ── 活动数据 Tab「大气」版式（2026-10-16 老板四轮：「页面做的大气点，且别忘分页功能」）──
   作用域：生产者 `_lpActDataRender` 在本 Tab 产物外统一包了一层 .lp-ad-page，
   所以本段只影响活动数据 Tab，不改全局 .lo-card / .lo-table（那会串到其余五个 Tab）。
   位置必须在上面 .lp-sum-table 段之后：.lp-sum-table{font-size:12.5px} 与展开行的
   padding 重置都在后面，靠源码顺序以同特异度赢回；而本段用 .lp-ad-page 后代选择器
   （特异度 0-2-0）高于根上的 .lo-table（0-1-0），能抬到更大字号而不必加 !important。 */
.lp-ad-page { font-size: 14px; }
.lp-ad-page .lo-card { padding: 20px 22px; border-radius: 14px; margin-bottom: 18px; box-shadow: 0 2px 10px rgba(61, 44, 30, .05); }
.lp-ad-page .lo-card-title { font-size: 16.5px; margin-bottom: 12px; letter-spacing: .3px; }
.lp-ad-page .lo-hint { font-size: 12.5px; }
.lp-ad-page .lo-input { padding: 11px 14px; font-size: 14px; border-radius: 10px; }
/* 全局指标行：拉开间距，数字抬到 16px 成视觉主角 */
.lp-ad-page .lo-kv-row { gap: 22px 40px; font-size: 13.5px; }
.lp-ad-page .lo-kv-row > span { display: inline-flex; align-items: baseline; gap: 7px; }
.lp-ad-page .lo-kv-row b { font-size: 16px; color: var(--lo-gold-deep); font-variant-numeric: tabular-nums; }
/* 汇总表：行高、字号、列头字重整体上调（只作用于本 Tab 的这张表） */
.lp-ad-page .lp-sum-table { font-size: 14px; }
.lp-ad-page .lp-sum-table > thead > tr > th { font-size: 13px; padding: 12px 10px; color: var(--lo-ink-soft); letter-spacing: .5px; }
.lp-ad-page .lp-sum-table > tbody > tr > td { padding: 13px 10px; }
.lp-ad-page .lp-sum-table > tbody > tr > td:nth-child(3) { font-size: 14.5px; }
.lp-ad-page .lp-sum-table > tfoot > tr > td { padding: 14px 10px; font-size: 14.5px; }
.lp-ad-page .lp-sum-table > tbody > tr > td:nth-child(n+4) > b { font-size: 15.5px; color: var(--lo-gold-deep); }
.lp-sum-note { margin: -4px 0 14px; line-height: 1.75; }
/* 分页条（lpPaginate 产物，落在汇总卡片内部）：与卡片同宽、上边给足留白 */
.lp-ad-page .lo-pager { margin-top: 4px; padding-top: 14px; border-top: 1px solid var(--lo-line); gap: 10px 12px; }
.lp-ad-page .lo-pg-num { padding: 7px 12px; font-size: 13px; }
/* 【补偿层】上面 .lp-ad-page .lp-sum-table > tbody > tr > td{padding:13px 10px} 特异度 0-4-0，
   会压过展开行那条重置（.lp-sum-table tbody tr.lp-sum-detail td，0-3-0），
   把展开名单容器的内边距从 10px 14px 撑成 13px 10px。这里用同特异度（0-4-0）+ 靠后源码顺序拿回来。 */
.lp-ad-page .lp-sum-table tbody tr.lp-sum-detail td { padding: 10px 14px; }

/* ── 登记表单固定配对布局（2026-10-15 老板「圈起来的组合为一行」；2026-10-16 再改：生日与心愿并一行）──
   来源+归属客服 / 微信名+微信ID / 祈福姓名+性别 / 生日+心愿 各占一行；窄屏（≤640）回退单列。
   旧「姓名+性别+生日」三合一 flex 行（.lr-tri）已随 2026-10-16 改版退役，四控件回归栅格。 */
.lr-form-rows { grid-template-columns: 1fr 1fr; }
.lr-form-rows .lr-span2 { grid-column: 1 / -1; }
/* 来源精确筛 chip（2026-10-16 效果分析⑤来源图点入报名记录）：暖金小标签 + ✕ 可一键清除 */
.lr-src-chip { display: inline-flex; align-items: center; gap: 6px; margin-left: 8px; padding: 2px 8px; border: 1px solid var(--lo-gold-deep, #c9862a); border-radius: 12px; background: #fdf6e6; color: var(--lo-gold-deep, #c9862a); font-size: 12px; white-space: nowrap; }
.lr-src-chip-x { border: 0; background: none; color: inherit; cursor: pointer; font-size: 12px; line-height: 1; padding: 0 2px; }
@media (max-width: 640px) {
  .lr-form-rows { grid-template-columns: 1fr; }
}
/* ── 从活动库添加（2026-10-16 老板：活动有很多，要一个地方能选/换）──
   民俗节日 chip 网格：暖金描边、悬停高亮、点一下即建规则；已添加的置灰不可点。 */
.lo-cat-grid { display: flex; flex-wrap: wrap; gap: 8px; }
.lo-cat-chip { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px; border: 1px solid var(--lo-line); border-radius: 999px; background: #fffaf0; color: var(--lo-gold-deep); font-size: 13px; cursor: pointer; user-select: none; }
.lo-cat-chip:hover { border-color: #c99a3c; background: var(--lo-gold-soft); }
.lo-cat-chip em { font-style: normal; color: #9a8452; font-size: 11px; }
.lo-cat-chip b { font-weight: 600; color: var(--lo-gold); font-size: 12px; }
.lo-cat-chip.lo-cat-added { cursor: default; background: #f3f4f6; color: #9ca3af; border-color: #e5e7eb; }
.lo-cat-chip.lo-cat-added:hover { border-color: #e5e7eb; background: #f3f4f6; }
.lo-cat-chip.lo-cat-added b { color: #9ca3af; }
/* ── 供灯精选活动库（2026-10-16 老板《庙宇祈福活动全集·知名度分级》接入）──
   佛/道/民俗分组 + 知名度星级。lo-cat-hot 为⭐⭐⭐⭐⭐推荐项（描边加重、金字）。 */
.lo-cat-sec { margin-bottom: 12px; }
.lo-cat-sec:last-of-type { margin-bottom: 0; }
.lo-cat-sec-h { display: flex; align-items: baseline; gap: 8px; font-size: 13px; font-weight: 600; color: var(--lo-gold-deep); margin-bottom: 6px; }
.lo-cat-sec-n { font-weight: 400; color: #9a8452; font-size: 11px; }
.lo-cat-stars { color: #e0a92e; letter-spacing: -1px; font-size: 12px; }
.lo-cat-chip.lo-cat-added .lo-cat-stars { color: #c9ccd1; }
.lo-cat-rec { font-style: normal; background: var(--lo-gold); color: #fff; font-size: 10px; line-height: 1; padding: 2px 5px; border-radius: 6px; }
.lo-cat-chip.lo-cat-hot { border-color: #c99a3c; box-shadow: 0 0 0 1px #f0d9a6 inset; }
.lo-cat-chip.lo-cat-hot b { color: #b8860b; }
