:root{--red:#dc052d;--bg:#0f0f12;--card:#1b1b21;--fg:#f4f4f6;--muted:#9a9aa6;--ok:#2ecc71}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.45 -apple-system,system-ui,Helvetica,Arial,sans-serif;padding-bottom:env(safe-area-inset-bottom)}
header{background:var(--red);padding:calc(14px + env(safe-area-inset-top)) 18px 14px}header h1{margin:0;font-size:22px;letter-spacing:.5px}header .sub{margin:2px 0 0;opacity:.9;font-size:14px}
main{padding:14px;max-width:640px;margin:0 auto}.card{background:var(--card);border-radius:14px;padding:16px;margin-bottom:14px}
h2{margin:0 0 10px;font-size:16px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px}
.muted{color:var(--muted);font-size:14px}.row{display:flex;gap:8px}input{flex:1;padding:12px;border-radius:10px;border:1px solid #333;background:#111;color:#fff;font-size:16px}
button{font:inherit;border:0;border-radius:10px;padding:12px 16px;cursor:pointer}.btn-primary{background:var(--red);color:#fff;font-weight:600}.btn-ghost{background:#2a2a32;color:#fff}
.actions{display:flex;gap:8px;margin-top:8px}.status.on{color:var(--ok)}ol{padding-left:20px}
.status-row,.event{padding:10px 0;border-top:1px solid #2a2a32}.status-row:first-of-type,.event:first-of-type{border-top:0}
.src{font-size:13px;color:var(--muted)}.val{font-weight:600;font-size:17px}.det{font-size:14px;color:#cfcfd6;word-break:break-word}.ts{font-size:12px;color:var(--muted);margin-top:2px}
.hot .val{color:var(--ok)}a{color:#ff6b81}
/* goal */
.goal-row{display:flex;align-items:center;gap:14px}.big{font-size:44px;font-weight:700;line-height:1}.big .of{font-size:18px;color:var(--muted);margin-left:6px;font-weight:500}.goal-txt{font-size:15px;color:#cfcfd6}
.meter{height:6px;background:#2a2a32;border-radius:3px;margin-top:12px;overflow:hidden}.meter .fill{height:100%;background:var(--red);border-radius:3px}
/* toggles */
.toggles{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:10px}.tg{background:#2a2a32;color:#cfcfd6;padding:7px 12px;font-size:14px;border-radius:8px}.tg.on{background:#3b3b46;color:#fff;font-weight:600}.sep{width:10px}
.legend{margin-left:auto;font-size:13px;color:var(--muted)}.sw{display:inline-block;width:10px;height:10px;border-radius:50%;margin:0 4px 0 8px;vertical-align:middle}.sw.live{background:#dc052d;box-shadow:0 0 0 2px #fff}.sw.gone{background:#b9b9c4;box-shadow:inset 0 0 0 2.5px #2c2c35}
/* stadium */
.stadium-wrap,.chart-wrap{position:relative}.stadium{width:100%;height:auto;display:block}
.stadium .blk{fill:#b9b9c4;stroke:#1b1b21;stroke-width:1}.stadium .blkn{fill:#1b1b21;font-size:9px;text-anchor:middle;font-weight:600;pointer-events:none}
.stadium .pitch rect,.stadium .pitch line,.stadium .pitch circle{fill:none;stroke:#6b6b78;stroke-width:1.5}.stadium .stand{fill:var(--muted);font-size:10px;text-anchor:middle;letter-spacing:1px}
.stadium .dot.live{fill:#dc052d;stroke:#fff;stroke-width:2}.stadium .dot.gone{fill:#b9b9c4;stroke:#2c2c35;stroke-width:2.5}.stadium .hit,.chart .hit{fill:transparent;cursor:pointer}
.tip{position:absolute;top:0;left:0;background:#2a2a32;color:#fff;font-size:13px;padding:8px 10px;border-radius:8px;white-space:pre-line;pointer-events:none;box-shadow:0 4px 14px rgba(0,0,0,.4);max-width:260px}
/* chart */
.chart{width:100%;height:auto;display:block}.chart .bar{fill:#f0506a}.chart .zero{fill:#5a5a66}.chart .nopoll{fill:#2f2f38}.chart .grid{stroke:#2a2a32;stroke-width:1}.chart .axis{stroke:#5a5a66;stroke-width:1}
.chart .ytick,.chart .xtick{fill:var(--muted);font-size:10px}.chart .ytick{text-anchor:end}.chart .xtick{text-anchor:middle}
/* pull to refresh + header button */
.ptr{height:0;overflow:hidden;background:#2a2a32;color:var(--muted);font-size:13px;text-align:center;line-height:40px;transition:height .1s}.ptr.ready{color:#fff}
header{display:flex;align-items:center;justify-content:space-between}.reload{background:rgba(255,255,255,.18);color:#fff;font-size:22px;line-height:1;width:40px;height:40px;border-radius:50%;padding:0}
