/* ============================================================
   期数 · 生肖 · 投入计算器
   main.css  v9.4.0
   --------------------------------------------------------
   结构：
     · 1~30 节  ：全局基础 / 组件 / 手机端 / 深色主题（浅色）
     · 31 节    ：本期推荐 · 追投模式（.combo-card）专用皮肤
     · 32~38 节 ：历史高亮 / 交互优化 / 状态增强
     · 39 节    ：★ 历史记录 v2（本期推荐 · 追投模式）
     · 40 节    ：★ 历史模式面板 v2
   ============================================================ */

/* ============================================================
   1. 基础变量 & Reset
   ============================================================ */
:root{
  --bg:#ffffff;
  --card:#ffffff;
  --card2:#f8fafc;
  --line:#e5e9f0;
  --text:#0f172a;
  --muted:#64748b;
  --accent:#2563eb;
  --primary:#2563eb;
  --primary-2:#7c3aed;
  --green:#16a34a;
  --success:#16a34a;
  --red:#e11d48;
  --danger:#e11d48;
  --gold:#d97706;
  --warn:#d97706;
  --radius:14px;
  --shadow:0 4px 18px -8px rgba(15,23,42,.12);
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:#ffffff;
  color:var(--text);
  min-height:100vh;
  font-family:"PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;
  -webkit-font-smoothing:antialiased;
  padding:22px 14px 60px;
}
.wrap{max-width:1140px;margin:0 auto;}

/* ============================================================
   2. 通用卡片 & 布局
   ============================================================ */
.iframe-wrap{
  width:100%;
  margin-bottom:14px;
  background:#ffffff;
  border:1px solid var(--line);
  border-radius:16px;
  overflow:hidden;
  box-shadow:0 12px 34px -28px rgba(15,23,42,.5);
}
.iframe-wrap iframe{display:block;width:100%;border:0;}

.card{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:16px;
  padding:16px 16px 18px;
  margin-bottom:14px;
  box-shadow:0 12px 34px -28px rgba(15,23,42,.5);
  animation:fadeInUp .35s ease both;
}
.card:nth-child(1){ animation-delay:0ms; }
.card:nth-child(2){ animation-delay:60ms; }
.card:nth-child(3){ animation-delay:120ms; }
.card:nth-child(4){ animation-delay:180ms; }

.card h2{
  margin:0 0 13px;
  font-size:14.5px;
  font-weight:700;
  letter-spacing:.4px;
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}
.card h2::before{
  content:"";
  width:4px;
  height:14px;
  border-radius:2px;
  flex:none;
  background:linear-gradient(180deg,#2563eb,#7c3aed);
}
.hint{font-size:12px;color:var(--muted);font-weight:400;}

/* ============================================================
   3. 期数卡片
   ============================================================ */
.period-card{
  display:flex;
  justify-content:space-between;
  align-items:center;
  flex-wrap:wrap;
  gap:18px;
}
.p-label{font-size:12px;color:var(--muted);letter-spacing:2px;}
.p-num{
  font-size:clamp(30px,6.4vw,46px);
  font-weight:800;
  letter-spacing:2px;
  font-variant-numeric:tabular-nums;
  line-height:1.15;
  background:linear-gradient(100deg,#0284c7,#2563eb 50%,#7c3aed);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}
.p-date{font-size:12.5px;color:var(--muted);margin-top:2px;}
.p-side{text-align:right;}
.p-side div{font-size:12.5px;color:var(--muted);margin:4px 0;}
.p-side b{
  color:#2563eb;
  font-variant-numeric:tabular-nums;
  font-size:14px;
}

/* ============================================================
   4. 表单元素
   ============================================================ */
.row{display:flex;flex-wrap:wrap;gap:9px;align-items:center;}
label{font-size:12.5px;color:var(--muted);}
input,
select,
button,
textarea{
  font:inherit;
  color:var(--text);
  background:#ffffff;
  border:1px solid var(--line);
  border-radius:10px;
  padding:8px 12px;
  outline:none;
  transition:.15s;
}
textarea{
  width:100%;
  min-height:64px;
  resize:vertical;
  font-family:inherit;
}
input[type=number]{width:96px;}
input:focus,
textarea:focus{
  border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(37,99,235,.13);
}
input:disabled{
  background:#f1f5f9;
  color:#94a3b8;
  cursor:not-allowed;
}

button{cursor:pointer;}
button:disabled{opacity:.5;cursor:not-allowed;}
button.primary{
  background:linear-gradient(135deg,#2563eb,#7c3aed);
  border:none;
  color:#fff;
  font-weight:700;
  padding:9px 20px;
  letter-spacing:.5px;
  box-shadow:0 10px 22px -14px #2563eb;
}
button.primary:hover{filter:brightness(1.1);}
button.ghost{background:#fff;}
button.ghost:hover{border-color:var(--accent);color:#2563eb;}

/* ============================================================
   5. Seg 切换按钮
   ============================================================ */
.seg{
  display:inline-flex;
  background:var(--card2);
  border:1px solid var(--line);
  border-radius:10px;
  padding:3px;
  gap:3px;
  flex-wrap:wrap;
}
.seg button{
  background:transparent;
  border:none;
  padding:7px 16px;
  border-radius:8px;
  font-size:13px;
  color:var(--muted);
}
.seg button.on{
  background:linear-gradient(135deg,#2563eb,#7c3aed);
  color:#fff;
  font-weight:700;
}
.mart-seg{margin-bottom:16px;flex-wrap:wrap;}

/* ============================================================
   6. 空状态
   ============================================================ */
.empty{
  padding:18px;
  text-align:center;
  color:var(--muted);
  font-size:12.5px;
  border:1px dashed var(--line);
  border-radius:12px;
  margin-top:12px;
  background:#fbfcfe;
  line-height:1.7;
}

/* ============================================================
   7. 统计网格 & 卡片
   ============================================================ */
.stat-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(138px,1fr));
  gap:10px;
  margin-top:15px;
}
.stat{
  background:var(--card2);
  border:1px solid var(--line);
  border-radius:12px;
  padding:12px 14px;
  display:flex;
  flex-direction:column;
  gap:2px;
}
.sl{font-size:11.5px;color:var(--muted);letter-spacing:.4px;}
.sv{
  font-size:21px;
  font-weight:800;
  font-variant-numeric:tabular-nums;
  letter-spacing:-.3px;
}
.sv em{
  font-size:11.5px;
  font-weight:500;
  font-style:normal;
  color:var(--muted);
  margin-left:2px;
}
.ss{font-size:10.5px;color:#64748b;}
.sv.gold{color:var(--gold);}
.sv.green{color:var(--green);}
.sv.red{color:var(--red);}
.sv.purple{color:#7c3aed;}
.stat.pos .sv{color:var(--green);}
.stat.neg .sv{color:var(--red);}
.stat.hl{background:#eff6ff;border-color:#bfdbfe;}

/* ============================================================
   8. 追投表格（全局：白底）
   ============================================================ */
.mwrap{
  overflow-x:auto;
  margin-top:6px;
  border-radius:12px;
  border:1px solid var(--line);
  background:#ffffff;
}
.mtab{
  width:100%;
  border-collapse:collapse;
  font-size:12.5px;
  min-width:1080px;
  background:#ffffff;
}
.mtab th{
  text-align:right;
  font-size:11.5px;
  color:var(--muted);
  font-weight:600;
  padding:9px 10px;
  background:var(--card2);
  border-bottom:1px solid var(--line);
  white-space:nowrap;
}
.mtab th:first-child,
.mtab td:first-child{text-align:center;}
.mtab td{
  padding:8px 10px;
  border-bottom:1px solid #f1f5f9;
  text-align:right;
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
  background:#ffffff;
}
.mtab td:first-child{font-weight:800;color:#334155;background:#ffffff;}
.mtab tr:last-child td{border-bottom:none;}
.mtab tr.safe td{background:#f0fdf4;}
.mtab tr.risk td{background:#fff5f6;}
.mtab tr.nofund td{background:#fef2f2;opacity:.82;}
.mtab tr:hover td{filter:brightness(.985);}
.mtab .net-pos{color:var(--green);font-weight:800;}
.mtab .net-neg{color:var(--red);font-weight:800;}
.mtab .net-pos::before{content:"▲ ";font-size:9px;opacity:.85;}
.mtab .net-neg::before{content:"▼ ";font-size:9px;opacity:.85;}
.mtab .cum{color:#475569;font-weight:800;background:#f8fafc;}
.mtab .ret{color:#7c3aed;font-weight:700;}
.mtab .be{color:var(--gold);font-weight:800;}
.mtab .fund{color:#0369a1;font-weight:800;background:#f0f9ff;}
.mtab .fund-over{color:#dc2626;font-weight:800;background:#fef2f2;}
.mtab .dbl{color:#9333ea;font-weight:800;background:#faf5ff;}
.mtab .per-single-net{color:#16a34a;font-weight:900;background:#f0fdf4;}
.dot{
  display:inline-block;
  width:7px;
  height:7px;
  border-radius:50%;
  margin-right:5px;
}
.dot.g{background:var(--green);}
.dot.r{background:var(--red);}
.dot.y{background:var(--gold);}
.dot.p{background:#9333ea;}

/* ============================================================
   9. 提示框
   ============================================================ */
.warn{
  margin-top:12px;
  padding:11px 14px;
  border-radius:11px;
  font-size:12.5px;
  line-height:1.85;
  border:1px solid;
}
.warn.ok{background:#f0fdf4;border-color:#bbf7d0;color:#166534;}
.warn.bad{background:#fff1f2;border-color:#fecdd3;color:#9f1239;}
.warn.info{background:#eff6ff;border-color:#bfdbfe;color:#1e40af;}
.warn.gold{background:#fffbeb;border-color:#fde68a;color:#92400e;}
.warn.fund{background:#f0f9ff;border-color:#bae6fd;color:#075985;}
.warn b{font-variant-numeric:tabular-nums;}

/* ============================================================
   10. 控制区 & 源框
   ============================================================ */
.mart-ctrl{
  margin-bottom:12px;
  padding:10px 12px;
  background:var(--card2);
  border-radius:10px;
  border:1px solid var(--line);
}
.mart-panel{padding-top:2px;}
.tag-mini{
  display:inline-block;
  padding:2px 9px;
  border-radius:7px;
  font-weight:700;
  border:1px solid;
  letter-spacing:1px;
  font-size:12px;
}
.src-box{
  margin-bottom:12px;
  padding:12px 14px;
  background:#fbfcfe;
  border:1px solid var(--line);
  border-radius:12px;
}
.src-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  flex-wrap:wrap;
  gap:8px;
  margin-bottom:10px;
}
.src-label{
  font-size:12.5px;
  font-weight:700;
  color:#475569;
  letter-spacing:.5px;
}
.src-label b{color:#1e293b;margin-left:3px;}
.src-content{
  display:flex;
  flex-wrap:wrap;
  gap:5px;
  align-items:center;
}

/* ============================================================
   11. Chips
   ============================================================ */
.zodiac-chip{
  display:inline-block;
  padding:4px 12px;
  border-radius:7px;
  font-weight:800;
  font-size:12.5px;
  border:1px solid;
  letter-spacing:1px;
  position:relative;
}
.zodiac-chip .bm-mark{
  position:absolute;
  top:-6px;
  right:-4px;
  font-size:9px;
  font-weight:800;
  padding:0 4px;
  border-radius:5px;
  background:#fbbf24;
  color:#78350f;
  letter-spacing:0;
}
.num-chip{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:30px;
  height:24px;
  padding:0 6px;
  border-radius:6px;
  font-size:11.5px;
  font-weight:700;
  font-variant-numeric:tabular-nums;
  border:1px solid;
}
.color-chip{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  padding:5px 14px;
  border-radius:8px;
  font-weight:800;
  font-size:14px;
  border:1px solid;
  letter-spacing:2px;
}
.size-chip{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:44px;
  height:26px;
  padding:0 12px;
  border-radius:8px;
  font-size:15px;
  font-weight:900;
  letter-spacing:4px;
  border:1px solid;
}
.size-chip.size-big{color:#dc2626;background:#fef2f2;border-color:#fecaca;}
.size-chip.size-small{color:#2563eb;background:#eff6ff;border-color:#bfdbfe;}
/* ★ 单双 chip（与 .size-chip 同尺度） */
.parity-chip{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:44px;
  height:26px;
  padding:0 12px;
  border-radius:8px;
  font-size:15px;
  font-weight:900;
  letter-spacing:4px;
  border:1px solid;
}
.parity-chip.parity-odd{color:#dc2626;background:#fef2f2;border-color:#fecaca;}
.parity-chip.parity-even{color:#2563eb;background:#eff6ff;border-color:#bfdbfe;}
.preview-nums-full{
  width:100%;
  display:flex;
  flex-wrap:wrap;
  gap:4px;
  margin-top:8px;
  padding-top:8px;
  border-top:1px dashed #e5eaf2;
}
.preview-nums-label{
  width:100%;
  font-size:10.5px;
  color:#64748b;
  margin-bottom:2px;
}

/* ============================================================
   12. 资金轨迹
   ============================================================ */
.fund-bar{
  margin-top:14px;
  padding:14px 16px;
  border-radius:12px;
  background:linear-gradient(135deg,#f0f9ff,#eff6ff);
  border:1px solid #bae6fd;
}
.fund-bar-title{
  font-size:12.5px;
  font-weight:700;
  color:#075985;
  margin-bottom:10px;
  letter-spacing:.5px;
}
.fund-track{
  position:relative;
  height:24px;
  border-radius:12px;
  background:#e0f2fe;
  overflow:hidden;
  margin-bottom:8px;
}
.fund-fill{
  height:100%;
  border-radius:12px;
  background:linear-gradient(90deg,#0ea5e9,#2563eb);
  transition:width .4s ease;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  padding-right:10px;
  color:#fff;
  font-size:11px;
  font-weight:700;
  white-space:nowrap;
}
.fund-fill.over{background:linear-gradient(90deg,#f43f5e,#dc2626);}
.fund-marks{
  display:flex;
  justify-content:space-between;
  font-size:10.5px;
  color:#0369a1;
  font-variant-numeric:tabular-nums;
}

/* ============================================================
   13. 追踪网格 & 追踪卡片
   ============================================================ */
.track-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:12px;
  margin-top:12px;
  transition:opacity .15s ease;
}
.track-grid.switching{opacity:0;pointer-events:none;}

.track-card{
  border:1px solid var(--line);
  border-radius:12px;
  padding:12px 14px;
  background:#fff;
  transition:transform .2s, box-shadow .2s;
  position:relative;
}
.track-card::before{
  content:"";
  position:absolute;
  top:0;left:0;right:0;
  height:4px;
  background:linear-gradient(90deg,#94a3b8,#cbd5e1);
  border-radius:12px 12px 0 0;
  z-index:1;
}
.track-card[data-type="combo"]::before{background:linear-gradient(90deg,#f59e0b,#fbbf24);}
.track-card[data-type="zodiac4"]::before,
.track-card[data-type="zodiac6"]::before{background:linear-gradient(90deg,#2563eb,#7c3aed);}
.track-card[data-type="number16"]::before,
.track-card[data-type="number24"]::before{background:linear-gradient(90deg,#16a34a,#22c55e);}
.track-card[data-type="color1"]::before,
.track-card[data-type="color2"]::before{background:linear-gradient(90deg,#e11d48,#f43f5e);}
.track-card[data-type="size"]::before{background:linear-gradient(90deg,#d97706,#f59e0b);}
.track-card[data-type="frontback"]::before,
.track-card[data-type="domestic"]::before{background:linear-gradient(90deg,#0891b2,#06b6d4);}

.track-card.hit::before{
  background:linear-gradient(90deg,#16a34a,#22c55e) !important;
  box-shadow:0 0 14px -3px rgba(22,163,74,.55);
}
.track-card.miss::before{
  background:linear-gradient(90deg,#e11d48,#f43f5e) !important;
  box-shadow:0 0 14px -3px rgba(225,29,72,.55);
}

.track-card.hit{
  background:linear-gradient(135deg,#f0fdf4 0%,#dcfce7 100%) !important;
  border-color:#86efac !important;
  border-width:2px !important;
}
.track-card.miss{
  background:linear-gradient(135deg,#fff1f2 0%,#fee2e2 100%) !important;
  border-color:#fecaca !important;
  border-width:2px !important;
}
.track-card.hit .track-content{background:#dcfce7;border-color:#86efac;}
.track-card.miss .track-content{background:#fee2e2;border-color:#fecaca;}
.track-card.hit .track-title{color:#166534;}
.track-card.miss .track-title{color:#991b1b;}
.track-card.hit .combo-tip{background:#dcfce7;border-color:#86efac;color:#166534;}
.track-card.miss .combo-tip{background:#fee2e2;border-color:#fecaca;color:#991b1b;}
.track-card.hit .combo-result{background:#dcfce7;border-color:#86efac;}
.track-card.miss .combo-result{background:#fee2e2;border-color:#fecaca;}

.track-card.hit::after{
  content:"✓";
  position:absolute;
  top:-10px;right:-10px;
  width:34px;height:34px;
  border-radius:50%;
  background:linear-gradient(135deg,#16a34a,#22c55e);
  color:#fff;
  font-size:18px;
  font-weight:900;
  display:flex;
  align-items:center;
  justify-content:center;
  box-shadow:0 4px 12px -4px rgba(22,163,74,.6), 0 0 0 3px #fff;
  animation:stampIn .3s cubic-bezier(.34,1.56,.64,1);
  z-index:3;
}
.track-card.miss::after{
  content:"✕";
  position:absolute;
  top:-10px;right:-10px;
  width:34px;height:34px;
  border-radius:50%;
  background:linear-gradient(135deg,#e11d48,#f43f5e);
  color:#fff;
  font-size:16px;
  font-weight:900;
  display:flex;
  align-items:center;
  justify-content:center;
  box-shadow:0 4px 12px -4px rgba(225,29,72,.6), 0 0 0 3px #fff;
  animation:stampIn .3s cubic-bezier(.34,1.56,.64,1);
  z-index:3;
}
@keyframes stampIn{
  from{transform:scale(0) rotate(-180deg);opacity:0;}
  to{transform:scale(1) rotate(0);opacity:1;}
}

.track-card.wide{grid-column:1 / -1;}
.track-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  margin-bottom:9px;
}
.track-title{
  font-size:14px;
  font-weight:800;
  color:#1e293b;
  letter-spacing:.3px;
}
.track-chase{
  font-size:11.5px;
  font-weight:800;
  padding:3px 10px;
  border-radius:8px;
  background:#eff6ff;
  color:#1d4ed8;
  letter-spacing:.5px;
  font-variant-numeric:tabular-nums;
}
.track-chase.chasing{background:#fef3c7;color:#92400e;}
.track-chase.hit{background:#dcfce7;color:#166534;}
.track-chase.miss{background:#fee2e2;color:#991b1b;}
.track-card.hit .track-chase.hit{background:#16a34a;color:#fff;font-weight:900;}
.track-card.miss .track-chase.miss{background:#e11d48;color:#fff;font-weight:900;}

.track-head.track-head-plan{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  flex-wrap:nowrap;
}
.track-head.track-head-plan .track-title{flex:0 0 auto;}
.track-head.track-head-plan .track-plan{
  flex:1 1 auto;
  text-align:center;
  font-size:13px;
  font-weight:800;
  color:#7c3aed;
  letter-spacing:2px;
  padding:2px 0;
}
.track-head.track-head-plan .track-plan::before,
.track-head.track-head-plan .track-plan::after{
  content:"";
  display:inline-block;
  width:24px;height:1px;
  background:linear-gradient(90deg,transparent,#c4b5fd);
  vertical-align:middle;
  margin:0 8px;
}
.track-head.track-head-plan .track-plan::after{
  background:linear-gradient(90deg,#c4b5fd,transparent);
}
.track-head.track-head-plan .track-chase{flex:0 0 auto;}

.track-content{
  display:flex;
  flex-wrap:wrap;
  gap:4px;
  margin-bottom:10px;
  padding:8px;
  background:#f8fafc;
  border-radius:8px;
  max-height:180px;
  overflow-y:auto;
  border:1px solid #eef2f7;
  align-items:center;
}
.track-stats{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:5px 12px;
  font-size:11.5px;
  color:var(--muted);
}
.track-stats b{
  color:#1e293b;
  font-variant-numeric:tabular-nums;
}
.track-stats .hit-tag{color:#16a34a;font-weight:800;}
.track-stats .miss-tag{color:#e11d48;font-weight:800;}
.track-stats .wait-tag{color:#d97706;font-weight:800;}

.track-lastdraw{
  margin-top:8px;
  padding-top:8px;
  border-top:1px dashed #eef2f7;
  font-size:11px;
  color:var(--muted);
  display:flex;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:4px;
}
.track-lastdraw .draw-nums{
  display:inline-flex;
  flex-wrap:wrap;
  gap:3px;
  align-items:center;
}
.track-lastdraw .dn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:22px;height:18px;
  padding:0 4px;
  border-radius:4px;
  font-size:10.5px;
  font-weight:800;
  font-variant-numeric:tabular-nums;
  border:1px solid;
}
.track-lastdraw .dn.sp{position:relative;}
.track-lastdraw .dn.sp::after{
  content:"特";
  position:absolute;
  top:-7px;right:-3px;
  font-size:9px;
  font-weight:900;
  background:#fbbf24;
  color:#78350f;
  padding:0 3px;
  border-radius:4px;
  line-height:1.2;
}

.track-special-zodiac{
  margin-top:6px;
  padding-top:6px;
  border-top:1px dashed #eef2f7;
  font-size:11px;
  color:var(--muted);
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  align-items:center;
}
.track-special-zodiac .tsz-label{
  font-weight:700;
  color:#475569;
  letter-spacing:.3px;
}
.track-special-zodiac .tsz-zodiac{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:28px;height:20px;
  padding:0 8px;
  border-radius:6px;
  font-size:12px;
  font-weight:900;
  border:1px solid;
  letter-spacing:1px;
}
.track-special-zodiac .tsz-nums{
  display:inline-flex;
  flex-wrap:wrap;
  gap:3px;
  align-items:center;
}
.track-special-zodiac .tsz-num{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:22px;height:18px;
  padding:0 4px;
  border-radius:4px;
  font-size:10.5px;
  font-weight:800;
  font-variant-numeric:tabular-nums;
  border:1px solid;
}
.track-special-zodiac .tsz-match{
  font-size:10.5px;
  font-weight:900;
  padding:1px 7px;
  border-radius:5px;
  letter-spacing:.5px;
}
.track-special-zodiac .tsz-match.hit{background:#dcfce7;color:#166534;}
.track-special-zodiac .tsz-match.miss{background:#fee2e2;color:#991b1b;}

/* ============================================================
   14. 卡片内历史记录（旧版保留兼容）
   ============================================================ */
.track-history{
  margin-top:8px;
  padding-top:8px;
  border-top:1px dashed #eef2f7;
}
.track-history-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  font-size:11px;
  color:#94a3b8;
  margin-bottom:6px;
  flex-wrap:wrap;
  gap:6px;
}
.track-history-head .hist-title{
  font-weight:700;
  color:#475569;
  letter-spacing:.3px;
}
.track-history-head .hist-sum{display:flex;gap:8px;flex-wrap:wrap;}
.hist-sum .hs-hit{color:#16a34a;font-weight:800;}
.hist-sum .hs-miss{color:#e11d48;font-weight:800;}
.hist-sum .hs-life{color:#7c3aed;font-weight:800;}
.track-history-list{
  display:flex;
  flex-wrap:wrap;
  gap:4px;
  max-height:96px;
  overflow-y:auto;
  padding-right:2px;
}
.hist-item{
  display:inline-flex;
  align-items:center;
  gap:3px;
  padding:2px 6px;
  border-radius:5px;
  font-size:10.5px;
  font-weight:700;
  font-variant-numeric:tabular-nums;
  border:1px solid;
  cursor:help;
}
.hist-item.hit{background:#f0fdf4;border-color:#bbf7d0;color:#166534;}
.hist-item.miss{background:#fff1f2;border-color:#fecdd3;color:#991b1b;}
.hist-item .hist-period{opacity:.65;font-weight:600;}
.hist-item .hist-gen{
  font-weight:800;
  max-width:56px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  padding:0 3px;
  border-radius:3px;
  background:rgba(37,99,235,.08);
  color:#1d4ed8;
}
.hist-item.miss .hist-gen{background:rgba(225,29,72,.08);color:#9f1239;}
.hist-item .hist-arrow{opacity:.45;font-weight:700;font-size:10px;}
.hist-item .hist-draw{font-weight:800;}
.hist-item .hist-tag{font-weight:800;margin-left:1px;}
.hist-item .hist-sz{
  font-size:9px;
  font-weight:900;
  padding:0 4px;
  border-radius:4px;
  background:#fef3c7;
  color:#78350f;
  letter-spacing:0;
}

/* ============================================================
   15. 历史面板
   ============================================================ */
.history-panel{padding:16px 16px 18px;}
.hp-summary{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(120px,1fr));
  gap:10px;
  margin-bottom:16px;
}
.hp-sum-card{
  background:#f8fafc;
  border:1px solid var(--line);
  border-radius:10px;
  padding:12px 14px;
  display:flex;
  flex-direction:column;
  gap:3px;
}
.hp-sum-l{font-size:11.5px;color:var(--muted);letter-spacing:.3px;}
.hp-sum-v{
  font-size:24px;
  font-weight:800;
  font-variant-numeric:tabular-nums;
  color:#1e293b;
  letter-spacing:-.5px;
}
.hp-sum-card.hit{background:#f0fdf4;border-color:#bbf7d0;}
.hp-sum-card.hit .hp-sum-v{color:var(--green);}
.hp-sum-card.miss{background:#fff1f2;border-color:#fecdd3;}
.hp-sum-card.miss .hp-sum-v{color:var(--red);}
.hp-section-title{
  font-size:12.5px;
  font-weight:700;
  color:#475569;
  margin:16px 0 10px;
  padding-left:8px;
  border-left:3px solid #2563eb;
  letter-spacing:.3px;
}
.hp-type-list{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  gap:8px;
}
.hp-type-item{
  background:#f8fafc;
  border:1px solid var(--line);
  border-radius:8px;
  padding:9px 12px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}
.hp-type-name{font-size:12.5px;font-weight:800;color:#1e293b;letter-spacing:.3px;}
.hp-type-stat{display:inline-flex;gap:5px;flex-wrap:wrap;}
.hp-tag{
  font-size:10.5px;
  font-weight:800;
  padding:2px 7px;
  border-radius:5px;
  font-variant-numeric:tabular-nums;
}
.hp-tag.hit{background:#dcfce7;color:#166534;}
.hp-tag.miss{background:#fee2e2;color:#991b1b;}
.hp-tag.rate{background:#dbeafe;color:#1e40af;}
.hp-chase-list{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
  gap:6px;
}
.hp-chase-item{
  background:#fff;
  border:1px solid var(--line);
  border-radius:8px;
  padding:8px 12px;
  display:flex;
  justify-content:space-between;
  align-items:center;
}
.hp-chase-k{font-size:11.5px;color:#475569;font-weight:700;}
.hp-chase-v{
  font-size:13px;
  font-weight:800;
  color:#1e293b;
  font-variant-numeric:tabular-nums;
}
.hp-chase-v em{font-size:10px;font-style:normal;color:#94a3b8;margin-left:2px;}
.hp-list{
  display:flex;
  flex-direction:column;
  gap:4px;
  max-height:520px;
  overflow-y:auto;
  border:1px solid var(--line);
  border-radius:10px;
  background:#fbfcfe;
  padding:8px;
}
.hp-item{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  padding:6px 10px;
  border-radius:7px;
  font-size:11.5px;
  font-variant-numeric:tabular-nums;
  border:1px solid;
  background:#fff;
}
.hp-item.hit{background:#f0fdf4;border-color:#bbf7d0;}
.hp-item.miss{background:#fff1f2;border-color:#fecdd3;}
.hp-period{font-weight:800;color:#475569;font-size:11px;min-width:70px;}
.hp-type{
  font-size:10.5px;
  font-weight:800;
  padding:1px 7px;
  border-radius:5px;
  background:#eff6ff;
  color:#1d4ed8;
  letter-spacing:.3px;
}
.hp-gen{
  font-size:11.5px;
  font-weight:800;
  color:#1e293b;
  max-width:110px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  padding:1px 6px;
  border-radius:5px;
  background:rgba(37,99,235,.08);
}
.hp-item.hit .hp-gen{background:rgba(22,163,74,.1);color:#166534;}
.hp-item.miss .hp-gen{background:rgba(225,29,72,.08);color:#9f1239;}
.hp-draw{display:inline-flex;gap:3px;}
.hp-sp{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:26px;height:20px;
  padding:0 5px;
  border-radius:5px;
  font-size:11px;
  font-weight:900;
  border:1px solid;
}
.hp-zodiac{
  font-size:11px;
  font-weight:800;
  color:#78350f;
  background:#fef3c7;
  padding:1px 7px;
  border-radius:5px;
  letter-spacing:.5px;
}
.hp-chase{
  font-size:10.5px;
  font-weight:700;
  color:#7c3aed;
  background:#faf5ff;
  padding:1px 7px;
  border-radius:5px;
}
.hp-status{
  font-size:11px;
  font-weight:900;
  padding:1px 8px;
  border-radius:5px;
  margin-left:auto;
}
.hp-status.hit{background:#16a34a;color:#fff;}
.hp-status.miss{background:#e11d48;color:#fff;}
.hp-empty{
  padding:22px;
  text-align:center;
  color:#94a3b8;
  font-size:12.5px;
  background:#fbfcfe;
  border-radius:10px;
}

/* ============================================================
   16. 挑选面板
   ============================================================ */
.picker-panel{padding:16px 16px 18px;}
.picker-section{margin-bottom:16px;}
.picker-section-title{
  font-size:12.5px;
  font-weight:800;
  color:#475569;
  padding-left:8px;
  border-left:3px solid #2563eb;
  margin-bottom:10px;
  letter-spacing:.3px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  flex-wrap:wrap;
  gap:6px;
}
.picker-section-title .sub{font-size:11px;color:#94a3b8;font-weight:500;}
.picker-grid{display:flex;flex-wrap:wrap;gap:6px;}
.picker-zodiac{
  display:inline-flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  min-width:64px;
  padding:8px 6px;
  border-radius:9px;
  border:1.5px solid;
  cursor:pointer;
  transition:.15s;
  user-select:none;
  position:relative;
}
.picker-zodiac:hover{transform:translateY(-1px);filter:brightness(.97);}
.picker-zodiac.selected{box-shadow:0 0 0 3px #2563eb;transform:translateY(-1px);}
.picker-zodiac .pz-name{font-size:14px;font-weight:900;letter-spacing:1px;}
.picker-zodiac .pz-score{font-size:10.5px;font-weight:700;margin-top:2px;opacity:.85;}
.picker-zodiac .pz-bm{
  position:absolute;
  top:-6px;right:-4px;
  font-size:9px;
  font-weight:800;
  padding:0 4px;
  border-radius:5px;
  background:#fbbf24;
  color:#78350f;
  letter-spacing:0;
}
.picker-zodiac .pz-ck{
  position:absolute;
  top:-6px;left:-4px;
  font-size:10px;
  font-weight:900;
  padding:0 4px;
  border-radius:5px;
  background:#2563eb;
  color:#fff;
  letter-spacing:0;
}
.picker-num{
  display:inline-flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  min-width:42px;
  padding:6px 4px 8px;
  border-radius:8px;
  border:1.5px solid;
  cursor:pointer;
  transition:.15s;
  user-select:none;
  position:relative;
  font-variant-numeric:tabular-nums;
}
.picker-num:hover{transform:translateY(-1px);filter:brightness(.97);}
.picker-num.selected{box-shadow:0 0 0 3px #2563eb;transform:translateY(-1px);}
.picker-num .pn-num{font-size:13px;font-weight:900;letter-spacing:.5px;}
.picker-num .pn-score{font-size:9.5px;font-weight:700;margin-top:1px;opacity:.85;}
.picker-num .pn-ck{
  position:absolute;
  top:-6px;left:-4px;
  font-size:10px;
  font-weight:900;
  padding:0 4px;
  border-radius:5px;
  background:#2563eb;
  color:#fff;
  letter-spacing:0;
}
.pn-bar{
  width:100%;
  height:2px;
  border-radius:2px;
  background:#e2e8f0;
  margin-top:2px;
  overflow:hidden;
}
.pn-bar-fill{height:100%;border-radius:2px;transition:width .3s;}

.picker-summary{
  background:#eff6ff;
  border:1px solid #bfdbfe;
  border-radius:10px;
  padding:12px 14px;
  display:flex;
  flex-direction:column;
  gap:8px;
}
.picker-summary-row{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
  font-size:12px;
  color:#1e40af;
}
.picker-summary-label{font-weight:800;min-width:56px;}
.picker-summary-chips{display:flex;flex-wrap:wrap;gap:4px;flex:1;}

.picker-actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:10px;
}
.picker-actions button{
  font-size:12px;
  padding:6px 12px;
  border-radius:8px;
  background:#fff;
  border:1px solid var(--line);
  color:#475569;
  font-weight:700;
  position:relative;
}
.picker-actions button:hover{border-color:var(--accent);color:#2563eb;}
.picker-actions button.danger:hover{border-color:var(--red);color:var(--red);}
.picker-actions button.recommend{
  background:linear-gradient(135deg,#2563eb,#7c3aed);
  color:#fff;
  border:none;
  box-shadow:0 6px 16px -10px #2563eb;
  font-size:13px;
  padding:8px 22px;
}
.picker-actions button.recommend:hover{filter:brightness(1.08);color:#fff;}
.picker-actions button.recommend::after{
  content:"✨";
  position:absolute;
  top:-4px;right:-4px;
  font-size:12px;
}
.picker-actions button.locked{
  background:linear-gradient(135deg,#059669,#16a34a);
  color:#fff;
  border:none;
  box-shadow:0 6px 16px -10px #059669;
  cursor:not-allowed;
  font-size:13px;
  padding:8px 22px;
}
.picker-actions button.locked:hover{filter:none;color:#fff;}
.picker-actions button.locked::after{
  content:"🔒";
  position:absolute;
  top:-4px;right:-4px;
  font-size:11px;
}
.picker-lock-badge{
  display:inline-flex;
  align-items:center;
  gap:4px;
  font-size:11px;
  font-weight:800;
  padding:3px 10px;
  border-radius:6px;
  background:#dcfce7;
  color:#166534;
  letter-spacing:.3px;
}
.picker-lock-badge .lock-dot{
  width:7px;height:7px;
  border-radius:50%;
  background:#16a34a;
  box-shadow:0 0 5px #16a34a;
}
.picker-result{
  background:linear-gradient(135deg,#f0f9ff,#eff6ff);
  border:1px solid #bae6fd;
  border-radius:12px;
  padding:12px 14px;
  margin-bottom:14px;
  display:flex;
  flex-direction:column;
  gap:8px;
}
.picker-result-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  flex-wrap:wrap;
  gap:8px;
}
.picker-result-title{
  font-size:12.5px;
  font-weight:800;
  color:#075985;
  letter-spacing:.3px;
}
.picker-result-status{
  font-size:11px;
  font-weight:800;
  padding:3px 10px;
  border-radius:6px;
  letter-spacing:.3px;
}
.picker-result-status.pending{background:#fef3c7;color:#92400e;}
.picker-result-status.hit{background:#dcfce7;color:#166534;}
.picker-result-status.miss{background:#fee2e2;color:#991b1b;}
.picker-result-row{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
  font-size:12px;
  color:#1e40af;
}
.picker-result-label{
  font-weight:800;
  min-width:60px;
  color:#0c4a6e;
}
.picker-stat-bar{
  display:flex;
  flex-wrap:wrap;
  gap:10px 18px;
  align-items:center;
  padding:10px 14px;
  border-radius:10px;
  background:linear-gradient(135deg,#f0fdf4,#ecfdf5);
  border:1px solid #bbf7d0;
  font-size:12px;
  color:#166534;
  margin-bottom:14px;
}
.picker-stat-bar .ps-item{display:inline-flex;align-items:center;gap:6px;}
.picker-stat-bar .ps-item b{
  color:#14532d;
  font-variant-numeric:tabular-nums;
  font-size:13px;
}
.strategy-desc{
  margin-top:6px;
  font-size:11px;
  color:#94a3b8;
  line-height:1.6;
  padding-left:4px;
}
.picker-log-list{
  display:flex;
  flex-direction:column;
  gap:6px;
  max-height:460px;
  overflow-y:auto;
  border:1px solid var(--line);
  border-radius:10px;
  background:#fbfcfe;
  padding:8px;
}
.picker-log-item{
  display:flex;
  flex-direction:column;
  gap:6px;
  padding:8px 12px;
  border-radius:9px;
  font-size:11px;
  font-variant-numeric:tabular-nums;
  border:1px solid;
  background:#fff;
}
.picker-log-item.hit{background:#f0fdf4;border-color:#bbf7d0;}
.picker-log-item.miss{background:#fff1f2;border-color:#fecdd3;}
.picker-log-item.pending{background:#fefce8;border-color:#fde68a;}
.picker-log-item.current{box-shadow:0 0 0 2px #2563eb inset;background:#eff6ff;}
.pl-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.pl-period{font-weight:800;color:#475569;font-size:12px;}
.pl-time{font-size:10.5px;color:#94a3b8;}
.pl-status{
  font-size:10.5px;
  font-weight:900;
  padding:2px 9px;
  border-radius:5px;
  margin-left:auto;
}
.pl-status.hit{background:#16a34a;color:#fff;}
.pl-status.miss{background:#e11d48;color:#fff;}
.pl-status.pending{background:#f59e0b;color:#fff;}
.pl-lock{
  font-size:9.5px;
  font-weight:800;
  padding:1px 6px;
  border-radius:4px;
  background:#dcfce7;
  color:#166534;
}
.pl-body{
  display:flex;
  flex-direction:column;
  gap:5px;
  padding-top:4px;
  border-top:1px dashed #e5eaf2;
}
.pl-row{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  align-items:center;
  font-size:11px;
  color:#475569;
}
.pl-row-label{font-weight:800;color:#334155;min-width:52px;}
.pl-nums-inline{display:inline-flex;flex-wrap:wrap;gap:3px;align-items:center;}
.pl-sp-inline{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:26px;height:20px;
  padding:0 5px;
  border-radius:5px;
  font-size:11px;
  font-weight:900;
  border:1px solid;
}
.pl-chip{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:26px;height:22px;
  padding:0 7px;
  border-radius:5px;
  font-size:11px;
  font-weight:800;
  letter-spacing:.5px;
  border:1px solid;
}
.pl-num{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:24px;height:20px;
  padding:0 5px;
  border-radius:4px;
  font-size:10.5px;
  font-weight:800;
  border:1px solid;
}
.pl-shrink{font-size:10.5px;color:#64748b;font-weight:700;}

/* ============================================================
   17. 统计模式
   ============================================================ */
.stat-panel{padding:16px 16px 18px;}
.stat-seg{margin-bottom:12px;}
.stat-sync-bar{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  padding:10px 14px;
  border-radius:10px;
  background:linear-gradient(135deg,#f0f9ff,#eff6ff);
  border:1px solid #bae6fd;
  font-size:12px;
  color:#075985;
  margin-bottom:12px;
}
.stat-sync-bar .ss-dot{
  display:inline-block;
  width:8px;height:8px;
  border-radius:50%;
  background:#94a3b8;
}
.stat-sync-bar .ss-dot.ok{background:#16a34a;box-shadow:0 0 6px #16a34a;}
.stat-sync-bar .ss-dot.loading{background:#f59e0b;animation:blink 1s infinite;}
.stat-sync-bar .ss-dot.error{background:#e11d48;}
.stat-sync-bar .ss-item{display:inline-flex;align-items:center;gap:6px;}
.stat-sync-bar .ss-item b{color:#0c4a6e;font-variant-numeric:tabular-nums;}
.stat-sync-bar .ss-btn{
  margin-left:auto;
  font-size:11.5px;
  padding:4px 12px;
  border-radius:8px;
  background:#fff;
  border:1px solid #bae6fd;
  color:#075985;
  cursor:pointer;
  font-weight:700;
}
.stat-sync-bar .ss-btn:hover{background:#f0f9ff;}
.stat-sync-bar .ss-btn:disabled{opacity:.55;cursor:not-allowed;}
.stat-sort-bar{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  margin-bottom:12px;
}
.stat-sort-bar .sort-label{
  font-size:11.5px;
  color:#64748b;
  font-weight:700;
}
.stat-table-wrap{
  overflow-x:auto;
  border-radius:12px;
  border:1px solid var(--line);
  background:#ffffff;
}
.stat-tab{
  width:100%;
  border-collapse:collapse;
  font-size:12.5px;
  min-width:720px;
  background:#ffffff;
}
.stat-tab th{
  text-align:left;
  font-size:11.5px;
  color:var(--muted);
  font-weight:600;
  padding:9px 12px;
  background:var(--card2);
  border-bottom:1px solid var(--line);
  white-space:nowrap;
}
.stat-tab td{
  padding:9px 12px;
  border-bottom:1px solid #f1f5f9;
  font-variant-numeric:tabular-nums;
  vertical-align:middle;
  background:#ffffff;
}
.stat-tab tr:last-child td{border-bottom:none;}
.stat-tab tr:hover td{background:#f8fafc;}
.stat-chip{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:44px;height:24px;
  padding:0 10px;
  border-radius:6px;
  font-weight:800;
  font-size:12px;
  border:1px solid;
  letter-spacing:.5px;
}
.judge-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:11px;
  font-weight:800;
  padding:3px 9px;
  border-radius:6px;
  letter-spacing:.3px;
  white-space:nowrap;
  background:#f1f5f9;
  color:#94a3b8;
}
.judge-badge.j-hot{background:#fee2e2;color:#991b1b;}
.judge-badge.j-warn{background:#fef3c7;color:#92400e;}
.judge-badge.j-focus{background:#dbeafe;color:#1e40af;}
.judge-badge.j-safe{background:#f0fdf4;color:#166534;}
.judge-badge.j-never{background:#ede9fe;color:#6b21a8;}
.stat-num em{
  font-size:10px;
  font-style:normal;
  font-weight:600;
  color:#94a3b8;
  margin-left:2px;
}
.stat-bar-cell{display:flex;align-items:center;gap:8px;min-width:140px;}
.stat-bar-bg{flex:1;height:10px;border-radius:5px;background:#f1f5f9;overflow:hidden;}
.stat-bar-fill{height:100%;border-radius:5px;transition:width .3s;}
.stat-num{font-size:13px;font-weight:800;min-width:38px;text-align:right;}
.stat-count{font-weight:800;color:#334155;}
.stat-period{color:#475569;font-weight:700;}
.stat-summary-title{
  margin:18px 0 10px;
  font-size:12.5px;
  font-weight:700;
  color:#475569;
  padding-left:8px;
  border-left:3px solid #2563eb;
  letter-spacing:.3px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  flex-wrap:wrap;
  gap:6px;
}
.stat-top-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(120px,1fr));
  gap:8px;
}
.stat-top-card{
  background:#f8fafc;
  border:1px solid var(--line);
  border-radius:10px;
  padding:10px 12px;
  display:flex;
  flex-direction:column;
  gap:4px;
  align-items:center;
  text-align:center;
}
.stat-top-label{display:flex;justify-content:center;}
.stat-top-value{
  font-size:22px;
  font-weight:900;
  color:#dc2626;
  font-variant-numeric:tabular-nums;
  line-height:1.1;
}
.stat-top-value em{
  font-size:11px;
  font-weight:600;
  color:#94a3b8;
  margin-left:2px;
  font-style:normal;
}
.stat-top-sub{font-size:10.5px;color:#64748b;}
.stat-top-card.hottest{background:#fff1f2;border-color:#fecaca;}
.stat-top-card.hottest .stat-top-value{color:#e11d48;}

/* ============================================================
   18. 通用配置区 & 状态栏 & 风险卡
   ============================================================ */
.odds-config{
  display:flex;
  gap:20px;
  flex-wrap:wrap;
  padding:11px 14px;
  background:#fbfcfe;
  border:1px solid var(--line);
  border-radius:10px;
  margin-bottom:12px;
}
.odds-item{display:flex;align-items:center;gap:8px;}
.odds-item label{font-size:12.5px;font-weight:600;color:#475569;}
.odds-item .odds-tag{font-size:11px;color:#94a3b8;margin-left:2px;}
.bm-hint{
  display:inline-block;
  padding:2px 10px;
  border-radius:6px;
  background:#fef3c7;
  color:#78350f;
  font-size:11.5px;
  font-weight:700;
  letter-spacing:.5px;
  margin-left:6px;
}

.auto-status-bar{
  display:flex;
  flex-wrap:wrap;
  gap:10px 18px;
  align-items:center;
  padding:10px 14px;
  border-radius:10px;
  background:linear-gradient(135deg,#f0f9ff,#eff6ff);
  border:1px solid #bae6fd;
  font-size:12px;
  color:#075985;
  margin-bottom:12px;
}
.auto-status-bar .as-item{display:inline-flex;align-items:center;gap:6px;}
.auto-status-bar .as-item b{color:#0c4a6e;font-variant-numeric:tabular-nums;}
.auto-status-bar .as-dot{
  display:inline-block;
  width:8px;height:8px;
  border-radius:50%;
  background:#94a3b8;
}
.auto-status-bar .as-dot.ok{background:#16a34a;box-shadow:0 0 6px #16a34a;}
.auto-status-bar .as-dot.loading{background:#f59e0b;animation:blink 1s infinite;}
.auto-status-bar .as-dot.error{background:#e11d48;}
@keyframes blink{0%,100%{opacity:1;}50%{opacity:.35;}}
.auto-status-bar .as-nums{display:inline-flex;flex-wrap:wrap;gap:3px;align-items:center;}
.auto-status-bar .as-num{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:24px;height:20px;
  padding:0 5px;
  border-radius:5px;
  font-size:11px;
  font-weight:800;
  font-variant-numeric:tabular-nums;
  border:1px solid;
  background:#fff;
  position:relative;
}
.auto-status-bar .as-num.sp::after{
  content:"特";
  position:absolute;
  top:-7px;right:-3px;
  font-size:9px;
  font-weight:900;
  background:#fbbf24;
  color:#78350f;
  padding:0 3px;
  border-radius:4px;
  line-height:1.2;
}
.auto-status-bar .as-refresh{
  margin-left:auto;
  font-size:11.5px;
  padding:4px 12px;
  border-radius:8px;
  background:#fff;
  border:1px solid #bae6fd;
  color:#075985;
  cursor:pointer;
}
.auto-status-bar .as-refresh:hover{background:#f0f9ff;}
.auto-status-bar .as-refresh:disabled{opacity:.55;cursor:not-allowed;}
.auto-status-bar .as-notify{
  font-size:11.5px;
  padding:4px 12px;
  border-radius:8px;
  background:#fff;
  border:1px solid #bae6fd;
  color:#075985;
  cursor:pointer;
}
.auto-status-bar .as-notify:hover{background:#f0f9ff;}
.auto-status-bar .as-notify.on{background:#dbeafe;border-color:#93c5fd;}

.risk-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:10px;
  margin-top:12px;
}
.risk-card{
  background:#fff;
  border:1px solid var(--line);
  border-radius:12px;
  padding:11px 14px;
  display:flex;
  flex-direction:column;
  gap:3px;
}
.risk-card .rc-l{font-size:11.5px;color:var(--muted);letter-spacing:.4px;}
.risk-card .rc-v{
  font-size:18px;
  font-weight:800;
  font-variant-numeric:tabular-nums;
}
.risk-card .rc-s{font-size:10.5px;color:#64748b;}
.risk-card.pos .rc-v{color:var(--green);}
.risk-card.neg .rc-v{color:var(--red);}
.risk-card.warn-c .rc-v{color:var(--gold);}
.risk-card.purple .rc-v{color:#7c3aed;}

.group-chip{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:52px;height:26px;
  padding:0 12px;
  border-radius:8px;
  font-size:14px;
  font-weight:900;
  letter-spacing:3px;
  border:1px solid;
}
.view-seg{margin-bottom:12px;}

.strategy-badge{
  display:inline-flex;
  align-items:center;
  gap:4px;
  font-size:10.5px;
  font-weight:800;
  padding:2px 8px;
  border-radius:6px;
  letter-spacing:.3px;
}
.strategy-badge.s0{background:#ede9fe;color:#6b21a8;}
.strategy-badge.s1{background:#fef3c7;color:#92400e;}
.strategy-badge.s2{background:#dbeafe;color:#1e40af;}
.strategy-badge.s3{background:#dcfce7;color:#166534;}
.strategy-badge.s4{background:#ffe4e6;color:#9f1239;}

.calc-hint{
  display:inline-block;
  padding:2px 10px;
  border-radius:6px;
  background:#eff6ff;
  color:#1e40af;
  font-size:11.5px;
  font-weight:600;
  letter-spacing:.2px;
}
.calc-hint.zodiac{background:#fef3c7;color:#92400e;}
.cus-preview-title{
  width:100%;
  font-size:11px;
  color:#64748b;
  margin-bottom:4px;
}
.track-core-label{
  width:100%;
  font-size:10.5px;
  color:#64748b;
  padding-bottom:2px;
  margin-bottom:4px;
  border-bottom:1px dashed #e5eaf2;
}
.track-core-label b{color:#475569;font-weight:700;}

/* ============================================================
   19. combo 本期推荐卡片专用（浅色基础结构）
   ============================================================ */
.combo-card{
  padding:16px 18px;
  background:linear-gradient(135deg,#ffffff 0%,#f8fafc 100%);
}
.combo-card.hit{background:linear-gradient(135deg,#f0fdf4,#dcfce7);border-color:#86efac;}
.combo-card.miss{background:linear-gradient(135deg,#fff5f6,#fee2e2);border-color:#fecdd3;}
.combo-tip{
  display:flex;
  flex-wrap:wrap;
  gap:8px 16px;
  padding:8px 14px;
  margin-bottom:14px;
  background:#eff6ff;
  border:1px dashed #bfdbfe;
  border-radius:10px;
  font-size:11.5px;
  color:#1e40af;
}
.combo-tip .ct-item{display:inline-flex;align-items:center;gap:4px;font-weight:700;}
.combo-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:12px;
  margin-bottom:14px;
}
.combo-block{
  background:#fff;
  border:1px solid var(--line);
  border-radius:12px;
  padding:10px 12px;
  transition:.2s;
}
.combo-block:hover{border-color:#bfdbfe;box-shadow:0 4px 12px -8px rgba(37,99,235,.2);}
.cb-head{
  display:flex;
  align-items:center;
  gap:6px;
  margin-bottom:8px;
  padding-bottom:6px;
  border-bottom:1px dashed #eef2f7;
  font-size:12.5px;
}
.cb-icon{font-size:14px;}
.cb-title{font-weight:800;color:#334155;letter-spacing:.3px;}
.cb-count{
  margin-left:auto;
  font-size:10.5px;
  font-weight:700;
  padding:2px 8px;
  border-radius:5px;
  background:#eff6ff;
  color:#1d4ed8;
}
.cb-body{display:flex;flex-wrap:wrap;gap:5px;align-items:center;}
.chip-hit{
  box-shadow:0 0 0 3px #fbbf24, 0 0 0 5px rgba(251,191,36,.25) !important;
  font-weight:900 !important;
}
.combo-num-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:40px;height:26px;
  padding:0 10px;
  border-radius:7px;
  font-size:12px;
  font-weight:800;
  background:#fef3c7;
  color:#78350f;
  border:1px solid #fde68a;
}
.combo-num-badge.tail{background:#faf5ff;color:#7c3aed;border-color:#ddd6fe;}
.combo-result{
  padding:12px 14px;
  border-radius:12px;
  background:#f8fafc;
  border:1px solid var(--line);
}
.cr-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  flex-wrap:wrap;
  gap:8px;
  font-size:12.5px;
  font-weight:700;
  color:#334155;
  margin-bottom:10px;
}
.cr-status{
  font-size:11px;
  font-weight:800;
  padding:3px 10px;
  border-radius:6px;
  letter-spacing:.3px;
}
.cr-status.hit{background:#16a34a;color:#fff;}
.cr-status.miss{background:#e11d48;color:#fff;}
.cr-draw{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
  font-size:12px;
  margin-bottom:10px;
}
.cr-label{font-weight:700;color:#475569;}
.cr-zodiac{
  font-size:11px;
  font-weight:800;
  color:#78350f;
  background:#fef3c7;
  padding:2px 8px;
  border-radius:5px;
}
.cr-dims{display:flex;flex-wrap:wrap;gap:5px;}
.cr-dim{
  font-size:10.5px;
  font-weight:800;
  padding:3px 9px;
  border-radius:5px;
  letter-spacing:.2px;
}
.cr-dim.ok{background:#dcfce7;color:#166534;}
.cr-dim.no{background:#fee2e2;color:#991b1b;}

/* ============================================================
   20. 广告横幅
   ============================================================ */
.ad-banner{
  width:100%;
  margin:0 auto 14px;
  border-radius:16px;
  overflow:hidden;
  background:transparent;
}
.ad-banner.ad-hidden{display:none !important;}
.ad-banner.ad-visible{display:block !important;}
.ad-banner-link{
  display:block;
  text-decoration:none;
  color:inherit;
  border-radius:16px;
  overflow:hidden;
  transition:transform .15s, box-shadow .15s;
}
.ad-banner-link:hover{
  transform:translateY(-2px);
  box-shadow:0 12px 30px -14px rgba(37,99,235,.45);
}
.ad-banner img{
  width:100%;
  display:block;
  object-fit:cover;
  border-radius:16px;
}
.ad-banner-text{
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:15px;
  font-weight:800;
  letter-spacing:1px;
  border-radius:16px;
  text-align:center;
  padding:0 20px;
  line-height:1.4;
}

/* ============================================================
   21. VIP 权限遮罩 & 弹窗
   ============================================================ */
.vip-lock{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  padding:56px 24px;
  margin:8px 0;
  background:linear-gradient(135deg,#f8fafc,#eff6ff);
  border:2px dashed #cbd5e1;
  border-radius:16px;
  text-align:center;
}
.vip-lock-icon{font-size:48px;margin-bottom:14px;filter:grayscale(.2);}
.vip-lock-title{
  font-size:20px;
  font-weight:800;
  color:#1e293b;
  margin-bottom:8px;
  letter-spacing:.5px;
}
.vip-lock-desc{
  font-size:13px;
  color:#64748b;
  margin-bottom:20px;
  line-height:1.6;
  max-width:380px;
}
.vip-lock-btn{
  padding:12px 30px;
  border-radius:11px;
  border:none;
  background:linear-gradient(135deg,#2563eb,#7c3aed);
  color:#fff;
  font-weight:800;
  font-size:15px;
  letter-spacing:.5px;
  box-shadow:0 10px 24px -12px #2563eb;
  cursor:pointer;
  transition:.15s;
}
.vip-lock-btn:hover{filter:brightness(1.08);transform:translateY(-1px);}
.vip-lock-hint{font-size:11.5px;color:#94a3b8;margin-top:16px;}
.vip-modal-mask{
  position:fixed;
  inset:0;
  background:rgba(15,23,42,.55);
  backdrop-filter:blur(4px);
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:9999;
  padding:20px;
  animation:vipFadeIn .18s ease;
}
@keyframes vipFadeIn{from{opacity:0;}to{opacity:1;}}
.vip-modal-box{
  background:#fff;
  border-radius:18px;
  box-shadow:0 24px 60px -20px rgba(15,23,42,.5);
  width:100%;
  max-width:420px;
  overflow:hidden;
  animation:vipSlideUp .22s cubic-bezier(.34,1.56,.64,1);
}
@keyframes vipSlideUp{
  from{transform:translateY(20px);opacity:0;}
  to{transform:translateY(0);opacity:1;}
}
.vip-modal-head{
  padding:16px 20px;
  background:linear-gradient(135deg,#2563eb,#7c3aed);
  display:flex;
  align-items:center;
  justify-content:space-between;
}
.vip-modal-title{color:#fff;font-size:15px;font-weight:800;letter-spacing:.5px;}
.vip-modal-close{
  background:rgba(255,255,255,.15);
  color:#fff;
  border:none;
  width:28px;height:28px;
  border-radius:50%;
  font-size:14px;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
}
.vip-modal-close:hover{background:rgba(255,255,255,.3);}
.vip-modal-body{padding:22px 22px 20px;}
.vip-modal-tip{font-size:12.5px;color:#64748b;margin-bottom:10px;}
.vip-code-input{
  width:100%;
  padding:13px 16px;
  border:2px solid #e2e8f0;
  border-radius:11px;
  font-size:15px;
  font-family:ui-monospace,Menlo,Consolas,monospace;
  letter-spacing:1.5px;
  text-align:center;
  font-weight:700;
  color:#1e293b;
  background:#f8fafc;
  transition:.15s;
}
.vip-code-input:focus{
  border-color:#2563eb;
  background:#fff;
  box-shadow:0 0 0 4px rgba(37,99,235,.13);
  outline:none;
}
.vip-modal-msg{
  min-height:20px;
  margin-top:10px;
  font-size:12.5px;
  text-align:center;
  transition:.15s;
}
.vip-modal-msg.error{color:#e11d48;font-weight:600;}
.vip-modal-msg.ok{color:#16a34a;font-weight:600;}
.vip-modal-actions{display:flex;gap:10px;margin-top:18px;}
.vip-btn-cancel,
.vip-btn-confirm{
  flex:1;
  padding:11px 0;
  border-radius:10px;
  font-size:14px;
  font-weight:700;
  cursor:pointer;
  border:none;
  transition:.15s;
}
.vip-btn-cancel{background:#f1f5f9;color:#475569;}
.vip-btn-cancel:hover{background:#e2e8f0;}
.vip-btn-confirm{
  background:linear-gradient(135deg,#2563eb,#7c3aed);
  color:#fff;
  box-shadow:0 8px 18px -10px #2563eb;
}
.vip-btn-confirm:hover{filter:brightness(1.08);}

/* ============================================================
   22. 通用工具
   ============================================================ */
footer{
  text-align:center;
  color:#94a3b8;
  font-size:11.5px;
  margin-top:24px;
  line-height:1.9;
}
.app-version{
  text-align:center;
  color:#cbd5e1;
  font-size:10.5px;
  margin-top:20px;
  letter-spacing:.5px;
  font-variant-numeric:tabular-nums;
}
.hidden{display:none !important;}
.text-muted{color:var(--muted);font-size:11.5px;}

/* ============================================================
   23. 骨架屏 & 空状态 & FAB
   ============================================================ */
.skeleton{
  background:linear-gradient(90deg,#f1f5f9 25%,#e2e8f0 50%,#f1f5f9 75%);
  background-size:200% 100%;
  animation:skeletonShine 1.4s infinite;
  border-radius:8px;
}
@keyframes skeletonShine{
  from{background-position:200% 0;}
  to{background-position:-200% 0;}
}
.skeleton-card{
  padding:16px;
  border-radius:12px;
  border:1px solid var(--line);
  background:#fff;
  margin-bottom:10px;
}
.skeleton-line{height:14px;margin-bottom:10px;border-radius:6px;}

.empty-state{
  padding:32px 20px;
  text-align:center;
  background:linear-gradient(135deg,#f8fafc,#eff6ff);
  border:1px dashed #cbd5e1;
  border-radius:14px;
}
.empty-state-icon{font-size:42px;margin-bottom:10px;filter:grayscale(.15);}
.empty-state-text{
  font-size:13px;
  font-weight:700;
  color:#64748b;
  margin-bottom:14px;
  line-height:1.6;
}
.empty-state-btn{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:9px 20px;
  border-radius:9px;
  background:linear-gradient(135deg,#2563eb,#7c3aed);
  color:#fff;
  font-size:12.5px;
  font-weight:700;
  border:none;
  box-shadow:0 8px 18px -10px #2563eb;
}

.fab-top{
  position:fixed;
  bottom:24px;
  right:24px;
  z-index:60;
  width:48px;height:48px;
  border-radius:50%;
  background:linear-gradient(135deg,#2563eb,#7c3aed);
  color:#fff;
  font-size:20px;
  font-weight:900;
  border:none;
  cursor:pointer;
  box-shadow:0 10px 26px -10px rgba(37,99,235,.6);
  display:flex;
  align-items:center;
  justify-content:center;
  opacity:0;
  pointer-events:none;
  transform:translateY(20px) scale(.9);
  transition:opacity .25s, transform .25s;
}
.fab-top.show{opacity:1;pointer-events:auto;transform:translateY(0) scale(1);}
.fab-top:hover{filter:brightness(1.08);transform:translateY(-2px) scale(1.05);}
.fab-top:active{transform:translateY(0) scale(.95);}

/* ============================================================
   24. 键盘 & 无障碍
   ============================================================ */
*:focus-visible{
  outline:2px solid #2563eb;
  outline-offset:2px;
  border-radius:inherit;
}
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[data-pick-zodiac]:focus-visible,
[data-pick-num]:focus-visible{
  outline:2px solid #2563eb;
  outline-offset:2px;
}

.text-muted,
.hint,
.ss,
.rc-s,
.stat-top-sub,
.cus-preview-title,
.preview-nums-label,
.track-core-label{
  color:#64748b;
}
.stat-period{color:#475569;}
.hp-sum-l,
.sl{color:#475569;}

@keyframes fadeInUp{
  from{opacity:0;transform:translateY(12px);}
  to{opacity:1;transform:translateY(0);}
}

/* ============================================================
   25. 手机端全面修复（≤ 640px）
   ============================================================ */
html,body{overflow-x:hidden;max-width:100%;-webkit-text-size-adjust:100%;}
*,
*::before,
*::after{min-width:0;}
img,svg,video,canvas,iframe{max-width:100%;}

@media(max-width:640px){
  html,body{overflow-x:hidden;width:100%;}
  body{padding:10px 8px 90px;font-size:14px;}
  .wrap{max-width:100%;width:100%;}
  .card{
    padding:14px 12px;
    border-radius:14px;
    margin-bottom:12px;
    max-width:100%;
    overflow:hidden;
  }

  .period-card{flex-direction:column;align-items:stretch;gap:12px;}
  .period-card > div:first-child{width:100%;}
  .p-num{font-size:clamp(28px,8vw,38px);line-height:1.2;word-break:break-all;}
  .p-side{
    text-align:left;
    width:100%;
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:8px 12px;
  }
  .p-side > div{
    font-size:12px;
    background:#f8fafc;
    padding:8px 10px;
    border-radius:8px;
    border:1px solid var(--line);
  }
  .p-side b{display:block;font-size:13px;margin-top:2px;}

  .auto-status-bar{padding:8px 10px;gap:6px 10px;font-size:11px;flex-wrap:wrap;}
  .auto-status-bar .as-item{font-size:11px;}
  .auto-status-bar .as-item:nth-child(n+4){display:none;}
  .auto-status-bar .as-num{min-width:22px;height:18px;font-size:10px;padding:0 4px;}
  .auto-status-bar .as-refresh,
  .auto-status-bar .as-notify{
    margin-left:0;
    font-size:11px;
    padding:5px 10px;
    flex:1 1 auto;
  }

  .view-seg{
    display:flex;
    flex-wrap:nowrap;
    overflow-x:auto;
    overflow-y:hidden;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    -ms-overflow-style:none;
    gap:4px;
    padding:4px;
    width:100%;
    max-width:100%;
    border-radius:12px;
  }
  .view-seg::-webkit-scrollbar{display:none;}
  .view-seg button{
    flex:0 0 auto;
    white-space:nowrap;
    padding:8px 14px;
    font-size:12.5px;
    border-radius:8px;
  }

  .mart-seg{
    display:flex;
    flex-wrap:nowrap;
    overflow-x:auto;
    overflow-y:hidden;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    gap:4px;
    padding:4px;
  }
  .mart-seg::-webkit-scrollbar{display:none;}
  .mart-seg button{
    flex:0 0 auto;
    white-space:nowrap;
    padding:8px 14px;
    font-size:12.5px;
  }

  .track-card{
    padding:12px 12px 14px;
    border-radius:14px;
    max-width:100%;
    overflow:visible;
  }
  .track-card::before{border-radius:14px 14px 0 0;height:4px;}

  .track-card.hit::after,
  .track-card.miss::after{
    top:6px;
    right:6px;
    width:26px;height:26px;
    font-size:14px;
    box-shadow:0 2px 8px -2px rgba(0,0,0,.25);
  }
  .track-card.miss::after{font-size:12px;}

  .track-head.track-head-plan{
    flex-wrap:wrap;
    gap:6px;
    padding-top:4px;
    margin-bottom:10px;
  }
  .track-head.track-head-plan .track-plan{
    order:-1;
    flex:1 1 100%;
    text-align:center;
    font-size:12px;
    letter-spacing:1.5px;
    margin-bottom:2px;
  }
  .track-head.track-head-plan .track-plan::before,
  .track-head.track-head-plan .track-plan::after{
    width:12px;
    margin:0 5px;
  }
  .track-head.track-head-plan .track-title{font-size:13px;flex:1 1 auto;}
  .track-head.track-head-plan .track-chase{font-size:11px;padding:2px 8px;flex:0 0 auto;}

  .combo-tip{
    flex-direction:row;
    flex-wrap:wrap;
    gap:4px 12px;
    padding:7px 10px;
    font-size:11px;
    align-items:center;
  }
  .combo-tip .ct-item{font-size:11px;white-space:nowrap;flex:0 0 auto;}

  .combo-grid{grid-template-columns:1fr !important;gap:8px;}
  .combo-block{
    padding:10px 12px;
    max-width:100%;
    min-width:0;
    overflow:hidden;
  }
  .cb-head{font-size:12px;margin-bottom:8px;}
  .cb-icon{font-size:13px;}
  .cb-title{font-size:12px;}
  .cb-count{font-size:10px;padding:1px 6px;}
  .cb-body{
    gap:4px;
    max-height:200px;
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
    padding-right:2px;
  }
  .cb-body::-webkit-scrollbar{width:3px;}
  .cb-body::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px;}

  .num-chip{min-width:26px;height:22px;padding:0 5px;font-size:11px;}
  .zodiac-chip{padding:3px 10px;font-size:11.5px;}
  .color-chip{padding:4px 12px;font-size:12px;}
  .size-chip{min-width:40px;height:24px;padding:0 10px;font-size:13px;letter-spacing:3px;}
  .group-chip{min-width:44px;height:24px;padding:0 10px;font-size:12px;letter-spacing:2px;}
  .combo-num-badge{min-width:34px;height:24px;padding:0 8px;font-size:11px;}

  .combo-result{padding:10px 12px;border-radius:10px;}
  .cr-head{
    font-size:12px;
    flex-direction:column;
    align-items:flex-start;
    gap:6px;
  }
  .cr-status{font-size:10.5px;padding:2px 8px;}
  .cr-draw{flex-wrap:wrap;gap:6px;font-size:11.5px;}
  .cr-dims{gap:4px;}
  .cr-dim{font-size:10px;padding:2px 7px;}

  /* 追投表格 · 手机端与电脑端一致（横向滚动） */
  .mwrap{
    overflow-x:auto;
    overflow-y:hidden;
    -webkit-overflow-scrolling:touch;
    margin-top:4px;
    border-radius:12px;
    border:1px solid var(--line);
    background:#ffffff;
  }
  .mwrap::-webkit-scrollbar{height:6px;}
  .mwrap::-webkit-scrollbar-track{background:#f1f5f9;border-radius:3px;}
  .mwrap::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px;}
  .mwrap::-webkit-scrollbar-thumb:hover{background:#94a3b8;}

  .mtab{
    width:100%;
    min-width:960px !important;
    table-layout:auto;
    display:table;
    border-collapse:collapse;
    font-size:12px;
    background:#ffffff;
  }
  .mtab thead{display:table-header-group;}
  .mtab tbody{display:table-row-group;}
  .mtab tbody tr{display:table-row;}

  .mtab th{
    text-align:right;
    font-size:11px;
    color:var(--muted);
    font-weight:600;
    padding:8px 8px;
    background:var(--card2);
    border-bottom:1px solid var(--line);
    white-space:nowrap;
  }
  .mtab th:first-child{text-align:center;}

  .mtab td{
    display:table-cell;
    padding:8px 8px !important;
    border-bottom:1px solid #f1f5f9 !important;
    font-size:12px !important;
    text-align:right !important;
    white-space:nowrap !important;
    font-variant-numeric:tabular-nums;
    background:#ffffff;
  }
  .mtab td:first-child{
    font-size:12px !important;
    font-weight:800 !important;
    text-align:center !important;
    padding:8px 8px !important;
    border-bottom:1px solid #f1f5f9 !important;
    color:#334155;
    display:table-cell;
    background:#ffffff;
  }
  .mtab td::before{display:none !important;}
  .mtab tr.safe td  {background:#f0fdf4;}
  .mtab tr.risk td  {background:#fff5f6;}
  .mtab tr.nofund td{background:#fef2f2;opacity:.82;}
  .mtab tr:hover td {filter:brightness(.985);}

  .fund-bar{padding:12px 14px;border-radius:12px;margin-top:10px;}
  .fund-bar-title{font-size:12px;margin-bottom:8px;}
  .fund-track{height:22px;}
  .fund-fill{font-size:10.5px;padding-right:8px;}
  .fund-marks{font-size:10px;flex-wrap:wrap;gap:4px;}

  .stat-grid{grid-template-columns:repeat(2,1fr) !important;gap:8px;}
  .stat{padding:10px 12px;border-radius:10px;}
  .sl{font-size:10.5px;}
  .sv{font-size:17px;}
  .sv em{font-size:10px;}
  .ss{font-size:10px;}

  .risk-grid{grid-template-columns:repeat(2,1fr) !important;gap:8px;}
  .risk-card{padding:10px 12px;}
  .risk-card .rc-l{font-size:10.5px;}
  .risk-card .rc-v{font-size:15px;}
  .risk-card .rc-s{font-size:9.5px;}

  .stat-panel{padding:12px 10px;}
  .stat-sync-bar{
    flex-direction:column;
    align-items:flex-start;
    padding:10px 12px;
    gap:6px;
    font-size:11px;
  }
  .stat-sync-bar .ss-item{width:100%;flex-wrap:wrap;font-size:11px;}
  .stat-sync-bar .ss-item b{font-size:11px;word-break:break-all;}
  .stat-seg{
    gap:3px;
    padding:3px;
    width:100%;
    overflow-x:auto;
    flex-wrap:nowrap;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
  }
  .stat-seg::-webkit-scrollbar{display:none;}
  .stat-seg button{
    flex:0 0 auto;
    white-space:nowrap;
    font-size:11px;
    padding:6px 10px;
  }
  .stat-sort-bar{flex-direction:column;align-items:stretch;gap:6px;}
  .stat-sort-bar .sort-label{font-size:11px;}
  .stat-sort-bar .seg{display:flex;width:100%;}
  .stat-sort-bar .seg button{flex:1;font-size:11px;padding:6px 8px;}

  .stat-table-wrap{overflow-x:auto;border-radius:10px;background:#ffffff;}
  .stat-tab{min-width:460px;font-size:11px;background:#ffffff;}
  .stat-tab th,
  .stat-tab td{padding:6px 8px;font-size:11px;background:#ffffff;}
  .stat-tab th{background:var(--card2);}
  .stat-tab th:nth-child(5),
  .stat-tab td:nth-child(5),
  .stat-tab th:nth-child(6),
  .stat-tab td:nth-child(6){display:none;}
  .stat-chip{min-width:34px;height:20px;padding:0 6px;font-size:10.5px;}
  .stat-bar-cell{min-width:80px;gap:5px;}
  .stat-bar-bg{height:7px;}
  .stat-num{font-size:11px;min-width:26px;}
  .stat-num em{font-size:8.5px;}
  .judge-badge{font-size:9.5px;padding:2px 6px;}

  .stat-top-grid{grid-template-columns:repeat(2,1fr);gap:6px;}
  .stat-top-card{padding:8px 10px;}
  .stat-top-value{font-size:17px;}
  .stat-top-sub{font-size:9.5px;line-height:1.3;}

  .picker-panel{padding:12px 10px;}
  .picker-stat-bar{
    padding:8px 10px;
    gap:6px 10px;
    font-size:11px;
    flex-wrap:wrap;
  }
  .picker-stat-bar .ps-item b{font-size:12px;}
  .picker-grid{gap:5px;}
  .picker-zodiac{min-width:52px;padding:6px 4px;}
  .picker-zodiac .pz-name{font-size:12.5px;}
  .picker-zodiac .pz-score{font-size:9.5px;}
  .picker-num{min-width:38px;padding:5px 3px 7px;}
  .picker-num .pn-num{font-size:12px;}
  .picker-num .pn-score{font-size:9px;}

  .picker-summary{padding:10px 12px;}
  .picker-summary-row{font-size:11.5px;flex-wrap:wrap;}
  .picker-summary-label{min-width:48px;font-size:11.5px;}

  .picker-actions button{
    font-size:12px;
    padding:8px 14px;
    flex:1 1 auto;
  }

  .history-panel{padding:12px 10px;}
  .hp-summary{grid-template-columns:repeat(2,1fr);gap:6px;}
  .hp-sum-card{padding:10px 12px;}
  .hp-sum-l{font-size:10.5px;}
  .hp-sum-v{font-size:17px;}
  .hp-type-list{grid-template-columns:1fr;gap:5px;}
  .hp-type-item{padding:8px 10px;font-size:11.5px;}
  .hp-type-name{font-size:11.5px;}
  .hp-list{padding:6px;gap:3px;}
  .hp-item{padding:5px 8px;font-size:10.5px;gap:5px;}
  .hp-period{font-size:10px;min-width:60px;}
  .hp-status{font-size:10px;padding:1px 6px;}

  .odds-config{flex-direction:column;gap:10px;padding:10px 12px;}
  .odds-item{flex-wrap:wrap;width:100%;}
  .odds-item label{font-size:12px;flex:1 1 auto;min-width:100px;}
  .odds-item input[type="number"]{width:100px;max-width:100px;}
  .odds-item .odds-tag{font-size:10.5px;}

  .mart-ctrl{padding:10px;font-size:12px;}
  .mart-ctrl .row{gap:8px;}
  .mart-ctrl .row > label{font-size:11.5px;min-width:auto;}
  .mart-ctrl input[type="number"]{width:70px;}
  .mart-ctrl .seg{flex-wrap:wrap;}
  .mart-ctrl .seg button{font-size:11px;padding:6px 10px;}

  .src-box{padding:10px 12px;}
  .src-head{gap:6px;}
  .src-label{font-size:12px;}
  .src-content{gap:4px;}

  input,
  select,
  textarea{font-size:16px;}
  input[type="number"]{font-size:16px;}
  .vip-code-input{font-size:16px;}

  .fab-top{
    width:44px;height:44px;
    font-size:18px;
    bottom:20px;right:14px;
    box-shadow:0 6px 18px -6px rgba(37,99,235,.5);
  }

  .toast-container{
    top:10px;
    bottom:auto;
    right:10px;
    left:10px;
    flex-direction:column;
    align-items:stretch;
  }
  .toast{min-width:0;max-width:none;padding:10px 14px;font-size:12.5px;}

  .ad-banner{margin-bottom:10px;border-radius:12px;}
  .ad-banner img{border-radius:12px;max-height:120px;object-fit:cover;}
  .ad-banner-text{font-size:13px;padding:0 12px;border-radius:12px;}

  .iframe-wrap{border-radius:12px;margin-bottom:10px;}
  .iframe-wrap iframe{height:168px !important;}

  footer{font-size:11px;padding:16px 0;}
  .app-version{font-size:10px;margin-top:14px;}

  .seg{max-width:100%;box-sizing:border-box;}
  .seg button{font-size:12px;padding:7px 12px;}

  .sv,
  .stat-num,
  .rc-v,
  .stat-top-value,
  .hp-sum-v,
  .p-num{
    word-break:keep-all;
    overflow-wrap:normal;
  }
  .parity-chip{min-width:40px;height:24px;padding:0 10px;font-size:13px;letter-spacing:3px;}
}

/* ============================================================
   26. 超窄屏（≤ 380px）
   ============================================================ */
@media(max-width:380px){
  body{padding:8px 6px 90px;}
  .card{padding:12px 10px;}
  .p-num{font-size:26px;}
  .p-side{grid-template-columns:1fr;}
  .view-seg button,
  .mart-seg button,
  .stat-seg button{font-size:11px;padding:6px 10px;}
  .combo-grid{gap:6px;}
  .combo-block{padding:8px 10px;}
  .cb-title{font-size:11.5px;}
  .num-chip{min-width:24px;height:20px;padding:0 4px;font-size:10.5px;}
  .zodiac-chip{padding:2px 8px;font-size:11px;}
  .stat-grid,
  .risk-grid{grid-template-columns:1fr !important;}
  .stat-top-grid{grid-template-columns:1fr;}
  .picker-zodiac{min-width:46px;padding:4px 3px;}
  .picker-num{min-width:34px;padding:4px 2px 6px;}
  .mtab{min-width:900px !important;}
  .mtab td:first-child{font-size:11.5px !important;}
  .mtab td{font-size:11px !important;}
  .mtab th{font-size:10.5px;padding:6px 6px;}
}

/* ============================================================
   27. 平板（≤ 900px）
   ============================================================ */
@media(max-width:900px){
  .stat-sync-bar{padding:9px 12px;gap:8px 14px;}
  .stat-sync-bar .ss-item{flex:0 1 auto;}
  .stat-top-grid{grid-template-columns:repeat(3,1fr);}
  .stat-top-value{font-size:20px;}
  .stat-top-sub{font-size:10px;}
}

/* ============================================================
   28. 横屏优化
   ============================================================ */
@media(max-width:900px) and (orientation:landscape){
  .wrap{max-width:100%;}
  .combo-grid{grid-template-columns:repeat(2,1fr);}
}

/* ============================================================
   29. 触屏优化
   ============================================================ */
@media (pointer:coarse){
  button:not(.fab-top):not(.as-refresh):not(.as-notify){min-height:42px;}
  .seg button{min-height:38px;}
  .picker-zodiac,
  .picker-num,
  .ce-opt{min-height:42px;}
  .zodiac-chip,
  .num-chip{min-height:28px;}
  input,
  select,
  textarea{padding-top:10px;padding-bottom:10px;font-size:16px;}
  .seg button{padding:8px 14px;}
  .stat-seg button{padding:7px 11px;}
  .stat-sort-bar .seg button{padding:7px 11px;}
  .track-card:hover{transform:none;box-shadow:inherit;}
}

/* ============================================================
   30. 减少动效（无障碍）
   ============================================================ */
@media (prefers-reduced-motion: reduce){
  *,
  *::before,
  *::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
}

/* ============================================================
   31. 本期推荐 · 追投模式（.combo-card）白底皮肤
   ============================================================ */

/* ---------- 31.1 大卡片主背景 ---------- */
.combo-card{
  background:#ffffff !important;
  border-color:#e5e9f0 !important;
  border-width:1px !important;
  color:#0f172a !important;
  box-shadow:0 12px 34px -28px rgba(15,23,42,.5) !important;
}
.combo-card.hit{
  background:linear-gradient(135deg,#f0fdf4 0%,#dcfce7 100%) !important;
  border-color:#86efac !important;
  border-width:2px !important;
}
.combo-card.miss{
  background:linear-gradient(135deg,#fff1f2 0%,#fee2e2 100%) !important;
  border-color:#fecaca !important;
  border-width:2px !important;
}

/* ---------- 31.2 卡头 ---------- */
.combo-card .track-head .track-title{color:#0f172a !important;}
.combo-card .track-chase{
  background:#eff6ff !important;
  color:#1d4ed8 !important;
  border:none !important;
}
.combo-card .track-chase.chasing{background:#fef3c7 !important;color:#92400e !important;}
.combo-card .track-chase.hit{background:#dcfce7 !important;color:#166534 !important;}
.combo-card .track-chase.miss{background:#fee2e2 !important;color:#991b1b !important;}
.combo-card.hit .track-chase.hit{background:#16a34a !important;color:#fff !important;}
.combo-card.miss .track-chase.miss{background:#e11d48 !important;color:#fff !important;}
.combo-card .track-plan{color:#7c3aed !important;}
.combo-card .track-plan::before{background:linear-gradient(90deg,transparent,#c4b5fd) !important;}
.combo-card .track-plan::after{background:linear-gradient(90deg,#c4b5fd,transparent) !important;}

/* ---------- 31.3 combo-tip ---------- */
.combo-card .combo-tip{
  background:#eff6ff !important;
  border-color:#bfdbfe !important;
  color:#1e40af !important;
}
.combo-card .combo-tip .ct-item{color:#1e40af !important;}

/* ---------- 31.4 combo-result ---------- */
.combo-card .combo-result{
  background:#f8fafc !important;
  border-color:#e5e9f0 !important;
}
.combo-card .cr-head{color:#334155 !important;}
.combo-card .cr-label{color:#475569 !important;}
.combo-card .cr-zodiac{background:#fef3c7 !important;color:#78350f !important;}

/* ---------- 31.5 命中 / 未中状态内部 ---------- */
.combo-card.hit .track-title{color:#166534 !important;}
.combo-card.miss .track-title{color:#991b1b !important;}
.combo-card.hit .combo-tip{background:#dcfce7 !important;border-color:#86efac !important;color:#166534 !important;}
.combo-card.miss .combo-tip{background:#fee2e2 !important;border-color:#fecaca !important;color:#991b1b !important;}
.combo-card.hit .combo-tip .ct-item{color:#166534 !important;}
.combo-card.miss .combo-tip .ct-item{color:#991b1b !important;}
.combo-card.hit .combo-result{background:#dcfce7 !important;border-color:#86efac !important;}
.combo-card.miss .combo-result{background:#fee2e2 !important;border-color:#fecaca !important;}
.combo-card.hit .cr-head,
.combo-card.hit .cr-label{color:#166534 !important;}
.combo-card.miss .cr-head,
.combo-card.miss .cr-label{color:#991b1b !important;}

/* ---------- 31.6 combo-block 6 色（浅色版） ---------- */

/* 1. 生肖推荐 → 红（浅） */
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(1){
  background:linear-gradient(135deg,#EE4A3F 0%,#EE4A3F 100%) !important;
  border-color:#EE4A3F !important;
  box-shadow:0 4px 14px -12px rgba(99,102,241,.4) !important;
}
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(1) .cb-head{border-bottom-color:#eef2f700 !important;}
/* ★ P1-11-11：红底改白字提高对比度 */
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(1) .cb-title{color:#ffffff !important;}
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(1) .cb-count{background:#c7d2fe !important;color:#312e81 !important;}

/* 2. 号码推荐 → 蓝（浅） */
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(2){
  background:linear-gradient(135deg,#3F93E3 0%,#3F93E3 100%) !important;
  border-color:#3F93E3 !important;
  box-shadow:0 4px 14px -12px rgba(20,184,166,.4) !important;
}
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(2) .cb-head{border-bottom-color:#eef2f700 !important;}
/* ★ P1-11-11：蓝底改白字 */
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(2) .cb-title{color:#ffffff !important;}
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(2) .cb-count{background:#99f6e4 !important;color:#134e4a !important;}

/* 3. 波色推荐 → 绿（浅） */
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(3){
  background:linear-gradient(135deg,#1FB11D 0%,#1FB11D 100%) !important;
  border-color:#1FB11D !important;
  box-shadow:0 4px 14px -12px rgba(236,72,153,.4) !important;
}
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(3) .cb-head{border-bottom-color:#eef2f700 !important;}
/* ★ P1-11-11：绿底改白字 */
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(3) .cb-title{color:#ffffff !important;}
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(3) .cb-count{background:#fbcfe8 !important;color:#831843 !important;}

/* 4. 大小 / 单双 → 琥珀（浅） */
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(4){
  background:linear-gradient(135deg,#fffbeb 0%,#fef3c7 100%) !important;
  border-color:#fcd34d !important;
  box-shadow:0 4px 14px -12px rgba(245,158,11,.4) !important;
}
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(4) .cb-head{border-bottom-color:#eef2f700 !important;}
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(4) .cb-title{color:#92400e !important;}
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(4) .cb-count{background:#fde68a !important;color:#78350f !important;}

/* 5. 头尾推荐 → 紫色（浅） */
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(5){
  background:linear-gradient(135deg,#f5f3ff 0%,#ede9fe 100%) !important;
  border-color:#c4b5fd !important;
  box-shadow:0 4px 14px -12px rgba(167,139,250,.4) !important;
}
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(5) .cb-head{border-bottom-color:#eef2f700 !important;}
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(5) .cb-title{color:#5b21b6 !important;}
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(5) .cb-count{background:#ddd6fe !important;color:#4c1d95 !important;}

/* 6. 家野 → 青（浅） */
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(6){
  background:linear-gradient(135deg,#ecfeff 0%,#cffafe 100%) !important;
  border-color:#67e8f9 !important;
  box-shadow:0 4px 14px -12px rgba(6,182,212,.4) !important;
}
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(6) .cb-head{border-bottom-color:#eef2f700 !important;}
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(6) .cb-title{color:#155e75 !important;}
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:nth-child(6) .cb-count{background:#a5f3fc !important;color:#164e63 !important;}

/* ============================================================
   31.6b 波色模式卡片：按波色着色
   ============================================================ */

/* --- 红波 --- */
.combo-card[data-type="color1"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="red"],
.combo-card[data-type="color2"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="red"]{
  background:linear-gradient(135deg,#e11d48 0%,#e11d48 100%) !important;
  border-color:#e11d48 !important;
  box-shadow:0 4px 14px -12px rgba(225,29,72,.55) !important;
}
.combo-card[data-type="color1"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="red"] .cb-head,
.combo-card[data-type="color2"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="red"] .cb-head{
  border-bottom-color:rgba(255,255,255,.25) !important;
}
.combo-card[data-type="color1"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="red"] .cb-title,
.combo-card[data-type="color2"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="red"] .cb-title{
  color:#ffffff !important;
}

/* --- 蓝波 --- */
.combo-card[data-type="color1"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="blue"],
.combo-card[data-type="color2"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="blue"]{
  background:linear-gradient(135deg,#2563eb 0%,#2563eb 100%) !important;
  border-color:#2563eb !important;
  box-shadow:0 4px 14px -12px rgba(37,99,235,.55) !important;
}
.combo-card[data-type="color1"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="blue"] .cb-head,
.combo-card[data-type="color2"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="blue"] .cb-head{
  border-bottom-color:rgba(255,255,255,.25) !important;
}
.combo-card[data-type="color1"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="blue"] .cb-title,
.combo-card[data-type="color2"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="blue"] .cb-title{
  color:#ffffff !important;
}

/* --- 绿波 --- */
.combo-card[data-type="color1"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="green"],
.combo-card[data-type="color2"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="green"]{
  background:linear-gradient(135deg,#16a34a 0%,#16a34a 100%) !important;
  border-color:#16a34a !important;
  box-shadow:0 4px 14px -12px rgba(22,163,74,.55) !important;
}
.combo-card[data-type="color1"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="green"] .cb-head,
.combo-card[data-type="color2"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="green"] .cb-head{
  border-bottom-color:rgba(255,255,255,.25) !important;
}
.combo-card[data-type="color1"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="green"] .cb-title,
.combo-card[data-type="color2"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="green"] .cb-title{
  color:#ffffff !important;
}

/* 空状态：无波色时保持原中性色 */
.combo-card[data-type="color1"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="none"],
.combo-card[data-type="color2"]:not(.hit):not(.miss) .combo-grid > .combo-block[data-wave="none"]{
  background:#fff !important;
  border-color:#e5e9f0 !important;
  box-shadow:none !important;
}

/* hover 保持各自色系 */
.combo-card:not(.hit):not(.miss) .combo-grid > .combo-block:hover{
  filter:brightness(1.02);
}

/* 命中 / 未中状态下 combo-block 走状态色 */
.combo-card.hit .combo-block{background:#dcfce7 !important;border-color:#86efac !important;}
.combo-card.miss .combo-block{background:#fee2e2 !important;border-color:#fecaca !important;}
.combo-card.hit .cb-title{color:#166534 !important;}
.combo-card.miss .cb-title{color:#991b1b !important;}
.combo-card.hit .cb-head{border-bottom-color:#86efac !important;}
.combo-card.miss .cb-head{border-bottom-color:#fecaca !important;}
.combo-card.hit .cb-count{background:#bbf7d0 !important;color:#14532d !important;}
.combo-card.miss .cb-count{background:#fecaca !important;color:#7f1d1d !important;}

/* ---------- 31.7 卡内统计卡 ---------- */
.combo-card .stat{
  background:#f8fafc !important;
  border-color:#e5e9f0 !important;
}
.combo-card .stat.hl{
  background:#eff6ff !important;
  border-color:#bfdbfe !important;
}
.combo-card .stat .sl{color:#475569 !important;}
.combo-card .stat .sv{color:#0f172a !important;}
.combo-card .stat .sv em{color:#64748b !important;}
.combo-card .stat .ss{color:#64748b !important;}
.combo-card .stat .sv.green{color:#16a34a !important;}
.combo-card .stat .sv.red{color:#dc2626 !important;}
.combo-card .stat .sv.gold{color:#d97706 !important;}
.combo-card .stat .sv.purple{color:#7c3aed !important;}

/* ---------- 31.8 卡内资金轨迹 ---------- */
.combo-card .fund-bar{
  background:linear-gradient(135deg,#f0f9ff,#eff6ff) !important;
  border-color:#bae6fd !important;
}
.combo-card .fund-bar-title{color:#075985 !important;}
.combo-card .fund-track{background:#e0f2fe !important;}
.combo-card .fund-marks{color:#0369a1 !important;}

/* ---------- 31.9 卡内风险卡 ---------- */
.combo-card .risk-card{
  background:#ffffff !important;
  border-color:#e5e9f0 !important;
}
.combo-card .risk-card .rc-l{color:#64748b !important;}
.combo-card .risk-card .rc-v{color:#0f172a !important;}
.combo-card .risk-card .rc-s{color:#64748b !important;}
.combo-card .risk-card.pos .rc-v{color:#16a34a !important;}
.combo-card .risk-card.neg .rc-v{color:#dc2626 !important;}
.combo-card .risk-card.warn-c .rc-v{color:#d97706 !important;}
.combo-card .risk-card.purple .rc-v{color:#7c3aed !important;}

/* ---------- 31.10 卡内提示框 ---------- */
.combo-card .warn.ok{background:#f0fdf4 !important;border-color:#bbf7d0 !important;color:#166534 !important;}
.combo-card .warn.bad{background:#fff1f2 !important;border-color:#fecdd3 !important;color:#9f1239 !important;}
.combo-card .warn.info{background:#eff6ff !important;border-color:#bfdbfe !important;color:#1e40af !important;}
.combo-card .warn.gold{background:#fffbeb !important;border-color:#fde68a !important;color:#92400e !important;}

/* ---------- 31.11 track-content ---------- */
.combo-card .track-content{
  background:#f8fafc !important;
  border-color:#eef2f7 !important;
}

/* ---------- 31.12 卡内历史记录 ---------- */
.combo-card .track-history-head{color:#94a3b8 !important;}
.combo-card .track-history-head .hist-title{color:#475569 !important;}
.combo-card .hist-item.hit{background:#f0fdf4 !important;border-color:#bbf7d0 !important;color:#166534 !important;}
.combo-card .hist-item.miss{background:#fff1f2 !important;border-color:#fecdd3 !important;color:#991b1b !important;}
.combo-card .hist-item .hist-gen{background:rgba(37,99,235,.08) !important;color:#1d4ed8 !important;}
.combo-card .hist-item.miss .hist-gen{background:rgba(225,29,72,.08) !important;color:#9f1239 !important;}
.combo-card .track-lastdraw,
.combo-card .track-special-zodiac{border-color:#eef2f7 !important;color:#64748b !important;}
.combo-card .track-special-zodiac .tsz-label{color:#475569 !important;}

/* ---------- 31.13 src-box / odds-config / mart-ctrl ---------- */
.combo-card .src-box{
  background:#fbfcfe !important;
  border-color:#e5e9f0 !important;
}
.combo-card .src-label{color:#475569 !important;}
.combo-card .src-label b{color:#1e293b !important;}

.combo-card .odds-config,
.combo-card .mart-ctrl{
  background:#f8fafc !important;
  border-color:#e5e9f0 !important;
}
.combo-card .odds-item label{color:#475569 !important;}
.combo-card .odds-item .odds-tag{color:#94a3b8 !important;}

/* ---------- 31.14 圆点恢复浅底配色 ---------- */
.combo-card .dot.g{background:#16a34a !important;box-shadow:none !important;}
.combo-card .dot.r{background:#dc2626 !important;box-shadow:none !important;}
.combo-card .dot.y{background:#d97706 !important;box-shadow:none !important;}
.combo-card .dot.p{background:#9333ea !important;box-shadow:none !important;}

/* ============================================================
   31.15 卡片内表格：白底 + 行 3n 循环 红/蓝/绿
   ============================================================ */

/* 表格外壳 & 表头：白底 */
.combo-card .mwrap{
  background:#ffffff !important;
  border-color:#e5e9f0 !important;
}
.combo-card .mwrap::-webkit-scrollbar-track{background:#f1f5f9;}
.combo-card .mwrap::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px;}
.combo-card .mwrap::-webkit-scrollbar-thumb:hover{background:#94a3b8;}

.combo-card .mtab{background:#ffffff !important;}
.combo-card .mtab th{
  background:#f8fafc !important;
  color:#475569 !important;
  font-weight:700 !important;
  border-bottom:1px solid #e5e9f0 !important;
}
.combo-card .mtab td{
  background:#ffffff !important;
  border-bottom:1px solid #e5e9f0 !important;
  color:#1e293b !important;
}
.combo-card .mtab td:first-child{
  background:#ffffff !important;
  color:#0f172a !important;
  font-weight:900 !important;
}

/* 3 行循环上色（覆盖所有状态、透明背景、单元格专属背景） */
.combo-card .mtab tbody tr:nth-child(3n+1) td,
.combo-card .mtab tbody tr:nth-child(3n+1) td.cum,
.combo-card .mtab tbody tr:nth-child(3n+1) td.dbl,
.combo-card .mtab tbody tr:nth-child(3n+1) td.fund,
.combo-card .mtab tbody tr:nth-child(3n+1) td.fund-over,
.combo-card .mtab tbody tr:nth-child(3n+1) td.per-single-net{
  background:#fee2e2 !important;
  border-bottom:1px solid #fecaca !important;
}
.combo-card .mtab tbody tr:nth-child(3n+2) td,
.combo-card .mtab tbody tr:nth-child(3n+2) td.cum,
.combo-card .mtab tbody tr:nth-child(3n+2) td.dbl,
.combo-card .mtab tbody tr:nth-child(3n+2) td.fund,
.combo-card .mtab tbody tr:nth-child(3n+2) td.fund-over,
.combo-card .mtab tbody tr:nth-child(3n+2) td.per-single-net{
  background:#dbeafe !important;
  border-bottom:1px solid #bfdbfe !important;
}
.combo-card .mtab tbody tr:nth-child(3n) td,
.combo-card .mtab tbody tr:nth-child(3n) td.cum,
.combo-card .mtab tbody tr:nth-child(3n) td.dbl,
.combo-card .mtab tbody tr:nth-child(3n) td.fund,
.combo-card .mtab tbody tr:nth-child(3n) td.fund-over,
.combo-card .mtab tbody tr:nth-child(3n) td.per-single-net{
  background:#dcfce7 !important;
  border-bottom:1px solid #bbf7d0 !important;
}

/* 首列同步上色 */
.combo-card .mtab tbody tr:nth-child(3n+1) td:first-child{background:#fecaca !important;color:#991b1b !important;}
.combo-card .mtab tbody tr:nth-child(3n+2) td:first-child{background:#bfdbfe !important;color:#1e40af !important;}
.combo-card .mtab tbody tr:nth-child(3n)   td:first-child{background:#bbf7d0 !important;color:#166534 !important;}

/* 单元格内文字 / 数值颜色（浅底用深字） */
.combo-card .mtab .net-pos{color:#16a34a !important;}
.combo-card .mtab .net-neg{color:#dc2626 !important;}
.combo-card .mtab .cum{color:#334155 !important;}
.combo-card .mtab .ret{color:#7c3aed !important;}
.combo-card .mtab .be{color:#d97706 !important;}
.combo-card .mtab .dbl{color:#9333ea !important;}
.combo-card .mtab .fund{color:#0369a1 !important;}
.combo-card .mtab .fund-over{color:#dc2626 !important;}
.combo-card .mtab .per-single-net{color:#16a34a !important;}

/* 手机端 hover 无效，锁定 hover 不影响配色 */
.combo-card .mtab tr:hover td{filter:none !important;}

/* ============================================================
   32. 开奖号命中号码高亮
   ============================================================ */
.dn[style*="box-shadow:0 0 0 2px #16a34a"]{
  background:linear-gradient(135deg,#fef08a 0%,#fde047 100%) !important;
  color:#422006 !important;
  border-color:#ca8a04 !important;
  box-shadow:
    0 0 0 2px #16a34a,
    0 0 0 4px rgba(22,163,74,.35),
    0 2px 8px -2px rgba(22,163,74,.6) !important;
  font-weight:900 !important;
  position:relative;
  z-index:1;
}

/* 手机端边框略收紧，避免超出 */
@media (max-width:640px){
  .dn[style*="box-shadow:0 0 0 2px #16a34a"]{
    box-shadow:
      0 0 0 2px #16a34a,
      0 0 0 3px rgba(22,163,74,.35) !important;
  }
}

/* 特码标记与高亮共存：小"特"徽章上移，避免遮挡 */
.dn.sp[style*="box-shadow:0 0 0 2px #16a34a"]::after{
  top:-9px !important;
  right:-5px !important;
}

/* ============================================================
   33. 手机端 combo-tip 状态行与电脑端一致（单行横向排列）
   ============================================================ */
@media (max-width:640px){
  .combo-card .combo-tip,
  .combo-tip{
    flex-direction:row !important;
    flex-wrap:wrap !important;
    gap:4px 12px !important;
    padding:7px 10px !important;
    align-items:center !important;
    font-size:11px !important;
  }
  .combo-card .combo-tip .ct-item,
  .combo-tip .ct-item{
    font-size:11px !important;
    white-space:nowrap !important;
    flex:0 0 auto !important;
  }
}

/* 超窄屏（≤380px）：进一步收紧，尽量保持一行 */
@media (max-width:380px){
  .combo-card .combo-tip,
  .combo-tip{
    gap:3px 8px !important;
    padding:6px 8px !important;
  }
  .combo-card .combo-tip .ct-item,
  .combo-tip .ct-item{
    font-size:10.5px !important;
  }
}

/* ============================================================
   33b. combo-card 顶部色条 + 命中角标识：按状态三色
   ============================================================ */

/* ---------- 33b.1 顶部色条 ---------- */
.combo-card::before,
.track-card[data-type="combo"]::before{
  background:linear-gradient(90deg,#94a3b8,#cbd5e1) !important;
  box-shadow:0 0 10px -4px rgba(100,116,139,.45) !important;
}
.combo-card.hit::before{
  background:linear-gradient(90deg,#16a34a,#22c55e) !important;
  box-shadow:0 0 14px -3px rgba(22,163,74,.6) !important;
}
.combo-card.miss::before{
  background:linear-gradient(90deg,#e11d48,#f43f5e) !important;
  box-shadow:0 0 14px -3px rgba(225,29,72,.6) !important;
}

/* ---------- 33b.2 命中角标识 ---------- */
.combo-card:not(.hit):not(.miss)::after{
  content:"⏳";
  position:absolute;
  top:-10px;
  right:-10px;
  width:34px;
  height:34px;
  border-radius:50%;
  background:linear-gradient(135deg,#94a3b8,#cbd5e1);
  color:#fff;
  font-size:16px;
  font-weight:900;
  display:flex;
  align-items:center;
  justify-content:center;
  box-shadow:0 4px 12px -4px rgba(100,116,139,.65), 0 0 0 3px #fff;
  animation:stampIn .3s cubic-bezier(.34,1.56,.64,1);
  z-index:3;
}
.combo-card.hit::after{
  background:linear-gradient(135deg,#16a34a,#22c55e);
  box-shadow:0 4px 12px -4px rgba(22,163,74,.65), 0 0 0 3px #fff;
}
.combo-card.miss::after{
  background:linear-gradient(135deg,#e11d48,#f43f5e);
  box-shadow:0 4px 12px -4px rgba(225,29,72,.65), 0 0 0 3px #fff;
}

/* ---------- 33b.3 手机端位置收紧 ---------- */
@media (max-width:640px){
  .combo-card:not(.hit):not(.miss)::after{
    top:6px;
    right:6px;
    width:26px;
    height:26px;
    font-size:13px;
    box-shadow:0 2px 8px -2px rgba(100,116,139,.4);
  }
}

/* ============================================================
   34. VIP 块级遮罩（卡片内单块替换）
   ============================================================ */
.vip-block-lock{
  position:relative;
  background:linear-gradient(135deg,#f8fafc 0%,#eff6ff 100%) !important;
  border-color:#cbd5e1 !important;
  border-style:dashed !important;
}
.vip-block-lock .cb-head{
  border-bottom-color:#e2e8f0 !important;
}
.vip-block-lock .cb-title{
  color:#64748b !important;
}
.vip-block-lock-body{
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:64px;
}
.vip-block-lock-inner{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:4px;
  width:100%;
  padding:6px 0;
}
.vip-block-lock-icon{font-size:22px;line-height:1;}
.vip-block-lock-text{
  font-size:11.5px;
  color:#94a3b8;
  font-weight:700;
  letter-spacing:.5px;
}
.vip-block-lock-btn{
  margin-top:2px;
  padding:4px 16px;
  border-radius:7px;
  background:linear-gradient(135deg,#2563eb,#7c3aed);
  color:#fff;
  font-size:11.5px;
  font-weight:800;
  border:none;
  cursor:pointer;
  box-shadow:0 4px 10px -6px #2563eb;
  transition:.15s;
}
.vip-block-lock-btn:hover{filter:brightness(1.08);}

/* 迷你锁（半块内联） */
.vip-mini-lock{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:4px;
  padding:4px 12px;
  border-radius:7px;
  background:#f1f5f9;
  color:#64748b;
  border:1px dashed #cbd5e1;
  font-size:11.5px;
  font-weight:800;
  letter-spacing:.3px;
  cursor:pointer;
  transition:.15s;
}
.vip-mini-lock:hover{
  background:#e2e8f0;
  color:#334155;
}

/* 手机端微调 */
@media(max-width:640px){
  .vip-block-lock-icon{font-size:20px;}
  .vip-block-lock-text{font-size:11px;}
  .vip-block-lock-btn{padding:3px 12px;font-size:11px;}
  .vip-mini-lock{font-size:11px;padding:3px 10px;}
}

/* ============================================================
   35. 顶部 3×4 文字广告网格
   ============================================================ */
.ad-grid{
  display:grid;
  grid-template-columns:repeat(4, 1fr);
  gap:8px;
  width:100%;
  max-width:1140px;
  margin:0 auto 14px;
  box-sizing:border-box;
}
.ad-grid-item{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:10px 8px;
  border-radius:10px;
  font-size:13px;
  font-weight:800;
  letter-spacing:.5px;
  text-decoration:none;
  text-align:center;
  line-height:1.3;
  word-break:break-word;
  overflow:hidden;
  transition:transform .15s, filter .15s, box-shadow .15s;
  box-shadow:0 4px 12px -8px rgba(15,23,42,.35);
  cursor:pointer;
}
a.ad-grid-item:hover,
a.ad-grid-item:focus-visible{
  transform:translateY(-2px);
  filter:brightness(1.08);
  box-shadow:0 10px 22px -12px rgba(15,23,42,.55);
  outline:none;
}
a.ad-grid-item:active{
  transform:translateY(0);
}

/* 手机端微调 */
@media(max-width:640px){
  .ad-grid{
    gap:5px;
    margin-bottom:10px;
  }
  .ad-grid-item{
    padding:7px 3px;
    font-size:11px;
    letter-spacing:0;
    border-radius:8px;
    box-shadow:0 2px 8px -6px rgba(15,23,42,.35);
  }
}

/* 超窄屏（≤380px）进一步缩紧 */
@media(max-width:380px){
  .ad-grid-item{
    padding:6px 2px;
    font-size:10.5px;
    min-height:38px !important;
  }
}

/* ============================================================
   36. 顶部开奖栏 · 号码排版优化
   ============================================================ */
.auto-status-bar .as-nums{
  display:inline-flex;
  flex-wrap:wrap;
  gap:4px;
  align-items:center;
  vertical-align:middle;
  max-width:100%;
}

.auto-status-bar .as-num{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:26px;
  height:22px;
  padding:0 6px;
  border-radius:6px;
  font-size:12px;
  font-weight:800;
  font-variant-numeric:tabular-nums;
  letter-spacing:.3px;
  border:1px solid;
  position:relative;
  background:#fff;
  transition:transform .12s;
}
.auto-status-bar .as-num:hover{
  transform:translateY(-1px);
}

/* 特码（sp）小徽章 */
.auto-status-bar .as-num.sp{
  box-shadow:0 0 0 2px #fbbf24, 0 0 0 4px rgba(251,191,36,.18);
  font-weight:900;
}
.auto-status-bar .as-num.sp::after{
  content:"特";
  position:absolute;
  top:-7px;
  right:-4px;
  font-size:9px;
  font-weight:900;
  background:#fbbf24;
  color:#78350f;
  padding:0 4px;
  border-radius:4px;
  line-height:1.3;
  letter-spacing:0;
  border:1px solid #fff;
}

/* 手机端更紧凑 */
@media(max-width:640px){
  .auto-status-bar .as-num{
    min-width:22px;
    height:19px;
    padding:0 4px;
    font-size:10.5px;
    border-radius:5px;
  }
  .auto-status-bar .as-num.sp::after{
    top:-6px;
    right:-3px;
    font-size:8px;
    padding:0 3px;
  }
  .auto-status-bar .as-nums{
    gap:3px;
  }
}

/* 超窄屏 */
@media(max-width:380px){
  .auto-status-bar .as-num{
    min-width:20px;
    height:18px;
    padding:0 3px;
    font-size:10px;
  }
}

/* ============================================================
   37. 追投方案 · 追投进度样式（动态 · 带 hover 详情）
   ============================================================ */
.combo-tip .ct-item.ct-progress{
  cursor:help;
  padding:1px 8px;
  border-radius:5px;
  background:rgba(37,99,235,.1);
  color:#1d4ed8;
  font-weight:800;
  border:1px dashed rgba(37,99,235,.35);
  transition:.15s;
}
.combo-tip .ct-item.ct-progress:hover{
  background:rgba(37,99,235,.18);
  border-style:solid;
}
.combo-tip .ct-item.ct-progress.hit{
  background:rgba(22,163,74,.12);
  color:#166534;
  border-color:rgba(22,163,74,.4);
}
.combo-tip .ct-item.ct-progress.hit:hover{
  background:rgba(22,163,74,.2);
}
.combo-tip .ct-item.ct-progress.over{
  background:rgba(217,119,6,.12);
  color:#92400e;
  border-color:rgba(217,119,6,.4);
}
.combo-tip .ct-item.ct-progress.over:hover{
  background:rgba(217,119,6,.2);
}

@media(max-width:640px){
  .combo-tip .ct-item.ct-progress{
    font-size:10.5px;
    padding:1px 6px;
  }
}

/* ============================================================
   38. 追投状态感知 / 数据质量 / 冷热标签
   ============================================================ */

/* 追投告警徽章 */
.chase-alert-row{
  display:flex;
  align-items:center;
  gap:8px;
  margin:6px 0 10px;
  flex-wrap:wrap;
}
.chase-alert{
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding:3px 10px;
  border-radius:7px;
  font-size:11.5px;
  font-weight:800;
  letter-spacing:.3px;
  border:1px solid;
}
.chase-alert.warn{
  background:#fef3c7;
  color:#92400e;
  border-color:#fde68a;
}
.chase-alert.danger{
  background:#fee2e2;
  color:#991b1b;
  border-color:#fecaca;
  animation:pulse 1.6s infinite;
}
@keyframes pulse{
  0%, 100%{ opacity:1; }
  50%{ opacity:.55; }
}

/* 最近 N 期迷你时间线 */
.combo-timeline-row{
  margin:4px 0 10px;
  font-size:11px;
}
.recent-timeline{
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding:3px 10px;
  background:#f8fafc;
  border:1px solid #e5e9f0;
  border-radius:7px;
  cursor:help;
}
.recent-timeline .rt-label{
  font-size:10.5px;
  color:#94a3b8;
  font-weight:700;
  margin-right:4px;
}
.recent-timeline .rt-item{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:18px;
  height:18px;
  border-radius:5px;
  font-size:11px;
  font-weight:900;
  line-height:1;
}
.recent-timeline .rt-item.hit{
  background:#dcfce7;
  color:#166534;
  border:1px solid #bbf7d0;
}
.recent-timeline .rt-item.miss{
  background:#fee2e2;
  color:#991b1b;
  border:1px solid #fecaca;
}

/* 数据质量提示条 */
.quality-hint{
  display:inline-flex;
  align-items:center;
  gap:6px;
  margin:6px 0 10px;
  padding:5px 12px;
  border-radius:8px;
  font-size:11.5px;
  font-weight:700;
  background:#eff6ff;
  color:#1d4ed8;
  border:1px solid #bfdbfe;
}
.quality-hint.warn{
  background:#fef3c7;
  color:#92400e;
  border-color:#fde68a;
}

/* 追投卡片内的进度提示（兼容旧样式） */
.ct-progress{
  cursor:help;
  padding:1px 8px;
  border-radius:5px;
  background:rgba(37,99,235,.1);
  color:#1d4ed8;
  font-weight:800;
  border:1px dashed rgba(37,99,235,.35);
  transition:.15s;
}
.ct-progress:hover{
  background:rgba(37,99,235,.18);
  border-style:solid;
}
.ct-progress.hit{
  background:rgba(22,163,74,.12);
  color:#166534;
  border-color:rgba(22,163,74,.4);
}
.ct-progress.over{
  background:rgba(217,119,6,.12);
  color:#92400e;
  border-color:rgba(217,119,6,.4);
}

/* 手机端微调 */
@media(max-width:640px){
  .chase-alert{ font-size:10.5px; padding:2px 8px; }
  .recent-timeline{ padding:2px 8px; }
  .recent-timeline .rt-item{ min-width:16px; height:16px; font-size:10px; }
  .quality-hint{ font-size:10.5px; padding:4px 10px; }
}

/* ============================================================
   39. ★ 历史记录 v2（本期推荐 · 追投模式）
   --------------------------------------------------------
   功能：
     ① 命中维度徽章       ② 追投期数标签       ③ 距离命中提示
     ④ 分维度筛选         ⑤ 命中率趋势可视化   ⑥ 最长连中/连错
     ⑦ 命中位置分布       ⑧ 展开/分页          ⑨ 命中号码高亮
     ⑩ 重置周期标记       ⑪ 同期去重           ⑫ 时段/星期
     ⑬ Tooltip 增强       ⑭ 手机端布局         ⑮ 单卡 CSV 导出
     ⑯ 复制功能           ⑰ 时间段对比         ⑱ 长列表性能
     ⑲ 暂停标记           ⑳ 批量清理
   ============================================================ */

.track-history-v2{
  margin-top:10px;
  padding-top:10px;
  border-top:1px dashed #eef2f7;
}

/* ---------- 39.1 头部操作栏 ---------- */
.th-head-row{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:8px;
  margin-bottom:6px;
  flex-wrap:wrap;
}
.th-title{
  font-size:11.5px;
  font-weight:800;
  color:#475569;
  letter-spacing:.3px;
  display:inline-flex;
  align-items:center;
  gap:6px;
}
.th-dedupe-tag{
  font-size:9.5px;
  font-weight:800;
  padding:1px 6px;
  border-radius:4px;
  background:#ede9fe;
  color:#6b21a8;
  letter-spacing:0;
}
.th-actions{display:inline-flex;gap:4px;align-items:center;}
.th-btn{
  font-size:11px;
  padding:2px 7px;
  border-radius:5px;
  background:#f1f5f9;
  border:1px solid #e2e8f0;
  color:#475569;
  cursor:pointer;
  line-height:1.4;
  transition:.15s;
}
.th-btn:hover{background:#e2e8f0;color:#1e293b;}
.th-btn.on{background:#dbeafe;border-color:#93c5fd;color:#1d4ed8;}
.th-btn.danger:hover{background:#fee2e2;border-color:#fecaca;color:#dc2626;}

/* ---------- 39.2 统计条 ---------- */
.th-stats{
  display:flex;
  flex-wrap:wrap;
  gap:5px;
  margin:6px 0;
  font-size:10.5px;
}
.th-stat{
  display:inline-flex;
  align-items:center;
  padding:2px 8px;
  border-radius:5px;
  font-weight:700;
  letter-spacing:.2px;
}
.th-stat.hit{background:#dcfce7;color:#166534;}
.th-stat.miss{background:#fee2e2;color:#991b1b;}
.th-stat.rate{background:#dbeafe;color:#1e40af;}
.th-stat.streak{background:#ede9fe;color:#6b21a8;}
.th-stat.life{background:#f0fdf4;color:#166534;}
.th-stat.paused{background:#fef3c7;color:#92400e;}

/* ---------- 39.3 命中率趋势迷你时间轴 ---------- */
.th-trend{
  display:flex;
  flex-wrap:wrap;
  gap:2px;
  padding:4px 0;
  margin:4px 0 6px;
  max-height:44px;
  overflow:hidden;
}
.th-trend-item{
  width:10px;
  height:14px;
  border-radius:2px;
  flex:none;
  transition:transform .1s;
}
.th-trend-item.hit{background:linear-gradient(180deg,#22c55e,#16a34a);}
.th-trend-item.miss{background:linear-gradient(180deg,#f43f5e,#e11d48);}
.th-trend-item:hover{transform:scaleY(1.25);}

/* ---------- 39.4 命中位置分布 ---------- */
.th-posdist{
  display:flex;
  flex-wrap:wrap;
  gap:5px;
  margin:4px 0 8px;
  font-size:10.5px;
  align-items:center;
}
.th-posdist-label{
  font-weight:800;
  color:#475569;
  letter-spacing:.2px;
}
.th-posdist-item{
  display:inline-flex;
  align-items:center;
  gap:3px;
  padding:2px 8px;
  border-radius:5px;
  background:#eff6ff;
  color:#1d4ed8;
  font-weight:700;
  border:1px solid #bfdbfe;
}
.th-posdist-item b{color:#7c3aed;font-weight:900;}

/* ---------- 39.5 筛选栏 ---------- */
.th-filters{
  display:flex;
  flex-wrap:wrap;
  gap:4px;
  margin:6px 0;
  padding:6px 8px;
  background:#f8fafc;
  border:1px solid #eef2f7;
  border-radius:8px;
  align-items:center;
}
.th-filter-label{
  font-size:10.5px;
  color:#64748b;
  font-weight:800;
  margin-right:2px;
}
.th-filter-sep{color:#cbd5e1;margin:0 4px;font-weight:700;}
.th-filter{
  padding:2px 9px;
  border-radius:5px;
  font-size:10.5px;
  font-weight:700;
  background:#fff;
  border:1px solid #e2e8f0;
  color:#64748b;
  cursor:pointer;
  transition:.15s;
}
.th-filter:hover{border-color:#93c5fd;color:#1d4ed8;}
.th-filter.on{background:#2563eb;color:#fff;border-color:#2563eb;}
.th-filter.hit.on{background:#16a34a;border-color:#16a34a;}
.th-filter.miss.on{background:#e11d48;border-color:#e11d48;}

/* ---------- 39.6 列表 ---------- */
.th-list{
  display:flex;
  flex-direction:column;
  gap:4px;
  max-height:280px;
  overflow-y:auto;
  padding-right:2px;
}
.th-list.expanded{max-height:none;}

.th-empty{
  padding:12px;
  text-align:center;
  color:#94a3b8;
  font-size:11.5px;
  background:#fbfcfe;
  border-radius:8px;
}

/* ---------- 39.7 单条记录 ---------- */
.th-item{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:4px;
  padding:5px 9px;
  border-radius:6px;
  font-size:10.5px;
  font-weight:700;
  font-variant-numeric:tabular-nums;
  border:1px solid;
  cursor:help;
  position:relative;
  transition:.12s;
  line-height:1.5;
}
.th-item:hover{transform:translateX(2px);}
.th-item.hit{background:#f0fdf4;border-color:#bbf7d0;color:#166534;}
.th-item.miss{background:#fff1f2;border-color:#fecdd3;color:#991b1b;}

/* ⑩ 周期起点标记 */
.th-cycle-mark{
  display:inline-block;
  width:6px;
  height:6px;
  border-radius:50%;
  background:linear-gradient(135deg,#7c3aed,#2563eb);
  box-shadow:0 0 0 2px #fff, 0 0 0 3px rgba(124,58,237,.25);
  flex:none;
}

.th-period{font-weight:800;color:#475569;opacity:.85;}
.th-item.hit .th-period{color:#166534;}
.th-item.miss .th-period{color:#991b1b;}

/* ② 追投期数标签 */
.th-pos{
  font-size:9.5px;
  font-weight:800;
  padding:1px 6px;
  border-radius:4px;
  background:#ede9fe;
  color:#6b21a8;
  letter-spacing:0;
  flex:none;
}
.th-item.hit .th-pos{background:#bbf7d0;color:#14532d;}
.th-item.miss .th-pos{background:#fecdd3;color:#7f1d1d;}

.th-gen{
  font-weight:800;
  max-width:56px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  padding:0 4px;
  border-radius:3px;
  background:rgba(37,99,235,.08);
  color:#1d4ed8;
}
.th-item.hit .th-gen{background:rgba(22,163,74,.1);color:#166534;}
.th-item.miss .th-gen{background:rgba(225,29,72,.08);color:#9f1239;}

.th-arrow{opacity:.45;font-weight:700;font-size:10px;}
.th-draw{font-weight:900;}

.th-sz{
  font-size:9px;
  font-weight:900;
  padding:0 5px;
  border-radius:4px;
  background:#fef3c7;
  color:#78350f;
  letter-spacing:0;
}

/* ① 命中维度徽章 */
.th-dim-badge{
  font-size:9px;
  font-weight:900;
  padding:0 5px;
  border-radius:4px;
  background:#dcfce7;
  color:#14532d;
  border:1px solid #86efac;
  letter-spacing:0;
}

/* ③ 距离命中提示 */
.th-diff{
  font-size:9px;
  font-weight:900;
  padding:0 5px;
  border-radius:4px;
  background:#fef3c7;
  color:#92400e;
  border:1px dashed #fbbf24;
  letter-spacing:0;
}

.th-tag{font-weight:900;margin-left:2px;}

/* ⑧ 展开/分页按钮 */
.th-footer{
  display:flex;
  justify-content:center;
  margin-top:6px;
}
.th-more{
  font-size:11px;
  font-weight:800;
  padding:5px 16px;
  border-radius:6px;
  background:#fff;
  border:1px dashed #cbd5e1;
  color:#475569;
  cursor:pointer;
  transition:.15s;
}
.th-more:hover{
  background:#eff6ff;
  border-color:#93c5fd;
  color:#1d4ed8;
  border-style:solid;
}

/* ---------- 39.8 与 combo-card 主题集成 ---------- */
.combo-card .th-title{color:#475569 !important;}
.combo-card .th-btn{background:#f1f5f9 !important;border-color:#e2e8f0 !important;color:#475569 !important;}
.combo-card .th-btn:hover{background:#e2e8f0 !important;color:#1e293b !important;}
.combo-card .th-btn.on{background:#dbeafe !important;border-color:#93c5fd !important;color:#1d4ed8 !important;}
.combo-card .th-filter{background:#fff !important;border-color:#e2e8f0 !important;color:#64748b !important;}
.combo-card .th-filter:hover{border-color:#93c5fd !important;color:#1d4ed8 !important;}
.combo-card .th-filter.on{background:#2563eb !important;color:#fff !important;border-color:#2563eb !important;}
.combo-card .th-filter.hit.on{background:#16a34a !important;border-color:#16a34a !important;}
.combo-card .th-filter.miss.on{background:#e11d48 !important;border-color:#e11d48 !important;}
.combo-card .th-list{background:transparent !important;}
.combo-card .th-filters{background:#f8fafc !important;border-color:#eef2f7 !important;}
.combo-card .th-more{background:#fff !important;border-color:#cbd5e1 !important;color:#475569 !important;}
.combo-card .th-more:hover{background:#eff6ff !important;border-color:#93c5fd !important;color:#1d4ed8 !important;}

/* 命中 / 未中状态下的历史条目微调 */
.combo-card.hit .th-item.hit{background:#bbf7d0 !important;border-color:#86efac !important;}
.combo-card.miss .th-item.miss{background:#fecaca !important;border-color:#fca5a5 !important;}
.combo-card.hit .th-stat.hit{background:#86efac !important;color:#14532d !important;}
.combo-card.miss .th-stat.miss{background:#fca5a5 !important;color:#7f1d1d !important;}

/* ---------- 39.9 手机端布局 ---------- */
@media(max-width:640px){
  .th-head-row{gap:6px;}
  .th-title{font-size:11px;}
  .th-btn{font-size:10.5px;padding:2px 6px;}
  .th-stat{font-size:10px;padding:1px 7px;}
  .th-trend-item{width:8px;height:12px;}
  .th-posdist{font-size:10px;}
  .th-posdist-item{padding:1px 6px;}
  .th-filters{padding:5px 6px;gap:3px;}
  .th-filter{font-size:10px;padding:2px 7px;}
  .th-item{
    font-size:10px;
    padding:4px 7px;
    gap:3px;
  }
  .th-gen{max-width:46px;}
  .th-pos{font-size:9px;padding:0 5px;}
  .th-dim-badge,
  .th-diff,
  .th-sz{font-size:8.5px;padding:0 4px;}
  .th-list{max-height:240px;}
}

@media(max-width:380px){
  .th-item{font-size:9.5px;padding:3px 6px;}
  .th-gen{max-width:40px;}
  .th-trend-item{width:7px;height:11px;}
  .th-btn{font-size:10px;padding:2px 5px;}
  .th-stat{font-size:9.5px;padding:1px 6px;}
  .th-filter{font-size:9.5px;padding:2px 6px;}
}

/* ============================================================
   39.10 combo 卡片 · 分维度累计中/错（对错记录一行显示）
   ============================================================ */
.th-dim-lifetime{
  display:flex;
  flex-wrap:wrap;
  gap:5px;
  margin-top:4px;
  font-size:10.5px;
  align-items:center;
}
.th-dim-life-item{
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding:2px 8px;
  border-radius:5px;
  background:#f8fafc;
  border:1px solid #e2e8f0;
  font-weight:700;
  line-height:1.4;
  font-variant-numeric:tabular-nums;
}
.th-dim-life-name{
  font-weight:800;
  color:#475569;
  letter-spacing:.2px;
}
.th-dim-life-hit{
  color:#16a34a;
  font-weight:900;
}
.th-dim-life-miss{
  color:#e11d48;
  font-weight:900;
}

/* combo 卡片命中 / 未中状态下的底色调 */
.combo-card.hit .th-dim-life-item{background:#dcfce7;border-color:#86efac;}
.combo-card.miss .th-dim-life-item{background:#fee2e2;border-color:#fecaca;}

/* 手机端微调 */
@media(max-width:640px){
  .th-dim-lifetime{gap:4px;font-size:10px;}
  .th-dim-life-item{padding:2px 6px;gap:3px;}
  .th-dim-life-name{font-size:9.5px;}
}
@media(max-width:380px){
  .th-dim-lifetime{gap:3px;font-size:9.5px;}
  .th-dim-life-item{padding:1px 5px;gap:2px;}
}

/* ============================================================
   40. ★ 历史模式面板 v2（工具栏 / 趋势条 / 维度卡 / 星期分布）
   ============================================================ */

/* ---------- 40.1 工具栏 ---------- */
.hp-toolbar{
  display:flex;
  flex-direction:column;
  gap:8px;
  padding:12px 14px;
  margin-bottom:14px;
  background:#f8fafc;
  border:1px solid var(--line);
  border-radius:12px;
}
.hp-toolbar-row{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.hp-toolbar-label{
  font-size:12px;
  font-weight:800;
  color:#475569;
  min-width:36px;
  letter-spacing:.3px;
  flex:none;
}
.hp-seg{
  display:inline-flex;
  gap:3px;
  padding:3px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:9px;
  flex-wrap:wrap;
}
.hp-seg button{
  padding:5px 12px;
  border-radius:7px;
  font-size:12px;
  background:transparent;
  border:none;
  color:#64748b;
  font-weight:700;
  cursor:pointer;
  transition:.15s;
  white-space:nowrap;
}
.hp-seg button:hover{background:#f1f5f9;color:#334155;}
.hp-seg button.on{
  background:linear-gradient(135deg,#2563eb,#7c3aed);
  color:#fff;
}
.hp-seg button.hp-seg-hit.on{background:linear-gradient(135deg,#16a34a,#22c55e);}
.hp-seg button.hp-seg-miss.on{background:linear-gradient(135deg,#e11d48,#f43f5e);}

.hp-search-wrap{
  position:relative;
  flex:1;
  min-width:180px;
  max-width:340px;
}
.hp-search-input{
  width:100%;
  padding:7px 32px 7px 12px;
  border:1px solid var(--line);
  border-radius:9px;
  font-size:13px;
  font-family:inherit;
  outline:none;
  transition:.15s;
  background:#fff;
}
.hp-search-input:focus{
  border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(37,99,235,.13);
}
.hp-search-clear{
  position:absolute;
  right:6px;
  top:50%;
  transform:translateY(-50%);
  width:20px;
  height:20px;
  padding:0;
  border:none;
  border-radius:50%;
  background:#e2e8f0;
  color:#64748b;
  font-size:11px;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  line-height:1;
}
.hp-search-clear:hover{background:#cbd5e1;color:#334155;}

/* API 标签 */
.hp-api-tag{
  display:inline-flex;
  align-items:center;
  padding:1px 7px;
  border-radius:5px;
  font-size:10.5px;
  font-weight:800;
  letter-spacing:.3px;
  margin-left:4px;
}
.hp-api-ok{background:#dcfce7;color:#166534;}
.hp-api-local{background:#fef3c7;color:#92400e;}

/* 副标题标签 */
.hp-sub-tag{
  font-size:11px;
  color:#94a3b8;
  font-weight:400;
  margin-left:6px;
}

/* ---------- 40.2 命中率趋势条 ---------- */
.hp-trend{
  display:flex;
  flex-wrap:wrap;
  gap:2px;
  padding:8px 10px;
  margin-bottom:14px;
  background:#f8fafc;
  border:1px solid #eef2f7;
  border-radius:10px;
  max-height:80px;
  overflow:hidden;
}
.hp-trend-item{
  width:11px;
  height:18px;
  border-radius:3px;
  flex:none;
  transition:transform .1s;
  cursor:help;
}
.hp-trend-item.hit{background:linear-gradient(180deg,#22c55e,#16a34a);}
.hp-trend-item.miss{background:linear-gradient(180deg,#f43f5e,#e11d48);}
.hp-trend-item:hover{transform:scaleY(1.2);}

/* ---------- 40.3 分维度累计卡 ---------- */
.hp-dim-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(110px,1fr));
  gap:8px;
  margin-bottom:14px;
}
.hp-dim-card{
  background:#f8fafc;
  border:1px solid var(--line);
  border-radius:10px;
  padding:10px 12px;
  display:flex;
  flex-direction:column;
  gap:4px;
  align-items:center;
  text-align:center;
}
.hp-dim-name{
  font-size:11.5px;
  font-weight:800;
  color:#475569;
  letter-spacing:.3px;
}
.hp-dim-rate{
  font-size:18px;
  font-weight:900;
  color:#7c3aed;
  font-variant-numeric:tabular-nums;
  line-height:1.1;
}
.hp-dim-rate em{
  font-size:10px;
  font-style:normal;
  color:#94a3b8;
  margin-left:1px;
}
.hp-dim-bar{
  width:100%;
  height:5px;
  background:#e2e8f0;
  border-radius:3px;
  overflow:hidden;
}
.hp-dim-bar-fill{
  height:100%;
  background:linear-gradient(90deg,#16a34a,#22c55e);
  border-radius:3px;
  transition:width .3s;
}
.hp-dim-detail{
  display:inline-flex;
  gap:6px;
  font-size:10.5px;
  font-weight:800;
}
.hp-dim-hit{color:#16a34a;}
.hp-dim-miss{color:#e11d48;}

/* ---------- 40.5 明细维度徽章 ---------- */
.hp-dim-badge{
  display:inline-flex;
  align-items:center;
  padding:0 5px;
  height:16px;
  border-radius:4px;
  font-size:9px;
  font-weight:900;
  background:#dcfce7;
  color:#14532d;
  border:1px solid #86efac;
  letter-spacing:0;
  flex:none;
}
.hp-item.miss .hp-dim-badge{
  background:#fee2e2;
  color:#991b1b;
  border-color:#fca5a5;
}

/* ---------- 40.7 展开/收起 ---------- */
.hp-footer{
  display:flex;
  justify-content:center;
  margin-top:10px;
}
.hp-more{
  padding:7px 20px;
  border-radius:8px;
  background:#fff;
  border:1px dashed #cbd5e1;
  color:#475569;
  font-size:12px;
  font-weight:800;
  cursor:pointer;
  transition:.15s;
}
.hp-more:hover{
  background:#eff6ff;
  border-color:#93c5fd;
  color:#1d4ed8;
  border-style:solid;
}

/* ---------- 40.8 空状态 ---------- */
.hp-empty-small{
  padding:12px;
  text-align:center;
  color:#94a3b8;
  font-size:11.5px;
  background:#f8fafc;
  border-radius:8px;
}

/* ---------- 40.9 明细列表展开时高度 ---------- */
.hp-list.expanded{
  max-height:none;
}

/* ---------- 40.10 手机端适配 ---------- */
@media(max-width:640px){
  .hp-toolbar{padding:10px;gap:6px;}
  .hp-toolbar-row{gap:6px;}
  .hp-toolbar-label{font-size:11px;min-width:30px;}
  .hp-seg{padding:2px;gap:2px;border-radius:8px;}
  .hp-seg button{padding:4px 9px;font-size:11px;border-radius:6px;}
  .hp-search-wrap{min-width:140px;max-width:none;flex:1;}
  .hp-search-input{padding:6px 28px 6px 10px;font-size:12px;}
  .hp-trend{padding:6px 8px;max-height:60px;}
  .hp-trend-item{width:9px;height:14px;}
  .hp-dim-grid{grid-template-columns:repeat(2,1fr);gap:6px;}
  .hp-dim-card{padding:8px 10px;}
  .hp-dim-name{font-size:11px;}
  .hp-dim-rate{font-size:16px;}
  .hp-dim-badge{font-size:8.5px;height:15px;padding:0 4px;}
  .hp-more{font-size:11.5px;padding:6px 16px;}
}

@media(max-width:380px){
  .hp-dim-grid{grid-template-columns:repeat(2,1fr);gap:4px;}
  .hp-trend-item{width:8px;height:12px;}
  .hp-dim-rate{font-size:15px;}
}