:root{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#333;background:#f4f5f7;--red:#e64b49;--line:#e6e7eb}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}a{color:var(--red)}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,a:focus-visible{outline:2px solid #e56c6a;outline-offset:3px}.header{background:var(--red);color:white}.header-inner{max-width:1080px;padding:19px 24px;margin:auto;display:flex;gap:25px;align-items:center}.brand{font-size:22px;letter-spacing:1px;font-weight:650;color:white;text-decoration:none}.sport-switch{display:flex;gap:6px;margin-left:auto}.sport-switch button{border:1px solid #ffffff66;background:transparent;color:#ffe3e3;padding:9px 17px;border-radius:5px;font-size:14px}.sport-switch button[aria-pressed=true]{background:white;border-color:white;color:var(--red);font-weight:600}.official-link{font-size:11px;color:#ffe8e8;text-decoration:none}main{max-width:1032px;margin:0 auto;padding:0 0 210px}.market-tabs{display:flex;gap:10px;background:white;padding:18px;border:1px solid var(--line);border-top:0}.market-tabs button{flex:1;min-width:0;border:1px solid #dcdde3;background:white;color:#666;border-radius:4px;padding:10px 5px;font-size:13px;line-height:1.5}.market-tabs button[aria-pressed=true]{border-color:var(--red);color:var(--red);background:#fff7f7}.filters{display:flex;gap:10px;align-items:center;margin:17px 0 12px}.filters input,.filters select,.filters button{border:1px solid #dedfe5;border-radius:5px;background:white;color:#686a73;font-size:12px;padding:9px 12px}.filters input{width:190px}.filters select{max-width:160px}.filters button{margin-left:auto;color:#bf4847}.filters>span{font-size:11px;color:#999}.source{display:flex;justify-content:space-between;gap:20px;color:#999;font-size:11px;padding:0 2px 13px;line-height:1.8}.date-group{border:1px solid var(--line);background:white;margin-bottom:14px;border-radius:5px;overflow:hidden}.date-heading{width:100%;border:0;border-bottom:1px solid var(--line);background:#f9f9fb;padding:11px 14px;font-size:12px;color:#666;display:flex;justify-content:space-between;align-items:center}.date-heading strong{font-weight:500;color:#3c3d43}.date-heading span{font-size:11px;color:#999}.match-row{display:grid;grid-template-columns:132px minmax(0,1fr);border-bottom:1px solid #eee;padding:16px 15px;gap:17px}.match-row:last-child{border-bottom:0}.match-meta{text-align:center;border-radius:4px;background:#f7f7f9;padding:12px 6px;display:flex;flex-direction:column;justify-content:center;gap:7px;color:#777;font-size:12px;align-self:start;min-height:114px}.match-meta .league{color:#555;font-size:11px}.match-meta .code{font-weight:600;letter-spacing:.3px;color:#53555b}.match-meta time{font-size:10px}.team-line{display:flex;align-items:center;justify-content:center;gap:18px;margin:0 0 12px;font-weight:550;font-size:14px;line-height:1.5}.team-line small{font-size:10px;font-weight:400;color:#aaa}.team-line .vs{font-size:11px;color:#999;font-weight:400}.pool-row{display:grid;grid-template-columns:98px minmax(0,1fr);gap:9px;align-items:center;margin:6px 0}.pool-name{font-size:11px;color:#888;text-align:center;line-height:1.7}.pool-name b{font-weight:400;color:var(--red)}.pool-name em{font-style:normal;background:#e7f2df;color:#79a05c;border-radius:3px;padding:1px 3px;font-size:9px;margin-left:3px}.odds-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.odds-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.odds-grid.many{grid-template-columns:repeat(4,minmax(0,1fr))}.odd{display:flex;flex-direction:column;gap:3px;align-items:center;justify-content:center;border:1px solid #dddfe4;border-radius:3px;background:#fff;min-height:44px;padding:6px 3px;font-size:12px;color:var(--red)}.odd strong{font-weight:500;color:#555;font-size:12px;font-variant-numeric:tabular-nums}.odd[aria-pressed=true]{border-color:var(--red);background:var(--red);color:white}.odd[aria-pressed=true] strong{color:white}.odd:disabled{background:#fafafa;color:#aaa;border-color:#ececef}.odd:disabled strong{color:#c0c1c7}.more-games{margin:8px 0 0;text-align:right}.more-games summary{font-size:11px;color:#668bb0;cursor:pointer;list-style:none;padding:6px 2px}.more-games[open] summary{margin-bottom:8px}.more-games .pool-row{margin:10px 0}.market-state{font-size:10px;color:#999;text-align:right;margin-top:8px}.empty{background:white;border:1px solid var(--line);text-align:center;color:#999;font-size:13px;padding:50px 18px;line-height:1.9}.empty strong{display:block;color:#676870;font-size:15px;font-weight:500;margin-bottom:8px}.selection-help,.rules{font-size:11px;color:#97989f;line-height:1.9}.selection-help{padding:1px 3px}.rules{padding:15px 3px}.rules summary{cursor:pointer;color:#777}.rules a{font-size:11px}#notice,#load-error{font-size:12px;line-height:1.8;padding:11px 14px;border:1px solid #efdfb8;background:#fff9ea;color:#9a7944;border-radius:5px;margin-bottom:14px}#load-error{background:#fff0f0;border-color:#f1cccc;color:#b75b5b}.selection-bar{position:fixed;bottom:0;left:0;right:0;background:white;box-shadow:0 -3px 14px #0000000d;border-top:1px solid #ddd;z-index:5}.selection-inner{max-width:1032px;margin:auto;padding:11px 16px 7px}.selection-top{display:grid;grid-template-columns:180px 1fr 100px;gap:10px;align-items:start}.selection-top>button,.selection-top summary{border:1px solid #e0e1e7;border-radius:4px;background:white;padding:10px;text-align:center;font-size:12px;color:#686973;list-style:none;cursor:pointer}.selection-top strong{color:var(--red);font-weight:600}.selection-top button span{font-size:10px;color:#aaa;margin-left:7px}.selection-top #clear{color:#aaa}.selection-top details{position:relative}.selection-top summary span{color:var(--red);margin-left:8px}.passes{position:absolute;bottom:46px;left:0;right:0;box-shadow:0 1px 20px #00000022;border:1px solid var(--line);padding:15px;background:white;border-radius:5px;display:flex;flex-wrap:wrap;gap:7px}.passes button{padding:9px 14px;background:white;border:1px solid #ddd;border-radius:3px;font-size:12px;color:#777}.passes button[aria-pressed=true]{color:white;background:var(--red);border-color:var(--red)}.passes button:disabled{color:#ccc;background:#fafafa;border-color:#eee}.selection-bottom{display:grid;grid-template-columns:180px minmax(0,1fr) 170px;gap:15px;align-items:center;padding-top:10px}.stepper{display:flex;border:1px solid #e0e1e7;border-radius:4px;align-items:center;height:41px}.stepper button{border:0;background:transparent;padding:7px;color:#aaa;flex:1}.stepper input{width:48px;text-align:center;border:0;color:var(--red);font-weight:500;padding:7px 1px;font-size:14px}.stepper span{font-size:11px;color:#999;margin-right:7px}.totals{display:flex;flex-direction:column;gap:5px;color:#999;font-size:11px;line-height:1.7}.totals strong{color:var(--red);font-size:14px;font-weight:600}.primary{background:var(--red);color:white;border:0;border-radius:4px;padding:13px 20px;font-size:13px}.primary:disabled{background:#ebcccc;color:white}.calculation-note{font-size:10px;color:#999;line-height:1.8;margin:8px 0 0}.calculation-note.error{color:#c77555}#selection-list{padding:10px 0;max-height:220px;overflow:auto}.selected-item{display:flex;align-items:center;gap:10px;justify-content:space-between;font-size:11px;color:#666;border-bottom:1px solid #eee;padding:9px 2px;line-height:1.8}.selected-item strong{font-weight:500}.selected-item button{background:transparent;border:0;color:#aaa;padding:8px;font-size:16px}.selected-item span{display:block;color:var(--red);font-size:10px}dialog{border:0;border-radius:8px;max-width:850px;width:calc(100% - 32px);max-height:86vh;padding:24px;color:#555;box-shadow:0 10px 70px #00000033}dialog::backdrop{background:#00000066}.dialog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.dialog-head h2{font-size:18px;margin:0;font-weight:600}.dialog-head button{border:0;background:transparent;color:#999;font-size:24px}.plan-values{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:0 0 20px}.plan-values div{padding:15px;background:#faf7f7;border:1px solid #f2e7e7;border-radius:4px;font-size:11px;color:#999}.plan-values strong{display:block;color:var(--red);font-size:19px;margin-top:8px;word-break:break-word}.plan-note{font-size:12px;line-height:1.8;color:#888}.table-wrap{overflow:auto;margin:18px 0}table{border-collapse:collapse;width:100%;font-size:11px;text-align:left}th{background:#f7f7fa;color:#888;font-weight:500;padding:10px}td{padding:12px 10px;border-bottom:1px solid #eee;line-height:1.8}.fine{font-size:10px;color:#999;line-height:1.9}dialog>.primary{display:block;margin-left:auto}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}[hidden]{display:none!important}
@media(max-width:1080px){main{margin:0 20px}.header-inner{padding-left:20px;padding-right:20px}}
@media(max-width:650px){.header-inner{padding:14px;gap:12px;flex-wrap:wrap}.brand{font-size:18px}.official-link{display:none}.sport-switch{gap:5px}.sport-switch button{font-size:11px;padding:7px 10px}main{margin:0 10px;padding-bottom:200px}.market-tabs{padding:12px 8px;gap:5px;margin:0 -10px}.market-tabs button{padding:7px 3px;font-size:10px}.filters{gap:6px;margin:13px 0 10px}.filters input{width:132px}.filters input,.filters select,.filters button{font-size:10px;padding:8px}.filters select{max-width:98px}.filters>span{display:none}.source{font-size:9px;gap:8px}.source>span:last-child{white-space:nowrap}.date-heading{font-size:10px;padding:10px}.date-heading span{font-size:9px}.match-row{grid-template-columns:73px minmax(0,1fr);gap:8px;padding:13px 8px}.match-meta{padding:8px 3px;font-size:10px;gap:6px;min-height:111px}.match-meta .league{font-size:10px}.match-meta time{font-size:9px}.team-line{font-size:12px;gap:7px;margin-bottom:9px}.team-line small{font-size:8px}.pool-row{grid-template-columns:44px minmax(0,1fr);gap:5px;margin:5px 0}.pool-name{font-size:9px;line-height:1.6}.pool-name em{display:block;margin:1px auto;width:fit-content;font-size:8px}.odds-grid{gap:3px}.odds-grid.many{grid-template-columns:repeat(3,minmax(0,1fr))}.odd{min-height:43px;padding:5px 2px;font-size:10px}.odd strong{font-size:11px}.more-games summary{font-size:10px}.selection-inner{padding:9px 10px 6px}.selection-top{grid-template-columns:100px 1fr 50px;gap:6px}.selection-top>button,.selection-top summary{font-size:10px;padding:9px 4px}.selection-top button span{display:none}.selection-top summary span{margin-left:5px;font-size:9px}.selection-bottom{grid-template-columns:90px minmax(0,1fr) 87px;gap:8px}.stepper{height:38px}.stepper input{width:30px;font-size:12px}.stepper button{padding:4px}.stepper span{font-size:9px;margin-right:2px}.totals{font-size:9px;gap:3px}.totals strong{font-size:11px}.primary{padding:12px 8px;font-size:11px}.calculation-note{font-size:9px}.passes{padding:10px;gap:5px;left:-25px}.passes button{padding:8px 10px;font-size:10px}.plan-values{grid-template-columns:1fr 1fr}.plan-values div{padding:10px}.plan-values strong{font-size:16px}dialog{padding:18px}.table-wrap table{min-width:460px}.selection-help{font-size:10px}}

.selection-top{grid-template-columns:160px 1fr 100px 60px}.optimization-controls{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.optimization-controls label{font-size:12px;display:flex;flex-direction:column;gap:8px}.optimization-controls input,.optimization-controls select{padding:10px;border:1px solid #ddd;border-radius:4px;max-width:160px;background:white;color:#555}#optimization-error{color:#b74747;font-size:12px}#optimization-rows input{width:70px;border:1px solid #ddd;padding:8px;border-radius:4px}#optimization-rows b{color:var(--red);font-weight:500}@media(max-width:650px){.selection-top{grid-template-columns:85px 1fr 68px 40px}.optimization-controls{gap:8px}.optimization-controls input,.optimization-controls select{max-width:120px;font-size:12px}.optimization-controls label{font-size:11px}}

#optimization-dialog .dialog-head{position:sticky;top:0;background:white;z-index:2;padding:8px 0 12px;border-bottom:1px solid #eee}#optimization-dialog #optimization-close{font-size:13px;color:#555;background:#f5f5f7;border:1px solid #ddd;border-radius:4px;min-height:40px;padding:8px 14px}.optimization-actions{position:sticky;bottom:0;background:white;border-top:1px solid #eee;display:flex;justify-content:flex-end;gap:10px;padding:12px 0;z-index:2}.secondary{border:1px solid #ccc;border-radius:4px;color:#555;background:white;padding:12px 24px;font-size:13px}

.defense-toggle{margin-top:8px;padding:7px;border:1px solid #efc4c4;border-radius:4px;font-size:11px;color:var(--red);background:#fff5f5;white-space:nowrap}.defense-toggle[aria-pressed=true]{color:#4779a0;border-color:#c4dceb;background:#f0f7fc}



/* 三项金额始终并排，过关详情直接展示。 */
#plan-dialog .plan-values{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:14px}
#plan-dialog .plan-values>div{padding:12px 8px;text-align:center;white-space:nowrap;overflow-x:auto}
#plan-dialog .plan-values strong{display:block;margin-top:7px;font-size:18px;word-break:normal;white-space:nowrap}
.plan-combination{border:1px solid var(--line);border-radius:6px;overflow:hidden;margin:16px 0}
.plan-combination h3{margin:0;background:#f7f7f7;padding:15px 18px;font-size:16px;font-weight:600;border-bottom:1px solid var(--line)}
.combination-match{text-align:center;padding:14px 8px;margin:0 14px;border-bottom:1px solid var(--line)}
.combination-team{font-size:16px;line-height:1.7;color:#333}
.combination-options{font-size:14px;line-height:1.8;color:#999;margin-top:3px}
.combination-market{font-size:12px}
.combination-payout{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;padding:12px 16px;font-size:12px;color:#888}
@media(max-width:650px){#plan-dialog{padding:14px}#plan-dialog .plan-values{gap:4px}#plan-dialog .plan-values>div{padding:10px 3px;font-size:10px}#plan-dialog .plan-values strong{font-size:13px}.combination-team{font-size:14px}.combination-options{font-size:12px}.plan-combination h3{font-size:14px;padding:12px}.combination-payout{font-size:11px;padding:10px}}

#plan-dialog{width:100%;max-width:none;height:100dvh;max-height:none;margin:0;padding:16px;border-radius:0;background:transparent;box-shadow:none;overflow:hidden}
#plan-dialog[open]{display:grid;place-items:center}
#plan-dialog .plan-panel{width:100%;max-width:850px;max-height:86dvh;overflow:auto;background:white;padding:24px;border-radius:8px;box-shadow:0 10px 70px #00000033;overscroll-behavior:contain}
#plan-dialog .plan-panel>.primary{display:block;margin-left:auto}
@media(max-width:650px){#plan-dialog{padding:16px}#plan-dialog .plan-panel{padding:14px}}

#history-dialog{width:100%;max-width:none;height:100dvh;max-height:none;margin:0;padding:12px;background:transparent;box-shadow:none;border:0;overflow:hidden}#history-dialog[open]{display:grid;place-items:center}.history-panel{background:white;border-radius:14px;width:100%;max-width:1000px;height:92dvh;overflow:auto;padding:20px}.history-panel .dialog-head{position:sticky;top:-20px;background:white;z-index:2}.history-filters{display:flex;flex-wrap:wrap;gap:12px;align-items:end}.history-filters label{display:grid;gap:5px;font-size:13px}.history-filters input,.history-filters select,.history-footer input,.history-footer select{border:1px solid #ddd;border-radius:6px;padding:8px;min-width:0;background:white;color:#222}#history-status{color:#64748b;font-size:13px}.history-day{border:1px solid #e2e8f0;border-radius:10px;margin:16px 0;overflow:hidden}.history-day>summary{padding:12px;background:#f1f5f9;font-weight:700;cursor:pointer}.history-card{padding:14px;border-bottom:1px solid #eee}.history-match-head{display:grid;gap:8px}.history-match-head>span{font-size:12px;color:#64748b}.history-match-head small{display:inline-block;font-size:11px;color:#94a3b8;margin-left:5px}.history-match-head>div{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;text-align:center;align-items:center;font-size:15px}.history-match-head strong{color:#ef4444;font-size:21px}.history-market h4{font-size:13px;margin:12px 0 8px}.history-market h4 small{font-weight:400;color:#64748b;margin-left:12px}.history-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.history-odd{border:1px solid #e2e8f0;border-radius:7px;padding:7px 4px;display:grid;gap:3px;background:white;font-size:12px}.history-odd.hit{border-color:#15803d;color:#15803d;background:#f0fdf4}.history-odd[aria-pressed=true]{background:#ef4444;border-color:#ef4444;color:white}.history-odd:disabled{opacity:.45}.history-timeline>summary,.history-more>summary{font-size:12px;color:#64748b;margin:9px 0;cursor:pointer}.history-timeline td,.history-timeline th{white-space:nowrap;font-size:11px;padding:7px}.history-footer{display:flex;flex-wrap:wrap;align-items:center;gap:10px;position:sticky;bottom:-20px;background:white;padding:12px 0;border-top:1px solid #ddd}.history-footer label{display:flex;align-items:center;gap:6px;font-size:12px}.history-footer input{width:65px}.history-footer select{height:62px;min-width:76px}.history-values{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;background:#fff1f2;padding:14px 6px;text-align:center;font-size:12px}.history-values strong{display:block;margin-top:6px;font-size:17px;color:#ef4444;overflow:auto;white-space:nowrap}#history-result{padding:12px 0}#history-result p{font-size:13px;line-height:1.8}#history-result summary{cursor:pointer}.sport-switch button{white-space:nowrap}
@media(max-width:650px){.header-inner{flex-wrap:wrap;gap:10px}.sport-switch{width:100%;margin-left:0;justify-content:space-between}.sport-switch button{flex:1;font-size:13px;padding:9px 5px}.history-panel{padding:12px;height:94dvh}.history-panel .dialog-head{top:-12px}.history-filters{gap:8px}.history-filters label{font-size:11px}.history-filters input{width:130px}.history-filters>button{padding:10px 18px}.history-card{padding:10px}.history-footer{bottom:-12px;gap:7px}.history-match-head>div{gap:8px;font-size:13px}.history-footer button{padding:8px}.history-values strong{font-size:14px}}
.history-pass-picker{position:relative}.history-pass-picker>summary{padding:10px;border:1px solid #ddd;border-radius:6px;cursor:pointer;font-size:12px}#history-passes{position:absolute;bottom:100%;left:0;background:white;border:1px solid #ddd;border-radius:8px;padding:10px;min-width:140px;box-shadow:0 4px 15px #0002;display:grid;gap:8px}#history-passes input{width:18px;height:18px;accent-color:#ef4444}.history-footer{z-index:1}

#image-dialog{width:100%;max-width:none;height:100dvh;max-height:none;margin:0;padding:16px;border:0;background:transparent;overflow:hidden}#image-dialog[open]{display:grid;place-items:center}.image-panel{width:100%;max-width:850px;max-height:90dvh;overflow:auto;background:white;padding:20px;border-radius:8px;overscroll-behavior:contain}.image-panel .dialog-head{position:sticky;top:-20px;background:white;padding:8px 0;z-index:1}.image-actions{display:flex;flex-wrap:wrap;gap:10px}.image-actions a{display:inline-block;text-decoration:none;padding:12px 18px;border-radius:6px;font-size:14px}.image-actions [hidden]{display:none}#plan-image{display:block;width:100%;height:auto;border:1px solid #eee;-webkit-touch-callout:default;user-select:auto}@media(max-width:650px){.image-panel{padding:14px}.image-panel .dialog-head{top:-14px}.image-actions a{font-size:13px}}

/* 独立计算器：底部只保留方案栏。 */
.selection-bar{bottom:0;padding-bottom:env(safe-area-inset-bottom)}
#calculator-view main{padding-bottom:calc(250px + env(safe-area-inset-bottom))}

/* 足球混合过关：展开区跨整场宽度，固定赔率区保持原布局。 */
.football-more{margin-left:-149px;min-width:0}
@media(max-width:650px){.football-more{margin-left:-81px}}
.football-more summary::-webkit-details-marker{display:none}
.football-more .collapse-label{display:none}
.football-more[open] .more-label{display:none}
.football-more[open] .collapse-label{display:inline}
.football-more .expanded-market{display:block;text-align:left;margin:10px 0 0}
.football-more .pool-name{text-align:left;color:var(--red);font-size:14px;font-weight:600;margin-bottom:7px}
.football-more .pool-name em{display:inline-block;margin-left:5px;vertical-align:middle}
.football-more .expanded-half .odds-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.football-more .expanded-goals .odds-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.football-more .expanded-score .odds-grid{grid-template-columns:repeat(5,minmax(0,1fr));margin-top:4px}
.football-more .odd{font-size:14px;min-height:48px}
.football-more .odd strong{color:#aaa;font-size:12px;font-weight:400}
.football-more .odd[aria-pressed=true] strong{color:white}
