/* ============================================================
   挖草乐透 · 合并样式表 (style.css 基础 + app.css App层覆盖)
   注意: App 层依赖 body.app 作用域, 必须位于基础层之后。
   ============================================================ */

/* ===== 基础层 (原 style.css) ===== */
/* 挖草彩票 · 样式 */
:root{ /* 品牌色: 取自 logo —— 香槟金 + 墨黑 */
  --gold: #bfa46f; --gold-2: #cdb582; --gold-dark: #9c7f49; --gold-soft: #f4eede; --ink: #1b1a17; --ink-2: #2b2922; /* 彩球语义色 (保留红/蓝) 与状态色 */
  --red: #c0392b; --blue: #2f72b8; --green: #3f7d4e; --muted: #8d8979; --line: #e8e3d7; --bg: #f7f5ef; --card: #fff;}
*{ box-sizing: border-box;}
html{ overflow-y: scroll;}
body{ margin: 0; font-family: "PingFang SC","Microsoft YaHei","Segoe UI",-apple-system,sans-serif; background: var(--bg); color: var(--ink); line-height: 1.6; -webkit-font-smoothing: antialiased;}
a{ color: inherit; text-decoration: none;}

/* 顶部导航 */

.nav{ display: flex; align-items: center; gap: 18px; height: 66px;}

.menu{ display: flex; gap: 4px; flex: 0 1 auto; flex-wrap: wrap; justify-content: center;}
.menu a{ position: relative; padding: 8px 14px 10px; border-radius: 10px; color: #5a564a; font-size: 15px; font-weight: 500; transition: .18s;}
.menu a:hover{ background: var(--gold-soft); color: var(--ink);}
.menu a.on{ background: transparent; color: #000; font-weight: 700;}
.menu a.on::after{ content: ""; position: absolute; left: 50%; bottom: 2px; transform: translateX(-50%); width: 5px; height: 5px; border-radius: 50%; background: #000;}
.user{ flex: 1 1 0; display: flex; align-items: center; justify-content: flex-end; gap: 10px;}
.user .hi{ color: var(--muted); font-size: 14px;}

/* 移动端: 第一行 logo(左) + 我的选号/退出(右); 第二行 菜单, 超宽可左右滑动 */
@media(max-width:720px){
  .nav{ flex-wrap: wrap; height: auto; padding: 0.625rem 0; gap: 0.625rem 0.5rem;}
  
  .user{ flex: 0 0 auto; order: 2; justify-content: flex-end; gap: 0.5rem;}
  /* 菜单满铺到屏幕两边, space-evenly 让「两端 + 各项之间」所有间距完全相等。
     去掉链接左右内边距与 gap, 使间距纯由均分产生 → 选中圆点仍落在文字正中。 */
  .menu{ order: 3; flex: 1 1 100%; flex-wrap: nowrap; justify-content: space-evenly; overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch; gap: 0; margin: 0 -0.875rem; padding: 0 0 0.25rem; scrollbar-width: none;}
  .menu::-webkit-scrollbar{ display: none;}
  .menu a{ flex: 0 0 auto; white-space: nowrap; padding: 0.4375rem 0 0.5625rem; font-size: 0.875rem;}

  .user .btn-ghost{ padding: 0.375rem 0.75rem; font-size: 0.8125rem;}
}
.btn-ghost{ padding: 7px 15px; border: 1px solid var(--line); border-radius: 10px; font-size: 14px; color: #5a564a; background: transparent; cursor: pointer; transition: .18s;}
.btn-ghost:hover{ border-color: var(--gold); color: var(--gold-dark); background: var(--gold-soft);}

/* 图标按钮 (我的选号 / 退出): 方正等宽, line 风格 SVG 图标 */

            /* 选中态: 金底 + 白色描边图标 */

/* flash */
.flash{ margin-top: 14px; padding: 12px 16px; background: #fff7e6; border: 1px solid #ffd591; border-radius: 8px; color: #ad6800;}

/* 卡片 */
.card{ background: var(--card); border: 1px solid var(--line); border-radius: 16px; padding: 24px; margin-bottom: 20px; box-shadow: 0 4px 24px rgba(27,26,23,.05);}
.card h2{ margin: 0 0 14px; font-size: 19px; letter-spacing: .3px;}
.card h3{ margin: 18px 0 10px; font-size: 16px; color: #3a382f;}
.grid{ display: grid; gap: 18px;}
.grid>.card{ margin-bottom: 0;}   /* 网格间距交给 gap, 去掉卡片下边距避免行间双重间距 */
.grid-2{ grid-template-columns: 1fr 1fr;}
.grid-3{ grid-template-columns: repeat(3,1fr);}
.grid-4{ grid-template-columns: repeat(4,1fr);}
@media(max-width:1200px){.grid-4{ grid-template-columns: repeat(3,1fr);}}
@media(max-width:900px){.grid-3,.grid-4{ grid-template-columns: repeat(2,1fr);}}
@media(max-width:760px){.grid-2{ grid-template-columns: 1fr;}}
@media(max-width:560px){.grid-3,.grid-4{ grid-template-columns: 1fr;}}

/* 分区标题 */
.section-title{ display: flex; align-items: center; gap: 11px; font-size: 18px; font-weight: 700; color: var(--ink); letter-spacing: .3px; margin: 32px 2px 16px;}
.section-title:first-child{ margin-top: 8px;}
.section-title .bar{ display: none;}

/* 控制区 (期数 / 策略 平铺) */
.ctrl-bar{ display: flex; flex-wrap: wrap; gap: 16px 32px; align-items: center;}
.ctrl-group{ display: flex; align-items: center; gap: 12px;}
.ctrl-label{ font-size: 13px; color: var(--muted); font-weight: 600; white-space: nowrap;}

/* 策略切换 (平铺按钮组) */
.seg-toggle{ display: inline-flex; background: #ece6d8; border-radius: 10px; padding: 4px; gap: 2px; flex-wrap: wrap;}
.seg-toggle a{ padding: 8px 18px; border-radius: 8px; font-size: 14px; font-weight: 600; color: #6b6655; transition: .18s; white-space: nowrap;}
.seg-toggle a:hover{ color: var(--ink);}
.seg-toggle a.on{ background: var(--ink); color: var(--gold-2); box-shadow: 0 2px 6px rgba(27,26,23,.18);}

/* 移动端: 标记 .seg-sheet 的切换器 → 触发按钮 + 底部弹窗 */
.seg-trigger{ display: none;}
.sheet-overlay{ position: fixed; inset: 0; z-index: 200; background: rgba(20,18,14,.5); opacity: 0; transition: opacity .25s;}
.sheet-overlay.show{ opacity: 1;}
.sheet{ position: fixed; left: 0; right: 0; bottom: 0; z-index: 201; background: #fff; border-radius: 1.25rem 1.25rem 0 0; padding: 0 1rem calc(1.25rem + env(safe-area-inset-bottom,0px)); transform: translateY(100%); transition: transform .3s cubic-bezier(.22,1,.36,1); box-shadow: 0 -0.5rem 2.5rem rgba(0,0,0,.28); max-height: 80vh; overflow-y: auto;}
.sheet.show{ transform: translateY(0);}
.sheet-grip{ width: 2.5rem; height: 0.25rem; border-radius: 999px; background: #d8d2c4; margin: 0.625rem auto 0.75rem;}
.sheet-title{ font-size: 0.8125rem; color: var(--muted); font-weight: 700; margin: 0 0.25rem 0.5rem;}
.sheet-opt{ display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; padding: 0.9375rem 0.875rem; border-radius: 0.75rem; font-size: 1rem; font-weight: 600; color: var(--ink);}
.sheet-opt:active{ background: #f4eede;}
.sheet-opt.on{ background: var(--gold-soft); color: var(--gold-dark); font-weight: 800;}
.sheet-opt.on::after{ content: "✓"; font-weight: 800;}
@media(max-width:760px){
  .seg-toggle.seg-sheet{ display: none;}
  /* 去掉外层卡片外壳 (含 padding), 只留按钮本身这一个框 */
  .card.strat-card,.card.sheet-card{ padding: 0; border: 0; background: none; box-shadow: none;}
  .strat-card .ctrl-bar{ gap: 0;}
  /* 走势图筛选: 两个触发按钮并排一行 */
  .sheet-card .ctrl-bar{ gap: 0.625rem; flex-wrap: nowrap;}
  .sheet-card .ctrl-group.has-sheet{ flex: 1 1 0; width: auto; min-width: 0;}
  .sheet-card .seg-trigger{ padding: 0 0.75rem; gap: 0.375rem;}
  .sheet-card .seg-trigger .st-label{ font-size: 0.75rem;}
  .ctrl-group.has-sheet{ width: 100%; gap: 0;}
  .ctrl-group.has-sheet .ctrl-label{ display: none;}   /* 标签并入按钮内 */
  /* 整块做成一个大选择按钮 */
  .seg-trigger{ display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; flex: 1; width: 100%; min-width: 0; height: 3rem; padding: 0 1rem; border-radius: 0.75rem; background: #fff; border: 1px solid var(--line); box-shadow: 0 1px 3px rgba(27,26,23,.06); cursor: pointer; transition: .15s;}
  .seg-trigger:active{ background: #faf6ec; border-color: var(--gold-2);}
  .seg-trigger .st-label{ flex: 0 0 auto; color: var(--muted); font-weight: 600; font-size: 0.8125rem;}
  .seg-trigger .st-right{ display: flex; align-items: center; gap: 0.5rem; min-width: 0;}
  .seg-trigger .st-cur{ font-weight: 800; color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
  .seg-trigger .st-arrow{ flex: 0 0 auto; color: var(--gold-dark); font-size: 0.75rem;}
}

/* 智能分析 */
.ai-header{ display: flex; align-items: center; gap: 15px; margin-bottom: 22px; padding-bottom: 18px; border-bottom: 1px solid var(--line);}
.ai-badge{ flex: 0 0 auto; width: 52px; height: 52px; border-radius: 15px; background: linear-gradient(150deg,#2e2a22,#1b1a17); color: var(--gold-2); display: flex; align-items: center; justify-content: center; font-size: 25px; box-shadow: 0 6px 16px rgba(27,26,23,.24);}
.ai-header h2{ margin: 0; font-size: 21px; font-weight: 800; letter-spacing: .3px;}
.ai-tag2{ display: inline-block; margin-top: 6px; font-size: 12.5px; font-weight: 600; color: var(--gold-dark); background: var(--gold-soft); padding: 3px 12px; border-radius: 20px; letter-spacing: .2px;}

.insight-grid{ display: grid; grid-template-columns: repeat(4,1fr); gap: 14px; margin-top: 18px;}
@media(max-width:1100px){.insight-grid{ grid-template-columns: repeat(2,1fr);}}
@media(max-width:560px){.insight-grid{ grid-template-columns: 1fr;}}
.insight{ display: flex; flex-direction: column; align-items: flex-start; gap: 12px; padding: 16px 18px; background: linear-gradient(135deg,#faf8f1,#f5efe1); border: 1px solid var(--line); border-radius: 14px; min-height: 58px; transition: transform .18s ease,box-shadow .18s ease;}
.insight:hover{ transform: translateY(-2px); box-shadow: 0 8px 20px rgba(27,26,23,.08);}
.insight-label{ font-size: 13px; font-weight: 600; color: #5a564a; display: flex; align-items: center; gap: 7px;}
.insight-label .dot{ width: 8px; height: 8px; border-radius: 50%; flex: 0 0 auto;}
.insight-label .dot.hot{ background: var(--red);}
.insight-label .dot.cold{ background: #9fb4cc;}
.insight-label .dot.blue{ background: var(--blue);}
.insight-label .dot.gold{ background: var(--gold);}
.insight-balls{ display: flex; flex-wrap: wrap; gap: 6px;}
.insight-balls .ball{ width: 30px; height: 30px; font-size: 13px; box-shadow: inset 0 -2px 4px rgba(0,0,0,.14);}
.insight .metric-val{ font-size: 14px; color: #5a564a;}
.insight .metric-val b{ font-size: 18px; color: var(--gold-dark); margin: 0 2px; font-variant-numeric: tabular-nums;}

.ai-quote{ margin-top: 14px; background: linear-gradient(135deg,#faf8f1,#f3ecdb); border: 1px solid var(--line); border-left: 3px solid var(--gold); border-radius: 12px; padding: 16px 20px; line-height: 2; white-space: pre-line; font-size: 14px; color: #3a382f;}

.reco-strip{ display: flex; flex-direction: column; gap: 16px; margin-top: 18px; padding: 22px 26px; border-radius: 16px; color: #fff; background: radial-gradient(620px 170px at 18% -40%,rgba(205,181,130,.5),transparent 62%),radial-gradient(520px 150px at 105% 150%,rgba(191,164,111,.32),transparent 60%),linear-gradient(120deg,#2f2b22,#181712); border: 1px solid transparent; box-shadow: inset 0 0 0 1.5px rgba(205,181,130,.45),0 12px 30px rgba(27,26,23,.28);}
.reco-fx{ position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; opacity: .5; pointer-events: none;}
.reco-row{ position: relative; z-index: 1; display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap;}

.reco-strip-label{ display: flex; align-items: center; flex-wrap: wrap; gap: 8px 14px;}
.reco-cap{ flex: 0 0 100%; font-size: 16px; font-weight: 600; letter-spacing: 2px; color: var(--gold-2);}
.reco-issue{ font-size: 24px; font-weight: 600; color: #efe4c6; letter-spacing: .5px;}
.reco-issue b{ font-size: 48px; font-weight: 800; margin: 0 4px; line-height: 1; font-variant-numeric: tabular-nums; background: linear-gradient(92deg,#fff6e2,var(--gold-2)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;}
.reco-strat{ display: inline-block; font-size: 16px; font-weight: 700; letter-spacing: .5px; padding: 8px 20px; border-radius: 20px; color: #FFF; background: linear-gradient(120deg,var(--gold-2),var(--gold-dark));}
.reco-strip-balls{ display: flex; gap: 9px; flex-wrap: wrap;}
.reco-strip-balls .ball{ width: 42px; height: 42px; font-size: 17px;}

/* 开奖倒计时 */
.reco-countdown{ display: flex; flex-direction: column; align-items: flex-end; gap: 9px;}
.cd-title{ font-size: 12px; color: var(--gold-2); letter-spacing: 1.5px;}
.cd-units{ display: flex; align-items: flex-start; gap: 7px;}
.cd-unit{ display: flex; flex-direction: column; align-items: center; gap: 5px; min-width: 56px; padding: 9px 8px 7px; border-radius: 12px; background: linear-gradient(160deg,rgba(255,255,255,.10),rgba(0,0,0,.28)); box-shadow: inset 0 0 0 1px rgba(205,181,130,.4),0 5px 14px rgba(0,0,0,.35);}
.cd-unit b{ font-size: 27px; font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums; letter-spacing: 1px; background: linear-gradient(180deg,#fff7e6,var(--gold-2)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;}
.cd-unit i{ font-style: normal; font-size: 11px; color: #b6af9c;}
.cd-sep{ font-size: 22px; font-weight: 800; color: var(--gold-2); margin-top: 9px; animation: cdBlink 1s steps(1) infinite;}
@keyframes cdBlink{50%{ opacity: .25;}}
.cd-unit b.tick{ animation: cdTick .5s ease;}
@keyframes cdTick{0%{ transform: scale(1);}40%{ transform: scale(1.16); filter: drop-shadow(0 0 9px rgba(205,181,130,.85));}100%{ transform: scale(1);}}

.reco-actions{ display: flex; gap: 12px; align-items: center; flex-wrap: wrap;}
@media(max-width:760px){.reco-countdown{ align-items: flex-start;}}
.reco-actions .btn,.reco-actions .btn-gold,.reco-actions .btn-ghost-d{ height: 46px; padding: 0 24px; border-radius: 12px; font-size: 15px; display: inline-flex; align-items: center;}
.btn-ghost-d{ padding: 6px 14px; border: 1px solid rgba(255,255,255,.4); border-radius: 10px; font-size: 13px; font-weight: 600; color: #fff; background: transparent; cursor: pointer; transition: .18s;}
.btn-ghost-d:hover{ background: rgba(255,255,255,.12); border-color: var(--gold-2); color: var(--gold-2);}
@media(max-width:760px){.reco-actions{ margin-left: 0;}}

/* 🔮 玄学型 · 本期天机 */
.omen-box{ position: relative; margin-top: 16px; padding: 18px 22px; border-radius: 14px; background: radial-gradient(420px 130px at 100% -30%,rgba(120,90,170,.18),transparent 60%),linear-gradient(135deg,#faf6ec,#f1ebdb); border: 1px solid var(--line); box-shadow: inset 0 0 0 1px rgba(156,127,73,.18);}
.omen-title{ font-size: 15px; font-weight: 800; letter-spacing: 1px; color: var(--gold-dark); margin-bottom: 14px;}
.omen-grid{ display: grid; grid-template-columns: repeat(3,1fr); gap: 10px 16px;}
.omen-item{ display: flex; flex-direction: column; gap: 3px; padding: 8px 12px; border-radius: 10px; background: rgba(255,255,255,.6); border: 1px solid var(--line);}
.omen-item span{ font-size: 11px; color: var(--muted); letter-spacing: .5px;}
.omen-item b{ font-size: 15px; color: var(--ink); font-weight: 700;}
.omen-item.omen-yi b{ color: var(--green);}
.omen-item.omen-ji b{ color: var(--red);}
.omen-line{ margin-top: 12px; font-size: 13px; color: var(--ink-2); letter-spacing: .3px;}
.omen-quote{ margin-top: 14px; padding: 12px 16px; border-left: 3px solid var(--gold); border-radius: 0 10px 10px 0; background: rgba(191,164,111,.10); font-size: 13.5px; line-height: 1.9; color: var(--ink-2);}
@media(max-width:760px){.omen-grid{ grid-template-columns: repeat(2,1fr);}}

/* 🎂 定制推号 */
.custom-form .ctrl-group{ display: flex; align-items: center; flex-wrap: wrap; gap: 10px 14px;}

.birth-list{ display: flex; flex-wrap: wrap; gap: 12px 20px;}
.birth-row{ flex: 1 1 300px; display: flex; align-items: center; min-width: 0;}
/* 称呼框 + 日期框 直接相连 (共享边线), 无外框 */
.birth-row .birth-name{ flex: 0 0 110px; width: 110px; height: 44px; padding: 0 12px; border: 1px solid var(--line); border-radius: 10px 0 0 10px; background: #fff; font-size: 14px; font-family: inherit;}
.birth-row .birth-date{ flex: 1 1 auto; width: auto; min-width: 130px; height: 44px; padding: 0 12px; border: 1px solid var(--line); border-radius: 0 10px 10px 0; margin-left: -1px; background: #fff; font-size: 14px; color: var(--ink); font-family: inherit;}
.birth-row .birth-date::-webkit-datetime-edit{ font-family: inherit;}
.birth-row .birth-name:focus,.birth-row .birth-date:focus{ position: relative; z-index: 1; outline: none; border-color: var(--gold); box-shadow: 0 0 0 3px rgba(191,164,111,.18);}
.birth-del{ flex: 0 0 auto; width: 38px; height: 44px; margin-left: 8px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--line); border-radius: 10px; background: #fff; color: var(--muted); cursor: pointer; font-size: 14px; transition: .15s;}
.birth-del:hover{ border-color: var(--red); color: var(--red); background: #fff;}
.custom-actions{ display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 18px;}
.btn-ghost-d2{ height: 44px; display: inline-flex; align-items: center; justify-content: center; padding: 0 18px; border: 1px solid var(--gold); border-radius: 10px; background: #fff; color: var(--gold-dark); font-weight: 600; font-size: 14px; cursor: pointer; transition: .15s;}
.btn-ghost-d2:hover{ background: var(--gold-soft);}
.custom-form .pick-cta{ width: auto; height: 44px; margin-top: 0; padding: 0 26px; display: inline-flex; align-items: center; justify-content: center;}
.save-tip{ font-size: 13px;}

.aura-box{ margin-top: 16px; padding: 16px 20px; border-radius: 14px; background: radial-gradient(420px 130px at 0% -30%,rgba(120,90,170,.16),transparent 60%),linear-gradient(135deg,#faf6ec,#f1ebdb); box-shadow: inset 0 0 0 1px rgba(156,127,73,.18);}
.aura-title{ font-size: 15px; font-weight: 800; letter-spacing: 1px; color: var(--gold-dark); margin-bottom: 12px;}
.aura-grid{ display: grid; grid-template-columns: repeat(4,1fr); gap: 10px 16px;}
.aura-item{ display: flex; flex-direction: column; gap: 3px; padding: 8px 12px; border-radius: 10px; background: rgba(255,255,255,.6); border: 1px solid var(--line);}
.aura-item span{ font-size: 11px; color: var(--muted); letter-spacing: .5px;}
.aura-item b{ font-size: 15px; color: var(--ink); font-weight: 700; font-variant-numeric: tabular-nums;}

.person-grid{ margin-top: 4px; margin-bottom: 0;}
.person-grid + .custom-input-card{ margin-top: 18px;}   /* 命理画像 → 生日输入 之间统一间距 */
.person-card{ padding: 16px 18px;}
.person-head{ display: flex; align-items: center; gap: 12px; margin-bottom: 12px;}
.person-zodiac{ flex: 0 0 auto; width: 44px; height: 44px; display: flex; align-items: center; justify-content: center; font-size: 22px; border-radius: 50%; background: linear-gradient(140deg,var(--gold-2),var(--gold-dark)); color: #fff; box-shadow: 0 4px 10px rgba(156,127,73,.35);}
.person-head h3{ margin: 0; font-size: 16px;}
.person-facts{ display: grid; grid-template-columns: 1fr 1fr; gap: 8px 12px;}
.person-facts div{ display: flex; flex-direction: column; gap: 2px; padding: 7px 10px; border-radius: 8px; background: #faf8f2; border: 1px solid var(--line);}
.person-facts span{ font-size: 11px; color: var(--muted);}
.person-facts b{ font-size: 14px; color: var(--ink);}
@media(max-width:760px){.aura-grid{ grid-template-columns: repeat(2,1fr);}.birth-row .birth-name{ width: 100px; flex: 0 0 100px;}}

/* 智能综合分析 · 绚丽强化 */
.ai-card{ position: relative; overflow: hidden; background: #fff;}
/* 动态极光背景 */
.ai-card::after{ content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none; background: radial-gradient(400px 300px at 12% 18%,rgba(191,164,111,.20),transparent 60%),
    radial-gradient(440px 320px at 88% 8%,rgba(205,181,130,.18),transparent 60%),
    radial-gradient(520px 360px at 72% 116%,rgba(156,127,73,.16),transparent 60%),
    radial-gradient(360px 300px at 40% 90%,rgba(207,181,130,.14),transparent 60%); background-size: 200% 200%; animation: aiAurora 16s ease-in-out infinite alternate;}
@keyframes aiAurora{0%{ background-position: 0% 0%;}50%{ background-position: 100% 55%;}100%{ background-position: 25% 100%;}}
.ai-card>*{ position: relative; z-index: 1;}
.ai-badge{ position: relative; animation: aiBadge 2.8s ease-in-out infinite;}
@keyframes aiBadge{0%,100%{ box-shadow: 0 5px 14px rgba(30,27,75,.28);}50%{ box-shadow: 0 6px 24px rgba(99,102,241,.55);}}
.ai-card .insight{ position: relative;}
/* 推荐条: 流光 + 呼吸金边 + 浮动发光球 */
.reco-strip{ position: relative; overflow: hidden; animation: recoGlow 3.4s ease-in-out infinite;}
.reco-strip::after{ content: ""; position: absolute; top: 0; left: -60%; width: 38%; height: 100%; transform: skewX(-22deg); pointer-events: none; z-index: 0; background: linear-gradient(105deg,transparent,rgba(191,164,111,.4),transparent); animation: recoShine 4s ease-in-out infinite;}
@keyframes recoShine{0%{ left: -60%;}55%,100%{ left: 165%;}}
@keyframes recoGlow{0%,100%{ box-shadow: inset 0 0 0 1px rgba(191,164,111,.12);}50%{ box-shadow: inset 0 0 0 1px rgba(191,164,111,.35),0 0 26px rgba(191,164,111,.32);}}
.reco-strip>*{ position: relative; z-index: 1;}
.reco-strip-balls .ball{ box-shadow: 0 0 0 1px rgba(255,255,255,.18),0 4px 10px rgba(0,0,0,.35);}

/* 号码热力图 */
.heat-head{ display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; margin-bottom: 14px;}
.heat-legend{ display: inline-flex; align-items: center; gap: 8px; font-size: 12px; color: var(--muted);}
.heat-scale{ display: inline-block; width: 90px; height: 10px; border-radius: 5px; background: linear-gradient(90deg,rgba(191,164,111,.12),rgba(191,164,111,.95));}
.heat{ display: grid; grid-template-columns: repeat(auto-fill,minmax(52px,1fr)); gap: 8px;}
.heat-cell{ position: relative; aspect-ratio: 1/1; min-height: 50px; border-radius: 10px; border: 1px solid var(--line); display: flex; flex-direction: column; align-items: center; justify-content: center; transition: .15s;}
.heat-cell:hover{ transform: translateY(-2px); box-shadow: 0 6px 16px rgba(27,26,23,.12);}
.heat-cell .hn{ font-size: 15px; font-weight: 700; color: var(--ink);}
.heat-cell .hc{ font-size: 11px; color: #6b6655; margin-top: 2px;}
.heat-cell.is-hot{ border-color: var(--gold-dark); box-shadow: 0 0 0 2px rgba(156,127,73,.35);}
.heat-cell.is-cold{ border-color: #bcb6a6; box-shadow: 0 0 0 2px rgba(141,137,121,.18);}

/* 号码特征: 冷热号 chips / 遗漏排行 / 和值指标 */
.feat-card{ display: flex; flex-direction: column;}
.feat-sub{ font-size: 13px; font-weight: 600; color: #6b6655; margin: 16px 0 10px; display: flex; align-items: center; gap: 7px;}
.feat-sub:first-of-type{ margin-top: 2px;}
.feat-sub .fs-dot{ width: 8px; height: 8px; border-radius: 50%; flex: 0 0 auto;}
.feat-sub .fs-dot.hot{ background: var(--red);}
.feat-sub .fs-dot.cold{ background: #e3a9a1;}
.feat-sub .fs-dot.blue{ background: var(--blue);}
.feat-sub .fs-dot.bluecold{ background: #a7c4e0;}
/* 冷热号: 四组等距填充, 每组浅底卡片 */
.feat-card .feat-block{ flex: 1 1 0; display: flex; flex-direction: column; justify-content: center; background: linear-gradient(135deg,#fbf9f3,#f6f1e6); border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; margin-top: 12px;}
.feat-card .feat-block:first-of-type{ margin-top: 14px;}
.feat-card .feat-block .feat-sub{ margin: 0 0 10px;}
.chip-row{ display: flex; flex-wrap: wrap; gap: 12px;}
.num-chip{ display: inline-flex; flex-direction: column; align-items: center; gap: 4px;}
.num-chip .cnt{ font-size: 11px; color: var(--muted);}
.num-chip.dim .ball{ opacity: .5; filter: grayscale(.2);}

.miss-rank-list{ display: flex; flex-direction: column; gap: 6px;}
.miss-row{ display: flex; align-items: center; gap: 11px; padding: 8px 12px; border-radius: 10px; background: #faf7f0; border: 1px solid transparent; transition: .15s;}
.miss-row:hover{ border-color: var(--line);}
.miss-row.top{ background: var(--gold-soft);}
.miss-row .rk{ flex: 0 0 auto; width: 22px; height: 22px; border-radius: 6px; background: #e3ddd0; color: #8d8979; font-size: 12px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center;}
.miss-row.top .rk{ background: linear-gradient(160deg,var(--gold-2),var(--gold-dark)); color: #fff;}
.miss-row .miss-v{ margin-left: auto; font-size: 13px; color: var(--muted);}
.miss-row .miss-v b{ font-size: 19px; color: var(--gold-dark); margin-right: 2px;}

.metric-row{ display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 6px;}
.metric{ flex: 1 1 0; min-width: 60px; background: var(--gold-soft); border: 1px solid var(--line); border-radius: 12px; padding: 12px 6px; text-align: center;}
.metric b{ display: block; font-size: 22px; line-height: 1.2; color: var(--ink);}
.metric span{ font-size: 12px; color: var(--muted);}

.seg-bar{ display: flex; height: 42px; border-radius: 10px; overflow: hidden; border: 1px solid var(--line);}
.seg{ display: flex; align-items: center; justify-content: center; color: #fff; font-size: 13px; min-width: 0;}
.seg b{ text-shadow: 0 1px 2px rgba(0,0,0,.2);}
.seg-legend{ display: flex; flex-wrap: wrap; gap: 16px; margin-top: 12px; font-size: 13px; color: #6b6655;}
.seg-legend span{ display: inline-flex; align-items: center; gap: 6px;}
.seg-legend i{ width: 12px; height: 12px; border-radius: 3px; display: inline-block;}

/* 筛选工具栏 (历史数据) */

/* 历史筛选 (单一期号搜索) */
.hfilter{ display: flex; flex-wrap: wrap; align-items: center; gap: 14px;}
.hf-search{ flex: 1 1 320px; min-width: 240px; display: flex; align-items: center; gap: 10px; background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 0 16px; height: 48px; transition: border-color .15s,box-shadow .15s;}
.hf-search:focus-within{ border-color: var(--gold); box-shadow: 0 0 0 3px rgba(191,164,111,.18);}
.hf-search-ico{ font-size: 16px; opacity: .6; line-height: 1;}
.hf-search input{ flex: 1; min-width: 0; border: 0; outline: 0; border: 0 !important; background: transparent; font-size: 15px; color: var(--ink); height: 100%; padding: 0;}
.hf-search input:focus{ outline: none !important; box-shadow: none !important;}
.hf-search input::placeholder{ color: #a8a191;}
.hf-actions{ display: flex; gap: 8px; margin-left: auto;}
.hf-actions .btn,.hf-actions .btn-ghost{ height: 48px; display: inline-flex; align-items: center; padding: 0 24px; border-radius: 12px;}
@media(max-width:760px){.hf-actions{ margin-left: 0;}}

/* 历史数据表格 */
.table-head{ display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; margin-bottom: 12px;}
.legend-mini .ball-sm{ vertical-align: middle; font-size: 11px;}
/* 宽表格横向滚动容器 (历史数据 / 我的选号), 窄屏不撑破页面 */
.hist-scroll{ overflow-x: auto; -webkit-overflow-scrolling: touch;}
.hist-table{ border-radius: 14px; overflow: hidden; border: 1px solid var(--line);}
.hist-table thead th{ background: linear-gradient(180deg,#f7f1e4,#f1e9d6); color: var(--gold-dark); font-weight: 800; letter-spacing: .5px; font-size: 12.5px; padding: 14px 12px; border-bottom: 2px solid var(--gold-2);}
.hist-table td,.hist-table th{ padding: 15px 12px;}
.hist-table .num{ text-align: center; width: 88px; color: #3a382f;}
.hist-table .col-balls{ width: 40%;}
.hist-table tbody tr{ transition: .14s;}
.hist-table tbody td{ border-bottom: 1px solid #f0ece2; vertical-align: middle;}
.hist-table tbody tr:nth-child(even) td{ background: #fcfaf4;}
.hist-table tbody tr:hover td{ background: #f7f0df;}
.hist-table tbody tr:last-child td{ border-bottom: 0;}
.hist-issue{ display: inline-block; font-weight: 800; font-size: 16px; color: var(--ink); letter-spacing: .5px;}
.hist-date{ display: flex; flex-direction: column; gap: 2px; line-height: 1.25;}
.hist-date .hd-day{ font-size: 11px; color: var(--muted);}
.stat-pill{ display: inline-flex; align-items: center; justify-content: center; min-width: 44px; padding: 5px 10px; border-radius: 9px; background: #f4efe3; border: 1px solid var(--line); font-weight: 700; font-size: 13px; color: #4a463b;}
.stat-pill.sum{ background: rgba(191,164,111,.16); border-color: var(--gold-2); color: var(--gold-dark); font-size: 14px;}

/* 和值走势图 */
.trend-head{ display: flex; justify-content: flex-end; margin-bottom: 8px;}
.trend-legend{ display: inline-flex; flex-wrap: wrap; gap: 8px 16px; font-size: 12.5px; color: var(--muted); align-items: center;}
.trend-legend b{ color: var(--gold-dark);}
.trend-legend i{ display: inline-block; vertical-align: middle; margin-right: 2px;}
.trend-legend .tl-bar{ width: 11px; height: 11px; border-radius: 3px; background: linear-gradient(180deg,var(--gold-2),var(--gold-dark));}
.trend-legend .tl-avg{ width: 16px; height: 0; border-top: 2px dashed var(--gold-dark);}
.trend-chart{ margin-top: 6px;}
.tc-plot{ position: relative; height: 240px;}
.tc-bars{ display: flex; align-items: flex-end; gap: 6px; height: 100%;}
.tc-col{ flex: 1 1 0; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; cursor: default;}
.tc-val{ font-size: 11px; color: #6b6655; margin-bottom: 4px; font-weight: 600;}
.tc-bar{ width: 64%; max-width: 34px; min-height: 4px; border-radius: 6px 6px 0 0; background: linear-gradient(180deg,var(--gold-2),var(--gold-dark)); transition: .15s;}
.tc-col:hover .tc-bar{ box-shadow: 0 0 0 2px rgba(191,164,111,.35); filter: brightness(1.07);}
.tc-col.is-max .tc-bar{ background: linear-gradient(180deg,#e6c578,#9c7f49);}
.tc-col.is-max .tc-val{ color: var(--gold-dark); font-weight: 800;}
.tc-col.is-min .tc-bar{ background: linear-gradient(180deg,#dcd6c8,#aaa394);}
.tc-col.is-min .tc-val{ color: #9a958a;}
.tc-avg{ position: absolute; left: 0; right: 0; border-top: 2px dashed var(--gold-dark); z-index: 3; pointer-events: none;}
.tc-avg span{ position: absolute; right: 0; top: -10px; background: var(--gold-dark); color: #fff; font-size: 11px; font-weight: 700; border-radius: 6px; padding: 1px 7px;}
.tc-axis{ display: flex; gap: 6px; margin-top: 7px;}
.tc-axis .tc-x{ flex: 1 1 0; text-align: center; font-size: 11px; color: var(--muted);}
@media(max-width:760px){
  /* 移动端: 整块和值走势可左右滑动 (20 根柱保持舒适宽度) */
  .trend-chart{ overflow-x: auto; -webkit-overflow-scrolling: touch;}
  .tc-plot,.tc-axis{ min-width: 40rem;}
  .tc-bars,.tc-axis{ gap: 0.3125rem;}
  .tc-bar{ max-width: 1.6rem;}
  .tc-val,.tc-axis .tc-x{ font-size: 0.625rem;}
}

/* 概率与成本透明 + 独占指数 */
.prob-strip{ display: flex; gap: 12px; margin-top: 18px; align-items: stretch;}
.prob-item{ flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; justify-content: center; gap: 4px; padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px; background: #fcfaf4;}
.prob-item .ps-lbl{ font-size: 12px; color: var(--muted); letter-spacing: .2px;}
.prob-item b{ font-size: 19px; color: var(--ink); font-weight: 800; font-variant-numeric: tabular-nums; letter-spacing: .2px;}
.prob-item b small{ font-size: 12px; color: var(--muted); font-weight: 600;}
.prob-item i{ font-size: 11px; color: var(--muted); font-style: normal;}
.prob-ex{ position: relative;}
.prob-ex.ex-hi{ background: rgba(67,160,71,.1); border-color: #9cc9a2;}
.prob-ex.ex-hi b{ color: #2f7d3a;}
.prob-ex.ex-mid{ background: rgba(191,164,111,.14); border-color: var(--gold-2);}
.prob-ex.ex-mid b{ color: var(--gold-dark);}
.prob-ex.ex-lo{ background: rgba(192,57,43,.08); border-color: #e0a39c;}
.prob-ex.ex-lo b{ color: var(--red);}
.ex-tags{ display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px;}
.ex-tags-head{ display: inline-flex; margin-top: 0; margin-left: 8px; vertical-align: middle;}
.ex-tags-head .ex-tag{ padding: 2px 11px; line-height: 1.5;}
.ex-tag{ font-size: 12px; padding: 4px 11px; border-radius: 999px; border: 1px solid var(--line);}
.ex-tag.good{ background: rgba(67,160,71,.1); border-color: #9cc9a2; color: #2f7d3a;}
.ex-tag.bad{ background: rgba(192,57,43,.08); border-color: #e0a39c; color: var(--red);}

/* 共识票: 各策略投票明细 */
.vote-list{ display: flex; flex-direction: column; gap: 10px; margin-bottom: 20px;}
.vote-row{ display: flex; align-items: center; gap: 14px; flex-wrap: wrap; padding: 11px 15px; border: 1px solid var(--line); border-radius: 12px; background: #fcfaf4; transition: border-color .18s ease,background .18s ease;}
.vote-row:hover{ border-color: var(--gold-2); background: #faf6ec;}
.vote-name{ flex: 0 0 76px; font-weight: 700; color: var(--gold-dark); font-size: 13px;}
.vote-balls{ display: flex; flex-wrap: wrap; gap: 6px;}
.vt-title{ font-size: 13px; font-weight: 700; color: var(--ink); margin: 14px 0 8px;}
.vt-balls{ display: flex; flex-wrap: wrap; gap: 8px;}
.vt-chip{ display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px 4px 5px; border-radius: 999px; border: 1px dashed var(--line); background: #fff;}
.vt-chip i{ font-size: 11px; color: var(--muted); font-style: normal;}
.vt-chip.vt-on{ border-style: solid; border-color: var(--gold); background: rgba(191,164,111,.14); box-shadow: 0 0 0 2px rgba(191,164,111,.12);}
.vt-chip.vt-on i{ color: var(--gold-dark); font-weight: 700;}

/* 推号推理说明 */
.reason-card .reason-intro{ color: #4a463b; line-height: 1.9; font-size: 14px; margin: 0 0 20px;}
.reason-steps{ display: flex; flex-direction: column; gap: 18px;}
.reason-step{ display: flex; gap: 14px;}
.reason-step .rs-no{ flex: 0 0 30px; width: 30px; height: 30px; border-radius: 50%; background: linear-gradient(150deg,var(--gold-2),var(--gold-dark)); color: #fff; font-weight: 800; display: flex; align-items: center; justify-content: center; font-size: 14px; box-shadow: 0 3px 8px rgba(156,127,73,.32);}
.reason-step .rs-body{ flex: 1; min-width: 0;}
.reason-step .rs-title{ font-weight: 700; color: var(--ink); margin-bottom: 6px; font-size: 15px;}
.reason-step .rs-text{ color: #5a564a; font-size: 14px; line-height: 1.85;}
.reason-formula{ display: inline-block; background: #211f1b; color: var(--gold-2); border-radius: 8px; padding: 3px 11px; font-size: 13px; font-weight: 700;}
.reason-factors{ display: grid; grid-template-columns: repeat(auto-fill,minmax(240px,1fr)); gap: 12px;}
.reason-factor{ border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; background: #fcfaf4;}
.reason-factor .rf-top{ display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 5px;}
.reason-factor .rf-name{ font-weight: 700; color: var(--ink); font-size: 14px;}
.reason-factor .rf-weight{ flex: 0 0 auto; font-size: 12px; font-weight: 800; color: var(--gold-dark); background: rgba(191,164,111,.16); border: 1px solid var(--gold-2); border-radius: 999px; padding: 1px 10px; font-variant-numeric: tabular-nums;}
.reason-factor .rf-desc{ font-size: 13px; color: #5a564a; line-height: 1.75;}
.reason-note{ font-size: 12px; color: var(--muted); margin: 18px 0 0; line-height: 1.75; padding-top: 14px; border-top: 1px solid var(--line);}

/* 我的收藏: 按 期号+彩种 分组的圆角盒 */
.pick-group{ border: 1px solid var(--line); border-radius: 14px; overflow: hidden; margin-bottom: 16px; background: #fff;}
.pick-group .pg-head{ display: flex; align-items: center; flex-wrap: wrap; gap: 10px; padding: 11px 16px; background: linear-gradient(180deg,#f9f5ec,#f3ecdb); border-bottom: 1px solid var(--line);}
.pg-dot{ width: 9px; height: 9px; border-radius: 50%; background: var(--c,#bfa46f); flex: 0 0 auto;}
.pg-type{ font-weight: 800; color: var(--ink);}
.pg-issue{ color: #5a564a; font-size: 14px;}
.pg-issue b{ color: var(--gold-dark); font-size: 15px;}
.pg-head .mp-pending{ margin-top: 0;}
.pg-act{ margin-left: auto; display: inline-flex; align-items: center; gap: 10px;}
.pg-count{ color: var(--muted); font-size: 12px;}
.pg-copy-all{ background: #fff;}
/* 收藏列表: 每注一张卡 (竖向: 号码 → 标签 → 备注 → 分隔线 → 时间+操作) */
.pk-list{ display: flex; flex-direction: column;}
.pk{ position: relative; padding: 16px; border-bottom: 1px solid var(--line); cursor: pointer; transition: background .14s;}
.pk:last-child{ border-bottom: 0;}
.pk:hover{ background: #fcfaf4;}
.pk-row{ display: flex; align-items: center; gap: 12px;}
.pk-row .pk-balls{ flex: 1 1 auto; min-width: 0;}
.pk-sel{ flex: 0 0 auto; display: inline-flex; cursor: pointer;}
/* 自定义勾选框 (收藏列表 + 全选 通用) */
.pick-checkbox{ appearance: none; -webkit-appearance: none; -moz-appearance: none; flex: 0 0 auto; width: 20px; height: 20px; margin: 0; border: 1.5px solid #d8d2c4; border-radius: 6px; background: #fff; cursor: pointer; position: relative; transition: background .15s,border-color .15s;}
.pick-checkbox:hover{ border-color: var(--gold-2);}
.pick-checkbox:checked{ background: var(--gold-dark); border-color: var(--gold-dark);}
.pick-checkbox:checked::after{ content: ""; position: absolute; left: 6px; top: 2px; width: 6px; height: 10px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg);}
.pick-checkbox:indeterminate{ background: var(--gold-dark); border-color: var(--gold-dark);}
.pick-checkbox:indeterminate::after{ content: ""; position: absolute; left: 4px; right: 4px; top: 9px; height: 2px; background: #fff;}
.pick-checkbox:focus-visible{ outline: 2px solid var(--gold-dark); outline-offset: 2px;}
.pk-tags{ display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 12px;}
.pk-tags .mp-ex{ margin-left: 0;}
.pk-note{ margin-top: 8px; font-size: 13px; color: var(--muted); line-height: 1.45;}
.pk-foot{ display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line);}
.pk-time{ font-size: 12px; color: var(--muted);}
.pk-actions{ display: flex; gap: 8px;}
.mp-ex{ display: inline-flex; align-items: center; gap: 3px; margin-left: 10px; font-size: 11px; padding: 2px 9px; border-radius: 999px; border: 1px solid var(--line); cursor: help; vertical-align: middle; white-space: nowrap;}
.mp-ex b{ font-size: 12px;}
.mp-ex.ex-hi{ background: rgba(67,160,71,.1); border-color: #9cc9a2; color: #2f7d3a;}
.mp-ex.ex-mid{ background: rgba(191,164,111,.14); border-color: var(--gold-2); color: var(--gold-dark);}
.mp-ex.ex-lo{ background: rgba(192,57,43,.08); border-color: #e0a39c; color: var(--red);}

/* 最新开奖卡片 */
/* 最新开奖卡片 (饱满高级版) */

/* 统计条 */

/* 号码球 */
.balls{ display: inline-flex; flex-wrap: wrap; gap: 6px; align-items: center;}
.ball{ display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 50%; color: #fff; font-weight: 700; font-size: 15px; box-shadow: inset 0 -3px 6px rgba(0,0,0,.15);}
.ball-red{ background: radial-gradient(circle at 30% 30%,#ff6b6b,#e53935);}
.ball-blue{ background: radial-gradient(circle at 30% 30%,#5aa8f5,#1e88e5);}
.ball-sm{ width: 28px; height: 28px; font-size: 13px;}
/* 七星彩定位数字球 (前6位紫, 末位特别号橙) */
.qxc-ball{ background: radial-gradient(circle at 30% 30%,#b39ddb,#7e57c2);}
.qxc-ball.qxc-special{ background: radial-gradient(circle at 30% 30%,#ffb74d,#f57c00);}
.qxc-balls{ display: inline-flex; gap: 6px; flex-wrap: wrap;}
/* 七星彩复式: 每位个数选择网格 */
.qxc-comp-grid{ display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); gap: 10px; margin-top: 6px;}
.qcp-cell{ display: flex; flex-direction: column; align-items: center; gap: 6px; min-width: 0;}
.qcp-lbl{ font-size: 12px; color: #9c8b6a;}
.qcp-step{ display: flex; width: 100%; height: 48px;}
.qcp-step button{ flex: 0 0 30px; width: 30px; font-size: 18px;}
.qcp-step input{ flex: 1 1 auto; width: 0; min-width: 0; font-size: 16px;}
/* 七星彩复式票展示 */
.qxc-comp-ticket{ display: flex; flex-direction: column; gap: 8px;}
.qct-pos{ display: flex; align-items: center; gap: 10px;}
.qct-pos-lbl{ flex: 0 0 32px; font-size: 12px; color: #9c8b6a; font-weight: 700;}
/* 七星彩共识票: 投票明细 */
.qxc-ball.vote-win{ box-shadow: 0 0 0 3px #fff,0 0 0 5px var(--gold);}
.qxc-vote-grid{ display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); gap: 10px; margin-top: 10px;}
.qvt-pos{ display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 10px 6px; border: 1px solid var(--line); border-radius: 10px; background: #fcfaf4; min-width: 0;}
.qvt-lbl{ font-size: 12px; color: #9c8b6a; font-weight: 700;}
.qvt-cand{ display: flex; align-items: center; gap: 5px; opacity: .62;}
.qvt-cand.on{ opacity: 1;}
.qvt-cand.on .ball{ box-shadow: 0 0 0 2px #fff,0 0 0 4px var(--gold);}
.qvt-cand i{ font-size: 11px; color: #8a7a5c; font-style: normal;}
/* 窄屏: 7 个位置投票卡改为横向滑动条 (避免 1fr 撑破页面) */
@media(max-width:760px){
  .qxc-vote-grid{ display: flex; flex-wrap: nowrap; gap: 0.5rem; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none;}
  .qxc-vote-grid::-webkit-scrollbar{ display: none;}
  .qvt-pos{ flex: 0 0 4.5rem;}
}
/* 七星彩推号: 当前策略说明条 */
.strat-note{ display: flex; align-items: baseline; gap: 11px; margin-top: 18px; padding: 13px 16px; background: #faf6ec; border: 1px solid var(--line); border-left: 3px solid var(--gold); border-radius: 0 12px 12px 0;}
.sn-tag{ flex: 0 0 auto; font-weight: 700; color: var(--gold-dark); font-size: 13px;}
.sn-text{ font-size: 13px; color: #6a5d44; line-height: 1.7;}
/* 七星彩走势 */
.qxc-trend td,.qxc-trend th{ text-align: center;}
.qxc-trend .qxc-cell{ font-weight: 700; color: #5e35b1; font-size: 14px;}
.qxc-trend .qxc-cell-special{ color: #f57c00;}
.qxc-trend .qxc-sum{ font-weight: 700; color: var(--gold-dark); background: var(--gold-soft);}
.qxc-freq-grid{ display: grid; grid-template-columns: repeat(7,1fr); gap: 10px;}
@media(max-width:760px){.qxc-freq-grid{ grid-template-columns: repeat(2,1fr);}}
.qxc-freq-pos{ border: 1px solid var(--line); border-radius: 12px; padding: 10px 8px; background: #fcfaf4;}
.qfp-title{ font-size: 12.5px; font-weight: 700; color: var(--ink); text-align: center; margin-bottom: 8px;}
.qfp-title small{ color: var(--muted); font-weight: 500;}
.qfp-bars{ display: flex; flex-direction: column; gap: 3px;}
.qfp-bar{ display: flex; align-items: center; gap: 6px;}
.qfp-track{ flex: 1; height: 14px; background: #efe9dc; border-radius: 7px; overflow: hidden;}
.qfp-fill{ display: block; height: 100%; width: 0; background: linear-gradient(90deg,#b39ddb,#7e57c2); border-radius: 7px;}
.qfp-bar.is-hot .qfp-fill{ background: linear-gradient(90deg,#ffb74d,#f57c00);}
.qfp-bar.is-cold .qfp-fill{ background: #cfc9bd;}
.qfp-d{ width: 16px; text-align: center; font-size: 11px; font-weight: 700; color: #5a564a;}
.qfp-c{ width: 18px; text-align: right; font-size: 10px; color: var(--muted);}
/* 七星彩各位置冷热 */
.qxc-hc-grid{ display: grid; grid-template-columns: repeat(7,1fr); gap: 10px;}
@media(max-width:760px){.qxc-hc-grid{ grid-template-columns: repeat(2,1fr);}}
.qxc-hc-pos{ border: 1px solid var(--line); border-radius: 12px; padding: 10px 8px; background: #fcfaf4; text-align: center;}
.qhc-title{ font-size: 12.5px; font-weight: 700; color: var(--ink); margin-bottom: 8px;}
.qhc-row{ display: flex; align-items: center; justify-content: center; gap: 6px; margin-top: 6px;}
.qhc-lbl{ display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: var(--muted);}
.qhc-dot{ width: 7px; height: 7px; border-radius: 50%;}
.qhc-dot.hot{ background: #f57c00;}
.qhc-dot.cold{ background: #9fb4cc;}
.qxc-hc-pos i{ font-size: 11px; color: var(--muted); font-style: normal;}
/* 判中: 未中置灰半透明, 命中保持彩色并高亮 */
.ball-miss{ background: radial-gradient(circle at 30% 30%,#cfcfcf,#a9a9a9)!important; opacity: .6; box-shadow: inset 0 -3px 6px rgba(0,0,0,.1);}
.ball-hit{ opacity: 1; box-shadow: inset 0 -3px 6px rgba(0,0,0,.15),0 0 0 2px #fff,0 0 0 4px rgba(191,164,111,.85);}
/* 复式包号计算器 */
.calc-inputs{ display: flex; align-items: flex-end; gap: 24px; flex-wrap: wrap; padding-bottom: 18px; border-bottom: 1px solid var(--line);}
.calc-field{ display: flex; flex-direction: column; gap: 8px;}
.calc-field>label{ font-size: 13px; font-weight: 600; color: #6b6655;}
.calc-field>label small{ color: var(--muted); font-weight: 400;}
.calc-receipt{ margin-left: auto; flex-direction: row; align-items: center; gap: 18px;}
.calc-bets{ font-size: 14px; color: var(--muted);}
.calc-bets b{ font-size: 22px; color: var(--ink); font-weight: 800; margin-right: 2px;}
.calc-money{ font-size: 14px; color: var(--gold-dark);}
.calc-money b{ font-size: 22px; font-weight: 800;}
.calc-assume{ display: flex; align-items: center; gap: 16px; flex-wrap: wrap; padding: 16px 0;}
.calc-assume-lbl{ font-size: 14px; font-weight: 600; color: var(--ink); white-space: nowrap;}
.calc-hit{ display: flex; gap: 18px; flex-wrap: wrap;}
.calc-hit label{ font-size: 13px; color: #6b6655; display: inline-flex; align-items: center; gap: 6px; white-space: nowrap;}
.calc-hit select{ height: 36px; min-width: 62px; border: 1px solid var(--line); border-radius: 9px; padding: 0 30px 0 12px; font-size: 15px; background-color: #fff; font-weight: 700; color: var(--ink); cursor: pointer;}
.calc-table{ width: 100%; border-collapse: collapse; font-size: 14px; margin-top: 4px;}
.calc-table th{ text-align: left; padding: 9px 12px; background: #faf7ef; color: #6b6655; font-weight: 600; border-bottom: 1px solid var(--line);}
.calc-table td{ padding: 9px 12px; border-bottom: 1px solid #f0ece2;}
.calc-table .num{ text-align: right;}
.calc-table tfoot td{ font-weight: 700; border-top: 2px solid var(--line); border-bottom: 0; background: #fdfbf6;}
.calc-table tfoot b{ color: var(--gold-dark); font-size: 16px;}
.calc-float{ color: #c0392b; font-weight: 700;}
.calc-empty{ padding: 22px; text-align: center; color: var(--muted); background: #faf7ef; border-radius: 12px; margin-top: 6px;}

/* 命中复盘 */
.st-hint{ font-size: 12.5px; font-weight: 400; color: var(--muted);}

.review-note{ margin: 14px 2px 0; font-size: 12.5px; color: var(--muted);}

/* 收藏列表 · 批量操作 (勾选框样式见上方 .pick-checkbox) */
.batch-bar{ display: flex; align-items: center; gap: 14px; padding-top: 14px;}
.batch-count{ display: inline-flex; align-items: center; gap: 7px; font-size: 13px; color: var(--muted);}
.batch-count .bc-sep{ color: var(--line);}
.batch-all{ display: inline-flex; align-items: center; gap: 5px; cursor: pointer; color: #5a564a;}
.batch-all input{ margin: 0; vertical-align: middle;}
.batch-count b{ color: var(--gold-dark); font-size: 15px;}
.batch-actions{ margin-left: auto; display: flex; gap: 10px;}
.batch-actions .btn-sm{ padding: 8px 16px;}
.batch-del-btn:hover{ border-color: #c0392b; color: #c0392b; background: #fdecea;}

/* 轻提示 toast */
.toast{ position: fixed; inset: 0; z-index: 400; display: flex; align-items: center; justify-content: center; padding: 0 20px; pointer-events: none; opacity: 0; transition: opacity .22s;}
.toast.show{ opacity: 1;}
.toast-card{ display: flex; align-items: center; gap: 14px; max-width: 340px; padding: 16px 22px; border-radius: 16px; background: rgba(27,26,23,.93); box-shadow: 0 18px 54px rgba(0,0,0,.4); transform: scale(.9); transition: transform .26s cubic-bezier(.34,1.56,.64,1);}
.toast.show .toast-card{ transform: scale(1);}
.toast-ico{ width: 40px; height: 40px; flex: 0 0 auto; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 21px; font-weight: 800; color: #1b1a17; background: linear-gradient(120deg,var(--gold-2),var(--gold-dark));}
.toast-txt{ display: flex; flex-direction: column; gap: 3px;}
.toast-txt b{ font-size: 15px; font-weight: 700; line-height: 1.4; color: #fff;}
.toast-txt i{ font-size: 12.5px; font-style: normal; line-height: 1.4; color: rgba(255,255,255,.7);}

/* 我的数据: 左右两个独立 box */

/* 左: 我的信息 */

/* 右: 数据 box (顶部 menu + 下方一行数据) */

/* menu 区: 顶部独立条 */

/* 数据行 */

.mp-pending{ display: inline-block; margin-top: 3px; padding: 1px 8px; border-radius: 20px; font-size: 11px; background: #f0ece2; color: var(--muted);}
.mp-win{ font-size: 13px; font-weight: 600; white-space: nowrap;}
.mp-win-none{ color: var(--muted);}
.mp-win-hit{ color: #c0392b;}
.mp-win-hit b{ font-size: 14px;}
.mp-win-big{ display: inline-block; padding: 2px 10px; border-radius: 20px; font-weight: 700; color: #7a5b12; background: linear-gradient(120deg,#ffe9a8,#f4d77a); box-shadow: 0 2px 8px rgba(191,164,111,.4);}
/* 手动添加按钮 (筛选栏右侧) */

/* 弹窗 */
.modal-overlay{ display: none; position: fixed; inset: 0; z-index: 200; align-items: center; justify-content: center; padding: 20px; background: rgba(27,26,23,.55); backdrop-filter: blur(3px); animation: modalFade .2s ease;}
.modal{ position: relative; width: 100%; max-width: 480px; background: #fff; border-radius: 18px; padding: 26px 28px 24px; box-shadow: 0 24px 70px rgba(27,26,23,.35); animation: modalPop .26s cubic-bezier(.34,1.56,.64,1);}
.modal-close{ position: absolute; top: 14px; right: 16px; width: 34px; height: 34px; border: 0; border-radius: 50%; cursor: pointer; font-size: 22px; line-height: 1; color: var(--muted); background: #f4f1ea; transition: .16s;}
.modal-close:hover{ background: #ece6d8; color: var(--ink);}
.modal-head{ margin-bottom: 18px; padding-bottom: 16px;}
.modal-head h3{ margin: 0; font-size: 19px; color: var(--ink);}
.modal-issue{ margin-top: 10px; display: inline-block; padding: 5px 14px; border-radius: 20px; font-size: 13px; font-weight: 600; color: var(--gold-dark); background: linear-gradient(120deg,var(--gold-soft),#fff);}
.modal-issue b{ font-size: 17px; font-weight: 800; margin: 0 2px;}
.modal-addpick .ap-grid{ grid-template-columns: 1fr; gap: 14px;}
.modal-addpick .ap-foot{ display: flex; justify-content: flex-end; gap: 12px; margin-top: 20px;}
.modal-addpick .ap-foot .btn-ghost{ padding: 11px 22px; border-radius: 11px;}

/* HTML 确认弹窗 */
.modal-overlay.ui-confirm{ animation: none; opacity: 0; transition: opacity .18s ease;}
.modal-overlay.ui-confirm.show{ opacity: 1;}
.uc-modal{ max-width: 380px; text-align: center; padding: 30px 28px 24px;}
.uc-ico{ font-size: 34px; line-height: 1; margin-bottom: 12px;}
.uc-title{ font-size: 18px; font-weight: 800; color: var(--ink); margin-bottom: 8px;}
.uc-msg{ font-size: 14px; color: #5a564a; line-height: 1.75; margin-bottom: 22px;}
.uc-msg b{ color: var(--gold-dark); font-size: 16px; margin: 0 2px;}
.uc-foot{ display: flex; justify-content: center; gap: 12px;}
.uc-foot .btn-ghost,.uc-foot .btn{ padding: 10px 24px; border-radius: 11px;}
@keyframes modalFade{from{ opacity: 0;}to{ opacity: 1;}}
@keyframes modalPop{from{ opacity: 0; transform: translateY(14px) scale(.96);}to{ opacity: 1; transform: none;}}

.plus{ color: #bbb; font-weight: 700; margin: 0 2px;}

/* 表格 */
table{ width: 100%; border-collapse: collapse; font-size: 14px;}
th,td{ padding: 10px 8px; border-bottom: 1px solid var(--line); text-align: left;}
th{ color: var(--muted); font-weight: 600; background: #faf7f0;}
tr:hover td{ background: #faf7f0;}

/* 表单 */

input[type=text],input[type=password],input[type=email],input[type=date],input[type=number],select{ width: 100%; padding: 10px 13px; border: 1px solid #d9d3c4; border-radius: 10px; font-size: 15px; background: #fff; transition: .18s;}
input:focus,select:focus{ outline: none; border-color: var(--gold); box-shadow: 0 0 0 3px rgba(191,164,111,.18);}
select{ -webkit-appearance: none; -moz-appearance: none; appearance: none; padding-right: 38px; background-color: #fff; background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%236b6655' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 14px center; background-size: 11px;}
select::-ms-expand{ display: none;}
.btn{ display: inline-block; padding: 10px 20px; border: none; border-radius: 10px; background: var(--ink); color: #fff; font-size: 15px; font-weight: 600; cursor: pointer; transition: .18s;}
.btn:hover{ background: #000;}

.btn-gold{ background: var(--gold); color: var(--ink);} .btn-gold:hover{ background: var(--gold-dark); color: #fff;}
.btn-sm{ padding: 6px 13px; font-size: 13px;}

/* 最新开奖卡片 · 高级按钮 */

.error{ color: var(--red); font-size: 14px; margin: 8px 0;}

/* ===== 登录 / 注册 ===== */

/* 左: 品牌面板 */

/* 右: 表单面板 */

.auth-errors{ margin: 0 0 18px; padding: 11px 14px; border-radius: 11px; background: rgba(192,57,43,.08); border: 1px solid #e0a39c; color: var(--red); font-size: 13px; line-height: 1.6;}
.auth-errors p{ margin: 2px 0;}
.auth-field{ margin-bottom: 15px;}
.auth-field > label{ display: block; font-size: 13px; font-weight: 600; color: #5a564a; margin-bottom: 7px;}

.auth-pass{ position: relative;}
.auth-pass input{ padding-right: 60px;}
.auth-eye{ position: absolute; top: 0; right: 0; height: 48px; padding: 0 14px; border: 0; background: none; color: var(--gold-dark); font-size: 13px; font-weight: 600; cursor: pointer;}
.auth-submit{ width: 100%; height: 50px; margin-top: 8px; border-radius: 12px; font-size: 16px; font-weight: 700; letter-spacing: 2px; background: linear-gradient(120deg,var(--gold-2),var(--gold-dark)); color: var(--ink); box-shadow: 0 8px 20px rgba(156,127,73,.32); transition: filter .15s,box-shadow .15s,transform .15s;}
.auth-submit:hover{ background: linear-gradient(120deg,var(--gold-2),var(--gold-dark)); filter: brightness(1.05); box-shadow: 0 10px 24px rgba(156,127,73,.42);}
.auth-submit:active{ transform: translateY(1px);}

/* 机选面板 */
.pick-card{ padding: 0; overflow: hidden; display: flex; flex-direction: column; position: relative; transition: transform .25s,box-shadow .25s;}

/* 头部 —— 香槟金渐变 + 光晕 + 漂浮号码球 */
.pick-head{ position: relative; display: flex; align-items: center; gap: 16px; padding: 26px 28px; overflow: hidden; background: linear-gradient(125deg,#fbf6ea 0%,#f2e7cd 55%,#ecdcb6 100%); border-bottom: 1px solid rgba(191,164,111,.35);}
.pick-head.head-gold{ background: linear-gradient(125deg,#f6ecd4 0%,#ecd9ac 55%,#e2c989 100%);}
.pick-head::before{ content: ""; position: absolute; top: -60%; right: -10%; width: 240px; height: 240px; border-radius: 50%; background: radial-gradient(circle,rgba(255,255,255,.7),transparent 65%); pointer-events: none;}
.pick-ico{ position: relative; z-index: 1; flex: 0 0 auto; width: 56px; height: 56px; border-radius: 17px; display: flex; align-items: center; justify-content: center; font-size: 28px; background: linear-gradient(150deg,#fff,#f3e8cd); box-shadow: 0 6px 16px rgba(156,127,73,.35),inset 0 0 0 1px rgba(255,255,255,.6); animation: pickGlow 2.6s ease-in-out infinite;}
.pick-ico.gold{ background: linear-gradient(150deg,var(--gold-2),var(--gold-dark)); box-shadow: 0 6px 18px rgba(156,127,73,.5);}
@keyframes pickGlow{0%,100%{ box-shadow: 0 6px 16px rgba(156,127,73,.3),inset 0 0 0 1px rgba(255,255,255,.6);}
  50%{ box-shadow: 0 6px 24px rgba(191,164,111,.6),inset 0 0 0 1px rgba(255,255,255,.6);}}
.pick-head-txt{ position: relative; z-index: 1;}
.pick-head-txt h2{ margin: 0; font-size: 20px; color: var(--ink); letter-spacing: .5px;}
.pick-head-txt p{ margin: 5px 0 0; font-size: 13px; color: #7a7460;}

/* 漂浮号码球装饰 */
.pick-orbs{ position: absolute; top: 0; right: 18px; height: 100%; width: 140px; z-index: 0; pointer-events: none;}
.pick-orbs .orb{ position: absolute; width: 38px; height: 38px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700; color: #fff; box-shadow: 0 4px 10px rgba(0,0,0,.18),inset 0 -3px 6px rgba(0,0,0,.18); opacity: .92; animation: orbFloat 4s ease-in-out infinite;}
.pick-orbs .orb.red{ background: radial-gradient(circle at 32% 28%,#e26152,var(--red));}
.pick-orbs .orb.blue{ background: radial-gradient(circle at 32% 28%,#4e8fcf,var(--blue));}
.pick-orbs .orb.qxc{ background: radial-gradient(circle at 32% 28%,#b39ddb,#7e57c2);}
.pick-orbs .orb.qxc-sp{ background: radial-gradient(circle at 32% 28%,#ffb74d,#f57c00);}
.pick-orbs .orb:nth-child(1){ top: 18%; right: 78px; animation-delay: 0s;}
.pick-orbs .orb:nth-child(2){ top: 46%; right: 22px; width: 46px; height: 46px; font-size: 15px; animation-delay: .8s;}
.pick-orbs .orb:nth-child(3){ top: 30%; right: 108px; width: 30px; height: 30px; font-size: 11px; animation-delay: 1.6s;}
@keyframes orbFloat{0%,100%{ transform: translateY(0) rotate(-4deg);}50%{ transform: translateY(-9px) rotate(4deg);}}

.pick-body{ padding: 30px; display: flex; flex-direction: column; gap: 16px;}
.pick-field{ display: flex; flex-direction: column; gap: 10px;}
.pick-field>label{ font-size: 13px; font-weight: 600; color: #6b6655;}
.pick-field-row{ display: flex; gap: 24px; flex-wrap: wrap;}
.pick-field-row .pick-field{ flex: 1 1 130px;}

.pick-row{ display: flex; align-items: center; gap: 14px; flex-wrap: wrap;}

/* 圆形摇奖机 */
.draw-machine{ position: relative; display: flex; justify-content: center; margin-bottom: 22px; padding-bottom: 8px;}
.dm-drum{ position: relative; width: 230px; height: 230px; border-radius: 50%; overflow: hidden; background: radial-gradient(120% 120% at 38% 28%,#ffffff,#f6eed9 55%,#ead9b2 100%); border: 6px solid #fff; box-shadow: 0 14px 30px rgba(156,127,73,.3),0 0 0 3px var(--gold),inset 0 -10px 22px rgba(156,127,73,.25),inset 0 8px 18px rgba(255,255,255,.8);}
.dm-balls{ position: absolute; inset: 0; transform-origin: 50% 50%;}
.dm-shine{ position: absolute; top: 8%; left: 14%; width: 46%; height: 34%; border-radius: 50%; pointer-events: none; background: radial-gradient(circle at 35% 35%,rgba(255,255,255,.9),transparent 70%);}

.dm-ball{ position: absolute; left: 0; top: 0; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 700; color: #fff; will-change: transform; line-height: 1; box-shadow: inset 0 -2px 4px rgba(0,0,0,.28),inset 0 2px 3px rgba(255,255,255,.5),0 1px 2px rgba(0,0,0,.2);}
.dm-ball.red{ background: radial-gradient(circle at 32% 28%,#ec6b5c,var(--red));}
.dm-ball.blue{ background: radial-gradient(circle at 32% 28%,#5896d2,var(--blue));}

/* 抖动时滚筒晃动 (球位移由物理引擎驱动) */
.draw-machine.spinning .dm-drum{ animation: dmWobble .12s linear infinite;}
@keyframes dmWobble{0%{ transform: translate(-2px,0) rotate(-1deg);}50%{ transform: translate(2px,-1px) rotate(1deg);}100%{ transform: translate(-2px,1px) rotate(-1deg);}}
/* 出球瞬间出球口闪一下 */

/* 出球喷射动画 */
.dm-eject{ position: absolute; left: 50%; bottom: 4px; width: 0; height: 0; pointer-events: none; z-index: 6;}
.dm-eject .eb{ position: absolute; left: 0; top: 0; width: 34px; height: 34px; margin: -17px 0 0 -17px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 700; color: #fff; opacity: 0; box-shadow: 0 4px 10px rgba(0,0,0,.3),inset 0 -2px 5px rgba(0,0,0,.25),inset 0 2px 4px rgba(255,255,255,.5); animation-name: ebOut; animation-timing-function: cubic-bezier(.25,.8,.35,1); animation-fill-mode: both;}
.dm-eject .eb.red{ background: radial-gradient(circle at 32% 28%,#ec6b5c,var(--red));}
.dm-eject .eb.blue{ background: radial-gradient(circle at 32% 28%,#5896d2,var(--blue));}
@keyframes ebOut{
  0%{ transform: translateY(0) scale(.3); opacity: 0;}
  18%{ opacity: 1;}
  55%{ transform: translateY(30px) scale(1.7); opacity: 1;}
  100%{ transform: translateY(48px) scale(2.3); opacity: 0;}}

/* 快捷预设小球 */
.quick-chips{ display: inline-flex; gap: 8px; flex-wrap: wrap;}
.quick-chips button{ width: 42px; height: 42px; border-radius: 50%; border: 1px dashed var(--gold); background: #fff; color: var(--gold-dark); font-size: 14px; font-weight: 700; cursor: pointer; transition: .16s;}
.quick-chips button:hover{ background: var(--gold-soft); transform: translateY(-2px);}
.quick-chips button.on{ background: linear-gradient(150deg,var(--gold-2),var(--gold-dark)); color: #fff; border-style: solid; border-color: transparent; box-shadow: 0 4px 10px rgba(156,127,73,.4);}

/* 实时回执条 (浅色) */
.pick-receipt{ display: flex; align-items: center; gap: 14px; flex-wrap: wrap; padding: 16px 22px; border-radius: 14px; background: linear-gradient(120deg,#fbf7ec,#f4ebd6); border: 1px solid var(--line); box-shadow: inset 0 0 0 1px rgba(255,255,255,.5);}
.pick-receipt .rcpt-item{ display: flex; flex-direction: column; align-items: center; line-height: 1.1;}
.pick-receipt .rcpt-num{ font-size: 24px; font-weight: 800; color: var(--ink); font-variant-numeric: tabular-nums;}
.pick-receipt .rcpt-item small{ font-size: 11px; color: #8a836f; margin-top: 4px;}
.pick-receipt .rcpt-x,.pick-receipt .rcpt-eq{ color: var(--gold-dark); font-size: 17px; font-weight: 700;}
.pick-receipt .rcpt-item.gold{ margin-left: auto; flex-direction: row; align-items: baseline; gap: 3px; padding: 6px 16px; border-radius: 11px; background: linear-gradient(150deg,var(--gold-2),var(--gold-dark)); box-shadow: 0 4px 12px rgba(156,127,73,.35);}
.pick-receipt .rcpt-item.gold .rcpt-cur{ color: #fff; font-size: 16px; font-weight: 700;}
.pick-receipt .rcpt-item.gold .rcpt-num{ color: #fff;}
.pick-receipt .rcpt-item.gold small{ align-self: flex-end; margin: 0 0 2px 4px; color: #fff; opacity: .85;}
.rcpt-num.bump{ animation: rcptBump .35s ease;}
@keyframes rcptBump{0%{ transform: scale(1);}40%{ transform: scale(1.28); color: var(--gold-dark);}100%{ transform: scale(1);}}
@media(max-width:760px){.pick-receipt .rcpt-item.gold{ margin-left: 0;}}

/* 流光 CTA */
.pick-cta{ position: relative; overflow: hidden; margin-top: 4px; width: 100%; height: 52px; font-size: 16px; border-radius: 10px; letter-spacing: 2px;}
.pick-issue{ display: none; margin-top: 12px; padding: 9px 14px; text-align: center; font-size: 14px; font-weight: 600; color: var(--gold-dark); letter-spacing: .5px;}
.pick-issue.show{ display: block; animation: pickIssueIn .35s ease;}
@keyframes pickIssueIn{from{ opacity: 0; transform: translateY(-4px);}to{ opacity: 1; transform: none;}}
.pick-issue b{ font-size: 18px; font-weight: 800; color: var(--gold-dark); margin: 0 2px;}
.pick-cta.is-spinning{ opacity: .75; cursor: progress;}
.pick-cta::after{ content: ""; position: absolute; top: 0; left: -70%; width: 45%; height: 100%; transform: skewX(-22deg); pointer-events: none; background: linear-gradient(105deg,transparent,rgba(255,255,255,.5),transparent); animation: ctaShine 3.2s ease-in-out infinite;}
@keyframes ctaShine{0%{ left: -70%;}55%,100%{ left: 160%;}}

/* 数字步进器 */
.stepper{ display: inline-flex; align-items: stretch; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; width: 160px; background: #fff;}
.stepper:focus-within{ border-color: var(--gold); box-shadow: 0 0 0 3px rgba(191,164,111,.18);}
.stepper button{ width: 46px; border: 0; background: #f4eede; color: var(--gold-dark); font-size: 22px; font-weight: 700; cursor: pointer; transition: .15s; line-height: 1;}
.stepper button:hover{ background: var(--gold); color: #fff;}
.stepper input{ flex: 1; width: 0; min-width: 0; border: 0; outline: 0; text-align: center; font-size: 18px; font-weight: 700; color: var(--ink); background: transparent; -moz-appearance: textfield;}
.stepper input::-webkit-outer-spin-button,.stepper input::-webkit-inner-spin-button{ -webkit-appearance: none; margin: 0;}
.pick-card .result-area{ padding: 0 28px 24px;}
.pick-card .result-area:not(:empty){ margin-top: 4px;}
/* 出号弹入动效 */
.pick-card .result-area .ball{ animation: ballPop .45s cubic-bezier(.34,1.56,.64,1) both;}
.pick-card .result-area .ball:nth-child(2){ animation-delay: .05s;}
.pick-card .result-area .ball:nth-child(3){ animation-delay: .1s;}
.pick-card .result-area .ball:nth-child(4){ animation-delay: .15s;}
.pick-card .result-area .ball:nth-child(5){ animation-delay: .2s;}
.pick-card .result-area .ball:nth-child(6){ animation-delay: .25s;}
.pick-card .result-area .ball:nth-child(7){ animation-delay: .3s;}
@keyframes ballPop{0%{ transform: scale(0) rotate(-40deg); opacity: 0;}100%{ transform: scale(1) rotate(0); opacity: 1;}}

/* 彩种切换标签 */
.tabs{ display: inline-flex; background: #ece6d8; border-radius: 12px; padding: 4px; margin-bottom: 20px;}
.tabs a{ padding: 8px 24px; border-radius: 9px; color: #6b6655; font-weight: 600; transition: .18s; cursor: pointer;}
.tabs a:hover{ color: var(--ink);}
.tabs a.on{ background: var(--ink); color: var(--gold-2); box-shadow: 0 2px 8px rgba(27,26,23,.18);}

/* hero */

/* 未来感图层: 数字雨(canvas) + 科技网格 + 扫描线 */

/* LIVE 指示 */
.hero-live{ display: inline-flex; align-items: center; gap: 9px; margin-bottom: 18px; padding: 5px 13px; border-radius: 999px; font-family: Consolas,Menlo,monospace; font-size: 11.5px; font-weight: 700; letter-spacing: .14em; border: 1px solid rgba(205,181,130,.32); background: rgba(205,181,130,.06); text-transform: uppercase;}

/* 顶部小徽章 */

/* 流光扫过 */

/* 背景漂浮号码球 (霓虹发光) */
.hero-orbs{ position: absolute; inset: 0; z-index: 1; pointer-events: none; overflow: hidden;}

.hero-stats{ display: flex; gap: 16px; flex-shrink: 0; position: relative; z-index: 2;}

/* 移动端 hero/导航等规则统一见文件末尾「移动端整理」区块 */
/* 功能导航: 一行, 无卡片 */

/* 各功能语义配色 (圆形图标底色) */

/* 统计条 */
.statbar{ display: flex; align-items: center; gap: 8px; margin: 5px 0; font-size: 13px;}
.statbar .lab{ width: 34px; text-align: right; color: #6b6655;}
.statbar .track{ flex: 1; background: #ece6d8; border-radius: 6px; height: 16px; overflow: hidden;}
.statbar .fill{ height: 100%; background: linear-gradient(90deg,var(--gold-2),var(--gold-dark)); border-radius: 6px;}
.statbar .val{ width: 30px; color: var(--muted);}

.badge{ display: inline-block; padding: 2px 9px; border-radius: 12px; font-size: 12px; background: #ece6d8; color: #6b6655;}

.pager{ display: flex; gap: 6px; justify-content: center; margin-top: 18px; flex-wrap: wrap;}
.pager a,.pager span{ padding: 7px 12px; border: 1px solid var(--line); border-radius: 8px; font-size: 14px; color: #5a564a;}
.pager .on{ background: var(--ink); color: var(--gold-2); border-color: var(--ink);}
.muted{ color: var(--muted);} .center{ text-align: center;}
.empty{ text-align: center; padding: 40px; color: var(--muted);}

/* 走势图 */
.ball-xs{ width: 24px; height: 24px; font-size: 12px; box-shadow: inset 0 -2px 4px rgba(0,0,0,.18);}
.chart-table .zone-sep{ border-left: 2px solid var(--gold);}

/* 我的选号 操作按钮 */

.badge-gold{ background: var(--gold-soft); color: var(--gold-dark);}

/* 机选 / 娱乐选号 结果 */
.result-area{ margin-top: 16px;}
.result-area:empty{ display: none;}
.bet-row{ display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 10px; background: #faf7f0; margin-bottom: 8px; flex-wrap: wrap;}
.bet-row .bet-no{ flex: 0 0 auto; width: 24px; height: 24px; border-radius: 7px; background: var(--ink); color: var(--gold-2); font-size: 12px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center;}
.bet-row .bet-copy{ margin-left: auto;}
.bet-row .bet-save{ margin-left: auto;}
.bet-row .bet-save + .bet-copy{ margin-left: 5px;}
.bet-row .bet-save.saved{ color: var(--gold-dark); border-color: var(--gold); background: var(--gold-soft);}
.result-foot{ margin-top: 16px; display: flex; justify-content: center; gap: 22px; flex-wrap: wrap;}
.result-foot .btn{ padding: 11px 28px; font-size: 14px; border-radius: 11px;}
.fun-card .result-area .bet-row{ display: flex; justify-content: space-between; background: var(--gold-soft); flex-wrap: nowrap; gap: 5px; padding: 10px;}
.fun-card .result-area .bet-row .ball{ width: 28px; height: 28px; font-size: 14px; flex: 0 0 auto;}
.fun-card .result-area .bet-row .bet-copy{ flex: 0 0 auto; margin-left: 5px; padding: 6px 8px; background: #FFF; font-size: 12px;}
.fun-card .result-area .bet-row .bet-save{ flex: 0 0 auto; margin-left: auto; padding: 6px 8px; background: #fff; font-size: 12px;}
.fun-card .result-area .bet-row .bet-save + .bet-copy{ margin-left: 0;}

/* 娱乐选号卡片 (高端竖版 · 一行四个) */
.fun-grid{ grid-template-columns: repeat(4,1fr);}
@media(max-width:1200px){.fun-grid{ grid-template-columns: repeat(2,1fr);}}
@media(max-width:560px){.fun-grid{ grid-template-columns: 1fr;}}
.fun-card{ padding: 0; overflow: hidden; display: flex; flex-direction: column; position: relative; transition: transform .25s,box-shadow .25s,outline-color .25s; outline: 1px solid transparent;}
.fun-card:hover{ transform: translateY(0px); box-shadow: 0 22px 48px rgba(27,26,23,.16); outline-color: var(--gold);}
/* 顶部品牌区: 渐变背景 + 光斑 + 居中发光图标 */
.fun-head{ position: relative; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 12px; padding: 80px 20px; overflow: hidden; background: linear-gradient(160deg,#fefdfa,#faf5ec); border-bottom: 1px solid rgba(191,164,111,.18);}
.fun-head::before{ content: ""; position: absolute; top: -40%; left: 50%; transform: translateX(-50%); width: 80%; height: 90%; border-radius: 50%; pointer-events: none; background: radial-gradient(circle,rgba(191,164,111,.22),transparent 65%);}
.fun-head::after{ content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .5; background-image: radial-gradient(rgba(191,164,111,.5) 1px,transparent 1.4px); background-size: 26px 26px; -webkit-mask-image: radial-gradient(circle at 50% 38%,#000,transparent 62%); mask-image: radial-gradient(circle at 50% 38%,#000,transparent 62%);}
.fun-ico{ position: relative; z-index: 1; flex: 0 0 auto; width: 66px; height: 66px; border-radius: 20px; display: flex; align-items: center; justify-content: center; font-size: 33px; color: #fff; background: linear-gradient(150deg,var(--gold-2),var(--gold-dark)); box-shadow: 0 8px 20px rgba(156,127,73,.4),inset 0 1px 1px rgba(255,255,255,.4); animation: funFloat 3.4s ease-in-out infinite;}
.fun-ico::after{ content: ""; position: absolute; inset: -6px; border-radius: 24px; pointer-events: none; box-shadow: 0 0 0 0 rgba(191,164,111,.5); animation: funHalo 2.6s ease-in-out infinite;}
@keyframes funFloat{0%,100%{ transform: translateY(0);}50%{ transform: translateY(-7px);}}
@keyframes funHalo{0%,100%{ box-shadow: 0 0 0 0 rgba(191,164,111,.0);}50%{ box-shadow: 0 0 22px 4px rgba(191,164,111,.45);}}
.fun-head-txt{ position: relative; z-index: 1;}
.fun-head-txt h2{ margin: 0; font-size: 18px; letter-spacing: .4px;}
.fun-head-txt p{ margin: 7px 0 0; font-size: 12.5px; color: #7a7460; line-height: 1.6; min-height: 40px;}
.fun-card form{ margin: 0; padding: 30px 22px; display: flex; flex-direction: column; gap: 16px; flex: 1;}
.fun-field{ display: flex; flex-direction: column; gap: 9px;}
.fun-field>label{ font-size: 13px; font-weight: 600; color: #6b6655;}
.fun-cta{ position: relative; overflow: hidden; width: 100%; height: 48px; border-radius: 13px; font-size: 15px; letter-spacing: 2px;}
.fun-cta::after{ content: ""; position: absolute; top: 0; left: -70%; width: 45%; height: 100%; transform: skewX(-22deg); pointer-events: none; background: linear-gradient(105deg,transparent,rgba(255,255,255,.55),transparent); animation: ctaShine 3.4s ease-in-out infinite;}
.fun-cta.is-spinning{ opacity: .8; cursor: progress;}
/* 各卡专属图标配色 */
.fun-card.c-zodiac .fun-ico{ background: linear-gradient(150deg,#e89a78,#c0392b);}
.fun-card.c-const  .fun-ico{ background: linear-gradient(150deg,#ab8fd6,#6a4fa3);}
.fun-card.c-lucky  .fun-ico{ background: linear-gradient(150deg,#8ccb98,#3f7d4e);}
.fun-card.c-phone  .fun-ico{ background: linear-gradient(150deg,#6fb0e0,#2f72b8);}
.fun-card .fun-result{ margin-top: 2px;}
.fun-card .result-area .muted{ font-size: 12px; line-height: 1.5;}

/* 绚丽出球特效 */
.fun-card .fun-result{ position: relative; transition: min-height .35s ease;}
.fun-result.active{ min-height: 92px;}
.fun-burst{ position: absolute; left: 0; right: 0; top: 0; bottom: 0; min-height: 92px; pointer-events: none; overflow: visible;}
.fb-flash{ position: absolute; left: 50%; top: 62%; width: 24px; height: 24px; margin: -12px; border-radius: 50%; border: 3px solid var(--gold); box-shadow: 0 0 18px rgba(191,164,111,.8); opacity: .9; animation: fbFlash .6s ease-out both;}
@keyframes fbFlash{0%{ transform: scale(.2); opacity: .95;}100%{ transform: scale(6); opacity: 0;}}
.fb-spark{ position: absolute; left: 50%; top: 62%; width: 7px; height: 7px; margin: -3.5px; border-radius: 50%; background: radial-gradient(circle,#fff,var(--gold) 60%,transparent); opacity: 0; animation: fbSpark .85s ease-out both;}
@keyframes fbSpark{0%{ transform: translate(0,0) scale(0); opacity: 0;}
  25%{ opacity: 1;}
  100%{ transform: translate(calc(var(--sx)*92px),calc(var(--sy)*92px)) scale(1.5); opacity: 0;}}
.fb-ball{ position: absolute; left: 50%; top: 62%; width: 34px; height: 34px; margin: -17px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700; color: #fff; opacity: 0; box-shadow: 0 4px 12px rgba(0,0,0,.3),inset 0 -2px 5px rgba(0,0,0,.25),inset 0 2px 4px rgba(255,255,255,.5); animation: fbFly 1s cubic-bezier(.2,.7,.3,1) both;}
.fb-ball.red{ background: radial-gradient(circle at 32% 28%,#ec6b5c,var(--red));}
.fb-ball.blue{ background: radial-gradient(circle at 32% 28%,#5896d2,var(--blue));}
@keyframes fbFly{
  0%{ transform: translate(0,0) scale(.2) rotate(0); opacity: 0;}
  16%{ opacity: 1;}
  50%{ transform: translate(var(--tx),var(--ty)) scale(1.55) rotate(calc(var(--rot)*.6)); opacity: 1;}
  100%{ transform: translate(calc(var(--tx)*1.1),28px) scale(.85) rotate(var(--rot)); opacity: 0;}}

/* 添加 / 收藏号码 (浅色高质感) */

.addpick .ap-grid{ display: grid; grid-template-columns: 1.1fr 2.2fr 1fr; gap: 20px 22px;}
.ap-field{ display: flex; flex-direction: column; gap: 9px;}
.ap-field.ap-full{ grid-column: 1 / -1;}
.ap-field>label{ font-size: 13.5px; font-weight: 600; color: #5a564a;}
.ap-field .ap-hint{ font-weight: 400; font-size: 12px; color: var(--muted); margin-left: 6px;}
.addpick input,.addpick select{ height: 48px; border: 1px solid var(--line); border-radius: 13px; background-color: #fff; padding: 0 16px; font-size: 14.5px; color: var(--ink); transition: border-color .15s,box-shadow .15s,background-color .15s;}
.addpick select{ padding-right: 38px;}
.addpick input::placeholder{ color: #b3ac9c;}
.addpick input:focus,.addpick select:focus{ background-color: #fff; border-color: var(--gold); box-shadow: 0 0 0 3px rgba(191,164,111,.18);}
.ap-foot{ margin-top: 22px; display: flex;}
.ap-submit{ height: 48px; padding: 0 34px; border-radius: 13px; font-size: 15px; letter-spacing: 1px;}
@media(max-width:900px){.addpick .ap-grid{ grid-template-columns: 1fr 1fr;}}
@media(max-width:560px){.addpick .ap-grid{ grid-template-columns: 1fr;}}

/* 模拟选号 (深色区域) */
#simBody td{ height: 34px; background: #211f1b; border-top: 2px solid var(--gold); border-bottom: 2px solid var(--gold); border-left: 1px solid #3a3730; border-right: 1px solid #3a3730;}
#simBody .zone-sep{ border-left: 2px solid var(--gold);}
#simBody tr:hover td{ background: #211f1b;}
#simBody .sim-label{ background: #2c2922; color: var(--gold-2); font-weight: 700;}
.sim-cell{ cursor: pointer; padding: 1px;}
.sim-cell .ball-slot{ display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 50%; font-size: 12px; color: #8c887b; transition: .1s;}
.sim-cell:hover .ball-slot{ background: rgba(255,255,255,.14); color: #fff;}
.sim-cell.red.on .ball-slot{ background: radial-gradient(circle at 30% 30%,#ff6b6b,#e53935); color: #fff; box-shadow: inset 0 -2px 4px rgba(0,0,0,.18);}
.sim-cell.blue.on .ball-slot{ background: radial-gradient(circle at 30% 30%,#5aa8f5,#1e88e5); color: #fff; box-shadow: inset 0 -2px 4px rgba(0,0,0,.18);}
.sim-quick{ display: flex; align-items: center; flex-wrap: wrap; gap: 12px; padding-top: 16px;}
.sim-quick .sq-label{ font-size: 13px; font-weight: 700; color: var(--gold-dark);}
.sim-quick .sq-btns{ display: flex; flex-wrap: wrap; gap: 8px; align-items: center;}
.sim-quick .sq-empty{ font-size: 13px; color: var(--muted);}
.sim-quick .sq-empty a{ color: var(--gold-dark); font-weight: 600;}
.sq-btn{ cursor: pointer; padding: 7px 16px; border-radius: 999px; border: 1px solid var(--line); background: #fff; color: #4a463b; font-size: 13px; font-weight: 600; transition: .14s;}
.sq-btn:hover{ border-color: var(--gold-2); background: #faf6ec; color: var(--gold-dark); transform: translateY(-1px);}
.sq-btn:active{ transform: translateY(0);}

.sim-bar{ display: flex; align-items: center; flex-wrap: wrap; gap: 14px; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--line);}
.sim-bar .sim-status{ color: #5a564a; font-size: 13px;}
.sim-bar .sim-calc{ color: #5a564a; font-size: 13px;}
.sim-bar .sim-calc b{ color: var(--gold-dark); font-size: 14px;}
.sim-bar .sim-status b{ color: var(--gold-dark);}
.sim-bar #simMulti{ width: 56px; padding: 5px 6px; text-align: center; display: inline-block;}
.sim-bar .sim-actions{ margin-left: auto; display: flex; gap: 10px;}
.sim-bar #simSave:disabled{ opacity: .45; cursor: not-allowed;}
.chart-scroll{ overflow-x: auto; border: 1px solid var(--line); border-radius: 8px;}
.chart-table{ border-collapse: collapse; font-size: 12px; white-space: nowrap; min-width: 100%;}
.chart-table th,.chart-table td{ border: 1px solid #efe9dc; text-align: center; padding: 3px; width: 28px; height: 28px;}
.chart-table thead th{ background: #f1ebdd; color: #5a564a; position: sticky; top: 0; font-weight: 600;}
.chart-table .col-issue{ position: sticky; left: 0; background: #f1ebdd; color: #5a564a; min-width: 64px; width: 64px; z-index: 2; font-weight: 600;}
.chart-table tbody tr:nth-child(odd) td{ background: #fdfcf9;}
.chart-table tbody tr:hover td{ background: #faf3e2;}
.chart-table td.miss{ color: #c7c2b2; font-size: 11px;}
.chart-table td.hit{ padding: 1px;}
.chart-table .stat-row td{ background: var(--gold-soft); color: var(--gold-dark); font-weight: 600;}
.chart-table .stat-row .col-issue{ background: #ece2c8; color: var(--gold-dark);}

/* footer */

/* ============================================================
   移动端整理 (≤760px) —— 间距 / 字号统一用 rem (1rem = 16px)
   ============================================================ */
@media(max-width:760px){
  /* —— 全局节奏 —— */

  .card{ padding: 1.125rem; border-radius: 0.875rem; margin-bottom: 0.875rem;}
  .grid{ gap: 0.875rem; margin-bottom: 0.875rem;}   /* gap 管内部, margin-bottom 与下一区块保持间距 (卡片下边距已在基础层清零) */
     /* 末元素不再叠加下边距, footer 上方只留页面底距 */
     /* 末尾是隐藏弹窗时(我的选号), 清掉它前一个可见元素的下边距 */
  .custom-form>*:last-child{ margin-bottom: 0;}   /* 内容被 form 包裹时(定制推号, 末尾还有 script), 清掉表单内末卡片的下边距 */
  /* footer: 收紧上下留白(原 100px 底距过大) */

  
  .section-title{ font-size: 1.0625rem; column-gap: 0.5rem; row-gap: 0; margin: 1.25rem 0.125rem 0.5rem; flex-wrap: wrap;}
  .section-title .bar{ height: 1.0625rem;}
  /* 提示文字换行到标题下方整行, 避免把标题挤断 */
  .section-title .st-hint{ flex-basis: 100%; margin: 0; font-size: 0.75rem; line-height: 1.4; font-weight: 400;}

  /* —— Hero —— */
  
  .hero-orbs{ display: none;} /* 小屏隐藏装饰, 保留数字雨更干净 */
  
  .hero-live{ font-size: 0.6875rem; margin-bottom: 0; padding: 0.25rem 0.625rem;}

  

  

  .hero-stats{ width: 100%; gap: 0.75rem;}

  
                /* 触屏不做悬浮位移 */

  /* —— 最新开奖卡 —— */

  

  

  

  

  

  /* —— 功能导航: 两列网格, 竖版紧凑卡 —— */

  

}

/* ============================================================
   Ai推号 (analysis) 移动端整理 (≤760px) —— 间距 / 字号用 rem
   ============================================================ */
@media(max-width:760px){
  /* 推荐策略: 标签 + 一行横向滑动的策略条 */
  .ctrl-bar{ gap: 0.625rem 1rem;}
  .ctrl-group{ width: 100%; gap: 0.625rem;}
  .ctrl-label{ font-size: 0.75rem;}
  .seg-toggle{ flex: 1; min-width: 0; flex-wrap: nowrap; overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch; scrollbar-width: none;}
  .seg-toggle::-webkit-scrollbar{ display: none;}
  .seg-toggle{ padding: 0.25rem;}
  .seg-toggle a{ flex: 0 0 auto; font-size: 0.8125rem; border-radius: 0.5rem;}

  /* Ai 头部: 左对齐 (徽章+标题一行, 引擎标签在下); 体检标签做成整行警告横幅 */
  .ai-header{ flex-direction: row; align-items: flex-start; text-align: left; gap: 0.75rem; margin-bottom: 1rem; padding-bottom: 0; border-bottom: 0;}
  .ai-header > div{ flex: 1 1 auto; min-width: 0;}
  .ai-badge{ width: 3.4rem; height: 3.4rem; border-radius: 0.75rem; font-size: 1.375rem;}
  .ai-header h2{ font-size: 1.125rem; line-height: 1.3;}
  .ai-tag2{ display: inline-block; margin-top: 0.3125rem; font-size: 0.6875rem; padding: 0.1875rem 0.75rem;}
  .ex-tags-head{ display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0.75rem 0 0 -4.15rem; width: calc(100% + 4.15rem); padding: 0; background: none; border: 0;}
  .ex-tags-head .ex-tag{ display: block; width: 100%; text-align: center; padding: 0.3rem 0.75rem; border-radius: 0.875rem;}

  /* 推荐条 (深色 hero) */
  .reco-strip{ padding: 1.125rem 1rem; gap: 1rem; border-radius: 0.875rem; margin-top: 1rem;}
  .reco-row{ gap: 0.875rem;}
  .reco-cap{ flex-basis: 100%; font-size: 0.75rem; letter-spacing: .12em; margin-bottom: 0.125rem;}
  .reco-issue{ font-size: 0.9375rem;}
  .reco-issue b{ font-size: 1.875rem; margin: 0 0.1875rem;}
  .reco-strat{ font-size: 0.75rem; padding: 0.375rem 0.8125rem; border-radius: 0.875rem;}
  /* 7 个号码球撑满整行 (等宽圆形, 自适应) */
  .reco-strip-balls{ flex: 1 1 100%; width: 100%;}
  .reco-strip-balls .balls{ display: flex; width: 100%; flex-wrap: nowrap; gap: 0.3125rem;}
  .reco-strip-balls .ball{ flex: 1 1 0; min-width: 0; width: auto; height: auto; aspect-ratio: 1; font-size: 1.0625rem;}

  /* 开奖倒计时: 整行四格均分 */
  .reco-countdown{ align-items: flex-start; gap: 0.5rem; width: 100%;}
  .cd-title{ font-size: 0.6875rem;}
  .cd-units{ gap: 0.375rem; width: 100%;}
  .cd-unit{ flex: 1; min-width: 0; gap: 0.25rem; padding: 0.5rem 0.25rem 0.4375rem; border-radius: 0.625rem;}
  .cd-unit b{ font-size: 1.375rem;}
  .cd-unit i{ font-size: 0.625rem;}
  .cd-sep{ font-size: 1.125rem; margin-top: 0.625rem;}

  /* 动作按钮: 两个按钮等宽平分整行 */
  .reco-actions{ width: 100%; gap: 0.625rem; margin-left: 0;}
  .reco-actions .btn,.reco-actions .btn-gold,.reco-actions .btn-ghost-d,.reco-actions .bet-save{ flex: 1 1 0; min-width: 0; height: 2.875rem; padding: 0 0.75rem; font-size: 0.9375rem; font-weight: 700; border-radius: 0.75rem; justify-content: center;}

  /* 卡内子区块统一节奏: 区块间距 1rem, 项间距 0.625rem */
  .insight-grid{ margin-top: 1rem; gap: 0.625rem;}
  /* 概率条: 2 × 2 (minmax 防止长数字撑破) */
  .prob-strip{ display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 0.625rem; margin-top: 1rem;}
  .prob-item{ min-width: 0; gap: 0.25rem; padding: 0.75rem 0.875rem; border-radius: 0.75rem;}
  .prob-item .ps-lbl{ font-size: 0.6875rem;}
  .prob-item b{ font-size: 1rem; overflow-wrap: anywhere;}
  .prob-item i{ font-size: 0.625rem;}

  /* 策略说明条: 标签换行在文案上方 */
  .strat-note{ flex-direction: column; gap: 0.375rem; padding: 0.75rem 0.875rem; margin-top: 1rem;}
  .sn-tag{ font-size: 0.75rem;}
  .sn-text{ font-size: 0.8125rem;}

  /* 推号推理说明 */
  .reason-card .reason-intro{ font-size: 0.8125rem; margin-bottom: 1rem;}
  .reason-steps{ gap: 0.875rem;}
  .reason-step{ gap: 0.75rem;}
  .reason-step .rs-no{ flex: 0 0 1.625rem; width: 1.625rem; height: 1.625rem; font-size: 0.8125rem;}
  .reason-step .rs-title{ font-size: 0.875rem;}
  .reason-step .rs-text{ font-size: 0.8125rem;}
  .reason-note{ font-size: 0.6875rem;}

  /* 各位置冷热 / 共识票投票明细 */
  .qhc-title{ font-size: 0.75rem;}
  .vote-name{ flex: 0 0 100%;}
}

/* ============================================================
   其余页面移动端整理 (≤760px) —— 机选/娱乐, 走势图/历史, 我的选号, 定制
   ============================================================ */
@media(max-width:760px){
  /* 彩种 tab: 整行平均分布, 各占等宽, 尺寸收小 */
  .tabs{ display: flex; width: 100%; padding: 0.25rem; border-radius: 0.75rem; margin-bottom: 0.875rem;}
  .tabs a{ flex: 1; text-align: center; white-space: nowrap; padding: 0.5rem 0.375rem; font-size: 0.875rem; border-radius: 0.5rem;}

  /* 历史 / 我的选号 表格: 紧凑 + 横向滚动 */
  .hist-scroll{ border-radius: 0.75rem;}
  .hist-table{ font-size: 0.8125rem;}
  .hist-table thead th{ font-size: 0.6875rem; padding: 0.625rem 0.5rem;}
  .hist-table td,.hist-table th{ padding: 0.625rem 0.5rem;}
  .hist-table .ball{ width: 2.3rem; height: 2.3rem; font-size: 1rem;}
  .table-head{ font-size: 0.8125rem;}
  .hist-issue{ font-size: 0.8125rem;}

  /* 历史开奖: 移动端改竖向卡片, 不横向滚动, 每期信息整屏可见 */
  .hist-scroll{ overflow-x: visible;}
  .hist-scroll .hist-table{ min-width: 0; border: 0; border-radius: 0;}
  .hist-scroll .hist-table thead{ display: none;}
  .hist-scroll .hist-table tbody tr{ display: flex; flex-wrap: wrap; align-items: center; gap: 0.8rem 0.8rem; padding: 0.75rem; border: 1px solid var(--line); border-radius: 0.75rem; margin-bottom: 0.625rem; background: #fff;}
  .hist-scroll .hist-table tbody tr td{ display: block; width: auto; padding: 0; border: 0; background: transparent;}
  .hist-scroll .hist-table tbody tr:nth-child(even) td{ background: transparent;}
  .hist-scroll .hist-table tbody td:nth-child(2){ margin-left: auto;}
  .hist-scroll .hist-table .hist-issue{ font-size: 0.9375rem;}
  .hist-scroll .hist-table .hist-date{ flex-direction: row; align-items: baseline; gap: 0.375rem; font-size: 0.75rem; color: var(--muted);}
  .hist-scroll .hist-table .hist-date .hd-day{ font-size: 0.75rem;}
  .hist-scroll .hist-table td.col-balls{ flex-basis: 100%; width: 100%;}
  .hist-scroll .hist-table td.col-balls .balls{ flex-wrap: wrap; gap: 0.375rem;}
  .hist-scroll .hist-table td.num{ display: inline-flex; align-items: center; gap: 0.1875rem;}
  .hist-scroll .hist-table td.num::before{ content: attr(data-label); font-size: 0.7rem; color: var(--muted); font-weight: 600; white-space: nowrap;}
  .hist-scroll .hist-table .stat-pill{ min-width: 0; padding: 0.0625rem 0.4rem; font-size: 0.7rem;}
  .hist-scroll .hist-table .stat-pill.sum{ font-size: 0.6875rem;}
  .pager{ margin-top: 0.25rem; gap: 0.375rem;}
  .pager a,.pager span{ min-width: 2.25rem; height: 2.25rem; padding: 0 0.625rem; border-radius: 0.5rem; font-size: 0.875rem; display: inline-flex; align-items: center; justify-content: center;}

  /* 我的选号 */
  .pick-group{ margin-bottom: 0.875rem; border-radius: 0.75rem;}
  .pg-head{ padding: 0.75rem 0.875rem; gap: 0.5rem; flex-wrap: wrap;}
  .pg-type{ font-size: 0.9375rem;}
  .pg-issue{ font-size: 0.875rem;}
  .pg-act{ flex-basis: 100%; margin-left: 0; justify-content: space-between;}
  .pg-copy-all{ padding: 0.375rem 0.625rem;}

  /* 收藏列表卡片: 移动端竖向, 整体收紧 */
  .pk{ padding: 0.875rem;}
  .pk-balls .ball{ width: 1.875rem; height: 1.875rem; font-size: 0.8125rem;}
  .pk-tags{ margin-top: 0.625rem; gap: 0.375rem 0.5rem;}
  .pk-note{ margin-top: 0.5rem; font-size: 0.75rem;}
  .pk-foot{ margin-top: 0.625rem; padding-top: 0.625rem;}

  /* 批量操作条: 竖向 (全选/已选 一行, 操作按钮平分整行) */
  .batch-bar{ flex-direction: column; align-items: stretch; gap: 0.75rem; padding-top: 0; margin-top: 0;}
  .batch-count{ justify-content: center;}
  .batch-actions{ margin-left: 0; gap: 0.625rem;}
  .batch-actions .btn-sm{ flex: 1 1 0; height: 2.625rem; justify-content: center; padding: 0;}
  #batchForm + .pager{ margin-top: 1.25rem;}   /* 翻页条与上方批量按钮拉开距离 */

  /* 登录 / 注册: 品牌面板叠在表单上方 */

  

  
  
     /* ≥16px 防 iOS 自动放大 */

  /* 我的数据: 数字过大 → 收紧 */
  
     /* 容器已用 gap, 去掉卡片自身 margin 防双重间距 */

  

  

  

  
  /* 收藏筛选: 彩种/来源 同一行, 手动添加按钮整行 */
  .mp-filter{ gap: 0.625rem; flex-wrap: wrap;}
  .mp-filter .ctrl-group.has-sheet{ flex: 1 1 0; width: auto; min-width: 0;}
  .mp-filter .seg-trigger{ padding: 0 0.75rem; gap: 0.375rem;}

  /* 走势图 · 模拟选号控件: 竖向堆叠, 操作按钮平分 */
  .sim-quick{ flex-direction: column; align-items: stretch; gap: 0.5rem; padding-top: 1rem;}
  .sim-quick .sq-label{ font-size: 0.8125rem;}
  .sim-quick .sq-empty{ font-size: 0.8125rem;}
  .sim-bar{ flex-direction: column; align-items: stretch; gap: 0.75rem; margin-top: 1rem; padding-top: 1rem;}
  .sim-bar #simAddRow{ width: 100%; height: 2.875rem; display: flex; align-items: center; justify-content: center;}
  .sim-bar .sim-status,.sim-bar .sim-calc{ font-size: 0.8125rem; text-align: center;}
  .sim-bar #simMulti{ width: 3rem; height: 2rem;}
  .sim-bar .sim-actions{ margin-left: 0; width: 100%; gap: 0.625rem;}
  .sim-bar .sim-actions .btn-ghost{ flex: 1 1 0; min-width: 0; height: 2.75rem; display: inline-flex; align-items: center; justify-content: center;}

  /* 历史筛选 */
  .hfilter{ gap: 0.625rem;}
  .hf-search{ flex: 1 1 100%;}
  .hf-actions{ flex: 1 1 100%; width: 100%; gap: 0.625rem;}
  .hf-actions .btn,.hf-actions .btn-ghost{ flex: 1 1 0; min-width: 0; justify-content: center; padding: 0;}

  /* —— 机选页 —— */
  /* 满铺卡片(头部贴边): 抵消移动端 .card 的内边距 */
  .pick-card,.fun-card{ padding: 0;}
  /* 卡片上下间距 = 网格 gap, 与左右留白(0.875rem)一致: 去掉卡片自带的下外边距 */
  .pick-grid .card{ margin-bottom: 0;}
  /* 卡片头部紧凑, 隐藏装饰球(窄屏会压住标题) */
  .pick-head{ padding: 1.25rem 1.125rem; gap: 0.875rem;}
  .pick-orbs{ display: none;}
  .pick-ico{ width: 3rem; height: 3rem; border-radius: 0.875rem; font-size: 1.5rem;}
  .pick-head-txt h2{ font-size: 1.125rem; line-height: 1.25;}
  .pick-head-txt p{ font-size: 0.8125rem; margin-top: 0.125rem; line-height: 1.45;}
  .pick-body{ padding: 1.25rem 1.125rem; gap: 0.875rem;}
  /* 摇奖机缩小(物理引擎按 drum.clientWidth 自适应, 安全) */
  .draw-machine{ margin-bottom: 0.5rem;}
  .dm-drum{ width: 11rem; height: 11rem; border-width: 0.3125rem;}
  /* 注数: 步进器占满整行(高度收紧), 快捷预设平分成一行胶囊 */
  .pick-field>label{ font-size: 0.8125rem;}
  .pick-row{ gap: 0.625rem;}
  .pick-row .stepper{ width: 100%; height: 2.75rem;}
  .pick-row .stepper button{ width: 2.75rem; font-size: 1.25rem;}
  .pick-row .stepper input{ font-size: 1.0625rem;}
  .pick-row .quick-chips{ width: 100%; gap: 0.5rem;}
  .pick-row .quick-chips button{ flex: 1 1 0; width: auto; height: 2.375rem; border-radius: 0.625rem; font-size: 0.875rem;}
  /* 复式: 红/蓝个数两列等分 */
  .pick-field-row{ gap: 0.875rem;}
  .pick-field-row .pick-field{ flex: 1 1 0; min-width: 0;}
  .pick-field-row .stepper{ width: 100%; height: 2.75rem;}
  /* 实时回执条 */
  .pick-receipt{ gap: 0.375rem 0.5rem; padding: 0.75rem 0.875rem;}
  .pick-receipt .rcpt-num{ font-size: 1.125rem;}
  .pick-receipt .rcpt-item small{ font-size: 0.625rem;}
  .pick-receipt .rcpt-x,.pick-receipt .rcpt-eq{ font-size: 0.9375rem;}
  /* CTA / 期号 / 结果区 */
  .pick-cta{ height: 3rem; font-size: 1rem; letter-spacing: 0.08em;}
  .pick-issue{ font-size: 0.8125rem; margin-top: 0.75rem; padding: 0;}
  .pick-card .result-area{ padding: 0 1.125rem 1.25rem;}
  /* 出球结果: 号码球占整行(上), 收藏/复制 在下方; 编号浮动到左上角 */
  .pick-card .result-area .bet-row{ position: relative; flex-wrap: wrap; align-items: center; gap: 0.625rem; padding: 0.875rem; border-radius: 0.75rem; margin-bottom: 0.625rem;}
  .pick-card .result-area .bet-row .bet-no{ position: absolute; z-index: 2; top: -0.7rem; left: -0.7rem; border-radius: 50%; width: 1.4rem; height: 1.4rem; font-size: 0.7rem;}
  .pick-card .result-area .bet-row .balls{ order: 0; flex-basis: 100%; width: 100%; display: flex; flex-wrap: nowrap; gap: 0.3125rem;}
  .pick-card .result-area .bet-row .balls .ball{ flex: 1 1 0; min-width: 0; width: auto; height: auto; aspect-ratio: 1; font-size: 1rem;}
  .pick-card .result-area .bet-row .bet-save{ order: 2; flex: 1 1 0; min-width: 0; margin-left: 0; height: 2.5rem; display: inline-flex; align-items: center; justify-content: center;}
  .pick-card .result-area .bet-row .bet-copy{ order: 3; flex: 1 1 0; min-width: 0; margin-left: 0; height: 2.5rem; display: inline-flex; align-items: center; justify-content: center;}
  /* 收藏 / 复制 统一白底 */
  .pick-card .result-area .bet-save:not(.saved),.pick-card .result-area .bet-copy{ background: #fff; border: 1px solid var(--line); color: var(--gold-dark);}
  /* 多注: 顶部留出左上角浮动编号的空间 */
  #pickResult .bet-row,#qxcResult .bet-row{}
  /* 复式结果(11+ 球): 固定尺寸自动换行, 避免被压扁 */
  #compResult .bet-row .balls{ flex-wrap: wrap; gap: 0.4375rem;}
  #compResult .bet-row .balls .ball{ flex: 0 0 auto; width: 2.125rem; height: 2.125rem; aspect-ratio: auto; font-size: 0.9375rem;}
  /* 全部收藏 / 全部复制: 整行堆叠满宽 */
  .pick-card .result-foot{ flex-direction: column; gap: 0.625rem; margin-top: 1rem;}
  .pick-card .result-foot .btn{ width: 100%; padding: 0; height: 2.875rem; font-size: 0.9375rem; border-radius: 0.75rem; display: inline-flex; align-items: center; justify-content: center;}
  /* 娱乐选号结果: 号码占整行 + 收藏/复制 平分一行(白底) */
  .fun-card .result-area .bet-row{ flex-wrap: wrap; align-items: center; gap: 0.625rem; padding: 0.75rem;}
  .fun-card .result-area .bet-row .balls{ flex: 1 1 100%; width: 100%; display: flex; flex-wrap: nowrap; gap: 0.3125rem;}
  .fun-card .result-area .bet-row .balls .ball{ flex: 1 1 0; min-width: 0; width: auto; height: auto; aspect-ratio: 1; font-size: 1rem;}
  .fun-card .result-area .bet-row .bet-save,.fun-card .result-area .bet-row .bet-copy{ flex: 1 1 0; min-width: 0; height: 2.5rem; margin-left: 0; padding: 0; background: #fff; border: 1px solid var(--line); color: var(--gold-dark); display: inline-flex; align-items: center; justify-content: center;}
  .fun-card .result-area .muted{ font-size: 0.75rem; line-height: 1.5;}

  /* 复式包号计算器 */
  .calc-inputs{ gap: 1rem; padding-bottom: 1rem;}
  .calc-inputs .calc-field:not(.calc-receipt){ flex: 1 1 0; min-width: 0;}
  .calc-inputs .calc-field .stepper{ width: 100%;}
  .calc-receipt{ margin-left: 0; width: 100%; justify-content: space-between;}
  .calc-assume{ gap: 0.625rem 1rem;}
  .calc-hit{ gap: 0.75rem 1rem;}
  /* 奖级表: 每行单行显示, 收紧字号/内边距避免换行 */
  .calc-table{ font-size: 0.8125rem;}
  .calc-table th,.calc-table td{ padding: 0.5rem 0.375rem; white-space: nowrap;}
  .calc-table tfoot b{ font-size: 0.875rem;}

  /* 娱乐选号卡片: 收紧超大头部留白 */
  .fun-head{ padding: 2rem 1.25rem;}
  .fun-ico{ width: 3.5rem; height: 3.5rem; border-radius: 1rem; font-size: 1.75rem;}
  .fun-head-txt h2{ font-size: 1.0625rem; line-height: 1.25;}
  .fun-head-txt p{ font-size: 0.8125rem; min-height: 0; margin-top: 0.25rem; line-height: 1.45;}
  .fun-card form{ padding: 1.25rem 1.125rem; gap: 1rem;}
  .fun-cta{ height: 2.875rem; font-size: 0.9375rem; letter-spacing: 0.08em;}

  /* 定制推号: 生日行全宽 + 触控尺寸 */
  .custom-input-card{ padding: 1.125rem;}
  .birth-list{ gap: 0.75rem;}
  .birth-row{ flex: 1 1 100%;}
  .birth-row .birth-name{ flex: 0 0 5.75rem; width: 5.75rem; height: 2.875rem; font-size: 0.9375rem;}
  .birth-row .birth-date{ height: 2.875rem; min-width: 0; font-size: 0.9375rem;}
  .birth-del{ width: 2.875rem; height: 2.875rem; margin-left: 0.5rem; font-size: 1rem;}
  /* 操作按钮: ＋添加 / 💾保存 平分一行, 生成号码 独占整行更醒目 */
  .custom-actions{ gap: 0.625rem; margin-top: 1rem;}
  .custom-actions .btn-ghost-d2{ flex: 1 1 0; min-width: 0; height: 2.875rem; padding: 0 0.625rem; font-size: 0.875rem;}
  .custom-actions #addBirth{ order: 1;}
  .custom-actions #saveBirths{ order: 2;}
  .custom-form .pick-cta{ order: 3; flex: 1 1 100%; width: 100%; height: 3rem; font-size: 1rem;}
  .custom-actions .save-tip{ order: 3; flex: 1 1 100%; text-align: center; font-size: 0.8125rem;}
  /* 家族气场 / 各人命理画像 */
  .aura-box{ padding: 1rem 1.125rem;}
  .aura-title{ font-size: 0.9375rem; margin-bottom: 0.75rem;}
  .aura-grid{ gap: 0.625rem;}
  .aura-item b{ font-size: 0.9375rem;}
  .person-card{ padding: 1.125rem;}
  .person-head{ gap: 0.625rem; margin-bottom: 0.875rem;}
  .person-zodiac{ width: 2.75rem; height: 2.75rem; font-size: 1.25rem;}
  .person-head h3{ font-size: 0.9375rem;}
  .person-facts{ gap: 0.5rem 0.625rem;}
  .person-facts b{ font-size: 0.8125rem;}
}

/* —— 超窄屏 (≤400px) 微调 —— */
@media(max-width:400px){

  
  
                         /* 极窄屏隐藏副文案保持紧凑 */
  .reco-strip-balls .ball{ font-size: 0.9375rem;}
  .reco-issue b{ font-size: 1.75rem;}
  .cd-unit b{ font-size: 1.1875rem;}
}

/* —— 无障碍: 键盘焦点环 + 尊重「减少动态效果」系统设置 —— */
.seg-toggle a:focus-visible,.tabs a:focus-visible,.menu a:focus-visible,
.btn:focus-visible,.btn-gold:focus-visible,.btn-ghost:focus-visible,.btn-ghost-d:focus-visible,
.bet-save:focus-visible,.seg-trigger:focus-visible{ outline: 2px solid var(--gold-dark); outline-offset: 2px;}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{ animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important;}
  .reco-fx{ display: none;}      /* 数字雨为纯装饰, 减少动态时隐藏 */
}

/* ===== App 层 · Indigo 玻璃 (原 app.css, 覆盖基础层) ===== */
/* 挖草乐透 · App 设计系统 (Indigo · Apple 玻璃质感 · 全 rem)
   —— 仅在启用 body.app 的页面加载, 与旧 style.css 共存, 用于渐进式改版。 */

.app{
  /* 主色 · 靛蓝 */
  --c-primary: #6366f1; --c-primary-2: #818cf8; --c-primary-ink: #4338ca; --c-on-primary: #fff;
  --c-accent: #f43f5e; --c-accent-ink: #be123c;
  /* 文字 / 中性 */
  --c-text: #1e293b; --c-text-2: #52607a; --c-muted: #94a3b8;
  --c-line: rgba(148,163,184,.22);
  /* 语义 */
  --c-red: #e5484d; --c-blue: #3e63dd; --c-green: #30a46c; --c-gold: #d9a441;
  /* 玻璃 */
  --glass: rgba(255,255,255,.6); --glass-2: rgba(255,255,255,.78); --glass-brd: rgba(255,255,255,.75);
  --glass-blur: 1.375rem; --glass-sat: 180%;
  /* 圆角 (rem) */
  --rad-sm: .625rem; --rad: .9375rem; --rad-lg: 1.25rem; --rad-xl: 1.5rem; --rad-2xl: 2rem; --rad-pill: 62.5rem;
  /* 阴影 */
  --sh-1: 0 .25rem .75rem rgba(30,41,59,.05); --sh-2: 0 .75rem 2rem rgba(30,41,59,.09);
  --sh-glass: 0 .625rem 2.25rem rgba(79,70,229,.13); --sh-pop: 0 1.25rem 3rem rgba(30,41,59,.16);
  /* 间距 (rem) */
  --sp-1: .25rem; --sp-2: .5rem; --sp-3: .75rem; --sp-4: 1rem; --sp-5: 1.25rem; --sp-6: 1.5rem; --sp-8: 2rem; --sp-10: 2.5rem;
}

/* ===== 旧 style.css 令牌桥接 → 靛蓝 (旧页面组件自动改色, 无需改标记) ===== */
.app{
  --gold: #6366f1; --gold-2: #818cf8; --gold-dark: #4338ca; --gold-soft: #eef1fb;
  --ink: #1e293b; --ink-2: #334155; --muted: #64748b;
  --line: rgba(148,163,184,.24); --card: #ffffff; --bg: #f4f6fb;
  /* --red / --blue / --green 保留 (号码球与状态色) */
}
/* 旧组件轻度对齐新风格 (玻璃/圆角/rem) */
.app .card{}
.app .btn,.app .btn-gold,.app .btn-ghost,.app .btn-sm{ border-radius: var(--rad-pill);}
.app input,.app select,.app textarea{ border-radius: var(--rad);}
.app .seg-toggle{ border-radius: var(--rad);}
.app .modal{ border-radius: var(--rad-xl);}

/* ===== 基座 ===== */
body.app{ margin: 0; min-height: 100dvh; color: var(--c-text); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
  font-family: -apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI","Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;
  font-size: 1rem; line-height: 1.55; letter-spacing: .01em;
  background:
    radial-gradient(38rem 30rem at 8% -8%, rgba(129,140,248,.34), transparent 60%),
    radial-gradient(34rem 28rem at 108% 2%, rgba(244,114,182,.26), transparent 58%),
    radial-gradient(40rem 34rem at 50% 116%, rgba(56,189,248,.20), transparent 60%),
    linear-gradient(180deg,#eef1fb,#f5f6fc 40%,#f3f4fb);
  background-attachment: fixed;}
.app *{ box-sizing: border-box;}
.app a{ color: inherit; text-decoration: none;}
.app b,.app strong{ font-weight: 700;}
.app .muted{ color: var(--c-muted);}
/* 行内线性图标 (替换 emoji) */
.app .ic{ width: 1.0625rem; height: 1.0625rem; flex: 0 0 auto; vertical-align: -.1875rem; stroke-width: 2;}
.app .ic-sm{ width: .875rem; height: .875rem; vertical-align: -.125rem;}
.app .ic-lg{ width: 1.375rem; height: 1.375rem; vertical-align: -.25rem;}

/* 图标容器 (原 emoji 占位) 内的 SVG 尺寸/配色 */
.app .ai-badge .ic{ width: 1.625rem; height: 1.625rem; vertical-align: 0;}
.app .pick-ico .ic{ width: 1.75rem; height: 1.75rem; vertical-align: 0; color: var(--c-primary-ink);}
.app .pick-ico.gold .ic{ color: #fff;}
.app .fun-ico .ic{ width: 2rem; height: 2rem; vertical-align: 0; color: #fff;}
.app .hf-search-ico .ic{ width: 1.0625rem; height: 1.0625rem; vertical-align: 0;}
.app .uc-ico .ic{ width: 2.25rem; height: 2.25rem; vertical-align: 0;}
.app .toast-ico .ic{ width: 1.25rem; height: 1.25rem; vertical-align: 0; stroke-width: 2.4;}
.app .st-arrow .ic{ width: .875rem; height: .875rem; vertical-align: 0;}
.app .modal-close .ic,.app .birth-del .ic{ width: 1.1875rem; height: 1.1875rem; vertical-align: 0;}
.app .aura-item b .ic{ vertical-align: -.125rem;}
@media (prefers-reduced-motion: reduce){ .app *{ animation: none !important; transition: none !important;}}

/* ===== 应用外壳 ===== */
.app-shell{ min-height: 100dvh; display: flex; flex-direction: column;}

/* 顶部玻璃栏 */
.app-top{ position: sticky; top: 0; z-index: 30; display: flex; align-items: center; justify-content: space-between;
  gap: var(--sp-3); height: 3.5rem; padding: 0 var(--sp-4);
  background: linear-gradient(180deg,rgba(255,255,255,.72),rgba(255,255,255,.5));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat)); -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border-bottom: .0625rem solid var(--glass-brd);}
.app-brand{ display: inline-flex; align-items: center; gap: .5rem; font-weight: 800; font-size: 1.125rem; letter-spacing: .02em;}
.app-brand img{ width: 1.875rem; height: 1.875rem; border-radius: .625rem; box-shadow: var(--sh-1);}
.app-brand .bn-en{ background: linear-gradient(120deg,var(--c-primary),var(--c-accent)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;}
.app-top-act{ display: inline-flex; align-items: center; gap: var(--sp-2);}
.icbtn{ display: inline-flex; align-items: center; justify-content: center; height: 2.375rem; color: var(--c-text-2);}
.icbtn svg{ width: 1.125rem; height: 1.125rem;}
.icbtn:hover{ color: var(--c-primary-ink); background: #fff;}
.icbtn:active{ transform: scale(.92);}
.icbtn.danger:hover{ color: var(--c-accent-ink);}
.pillbtn{ display: inline-flex; align-items: center; height: 1.875rem; padding: 0 .875rem; border-radius: var(--rad-pill); font-size: .8125rem; font-weight: 700;}
.pillbtn.ghost{ color: var(--c-primary-ink); background: rgba(255,255,255,.55); border: .0625rem solid var(--glass-brd);}
.pillbtn.solid{ color: var(--c-on-primary); background: linear-gradient(125deg,var(--c-primary),var(--c-primary-ink)); box-shadow: 0 .5rem 1rem rgba(79,70,229,.32);}
.pillbtn:active{ transform: scale(.96);}
/* 详情页头: 左返回 + 居中标题 (无 logo/退出), 无底部 nav */
.app-top-detail{ justify-content: flex-start;}
.app-back{ flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 2.375rem; height: 2.375rem; border-radius: var(--rad); color: var(--c-text); transition: background .16s,transform .12s;}
.app-back svg{ width: 1.5rem; height: 1.5rem;}
.app-back:hover{ color: var(--c-primary-ink); background: rgba(255,255,255,.6);}
.app-back:active{ transform: scale(.92);}
.app-title{ flex: 1 1 auto; min-width: 0; margin: 0; text-align: center; font-size: 1.0625rem; font-weight: 800; color: var(--c-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
.app-back-spacer{ flex: 0 0 auto; width: 2.375rem;}

/* 主内容区 */
.app-main{ flex: 1 1 auto; width: 100%; max-width: 60rem; margin: 0 auto; padding: var(--sp-5) var(--sp-4) calc(5.25rem + env(safe-area-inset-bottom));}
.app-detail .app-main{ padding-bottom: calc(1.75rem + env(safe-area-inset-bottom));}

/* 底部玻璃标签栏 */
.app-tabbar{ position: fixed; left: 50%; transform: translateX(-50%); bottom: 0; z-index: 40; width: 100%; max-width: 32rem;
  display: flex; align-items: stretch; gap: .125rem; padding: .5rem .5rem calc(.5rem + env(safe-area-inset-bottom));
  background: linear-gradient(180deg,rgba(255,255,255,.66),rgba(255,255,255,.86));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat)); -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border-top: .0625rem solid var(--glass-brd); border-radius: 0; box-shadow: 0 -.5rem 2rem rgba(30,41,59,.12);}
.tab{ flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .1875rem;
  padding: .375rem 0; border-radius: var(--rad); color: var(--c-muted); font-size: .6875rem; font-weight: 600; transition: color .18s;}
.tab .ti{ display: flex; align-items: center; justify-content: center; width: 2.75rem; height: 1.75rem; border-radius: var(--rad-pill); transition: background .2s,transform .18s;}
.tab .ti svg{ width: 1.3125rem; height: 1.3125rem;}
.tab:active .ti{ transform: scale(.86);}
.tab.on{ color: var(--c-primary); font-weight: 700;}
.tab.on .ti{ background: transparent; box-shadow: none;}

/* ===== 玻璃卡片通用 ===== */
.glass{ position: relative; background: var(--glass); backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat)); -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border: .0625rem solid var(--glass-brd); border-radius: var(--rad-xl); box-shadow: var(--sh-glass);}

/* 区块标题 */
.sec{ display: flex; align-items: center; gap: .5rem; margin: var(--sp-6) 0 var(--sp-3); font-size: 1.0625rem; font-weight: 800; letter-spacing: .01em;}
.sec .dot{ width: .375rem; height: 1.125rem; border-radius: var(--rad-pill); background: linear-gradient(180deg,var(--c-primary),var(--c-accent));}

/* ===== Hero ===== */
.hero-app{ position: relative; overflow: hidden; margin: 0 0 var(--sp-5); padding: var(--sp-6); border-radius: var(--rad-xl);
  background: linear-gradient(135deg,rgba(99,102,241,.95),rgba(79,70,229,.92) 55%,rgba(190,24,93,.86));
  color: #fff; box-shadow: var(--sh-pop);}
.hero-app::after{ content: ""; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(18rem 12rem at 88% -20%, rgba(255,255,255,.35), transparent 60%), radial-gradient(16rem 12rem at -10% 120%, rgba(255,255,255,.18), transparent 60%);}
.hero-live{ position: relative; z-index: 1; display: inline-flex; align-items: center; gap: .5rem; padding: .3125rem .75rem; border-radius: var(--rad-pill);
  font-size: .75rem; font-weight: 700; letter-spacing: .08em; background: rgba(255,255,255,.18); border: .0625rem solid rgba(255,255,255,.3);}
.hero-live i{ width: .5rem; height: .5rem; border-radius: 50%; background: #4ade80; box-shadow: 0 0 0 .25rem rgba(74,222,128,.3); animation: hpulse 1.8s ease-in-out infinite;}
@keyframes hpulse{ 50%{ opacity: .45;}}
.hero-app h1{ position: relative; z-index: 1; margin: var(--sp-4) 0 var(--sp-2); font-size: 1.875rem; line-height: 1.2; font-weight: 800; letter-spacing: .01em;}
.hero-app h1 .hl{ display: block; font-size: 1.375rem; font-weight: 700; opacity: .92;}
.hero-app p{ position: relative; z-index: 1; margin: 0; font-size: .9375rem; line-height: 1.6; color: rgba(255,255,255,.86); max-width: 34rem;}
/* 装饰浮球 */
.hero-orbs{ position: absolute; inset: 0; z-index: 0; pointer-events: none;}
.ho{ position: absolute; display: flex; align-items: center; justify-content: center; border-radius: 50%; color: #fff; font-weight: 800; font-variant-numeric: tabular-nums;
  background: rgba(255,255,255,.16); border: .0625rem solid rgba(255,255,255,.3); backdrop-filter: blur(.375rem); -webkit-backdrop-filter: blur(.375rem); box-shadow: 0 .5rem 1.25rem rgba(0,0,0,.14);}
.ho-1{ width: 3.5rem; height: 3.5rem; font-size: 1.0625rem; top: 1.25rem; right: 1.25rem; animation: hofloat 6s ease-in-out infinite;}
.ho-2{ width: 2.25rem; height: 2.25rem; font-size: .8125rem; top: 5.75rem; right: 4.75rem; opacity: .82; animation: hofloat 7.5s ease-in-out infinite .5s;}
.ho-3{ width: 2.75rem; height: 2.75rem; font-size: .9375rem; top: 3.75rem; right: -.75rem; opacity: .62; animation: hofloat 9s ease-in-out infinite 1.1s;}
@keyframes hofloat{ 50%{ transform: translateY(-.5rem);}}

/* 信任指标 */
.hero-stats{ position: relative; z-index: 1; display: flex; gap: .5rem; margin-top: var(--sp-6);}
.hs{ flex: 1 1 0; min-width: 0; text-align: center; padding: .625rem .375rem; border-radius: var(--rad);
  background: rgba(255,255,255,.14); border: .0625rem solid rgba(255,255,255,.24); backdrop-filter: blur(.5rem); -webkit-backdrop-filter: blur(.5rem);}
.hs b{ display: block; font-size: 1.375rem; font-weight: 800; line-height: 1.1; letter-spacing: .01em; font-variant-numeric: tabular-nums;}
.hs span{ font-size: .6875rem; color: rgba(255,255,255,.8);}

/* ===== 最新开奖卡 ===== */
.draw-grid{ display: grid; grid-template-columns: 1fr; gap: var(--sp-4);}
.draw-card{ padding: var(--sp-5);}
.dc-head{ display: flex; align-items: center; gap: .5rem;}
.dc-logo{ width: 1.75rem; height: 1.75rem; border-radius: .5rem;}
.dc-name{ font-size: 1.0625rem; font-weight: 800;}
.dc-badge{ margin-left: auto; padding: .1875rem .625rem; border-radius: var(--rad-pill); font-size: .6875rem; font-weight: 700; color: var(--c-primary-ink); background: rgba(99,102,241,.12);}
.dc-issue{ margin-top: var(--sp-2); font-size: .8125rem; color: var(--c-text-2);}
.dc-issue b{ color: var(--c-text);}
.dc-balls{ display: flex; flex-wrap: wrap; gap: .4375rem; margin: var(--sp-4) 0;}
.dc-balls .ball{ margin: 0;}
.dc-stats{ display: flex; gap: var(--sp-2); margin-bottom: var(--sp-4);}
.dc-stat{ flex: 1 1 0; text-align: center; padding: .625rem .25rem; border-radius: var(--rad); background: rgba(255,255,255,.55); border: .0625rem solid var(--c-line);}
.dc-stat b{ display: block; font-size: 1.0625rem; font-weight: 800; color: var(--c-primary-ink); font-variant-numeric: tabular-nums;}
.dc-stat span{ font-size: .6875rem; color: var(--c-text-2);}
.dc-acts{ display: flex; gap: var(--sp-2);}
.dc-acts a{ flex: 1 1 0; display: inline-flex; align-items: center; justify-content: center; gap: .375rem; height: 2.5rem; border-radius: var(--rad); font-size: .8125rem; font-weight: 700;
  color: var(--c-primary-ink); background: rgba(255,255,255,.6); border: .0625rem solid var(--c-line); transition: transform .16s,background .16s;}
.dc-acts a svg{ width: 1rem; height: 1rem;}
.dc-acts a.pri{ color: #fff; background: linear-gradient(125deg,var(--c-primary),var(--c-primary-ink)); border-color: transparent; box-shadow: 0 .375rem .875rem rgba(79,70,229,.3);}
.dc-acts a:active{ transform: scale(.95);}

/* ===== 功能宫格 ===== */
.feat-grid{ display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-3);}
.feat{ display: flex; flex-direction: column; gap: .375rem; padding: var(--sp-4); border-radius: var(--rad-lg); transition: transform .18s,box-shadow .18s;}
.feat .fi{ display: flex; align-items: center; justify-content: center; width: 2.75rem; height: 2.75rem; border-radius: var(--rad); color: #fff; box-shadow: var(--sh-1);}
.feat .fi svg{ width: 1.375rem; height: 1.375rem;}
.feat b{ font-size: .9375rem; font-weight: 700;}
.feat span{ font-size: .75rem; color: var(--c-text-2); line-height: 1.45;}
.feat:active{ transform: scale(.97);}
.feat.big{ grid-column: 1 / -1; flex-direction: row; align-items: center;}
.feat.big .ft{ flex: 1 1 auto;}
.feat.big svg.arr{ width: 1.25rem; height: 1.25rem; color: var(--c-muted);}
.fi-1{ background: linear-gradient(135deg,#6366f1,#4338ca);}
.fi-2{ background: linear-gradient(135deg,#f43f5e,#be123c);}
.fi-3{ background: linear-gradient(135deg,#f59e0b,#d97706);}
.fi-4{ background: linear-gradient(135deg,#0ea5e9,#0369a1);}
.fi-5{ background: linear-gradient(135deg,#10b981,#047857);}
.fi-6{ background: linear-gradient(135deg,#8b5cf6,#6d28d9);}
.fi-7{ background: linear-gradient(135deg,#64748b,#334155);}
.fi-8{ background: linear-gradient(135deg,#14b8a6,#0d9488);}

/* 空数据卡 */
.app-empty{ padding: var(--sp-6); text-align: center;}
.app-empty h2{ margin: 0 0 var(--sp-2); font-size: 1.125rem;}

/* 免责声明 */
.app-legal{ margin-top: var(--sp-8); padding: 0 var(--sp-2); text-align: center; font-size: .6875rem; line-height: 1.6; color: var(--c-muted);}
.app-legal b{ color: var(--c-text-2);}

/* 焦点可见性 */
.app a:focus-visible,.app button:focus-visible{ outline: .1875rem solid rgba(99,102,241,.45); outline-offset: .125rem; border-radius: var(--rad-sm);}

/* ===== 机选 / 选号页 精修 (覆盖 style.css 硬编码米色 → 靛蓝玻璃) ===== */
.app .tabs{ background: rgba(255,255,255,.6); border: .0625rem solid var(--glass-brd); backdrop-filter: blur(.75rem) saturate(160%); -webkit-backdrop-filter: blur(.75rem) saturate(160%); border-radius: var(--rad); padding: .3125rem;}
.app .tabs a{ border-radius: var(--rad-sm); padding: .5rem 1.25rem;}
.app .tabs a.on{ background: linear-gradient(125deg,var(--c-primary),var(--c-primary-ink)); color: #fff; box-shadow: 0 .375rem .875rem rgba(79,70,229,.3);}
.app .seg-toggle{ background: #eaeefb;}
.app .seg-toggle a.on{ background: var(--c-primary); color: #fff; box-shadow: 0 .125rem .375rem rgba(79,70,229,.35);}
.app .pick-head{ background: linear-gradient(125deg,#eef1fb,#e7ebfc 55%,#eae4fb); border-bottom: 0;}
.app .pick-head.head-gold{ background: linear-gradient(125deg,#ece9fe,#e6e0fb 55%,#f0e4f8);}
.app .pick-head-txt h2{ letter-spacing: -.01em;}
.app .pick-head-txt p{ color: var(--c-text-2);}
/* 头部图标: 实心靛蓝芯片 (去掉发光动画, 更干净) */
.app .pick-ico{ background: linear-gradient(150deg,var(--c-primary-2),var(--c-primary-ink)); box-shadow: 0 .5rem 1.125rem rgba(79,70,229,.34); animation: none;}
.app .pick-ico .ic,.app .pick-ico.gold .ic{ color: #fff;}
.app .pick-orbs{ display: none;}                 /* 去掉漂浮小球, 减少杂乱 */
/* 关闭全部炫技动画 → 沉静高级感 */
.app .pick-cta::after,.app .fun-cta::after{ display: none;}
.app .fun-ico{ animation: none;}
.app .fun-ico::after,.app .fun-head::after{ display: none;}
/* 娱乐卡头部 → 靛蓝色系 (原米色/金渐变不属于本项目主题) */
.app .fun-head{ background: linear-gradient(160deg,#f4f6fd,#e9edfb); border-bottom-color: var(--c-line);}
.app .fun-head::before{ background: radial-gradient(circle,rgba(99,102,241,.16),transparent 65%);}
.app .fun-field>label,.app .pick-field>label{ color: var(--c-text-2);}
/* 去除娱乐卡 hover 效果 (描边高亮 + 浮起阴影) */
.app .fun-card:hover{ transform: none; outline-color: transparent; box-shadow: 0 .25rem 1.5rem rgba(30,27,75,.06);}
/* select 下拉 → App 样式 (白玻璃底 + 靛蓝箭头/聚焦, 原生高亮改靛蓝) */
.app select{ background-color: rgba(255,255,255,.9); border-color: var(--c-line); color: var(--c-text); font-weight: 600; accent-color: var(--c-primary); background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%234338ca' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}
.app select:focus{ border-color: var(--c-primary); box-shadow: 0 0 0 .1875rem rgba(99,102,241,.18); outline: 0;}
.app select option{ background: #fff; color: var(--c-text);}
.app select option:checked,.app select option:hover{ background: var(--c-primary); color: #fff;}
/* 原生 select → 底部弹窗选择器: 隐藏原生, 显示触发按钮 (与关闭态 select 外观一致) */
.app select.app-select.is-enhanced{ display: none;}
.app .app-select-trigger{ width: 100%; display: flex; align-items: center; justify-content: space-between; gap: .5rem; height: 3rem; padding: 0 .875rem 0 1rem; border-radius: var(--rad); border: .0625rem solid var(--c-line); background: rgba(255,255,255,.9); color: var(--c-text); font-size: .9375rem; font-weight: 600; text-align: left; cursor: pointer; transition: border-color .15s, box-shadow .15s, transform .1s;}
.app .app-select-trigger:hover{ border-color: var(--c-primary-2);}
.app .app-select-trigger:active{ transform: scale(.995);}
.app .app-select-trigger .ast-cur{ min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
.app .app-select-trigger .ast-arrow{ flex: 0 0 auto; display: inline-flex; color: var(--c-primary-ink);}
.app .app-select-trigger .ast-arrow .ic{ width: 1.125rem; height: 1.125rem;}

/* ===== 自选号码 (手动选球, 单式/复式) ===== */
.app .zx-zone + .zx-zone{ margin-top: .375rem;}
.app .zx-zlabel{ display: flex; align-items: center; gap: .4375rem; margin-bottom: .6875rem; font-size: .9375rem; font-weight: 800; color: var(--c-text);}
.app .zx-zlabel small{ font-weight: 500; font-size: .75rem; color: var(--c-text-2);}
.app .zx-zlabel .zx-cnt{ margin-left: auto; font-size: .8125rem; font-weight: 500; color: var(--c-text-2); font-variant-numeric: tabular-nums;}
.app .zx-zlabel .zx-cnt b{ color: var(--c-primary-ink); font-weight: 800; font-size: 1rem;}
.app .zx-dot{ width: .5rem; height: .5rem; border-radius: 50%; flex: 0 0 auto;}
.app .zx-dot.red{ background: #e53935;}
.app .zx-dot.blue{ background: #1e88e5;}
.app .zx-grid{ display: grid; grid-template-columns: repeat(7, 1fr); gap: .4375rem;}
.app .zx-b{ aspect-ratio: 1; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; border: .09375rem solid var(--c-line); background: #fff; color: var(--c-text-2); font-size: .9375rem; font-weight: 700; font-variant-numeric: tabular-nums; cursor: pointer; transition: transform .1s, border-color .12s, background .12s;}
.app .zx-b:active{ transform: scale(.88);}
.app .zx-red.on{ border-color: transparent; color: #fff; background: radial-gradient(circle at 30% 30%,#ff6b6b,#e53935); box-shadow: 0 .1875rem .5rem rgba(229,57,53,.35);}
.app .zx-blue.on{ border-color: transparent; color: #fff; background: radial-gradient(circle at 30% 30%,#5aa8f5,#1e88e5); box-shadow: 0 .1875rem .5rem rgba(30,136,229,.35);}
.app .zx-receipt{ margin-top: .375rem;}
.app .zx-hint{ text-align: center; font-size: .8125rem; font-weight: 600; color: var(--c-text-2);}
.app .zx-acts{ display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem;}
.app .zx-acts .btn-ghost,.app .zx-acts .btn-gold{ height: 2.75rem; padding: 0 .5rem; display: inline-flex; align-items: center; justify-content: center; gap: .3125rem;}
.app .zx-acts .btn-ghost{ background: rgba(255,255,255,.9); border: .0625rem solid var(--c-line); color: var(--c-primary-ink);}
.app .zx-acts .btn-gold{ grid-column: 1 / -1;}
.app .zx-acts .btn-ghost:disabled,.app .zx-acts .btn-gold:disabled{ opacity: .45; cursor: not-allowed; box-shadow: none;}
.app .pick-receipt{ background: linear-gradient(120deg,#f2f4fd,#e9edfb); border-radius: var(--rad-lg);}
.app .stepper{ border-radius: var(--rad-lg);}
.app .stepper button{ background: #eef1fb; color: var(--c-primary-ink);}
.app .stepper button:hover{ background: var(--c-primary); color: #fff;}
.app .quick-chips button{ border-color: var(--c-primary); color: var(--c-primary-ink);}
.app .quick-chips button:hover{ transform: none;}                              /* 去除浮动效果 */
.app .quick-chips button.on{ color: #fff; box-shadow: 0 .25rem .625rem rgba(79,70,229,.35);}  /* 选中: 白字 */
.app .dm-drum{ background: radial-gradient(120% 120% at 38% 28%,#fff,#eef1fb 55%,#dfe4fb 100%);
  box-shadow: 0 .875rem 1.875rem rgba(79,70,229,.26),0 0 0 .1875rem var(--c-primary),inset 0 -.625rem 1.375rem rgba(79,70,229,.2),inset 0 .5rem 1.125rem rgba(255,255,255,.8);}
.app .pick-cta{ border-radius: var(--rad-lg);}
.app .calc-table th,.app .calc-table tfoot td,.app .calc-empty{ background: #f2f4fd;}
.app .calc-hit select{ border-radius: var(--rad);}

/* 金色主按钮 → 靛蓝渐变 + 白字 (原 color:var(--ink) 在靛蓝底上偏暗) */
.app .btn-gold{ background: linear-gradient(125deg,var(--c-primary),var(--c-primary-ink)); color: #fff;}
.app .btn-gold:hover{ background: linear-gradient(125deg,var(--c-primary),var(--c-primary-ink)); color: #fff;}
.app .btn-gold .ic{ color: #fff;}

/* ---- 生成结果区 (机选/复式/娱乐 生成后) 精修 ---- */
.app .result-area{ margin-top: .75rem;}
/* 单注行 — 干净玻璃卡, 靛蓝编号 */
.app .bet-row{ gap: .625rem; padding: .8125rem .875rem; border-radius: var(--rad); background: rgba(255,255,255,.72); border: .0625rem solid var(--c-line); box-shadow: 0 .25rem .625rem rgba(30,27,75,.05);}
.app .bet-row .bet-no{ border-radius: var(--rad-sm); background: linear-gradient(150deg,var(--c-primary-2),var(--c-primary-ink)); color: #fff; font-weight: 800;}
.app .bet-row .bet-save:not(.saved),.app .bet-row .bet-copy{ background: rgba(255,255,255,.9); border: .0625rem solid var(--c-line); color: var(--c-primary-ink);}
.app .bet-row .bet-save.saved{ background: rgba(99,102,241,.12); border-color: var(--c-primary-2); color: var(--c-primary-ink);}
/* 底部整批操作 */
.app .result-foot{ gap: .75rem; padding-top: .25rem;}
.app .result-foot .btn-gold,.app .bet-save.btn-gold{ background: linear-gradient(125deg,var(--c-primary),var(--c-primary-ink)); color: #fff; border: 0; box-shadow: 0 .375rem .875rem rgba(79,70,229,.32);}
.app .result-foot .btn:not(.btn-gold){ background: rgba(255,255,255,.9); border: .0625rem solid var(--c-line); color: var(--c-primary-ink);}
/* 娱乐卡结果行 — 淡靛底 */
.app .fun-card .result-area .bet-row{ background: rgba(99,102,241,.06);}
.app .fun-card .result-area .muted{ color: var(--c-text-2);}
/* 复式说明「共 N 注」*/
.app .result-area .muted b{ color: var(--c-primary-ink); font-variant-numeric: tabular-nums;}
/* 本期推荐期号提示 */
.app .pick-issue{ color: var(--c-primary-ink);}
.app .pick-issue b{ color: var(--c-primary-ink);}

/* ===== Ai推号 (analysis) 精修 (覆盖 style.css 硬编码米色/金 → 靛蓝) ===== */
.app .reco-strip{ background: radial-gradient(40rem 12rem at 20% -38%,rgba(129,140,248,.36),transparent 60%),radial-gradient(30rem 10rem at 108% 145%,rgba(99,102,241,.26),transparent 60%),linear-gradient(145deg,#39358c,#282467 52%,#1e1b4b); box-shadow: inset 0 0 0 .0625rem rgba(129,140,248,.32),0 .75rem 1.875rem rgba(30,27,75,.35);}
.app .reco-strip::after{ background: linear-gradient(105deg,transparent,rgba(129,140,248,.28),transparent);}
/* reco-strip 内文字: 去掉残留米色, 统一冷色 (白 / 靛蓝) */
.app .reco-issue{ color: #c7d2fe;}
.app .reco-issue b{ background: linear-gradient(92deg,#ffffff,#a5b4fc); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;}
.app .cd-unit b{ background: linear-gradient(180deg,#ffffff,#c7d2fe); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;}
.app .cd-unit i{ color: rgba(199,210,254,.7);}
.app .ai-badge{ background: linear-gradient(150deg,#4f46e5,#312e81); color: #fff;}
/* reco-strip 操作按钮统一: 收藏 与 复制 同款 (实心靛蓝) */
.app .reco-actions .btn-gold,
.app .reco-actions .btn-ghost-d{ border: 0; color: #fff; font-weight: 700; gap: .375rem; border-radius: var(--rad-pill); background: linear-gradient(125deg,var(--c-primary),var(--c-primary-ink)); box-shadow: 0 .375rem .875rem rgba(30,27,75,.35);}
.app .reco-actions .btn-gold:hover,
.app .reco-actions .btn-ghost-d:hover{ color: #fff; border: 0; background: linear-gradient(125deg,var(--c-primary-2),var(--c-primary-ink));}
.app .reco-actions .bet-save.saved{ opacity: .85; box-shadow: none;}
/* 未登录: 推荐号码问号遮罩球 (锁定灰) */
.app .ball-q{ color: #fff; font-weight: 800; background: linear-gradient(135deg,#cbd5e1,#94a3b8); box-shadow: inset 0 -.1875rem .375rem rgba(15,23,42,.18);}
/* 未登录: 热力图锁定占位 */
.app .heat-locked{ display: flex; flex-direction: column; align-items: center; text-align: center; gap: .375rem; padding: 2rem 1rem;}
.app .heat-locked .hl-ic{ display: inline-flex; align-items: center; justify-content: center; width: 3.25rem; height: 3.25rem; margin-bottom: .375rem; border-radius: 50%; background: rgba(99,102,241,.1); color: var(--c-primary-ink);}
.app .heat-locked .hl-ic .ic{ width: 1.5rem; height: 1.5rem;}
.app .heat-locked b{ font-size: 1rem; color: var(--c-text);}
.app .heat-locked > span{ font-size: .8125rem; color: var(--c-text-2);}
.app .heat-locked .btn{ margin-top: .75rem; gap: .375rem;}
.app .ai-quote{ background: linear-gradient(135deg,#f4f6fd,#e9edfb); color: var(--c-text);}
.app .insight{ background: linear-gradient(135deg,#f4f6fd,#eaeefb);}
.app .insight-label,.app .insight .metric-val{ color: var(--c-text-2);}
.app .omen-box{ background: radial-gradient(26rem 8rem at 100% -30%,rgba(139,92,246,.18),transparent 60%),linear-gradient(135deg,#f4f2fd,#ece9fb);}
.app .omen-quote{ background: rgba(99,102,241,.1);}
.app .heat-scale{ width: 5.5rem; height: .5rem; border-radius: var(--rad-pill); background: linear-gradient(90deg,rgba(99,102,241,.16),#4338ca);}
/* 热力图 — 重设计: 每号 = 「数字 + 次数 + 频率横条」的轻量卡 (频率用条长表达, 不再整块深色) */
.app .heat{ display: grid; grid-template-columns: repeat(auto-fill,minmax(3.75rem,1fr)); gap: .5rem;}
.app .heat-cell{ aspect-ratio: auto; min-height: 0; padding: .5rem .5625rem .5625rem; border-radius: var(--rad); border: .0625rem solid var(--c-line); background: rgba(255,255,255,.72); align-items: stretch; justify-content: flex-start; gap: .4375rem; transition: transform .14s, box-shadow .14s, border-color .14s;}
.app .heat-cell:hover{ box-shadow: 0 .375rem 1rem rgba(79,70,229,.16);}
.app .hc-top{ display: flex; align-items: baseline; justify-content: space-between; gap: .25rem;}
.app .heat-cell .hn{ font-size: 1rem; font-weight: 600; color: var(--c-text); font-variant-numeric: tabular-nums; letter-spacing: -.01em;}
.app .heat-cell .hc{ margin: 0; font-size: .75rem; font-weight: 700; color: var(--c-muted); font-variant-numeric: tabular-nums;}
.app .hbar{ height: .3125rem; border-radius: var(--rad-pill); background: rgba(148,163,184,.2); overflow: hidden;}
.app .hbar span{ display: block; height: 100%; border-radius: var(--rad-pill); background: linear-gradient(90deg,var(--c-primary-2),var(--c-primary-ink));}
/* 最热: 靛蓝描边高亮 */
.app .heat-cell.is-hot{ border-color: var(--c-primary); background: rgba(99,102,241,.08); box-shadow: 0 0 0 .0625rem var(--c-primary);}
.app .heat-cell.is-hot .hn,.app .heat-cell.is-hot .hc{ color: var(--c-primary-ink);}
/* 最冷: 灰色描边 + 灰条 */
.app .heat-cell.is-cold{ border-color: rgba(148,163,184,.55);}
.app .heat-cell.is-cold .hbar span{ background: var(--c-muted);}
.app .feat-card .feat-block{ background: linear-gradient(135deg,#f5f7fd,#eef1fb);}
.app .feat-sub{ color: var(--c-text-2);}
.app .miss-row{ background: #f2f4fd;}
.app .miss-row .rk{ background: #dbe1fb; color: var(--c-primary-ink);}
.app .prob-item{ background: #f2f4fd;}
.app .prob-ex.ex-mid{ background: rgba(99,102,241,.14); border-color: var(--c-primary-2);}
.app .vote-row{ background: #f2f4fd;}
.app .vote-row:hover{ border-color: var(--c-primary-2); background: #eef1fb;}
.app .vt-chip.vt-on{ border-color: var(--c-primary); background: rgba(99,102,241,.14); box-shadow: 0 0 0 .125rem rgba(99,102,241,.14);}
.app .reason-formula{ background: #312e81; color: #c7d2fe;}
.app .statbar .track{ background: #e0e7ff;}
.app .tc-bar{ background: linear-gradient(180deg,#818cf8,#4f46e5);}
.app .tc-col.is-max .tc-bar{ background: linear-gradient(180deg,#818cf8,#312e81);}
.app .tc-avg span{ background: var(--c-primary-ink);}

/* ===== 走势图 / 历史 (chart) 精修 ===== */
.app .chart-table th,.app .chart-table td{ border-color: #e6e9f6;}
.app .chart-table thead th,.app .chart-table .col-issue{ background: #eaeefb; color: var(--c-primary-ink);}
.app .chart-table tbody tr:nth-child(odd) td{ background: #f7f8fd;}
.app .chart-table tbody tr:hover td{ background: #eef1fb;}
.app .chart-table td.miss{ color: #b9c0d6;}
.app .chart-table .stat-row .col-issue{ background: #dfe4fb; color: var(--c-primary-ink);}
.app .hist-table thead th{ background: linear-gradient(180deg,#eef1fb,#e5eafb); color: var(--c-primary-ink); border-bottom-color: var(--c-primary-2);}
.app .hist-table tbody tr:nth-child(even) td{}
.app .hist-table tbody tr:hover td{ background: #eef1fb;}
.app .sq-btn:hover{ border-color: var(--c-primary-2); background: #eef1fb; color: var(--c-primary-ink);}
/* 关键: border-collapse:collapse 下 position:sticky 的冻结列在部分浏览器(移动端 webview)
   会失效/横向拖动时抖动移动。改为 separate + 单侧 1px 边框, 固定列才真正稳定不动。 */
.app .chart-table{ border-collapse: separate; border-spacing: 0;}
.app .chart-table th,.app .chart-table td{ border-width: 0 .0625rem .0625rem 0; border-color: #e6e9f6;}
.app .chart-table thead th{ border-top-width: .0625rem;}
.app .chart-table th:first-child,.app .chart-table td:first-child{ border-left-width: .0625rem;}
.app .chart-table thead th,.app .chart-table .col-issue{ position: -webkit-sticky; position: sticky;}
/* 模拟选号行 — 浅色; 区间分隔 1px */
.app .chart-table .zone-sep,.app #simBody .zone-sep{ border-left: .0625rem solid var(--c-primary-2);}
.app #simBody td{ background: #eef1fb; border-top: .0625rem solid var(--c-primary-2); border-bottom: .0625rem solid var(--c-primary-2); border-left-color: #dfe4fb; border-right-color: #dfe4fb;}
.app #simBody tr:hover td{ background: #eef1fb;}
.app #simBody .sim-label{ background: #dfe4fb; color: var(--c-primary-ink);}
.app #simBody .sim-cell .ball-slot{ color: var(--c-text-2);}
.app #simBody .sim-cell:not(.on):hover .ball-slot{ background: rgba(99,102,241,.14); color: var(--c-primary-ink);}
/* 选中态: 明确恢复彩球 (避免被高优先级 hover 覆盖成浅色) */
.app #simBody .sim-cell.red.on .ball-slot{ background: radial-gradient(circle at 30% 30%,#ff6b6b,#e53935); color: #fff;}
.app #simBody .sim-cell.blue.on .ball-slot{ background: radial-gradient(circle at 30% 30%,#5aa8f5,#1e88e5); color: #fff;}
/* 固定「期号」列: 统一不透明底 + 提升层级 + 右侧遮缝, 消除横向滚动时号码渗色/抖动 */
.app .chart-table .col-issue,
.app .chart-table tbody tr:nth-child(odd) td.col-issue,
.app .chart-table tbody tr:hover td.col-issue{ background: #e9edfb;}
.app .chart-table .col-issue{ z-index: 3;}
.app .chart-table thead .col-issue{ z-index: 4;}
.app .chart-table .stat-row td.col-issue,
.app #simBody td.col-issue{ background: #dfe4fb;}
.app .chart-table .stat-row .col-issue,
.app #simBody .col-issue{}

/* ===== 定制推号(custom) 精修 ===== */
.app .ai-card::after{ background: radial-gradient(25rem 18rem at 12% 18%,rgba(99,102,241,.16),transparent 60%);}
.app .cd-unit{ box-shadow: inset 0 0 0 .0625rem rgba(129,140,248,.4),0 .3125rem .875rem rgba(0,0,0,.35);}
.app .aura-box{ background: radial-gradient(26rem 8rem at 0% -30%,rgba(139,92,246,.16),transparent 60%),linear-gradient(135deg,#f4f2fd,#ece9fb); box-shadow: inset 0 0 0 .0625rem rgba(99,102,241,.18);}

/* ===== 我的选号 (mypicks) App 重制 ===== */
/* 个人资料 Hero (含命中复盘, 合并为一张卡) */
.app .mp-hero{ display: flex; flex-direction: column; padding: 1.125rem; margin-bottom: 1rem;}
.app .mp-hero-top{ display: flex; align-items: center; gap: .9375rem;}
.app .mp-ava-ring{ flex: 0 0 auto; padding: .1875rem; border-radius: 50%; background: linear-gradient(135deg,var(--c-primary-2),var(--c-primary-ink)); box-shadow: 0 .5rem 1.25rem rgba(79,70,229,.3);}
.app .mp-ava{ width: 3.5rem; height: 3.5rem; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 1.625rem; font-weight: 800; border: .1875rem solid rgba(255,255,255,.85);}
.app .mp-hero-txt{ min-width: 0;}
.app .mp-uname{ font-size: 1.1875rem; font-weight: 800; display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; letter-spacing: -.01em;}
.app .mp-role{ font-size: .625rem; font-weight: 700; padding: .125rem .4375rem; border-radius: var(--rad-sm); color: #fff; background: linear-gradient(120deg,var(--c-primary),var(--c-primary-ink));}
.app .mp-since{ display: flex; align-items: center; gap: .3125rem; margin-top: .375rem; font-size: .8125rem; color: var(--c-text-2);}
/* 账本入口按钮 (个人卡右上) */
.app .mp-ledger-btn{ flex: 0 0 auto; align-self: flex-start; margin-left: auto; display: inline-flex; flex-direction: column; align-items: center; gap: .1875rem; padding: .5rem .625rem; border-radius: var(--rad); color: var(--c-primary-ink); background: rgba(99,102,241,.1); border: .0625rem solid var(--c-line); transition: transform .12s, background .14s;}
.app .mp-ledger-btn:hover{ color: var(--c-primary-ink); background: rgba(99,102,241,.16);}
.app .mp-ledger-btn:active{ transform: scale(.95);}
.app .mp-ledger-btn .ic{ width: 1.25rem; height: 1.25rem;}
.app .mp-ledger-btn span{ font-size: .6875rem; font-weight: 700;}

/* ===== 投注账本 (ledger) ===== */
.app .lg-summary{ padding: 1.125rem; margin-bottom: 1rem;}
.app .lg-net{ display: flex; flex-direction: column; align-items: center; text-align: center; gap: .1875rem; padding-bottom: 1rem;}
.app .lg-net-lbl{ font-size: .8125rem; color: var(--c-text-2);}
.app .lg-net b{ font-size: 2.125rem; font-weight: 800; line-height: 1.05; font-variant-numeric: tabular-nums; letter-spacing: -.02em;}
.app .lg-net.up b{ color: var(--c-green);}
.app .lg-net.down b{ color: var(--c-accent);}
.app .lg-net-sub{ font-size: .75rem; color: var(--c-text-2);}
.app .lg-stats{ display: flex; border-radius: var(--rad); overflow: hidden; background: rgba(99,102,241,.06); border: .0625rem solid var(--c-line);}
.app .lg-stat{ flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; align-items: center; gap: .1875rem; padding: .8125rem .375rem; text-align: center;}
.app .lg-stat + .lg-stat{ border-left: .0625rem solid var(--c-line);}
.app .lg-stat b{ font-size: 1.25rem; font-weight: 800; line-height: 1; color: var(--c-primary-ink); font-variant-numeric: tabular-nums;}
.app .lg-stat b.win{ color: var(--c-green);}
.app .lg-stat b i{ font-size: .8125rem; font-weight: 700; font-style: normal; margin-left: .0625rem;}
.app .lg-stat span{ font-size: .6875rem; color: var(--c-text-2);}
.app .lg-stat .lg-si{ display: inline-flex; color: var(--c-primary); margin-bottom: .0625rem;}
.app .lg-stat .lg-si .ic{ width: 1rem; height: 1rem;}
.app .lg-stat b i{ font-size: .8125rem; font-weight: 700; font-style: normal; margin-left: .0625rem;}

/* 区块小标题 */
.app .lg-h{ display: flex; align-items: center; gap: .375rem; margin: 1.375rem .125rem .625rem; font-size: 1rem; font-weight: 800; color: var(--c-text);}
.app .lg-h .ic{ width: 1.0625rem; height: 1.0625rem; color: var(--c-primary);}
.app .lg-h-hint{ font-size: .6875rem; font-weight: 500; color: var(--c-muted);}
.app .lg-empty{ text-align: center; padding: 1rem; font-size: .8125rem; color: var(--c-muted);}

/* 资金比例 */
.app .lg-ratio{ padding: 1.125rem; display: flex; flex-direction: column; gap: 1rem;}
.app .lg-ratio-row{ display: flex; flex-direction: column; gap: .4375rem;}
.app .lg-ratio-top{ display: flex; align-items: baseline; justify-content: space-between; gap: .5rem;}
.app .lg-ratio-top span{ font-size: .875rem; font-weight: 700; color: var(--c-text);}
.app .lg-ratio-top span i{ font-size: .6875rem; font-weight: 500; font-style: normal; color: var(--c-muted); margin-left: .375rem;}
.app .lg-ratio-top b{ font-size: 1.125rem; font-weight: 800; color: var(--c-primary-ink); font-variant-numeric: tabular-nums;}
.app .lg-ratio-top b.up{ color: var(--c-green);}
.app .lg-ratio-top b.down{ color: var(--c-accent);}
.app .lg-ratio-track{ height: .625rem; border-radius: var(--rad-pill); background: rgba(148,163,184,.2); overflow: hidden;}
.app .lg-ratio-meta{ display: flex; flex-wrap: wrap; gap: .375rem .875rem; padding-top: .25rem; font-size: .75rem; color: var(--c-text-2);}
.app .lg-ratio-meta span{ display: inline-flex; align-items: center; gap: .25rem;}
.app .lg-ratio-meta .ic{ width: .875rem; height: .875rem; color: var(--c-primary);}
.app .lg-ratio-meta b{ color: var(--c-text); font-weight: 800; font-variant-numeric: tabular-nums;}

/* 图表条 (按年份 / 按月份 通用) */
.app .lg-chart{ padding: 1rem 1.125rem; display: flex; flex-direction: column; gap: 1rem;}
.app .lg-bar-row{ display: flex; flex-direction: column; gap: .375rem;}
.app .lg-bar-row + .lg-bar-row{ padding-top: 1rem; border-top: .0625rem solid var(--c-line);}
.app .lg-bar-head{ display: flex; align-items: baseline; gap: .5rem;}
.app .lg-bar-name{ font-size: .9375rem; font-weight: 800; color: var(--c-text); font-variant-numeric: tabular-nums;}
.app .lg-bar-sub{ font-size: .6875rem; color: var(--c-muted); font-variant-numeric: tabular-nums;}
.app .lg-bar-roi{ margin-left: auto; font-size: .8125rem; font-weight: 800; font-variant-numeric: tabular-nums;}
.app .lg-bar-roi.up{ color: var(--c-green);}
.app .lg-bar-roi.down{ color: var(--c-accent);}
.app .lg-bar-line{ display: flex; align-items: center; gap: .5rem;}
.app .lg-bar-k{ flex: 0 0 2rem; font-size: .6875rem; color: var(--c-text-2);}
.app .lg-bar-track{ flex: 1 1 auto; height: .5rem; border-radius: var(--rad-pill); background: rgba(148,163,184,.18); overflow: hidden;}
.app .lg-bar-v{ flex: 0 0 auto; min-width: 3.75rem; text-align: right; font-size: .75rem; font-weight: 800; color: var(--c-text); font-variant-numeric: tabular-nums;}
.app .lg-bar-v.up{ color: var(--c-green);}
.app .lg-bar-v.down{ color: var(--c-accent);}
.app .lg-bar-big{ font-size: .6875rem; color: #b45309;}
/* 进度/图表填充色 */
.app .lg-fill{ display: block; height: 100%; border-radius: var(--rad-pill);}
.app .lg-fill.cost{ background: linear-gradient(90deg,var(--c-primary-2),var(--c-primary-ink));}
.app .lg-fill.win,.app .lg-fill.up{ background: linear-gradient(90deg,#6ee7b7,var(--c-green));}
.app .lg-fill.down{ background: linear-gradient(90deg,#fda4af,var(--c-accent));}
.app .lg-note{ display: flex; align-items: baseline; gap: .375rem; margin: 1rem .125rem 0; font-size: .75rem; color: var(--c-muted); line-height: 1.5;}
.app .lg-note .ic{ flex: 0 0 auto; width: .875rem; height: .875rem;}
.app .mp-since .ic{ width: .875rem; height: .875rem; color: var(--c-primary);}
/* 统计三格 */
.app .mp-stats{ display: flex; margin-top: 1rem; border-radius: var(--rad); overflow: hidden; background: rgba(99,102,241,.06); border: .0625rem solid var(--c-line);}
.app .mp-stat{ flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; align-items: center; gap: .1875rem; padding: .8125rem .375rem; text-align: center;}
.app .mp-stat + .mp-stat{ border-left: .0625rem solid var(--c-line);}
.app .mp-stat b{ font-size: 1.375rem; font-weight: 800; line-height: 1; color: var(--c-primary-ink); font-variant-numeric: tabular-nums; letter-spacing: -.02em;}
.app .mp-stat span{ font-size: .6875rem; color: var(--c-text-2); white-space: nowrap;}
.app .mp-stat-money b{ color: var(--c-green);}

/* 区块标题 */
.app .mp-sec{ display: flex; align-items: baseline; gap: .5rem; margin: 1.5rem .125rem .75rem; font-size: 1.0625rem; font-weight: 800; color: var(--c-text);}
.app .mp-sec span{ font-size: .75rem; font-weight: 500; color: var(--c-muted);}
/* 芯片筛选 */

/* 添加按钮 (与复制/删除同排, 作为主操作) */
.app .mp-add-btn{ border: 0; color: #fff; font-weight: 700; background: linear-gradient(125deg,var(--c-primary),var(--c-primary-ink)); box-shadow: 0 .375rem .875rem rgba(79,70,229,.32); transition: transform .16s, box-shadow .16s;}
.app .mp-add-btn:hover{ color: #fff; border: 0; background: linear-gradient(125deg,var(--c-primary),var(--c-primary-ink)); box-shadow: 0 .5rem 1.125rem rgba(79,70,229,.4);}
.app .mp-add-btn:active{ transform: scale(.96);}
.app .empty .mp-add-btn{ margin-top: 1rem;}
/* 入口卡 (跳转到独立工具页, 如复式包号计算器) */
.app .hist-link{ display: flex; align-items: center; gap: .875rem; padding: .9375rem 1rem; border-radius: var(--rad-lg); color: var(--c-text); transition: transform .16s;}
.app .hist-link:active{ transform: scale(.99);}
.app .hist-link .hl-ic{ flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 2.75rem; height: 2.75rem; border-radius: var(--rad); color: #fff; background: linear-gradient(150deg,var(--c-primary),var(--c-primary-ink)); box-shadow: 0 .375rem .875rem rgba(79,70,229,.3);}
.app .hist-link .hl-ic .ic{ width: 1.375rem; height: 1.375rem;}
.app .hist-link .hl-tx{ flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: .1875rem;}
.app .hist-link .hl-tx b{ font-size: .9375rem; font-weight: 800;}
.app .hist-link .hl-tx i{ font-size: .75rem; font-style: normal; color: var(--c-text-2);}
.app .hist-link .hl-go{ flex: 0 0 auto; color: var(--c-primary-ink);}
/* 命中复盘 — 并入个人资料卡, 位于头部下方, 用分割线隔开 */
.app .mp-review{ padding-top: 1rem;}
/* 复盘行 — 扁平: 同一卡片内, 行间用分割线, 不做框中框 */
.app .mp-rv-row{ padding: 0;}
.app .mp-rv-row + .mp-rv-row{ margin-top: 1rem; padding-top: 1rem; border-top: .0625rem solid var(--c-line);}
.app .mp-rv-row .rv-top{ display: flex; align-items: center; gap: .4375rem; margin-bottom: .75rem;}
.app .mp-rv-row .rv-dot{ width: .5rem; height: .5rem; border-radius: 50%; background: var(--c,var(--c-primary)); flex: 0 0 auto;}
.app .mp-rv-row .rv-nm{ font-size: .9375rem; font-weight: 800; color: var(--c,var(--c-text));}
.app .mp-rv-row .rv-meta{ margin-left: auto; font-size: .75rem; font-weight: 500; color: var(--c-muted); white-space: nowrap;}
.app .mp-rv-row .rv-meta b{ color: var(--c-text); font-weight: 800; font-variant-numeric: tabular-nums;}
/* 身体: 左中奖率(数字+进度条) + 右命中 */
.app .rv-body{ display: flex; align-items: center; gap: 1rem;}
.app .rv-rate{ flex: 0 0 auto; width: 4.5rem;}
.app .rv-rate-num{ display: flex; align-items: baseline; justify-content: flex-start; color: var(--c-text-2);}
.app .rv-rate-num b{ font-size: 1.75rem; font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums; letter-spacing: -.02em;}
.app .rv-rate-num i{ font-size: .875rem; font-weight: 700; font-style: normal; margin-left: .0625rem;}
.app .rv-rate.on .rv-rate-num{ color: var(--c-green);}
.app .rv-rate-lbl{ margin-top: .125rem; font-size: .6875rem; color: var(--c-text-2);}
.app .rv-bar{ margin-top: .5rem; height: .3125rem; border-radius: var(--rad-pill); background: rgba(148,163,184,.24); overflow: hidden;}
.app .rv-bar span{ display: block; height: 100%; border-radius: var(--rad-pill); background: linear-gradient(90deg,var(--c-primary-2),var(--c-green));}
.app .rv-rate:not(.on) .rv-bar span{ background: var(--c-muted);}
.app .rv-hits{ flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: .4375rem; padding-left: 1rem; border-left: .0625rem solid var(--c-line);}
.app .rv-hit{ display: flex; align-items: center; gap: .375rem;}
.app .rv-hit .rv-hlbl{ font-size: .75rem; color: var(--c-text-2); margin-right: auto;}
.app .rv-v{ display: inline-flex; align-items: center; justify-content: center; min-width: 2rem; height: 1.5rem; padding: 0 .8rem; border-radius: var(--rad-pill); font-size: .8125rem; font-weight: 800; font-variant-numeric: tabular-nums;}
.app .rv-v.rv-r{ color: #c0392b; background: rgba(192,57,43,.1);}
.app .rv-v.rv-b{ color: #2f72b8; background: rgba(47,114,184,.12);}
/* 收藏分组 / 卡 / 徽章 / 空态 / 分页 */
/* 收藏卡片 — 参考首页「最新开奖」玻璃卡 */
.app .pick-group{ margin-bottom: var(--sp-4); overflow: hidden; background: var(--glass-2);
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat)); -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border: .0625rem solid var(--glass-brd); border-radius: var(--rad-lg); box-shadow: var(--sh-glass);}
.app .pick-group .pg-head{ padding: var(--sp-4) var(--sp-5) var(--sp-3); background: transparent; border-bottom: .0625rem solid var(--c-line);}
.app .pg-dot{ width: .625rem; height: .625rem; box-shadow: 0 0 0 .1875rem rgba(99,102,241,.12);}
.app .pg-type{ font-size: 1.0625rem; font-weight: 800; color: var(--c-text);}
.app .pg-issue{ font-size: .8125rem; color: var(--c-text-2);}
.app .pg-issue b{ color: var(--c-primary-ink); font-size: .875rem;}
.app .pg-count{ padding: .1875rem .625rem; border-radius: var(--rad-pill); font-size: .6875rem; font-weight: 700; color: var(--c-primary-ink); background: rgba(99,102,241,.12);}
.app .pg-head .mp-pending{ padding: .125rem .5625rem; border-radius: var(--rad-pill); font-size: .6875rem; font-weight: 700; color: #b45309; background: rgba(245,158,11,.16);}
.app .pg-copy-all{ background: rgba(255,255,255,.7); border-color: var(--c-line); color: var(--c-primary-ink);}
.app .pk{ padding: var(--sp-4) var(--sp-5); border-bottom-color: var(--c-line);}
.app .pk:hover{ background: rgba(99,102,241,.05);}
.app .pk-foot{ border-top-color: var(--c-line);}
.app .pk-time{ color: var(--c-muted);}
.app .badge-gold{ background: rgba(99,102,241,.1); color: var(--c-primary-ink);}
.app .mp-ex.ex-mid{ background: rgba(99,102,241,.1); border-color: var(--c-primary-2); color: var(--c-primary-ink);}
.app .mp-win-hit{ color: var(--c-accent);}
.app .badge{ background: #eef1fb; color: var(--c-text-2);}
.app .empty{ padding: 2rem 1rem; text-align: center; color: var(--c-muted); background: rgba(255,255,255,.6); border: .0625rem solid var(--c-line); border-radius: var(--rad-lg);}
.app .pager .on{ background: var(--c-primary); color: #fff; border-color: var(--c-primary);}

/* ===== 登录 / 注册 (App 玻璃卡) ===== */
.auth-app{ max-width: 26rem; margin: 0 auto; padding-top: var(--sp-4);}
.auth-top{ text-align: center; margin-bottom: var(--sp-5);}

.auth-top h1{ margin: var(--sp-4) 0 .375rem; font-size: 1.5rem; font-weight: 800; letter-spacing: .01em;}
.auth-top p{ margin: 0; font-size: .875rem; color: var(--c-text-2); line-height: 1.55;}
.app .auth-card{ padding: var(--sp-6);}
.app .auth-field{ margin-bottom: var(--sp-4);}
.app .auth-field label{ display: block; font-size: .8125rem; font-weight: 600; color: var(--c-text-2); margin-bottom: .4375rem;}
.app .auth-field input{ width: 100%; height: 3rem; padding: 0 var(--sp-4); font-size: 1rem; color: var(--c-text);
  border: .0625rem solid var(--c-line); border-radius: var(--rad); background: rgba(255,255,255,.7); transition: border-color .16s,box-shadow .16s,background .16s;}
.app .auth-field input:focus{ outline: none; border-color: var(--c-primary); box-shadow: 0 0 0 .1875rem rgba(99,102,241,.2); background: #fff;}
.app .auth-pass{ position: relative; display: flex; align-items: center;}
.app .auth-pass input{ padding-right: 3.75rem;}
.app .auth-eye{ position: absolute; right: .5rem; top: 50%; transform: translateY(-50%); display: inline-flex; align-items: center; height: 2rem; padding: 0 .625rem; border: 0; background: rgba(99,102,241,.1); color: var(--c-primary-ink); font-size: .8125rem; font-weight: 700; cursor: pointer; border-radius: var(--rad-sm);}
.app .auth-submit{ width: 100%; height: 3.125rem; margin-top: var(--sp-2); border: 0; border-radius: var(--rad); cursor: pointer;
  font-size: 1.0625rem; font-weight: 700; letter-spacing: .15em; color: #fff; background: linear-gradient(125deg,var(--c-primary),var(--c-primary-ink)); box-shadow: 0 .625rem 1.5rem rgba(79,70,229,.32); transition: transform .16s,filter .16s;}
.app .auth-submit:hover{ filter: brightness(1.06);}
.app .auth-submit:active{ transform: scale(.98);}
.auth-errors{ margin-bottom: var(--sp-4); padding: var(--sp-3) var(--sp-4); border-radius: var(--rad); background: rgba(244,63,94,.1); border: .0625rem solid rgba(244,63,94,.28); color: #be123c; font-size: .8125rem; line-height: 1.5;}
.auth-errors p{ margin: .125rem 0;}
.auth-alt{ margin: var(--sp-5) 0 0; text-align: center; font-size: .875rem; color: var(--c-text-2);}
.auth-alt a{ color: var(--c-primary-ink); font-weight: 700;}

/* 平板+ */
@media (min-width: 40rem){
  .draw-grid{ grid-template-columns: 1fr 1fr;}
  .hero-app h1{ font-size: 2.25rem;}
  .feat-grid{ grid-template-columns: repeat(4,1fr);}
  .feat.big{ grid-column: 1 / -1;}
}
