:root{--bg:#0b0f17;--bg-raise:#121826;--bg-hover:#182033;--line:#222b3d;--text:#e8ecf3;--text-2:#9aa4b8;--text-3:#636d82;--gold:#c8aa6e;--gold-soft:#c8aa6e24;--live:#ff4d5e;--live-soft:#ff4d5e1f;--win:#e8ecf3;--radius:12px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;font-family:system-ui,-apple-system,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:15px;line-height:1.4}button{font:inherit;color:inherit;cursor:pointer}.app{padding:0 16px calc(24px + env(safe-area-inset-bottom))}@media (width>=721px){.app{padding-left:24px;padding-right:24px}}.app.tree-mode{height:100dvh;padding-bottom:env(safe-area-inset-bottom);flex-direction:column;display:flex}.tree-mode .tree-view{flex-direction:column;flex:1;min-height:0;display:flex}.days{grid-template-columns:repeat(auto-fill,minmax(min(100%,620px),1fr));align-items:start;gap:0 24px;display:grid}.top{padding:calc(14px + env(safe-area-inset-top)) 0 10px;justify-content:space-between;align-items:center;gap:12px;display:flex}.brand{align-items:center;gap:10px;display:flex}.brand-mark{color:var(--gold);font-size:22px}h1{white-space:nowrap;letter-spacing:.5px;margin:0;font-size:19px}.sub{color:var(--text-3);margin:0;font-size:12px}.top-actions{align-items:center;gap:6px;display:flex}.updated{color:var(--text-3);white-space:nowrap;margin-right:4px;font-size:12px}.icon-btn{border:1px solid var(--line);background:var(--bg-raise);border-radius:10px;place-items:center;width:36px;height:36px;font-size:17px;display:grid}.icon-btn:hover{background:var(--bg-hover)}.icon-btn.spinning{animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.filters{z-index:5;background:var(--bg);scrollbar-width:none;gap:8px;margin:0 -16px;padding:8px 16px 10px;display:flex;position:sticky;top:0;overflow-x:auto}.filters::-webkit-scrollbar{display:none}.chip{border:1px solid var(--line);background:var(--bg-raise);height:32px;color:var(--text-2);white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:6px;padding:0 13px;font-size:13px;display:inline-flex}.chip:hover{color:var(--text)}.chip.on{background:var(--gold-soft);border-color:var(--gold);color:var(--gold);font-weight:600}.chip-fav.on{color:var(--gold)}.chip-sep{background:var(--line);flex:none;width:1px;margin:6px 2px}.chip-live{background:var(--live);border-radius:50%;width:7px;height:7px}.section-title{color:var(--live);letter-spacing:1px;align-items:center;gap:8px;margin:10px 0;font-size:14px;display:flex}.pulse{background:var(--live);border-radius:50%;width:8px;height:8px;animation:1.6s ease-out infinite pulse}@keyframes pulse{0%{box-shadow:0 0 #ff4d5e99}to{box-shadow:0 0 0 9px #ff4d5e00}}.live-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,420px),1fr));gap:12px;display:grid}.live-card{border-radius:var(--radius);background:linear-gradient(180deg, var(--live-soft), transparent 70%), var(--bg-raise);border:1px solid #ff4d5e59;padding:12px 16px}.live-card.fav{border-color:var(--gold)}.live-head,.live-foot{color:var(--text-2);align-items:center;gap:8px;font-size:12px;display:flex}.live-badge{background:var(--live);color:#fff;letter-spacing:1px;border-radius:4px;padding:1px 6px;font-size:11px;font-weight:700}.live-league{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.live-body{grid-template-columns:1fr auto 1fr;align-items:center;padding:12px 0 10px;display:grid}.live-team{flex-direction:column;align-items:center;gap:4px;min-width:0;display:flex}.live-code{font-size:17px;font-weight:700}.live-team.is-fav .live-code{color:var(--gold)}.live-name{color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:12px;overflow:hidden}.live-score{font-variant-numeric:tabular-nums;gap:10px;padding:0 8px;font-size:38px;font-weight:800;display:flex}.live-score .colon{color:var(--text-3);font-weight:400}.live-status{color:var(--live);flex:1;font-weight:600}.past-ctl{justify-content:center;gap:8px;margin:14px 0 0;display:flex}.past-ctl:empty{display:none}.day{margin-top:18px}.day-head{z-index:3;color:var(--text-2);background:var(--bg);align-items:baseline;gap:10px;margin:0;padding:8px 2px;font-size:14px;font-weight:600;display:flex;position:sticky;top:50px}.day.today .day-head{color:var(--gold)}.day-count{color:var(--text-3);font-size:12px;font-weight:400}.rows{border-radius:var(--radius);border:1px solid var(--line);background:var(--bg-raise);margin:0;padding:0;list-style:none;overflow:hidden}.row{border-top:1px solid var(--line);grid-template-columns:78px minmax(0,1fr) 76px minmax(0,1fr) 190px;grid-template-areas:"time a score b meta";align-items:center;gap:0 10px;padding:12px 14px;display:grid}.row:first-child{border-top:0}.row.fav{background:var(--gold-soft)}.row.state-inProgress{box-shadow:inset 3px 0 0 var(--live)}.row-time{flex-direction:column;grid-area:time;gap:2px;display:flex}.clock{font-variant-numeric:tabular-nums;font-size:16px;font-weight:700}.state-completed .clock{color:var(--text-3);font-weight:500}.until{white-space:nowrap;color:var(--gold);font-size:11px}.live-dot{color:var(--live);font-size:11px;font-weight:600}.row-meta{color:var(--text-3);flex-wrap:wrap;grid-area:meta;justify-content:flex-end;gap:4px 6px;min-width:0;font-size:12px;display:flex}.league{color:var(--text-2);font-weight:600}.bo{border:1px solid var(--line);border-radius:4px;padding:0 4px;font-size:11px}.team{align-items:center;gap:8px;min-width:0;display:flex}.team-left{text-align:right;flex-direction:row-reverse;grid-area:a}.team-right{grid-area:b}.team-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.team-code{font-weight:700;display:none}.team.lost{opacity:.45}.team.is-fav .team-name,.team.is-fav .team-code{color:var(--gold)}.team.is-fav .team-name:after,.team.is-fav .team-code:after{content:" ★";font-size:.8em}.logo{object-fit:contain;flex:none}.logo-fallback{background:var(--bg-hover);color:var(--text-3);border-radius:6px;place-items:center;font-size:10px;font-weight:700;display:grid}.score{font-variant-numeric:tabular-nums;color:var(--text-3);grid-area:score;justify-content:center;gap:6px;font-size:20px;font-weight:800;display:flex}.score .w{color:var(--win)}.score .colon{font-weight:400}.score.live{color:var(--live)}.score.vs{letter-spacing:1px;font-size:13px;font-weight:600}@media (width<=720px){.row{grid-template-columns:66px minmax(0,1fr) 58px minmax(0,1fr);grid-template-areas:"time meta meta meta""time a score b";gap:6px 8px;padding:10px 12px}.row-meta{justify-content:flex-start}.day-head{top:50px}}@media (width<=480px){.sub{display:none}h1{font-size:17px}.top .view-switch{margin-left:8px}.top .view-switch button{white-space:nowrap;padding:0 10px}.brand-mark{display:none}.top-actions .icon-btn{width:34px;height:34px}.team-name{display:none}.team-code{display:inline}.live-score{font-size:32px}.updated{display:none}}.btn{border:1px solid var(--gold);background:var(--gold-soft);height:36px;color:var(--gold);border-radius:10px;padding:0 16px;font-weight:600}.btn.ghost{border-color:var(--line);color:var(--text-2);background:0 0;font-weight:500}.btn:disabled{opacity:.6;cursor:default}.banner{background:var(--live-soft);color:var(--live);border-radius:10px;margin:8px 0;padding:10px 12px;font-size:13px}.empty{text-align:center;color:var(--text-2);padding:48px 0}.foot{text-align:center;color:var(--text-3);margin-top:28px;font-size:12px}.skeleton{gap:8px;margin-top:16px;display:grid}.sk-row{background:linear-gradient(90deg, var(--bg-raise), var(--bg-hover), var(--bg-raise));background-size:200% 100%;border-radius:10px;height:56px;animation:1.2s linear infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.sheet-backdrop{z-index:20;background:#00000080;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--bg-raise);width:100%;max-width:560px;max-height:85vh;padding:16px 16px calc(20px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;overflow-y:auto}@media (width>=721px){.sheet-backdrop{align-items:center}.sheet{border-radius:16px}}.sheet-head{justify-content:space-between;align-items:center;display:flex}.sheet h2{margin:0;font-size:17px}.sheet h3{color:var(--text-2);margin:18px 0 8px;font-size:14px}.sheet small{color:var(--text-3);font-weight:400}.hint{color:var(--text-3);margin:0 0 10px;font-size:12px}.seg{flex-wrap:wrap;gap:8px;display:flex}.seg button{border:1px solid var(--line);height:34px;color:var(--text-2);background:0 0;border-radius:9px;padding:0 14px}.seg button.on{border-color:var(--gold);background:var(--gold-soft);color:var(--gold)}.search{border:1px solid var(--line);background:var(--bg);width:100%;height:38px;color:var(--text);font:inherit;border-radius:10px;margin-bottom:10px;padding:0 12px}.team-list{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:6px;margin:0;padding:0;list-style:none;display:grid}.team-pick{border:1px solid var(--line);text-align:left;background:0 0;border-radius:9px;align-items:center;gap:8px;width:100%;padding:7px 10px;display:flex}.team-pick.on{border-color:var(--gold);background:var(--gold-soft)}.pick-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:13px;overflow:hidden}.pick-star{color:var(--gold)}.top .view-switch{flex-wrap:nowrap;flex:none;margin-left:12px;margin-right:auto}.view-switch button{border:1px solid var(--line);height:32px;color:var(--text-2);background:0 0;border-radius:9px;padding:0 16px}.view-switch button.on{border-color:var(--gold);background:var(--gold-soft);color:var(--gold);font-weight:600}.live-strip{scrollbar-width:none;gap:8px;margin:2px 0 8px;display:flex;overflow-x:auto}.live-pill{background:var(--live-soft);border:1px solid #ff4d5e59;border-radius:10px;flex:none;align-items:center;gap:7px;height:34px;padding:0 12px 0 6px;font-size:13px;display:inline-flex}.lp-league,.lp-game{color:var(--text-2);font-size:12px}.lp-score{color:var(--live);font-variant-numeric:tabular-nums;font-weight:800}.tree-loading{text-align:center;color:var(--text-2);padding:40px 0}.focus-bar{color:var(--text-2);align-items:center;gap:8px;margin:4px 0 8px;font-size:13px;display:flex}.focus-bar b{color:var(--gold)}.tree-stage{border-top:1px solid var(--line);flex:1;min-height:0;margin:0 -16px;display:flex;position:relative}@media (width>=721px){.tree-stage{margin:0 -24px}}.tree-scroll{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;flex:1;padding:12px 0 64px;overflow:auto}.zoom-ctl{z-index:5;border:1px solid var(--line);background:var(--bg-raise);border-radius:10px;display:flex;position:absolute;bottom:12px;right:12px;overflow:hidden;box-shadow:0 4px 16px #0006}.zoom-ctl button{border:0;border-left:1px solid var(--line);background:0 0;min-width:38px;height:36px;padding:0 10px;font-size:15px}.zoom-ctl button:first-child{border-left:0}.zoom-ctl .zoom-pct{color:var(--text-2);font-variant-numeric:tabular-nums;font-size:12px}.zoom-ctl button:hover{background:var(--bg-hover)}.tree-canvas{margin:0 16px;position:relative}.stage-head{background:var(--bg-raise);border:1px solid var(--line);color:var(--gold);letter-spacing:1px;border-radius:8px;align-items:center;padding:0 10px;font-size:13px;font-weight:700;display:flex;position:absolute}.col-head{flex-direction:column;gap:1px;width:176px;display:flex;position:absolute}.ch-title{color:var(--text);font-size:13px;font-weight:600}.ch-dates{color:var(--text-3);font-size:11px}.col-head.today .ch-dates{color:var(--live)}.tree-label{color:var(--text-2);font-size:12px;font-weight:600;line-height:18px;position:absolute}.tree-label.adv{color:#3fb68b}.tree-label.out{color:var(--text-3)}.tree-label.section{color:var(--text);font-size:13px}.tree-label.lower{color:var(--text-3)}.today-line{pointer-events:none;z-index:1;border-left:1px dashed #ff4d5eb3;width:0;position:absolute;top:0}.today-line span{background:var(--live);color:#fff;white-space:nowrap;border-radius:4px;padding:1px 5px;font-size:11px;font-weight:600;position:absolute;top:0;left:-15px}.tree-edges{pointer-events:none;position:absolute;inset:0;overflow:visible}.edge{fill:none;stroke-width:1.6px}.edge.win{stroke:#3fb68b;opacity:.75}.edge.loss{stroke:#6b7489;stroke-dasharray:4 4;opacity:.8}.edge.inferred{opacity:.35}.focusing .edge{opacity:.12}.focusing .edge.hl{stroke:var(--gold);stroke-width:2.4px;opacity:1}.tnode{z-index:2;border:1px solid var(--line);background:var(--bg-raise);border-radius:9px;flex-direction:column;padding:4px 4px 3px;transition:opacity .15s;display:flex;position:absolute}.tnode.state-inProgress{border-color:var(--live);box-shadow:0 0 0 1px var(--live) inset}.tnode.hl{border-color:var(--gold)}.tnode.dim{opacity:.35}.tn-cap{color:var(--text-3);white-space:nowrap;justify-content:space-between;padding:0 4px 2px;font-size:11px;display:flex}.tn-live{color:var(--live);font-weight:600}.tn-team{text-align:left;background:0 0;border:0;border-radius:5px;align-items:center;gap:7px;height:21px;padding:0 4px;display:flex}.tn-team:not(:disabled):hover{background:var(--bg-hover)}.tn-team:disabled{cursor:default;color:var(--text-3)}.tn-code{text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;font-weight:600;overflow:hidden}.tn-score{font-variant-numeric:tabular-nums;text-align:right;min-width:12px;font-weight:800}.tn-team.lost{opacity:.45}.tn-team.win .tn-score{color:var(--gold)}.state-inProgress .tn-score{color:var(--live)}.tn-team.fav .tn-code,.exit-team.fav span{color:var(--gold)}.tn-team.fav .tn-code:after{content:" ★";font-size:.8em}.tn-team.hl,.exit-team.hl{background:var(--gold-soft)}.tnode.empty{color:var(--text-3);background:0 0;border-style:dashed;justify-content:center;align-items:center;font-size:12px}.tnode.exit{flex-flow:wrap;align-content:flex-start;gap:2px;padding:4px}.tnode.exit.adv{background:#3fb68b14;border-color:#3fb68b80}.exit-team{background:0 0;border:0;border-radius:5px;align-items:center;gap:6px;width:calc(50% - 1px);height:24px;padding:0 6px;font-size:12px;font-weight:600;display:flex}.exit-team.blank{color:var(--text-3);border:1px dashed var(--line);justify-content:center}.standings{border:1px solid var(--line);background:var(--bg-raise);border-radius:9px;margin:0;padding:4px;list-style:none;position:absolute}.standings li{cursor:pointer;border-radius:5px;align-items:center;gap:8px;height:26px;padding:0 6px;font-size:13px;display:flex}.standings li.hl{background:var(--gold-soft)}.standings li.fav .st-code{color:var(--gold)}.st-rank{width:16px;color:var(--text-3);font-variant-numeric:tabular-nums}.st-code{flex:1;font-weight:600}.st-rec{color:var(--text-2);font-variant-numeric:tabular-nums}.tree-note{color:var(--text-3);margin:0;padding:6px 0;font-size:12px}@media (width<=720px){.tree-note{display:none}}
