/* ===== CSS Variables ===== */
:root {
  --red:#e60012; --red-bg:#fef2f2; --blue:#2563eb; --blue-bg:#eff6ff;
  --green:#16a34a; --green-bg:#f0fdf4; --orange:#ea580c; --orange-bg:#fff7ed;
  --cyan:#0891b2; --gray:#9ca3af; --sub:#6b7280; --txt:#1f2937;
  --line:#e5e7eb; --bg:#f3f4f6;   --shadow:0 1px 2px rgba(0,0,0,.06);
  --radius:8px; --safe-b:env(safe-area-inset-bottom);
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%!important;text-size-adjust:100%!important}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--txt);font-size:15px;line-height:1.5;max-width:680px;margin:0 auto;-webkit-font-smoothing:antialiased}
.hidden{display:none!important}
img{display:block;max-width:100%}

/* ===== Topbar ===== */
.topbar{background:linear-gradient(135deg,var(--red),#c8000f);color:#fff;padding:7px 14px calc(4px + env(safe-area-inset-top));position:sticky;top:0;z-index:50}
.topbar .brand{display:flex;align-items:center;gap:8px;margin-bottom:3px}
.topbar .logo-img{width:24px;height:24px;border-radius:6px}
.topbar h1{font-size:15px;font-weight:700}
.topbar .tagline{font-size:10px;opacity:.85;margin-top:0}
.topbar .date-row{display:flex;justify-content:space-between;align-items:center;font-size:11px;opacity:.9}
.topbar .update{opacity:.8}

/* ===== Model Stats Banner (滚动战绩) ===== */
.stats-banner{background:linear-gradient(90deg,#1e3a5f,#0c4a6e);color:#fff;padding:4px 0;overflow:hidden;position:relative;display:flex;align-items:center}
.stats-banner .sb-scroll{flex:1;overflow:hidden}
.stats-banner .sb-track{display:flex;gap:0;animation:scrollStats 30s linear infinite;white-space:nowrap}
@keyframes scrollStats{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}
.stats-banner .sb-item{display:inline-flex;align-items:center;gap:4px;padding:0 14px;font-size:12px;border-right:1px solid rgba(255,255,255,.2);flex-shrink:0;white-space:nowrap}
.stats-banner .sb-item .sb-val{font-weight:700;font-size:14px}
.stats-banner .sb-item .sb-lbl{opacity:.8}
.stats-banner .sb-model{color:#fbbf24}
.stats-banner select#modelStatsSelect{margin-left:4px;cursor:pointer;max-width:112px;font-size:12px}

/* ===== Tabs ===== */
.tab-bar{display:flex;background:#fff;border-top:1px solid var(--line);z-index:40;box-shadow:0 -2px 8px rgba(0,0,0,.06);height:52px;align-items:center}
.tab-bar .tab{flex:1;text-align:center;padding:8px 0;font-size:13px;color:var(--sub);cursor:pointer;transition:.2s;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;height:100%}
.tab-bar .tab .tab-icon{font-size:20px;line-height:1;transition:.2s}
.tab-bar .tab .tab-label{font-size:11px;line-height:1;transition:.2s}
.tab-bar .tab.active{color:var(--red)}
.tab-bar .tab.active .tab-icon{transform:scale(1.1)}
.tab-bar .tab.active .tab-label{font-weight:700}
.tab-bar .tab.active::before{content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);width:28px;height:3px;background:var(--red);border-radius:0 0 3px 3px}

/* ===== ICP 备案栏 ===== */
.icp-bar{position:fixed;bottom:52px;left:0;right:0;max-width:680px;margin:0 auto;height:18px;display:flex;align-items:center;justify-content:center;gap:4px;background:#f7f7f7;border-top:1px solid #f0f0f0;z-index:46;font-size:10px;color:#999;padding:0 8px;overflow:hidden;white-space:nowrap}
.icp-bar a,.icp-bar span{overflow:hidden;white-space:nowrap}
.icp-bar a{color:#999;text-decoration:none}
.icp-bar a:hover{color:var(--blue)}
.icp-bar .icp-divider{color:#ccc}

/* ===== Content ===== */
.content{padding:6px 10px calc(96px + env(safe-area-inset-bottom))}

/* ===== Match Card (模型) ===== */
.match-card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:4px;overflow:hidden;border:1px solid #f0f0f0}
.match-card.has-rec{border:1px solid #fbbf24}
.mc-header{display:flex;align-items:center;padding:6px 12px;cursor:pointer;flex-wrap:nowrap;gap:4px}
.mc-header .league-tag{font-size:11px;color:var(--sub);background:var(--bg);padding:2px 6px;border-radius:3px;flex-shrink:0}
.mc-header .single-tag{font-size:10px;color:var(--red);border:1px solid var(--red);padding:0 4px;border-radius:2px;flex-shrink:0}
.mc-header .neutral-tag{font-size:10px;color:var(--blue);border:1px solid var(--blue);padding:0 4px;border-radius:2px;flex-shrink:0}
.mc-header .match-name{flex:1;min-width:0;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mc-header .kickoff-time{font-size:11px;color:var(--gray);white-space:nowrap;flex-shrink:0}
.mc-header .arrow{color:var(--gray);font-size:12px;margin-left:2px;transform:rotate(90deg);transition:.2s;flex-shrink:0}
.mc-header.open .arrow{transform:rotate(-90deg)}
/* header 内非队名元素一律不压缩不换行（防队名被挤压） */
.mc-header > span:not(.match-name){flex-shrink:0}
.om-header > span:not(.om-match){flex-shrink:0}
.mc-body{display:none;padding:0 12px 8px}
.mc-body.open{display:block}

/* Odds Row */
.odds-row{display:flex;gap:3px;margin-bottom:2px}
.odds-row .col{flex:1;text-align:center;background:var(--bg);border-radius:4px;padding:5px 2px;cursor:pointer;border:1px solid #e5e7eb;transition:.15s}
.odds-row .col.sel{background:var(--red);color:#fff;border-color:var(--red)}
.odds-row .col.sel .label,.odds-row .col.sel .val{color:#fff}
.odds-row .col.sel .rr-val{color:#fff!important}
.odds-row .col .label{font-size:10px;color:var(--sub);margin-bottom:2px}
.odds-row .col .val{font-size:15px;font-weight:700;line-height:1.1}
.odds-row .col .rr-val{font-size:9px;font-weight:600;display:inline;margin-left:2px}
.odds-row .col .om-arrow-up{color:#dc2626;font-size:9px;margin-left:1px}
.odds-row .col .om-arrow-dn{color:#16a34a;font-size:9px;margin-left:1px}
/* RR 5档颜色 */
.rr-red{color:#dc2626}    /* <0.8 赔率方盈利 */
.rr-orange{color:#ea580c} /* 0.8-0.95 偏赔率方 */
.rr-blue{color:#2563eb}   /* 0.95-1.05 均衡 */
.rr-cyan{color:#0891b2}   /* 1.05-1.15 偏价值 */
.rr-green{color:#16a34a}  /* >=1.15 赔率方亏损 */

/* Signal info */
.signal-info{background:var(--red-bg);border-radius:4px;padding:6px 10px;margin-top:4px}
.signal-info .si-dir{font-size:14px;font-weight:700;color:var(--red)}
.signal-info .si-row{display:flex;justify-content:space-between;font-size:12px;color:var(--sub);margin-top:2px}
.signal-info .si-strength{font-size:11px;padding:1px 6px;border-radius:3px;margin-left:4px}
.signal-info .si-strength.strong{background:#fde68a;color:#92400e}
.signal-info .si-strength.medium{background:#bfdbfe;color:#1e40af}
.signal-info .si-strength.weak{background:#e5e7eb;color:#6b7280}
.signal-info .si-interp{font-size:12px;color:var(--sub);margin-top:4px;line-height:1.5}

/* 一键生成按钮 */
.gen-btn{display:block;width:100%;background:var(--red);color:#fff;border:none;padding:7px;border-radius:4px;font-size:14px;font-weight:600;margin-top:4px;cursor:pointer}
.gen-btn:active{opacity:.85}

/* Model intro */
.model-intro{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:10px;margin-bottom:4px;border:1px solid #f0f0f0}
.model-intro .mi-name{font-size:15px;font-weight:700;color:var(--txt)}
.model-intro .mi-desc{font-size:13px;color:var(--sub);line-height:1.6;margin-top:6px}
.model-intro .mi-features{margin-top:6px}
.model-intro .mi-features .mi-f{font-size:12px;color:var(--green);padding:2px 0;padding-left:14px;position:relative}
.model-intro .mi-features .mi-f::before{content:"✓";position:absolute;left:0;color:var(--green)}
.model-intro .mi-actions{display:flex;gap:8px;margin-top:8px}
.model-intro .mi-actions .mi-btn{flex:1;text-align:center;font-size:12px;padding:6px;border-radius:6px;border:1px solid var(--line);color:var(--sub);cursor:pointer}

/* ===== Official Odds (数据) ===== */
.om-card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:6px;overflow:hidden;border:1px solid #f0f0f0}
.om-header{display:flex;align-items:center;padding:6px 12px;cursor:pointer;flex-wrap:nowrap;gap:4px}
.om-header .om-league{font-size:11px;color:var(--sub);background:var(--bg);padding:2px 6px;border-radius:3px;flex-shrink:0}
.om-header .om-single{font-size:10px;color:var(--red);border:1px solid var(--red);padding:0 4px;border-radius:2px;flex-shrink:0}
.om-header .om-neutral{font-size:10px;color:var(--blue);border:1px solid var(--blue);padding:0 4px;border-radius:2px;flex-shrink:0}
.om-header .om-match{flex:1;min-width:0;font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.om-header .om-time{font-size:11px;color:var(--gray);white-space:nowrap;flex-shrink:0}
.om-header .om-arrow{color:var(--gray);font-size:12px;transition:.2s;flex-shrink:0}
.om-header.open .om-arrow{transform:rotate(180deg)}
.follow-btn{font-size:16px;color:var(--gray);cursor:pointer;margin:0 2px;padding:0 2px;user-select:none;flex-shrink:0}
.follow-btn.active{color:#fbbf24;text-shadow:0 0 2px rgba(251,191,36,.5)}
.om-body{display:none;padding:0 12px 10px}
.om-body.open{display:block}

/* Odds section labels */
.om-section-label{font-size:11px;font-weight:600;color:var(--sub);margin:4px 0 2px;display:flex;align-items:center;justify-content:space-between}
.om-section-label .om-toggle{font-size:11px;color:var(--blue);cursor:pointer}
.om-odds-row{display:flex;gap:3px;margin-bottom:2px}
.om-odds-row.mini{flex-wrap:wrap}
.om-odds{flex:1;text-align:center;background:var(--bg);border-radius:4px;padding:4px 2px;cursor:pointer;border:1px solid #e5e7eb;transition:.15s;min-width:60px}
.om-odds.sel{background:var(--red);border-color:var(--red)}
.om-odds.sel .om-ol,.om-odds.sel .om-ov,.om-odds.sel .om-rr{color:#fff!important}
.om-odds .om-ol{font-size:10px;color:var(--sub)}
.om-odds .om-ov{font-size:14px;font-weight:700;line-height:1.1}
.om-odds .om-rr{font-size:9px;font-weight:600;display:inline;margin-left:2px}
.om-odds-row.mini .om-odds{flex:0 0 calc(33.33% - 4px)}
.om-collapsed{display:none}
/* 更多游戏横向Tab栏 */
.om-games-bar{display:flex;gap:0;margin:6px 0 0;border:1px solid #d1d5db;border-radius:6px;overflow:hidden;background:#f9fafb}
.om-games-bar .om-games-tab{flex:1;text-align:center;padding:6px 2px;font-size:12px;color:var(--sub);cursor:pointer;border-right:1px solid #e5e7eb;transition:.15s;white-space:nowrap}
.om-games-bar .om-games-tab:last-child{border-right:none}
.om-games-bar .om-games-tab.active{background:var(--red);color:#fff;font-weight:600}
.om-games-bar .om-games-tab:active{background:#eff6ff}
.om-games-bar .om-games-tab.om-games-more{flex:0 0 auto;padding:6px 8px;color:var(--blue);font-size:11px}
.om-games-bar .om-games-tab.om-games-more:active{background:var(--blue-bg)}
.om-extra-panel{padding:4px 0}
/* 迷你赔率走势线 */
.om-sparkline-row{display:flex;align-items:center;gap:8px;padding:4px 0 2px;margin-top:4px;border-top:1px dashed var(--line)}
.om-sparkline-label{font-size:10px;color:var(--gray);flex:0 0 36px}
.om-sparkline-box{flex:1;height:30px;overflow:hidden}
.om-sparkline{width:100%;height:30px;display:block}
/* 凯利指数 + 冷热指数 */
.om-kelly-row{display:flex;align-items:center;gap:2px;padding:2px 0;font-size:10px}
.om-kelly-label{flex:0 0 28px;color:var(--gray);text-align:right;padding-right:4px}
.om-kelly-val{flex:1;text-align:center;padding:1px 2px;border-radius:3px}
.kelly-hot{color:#dc2626;font-weight:600}
.kelly-cold{color:#2563eb;font-weight:600}
.kelly-neutral{color:var(--gray)}
.om-heat-row{padding-top:0}
.heat-hot{color:#dc2626}
.heat-cold{color:#2563eb}
.heat-neutral{color:var(--gray)}
/* 历史回顾按钮特殊样式 */
.om-games-bar .om-games-tab.om-games-history{color:var(--blue);font-size:11px}
.om-games-bar .om-games-tab.om-games-history.active{background:var(--blue);color:#fff}
.om-games-bar .om-games-tab.om-games-history:active{background:var(--blue-bg)}
/* 历史回顾面板 */
.oh-title{display:flex;align-items:center;gap:6px;padding:8px 0 6px;border-bottom:1px solid var(--line)}
.oh-title>span:first-child{font-size:13px;font-weight:600;color:var(--txt)}
.oh-sub{font-size:11px;color:var(--sub)}
.oh-note{font-size:10px;color:var(--gray);margin-left:auto}
.oh-dist-bar{display:flex;justify-content:space-around;padding:10px 0 6px}
.oh-dist-item{text-align:center;flex:1}
.oh-dist-label{font-size:11px;color:var(--sub)}
.oh-dist-val{font-size:18px;font-weight:700;margin:2px 0}
.oh-dist-count{font-size:10px;color:var(--gray)}
.oh-dist-item.oh-w .oh-dist-val{color:var(--red)}
.oh-dist-item.oh-d .oh-dist-val{color:#f59e0b}
.oh-dist-item.oh-l .oh-dist-val{color:var(--gray)}
.oh-prog-bar{display:flex;height:6px;border-radius:3px;overflow:hidden;margin:0 0 8px}
.oh-prog-w{background:var(--red)}
.oh-prog-d{background:#f59e0b}
.oh-prog-l{background:#d1d5db}
.oh-avg-odds{font-size:11px;color:var(--sub);padding:4px 0;display:flex;gap:12px;flex-wrap:wrap}
.oh-vs-current{color:var(--txt);font-weight:600}
.oh-section-title{font-size:12px;font-weight:600;color:var(--txt);margin:10px 0 4px;padding-top:6px;border-top:1px solid var(--line)}
.oh-range-table{font-size:11px}
.oh-range-hd,.oh-range-row{display:flex;align-items:center;padding:3px 0}
.oh-range-hd{color:var(--sub);font-weight:600;border-bottom:1px solid var(--line)}
.oh-range-hd>span,.oh-range-row>span{flex:1;text-align:center}
.oh-range-row{border-bottom:1px solid #f3f4f6}
.oh-range-row.cur{background:#eff6ff;border-radius:4px}
.oh-range-row.cur>span:first-child{color:var(--blue);font-weight:600}
.oh-rq-dist{display:flex;gap:6px;flex-wrap:wrap}
.oh-rq-item{display:flex;align-items:center;gap:4px;font-size:11px;background:#f9fafb;border:1px solid var(--line);border-radius:4px;padding:3px 6px}
.oh-rq-item>span:first-child{font-weight:600;color:var(--txt)}
.oh-rq-item .oh-rq-cnt{color:var(--gray);font-size:10px}
.oh-samples{max-height:200px;overflow-y:auto;-webkit-overflow-scrolling:touch}
.oh-sample{display:flex;align-items:center;gap:6px;padding:3px 0;border-bottom:1px solid #f3f4f6;font-size:11px}
.oh-s-date{color:var(--gray);flex:0 0 52px}
.oh-s-match{flex:1;color:var(--sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.oh-s-score{font-weight:600;color:var(--txt);flex:0 0 32px;text-align:center}
.oh-s-res{flex:0 0 16px;text-align:center;border-radius:2px;padding:0 2px;font-size:10px;color:#fff}
.oh-res-w{background:var(--red)}
.oh-res-d{background:#f59e0b}
.oh-res-l{background:var(--gray)}
.oh-s-odds{color:var(--gray);font-size:10px;flex:0 0 auto}
/* 赔率变化箭头 */
.om-odds .om-arrow-up{color:#dc2626;font-size:9px;margin-left:1px}
.om-odds .om-arrow-dn{color:#16a34a;font-size:9px;margin-left:1px}

/* 联赛调序栏 */
.league-sort-bar{display:flex;gap:6px;overflow-x:auto;padding:4px 0;margin-bottom:4px;-webkit-overflow-scrolling:touch}
.league-sort-bar::-webkit-scrollbar{display:none}
.league-sort-bar .ls-chip{font-size:12px;padding:3px 10px;border-radius:12px;background:#fff;border:1px solid var(--line);white-space:nowrap;cursor:pointer;color:var(--sub)}
.league-sort-bar .ls-chip.active{background:var(--red);color:#fff;border-color:var(--red)}

/* 过关方式选择栏（底部，官网计算器风格：多选） */
.bet-type-bar{background:#fff;padding:8px 12px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;overflow-x:auto;-webkit-overflow-scrolling:touch}
.bet-type-bar::-webkit-scrollbar{display:none}
.bet-type-bar .bt-label{font-size:13px;font-weight:600;color:var(--txt);white-space:nowrap;flex-shrink:0}
.bet-type-bar .bt-chips{display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch}
.bet-type-bar .bt-chips::-webkit-scrollbar{display:none}
.bet-type-bar .bt-chip{font-size:13px;padding:4px 12px;border-radius:14px;background:var(--bg);border:1px solid var(--line);white-space:nowrap;cursor:pointer;color:var(--sub);transition:.15s}
.bet-type-bar .bt-chip.active{background:var(--red);color:#fff;border-color:var(--red);font-weight:600}
.bet-type-bar .bt-hint{font-size:11px;color:var(--gray);white-space:nowrap;margin-left:auto;flex-shrink:0}

/* ===== 官网计算器：过关方式选择器（比赛列表下方，网格多选） ===== */
.pass-bar{background:#fff;margin:0 12px 8px;border:1px solid var(--line);border-radius:8px;padding:12px}
.pass-bar .pb2-label{font-size:13px;font-weight:600;color:var(--txt);margin-bottom:10px;display:flex;align-items:center;justify-content:space-between}
.pass-bar .pb2-label .pb2-tip{font-size:11px;color:var(--gray);font-weight:400}
.pass-bar .pass-chips{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.pass-bar .pass-chip{font-size:15px;font-weight:600;padding:12px 0;border-radius:8px;background:#f5f5f5;border:1px solid #e0e0e0;cursor:pointer;color:#333;transition:.15s;user-select:none;text-align:center}
.pass-bar .pass-chip.active{background:var(--red);color:#fff;border-color:var(--red);font-weight:700}
.pass-bar .pass-chip.disabled{opacity:.4;cursor:not-allowed}
/* 通用 pass-chip 样式（弹窗内也生效） */
.pass-chip.active{background:var(--red)!important;color:#fff!important;border-color:var(--red)!important;font-weight:700}
.pass-chip.disabled{opacity:.4;cursor:not-allowed}
/* 简化方案建议 */
/* EV/ROI 标签 */
.ci-ev{font-size:10px;font-weight:600;padding:1px 5px;border-radius:3px}
.ci-ev.pos{background:#dcfce7;color:#16a34a}
.ci-ev.neg{background:#fee2e2;color:#dc2626}
.ci-ev.zero{background:#f3f4f6;color:var(--gray)}
.ci-odds-input{width:52px;font-size:11px;text-align:center;border:1px solid var(--line);border-radius:3px;padding:1px 3px;color:var(--txt);background:#fff}
.ci-odds-input:focus{border-color:var(--red);outline:none}
.cg-merge{font-size:11px;color:var(--blue);background:var(--blue-bg);padding:1px 6px;border-radius:8px}
.filter-bar{display:flex;gap:6px;justify-content:center;padding:4px 0}
.filter-bar .fb-btn{font-size:11px;padding:3px 10px;border-radius:12px;border:1px solid var(--line);background:#fff;color:var(--sub);cursor:pointer}
.filter-bar .fb-btn:active{background:var(--red-bg);border-color:var(--red);color:var(--red)}

/* ===== 底部投注栏（官网三段式：左/中/右） ===== */
.bet-footer{position:sticky;bottom:44px;background:#f5f5f5;border-top:1px solid var(--line);padding:8px 12px calc(8px + env(safe-area-inset-bottom));display:flex;align-items:stretch;gap:8px;z-index:40}
/* 左段：已选+倍数（上下堆叠） */
.bet-footer .bf-left{display:flex;flex-direction:column;gap:6px;flex-shrink:0;width:56px}
.bet-footer .bf-left .bf-btn{position:relative;background:#fff;border:1px solid #d0d0d0;border-radius:6px;padding:8px 0;text-align:center;font-size:13px;color:#333;cursor:pointer}
.bet-footer .bf-left .bf-btn.bf-btn-mult{color:var(--red);font-weight:600}
.bet-footer .bf-left .bf-count{position:absolute;top:-8px;left:50%;transform:translateX(-50%);background:var(--red);color:#fff;font-size:11px;font-weight:700;min-width:18px;height:18px;border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 4px}
/* 中段：过关方式+金额+奖金 */
.bet-footer .bf-center{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;justify-content:center}
.bet-footer .bf-pass{background:#fff;color:var(--txt);font-size:13px;font-weight:600;padding:6px 10px;border-radius:6px;cursor:pointer;text-align:center;border:2px solid var(--red);transition:.15s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bet-footer .bf-pass.empty{border:2px solid var(--red);color:var(--red);animation:passPulse 1.5s ease-in-out infinite}
.bet-footer .bf-pass .bf-pass-arrow{font-size:10px;margin-left:2px}
@keyframes passPulse{0%,100%{box-shadow:0 0 0 0 rgba(230,0,18,.4)}50%{box-shadow:0 0 8px 2px rgba(230,0,18,.3)}}
.bet-footer .bf-center .bf-stake{font-size:12px;color:var(--gray)}
.bet-footer .bf-center .bf-stake b{color:var(--red);font-size:14px;font-weight:700}
.bet-footer .bf-center .bf-max{font-size:12px;color:var(--gray);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bet-footer .bf-center .bf-max b{color:var(--red);font-size:14px;font-weight:700}
/* 右段：清空+查看方案（上下堆叠） */
.bet-footer .bf-right{display:flex;flex-direction:column;gap:6px;flex-shrink:0;width:64px}
.bet-footer .bf-clear{background:#e8e8e8;color:#555;font-size:13px;border:none;border-radius:6px;padding:8px 0;cursor:pointer;text-align:center;white-space:nowrap}
.bet-footer .bf-view{background:var(--red);color:#fff;font-size:13px;font-weight:700;border:none;border-radius:6px;padding:8px 0;cursor:pointer;white-space:nowrap;text-align:center}
.bet-footer .bf-view:active{opacity:.85}

/* 浮动打票按钮 */
.float-bet-btn{position:fixed;bottom:calc(76px + env(safe-area-inset-bottom));right:12px;width:44px;height:44px;border-radius:50%;background:var(--red);color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;box-shadow:0 2px 8px rgba(230,0,18,.4);cursor:pointer;z-index:50;transition:.2s;opacity:.55}
.float-bet-btn:active{transform:scale(.92);opacity:1}
.float-bet-btn:hover{opacity:1}
.float-bet-btn:active{transform:scale(.92)}
.float-bet-btn .fb-badge{position:absolute;top:-4px;right:-4px;background:#fbbf24;color:#92400e;font-size:11px;font-weight:700;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center}

/* 确定投注按钮 */
.sa-confirm{background:linear-gradient(135deg,var(--red),#c8000f);color:#fff;width:100%;font-size:15px;font-weight:700;padding:10px;border:none;border-radius:6px;cursor:pointer}
.sa-confirm:active{opacity:.85}
#welcomeOverlay .sa-confirm{padding:8px 16px;font-size:15px}
/* 比赛编号标签 */
.om-matchnum{font-size:10px;color:var(--red);background:var(--red-bg);padding:1px 5px;border-radius:3px;margin-right:4px;font-weight:600;white-space:nowrap;flex-shrink:0}
.mc-header .om-matchnum{font-size:10px;color:var(--red);background:var(--red-bg);padding:1px 5px;border-radius:3px;margin-right:0;font-weight:600;white-space:nowrap;flex-shrink:0}
/* 调序标签 */
.om-reorder{font-size:10px;color:#fff;background:#ea580c;padding:1px 5px;border-radius:3px;margin-right:4px;white-space:nowrap;flex-shrink:0}
.mc-header .om-reorder{font-size:10px;color:#fff;background:#ea580c;padding:1px 5px;border-radius:3px;margin-right:0;white-space:nowrap;flex-shrink:0}

/* ===== 调赔预警 ===== */
.rr-summary-bar{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:8px 12px;margin-bottom:4px;border:1px solid #f0f0f0}
.rr-summary-title{font-size:13px;font-weight:700;display:flex;align-items:center;gap:6px;margin-bottom:6px}
.rr-summary-sub{font-size:10px;font-weight:400;color:var(--gray)}
.rr-summary-none{font-size:13px;color:var(--gray);text-align:center;padding:4px 0}
.rr-summary-counts{display:flex;gap:8px}
.rr-count{flex:1;text-align:center;padding:6px 0;border-radius:6px;font-size:11px}
.rr-count .rc-num{font-size:18px;font-weight:800;display:block;line-height:1.2}
.rr-count .rc-lbl{color:var(--sub)}
.rr-count-red{background:#fee2e2;color:#dc2626}
.rr-count-red .rc-num{color:#dc2626}
.rr-count-yellow{background:#fef9c3;color:#ca8a04}
.rr-count-yellow .rc-num{color:#ca8a04}
.rr-count-total{background:#f3f4f6;color:var(--sub)}
.rr-count-total .rc-num{color:var(--txt)}
.rr-filter-bar{display:flex;gap:6px;overflow-x:auto;padding:4px 0;margin-bottom:4px;-webkit-overflow-scrolling:touch}
.rr-filter-bar::-webkit-scrollbar{display:none}
.rr-filter-bar .rr-chip{font-size:12px;padding:3px 10px;border-radius:12px;background:#fff;border:1px solid var(--line);white-space:nowrap;cursor:pointer;color:var(--sub);flex-shrink:0}
.rr-filter-bar .rr-chip.active{background:var(--red);color:#fff;border-color:var(--red)}
/* 卡片头部预警标签 */
.om-warn{font-size:10px;font-weight:600;padding:1px 5px;border-radius:3px;margin-right:4px;white-space:nowrap;flex-shrink:0}
.om-warn-red{color:#fff;background:#dc2626}
.om-warn-yellow{color:#92400e;background:#fde68a}
/* 预警详情块 */
.om-warn-block{background:#fff8f8;border:1px solid #fecaca;border-radius:6px;padding:6px 10px;margin-bottom:6px}
.om-warn-block .owb-title{font-size:12px;font-weight:700;color:var(--red);margin-bottom:4px;display:flex;align-items:center;gap:6px}
.om-warn-block .owb-title .owb-tip{font-size:10px;font-weight:400;color:var(--gray)}
.om-warn-block .owb-item{display:flex;align-items:center;gap:6px;padding:3px 0;font-size:12px;border-bottom:1px dashed #fecaca}
.om-warn-block .owb-item:last-child{border-bottom:none}
.om-warn-block .owb-lv{font-size:10px;font-weight:700;width:16px;height:16px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0}
.om-warn-block .owb-red .owb-lv{background:#dc2626}
.om-warn-block .owb-yellow .owb-lv{background:#eab308}
.om-warn-block .owb-dir{font-weight:600;flex-shrink:0}
.om-warn-block .owb-rr{color:var(--txt);font-weight:600}
.om-warn-block .owb-over{font-size:10px;color:var(--red);margin-left:2px}
.om-warn-block .owb-rate{font-size:11px;color:var(--sub);margin-left:auto;white-space:nowrap}
.om-warn-block .owb-red{background:#fef2f2}
.om-warn-block .owb-yellow{background:#fffbeb}

/* ===== 弹窗通用 ===== */
.overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:200}
.overlay.show{display:block}
.popup-box{position:fixed;bottom:0;left:0;right:0;background:#fff;border-radius:16px 16px 0 0;padding:10px 14px;max-width:680px;margin:0 auto;max-height:calc(92vh - env(safe-area-inset-top));overflow-y:auto;-webkit-overflow-scrolling:touch}
@supports (height:1dvh){.popup-box{max-height:calc(92dvh - env(safe-area-inset-top))}}
#ticketOverlay .popup-box{max-height:calc(95vh - env(safe-area-inset-top));padding:8px 10px}
@supports (height:1dvh){#ticketOverlay .popup-box{max-height:calc(95dvh - env(safe-area-inset-top))}}
.popup-box .pb-close{text-align:center;padding:4px;color:var(--red);font-size:15px;font-weight:600;margin-top:4px;cursor:pointer}
.popup-box .pb-title{font-size:16px;font-weight:700;text-align:center;margin-bottom:8px}

/* ===== 打票单弹窗（紧凑：一屏显示完） ===== */
.ticket-list{margin-bottom:6px;max-height:55vh;overflow-y:auto}
.ticket-match-group{margin-bottom:4px;border:1px solid var(--line);border-radius:6px;overflow:hidden}
.ticket-match-group .tmg-header{display:flex;justify-content:space-between;align-items:center;padding:3px 10px;background:var(--red-bg);font-size:13px}
.tmg-header .tmg-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
.tmg-header .tmg-count{font-size:11px;color:var(--sub);background:#fff;padding:0 6px;border-radius:10px;flex-shrink:0;margin-left:6px}
.tmg-sels{padding:1px 10px}
.ticket-item{display:flex;justify-content:space-between;align-items:center;padding:2px 0;border-bottom:1px solid var(--line)}
.ticket-item:last-child{border-bottom:none}
.ticket-item .ti-l{flex:1;min-width:0;display:flex;align-items:center}
.ticket-item .ti-match{font-size:13px;font-weight:600}
.ticket-item .ti-sel{font-size:13px;color:var(--sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ticket-item .ti-odds{color:var(--red);font-size:12px}
.ticket-item .ti-del{color:var(--gray);font-size:15px;cursor:pointer;padding:0 6px;flex-shrink:0}
.ticket-summary{padding:6px 10px;background:var(--red-bg);border-radius:6px;margin-bottom:6px}
.ticket-summary .ts-row{display:flex;justify-content:space-between;font-size:13px;margin-bottom:1px}
.ticket-summary .ts-row.total{font-size:16px;font-weight:700;color:var(--red);border-top:1px solid var(--line);padding-top:4px;margin-top:1px}
/* ===== 组合注单分组展示（体彩第5步风格） ===== */
.ticket-overview{background:var(--blue-bg);border-radius:8px;padding:6px 10px;margin-bottom:6px}
.ticket-overview .to-title{font-size:13px;font-weight:700;color:var(--blue);margin-bottom:3px}
.ticket-overview .to-items{display:flex;flex-wrap:wrap;gap:4px}
.ticket-overview .to-item{font-size:11px;background:#fff;padding:2px 8px;border-radius:10px;border:1px solid var(--line);color:var(--txt);white-space:nowrap}
.ticket-overview .to-item b{color:var(--red);font-weight:600}
.combo-group{margin-bottom:6px;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.combo-group .cg-header{display:flex;justify-content:space-between;align-items:center;padding:5px 10px;background:var(--red-bg);font-size:14px;font-weight:700;color:var(--red)}
.combo-group .cg-header .cg-count{font-size:11px;color:var(--sub);background:#fff;padding:0 8px;border-radius:10px;font-weight:600}
.combo-group .cg-body{padding:2px 0}
.combo-item{display:flex;justify-content:space-between;align-items:center;padding:5px 10px;border-bottom:1px solid var(--line)}
.combo-item:last-child{border-bottom:none}
.combo-item .ci-main{flex:1;min-width:0}
.combo-item .ci-matches{display:flex;flex-wrap:wrap;align-items:center;gap:2px;font-size:12px;color:var(--txt)}
.combo-item .ci-match{white-space:nowrap}
.combo-item .ci-match b{color:var(--red);font-weight:600}
.combo-item .ci-match i{color:var(--sub);font-style:normal;margin-left:2px}
.combo-item .ci-link{color:var(--gray);font-size:11px;margin:0 2px}
.combo-item .ci-odds{font-size:11px;color:var(--gray);margin-top:2px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.combo-item .ci-mult-btn{width:20px;height:20px;border-radius:4px;border:1px solid var(--line);background:#fff;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;user-select:none;flex-shrink:0;line-height:1}
.combo-item .ci-mult-btn:active{background:var(--red-bg)}
.combo-item .ci-mult-val{font-size:12px;font-weight:700;min-width:20px;text-align:center;color:var(--txt)}
.combo-item .ti-del{color:var(--gray);font-size:16px;cursor:pointer;padding:0 6px;flex-shrink:0}
.combo-group .cg-empty{text-align:center;color:var(--gray);padding:10px;font-size:12px}
.multi-row{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:6px}
.multi-row .mr-btn{width:26px;height:26px;border-radius:6px;border:1px solid var(--line);background:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center}
.multi-row .mr-val{font-size:14px;font-weight:700;min-width:34px;text-align:center}
.multi-row .mr-input{width:46px;height:26px;border:1px solid var(--line);border-radius:6px;text-align:center;font-size:14px;font-weight:700;color:var(--txt);background:#fff;outline:none}
.multi-row .mr-input:focus{border-color:var(--red)}
.share-actions{display:flex;gap:8px}
.share-actions .sa-btn{flex:1;padding:8px;border-radius:8px;border:none;font-size:14px;font-weight:600;cursor:pointer}
.share-actions .sa-wx{background:#07c160;color:#fff}
.share-actions .sa-save{background:var(--blue);color:#fff}

/* ===== 详情页 ===== */
.detail-page{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--bg);z-index:300;overflow-y:auto;max-width:680px;margin:0 auto}
.detail-header{background:linear-gradient(135deg,var(--red),#c8000f);color:#fff;padding:12px 14px;display:flex;align-items:center;gap:8px;position:sticky;top:0;z-index:10}
.detail-header .dh-back{font-size:20px;cursor:pointer}
.detail-header .dh-title{flex:1;font-size:15px;font-weight:600}
.detail-tabs{display:flex;background:#fff;border-bottom:1px solid var(--line);overflow-x:auto;-webkit-overflow-scrolling:touch;position:sticky;top:44px;z-index:9}
.detail-tabs::-webkit-scrollbar{display:none}
.detail-tabs .dt{padding:10px 14px;font-size:13px;color:var(--sub);white-space:nowrap;cursor:pointer;border-bottom:2px solid transparent}
.detail-tabs .dt.active{color:var(--red);border-bottom-color:var(--red);font-weight:600}
.detail-content{padding:8px 12px}
.detail-section{display:none}
.detail-section.active{display:block}

/* Chart canvas */
.chart-box{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:8px;margin-bottom:8px;border:1px solid #f0f0f0}
.chart-box .cb-title{font-size:13px;font-weight:600;margin-bottom:4px}
.chart-legend{display:flex;gap:10px;font-size:11px;margin-bottom:4px}
.chart-legend .cl-item{display:flex;align-items:center;gap:3px}
.chart-legend .cl-dot{width:10px;height:3px;border-radius:2px}

/* Odds table */
.odds-table{width:100%;font-size:12px;border-collapse:collapse;background:#fff;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.odds-table th{background:var(--bg);padding:6px 6px;text-align:center;font-weight:600;color:var(--sub);font-size:11px}
.odds-table td{padding:5px;text-align:center;border-top:1px solid var(--line)}
.odds-table td.ts{font-size:11px;color:var(--gray)}
.odds-table .arrow-up{color:var(--red)}
.odds-table .arrow-down{color:#3b82f6}
.support-bar{display:flex;gap:1px;height:18px;border-radius:4px;overflow:hidden;margin:4px 0}
.support-bar .sb-h{background:var(--red)}
.support-bar .sb-d{background:#fbbf24}
.support-bar .sb-a{background:var(--blue)}

/* Analysis stats */
.analysis-stats{display:flex;gap:6px;margin-bottom:6px}
.as-card{flex:1;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:8px;text-align:center;border:1px solid #f0f0f0}
.as-card .as-label{font-size:11px;color:var(--sub)}
.as-card .as-num{font-size:18px;font-weight:800;color:var(--txt);margin:3px 0}
.as-card .as-dist{display:flex;justify-content:center;gap:6px;font-size:11px}
.as-card .as-dist .h{color:var(--red)}
.as-card .as-dist .d{color:#fbbf24}
.as-card .as-dist .a{color:var(--blue)}
.history-list{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;border:1px solid #f0f0f0}
.history-list .hl-item{padding:6px 12px;border-bottom:1px solid var(--line);font-size:13px}
.history-list .hl-item .hl-top{display:flex;justify-content:space-between}
.history-list .hl-item .hl-score{font-weight:700}

/* ===== 我的版块 ===== */
.profile-header{background:linear-gradient(135deg,var(--red),#c8000f);color:#fff;padding:16px 14px;text-align:center}
.profile-header .ph-avatar{width:52px;height:52px;border-radius:50%;background:rgba(255,255,255,.2);margin:0 auto 6px;display:flex;align-items:center;justify-content:center;font-size:26px}
.profile-header .ph-name{font-size:18px;font-weight:700}
.profile-header .ph-sub{font-size:13px;opacity:.8;margin-top:4px}
.profile-header .ph-login{display:inline-block;margin-top:8px;background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.4);color:#fff;padding:6px 20px;border-radius:20px;font-size:13px;cursor:pointer}
.profile-header .ph-logout{font-size:11px;opacity:.7;margin-top:6px;cursor:pointer}

.profile-stats{display:flex;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);margin:-10px 12px 10px;padding:12px 0;position:relative;z-index:1}
.profile-stats .ps-item{flex:1;text-align:center}
.profile-stats .ps-item .ps-num{font-size:20px;font-weight:800;color:var(--red)}
.profile-stats .ps-item .ps-lbl{font-size:12px;color:var(--sub);margin-top:2px}
.profile-stats .ps-divider{width:1px;background:var(--line)}

.section-card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:6px;overflow:hidden;border:1px solid #f0f0f0}
.section-card .sc-title{padding:8px 14px;font-size:13px;font-weight:700;color:var(--txt);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:6px}
.section-card .sc-item{padding:8px 14px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;cursor:pointer}
.section-card .sc-item:last-child{border-bottom:none}
.section-card .sc-item .sci-l{display:flex;align-items:center;gap:8px}
.section-card .sc-item .sci-l .sci-icon{font-size:18px}
.section-card .sc-item .sci-l .sci-txt{font-size:14px}
.section-card .sc-item .sci-l .sci-sub{font-size:12px;color:var(--gray)}
.section-card .sc-item .sci-r{font-size:13px;color:var(--sub)}
.section-card .sc-item .sci-arrow{color:var(--gray)}

/* ===== Notification badge ===== */
.tab-badge{display:inline-block;min-width:8px;height:8px;background:var(--red);border-radius:50%;margin-left:2px;vertical-align:top}
.notif-badge{display:inline-block;min-width:18px;height:18px;background:var(--red);color:#fff;border-radius:9px;font-size:11px;text-align:center;line-height:18px;padding:0 5px;margin-left:4px}
.notif-item{padding:10px 14px;border-bottom:1px solid var(--line);display:flex;gap:10px;cursor:pointer}
.notif-item:last-child{border-bottom:none}
.notif-item.unread{background:var(--red-bg)}
.notif-item .ni-icon{font-size:18px;flex-shrink:0;margin-top:2px}
.notif-item .ni-body{flex:1;min-width:0}
.notif-item .ni-title{font-size:14px;font-weight:600;margin-bottom:2px}
.notif-item .ni-text{font-size:13px;color:var(--sub)}
.notif-item .ni-time{font-size:11px;color:var(--gray);margin-top:4px}
.notif-item .ni-del{font-size:18px;color:var(--gray);cursor:pointer;flex-shrink:0;align-self:flex-start}
.wx-push-config{padding:10px 14px}
.wx-push-config .wpc-label{font-size:13px;color:var(--sub);margin-bottom:4px}
.wx-push-config .wpc-input{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:6px;font-size:13px;margin-bottom:8px}
.wx-push-config .wpc-toggle{display:flex;align-items:center;justify-content:space-between;padding:6px 0}
.wx-push-config .wpc-toggle .wpc-switch{width:40px;height:22px;border-radius:11px;background:var(--line);position:relative;cursor:pointer;transition:.2s}
.wx-push-config .wpc-toggle .wpc-switch.on{background:var(--green)}
.wx-push-config .wpc-toggle .wpc-switch::after{content:'';width:18px;height:18px;border-radius:50%;background:#fff;position:absolute;top:2px;left:2px;transition:.2s}
.wx-push-config .wpc-toggle .wpc-switch.on::after{left:20px}
.wx-push-config .wpc-hint{font-size:11px;color:var(--gray);margin-top:6px;line-height:1.4}
.wx-push-config .wpc-save{margin-top:8px;padding:8px 0;background:var(--red);color:#fff;border:none;border-radius:6px;font-size:14px;width:100%;cursor:pointer}

/* ===== 策略实验室 ===== */
.lab-tab{flex:1;padding:8px 0;border:1px solid var(--line);border-radius:6px;background:#fff;font-size:13px;color:var(--sub);cursor:pointer;transition:.2s;font-weight:500}
.lab-tab.lab-tab-active{background:var(--red);color:#fff;border-color:var(--red)}
.lab-dir-btn{padding:8px 0;border:2px solid var(--line);border-radius:6px;font-size:13px;font-weight:500;background:#fff;color:var(--txt);cursor:pointer;transition:.2s}
.lab-dir-btn.lab-dir-selected{border-color:var(--red);background:var(--red-bg);color:var(--red)}
.lab-action-btn{width:100%;padding:10px 0;background:var(--red);color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:.2s}
.lab-action-btn:disabled{background:var(--line);color:var(--gray);cursor:not-allowed}
.lab-action-btn:active:not(:disabled){opacity:.85}
.lab-stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:10px}
.lab-stat-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}
.lab-stat-card{background:#fff;border-radius:8px;box-shadow:var(--shadow);padding:10px;text-align:center}
.lab-stat-card .ls-lbl{font-size:11px;color:var(--gray);margin-bottom:2px}
.lab-stat-card .ls-val{font-size:20px;font-weight:700}
.lab-stat-card .ls-val.sm{font-size:16px;font-weight:600}
.lab-cond-row{display:flex;gap:4px;align-items:center}
.lab-cond-row select,.lab-cond-row input{padding:6px 4px;border:1px solid var(--line);border-radius:6px;font-size:13px}
.lab-cond-field{flex:1}
.lab-cond-op{width:56px}
.lab-cond-val{width:80px}
.lab-cond-del{color:var(--gray);cursor:pointer;font-size:16px;padding:0 2px;border:none;background:none}
.lab-cond-del:hover{color:var(--red)}
.lab-match-item{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-radius:6px;margin-bottom:2px}
.lab-match-item.hit{background:var(--green-bg)}
.lab-match-item.miss{background:var(--red-bg)}
.lab-match-item .lmi-info{flex:1;min-width:0}
.lab-match-item .lmi-match{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lab-match-item .lmi-sub{font-size:11px;color:var(--gray)}
.lab-match-item .lmi-right{text-align:right;margin-left:4px}
.lab-match-item .lmi-odds{font-size:14px;font-weight:700}
.lab-match-item .lmi-tag{font-size:11px;font-weight:500}
.lab-match-item .lmi-tag.hit{color:var(--green)}
.lab-match-item .lmi-tag.miss{color:var(--red)}
.lab-result-section{background:#fff;border-radius:8px;box-shadow:var(--shadow);overflow:hidden;margin-bottom:8px}
.lab-result-header{padding:8px 12px;border-bottom:1px solid var(--line);font-size:13px;font-weight:600;color:var(--sub)}
.lab-result-list{max-height:320px;overflow-y:auto}
.lab-conditions-box{background:var(--blue-bg);border-radius:6px;padding:8px 10px;margin-bottom:8px}
.lab-conditions-box .lcb-lbl{font-size:11px;color:var(--blue);font-weight:600;margin-bottom:2px}
.lab-conditions-box .lcb-val{font-size:11px;color:var(--blue)}

/* Plan card */
.plan-card{background:#fff;border-radius:6px;box-shadow:var(--shadow);margin-bottom:6px;padding:12px;border-left:3px solid var(--red);border:1px solid #f0f0f0;border-left:3px solid var(--red)}
.plan-card .pc-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.plan-card .pc-match{font-size:14px;font-weight:600}
.plan-card .pc-dir{font-size:12px;padding:2px 8px;border-radius:3px;background:var(--red);color:#fff}
.plan-card .pc-row{display:flex;justify-content:space-between;font-size:13px;color:var(--sub);margin-top:4px}
.plan-card .pc-row b{color:var(--txt)}

/* Bet records */
.bet-record{background:#fff;border-radius:6px;box-shadow:var(--shadow);margin-bottom:4px;padding:8px 12px;display:flex;justify-content:space-between;align-items:center;border:1px solid #f0f0f0}
.bet-record .br-info{flex:1}
.bet-record .br-match{font-size:13px;font-weight:600}
.bet-record .br-dir{font-size:12px;color:var(--sub);margin-top:2px}
.bet-record .br-meta{font-size:11px;color:var(--gray);margin-top:2px}
.bet-record .br-right{text-align:right}
.bet-record .br-stake{font-size:13px;font-weight:600;color:var(--txt)}
.bet-record .br-result{font-size:12px;margin-top:2px}
.bet-record .br-result.win{color:var(--green)}
.bet-record .br-result.lose{color:var(--red)}
.bet-record .br-result.pending{color:var(--gray)}
.bet-record .br-actions{display:flex;gap:6px;margin-top:4px;justify-content:flex-end}
.bet-record .br-actions .ba-btn{font-size:11px;padding:2px 8px;border-radius:4px;border:1px solid var(--line);cursor:pointer;color:var(--sub)}

/* 记账翻页栏 */
.bet-pager{display:flex;align-items:center;justify-content:space-between;padding:6px 4px;margin-top:4px;font-size:12px}
.bet-pager .bp-btn{color:var(--blue);cursor:pointer;padding:3px 10px;border-radius:4px;border:1px solid var(--line);background:#fff}
.bet-pager .bp-btn.disabled{color:var(--gray);cursor:default;opacity:.5}
.bet-pager .bp-info{color:var(--gray)}

/* Month stats */
.month-stats-row{display:flex;gap:6px;margin-bottom:6px;flex-wrap:wrap}
.ms-card{flex:1;min-width:80px;background:#fff;border-radius:6px;padding:6px;text-align:center;box-shadow:var(--shadow);border:1px solid #f0f0f0}
.ms-card .ms-num{font-size:16px;font-weight:700}
.ms-card .ms-lbl{font-size:10px;color:var(--gray);margin-top:2px}

/* Follow list */
.follow-item{display:flex;align-items:center;padding:8px 14px;border-bottom:1px solid var(--line);cursor:pointer}
.follow-item .fi-info{flex:1}
.follow-item .fi-match{font-size:14px;font-weight:600}
.follow-item .fi-time{font-size:12px;color:var(--gray)}
.follow-item .fi-del{color:var(--gray);font-size:16px;cursor:pointer;padding:4px 8px}

/* Push settings */
.push-setting-row{padding:10px 14px;border-bottom:1px solid var(--line)}
.push-setting-row .psr-label{font-size:14px;font-weight:600;display:flex;align-items:center;gap:6px}
.push-setting-row .psr-desc{font-size:12px;color:var(--gray);margin-top:2px}
.push-setting-row .psr-control{display:flex;align-items:center;justify-content:space-between;margin-top:6px}
.push-setting-row .psr-input{width:60px;padding:4px 8px;border:1px solid var(--line);border-radius:4px;font-size:13px;text-align:center}
.toggle-switch{position:relative;width:40px;height:22px;background:#ccc;border-radius:11px;cursor:pointer;transition:.2s}
.toggle-switch.on{background:var(--green)}
.toggle-switch::after{content:'';position:absolute;top:2px;left:2px;width:18px;height:18px;background:#fff;border-radius:50%;transition:.2s}
.toggle-switch.on::after{left:20px}

/* Edit bet form */
.edit-bet-form .ebf-row{margin-bottom:8px}
.edit-bet-form .ebf-label{font-size:13px;color:var(--sub);margin-bottom:4px}
.edit-bet-form .ebf-input{width:100%;padding:8px;border:1px solid var(--line);border-radius:6px;font-size:14px}
.edit-bet-form .ebf-select{width:100%;padding:8px;border:1px solid var(--line);border-radius:6px;font-size:14px;background:#fff}

/* ===== Login/Register ===== */
.login-form .lf-row{margin-bottom:10px}
.login-form .lf-label{font-size:13px;color:var(--sub);margin-bottom:4px}
.login-form .lf-input{width:100%;padding:10px;border:1px solid var(--line);border-radius:6px;font-size:15px}
.login-form .lf-btn{width:100%;padding:12px;border:none;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;margin-top:6px}
.login-form .lf-btn.primary{background:var(--red);color:#fff}
.login-form .lf-btn.wx{background:#07c160;color:#fff}
.login-form .lf-link{text-align:center;font-size:13px;color:var(--blue);cursor:pointer;margin-top:8px}
.login-tabs{display:flex;margin-bottom:14px;border-bottom:1px solid var(--line)}
.login-tabs .lt{flex:1;text-align:center;padding:8px;font-size:14px;color:var(--sub);cursor:pointer;border-bottom:2px solid transparent}
.login-tabs .lt.active{color:var(--red);border-bottom-color:var(--red);font-weight:600}

/* ===== 空状态 ===== */
.empty-state{text-align:center;padding:40px 20px;color:var(--gray)}
.empty-state .emoji{font-size:48px;margin-bottom:12px}
.empty-state .title{font-size:17px;margin-bottom:6px;color:var(--sub)}
.empty-state .desc{font-size:14px;line-height:1.6}

/* ===== 加载 ===== */
.loading{text-align:center;padding:30px 0;color:var(--gray)}
.spinner{display:inline-block;width:24px;height:24px;border:2.5px solid var(--line);border-top-color:var(--red);border-radius:50%;animation:spin .8s linear infinite;vertical-align:middle;margin-right:8px}
@keyframes spin{to{transform:rotate(360deg)}}

/* 日期横幅 */
.date-banner{background:#fffbeb;border:1px solid #fde68a;border-radius:6px;padding:8px 14px;margin-bottom:8px;font-size:13px;color:var(--orange);text-align:center;line-height:1.5}

/* 欢迎弹窗（居中 + 可读字号） */
#welcomeOverlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:200;align-items:center;justify-content:center;padding:10px}
#welcomeOverlay.show{display:flex}
#welcomeOverlay .popup-box{position:static;transform:none;border-radius:14px;max-width:680px;width:100%;max-height:calc(95vh - env(safe-area-inset-top));padding:14px 18px 10px;overflow-y:auto}
@supports (height:1dvh){#welcomeOverlay .popup-box{max-height:calc(95dvh - env(safe-area-inset-top))}}
#welcomeOverlay .about-text{font-size:13px;line-height:1.5}
#welcomeOverlay .pb-title{font-size:18px;margin-bottom:6px}
.welcome-slogan{text-align:center;font-size:14px;color:var(--red);font-weight:600;line-height:1.4;margin-bottom:6px}
.welcome-custom{background:#f0f7ff;border-radius:6px;padding:6px 10px;margin:6px 0;text-align:center}
.welcome-custom .wc-q{font-size:13px;color:var(--blue);font-weight:600}
.welcome-custom .wc-a{font-size:12px;color:var(--sub);margin-top:2px}
.welcome-section{font-size:13px;font-weight:700;margin-top:6px;margin-bottom:2px}
.welcome-disclaimer{font-size:11px;line-height:1.4;color:var(--gray);margin-top:4px;padding-left:6px;border-left:2px solid #e5e7eb}
.welcome-disclaimer b{color:var(--sub)}

/* 核心功能分类网格 */
.welcome-cat-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:4px 0}
.welcome-cat-grid .wcg-item{display:flex;align-items:flex-start;gap:5px;background:#f9fafb;border-radius:6px;padding:6px 8px;border:1px solid #f0f0f0}
.welcome-cat-grid .wcg-icon{font-size:18px;flex-shrink:0;line-height:1.2}
.welcome-cat-grid .wcg-body{font-size:12px;line-height:1.35;color:var(--sub)}
.welcome-cat-grid .wcg-body b{color:var(--txt);font-size:13px}
.welcome-data-hint{font-size:12px;color:var(--cyan);text-align:center;background:#ecfeff;border-radius:6px;padding:4px 8px;margin:4px 0}

/* 关于弹窗 */
.about-text{font-size:14px;color:var(--sub);line-height:1.8}

/* Canvas for ticket */
#ticketCanvas{display:block;margin:0 auto}

/* Follow star */
.follow-star{font-size:16px;cursor:pointer;color:var(--gray);padding:4px}
.follow-star.active{color:#fbbf24}

/* 全局生成按钮 */
.gen-global-btn{width:100%;padding:10px;border:none;border-radius:6px;font-size:15px;font-weight:700;background:linear-gradient(135deg,#e60012,#f43f5e);color:#fff;cursor:pointer;box-shadow:0 2px 6px rgba(230,0,18,.25);transition:.2s}
.gen-global-btn:active{transform:scale(.98)}

/* 二串一组合行 */
.combo-row{background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px;padding:8px;margin:4px 0}
.combo-row.disabled{opacity:.4;background:#f3f4f6}
.combo-row.disabled .combo-check{opacity:.5}
.combo-header{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.combo-check{width:18px;height:18px;accent-color:#e60012;cursor:pointer;flex-shrink:0}
.combo-type{font-size:14px;font-weight:700;color:var(--red);background:#fee2e2;padding:2px 6px;border-radius:4px}
.combo-level{font-size:11px;font-weight:700;padding:2px 6px;border-radius:4px;margin-left:6px}
.combo-level.lv-strong{color:#fff;background:#b91c1c}
.combo-level.lv-medium{color:#92400e;background:#fef3c7}
.combo-level.lv-weak{color:#6b7280;background:#f3f4f6}
.combo-matches{font-size:15px;color:var(--sub);line-height:1.6}
.combo-match-line{display:flex;justify-content:space-between;align-items:center;padding:2px 0}
.combo-match-lbl{color:var(--red);font-weight:600}
.combo-mult{display:flex;align-items:center;gap:4px;margin-top:6px;font-size:12px}
.combo-mult-btn{width:22px;height:22px;border:1px solid var(--line);border-radius:4px;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--sub)}
.combo-mult-val{min-width:28px;text-align:center;font-weight:600}
.combo-mult .cm-input{width:44px;height:24px;border:1px solid var(--line);border-radius:4px;text-align:center;font-size:14px;font-weight:600;color:var(--txt);background:#fff;outline:none}
.combo-mult .cm-input:focus{border-color:var(--red)}
.combo-total{font-size:12px;color:var(--gray);margin-left:auto}

/* 让球条形图 */
.rq-bar-row{display:flex;align-items:center;gap:2px;margin-top:4px;height:6px}
.rq-bar-bg{background:#f3f4f6;border-radius:3px;overflow:hidden;height:6px;display:flex;align-items:center}
.rq-bar-fill{height:6px;border-radius:3px;transition:width .3s}

/* 测试账号提示 */
.test-account-hint{background:#f0f9ff;border:1px solid #bae6fd;border-radius:8px;padding:10px;margin:8px 0;font-size:12px;color:#0369a1;line-height:1.6}
.test-account-hint b{color:#0c4a6e}

/* 重点信息 Tab */
.ki-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid #f0f0f0;font-size:14px}
.ki-row:last-child{border-bottom:none}
.ki-label{color:var(--sub);font-size:13px}
.ki-val{font-weight:600;color:var(--txt)}
.ki-odds-row{display:flex;gap:6px;margin-top:4px}
.ki-odds-item{flex:1;text-align:center;background:var(--bg);border-radius:6px;padding:8px 4px}
.ki-odds-item .ki-ol{font-size:11px;color:var(--sub);margin-bottom:2px}
.ki-odds-item .ki-ov{font-size:16px;font-weight:700;line-height:1.1}
.ki-odds-item .ki-rr{font-size:10px;font-weight:600;margin-top:2px}

/* ===== 基本面 Tab ===== */
.fund-loading{padding:30px;text-align:center;color:var(--sub)}
.fund-acc-item{background:#fff;border:1px solid var(--line);border-radius:8px;margin:8px 0;overflow:hidden}
.fund-acc-header{display:flex;align-items:center;padding:10px 12px;cursor:pointer;user-select:none;transition:background .15s}
.fund-acc-header:active{background:#f9fafb}
.fund-acc-header.open{border-bottom:1px solid var(--line)}
.fund-acc-title{flex:1;font-size:14px;font-weight:600;color:var(--txt)}
.fund-badge{font-size:11px;background:#eff6ff;color:#2563eb;padding:1px 6px;border-radius:10px;margin-right:8px}
.fund-acc-arrow{font-size:12px;color:var(--gray);transition:transform .2s}
.fund-acc-header.open .fund-acc-arrow{transform:rotate(180deg)}
.fund-acc-body{display:none;padding:8px 12px}
.fund-empty{padding:12px;text-align:center;color:var(--gray);font-size:13px}
.fund-team-title{font-size:12px;font-weight:600;color:var(--sub);margin:8px 0 4px;padding-left:4px;border-left:3px solid #2563eb}
.fund-tbl{width:100%;border-collapse:collapse;font-size:12px;margin:4px 0 8px}
.fund-tbl th{background:#f9fafb;color:var(--sub);font-weight:600;padding:4px 6px;text-align:left;white-space:nowrap}
.fund-tbl td{padding:4px 6px;border-bottom:1px solid #f5f5f5;white-space:nowrap}
.fund-tbl tr:last-child td{border-bottom:none}
.fund-score{font-weight:700;color:var(--txt)}
.fund-dual-row{display:flex;gap:8px;margin:6px 0}
.fund-dual-col{flex:1;background:#f9fafb;border-radius:6px;padding:8px}
.fund-dual-name{font-size:12px;font-weight:600;color:var(--sub);margin-bottom:4px}
.fund-wdl{display:flex;gap:6px;font-size:13px;font-weight:700}
.fund-wdl .w{color:#dc2626}
.fund-wdl .d{color:#f59e0b}
.fund-wdl .l{color:#2563eb}
.fund-sub{font-size:11px;color:var(--gray);margin-top:2px}
.fund-h2h-stat{display:flex;gap:12px;margin:6px 0;padding:8px;background:#f9fafb;border-radius:6px;text-align:center}
.fund-h2h-stat span{flex:1;font-size:16px;font-weight:700}
.fund-h2h-stat .w{color:#dc2626}
.fund-h2h-stat .d{color:#f59e0b}
.fund-h2h-stat .l{color:#2563eb}

/* ===== 模型战绩卡片 ===== */
.stats-card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:4px;border:1px solid #f0f0f0;padding:10px 12px}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:6px 0}
.sg-item{text-align:center}
.sg-lbl{font-size:10px;color:var(--gray)}
.sg-val{font-size:16px;font-weight:700;margin-top:2px}
.stats-recent{margin-top:6px}
.sr-row{display:flex;align-items:baseline;gap:6px;padding:3px 0;font-size:11px;color:var(--sub);border-top:1px solid #f5f5f5}
.sr-lbl{flex:0 0 36px;font-weight:600;color:var(--txt)}
.stats-list-title{font-size:12px;font-weight:600;color:var(--sub);padding:6px 0 2px;cursor:pointer}
.sl-arrow{font-size:10px;transition:.2s}
.stats-list{padding-top:4px}
.ms-row{display:flex;align-items:center;gap:4px;padding:3px 0;border-bottom:1px solid #f5f5f5;font-size:11px}
.ms-time{flex:0 0 40px;color:var(--gray)}
.ms-league{flex:0 0 32px;color:var(--sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ms-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--sub)}
.ms-dir{flex:0 0 auto;font-size:10px;padding:1px 4px;border-radius:3px}
.ms-hit{background:#dcfce7;color:#16a34a}
.ms-miss{background:#fee2e2;color:#dc2626}
.ms-res{flex:0 0 28px;text-align:center}

/* ===== 模型页分组标题 ===== */
.model-group-header{display:flex;align-items:center;gap:6px;padding:8px 12px 4px;margin-top:4px}
.model-group-header .mg-icon{font-size:16px}
.model-group-header .mg-title{font-size:14px;font-weight:700;color:var(--txt)}
.model-group-header .mg-count{font-size:12px;color:var(--gray);margin-left:auto;background:var(--bg);padding:2px 8px;border-radius:10px}
.mg-header-normal{border-top:1px solid var(--line);margin-top:8px}

/* ===== 信号详情折叠 ===== */
.si-detail-toggle{font-size:12px;color:var(--blue);cursor:pointer;padding:4px 0;margin-top:2px;display:flex;align-items:center;gap:4px}
.si-detail-toggle .si-arrow{display:inline-block;transition:.2s;font-size:12px}
.si-detail{margin-top:4px}

/* ===== 窄屏优化（≤360px，保队名可读） ===== */
@media (max-width:360px){
  .om-header,.mc-header{padding:5px 8px;gap:2px}
  .om-matchnum,.om-reorder,.mc-header .om-matchnum,.mc-header .om-reorder{padding:1px 3px;font-size:9px}
  .om-league,.mc-header .league-tag{padding:2px 4px;font-size:10px}
  .om-warn{display:none} /* 预警详情已在卡片体内，窄屏隐藏头部标签给队名留空间 */
  .om-header .om-time,.mc-header .kickoff-time{font-size:10px}
  .follow-btn{font-size:14px;padding:0;margin:0}
  .stats-banner .sb-item{padding:0 8px;font-size:11px}
  .stats-banner .sb-item .sb-val{font-size:12px}
}
