/* Shared media and type scales for game and player rows. */
:root {
  --trus-logo-small: 24px;
  --trus-logo-medium: 32px;
  --trus-logo-large: 48px;
  --trus-photo-small: 32px;
  --trus-photo-medium: 48px;
  --trus-photo-large: 72px;
  --trus-type-team: 14px;
  --trus-type-score: 16px;
  --trus-type-odds: 12px;
  --trus-weight-team: 750;
  --trus-weight-score: 800;
  --trus-weight-odds: 850;
  --trus-team-gap: 8px;
  --trus-logo-inset: 2px;
}

/* The same square canvas keeps different logo aspect ratios optically aligned. */
:is(.trus-team-logo, .team-logo, .score-team-row > img, .score-team-row > .top-odds-logo-fallback,
    .weather-team-logo, .ats-card-logo, .ats-row-name > img, .standing-team > img,
    .standing-team > .team-fallback, .matchup-mark, .trus-performer-photo,
    .golf-headshot) {
  box-sizing: border-box;
  display: grid;
  place-items: center;
  padding: var(--trus-logo-inset);
  flex: 0 0 var(--trus-logo-size, var(--trus-logo-small));
  width: var(--trus-logo-size, var(--trus-logo-small));
  height: var(--trus-logo-size, var(--trus-logo-small));
  min-width: var(--trus-logo-size, var(--trus-logo-small));
  min-height: var(--trus-logo-size, var(--trus-logo-small));
  overflow: hidden;
}

:is(.team-logo, .score-team-row > img, .weather-team-logo, .ats-card-logo,
    .ats-row-name > img, .standing-team > img, .standing-team > .team-fallback,
    .matchup-mark) > img,
.score-team-row > img,
.weather-team-logo img,
.ats-card-logo,
.ats-row-name > img,
.standing-team > img,
.matchup-mark img {
  display: block;
  box-sizing: border-box;
  width: 100% !important;
  height: 100% !important;
  object-fit: contain;
  object-position: center;
}

/* Dense standings, tables, rail summaries and compact scoreboard rows. */
:is(.pro-board .team-logo, .full-market-team .team-logo, .rail-game .team-logo,
    .future-logo, .standing-team > img, .standing-team > .team-fallback,
    .ats-row-name > img, .trus-consolidated-team .matchup-mark,
    .trus-club .matchup-mark, .conference-row .standing-team > img,
    .division-row .standing-team > img) {
  --trus-logo-size: var(--trus-logo-small);
}

/* Game cards share one medium logo box on every requested desk. */
:is(.odds-card-team-name .team-logo, .score-team-row > img,
    .score-team-row > .top-odds-logo-fallback, .weather-team-logo,
    .ats-card-logo, .pro-matchup-card .matchup-mark,
    .trus-live-board .trus-team-side .matchup-mark,
    .trus-large-league-board .trus-team-side .matchup-mark) {
  --trus-logo-size: var(--trus-logo-medium);
}

/* Header-sized team marks can opt into the common large track. */
:is(.trus-team-logo--small, [data-team-logo-size="small"]) { --trus-logo-size: var(--trus-logo-small); }
:is(.trus-team-logo--medium, [data-team-logo-size="medium"]) { --trus-logo-size: var(--trus-logo-medium); }
:is(.trus-team-logo--large, [data-team-logo-size="large"]) {
  --trus-logo-size: var(--trus-logo-large);
}

:is(.team-logo, .score-team-row > .top-odds-logo-fallback,
    .weather-team-logo, .ats-card-logo, .ats-row-name > img,
    .standing-team > .team-fallback) {
  padding: var(--trus-logo-inset);
}

/* Player photos use one square crop and shared role sizes. */
.golf-headshot {
  --trus-logo-size: var(--trus-photo-small);
  border: 1px solid var(--line, #e6e2d9);
  border-radius: 4px;
  background: var(--soft, #f3f0e8);
}
.golf-headshot img,
.trus-performer-photo img {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
  border-radius: inherit;
  object-fit: cover;
  object-position: center 25%;
  transform: none;
}
.golf-headshot:empty::before,
.trus-performer-photo > i {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  border: 0;
  border-radius: inherit;
  background: var(--soft, #f3f0e8);
  color: var(--navy, #1f3b63);
  font-style: normal;
  font-weight: 800;
}
.golf-headshot:empty::before { content: "?"; }
.trus-performer-photo { --trus-logo-size: var(--trus-photo-medium); border: 1px solid var(--line, #e6e2d9); border-radius: 4px; background: var(--soft, #f3f0e8); }
.trus-performer-photo > i { font-size: 14px; }

/* Consistent team-name, score and odds-action roles. */
:is(.team-name, .odds-card-team-name > strong, .score-team-row strong,
    .weather-team-name, .weather-team span, .ats-team-name,
    .trus-consolidated-name b, .trus-team-side .trus-club-name b,
    .matchup-team > b, .future-team strong, .pick-card .matchup strong,
    .bb-game b) {
  font-size: var(--trus-type-team);
  font-weight: var(--trus-weight-team);
}
:is(.odds-score, .score-team-row > b, .trus-final-score, .matchup-score strong,
    .trus-score) {
  font-size: var(--trus-type-score);
  font-weight: var(--trus-weight-score);
}
:is(.market-line, .bet-board-add, .odds-card-number, .future-team > b,
    .trus-team-moneyline, .bb-save, #bb-return) {
  font-size: var(--trus-type-odds);
  font-weight: var(--trus-weight-odds);
}

/* Fixed media tracks and a consistent logo-to-name gap. */
.market-team { gap: var(--trus-team-gap); }
.score-team-row { grid-template-columns: var(--trus-logo-medium) minmax(0, 1fr) 25px; gap: var(--trus-team-gap); }
.weather-team { gap: var(--trus-team-gap); }
.ats-card-teamline,.ats-row-name,.standing-team { gap: var(--trus-team-gap); }

/* Team marks retain a stable square while the first-party image fills it. */
.team-logo-local { box-sizing:border-box;position:relative;display:inline-grid;place-items:center;flex:0 0 var(--trus-logo-size,var(--trus-logo-medium));width:var(--trus-logo-size,var(--trus-logo-medium));height:var(--trus-logo-size,var(--trus-logo-medium));min-width:var(--trus-logo-size,var(--trus-logo-medium));min-height:var(--trus-logo-size,var(--trus-logo-medium));overflow:hidden;vertical-align:middle; }
.team-logo-fallback { box-sizing:border-box;display:grid;place-items:center;width:100%;height:100%;overflow:hidden;border:1px solid #b8932e;border-radius:50%;background:#fbf8f1;color:#14233b;font-size:10px;font-weight:850;line-height:1;letter-spacing:.02em; }
.team-logo-local>img,.team-logo>img,.weather-team-logo>img { position:absolute;inset:2px;z-index:1;display:block;width:calc(100% - 4px)!important;height:calc(100% - 4px)!important;object-fit:contain;object-position:center;background:transparent; }
.team-logo>img { border-radius:inherit; }
.team-logo>.team-logo-fallback,.weather-team-logo>.team-logo-fallback { position:absolute;inset:2px;width:calc(100% - 4px);height:calc(100% - 4px); }
.ats-logo-small { --trus-logo-size:var(--trus-logo-small); }
.ats-logo-medium { --trus-logo-size:var(--trus-logo-medium); }

@media (max-width: 640px) {
  .score-team-row { grid-template-columns: var(--trus-logo-medium) minmax(0, 1fr) 22px; }
  .trus-performer-photo { --trus-logo-size: var(--trus-photo-small); }
}
