/* Team Speedruns (public/js/team-speedrun-board.js), on top of css/speedrun.css. */
.tsr .card{margin-top:18px}
.tsr .card h2{margin:0 0 4px;font-family:var(--font-display);font-size:22px;letter-spacing:.04em}
.tsr .desc{margin:0 0 12px;color:var(--muted);font-size:13.5px}
.tsr-muted{color:var(--muted)}
.tsr-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:18px}
.tsr-tiles .kpi{border:1px solid #202a37;background:#0d131c;border-radius:12px;padding:12px 14px;min-width:0}
.tsr-tiles .kpi .l{color:#7f8b9d;font-size:10px;text-transform:uppercase;letter-spacing:.08em}
.tsr-tiles .kpi .v{margin-top:5px;font-family:var(--font-display);font-size:24px;font-weight:900;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tsr-tiles .kpi .h{margin-top:2px;color:#697588;font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:760px){.tsr-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}
.tsr-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:4px}
.tsr .tsr-team{white-space:normal;line-height:1.6}
.tsr .tsr-team a.pl{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;color:var(--text);text-decoration:none}
.tsr .tsr-team a.pl:hover b{color:var(--blue);text-decoration:underline}
.tsr .tsr-team .sep{color:var(--muted);font-style:normal;margin:0 6px}
.tsr .tsr-team .more{color:var(--muted);font-size:12px;margin-left:8px;white-space:nowrap}
.tsr-tag{display:inline-block;padding:2px 8px;border:1px solid var(--line);border-radius:7px;font-weight:800;font-size:12px;letter-spacing:.04em;background:#131b27;color:var(--text)}
.tsr-rps{white-space:nowrap}
.tsr-rp{display:inline-flex;align-items:center;justify-content:center;width:30px;height:28px;margin-right:4px;border:1px solid var(--line);border-radius:8px;background:#131b27;color:var(--text);text-decoration:none;font-size:13px}
.tsr-rp:hover{border-color:var(--blue)}
.tsr-recs td,.tsr-recs th{white-space:nowrap}
.tsr-recs tr.on td{background:#111a26}
.tsr-rec{cursor:pointer}.tsr-rec:hover{background:#131d2b}
.tsr-rec .time{font-family:var(--font-display);font-weight:900;margin-right:8px}
.tsr-two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:0 18px}
.tsr-two>.card:only-child{grid-column:1/-1}
@media(max-width:860px){.tsr-two{grid-template-columns:1fr}}
.tsr-podium,.tsr-lineups,.tsr-hist{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.tsr-podium li{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid #1b2330;border-radius:10px;background:#0a0f16;font-size:13px}
.tsr-podium li.top{border-color:#2c3b52;background:#0f1622}
.tsr-podium .m{width:26px;text-align:center;font-weight:900;color:var(--muted)}
.tsr-podium .n{color:var(--muted)}.tsr-podium .n b{color:var(--text)}
.tsr-medals{display:flex;gap:12px}.tsr-medals span{display:inline-flex;align-items:center;gap:4px;min-width:42px}.tsr-medals span.z{opacity:.35}
.tsr-podium .t{margin-left:auto;font-family:var(--font-display);font-weight:900;font-variant-numeric:tabular-nums}
.tsr-lineups li{padding:8px 10px;border:1px solid #1b2330;border-radius:10px;background:#0a0f16;font-size:13px}
.tsr-lineups li .tsr-muted{font-size:12px;margin-top:2px}
.tsr-hist li{display:flex;align-items:flex-start;gap:10px;padding:8px 10px;border:1px solid #1b2330;border-radius:10px;background:#0a0f16;font-size:13px}
.tsr-hist .d{color:var(--muted);width:54px;flex:none;padding-top:2px}
.tsr-hist .w{flex:1;min-width:0}
.tsr-hist em{color:var(--green);font-style:normal;font-size:12px;margin-left:6px}
.tsr-hist .tsr-team{font-size:12px}
@media(max-width:560px){.tsr .lb td,.tsr .lb th{padding:8px 6px}.tsr-rp{width:26px;height:26px;margin-right:2px}}
/* Clan badge in the clan's colour (text lightened so dark colours stay readable) */
.tsr-badge{display:inline-block;padding:1px 7px;border:1px solid var(--c);border-radius:6px;background:color-mix(in srgb,var(--c) 22%,transparent);color:color-mix(in srgb,var(--c) 55%,#fff);font-weight:800;font-size:11.5px;letter-spacing:.04em;line-height:1.5;vertical-align:1px;white-space:nowrap}
/* Records per map: view switch (Tabs / Cards / Table) */
.tsr-seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.tsr-seg button{padding:6px 12px;border:0;background:#0d131c;color:var(--muted);font:inherit;font-size:12.5px;font-weight:700;cursor:pointer}
.tsr-seg button+button{border-left:1px solid var(--line)}
.tsr-seg button.on{background:#13203a;color:var(--text)}
/* Records per map: sort + clan options (2026-10-05) */
.tsr-opts{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;margin:6px 0 4px}
.tsr-sel{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:12.5px;font-weight:700}
.tsr-sel select{padding:6px 10px;border:1px solid var(--line);border-radius:10px;background:#0d131c;color:var(--text);font:inherit;font-size:12.5px;font-weight:700;cursor:pointer}
.tsr-mtable td.dim,.tsr-card-row.dim{opacity:.35}
@media(max-width:600px){.tsr-opts .tsr-seg{flex:1 1 100%}.tsr-opts .tsr-seg button{flex:1}.tsr-sel{flex:1 1 0}.tsr-sel select{flex:1;min-width:0}}
.tsr-go{cursor:pointer}
.tsr .t{font-family:var(--font-display);font-weight:900;font-variant-numeric:tabular-nums}
.tsr .pls{color:var(--muted);font-size:12px}
.tsr .pls .more{color:var(--muted);font-size:11.5px}
/* L: tabs + one table per team size */
.tsr-rtabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 10px}
.tsr-rtabs button{padding:7px 12px;border:1px solid var(--line);border-radius:10px;background:#0d131c;color:var(--text);font:inherit;font-weight:800;font-size:13px;letter-spacing:.04em;cursor:pointer}
.tsr-rtabs button span{margin-left:4px;padding:0 6px;border-radius:999px;background:#1b2636;color:var(--muted);font-size:11px}
.tsr-rtabs button.on{border-color:var(--blue);background:#13203a}
.tsr-rtabs button.on span{background:var(--blue);color:#07101c}
.tsr-ltable tr.tsr-go:hover td{background:#111a26}
.tsr-ltable .beat{color:var(--red);font-weight:800;font-variant-numeric:tabular-nums}
.tsr-ltable .cp{min-width:0}
.tsr-open{margin-top:12px;display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12.5px}
.tsr-open .chip{padding:2px 9px;border:1px dashed #3a4a60;border-radius:999px;color:var(--muted);font-size:12px}
/* K: one card per map */
.tsr-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
@media(max-width:900px){.tsr-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.tsr-cards{grid-template-columns:1fr}}
.tsr-card{border:1px solid #202a37;border-radius:12px;overflow:hidden;background:#0a0f16}
.tsr-card-top{height:92px;display:flex;align-items:flex-end;padding:10px 12px;background-color:#101826;background-size:cover;background-position:center}
.tsr-card-top b{color:#fff;font-size:15px;text-shadow:0 1px 4px #000}
.tsr-card-row{display:flex;align-items:center;gap:8px;padding:7px 12px;border-top:1px solid #151d29;font-size:13px}
.tsr-card-row .l{width:92px;flex:none;color:#7f8b9d;font-size:10.5px;text-transform:uppercase;letter-spacing:.08em}
.tsr-card-row .tsr-go{display:flex;align-items:center;gap:8px;margin-left:auto}
.tsr-card-row .tsr-go:hover .t{color:var(--blue)}
.tsr-card-row .claim{margin-left:auto;color:var(--blue);font-size:12px}
/* M: maps x team sizes */
.tsr-mtable td{vertical-align:top}
.tsr-mtable td .tsr-go{display:block}
.tsr-mtable td .tsr-go:hover .t{color:var(--blue)}
.tsr-mtable .t{margin-right:6px}
.tsr-mtable .pls{margin-top:2px}
.tsr-mtable .empty-c{color:#3a4658;text-align:center}
.tsr-new{margin-left:6px;padding:0 5px;border-radius:5px;background:var(--green);color:#06140c;font-size:10px;font-weight:900;letter-spacing:.05em;vertical-align:1px}
@media(max-width:700px){
  .tsr-mtable thead{display:none}
  .tsr-mtable,.tsr-mtable tbody,.tsr-mtable tr{display:block}
  .tsr-mtable tr{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line)}
  .tsr-mtable td{border:0;padding:6px 8px}
  .tsr-mtable td.mp{grid-column:1/-1;padding-top:10px}
  .tsr-mtable td[data-label]::before{content:attr(data-label);display:block;color:#7f8b9d;font-size:10px;letter-spacing:.08em;margin-bottom:2px}
  .tsr-mtable .empty-c{text-align:left}
  .tsr-ltable td,.tsr-ltable th{padding:8px 6px}
}
/* Latest speedruns: the 3 newest team wins as cards (replaces the Leaderboard, 2026-10-04) */
.tsr-latest{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
@media(max-width:900px){.tsr-latest{grid-template-columns:1fr}}
.tsr-lcard{display:flex;flex-direction:column;border:1px solid #202a37;border-top:3px solid var(--c);border-radius:12px;overflow:hidden;background:#0a0f16;min-width:0}
.tsr-lcard-top{position:relative;height:104px;display:flex;flex-direction:column;justify-content:flex-end;gap:2px;padding:10px 12px;background-color:#101826;background-size:cover;background-position:center}
.tsr-lmap{color:#fff;font-size:16px;text-shadow:0 1px 4px #000;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tsr-lcat{align-self:flex-start;padding:1px 8px;border-radius:6px;background:#0b1018cc;border:1px solid #2c3b52;color:var(--text);font-family:var(--font-display);font-size:12px;font-weight:800;letter-spacing:.08em}
.tsr-recbadge{position:absolute;top:8px;right:8px;padding:2px 8px;border-radius:6px;background:#f2b400;color:#1a1200;font-size:10.5px;font-weight:900;letter-spacing:.06em;box-shadow:0 1px 6px #0008}
.tsr-lcard-body{display:flex;flex-direction:column;gap:8px;padding:10px 12px 12px;flex:1}
.tsr-lrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.tsr-ltime{font-size:24px}
.tsr-ldate{margin-left:auto;font-size:12px}
.tsr-lcard .tsr-team{font-size:13px}
.tsr-lfoot{margin-top:auto;justify-content:space-between;font-size:12px}
.tsr-lreplay{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--line);border-radius:9px;background:#131b27;color:var(--text);font-weight:800;font-size:12.5px;text-decoration:none;white-space:nowrap}
.tsr-lreplay:hover{border-color:var(--blue);color:var(--blue)}
/* Top 5 popup on a map name in Records per map (team-speedrun-board.js) */
.tsr-top5{cursor:help}
.tsr-top5 b{text-decoration:underline dotted #5b6b80;text-underline-offset:3px}
.tsr-pop{position:absolute;z-index:1000;min-width:170px;max-width:calc(100vw - 16px);padding:8px 10px;border:1px solid #2a3647;border-radius:10px;background:#0b1018f5;box-shadow:0 8px 24px #000a;font-size:13px;pointer-events:none}
.tsr-pop .h{color:#8391a7;font-size:11.5px;font-weight:700;margin-bottom:5px;white-space:nowrap}
.tsr-pop ol{list-style:none;margin:0;padding:0}
.tsr-pop li{display:flex;align-items:center;gap:8px;padding:2px 0}
.tsr-pop .p{width:14px;color:#8391a7;font-weight:800;text-align:right}
.tsr-pop .t{margin-left:auto;font-variant-numeric:tabular-nums}
