:root{--bg:#0b1020;--card:#121a33;--text:#eaf0ff;--muted:#a8b3d9;--border: rgba(255,255,255,.12);--accent:#7aa2ff;--kpo-intra: 18px;--kpo-between: 86px;--r16-intra: 30px;--r16-between: 112px;--qf-intra: 58px;--sf-intra: 124px}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:linear-gradient(180deg,#070a14,var(--bg));color:var(--text)}#app{max-width:1200px;margin:0 auto;padding:22px}.header h1{margin:0 0 6px;font-size:28px}.subtitle{margin:0;color:var(--muted)}.layout{display:grid;grid-template-columns:2.2fr 1fr;gap:16px;margin-top:16px}.card{background:#121a33db;border:1px solid var(--border);border-radius:14px;padding:14px 14px 10px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.aside-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.btn-row{display:flex;gap:10px}.btn{padding:8px 10px;border-radius:10px;border:1px solid var(--border);background:#7aa2ff2e;color:var(--text);cursor:pointer}.btn:hover{border-color:#7aa2ff8c}.btn-secondary{background:#ffffff14}.caption{color:var(--muted);margin:10px 0 12px;font-size:13px}.table-wrap{overflow:auto}.tight-table{width:100%;border-collapse:collapse;font-size:12px;line-height:1.1}.tight-table th,.tight-table td{padding:6px 8px;border-bottom:1px solid var(--border);white-space:nowrap}.tight-table th{text-align:left;color:var(--muted);font-weight:600;position:sticky;top:0;background:#121a33f2}.tight-table .num{width:56px;max-width:56px;text-align:right}.tight-table .team{min-width:140px}.checkbox{width:18px;height:18px;accent-color:var(--accent)}@media(max-width:980px){.layout{grid-template-columns:1fr}}.controls{margin-top:10px;display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap}.control{display:flex;align-items:center;gap:10px}.label{color:var(--muted);font-size:13px}.select{background:#ffffff14;border:1px solid var(--border);color:var(--text);padding:8px 10px;border-radius:10px;outline:none}.select option{color:#111}.md-range{margin-top:4px;color:var(--muted);font-size:12px}.sport-nav{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:10px}.sport-tab{padding:8px 12px;border-radius:999px;border:1px solid var(--border);background:#ffffff0f;color:var(--text);cursor:pointer;font-weight:600;letter-spacing:.2px}.sport-tab:hover{border-color:#ffffff8c}.sport-tab.active{border-color:#fffffff2;outline:2px solid rgba(255,255,255,.95);outline-offset:2px;background:#ffffff1f}#app.bracket-mode .layout{grid-template-columns:1fr}#app.bracket-mode #sidePanel,#app.bracket-mode #leagueTable{display:none}#app:not(.bracket-mode) #bracket{display:none}#bracket{margin-top:10px;overflow-x:auto;-webkit-overflow-scrolling:touch}.bracket{position:relative;display:grid;grid-template-columns:repeat(5,minmax(200px,1fr));gap:16px;min-height:520px;margin-top:10px}.match-card{position:relative;border:1px solid var(--border);border-radius:12px;padding:10px;background:#ffffff0f;cursor:pointer;margin:12px 0}.match-card:hover{border-color:#7aa2ff8c}.team-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}.team-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score-badge{min-width:44px;text-align:center;border-radius:8px;padding:4px 6px;border:1px solid var(--border);background:#ffffff14;font-variant-numeric:tabular-nums}.score-hidden{color:var(--muted)}.aux{margin-top:6px;color:var(--muted);font-size:12px}.bracket-svg{position:absolute;inset:0;pointer-events:none}.bracket.bracket-mirrored{grid-template-columns:280px 280px 280px 280px 240px 280px 280px 280px 280px;gap:56px;min-height:940px;margin-top:8px}@media(min-width:1600px){.bracket.bracket-mirrored{grid-template-columns:300px 300px 300px 300px 260px 300px 300px 300px 300px;gap:64px;min-height:1020px}}.wc-pill.match-card{border:1.6px solid rgba(255,255,255,.18);border-radius:18px;padding:12px 14px;background:#ffffff0f;box-shadow:0 0 0 1px #00000038 inset}.wc-pill:hover{border-color:#ffffff73}.team-row{min-height:26px}.score-badge{min-width:58px}.centre-col{display:flex;align-items:center;justify-content:center}.centre-stack{display:flex;flex-direction:column;gap:18px;align-items:center}.trophy-badge{font-size:58px;line-height:1}.bracket.ucl-bracket{grid-template-columns:280px 280px 280px 280px 240px;gap:56px;min-height:820px;min-width:1584px}.bracket.ucl-bracket .round-col h3{margin:0 0 12px;color:#ffffffc7;font-size:13px;font-weight:900;letter-spacing:.5px}.bracket.ucl-bracket .ucl-pill.match-card{border-radius:18px;background:#ffffff0f;border:1.6px solid rgba(255,255,255,.16);box-shadow:0 1px #00000038 inset;padding:12px 14px}.bracket.ucl-bracket .ucl-pill.match-card:hover{border-color:#ffffff73}.bracket.ucl-bracket .ucl-pill .team-row{grid-template-columns:1fr auto;align-items:center;min-height:26px;gap:8px;margin:0}.bracket.ucl-bracket .ucl-pill .team-name{font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bracket.ucl-bracket .ucl-pill .score-badge{min-width:56px;text-align:center;border-radius:12px;padding:4px 8px;line-height:1;border:1px solid rgba(255,255,255,.18);background:#ffffff1a;font-variant-numeric:tabular-nums}.bracket.ucl-bracket .ucl-pill .aux{margin-top:8px;color:var(--muted);font-size:12px}.bracket.ucl-bracket .ucl-legs{margin-top:8px}.bracket.ucl-bracket .ucl-leg{font-size:12px;color:#e6f0ffeb;opacity:.9}.bracket.ucl-bracket .ucl-agg{margin-top:4px;font-size:12px;font-weight:800;color:#dff1ff}.round-col[data-stage=KPO] .match-card{margin:var(--kpo-intra) 0}.round-col[data-stage=KPO] .match-card:nth-of-type(2n){margin-bottom:var(--kpo-between)}.round-col[data-stage=R16] .match-card{margin:var(--r16-intra) 0}.round-col[data-stage=R16] .match-card:nth-of-type(2n){margin-bottom:var(--r16-between)}.round-col[data-stage=QF] .match-card{margin:var(--qf-intra) 0}.round-col[data-stage=SF] .match-card{margin:var(--sf-intra) 0}.round-col[data-stage=KPO] .ucl-pill{background:#0f4fff1f;border-color:#0f4fff44}.round-col[data-stage=R16] .ucl-pill{background:#00b35a1f;border-color:#00b35a44}.round-col[data-stage=QF] .ucl-pill{background:#00c2ff1f;border-color:#00c2ff44}.round-col[data-stage=SF] .ucl-pill{background:#ff3a3a1f;border-color:#ff3a3a44}.round-col[data-stage=F] .ucl-pill.centre-pill{background:#ff57b91f;border-color:#ff57b944}.bracket.afl-bracket{grid-template-columns:280px 280px 280px 260px;gap:56px;min-height:820px;min-width:1268px}.bracket.afl-bracket .round-col h3{margin:0 0 12px;color:#ffffffc7;font-size:13px;font-weight:900;letter-spacing:.5px}.afl-pill.match-card{border:1.6px solid rgba(255,255,255,.18);border-radius:18px;padding:12px 14px;background:#ffffff0f;box-shadow:0 0 0 1px #00000038 inset}.afl-pill.match-card:hover{border-color:#ffffff73}.afl-pill .team-row{display:grid;grid-template-columns:1fr auto;align-items:center;min-height:26px;gap:8px;margin:0}.afl-pill .team-name{font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.afl-pill .score-badge{min-width:56px;text-align:center;border-radius:12px;padding:4px 8px;line-height:1;border:1px solid rgba(255,255,255,.18);background:#ffffff1a;font-variant-numeric:tabular-nums}.afl-pill .aux{margin-top:8px;color:var(--muted);font-size:12px}.round-col[data-stage=W1] .match-card{margin:18px 0}.round-col[data-stage=W1] .match-card:nth-of-type(2){margin-bottom:86px}.round-col[data-stage=W1] .match-card:nth-of-type(3){margin-bottom:86px}.round-col[data-stage=SF] .match-card{margin:60px 0}.round-col[data-stage=PF] .match-card{margin:110px 0}.round-col[data-stage=GF] .match-card{margin:160px 0}@media(max-width:980px){.bracket{overflow-x:auto;min-width:920px}}.crumbs{margin:6px 0 8px}.back-link{color:var(--muted);text-decoration:none}.back-link:hover{text-decoration:underline}.pillnav{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 16px}.pill{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--border);border-radius:999px;background:#101827;color:var(--ink);text-decoration:none;line-height:1.1}.pill:hover{background:#14203a}.pill[aria-current=page],.pill.is-active{background:#1b2a46;border-color:#2b3b5c;box-shadow:inset 0 0 0 1px #ffffff14}
