.modWrapper.statLeaders .modContent {
  padding: 0;
}

.slvRoot {
  margin: 0 auto;
}

.slvEmpty {
  padding: 24px 12px;
  text-align: center;
  color: #777;
  font-style: italic;
}

/* One module = a titled group of subsection boards. */
.slvModule {
  margin: 0 0 28px;
}

.slvModuleTitle {
  font-size: 18px;
  font-weight: 700;
  line-height: 1.3;
  margin: 0 0 10px;
  padding: 6px 10px;
  border-bottom: 2px solid rgba(0, 0, 0, 0.12);
}

/* Division heading when a module is broken down by division (Aaron 61174): a
   secondary heading above that division's boards, between the module title and
   the boards. A full-width block so the inline-block boards wrap below it. */
.slvDivHeading {
  display: block;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.3;
  margin: 4px 0 8px;
  padding: 2px 10px;
  opacity: 0.85;
}

/* Subsection boards laid out in a responsive grid (multiple small boards per
   row on desktop, single column on phones). Each board shrink-wraps to its own
   content and sits left-aligned, so the columns pack into a tight grid instead
   of stretching edge-to-edge into blank gaps (Aaron 60975 #1/#2). */
.slvSection {
  display: inline-block;
  vertical-align: top;
  margin: 0 28px 18px 0;
}

.slvBoard {
  /* max-content (not auto) so the table shrink-wraps to its columns instead of
     expanding to fill the container and flinging the columns apart — a CSS table
     with width:auto stretches to its containing block (Aaron 60975 #1/#2).
     max-width:100% keeps a wide board from overflowing on narrow screens. */
  width: max-content;
  max-width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}

.slvBoard thead th {
  text-align: left;
  font-weight: 700;
  padding: 6px 8px;
  border-bottom: 2px solid rgba(0, 0, 0, 0.18);
  white-space: nowrap;
}

.slvBoard td {
  padding: 5px 8px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.07);
  vertical-align: middle;
}

.slvBoard tr.even td { background: rgba(0, 0, 0, 0.015); }

/* Rank + numeric stat columns: narrow, centered. */
.slvBoard th.slvNum,
.slvBoard td.slvNum,
.slvBoard th.slvStat,
.slvBoard td.slvStatVal {
  text-align: center;
  white-space: nowrap;
}

.slvBoard th.slvNum,
.slvBoard td.slvNum {
  width: 1%;
  color: #888;
}

/* Fixed stat-column width (module gear "Column width" option). Forces every stat
   column to the same px width (--slv-col, set inline on the board) so columns
   line up across stacked boards instead of each sizing to its own content
   (Aaron). Only the stat columns are pinned; rank/player/team stay auto. */
.slvBoard.slvBoardFixedCols th.slvStat,
.slvBoard.slvBoardFixedCols td.slvStatVal {
  width: var(--slv-col);
  min-width: var(--slv-col);
  max-width: var(--slv-col);
}

/* Player cell: photo + name link, always left-justified so every row's name
   starts at the same x (Aaron 60975 #2). */
.slvBoard th.slvPlayer,
.slvBoard td.slvPlayer {
  text-align: left;
}
.slvBoard td.slvPlayer { line-height: 1.2; }
/* A long subsection heading must wrap inside a bounded player column instead of
   stretching the shrink-wrapped (max-content) board off-screen (Aaron 61179). The
   data rows keep their single-line ellipsis name; only the heading wraps. */
.slvRoot:not(.slvHomeModule) .slvBoard th.slvPlayer {
  max-width: 220px;
  white-space: normal;
  overflow-wrap: break-word;
  word-break: break-word;
}

/* Match the roster page's player photo: rounded-square (6px), not a circle
   (Aaron 60975 #3 — "appear the same way they do on the roster page"), and the
   roster's 1:1.25 portrait aspect ratio (Aaron 61172 — roster pics are 200x250;
   these were 1:1). */
.slvImg {
  width: 30px;
  height: 37.5px;
  border-radius: 6px;
  object-fit: cover;
  vertical-align: middle;
  margin-right: 8px;
  background: #eee;
  flex-shrink: 0;
}

.slvImgPlaceholder {
  opacity: 0.6;
}

/* The site's responsive-image script sets an INLINE style="height:auto" (and the
   .img-responsive class) on every image, which would stretch our portrait photos.
   Inline styles only lose to !important, so re-assert the height that way to keep
   the 1:1.25 ratio. */
img.slvImg { height: 37.5px !important; }

/* "Show large images" mode (module gear option). Bigger photos (same 1:1.25
   ratio) + a touch more row breathing room so the larger image isn't cramped. */
.slvBoardLarge img.slvImg {
  width: 56px !important;
  height: 70px !important;
  margin-right: 12px;
}
.slvBoardLarge td.slvPlayer { padding-top: 7px; padding-bottom: 7px; }

/* Photo + name on one flex row so the name flexes to the leftover width and
   truncates with an ellipsis, never wrapping below the photo (Aaron 60975 #5,
   per Mike). */
.slvPlayerCell {
  display: flex;
  align-items: center;
  min-width: 0;
}
.slvName {
  flex: 0 1 auto;
  min-width: 70px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 600;
  text-decoration: none;
}

.slvName:hover { text-decoration: underline; }

/* Team abbreviation inline after the player name (ESPN-style, David 63734) — a
   muted, non-shrinking tag riding in the same flex row as the name. */
.slvTeamInline {
  margin-left: 8px;
  color: #8a8a8a;
  font-size: 0.82em;
  font-weight: 600;
  text-transform: uppercase;
  white-space: nowrap;
  flex-shrink: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Consistent column widths so stacked boards LINE UP on the full visitor page
   (David 63734): a fixed player column means the name track is the same width on
   every board, and a stat-column floor means equal-width stat columns — so boards
   with the same stats align column-for-column instead of each shrink-wrapping to
   its own content. Scoped to :not(.slvHomeModule) so a narrow home-module placement
   isn't forced to a 210px name column (it keeps auto sizing there). */
.slvRoot:not(.slvHomeModule) .slvBoard th.slvPlayer,
.slvRoot:not(.slvHomeModule) .slvBoard td.slvPlayer {
  width: 210px;
  max-width: 210px;
}
.slvRoot:not(.slvHomeModule) .slvBoard th.slvStat,
.slvRoot:not(.slvHomeModule) .slvBoard td.slvStatVal {
  min-width: 46px;
}

/* Home-page module: the board should fill the module's full width so each row's
   background spans edge-to-edge instead of shrink-wrapping to its columns and
   cutting off on the right (Aaron 64238). One board stacks full-width per row. */
.slvRoot.slvHomeModule {
  overflow-x: auto;
}
.slvRoot.slvHomeModule .slvSection {
  display: block;
  margin-right: 0;
}
.slvRoot.slvHomeModule .slvBoard {
  width: 100%;
  table-layout: fixed;
  min-width: calc(150px + (var(--slv-cols, 3) * var(--slv-col, 56px)));
}
.slvRoot.slvHomeModule .slvBoard th.slvNum {
  width: 30px;
}
.slvRoot.slvHomeModule .slvBoard th.slvStat {
  width: var(--slv-col, 56px);
}
.slvRoot.slvHomeModule .slvBoard th.slvNum,
.slvRoot.slvHomeModule .slvBoard th.slvPlayer,
.slvRoot.slvHomeModule .slvBoard th.slvStat {
  overflow: hidden;
  text-overflow: ellipsis;
}
.slvRoot.slvHomeModule .slvBoard th.slvStat,
.slvRoot.slvHomeModule .slvBoard td.slvStatVal {
  padding-left: 4px;
  padding-right: 4px;
}
.slvRoot.slvHomeModule .slvBoard td.slvStatVal {
  overflow: hidden;
  text-overflow: ellipsis;
}

/* "Force compact view" (module gear): fit as many stat columns as possible in the
   module's width. The photo and rank column are already gone by this point. */
.slvRoot.slvCompact .slvBoard {
  min-width: calc(84px + (var(--slv-cols, 3) * var(--slv-col, 34px)));
}
.slvRoot.slvCompact .slvBoard thead th {
  padding: 3px 4px;
}
.slvRoot.slvCompact .slvBoard td {
  padding: 2px 4px;
}
.slvRoot.slvCompact .slvBoard th.slvStat,
.slvRoot.slvCompact .slvBoard td.slvStatVal {
  width: var(--slv-col, 34px);
  min-width: 0;
  padding-left: 2px;
  padding-right: 2px;
}
/* The name gives up width to the stat columns before the board starts scrolling. */
.slvRoot.slvCompact .slvName {
  min-width: 50px;
}
.slvRoot.slvCompact .slvTeamInline {
  margin-left: 4px;
}
.slvRoot.slvCompact .slvModuleTitle {
  font-size: 15px;
  margin-bottom: 6px;
  padding: 3px 6px;
}
.slvRoot.slvCompact .slvDivHeading {
  font-size: 14px;
  margin: 2px 0 4px;
  padding: 1px 6px;
}
.slvRoot.slvCompact .slvSection {
  margin-bottom: 10px;
}

/* Visitor stat-leaders page: center the module titles and the boards under them
   (Aaron 64242). text-align on the module centers the inline-block boards as a
   group; the board's own cells keep their normal left/center alignment. Scoped to
   the full page so the home module (above) is unaffected. */
.slvRoot:not(.slvHomeModule) .slvModuleTitle {
  text-align: center;
}
.slvRoot:not(.slvHomeModule) .slvModule {
  text-align: center;
}
.slvRoot:not(.slvHomeModule) .slvSection {
  text-align: left;
}

/* "View complete stats" link under the main page header (Aaron 64242) — a muted,
   centered link to the full Stats page. */
.slvViewStatsLink {
  display: block;
  text-align: center;
  margin: -4px 0 16px;
  font-size: 13px;
  color: #8a8a8a;
}
/* The site theme colors links (often via an ID selector), so !important keeps this
   one muted grey — matching the img.slvImg pattern above that overrides theme styles. */
.slvViewStatsLink a {
  color: #8a8a8a !important;
  text-decoration: underline;
}
.slvViewStatsLink a:hover {
  color: #555 !important;
}

/* Phones: one board per row, edge-to-edge. */
@media (max-width: 640px) {
  .slvSection {
    display: block;
    margin-right: 0;
  }
}
