/* ========= 电子纸 · 样式 v2（手机端风格 / 浅色主题） ========= */
:root {
  --red: #e13c3c;
  --blue: #3f6fe0;
  --gold: #f5a623;
  --bg: #f5f6f8;
  --card: #ffffff;
  --text: #222222;
  --muted: #888888;
  --line: #ececec;
  --o1: #ff9d4d;
  --o2: #f2551c;
}

* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }

/* 全站禁用长按文字选择/"复制、全选"弹层（复制一律通过按钮走剪贴板） */
body {
  -webkit-user-select: none; user-select: none;
  -webkit-touch-callout: none;
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
  font-size: 16px;
}

/* ---------- 橙色顶栏 ---------- */
.mbar {
  position: sticky; top: 0; z-index: 10;
  background: linear-gradient(90deg, var(--o1), var(--o2));
  color: #fff; padding: 13px 14px; text-align: center;
}
.mbar h1 { margin: 0; font-size: 17px; font-weight: 600; }
.mbar .back {
  position: absolute; left: 6px; top: 50%; transform: translateY(-50%);
  width: 34px; height: 34px; border: 0; background: none;
  font-size: 23px; line-height: 1; color: #fff; cursor: pointer;
}
.mbar .mbar-link {
  position: absolute; right: 12px; top: 50%; transform: translateY(-50%);
  color: #fff; font-size: 15px; text-decoration: none; opacity: .95;
}

/* ---------- 开奖示例卡 ---------- */
.draw-card {
  background: var(--card); border-radius: 12px;
  margin: 10px 10px 0; padding: 12px;
}
.draw-top { display: flex; align-items: baseline; gap: 6px; font-size: 14px; color: #555; }
.draw-top .issue { font-weight: 700; color: #222; font-size: 15px; }
.draw-top .dsep { color: #ddd; }
.draw-top .pool { margin-left: auto; color: var(--red); font-weight: 600; }
/* 开奖区：球规格与选号区完全一致（同列数网格、同间距 4px、同字号 17px），
   列数由 JS 按 g.cols 设置；红蓝分区之间的"+"占一个网格单元并垂直居中 */
.draw-nums {
  margin-top: 10px; line-height: 1;
  display: grid; gap: 4px;
}
.draw-nums .mini {
  width: 100%; height: auto; aspect-ratio: 1 / 1; margin: 0;
  font-size: 17px; font-weight: 600;
}
.draw-nums .plus { display: flex; align-items: center; justify-content: center; margin: 0; }
.draw-note { font-size: 11px; color: #c0c0c0; margin-top: 8px; }

/* ---------- 面板 / 分区 ---------- */
.container { padding: 10px 10px 120px; }
.panel {
  background: var(--card); border-radius: 12px;
  padding: 12px; margin-bottom: 10px;
}
.zone-bar { display: flex; align-items: center; margin-bottom: 10px; }
.zone-name { font-size: 15px; font-weight: 600; }
.zone-btns { margin-left: auto; display: flex; gap: 8px; }

.pill {
  border: 0; background: #f4f5f7; color: #555;
  font-size: 13px; border-radius: 999px; padding: 5px 14px;
  cursor: pointer; font-family: inherit;
}
.pill.on { color: var(--red); background: #fdeeee; }

/* 玩法切换 tabs（单行横向滚动） */
.mode-tabs {
  display: flex; gap: 8px; align-items: center;
  flex-wrap: wrap;
}
.mode-tabs .mode-tab { font-size: 14px; padding: 7px 14px; flex: none; position: relative; }
.mode-tabs .mode-tab.active { background: var(--red); color: #fff; }
/* 玩法分组布局（福彩3D：传统玩法/新玩法） */
.mode-tabs.grouped { flex-direction: column; align-items: stretch; gap: 8px; }
.mode-group-block { display: flex; align-items: flex-start; gap: 10px; }
.mode-group-label { flex: none; font-size: 12px; color: var(--muted); line-height: 32px; }
.mode-group-tabs { display: flex; flex-wrap: wrap; gap: 8px; flex: 1; }

/* 玩法下拉弹窗（快乐8 选一~选十，参照官方选号助手） */
.mode-dropdown { position: relative; }
.mode-current {
  display: inline-flex; align-items: center; gap: 6px;
  height: 38px; font-size: 16px; font-weight: 600; color: #fff;
  background: var(--red); border: 0; border-radius: 20px;
  padding: 0 16px; cursor: pointer;
}
.mode-current .caret { font-size: 17px; font-weight: 700; opacity: .95; }
.mode-pop-mask {
  display: none; position: fixed; inset: 0; z-index: 50;
  background: rgba(0,0,0,.45);
  align-items: flex-start; justify-content: center;
  padding-top: 92px;
}
.mode-pop {
  background: #fff; border-radius: 12px; padding: 14px;
  width: 240px; max-width: 82vw;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
  box-shadow: 0 8px 24px rgba(0,0,0,.25);
}
.mode-pop-item {
  font-size: 16px; padding: 12px 0; border: 0; border-radius: 8px;
  background: #f1f1f3; color: #333; cursor: pointer; text-align: center;
}
.mode-pop-item.on { background: var(--red); color: #fff; font-weight: 600; }

/* 胆拖模式切换按钮（与玩法下拉同高同字号，宽度随文字自适应） */
.mode-dan-tab {
  margin-left: 8px; height: 38px; font-size: 16px;
  display: inline-flex; align-items: center;
  padding: 0 16px;
  border: 0; border-radius: 20px; background: #f1f1f3; color: #666; cursor: pointer;
}
.mode-dan-tab.on { background: var(--red); color: #fff; font-weight: 600; }

/* 首页产品图标（官方图标 + 文字圆标回退） */
.game-ico-wrap { position: relative; width: 46px; height: 46px; flex: none; }
.game-ico-img {
  width: 46px; height: 46px; object-fit: contain; flex: none;
  display: block; border-radius: 50%; background: #fff;
  border: 1px solid var(--line);
}
.game-ico-wrap .game-ico { display: none; }
.game-ico-wrap.fallback .game-ico { display: flex; position: absolute; inset: 0; }
.game-ico-wrap.fallback .game-ico-img { display: none; }

/* ---------- 号码球网格 ---------- */
/* 间距：水平与垂直相等，4px；开启遗漏时行距放宽给遗漏数字让位 */
.ball-grid { display: grid; gap: 4px; }
.cols-9 { grid-template-columns: repeat(9, 1fr); }
.cols-10 { grid-template-columns: repeat(10, 1fr); }
.ball-grid.has-omit { row-gap: 14px; padding-bottom: 14px; }

.ball {
  position: relative; width: 100%; aspect-ratio: 1; box-sizing: border-box;
  border-radius: 50%; background: #fff;
  border: 1.5px solid #d8d8d8; color: #c0c0c0; padding: 0;
  font-size: 17px; font-weight: 600; cursor: pointer; font-family: inherit;
}
/* 已选：保持空心，仅以彩边+彩字高亮（实心填充留给后期命中判定） */
.ball.c-red.on { border-color: var(--red); color: var(--red); border-width: 2px; }
.ball.c-blue.on { border-color: var(--blue); color: var(--blue); border-width: 2px; }
/* 胆码：金色加粗边框 + "胆"角标。不用 box-shadow/伪元素（html2canvas 生成分享图时不渲染这两种），改用真实边框+真实元素 */
.ball.dan { border: 2px solid #e6a700 !important; }
.dan-tag {
  position: absolute; right: -5px; top: -7px;
  font-style: normal; font-size: 11px; font-weight: 700; color: #fff;
  background: #e6a700; border-radius: 6px; padding: 0 3px; line-height: 1.5;
}
.ball .omit {
  position: absolute; left: 50%; transform: translateX(-50%); bottom: -14px;
  font-style: normal; font-size: 10px; color: #b8b8b8; font-weight: 400;
}

/* ---------- 提示条 / 统计 ---------- */
.hint-bar {
  background: #fdf3dd; color: #c8a06a;
  font-size: 13px; line-height: 1.7;
  border-radius: 8px; padding: 8px 10px;
}
.stat-line { font-size: 14px; color: #555; margin-top: 8px; }
.stat-line b { color: var(--red); }
.dim { color: #b0b0b0; }

/* ---------- 迷你球（开奖号 / 我的选号） ---------- */
.mini {
  display: inline-flex; align-items: center; justify-content: center;
  box-sizing: border-box;
  width: 30px; height: 30px; border-radius: 50%;
  background: #fff; border: 1.5px solid #d8d8d8; color: #c0c0c0;
  font-size: 14px; font-weight: 600; margin-right: 5px;
  position: relative;
}
.mini.r { border-color: var(--red); color: var(--red); }
.mini.b { border-color: var(--blue); color: var(--blue); }
.mini.mdan { border: 2px solid #e6a700; }
/* 命中态（后期判定命中时使用：实心填充；当前选号/展示态一律空心） */
.ball.c-red.hit, .mini.r.hit { background: var(--red); border-color: var(--red); color: #fff; }
.ball.c-blue.hit, .mini.b.hit { background: var(--blue); border-color: var(--blue); color: #fff; }
/* 胆码命中：实心填充之上金边保持，并保留"胆"角标，以和普通命中区分 */
.ball.dan.hit { border-color: #e6a700; }
.mini.mdan.hit { border-color: #e6a700; }
.plus { color: var(--muted); margin-right: 5px; font-weight: 700; }

/* ---------- 功能胶囊行 ---------- */
.action-pills {
  display: flex; gap: 10px; flex-wrap: wrap;
  padding: 2px 12px 14px;
}
.action-pills .pill { font-size: 14px; padding: 8px 18px; }
.action-pills .pill.to-mypicks { color: #fff; background: var(--red); font-weight: 600; }

/* ---------- 倍数步进器 ---------- */
.multi-wrap { padding: 10px 12px; }
.multi-row { display: flex; align-items: center; gap: 10px; }
.multi-label { font-size: 15px; font-weight: 600; color: #333; }
.multi-btn {
  width: 30px; height: 30px; border-radius: 50%; box-sizing: border-box;
  border: 1px solid #ddd; background: #fff;
  font-size: 19px; line-height: 1; color: #555;
  display: inline-flex; align-items: center; justify-content: center;
  cursor: pointer; padding: 0;
}
.multi-btn:active { background: #f0f0f0; }
.multi-num { min-width: 26px; text-align: center; font-size: 17px; font-weight: 700; color: var(--red); }
.multi-hint { font-size: 13px; color: #999; margin-right: auto; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
/* 机选一注：从底部操作栏临时移到倍数行右侧，轻量描边样式，待定最终位置 */
.multi-mach {
  flex: none; margin-left: 8px;
  background: #fff; color: #666; border: 1px solid #ddd; border-radius: 999px;
  padding: 6px 12px; font-size: 13px; cursor: pointer; font-family: inherit; line-height: 1.2;
}
.multi-mach:active { background: #f2f2f2; }

/* ---------- 机选数量选择弹窗 ---------- */
.modal-mask {
  position: fixed; inset: 0; z-index: 1000;
  background: rgba(0,0,0,.45);
  display: flex; align-items: center; justify-content: center;
  -webkit-tap-highlight-color: transparent;
}
.modal-panel {
  background: #fff; border-radius: 14px; padding: 16px;
  width: 300px; max-width: 88vw;
  max-height: 74vh; overflow-y: auto; -webkit-overflow-scrolling: touch;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
}
.modal-panel.cols-5 { grid-template-columns: repeat(5, 1fr); gap: 8px; }
.modal-panel .mopt {
  background: #f2f3f5; border: none; border-radius: 10px;
  padding: 14px 0; font-size: 16px; font-weight: 600; color: #222;
  text-align: center; cursor: pointer;
}
.modal-panel .mopt:active { background: #e4e6eb; }

/* ---------- 底部操作栏 ---------- */
.buybar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 9;
  background: #fff; border-top: 1px solid var(--line);
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
}
.machine-btn {
  background: linear-gradient(135deg, var(--o1), var(--o2));
  color: #fff; border: 0; border-radius: 999px;
  padding: 10px 16px; font-size: 15px; font-weight: 600;
  cursor: pointer; font-family: inherit; flex: none;
}
/* 底部「生成图片」：次要操作，白底橙字描边，与右侧红色「保存方案」区分主次 */
.shot-btn {
  background: #fff; color: var(--o2); border: 1px solid var(--o2);
  border-radius: 999px; padding: 9px 16px; font-size: 15px; font-weight: 600;
  cursor: pointer; font-family: inherit; flex: none;
}
.shot-btn:active { background: #fff4ec; }
.bet-info { flex: 1; text-align: center; font-size: 14px; color: #555; }
.bet-info b { color: var(--red); }
.save-btn {
  background: var(--red); color: #fff; border: 0; border-radius: 10px;
  padding: 11px 18px; font-size: 16px; font-weight: 600;
  cursor: pointer; font-family: inherit; flex: none;
}

/* ---------- 按钮（弹层用） ---------- */
.btn {
  border: 0; border-radius: 10px; padding: 11px 0;
  font-size: 16px; cursor: pointer; text-align: center;
  text-decoration: none; display: inline-block; font-family: inherit;
}
.btn.primary { background: var(--red); color: #fff; flex: 2; }
.btn.ghost { background: #f1f2f5; color: #555; flex: 1; }
.btn.plain {
  background: #fff; border: 1px solid var(--line);
  color: #555; padding: 6px 12px; font-size: 14px; border-radius: 8px;
}
.btn.plain.danger { color: var(--red); border-color: #f0cfcf; }
/* 图片按钮：主色实心，突出显示 */
.btn.plain.shot {
  background: linear-gradient(135deg, var(--o1), var(--o2));
  color: #fff; border-color: transparent; font-weight: 600;
  box-shadow: 0 2px 6px rgba(255, 138, 0, .25);
}
.btn.plain.shot:active { opacity: .88; }

/* ---------- 首页顶栏 ---------- */
.appbar {
  position: sticky; top: 0; z-index: 10;
  background: linear-gradient(135deg, var(--o1), var(--o2)); color: #fff;
  display: flex; align-items: center; justify-content: center;
  padding: 13px 14px;
}
.appbar h1 { margin: 0; font-size: 19px; font-weight: 700; }
.appbar .link {
  position: absolute; right: 14px; top: 50%; transform: translateY(-50%);
  color: #fff; text-decoration: none; font-size: 15px;
  display: inline-flex; align-items: center;
}

/* ---------- 首页 ---------- */
.org-title { font-size: 14px; color: #999; margin: 16px 4px 8px; font-weight: 600; }

.game-card {
  display: flex; align-items: center; gap: 12px;
  background: #fff; border-radius: 12px; padding: 14px;
  margin-bottom: 10px; text-decoration: none; color: inherit;
}
.game-ico {
  width: 46px; height: 46px; border-radius: 50%; flex: none;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-weight: 700; font-size: 15px;
}
.game-ico.ssq { background: linear-gradient(135deg, #e13c3c, #f26b4e); }
.game-ico.dlt { background: linear-gradient(135deg, #3f6fe0, #5aa0f0); }
.game-ico.qlc { background: linear-gradient(135deg, #e67a3c, #f2a21c); }
.game-ico.qxc { background: linear-gradient(135deg, #7a4dd6, #4d7ee0); }
.game-ico.fc3d { background: linear-gradient(135deg, #e13c3c, #e67a3c); }
.game-ico.kl8 { background: linear-gradient(135deg, #e13c3c, #d4163c); }
.game-ico.pl3 { background: linear-gradient(135deg, #7a4dd6, #4d7ee0); }
.game-ico.pl5 { background: linear-gradient(135deg, #4d7ee0, #3f6fe0); }
.game-ico.pl35 { background: linear-gradient(135deg, #7a4dd6, #4d7ee0); }
.game-ico.soon { background: #d9dbe0; color: #999; font-size: 13px; }
.game-card .info { flex: 1; }
.game-card .name { font-weight: 600; font-size: 18px; }
.game-card .desc { font-size: 13px; color: #999; margin-top: 2px; display: block; }
.game-card .go { color: #ccc; }
.game-card.disabled { opacity: .6; }

.my-badge {
  display: inline-block; min-width: 16px; text-align: center;
  background: #fff; color: #f2551c; font-size: 12px;
  border-radius: 999px; padding: 1px 5px; margin-left: 6px;
}

/* ---------- 我的选号 ---------- */
.pick-card { background: #fff; border-radius: 12px; padding: 14px; margin-bottom: 12px; }
.pick-head { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.tag {
  font-size: 12px; color: #fff; background: var(--red);
  border-radius: 4px; padding: 2px 6px;
}
.tag.tlt { background: var(--blue); }
.tag.tqlc { background: #e67a3c; }
.tag.tqxc { background: #7a4dd6; }
.tag.tkl8 { background: #d4163c; }
.tag.tpl3 { background: #7a4dd6; }
.tag.tpl5 { background: #4d7ee0; }
.tag.tpl35 { background: #4d7ee0; }
.tag.multi { background: var(--gold); }
.tag.tmode { background: #2aa15f; }
.pick-time { margin-left: auto; font-size: 12px; color: #aaa; }
.pick-balls { margin-bottom: 10px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 5px; line-height: normal; }
.pick-balls .mini { margin-right: 0; }
.pick-balls .plus { margin: 0; }
/* 定位复式：每"位"1行（位名 + 加大号码球），打票核对用 */
.pos-rows { display: flex; flex-direction: column; gap: 9px; padding: 2px 0; }
.pos-row { display: flex; align-items: center; gap: 10px; }
.pos-label { flex: none; min-width: 0; font-size: 13px; color: #666; font-weight: 600; }
/* 号码区自身可换行并控制行距：号码多时（如双色球红球8码）换行后两行之间留 10px 垂直间距 */
.pos-balls { display: flex; flex-wrap: wrap; align-items: center; align-content: center; gap: 10px 6px; flex: 1; min-width: 0; }
.pos-row .mini { margin-right: 0; }   /* 间距由上条 gap 统一控制，避免叠加 */
/* 组三：重号/单号文字标识 */
.mini-label {
  display: inline-flex; align-items: center;
  font-size: 12px; font-weight: 600; color: #666;
  margin-right: 4px; vertical-align: middle;
}
.pick-foot {
  display: flex; align-items: center; gap: 8px;
  border-top: 1px dashed var(--line); padding-top: 10px;
}
.pick-foot .meta { font-size: 13px; color: #888; flex: 1; }
/* 合并卡「套票」：金额加大加粗，图片里独占一行时右对齐 */
.pick-foot .meta.total { font-size: 14px; color: #555; }
.pick-foot .meta.total b { font-size: 17px; font-weight: 700; color: var(--red); margin: 0 1px; }
.pick-foot .meta.shot-right { text-align: right; }
.empty { text-align: center; color: #b0b0b0; padding: 50px 0; font-size: 15px; line-height: 2; }
.empty a { color: var(--red); text-decoration: none; }

/* 勾选圈与合并分享 */
.pick-check {
  flex: none; width: 20px; height: 20px; border-radius: 50%;
  border: 2px solid #ccc; background: #fff; color: transparent;
  font-size: 13px; line-height: 16px; text-align: center; cursor: pointer;
  box-sizing: border-box;
}
.pick-check.on { background: var(--red); border-color: var(--red); color: #fff; }
/* 合并记录：勾选框置灰禁用 */
.pick-check.disabled {
  border-color: #e2e2e2; background: #f4f4f5; color: transparent;
  cursor: not-allowed; opacity: .55;
}
.pick-check.disabled::after { content: ''; }
/* 长按球/码勾选：禁用长按弹出文字选择 */
.pick-card {
  -webkit-user-select: none; user-select: none;
  -webkit-touch-callout: none;
}
#mergeBar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 60;
  display: none; align-items: center; gap: 8px;
  background: #fff; padding: 10px 14px;
  padding-bottom: calc(10px + env(safe-area-inset-bottom, 0px));
  box-shadow: 0 -2px 10px rgba(0, 0, 0, .08);
}
#mergeBar.show { display: flex; }
#mergeBar #mergeInfo { flex: 1; font-size: 14px; color: #222; font-weight: 600; }
#mergeBar .btn { flex: none; font-size: 14px; padding: 8px 12px; }
/* 「合并」按钮：未勾选时灰置不可点的样子，勾选 1 条及以上点亮为橙色主操作 */
#mergeBar #btnMergeGo { background: #f1f2f5; color: #999; transition: background .15s, box-shadow .15s; }
#mergeBar #btnMergeGo.ready {
  background: linear-gradient(135deg, var(--o1), var(--o2));
  color: #fff; font-weight: 600;
  box-shadow: 0 2px 8px rgba(242, 85, 28, .35);
}
.pick-meta { font-size: 13px; color: #888; }
/* 合并记录：组内各组分隔 */
.merge-sub { padding: 8px 0; border-bottom: 1px dashed var(--line); }
.merge-sub:last-of-type { border-bottom: 0; }
.merge-sub .pick-balls { margin-bottom: 6px; }
.merge-sub .pick-meta { display: flex; align-items: center; }
.merge-out {
  margin-left: auto; flex: none;
  font-size: 12px; color: #666; background: #fff;
  border: 1px solid var(--line); border-radius: 999px;
  padding: 2px 10px; cursor: pointer; font-family: inherit;
}
.merge-out:active { background: #f1f2f5; }

.chips { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 12px; }
.chip {
  font-size: 13px; color: #666; background: #f4f5f7;
  border-radius: 999px; padding: 5px 12px;
  border: 1px solid transparent; cursor: pointer; font-family: inherit;
}
.chip.on { color: var(--red); border-color: var(--red); background: #fdeeee; }

/* ---------- 合规声明 ---------- */
.disclaimer {
  font-size: 12px; color: #8a8a8a; line-height: 1.85;
  background: #fafafa; border: 1px solid #eee; border-radius: 12px;
  padding: 14px 14px 12px; margin: 4px 0 10px; text-align: left;
}
.disclaimer p { margin: 0 0 8px; }
.disclaimer p:last-child { margin-bottom: 0; }
.disclaimer .d-strong { color: #555; font-weight: 600; }
.disclaimer .red-list {
  background: #fff; border: 1px dashed #d8d8d8; border-radius: 8px;
  padding: 10px 12px; color: #666; line-height: 1.9;
}
.disclaimer strong { color: #c0392b; }
.beian {
  display: flex; flex-direction: column; gap: 3px;
  font-size: 12px; color: #b0b0b0; text-align: center;
  padding: 8px 8px 18px;
}
.beian .beian-no { color: #d9534f; font-weight: 600; }

/* ---------- Toast / 弹层 ---------- */
#toast {
  position: fixed; left: 50%; bottom: 120px; z-index: 200;   /* 高于截图弹窗（120），弹窗内提示才看得见 */
  transform: translateX(-50%) translateY(20px);
  background: rgba(0, 0, 0, .75); color: #fff;
  padding: 8px 14px; border-radius: 8px; font-size: 14px;
  opacity: 0; pointer-events: none; transition: .25s; max-width: 80vw;
}
#toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }

/* ---------- 生成图片的票据头尾（仅截图时注入克隆文档，不在页面上显示） ---------- */
.slip-head {
  display: flex; align-items: flex-end; gap: 8px;
  background: var(--card); border-radius: 12px;
  margin: 0 10px; padding: 12px 12px 11px;
}
.slip-head .sh-name { font-size: 19px; font-weight: 700; color: var(--text); letter-spacing: .5px; }
.slip-head .sh-org { font-size: 12px; color: var(--muted); padding-bottom: 1px; }
.slip-head .sh-side { margin-left: auto; display: flex; flex-direction: column; align-items: flex-end; gap: 5px; }
.slip-head .sh-mode {
  font-size: 13px; font-weight: 600; color: var(--red);
  background: #fdecea; border-radius: 6px; padding: 3px 8px; white-space: nowrap;
}
.slip-head .sh-time { font-size: 11px; color: #b8b8b8; }

.slip-foot {
  display: flex; background: var(--card); border-radius: 12px;
  margin: 0 10px; padding: 12px 6px;
}
.slip-foot .sf-cell {
  flex: 1; display: flex; flex-direction: column; align-items: center; gap: 3px;
  border-left: 1px solid var(--line);
}
.slip-foot .sf-cell:first-child { border-left: 0; }
.slip-foot .sf-k { font-size: 12px; color: var(--muted); }
.slip-foot .sf-v { font-size: 21px; font-weight: 700; color: var(--text); line-height: 1.15; }
.slip-foot .sf-v i { font-size: 12px; font-style: normal; font-weight: 500; color: var(--muted); margin-left: 2px; }
.slip-foot .sf-v.amount { color: var(--red); }

/* ---------- 截图查看：全屏黑底，图片尽量放大；点图切换「原大 / 适应屏幕」 ---------- */
.shot-mask {
  position: fixed; inset: 0; z-index: 120;
  background: rgba(0, 0, 0, .94);
  display: none; flex-direction: column;
  padding: 0;
}
body.shot-lock { overflow: hidden; }   /* 弹窗打开时锁住背景滚动 */
.shot-box {
  position: relative; width: 100%; height: 100%;
  display: flex; flex-direction: column; overflow: hidden;
}
/* 图片舞台：默认按原大铺满宽度、上下滑动；点一下切成整页适应屏幕 */
.shot-stage {
  flex: 1; min-height: 0; overflow: auto;
  padding: 10px 10px 4px;
  -webkit-overflow-scrolling: touch;
}
.shot-stage.fit {
  display: flex; align-items: center; justify-content: center;
}
.shot-img {
  display: block; width: 100%; height: auto; border-radius: 6px;
  /* 全站为了禁长按选择把 callout 关了；这张图必须放行，否则微信里长按不出「保存图片」 */
  -webkit-touch-callout: default; -webkit-user-select: auto; user-select: auto;
}
.shot-stage.fit .shot-img { width: auto; max-width: 100%; max-height: 100%; }
.shot-close {
  position: absolute; right: 10px; top: calc(10px + env(safe-area-inset-top, 0px));
  z-index: 2; width: 34px; height: 34px; border: 0; border-radius: 50%;
  background: rgba(0, 0, 0, .5); color: #fff; font-size: 22px; line-height: 1;
  cursor: pointer;
}
.shot-foot {
  flex: none; padding: 8px 14px calc(10px + env(safe-area-inset-bottom, 0px));
  background: rgba(255, 255, 255, .06);
}
.shot-tip { font-size: 13px; color: #ffb3b3; margin-bottom: 8px; text-align: center; }
/* 微信内置浏览器的保存引导（不报错，只提示怎么存） */
.shot-wx-tip {
  background: rgba(255, 255, 255, .12); color: #ffd98a;
  border-radius: 8px; padding: 7px 10px; font-size: 13px; line-height: 1.5;
  margin-bottom: 8px; text-align: center;
}
.shot-hint { font-size: 12px; color: rgba(255, 255, 255, .55); text-align: center; margin-bottom: 8px; }
.shot-alt { font-size: 12px; color: rgba(255, 255, 255, .45); margin-top: 8px; text-align: center; line-height: 1.5; }
.shot-btns { display: flex; gap: 10px; }
.shot-btns .btn { flex: 1; }
.shot-btns .btn.ghost { background: rgba(255, 255, 255, .18); color: #fff; }

/* ---------- 标识弹层（仅手机号，免密） ---------- */
.auth-mask {
  position: fixed; inset: 0; z-index: 300;
  background: rgba(0, 0, 0, .45);
  display: none; align-items: center; justify-content: center; padding: 24px;
}
.auth-mask.on { display: flex; }
.auth-card {
  position: relative; width: 100%; max-width: 320px;
  background: #fff; border-radius: 14px; padding: 26px 20px 16px; text-align: center;
}
.auth-x {
  position: absolute; left: 8px; top: 6px; width: 30px; height: 30px;
  line-height: 30px; font-size: 22px; color: #bbb;
}
.auth-title { font-size: 17px; font-weight: 600; }
.auth-sub { font-size: 12px; color: var(--muted); margin-top: 6px; line-height: 1.5; }
.auth-input {
  -webkit-user-select: text; user-select: text; -webkit-touch-callout: default;
  width: 100%; height: 46px; margin-top: 14px; padding: 0 14px;
  border: 1px solid var(--line); border-radius: 10px;
  font-size: 16px; background: #fafafa; outline: none;
}
.auth-input:focus { border-color: var(--o2); background: #fff; }
.auth-err { min-height: 16px; margin-top: 8px; font-size: 12px; color: var(--red); }
.auth-ok {
  width: 100%; height: 46px; margin-top: 4px; border: 0; border-radius: 23px;
  background: linear-gradient(135deg, var(--o1), var(--o2));
  color: #fff; font-size: 16px; font-weight: 600;
}
.auth-foot { margin-top: 12px; font-size: 12px; color: var(--o2); }
.auth-priv { margin-top: 14px; font-size: 11px; color: #aaa; line-height: 1.5; }

/* ---------- 我的选号：账号条 / 未登录引导 ---------- */
.acct-bar { display: flex; align-items: center; justify-content: space-between; font-size: 13px; color: var(--muted); }
.acct-bar b { color: var(--text); font-weight: 600; }
.acct-out { border: 0; background: none; color: var(--o2); font-size: 13px; padding: 0; }
.auth-gate { text-align: center; padding: 30px 16px; }
.auth-gate .t { font-size: 15px; font-weight: 600; }
.auth-gate .s { font-size: 12px; color: var(--muted); margin: 8px 0 16px; }
