/* SHADOWS roster split layout — icons from SVGRepo (CC0) */
.roster-modal{width:min(100%,1120px);max-height:min(92vh,920px)}
.roster-modal-mark img{display:block;width:29px;height:29px;object-fit:contain;filter:invert(83%) sepia(90%) saturate(1600%) hue-rotate(1deg) brightness(103%) contrast(103%)}
.roster-scoreboard{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto 18px auto minmax(0,1fr);align-items:center;gap:12px;padding:15px 23px 20px;border-bottom:1px solid #292c30;background:radial-gradient(ellipse at 50% 0,rgba(255,210,28,.07),transparent 62%),#101113}
.roster-score-team{display:flex;align-items:center;gap:9px;min-width:0;color:#c2c5c8;font-size:9px;letter-spacing:.095em;font-weight:800}
.roster-score-team img{display:block;flex-shrink:0;object-fit:contain}
.score-side-t{justify-content:flex-end;color:#ffb46a}
.score-side-t img,.team-card-t .roster-team-heading img{filter:invert(70%) sepia(57%) saturate(1536%) hue-rotate(335deg) brightness(104%) contrast(101%)}
.score-side-ct{justify-content:flex-start;color:#81cfff}
.score-side-ct img,.team-card-ct .roster-team-heading img{filter:invert(71%) sepia(39%) saturate(1119%) hue-rotate(171deg) brightness(101%) contrast(101%)}
.roster-score-value{min-width:37px;color:#f5f5f0;font-size:31px;line-height:1;font-weight:800;text-align:center;font-variant-numeric:tabular-nums;text-shadow:0 0 18px #ffffff09}
.roster-score-colon{color:#6d7177;font-size:23px;font-weight:500;text-align:center}
.roster-score-caption{grid-column:1/-1;display:flex;align-items:center;justify-content:center;gap:6px;margin-top:0;color:#70747a;font-size:8px;letter-spacing:.15em;font-weight:800}
.roster-score-caption img{object-fit:contain;filter:invert(84%) sepia(89%) saturate(1320%) hue-rotate(1deg) brightness(104%) contrast(103%)}
.roster-team-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:12px;padding:14px 16px 12px;background:#0c0d0f}
.roster-team-card{display:flex;flex-direction:column;min-width:0;overflow:hidden;border:1px solid #34373c;border-radius:8px;background:linear-gradient(145deg,#141619,#0e0f11 85%);box-shadow:0 10px 26px #0002}
.team-card-t{border-top:2px solid #a75e24}
.team-card-ct{border-top:2px solid #286e9f}
.roster-team-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:63px;padding:11px 13px;border-bottom:1px solid #2a2c31;background:linear-gradient(100deg,#1a1b1e,#121315)}
.roster-team-heading{display:flex;align-items:center;gap:10px;min-width:0}
.roster-team-heading img{flex-shrink:0;display:block;object-fit:contain}
.roster-team-heading>div{display:flex;flex-direction:column;gap:4px;min-width:0}
.roster-team-heading strong{color:#f2f2ee;font-size:11px;letter-spacing:.075em;line-height:1.2;white-space:normal}
.roster-team-heading small{color:#858990;font-size:8px;letter-spacing:.12em;font-weight:800}
.team-card-t .roster-team-heading strong{color:#ffbd82}
.team-card-ct .roster-team-heading strong{color:#8ad1ff}
.roster-team-dot{display:block;width:7px;height:7px;flex-shrink:0;border-radius:50%}
.dot-t{background:#e58d45;box-shadow:0 0 11px #e58d4577}
.dot-ct{background:#44b4ff;box-shadow:0 0 11px #44b4ff77}
.roster-column-head,.roster-player-row.roster-team-row{display:grid;grid-template-columns:25px minmax(0,1fr) 27px 27px 51px;align-items:center;column-gap:5px;min-width:0}
.roster-column-head{padding:9px 9px;background:#1b1d20;color:#7f8389;border-bottom:1px solid #34363b;font-size:7px;letter-spacing:.09em;font-weight:800}
.roster-column-head span:nth-child(n+3){text-align:center}
.roster-column-list{min-width:0;min-height:125px;max-height:min(35vh,310px);overflow-y:auto;overscroll-behavior:contain;scrollbar-color:#393c42 #111214;scrollbar-width:thin}
.roster-player-row.roster-team-row{position:relative;width:100%;padding:10px 9px;border-bottom:1px solid #25272b;font-size:10px;gap:5px;animation:roster-row-in .18s ease both}
.roster-player-row.roster-team-row:last-child{border-bottom:0}
.roster-player-row.roster-team-row .roster-player-number{font-size:9px}
.roster-player-row.roster-team-row .roster-player-name{font-size:10px}
.roster-player-row.roster-team-row .roster-player-steamid{font-size:7px;max-width:100%}
.roster-player-row.roster-team-row .roster-player-details{gap:2px}
.roster-player-row.roster-team-row .roster-player-stat{font-size:10px}
.roster-player-row.roster-team-row .roster-player-time{font-size:8px;white-space:nowrap}
.roster-team-empty{min-height:120px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;padding:18px;text-align:center}
.roster-team-empty>span{display:grid;place-items:center;width:28px;height:28px;border:1px solid #41444a;border-radius:50%;color:#858990;font-size:16px}
.roster-team-empty small{color:#777b82;font-size:10px}
.roster-team-error small{color:#ff9b9d}
.roster-spectators{margin:0 16px 12px;border:1px solid #303238;border-radius:7px;overflow:hidden;background:#111315}
.roster-spectators[hidden]{display:none!important}
.roster-spectators>header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 13px;background:#1a1c1f;border-bottom:1px solid #303238;color:#9ca0a6;font-size:8px;font-weight:800;letter-spacing:.12em}
.roster-spectators>header b{display:grid;place-items:center;min-width:22px;height:22px;padding:0 5px;border-radius:4px;background:#292c30;color:#e2e3e1;font-size:10px}
.roster-spectator-list{display:grid;grid-template-columns:1fr 1fr}
.roster-spectator-list .roster-player-row.roster-team-row{grid-template-columns:25px minmax(0,1fr) 27px 27px 51px}
.roster-bot-note{display:flex;align-items:center;flex-wrap:wrap;gap:8px 13px;padding:0 18px 13px;color:#747880;font-size:9px}
.roster-bot-copy{display:inline-flex;align-items:center;gap:6px;color:#a1a5aa;font-weight:800;letter-spacing:.06em}
.roster-bot-copy strong{display:grid;place-items:center;min-width:22px;height:22px;padding:0 5px;border:1px solid #4d4120;border-radius:4px;background:#211c0e;color:#ffd86b;font-size:11px}
.roster-bot-note>small{color:#70747b;font-size:9px}
.roster-icon-credit{flex-basis:100%;color:#62666d;font-size:8px;line-height:1.6}
.roster-icon-credit a{color:#888d94;text-decoration:underline;text-decoration-color:#474b51;text-underline-offset:2px}
.roster-icon-credit a:hover{color:var(--yellow)}
.roster-modal-footer{margin-top:0}
.roster-modal-footer>span.roster-state-error{color:#ff9999}
.roster-backdrop .roster-modal-footer .btn{min-height:37px}
@media(max-width:760px){
  .roster-modal{max-height:94vh;overflow-y:auto;overflow-x:hidden}
  .roster-scoreboard{grid-template-columns:minmax(0,1fr) auto 12px auto minmax(0,1fr);gap:5px;padding:12px 8px 17px}
  .roster-score-team{gap:5px;font-size:7px;letter-spacing:0}
  .roster-score-team img{width:20px;height:20px}
  .roster-score-value{min-width:24px;font-size:25px}
  .roster-score-colon{font-size:19px}
  .roster-score-caption{font-size:7px}
  .roster-team-grid{grid-template-columns:minmax(0,1fr);gap:10px;padding:10px 9px}
  .roster-team-card-head{min-height:57px;padding:9px 11px}
  .roster-column-list{max-height:23vh;min-height:85px}
  .roster-column-head,.roster-player-row.roster-team-row{grid-template-columns:27px minmax(0,1fr) 32px 32px 58px;column-gap:6px}
  .roster-column-head{padding:9px 11px;font-size:8px}
  .roster-player-row.roster-team-row{padding:10px 11px}
  .roster-player-row.roster-team-row .roster-player-name{font-size:11px}
  .roster-player-row.roster-team-row .roster-player-steamid{font-size:8px}
  .roster-player-row.roster-team-row .roster-player-stat{font-size:11px}
  .roster-player-row.roster-team-row .roster-player-time{font-size:9px}
  .roster-spectators{margin:0 9px 10px}
  .roster-spectator-list{grid-template-columns:1fr}
  .roster-bot-note{padding:0 12px 11px;gap:7px 10px}
  .roster-modal-footer{padding:11px 12px}
}
@media(max-width:380px){
  .roster-modal-heading{gap:8px;padding:12px 9px}
  .roster-modal-mark{width:34px;height:34px}
  .roster-modal-title h2{font-size:16px}
  .roster-total strong{font-size:23px}
  .roster-score-team{flex-direction:column;gap:3px;text-align:center}
  .roster-score-team span{max-width:90px;line-height:1.2}
  .roster-column-head,.roster-player-row.roster-team-row{grid-template-columns:22px minmax(0,1fr) 25px 25px 49px;gap:4px;padding-left:7px;padding-right:7px}
}
