/* RopeBreak.net: small additions on top of rb-bootstrap. */
sup.cite { font-size: 0.65em; margin-left: 0.15em; }
sup.cite a { text-decoration: none; }
sup.cite-missing { color: var(--bs-danger); cursor: help; }
.event-time { font-variant-numeric: tabular-nums; }
.navbar .color-mode-toggle { margin-top: 0.5rem; }
@media (min-width: 768px) { .navbar .color-mode-toggle { margin-top: 0; } }

/* Month grid */
.cal-grid { width: 100%; table-layout: fixed; border-collapse: collapse; background: var(--bs-body-bg); }
.cal-grid th { padding: .4rem .5rem; font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; color: var(--bs-secondary-color); border-bottom: 2px solid var(--bs-border-color); text-align: left; }
.cal-grid td { vertical-align: top; min-height: 7rem; height: 7rem; padding: .3rem; border: 1px solid var(--bs-border-color); }
.cal-grid td.cal-out { background: var(--bs-tertiary-bg); color: var(--bs-secondary-color); }
.cal-grid td.cal-today { box-shadow: inset 0 0 0 2px var(--bs-primary); }
.cal-day { font-size: .8rem; margin-bottom: .25rem; }
.cal-event { display: block; margin: 0 0 .3rem; padding: .25rem .35rem; border-left: 3px solid var(--bs-primary); background: var(--bs-tertiary-bg); color: var(--bs-body-color); text-decoration: none; font-size: .8rem; line-height: 1.25; border-radius: 2px; }
.cal-event:hover, .cal-event:focus { background: var(--bs-secondary-bg); }
.cal-event .cal-time { display: block; font-size: .72rem; color: var(--bs-secondary-color); }
.cal-event .cal-name { display: block; font-weight: 600; }
.cal-event .cal-net { display: block; font-size: .72rem; }
.cal-event .badge { font-size: .6rem; vertical-align: middle; }
@media (max-width: 767.98px) {
  .cal-grid thead { display: none; }
  .cal-grid, .cal-grid tbody, .cal-grid tr, .cal-grid td { display: block; width: 100%; height: auto; min-height: 0; }
  .cal-grid td { border-width: 0 0 1px; }
  .cal-grid td.cal-out { display: none; }
  .cal-grid td:not(:has(.cal-event)) .cal-day { color: var(--bs-secondary-color); }
  .cal-grid td:not(:has(.cal-event)) { padding: .15rem .3rem; }
  .cal-day::before { content: attr(data-dow) " "; }
}

/* Roster thumbnails (Wikimedia Commons photos, attributed on the wrestler page) */
.roster-thumb { width: 2.25rem; height: 2.25rem; object-fit: cover; background: var(--bs-tertiary-bg); }
.roster-thumb-empty { display: inline-block; border: 1px dashed var(--bs-border-color); }

/* ===== Photos: avatars, cards, champion strip, hero ===== */
.avatar { display: inline-block; object-fit: cover; object-position: top; background: var(--bs-tertiary-bg); border-radius: 2px; vertical-align: middle; }
.avatar-initials { display: inline-flex; align-items: center; justify-content: center; font-family: var(--bs-font-display, inherit); font-weight: 800; letter-spacing: .04em; color: var(--bs-body-bg); background: linear-gradient(135deg, var(--bs-primary) 0%, var(--bs-navy, #0b1526) 100%); }
.avatar-sm { width: 2.25rem; height: 2.25rem; font-size: .8rem; }
.avatar-md { width: 3rem; height: 3rem; font-size: 1rem; }
.avatar-face { width: 3.25rem; height: 3.25rem; font-size: 1rem; border: 2px solid var(--bs-body-bg); }
.avatar-lg { width: 6rem; height: 6rem; font-size: 1.75rem; }
.avatar-champ { width: 4.5rem; height: 4.5rem; font-size: 1.4rem; border: 2px solid var(--bs-primary); }
.avatar-card { width: 100%; height: 100%; font-size: 2.5rem; border-radius: 0; }

/* wrestler cards */
.w-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: .75rem; }
@media (min-width: 576px) { .w-grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 992px) { .w-grid { grid-template-columns: repeat(5, 1fr); gap: 1rem; } }
.w-card { position: relative; display: flex; flex-direction: column; background: var(--bs-body-bg); color: var(--bs-body-color); text-decoration: none; overflow: hidden; transition: transform .15s ease, box-shadow .15s ease; }
.w-card:hover, .w-card:focus-visible { transform: translateY(-3px); box-shadow: 0 .5rem 1.25rem rgba(0,0,0,.25); color: var(--bs-body-color); }
.w-card-photo { display: block; position: relative; height: 0; padding-top: 125%; overflow: hidden; background: var(--bs-tertiary-bg); }
.w-card-photo .avatar { position: absolute; inset: 0; width: 100%; height: 100%; display: flex; }
.w-card-body { display: flex; flex-direction: column; padding: .5rem .6rem .6rem; border-top: 3px solid var(--bs-primary); }
.w-card-name { font-weight: 700; line-height: 1.15; }
.w-card-meta { font-size: .7rem; color: var(--bs-secondary-color); text-transform: uppercase; letter-spacing: .06em; margin-top: .15rem; }
.w-card-badge { position: absolute; top: .4rem; left: .4rem; }

/* champion strip */
.champ-strip { display: flex; gap: .75rem; overflow-x: auto; scroll-snap-type: x mandatory; padding: .25rem .25rem 1rem; -webkit-overflow-scrolling: touch; background: var(--bs-navy, #0b1526); border-radius: 2px; }
.champ-card { position: relative; flex: 0 0 min(15.5rem, 82vw); scroll-snap-align: start; display: flex; gap: .75rem; align-items: center; padding: .75rem; background: rgba(255,255,255,.04); color: var(--bs-body-color); }
.champ-photos { display: flex; flex-shrink: 0; }
.champ-photos .avatar + .avatar { margin-left: -1.25rem; }
.champ-body { display: flex; flex-direction: column; min-width: 0; }
.champ-title { font-size: .68rem; text-transform: uppercase; letter-spacing: .08em; color: var(--bs-primary); line-height: 1.2; }
.champ-holder { font-weight: 700; line-height: 1.2; margin-top: .15rem; }
.champ-since { font-size: .7rem; color: var(--bs-secondary-color); margin-top: .15rem; }
@media (min-width: 992px) { .champ-strip { flex-wrap: wrap; overflow: visible; } .champ-card { flex: 1 1 15.5rem; max-width: 20rem; } }

/* promotion + team cards */
.promo-grid, .team-grid { display: grid; grid-template-columns: 1fr; gap: .75rem; }
@media (min-width: 576px) { .promo-grid, .team-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 992px) { .promo-grid { grid-template-columns: repeat(5, 1fr); } .team-grid { grid-template-columns: repeat(3, 1fr); } }
.promo-card, .team-card { display: flex; flex-direction: column; gap: .35rem; padding: 1rem; background: var(--bs-body-bg); color: var(--bs-body-color); text-decoration: none; transition: transform .15s ease; }
.promo-card:hover, .team-card:hover { transform: translateY(-3px); color: var(--bs-body-color); }
.promo-faces, .team-faces { display: flex; }
.promo-faces .avatar + .avatar, .team-faces .avatar + .avatar, .team-faces a + a .avatar { margin-left: -.9rem; }
.team-faces-lg .avatar + .avatar, .team-faces-lg a + a .avatar { margin-left: -1.5rem; }
.promo-name { font-size: 2rem; line-height: 1; margin-top: .25rem; }
.promo-meta, .team-meta { font-size: .7rem; text-transform: uppercase; letter-spacing: .06em; color: var(--bs-secondary-color); }
.team-name { font-weight: 700; font-size: 1.1rem; }

/* wrestler hero + tale of the tape */
.w-hero { padding: 2.5rem 0; }
.w-hero-grid { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 768px) { .w-hero { padding: 3.5rem 0; } .w-hero-grid { grid-template-columns: 1fr 20rem; align-items: start; } }
@media (min-width: 1200px) { .w-hero-grid { grid-template-columns: 1fr 24rem; } }
.w-hero-img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; object-position: top; display: block; background: var(--bs-tertiary-bg); }
.w-hero-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .5rem; }
.w-hero-photo { order: -1; max-width: 18rem; }
@media (min-width: 768px) { .w-hero-photo { order: 0; max-width: none; } }
.tape { display: grid; grid-template-columns: repeat(2, 1fr); gap: .5rem; margin: 0; }
@media (min-width: 576px) { .tape { grid-template-columns: repeat(3, 1fr); } }
.tape-cell { padding: .5rem .65rem; background: rgba(255,255,255,.06); border-left: 3px solid var(--bs-primary); }
.tape-cell dt { font-size: .65rem; text-transform: uppercase; letter-spacing: .08em; color: var(--bs-secondary-color); margin-bottom: .1rem; }
.tape-cell dd { margin: 0; font-weight: 600; }
.change-list .avatar { flex-shrink: 0; }
.champ-body .badge { align-self: flex-start; }
.w-hero .tape-cell dd { color: var(--bs-emphasis-color); }
.w-hero .tape-cell dt { color: var(--bs-primary); opacity: .9; }

/* news */
.news-item .news-headline { font-size: 1.05rem; line-height: 1.3; }
.min-w-0 { min-width: 0; }
.rank-list .rank { width: 1.5rem; text-align: right; color: var(--bs-primary); font-weight: 700; }

/* match results table: a table on desktop, stacked cards on phones */
.match-table th { font-size: .7rem; text-transform: uppercase; letter-spacing: .08em; color: var(--bs-secondary-color); }
@media (max-width: 767.98px) {
  .match-table thead { display: none; }
  .match-table, .match-table tbody, .match-table tr, .match-table td { display: block; width: 100%; }
  .match-table tr { padding: .5rem 0; border-bottom: 1px solid var(--bs-border-color); }
  .match-table td { border: 0; padding: .15rem .5rem; }
  .match-table td::before { content: attr(data-label); display: inline-block; width: 4.5rem; font-size: .65rem; text-transform: uppercase; letter-spacing: .08em; color: var(--bs-secondary-color); }
  .match-table td[data-label="#"] { display: none; }
}
