/* ============================================================
   Кубок Медведя — базовые стили и общие компоненты
   Опирается на tokens.css. Плоские поверхности, hairline-разделители,
   без теней и градиентов (см. DESIGN.md → Do's/Don'ts).
   ============================================================ */

/* ============================================================
   Бренд-шрифт Expressway (единая точка подключения — токен --font-display).
   Файл подключён: assets/expressway.ttf (Expressway Free). Пока в комплекте
   одно начертание — маппим его на весь диапазон весов, чтобы --fw-medium и
   т.п. не проваливались в подстановку. Oswald (Google Fonts) остаётся
   резервом в стеке --font-display на случай, если файл не загрузится.
   ============================================================ */
@font-face {
  font-family: 'Expressway';
  src: url('../assets/expressway.ttf') format('truetype');
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
}

*,
*::before,
*::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  background: var(--color-bg);
  color: var(--color-ink);
  font-family: var(--font-text);
  font-weight: var(--fw-regular);
  font-size: var(--text-body);
  line-height: var(--leading-body);
  letter-spacing: var(--tracking);
  font-feature-settings: 'clig' 1, 'liga' 1;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  /* Тонкая бумажная крапинка: мелкие приглушённые точки 0.3–0.8px, тайл 160×160.
     Едва заметная фактура, не «горох» — не оттягивает внимание. */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Ccircle cx='139.6' cy='30.9' r='0.72' fill='black' opacity='0.20'/%3E%3Ccircle cx='115.6' cy='101.4' r='0.35' fill='black' opacity='0.27'/%3E%3Ccircle cx='154.3' cy='21.0' r='0.62' fill='black' opacity='0.21'/%3E%3Ccircle cx='135.8' cy='141.0' r='0.53' fill='black' opacity='0.18'/%3E%3Ccircle cx='29.5' cy='117.0' r='0.74' fill='black' opacity='0.34'/%3E%3Ccircle cx='49.3' cy='104.8' r='0.69' fill='black' opacity='0.19'/%3E%3Ccircle cx='75.8' cy='95.2' r='0.52' fill='black' opacity='0.14'/%3E%3Ccircle cx='160.0' cy='129.2' r='0.30' fill='black' opacity='0.22'/%3E%3Ccircle cx='111.2' cy='135.4' r='0.55' fill='black' opacity='0.21'/%3E%3Ccircle cx='156.6' cy='153.7' r='0.45' fill='black' opacity='0.22'/%3E%3Ccircle cx='59.8' cy='137.2' r='0.44' fill='black' opacity='0.33'/%3E%3Ccircle cx='39.8' cy='123.7' r='0.43' fill='black' opacity='0.27'/%3E%3Ccircle cx='60.7' cy='36.0' r='0.61' fill='black' opacity='0.34'/%3E%3Ccircle cx='140.3' cy='158.2' r='0.79' fill='black' opacity='0.18'/%3E%3Ccircle cx='112.9' cy='23.6' r='0.55' fill='black' opacity='0.15'/%3E%3Ccircle cx='61.1' cy='52.4' r='0.62' fill='black' opacity='0.32'/%3E%3Ccircle cx='43.7' cy='12.3' r='0.62' fill='black' opacity='0.13'/%3E%3Ccircle cx='4.9' cy='71.7' r='0.59' fill='black' opacity='0.16'/%3E%3Ccircle cx='10.5' cy='4.0' r='0.66' fill='black' opacity='0.14'/%3E%3Ccircle cx='33.0' cy='72.2' r='0.36' fill='black' opacity='0.25'/%3E%3Ccircle cx='108.0' cy='157.0' r='0.60' fill='black' opacity='0.21'/%3E%3Ccircle cx='76.3' cy='96.7' r='0.54' fill='black' opacity='0.13'/%3E%3Ccircle cx='0.5' cy='132.8' r='0.35' fill='black' opacity='0.14'/%3E%3Ccircle cx='6.0' cy='153.0' r='0.38' fill='black' opacity='0.21'/%3E%3Ccircle cx='11.8' cy='64.1' r='0.71' fill='black' opacity='0.23'/%3E%3Ccircle cx='15.1' cy='86.6' r='0.66' fill='black' opacity='0.29'/%3E%3Ccircle cx='130.0' cy='17.9' r='0.77' fill='black' opacity='0.18'/%3E%3Ccircle cx='125.8' cy='108.7' r='0.41' fill='black' opacity='0.19'/%3E%3Ccircle cx='93.4' cy='137.1' r='0.70' fill='black' opacity='0.17'/%3E%3Ccircle cx='36.3' cy='4.1' r='0.73' fill='black' opacity='0.27'/%3E%3Ccircle cx='143.7' cy='90.3' r='0.57' fill='black' opacity='0.13'/%3E%3Ccircle cx='45.9' cy='16.8' r='0.79' fill='black' opacity='0.19'/%3E%3Ccircle cx='42.7' cy='4.3' r='0.79' fill='black' opacity='0.34'/%3E%3Ccircle cx='130.1' cy='49.3' r='0.53' fill='black' opacity='0.18'/%3E%3Ccircle cx='69.8' cy='133.3' r='0.34' fill='black' opacity='0.23'/%3E%3Ccircle cx='65.3' cy='133.3' r='0.47' fill='black' opacity='0.24'/%3E%3Ccircle cx='20.3' cy='37.7' r='0.34' fill='black' opacity='0.18'/%3E%3Ccircle cx='117.7' cy='118.6' r='0.71' fill='black' opacity='0.19'/%3E%3Ccircle cx='111.4' cy='98.9' r='0.62' fill='black' opacity='0.23'/%3E%3Ccircle cx='73.5' cy='154.3' r='0.30' fill='black' opacity='0.21'/%3E%3Ccircle cx='44.2' cy='132.1' r='0.52' fill='black' opacity='0.23'/%3E%3Ccircle cx='99.9' cy='66.5' r='0.59' fill='black' opacity='0.31'/%3E%3Ccircle cx='49.9' cy='147.3' r='0.46' fill='black' opacity='0.13'/%3E%3Ccircle cx='136.0' cy='64.0' r='0.43' fill='black' opacity='0.20'/%3E%3Ccircle cx='150.0' cy='23.9' r='0.62' fill='black' opacity='0.20'/%3E%3Ccircle cx='22.1' cy='47.4' r='0.33' fill='black' opacity='0.17'/%3E%3Ccircle cx='17.5' cy='3.1' r='0.53' fill='black' opacity='0.33'/%3E%3Ccircle cx='54.8' cy='52.4' r='0.75' fill='black' opacity='0.15'/%3E%3Ccircle cx='70.3' cy='114.0' r='0.74' fill='black' opacity='0.15'/%3E%3Ccircle cx='135.1' cy='53.7' r='0.72' fill='black' opacity='0.24'/%3E%3Ccircle cx='67.4' cy='15.7' r='0.43' fill='black' opacity='0.14'/%3E%3Ccircle cx='45.2' cy='38.2' r='0.52' fill='black' opacity='0.32'/%3E%3Ccircle cx='57.0' cy='112.1' r='0.73' fill='black' opacity='0.21'/%3E%3Ccircle cx='57.1' cy='130.3' r='0.40' fill='black' opacity='0.23'/%3E%3Ccircle cx='59.8' cy='95.8' r='0.34' fill='black' opacity='0.29'/%3E%3Ccircle cx='62.0' cy='63.6' r='0.36' fill='black' opacity='0.34'/%3E%3Ccircle cx='9.0' cy='14.0' r='0.78' fill='black' opacity='0.24'/%3E%3Ccircle cx='107.5' cy='68.9' r='0.46' fill='black' opacity='0.33'/%3E%3Ccircle cx='155.7' cy='76.4' r='0.74' fill='black' opacity='0.20'/%3E%3Ccircle cx='70.5' cy='31.6' r='0.67' fill='black' opacity='0.21'/%3E%3Ccircle cx='89.3' cy='139.8' r='0.72' fill='black' opacity='0.30'/%3E%3Ccircle cx='50.2' cy='107.5' r='0.71' fill='black' opacity='0.24'/%3E%3Ccircle cx='38.7' cy='27.2' r='0.51' fill='black' opacity='0.28'/%3E%3Ccircle cx='89.6' cy='155.6' r='0.38' fill='black' opacity='0.13'/%3E%3Ccircle cx='77.1' cy='109.3' r='0.39' fill='black' opacity='0.32'/%3E%3Ccircle cx='152.2' cy='82.4' r='0.75' fill='black' opacity='0.20'/%3E%3Ccircle cx='149.0' cy='98.4' r='0.64' fill='black' opacity='0.24'/%3E%3Ccircle cx='53.6' cy='95.2' r='0.71' fill='black' opacity='0.24'/%3E%3Ccircle cx='100.1' cy='51.1' r='0.70' fill='black' opacity='0.33'/%3E%3Ccircle cx='131.6' cy='18.3' r='0.49' fill='black' opacity='0.26'/%3E%3C/svg%3E");
  background-repeat: repeat;
}

img { max-width: 100%; display: block; }

a { color: inherit; text-decoration: none; }

/* ---------- Типографические роли (сверено с макетом) ---------- */
/* Хиро-заголовок: бренд-шрифт Expressway (подстановка Oswald), плотный/спортивный */
.display-serif {
  font-family: var(--font-display);
  font-weight: var(--fw-medium);
  color: var(--color-voltage-blue);
  line-height: var(--leading-tight);
  letter-spacing: var(--tracking);
  text-transform: uppercase;
}
/* Крупный серифный заголовок сущности (Playfair Regular) */
.h-serif {
  font-family: var(--font-serif);
  font-weight: var(--fw-regular);
  color: var(--color-voltage-blue);
  line-height: var(--leading-heading);
  letter-spacing: var(--tracking);
}
/* Заголовок секции/блока — пожирнее (по просьбе заказчика): бренд-шрифт,
   вес 600, uppercase. Раньше был Inter Light 38. */
.section-h,
.sub {
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: var(--text-heading-sm);
  color: var(--color-voltage-blue);
  line-height: var(--leading-snug);
  letter-spacing: var(--tracking);
  text-transform: uppercase;
  margin: 0 0 var(--sp-20);
}
.section-head {
  display: flex;
  align-items: center;
  gap: var(--sp-20);
  margin-bottom: var(--sp-20);
  flex-wrap: wrap;
}
.section-head .section-h { margin: 0; margin-right: auto; }

.kicker {
  font-weight: var(--fw-light);
  font-size: var(--text-body-sm);
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--color-voltage-blue);
}
.kicker--hot { color: var(--color-terracotta); }

.link {
  color: var(--color-voltage-blue);
  font-weight: var(--fw-light);
  text-transform: uppercase;
  font-size: var(--text-body-sm);
  letter-spacing: 0.02em;
  transition: opacity 220ms ease-out;
}
.link:hover { opacity: 0.6; }

.muted { color: var(--ink-muted); }

/* ---------- Раскладка ---------- */
main { flex: 1 0 auto; }   /* прижимает подвал к низу на коротких страницах */
.page {
  max-width: var(--frame-max);
  margin: 0 auto;
  padding: 0 var(--page-pad-x);
  width: 100%;
}
.section { padding: var(--sp-80) 0; }
.section--tight { padding: var(--sp-43) 0; }

.row-between {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--sp-20);
}

/* ============================================================
   Шапка
   ============================================================ */
.site-header {
  background: var(--color-header-bg);
  color: var(--color-header-fg);
  border-bottom: var(--hairline) solid var(--color-header-bg);
}
.site-header__inner {
  max-width: var(--frame-max);
  margin: 0 auto;
  padding: var(--sp-29) var(--page-pad-x);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-20);
}
.brand {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--font-display);
  font-weight: var(--fw-medium);
  font-size: 24px;
  text-transform: uppercase;
  letter-spacing: 0.01em;
  color: var(--color-header-fg);
  white-space: nowrap;
}
.brand__logo { height: 52px; width: auto; display: block; flex: none; }
@media (max-width: 860px) { .brand__logo { height: 40px; } }
.nav {
  display: flex;
  gap: var(--sp-43);
  flex: 1;
  justify-content: center;
}
.nav a {
  color: var(--color-header-fg);
  font-weight: var(--fw-light);
  text-transform: uppercase;
  font-size: var(--text-body-sm);
  letter-spacing: 0.02em;
  transition: opacity 220ms ease-out;
}
.nav a:hover,
.nav a[aria-current='page'] { opacity: 0.7; }

.lang {
  display: flex;
  gap: 6px;
  align-items: center;
  font-size: var(--text-body-sm);
  color: var(--color-header-fg);
  font-weight: var(--fw-medium);
}
.lang button {
  background: none; border: none; padding: 0; cursor: pointer;
  color: rgba(255, 248, 241, 0.5); font: inherit; letter-spacing: inherit;
  transition: color 200ms ease-out;
}
.lang button[aria-pressed='true'] { color: var(--color-header-fg); }
.lang .sep { color: rgba(255, 248, 241, 0.5); }

.burger {
  display: none;
  background: none; border: none; cursor: pointer;
  width: 28px; height: 20px; padding: 0;
  position: relative;
}
.burger span {
  position: absolute; left: 0; height: 1.5px; width: 100%;
  background: var(--color-header-fg);
  transition: transform 240ms ease-out, opacity 200ms ease-out;
}
.burger span:nth-child(1) { top: 0; }
.burger span:nth-child(2) { top: 9px; }
.burger span:nth-child(3) { top: 18px; }
.burger[aria-expanded='true'] span:nth-child(1) { transform: translateY(9px) rotate(45deg); }
.burger[aria-expanded='true'] span:nth-child(2) { opacity: 0; }
.burger[aria-expanded='true'] span:nth-child(3) { transform: translateY(-9px) rotate(-45deg); }

/* Мобильное выпадающее меню */
.mobile-menu {
  display: none;
  flex-direction: column;
  gap: var(--sp-20);
  padding: 0 var(--page-pad-x-mobile);
  max-height: 0;
  overflow: hidden;
  border-bottom: var(--hairline) solid transparent;
  transition: max-height 260ms ease-out, padding 260ms ease-out;
}
.mobile-menu.open {
  max-height: 300px;
  padding: var(--sp-20) var(--page-pad-x-mobile) var(--sp-29);
  border-bottom-color: var(--color-ash);
}
.mobile-menu.open { border-bottom-color: rgba(255, 248, 241, 0.25); }
.mobile-menu a {
  color: var(--color-header-fg);
  text-transform: uppercase;
  font-weight: var(--fw-light);
  font-size: var(--text-body-lg);
  letter-spacing: 0.02em;
}

@media (max-width: 860px) {
  .nav { display: none; }
  .burger { display: block; }
  .mobile-menu { display: flex; }
  .brand { font-size: var(--text-body-lg); }
}

/* ============================================================
   Подвал
   ============================================================ */
.site-footer {
  border-top: var(--hairline) solid var(--color-ash);
  margin-top: var(--sp-80);
}
.site-footer__inner {
  max-width: var(--frame-max);
  margin: 0 auto;
  padding: var(--sp-29) var(--page-pad-x);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-20);
}
.site-footer .brand { font-size: var(--text-body-lg); color: var(--color-voltage-blue); }

/* ============================================================
   Кнопки / пилюли
   ============================================================ */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border-radius: var(--radius-pill);
  border: var(--hairline) solid var(--color-voltage-blue);
  background: transparent;
  color: var(--color-voltage-blue);
  font-family: var(--font-text);
  font-weight: var(--fw-light);
  font-size: var(--text-body-sm);
  letter-spacing: 0.02em;
  text-transform: uppercase;
  padding: var(--sp-14) var(--sp-43);
  cursor: pointer;
  transition: background-color 220ms ease-out, color 220ms ease-out;
}
.btn:hover { background: var(--blue-soft); }
.btn--terra {
  border-color: var(--color-terracotta);
  color: var(--color-terracotta);
}
.btn--terra:hover { background: rgba(198, 93, 46, 0.08); }
.btn--sm { padding: var(--sp-11) var(--sp-29); }
.btn--ghost { border-color: var(--color-ash); color: var(--ink-muted); }
.btn--ghost:hover { background: rgba(0,0,0,0.03); }

/* Статус-пилюля (ЗАВЕРШЁН / LIVE / ПРЕДСТОЯЩИЙ / ТЕКУЩИЙ …) */
.pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border-radius: var(--radius-pill);
  border: var(--hairline) solid var(--color-voltage-blue);
  color: var(--color-voltage-blue);
  font-weight: var(--fw-light);
  font-size: 13px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 6px var(--sp-14);
  white-space: nowrap;
}
.pill--live,
.pill--now,
.pill--current {
  border-color: var(--color-terracotta);
  color: var(--color-terracotta);
}
.pill--live::before {
  content: '';
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--color-terracotta);
}
.pill--muted { border-color: var(--color-ash); color: var(--ink-muted); }

/* Лейбл-пилюля «Турнир: …» */
.tag-label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border-radius: var(--radius-pill);
  border: var(--hairline) solid var(--color-ash);
  padding: 6px var(--sp-14);
  font-size: var(--text-body-sm);
}
.tag-label b { font-weight: var(--fw-light); color: var(--color-voltage-blue); }

/* ============================================================
   Общая карточка / hairline-разделители
   ============================================================ */
.card {
  border: var(--hairline) solid var(--color-ash);
  background: var(--color-cream);
  padding: var(--sp-20);
}
.divider { border: 0; border-top: var(--hairline) solid var(--color-ash); margin: 0; }

/* ---------- Строка матча (универсальная) ----------
   Раскладка: [мета слева] [команды+счёт по центру] [статус справа]. */
.match-row {
  display: grid;
  grid-template-columns: 230px 1fr 150px;
  align-items: center;
  gap: var(--sp-29);
  padding: var(--sp-20) 0;
  border-top: var(--hairline) solid var(--color-ash);
  transition: background-color 200ms ease-out;
}
.match-row:hover { background: rgba(0, 110, 255, 0.03); }

/* Левый мета-блок (2–3 строки) */
.match-row__meta { display: flex; flex-direction: column; line-height: 1.35; }
.match-row__l1 { font-size: var(--text-body-sm); color: var(--color-ink); }
.match-row__l2, .match-row__l3 { font-size: var(--text-body-sm); color: var(--ink-muted); }
.match-row--live .match-row__l1 { color: var(--color-terracotta); }

/* Центр: команды через двоеточие/счёт */
.match-row__center {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: var(--sp-20);
}
.match-row__home { text-align: right; font-weight: var(--fw-medium); font-size: var(--text-body-lg); }
.match-row__away { text-align: left; font-weight: var(--fw-medium); font-size: var(--text-body-lg); }
.match-row__score {
  color: var(--color-voltage-blue);
  font-weight: var(--fw-medium);
  font-size: var(--text-subheading);
  white-space: nowrap;
  text-align: center;
}

/* Статус справа */
.match-row__status { text-align: right; }

@media (max-width: 860px) {
  .match-row {
    grid-template-columns: 1fr auto;
    grid-template-areas:
      'meta   status'
      'center center';
    gap: var(--sp-11) var(--sp-14);
  }
  .match-row__meta { grid-area: meta; }
  .match-row__status { grid-area: status; }
  .match-row__center { grid-area: center; }
}

/* ---------- Турнирная таблица ---------- */
.standings { width: 100%; }
.standings__wrap { overflow-x: auto; }
.standings table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--text-body-sm);
}
.standings th {
  text-align: right;
  font-weight: var(--fw-light);
  text-transform: uppercase;
  font-size: 13px;
  letter-spacing: 0.04em;
  color: var(--ink-muted);
  padding: var(--sp-11) var(--sp-11);
  border-bottom: var(--hairline) solid var(--color-ash);
}
.standings th:nth-child(1) { text-align: left; width: 40px; }
.standings th:nth-child(2) { text-align: left; }
.standings td {
  padding: var(--sp-14) var(--sp-11);
  border-bottom: var(--hairline) solid var(--color-ash);
  text-align: right;
  white-space: nowrap;
}
.standings td:nth-child(1) { text-align: left; color: var(--ink-muted); }
.standings td:nth-child(2) { text-align: left; }
.standings tr { transition: background-color 200ms ease-out; }
.standings tbody tr:hover { background: rgba(0, 110, 255, 0.03); }
.standings a { color: var(--color-ink); }
.standings a:hover { color: var(--color-voltage-blue); }
.standings td b { font-weight: var(--fw-medium); }

/* Две групповые таблицы 2 этапа: рядом на десктопе, стеком на мобильном */
.group-tables {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-43);
}
.group-table__title {
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: var(--text-subheading);
  color: var(--color-voltage-blue);
  text-transform: uppercase;
  margin: 0 0 var(--sp-14);
}
@media (max-width: 860px) {
  .group-tables { grid-template-columns: 1fr; gap: var(--sp-43); }
}

/* ============================================================
   Табы (1 этап / 2 этап, фильтры статуса)
   ============================================================ */
.tabs {
  display: flex;
  gap: var(--sp-29);
  border-bottom: var(--hairline) solid var(--color-ash);
  flex-wrap: wrap;
}
.tabs button, .tabs a {
  background: none; border: none; cursor: pointer;
  font: inherit; font-weight: var(--fw-light);
  text-transform: uppercase; font-size: var(--text-body-sm);
  letter-spacing: 0.02em;
  color: var(--ink-muted);
  padding: 0 0 var(--sp-14);
  position: relative;
  transition: color 220ms ease-out;
}
.tabs button::after, .tabs a::after {
  content: '';
  position: absolute; left: 0; right: 0; bottom: -1.5px; height: 1.5px;
  background: var(--color-voltage-blue);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 240ms ease-out;
}
.tabs button[aria-selected='true'], .tabs a[aria-selected='true'] { color: var(--color-voltage-blue); }
.tabs button[aria-selected='true']::after, .tabs a[aria-selected='true']::after { transform: scaleX(1); }
.tabs button:hover, .tabs a:hover { color: var(--color-voltage-blue); }

/* Фильтр по месяцам (календарь) — выровнен по ширине */
.tabs--justify { justify-content: space-between; gap: var(--sp-14); }

/* Вкладки этапов турнира: по центру, крупнее, активная — терракотовая */
.tabs--center { justify-content: center; gap: var(--sp-43); }
.tabs--lg button, .tabs--lg a { font-size: var(--text-body-lg); padding-bottom: var(--sp-14); }
.tabs--lg button[aria-selected='true'], .tabs--lg a[aria-selected='true'] { color: var(--color-terracotta); }
.tabs--lg button[aria-selected='true']::after, .tabs--lg a[aria-selected='true']::after { background: var(--color-terracotta); }
.tabs--lg button:hover, .tabs--lg a:hover { color: var(--color-terracotta); }

/* Панель таба */
.tabpanel[hidden] { display: none; }

/* ============================================================
   Фильтры-пилюли (календарь, списки)
   ============================================================ */
.filters {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-14) var(--sp-29);
  align-items: center;
}
/* Пилюля-фильтр: «Сезон: 2025/26» — лейбл серый Light, значение терракотовое
   Medium, без стрелки; рамка плотно обнимает содержимое (с внутр. отступом). */
.filter {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: var(--text-body-sm);
  border: var(--hairline) solid var(--color-ash);
  border-radius: var(--radius-pill);
  padding: var(--sp-11) var(--sp-20);
  transition: border-color 200ms ease-out;
}
.filter:hover { border-color: var(--color-voltage-blue); }
.filter > span { color: var(--ink-muted); font-weight: var(--fw-light); }
.filter select {
  font: inherit; font-size: var(--text-body-sm);
  font-weight: var(--fw-medium);
  letter-spacing: var(--tracking);
  border: 0;
  background: transparent;
  color: var(--color-terracotta);   /* выбранный параметр — терракотовый */
  padding: 0;                        /* рамка обнимает значение */
  cursor: pointer;
  /* убрать нативную стрелку выпадающего списка */
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  /* собственная лёгкая стрелка убрана — по макету её нет */
}
.filter select:focus { outline: none; }
.filter select option { color: var(--color-ink); }

/* ============================================================
   Монограмма-герб команды (2 буквы; либо PNG-лого)
   ============================================================ */
.monogram {
  width: 64px; height: 64px;
  border: var(--hairline) solid var(--color-ash);
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-serif);
  font-weight: var(--fw-light);
  font-size: 22px;
  color: var(--color-voltage-blue);
  flex: none;
  overflow: hidden;
}
.monogram img { width: 100%; height: 100%; object-fit: contain; }
.monogram--lg { width: 96px; height: 96px; font-size: 32px; }

/* Когда монограмма содержит логотип-картинку — без рамки и подложки,
   сама картинка чуть крупнее (заполняет контейнер). Буквенная монограмма
   (без img) по-прежнему с рамкой/скруглением. */
.monogram:has(img) {
  border: 0;
  background: transparent;
  border-radius: 0;
  overflow: visible;
}
.monogram:has(img) img { transform: scale(1.18); }

/* ============================================================
   Сетка карточек команд (вертикальные карточки, как в макете)
   ============================================================ */
.team-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-29);
}
.team-card {
  display: flex;
  flex-direction: column;
  border: var(--hairline) solid var(--color-ash);
  padding: var(--sp-29);
  min-height: 210px;
  transition: border-color 220ms ease-out;
}
.team-card:hover { border-color: var(--color-voltage-blue); }
.team-card__name {
  font-size: var(--text-body-lg);
  margin-top: var(--sp-20);
}
.team-card__uni { font-size: var(--text-body-sm); color: var(--ink-muted); margin-top: 4px; }
.team-card__divider { border: 0; border-top: var(--hairline) solid var(--color-ash); margin: var(--sp-20) 0 var(--sp-14); }
.team-card__stats { display: flex; gap: var(--sp-43); margin-top: auto; }
.team-card__stats .stat .label {
  display: block; font-size: 13px; letter-spacing: 0.04em; text-transform: uppercase;
  color: var(--color-voltage-blue); margin-bottom: 2px;
}
.team-card__stats .stat .value { font-size: var(--text-subheading); font-weight: var(--fw-regular); }

/* Квадратная монограмма-герб со скруглением и синей рамкой (как в макете) */
.monogram--square {
  width: 48px; height: 48px;
  border-radius: 8px;
  border: var(--hairline) solid var(--color-voltage-blue);
  align-self: flex-start;
}

@media (max-width: 860px) {
  /* Мобильные карточки команд — горизонтальные строки (как в макете):
     монограмма | название | место/очки справа. */
  .team-grid { grid-template-columns: 1fr; gap: var(--sp-11); }
  .team-card {
    min-height: 0;
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: var(--sp-14);
    padding: var(--sp-14);
  }
  .team-card__name { margin-top: 0; }
  .team-card__uni { display: none; }               /* на мобильном вуз скрыт */
  .team-card__divider { display: none; }
  .team-card__stats {
    margin-top: 0;
    flex-direction: column;
    align-items: flex-end;
    gap: 0;
    text-align: right;
  }
  .team-card__stats .stat { display: flex; align-items: baseline; gap: 6px; }
  .team-card__stats .stat .label { margin-bottom: 0; font-size: 11px; }
  .team-card__stats .stat:first-child .value { font-size: var(--text-body-sm); color: var(--ink-muted); }
  .team-card__stats .stat:last-child .value { font-size: var(--text-subheading); color: var(--color-voltage-blue); }
}

/* ============================================================
   Утилиты
   ============================================================ */
.stack { display: flex; flex-direction: column; }
.stack--20 > * + * { margin-top: var(--sp-20); }
.stack--14 > * + * { margin-top: var(--sp-14); }
.center { text-align: center; }
.nowrap { white-space: nowrap; }
.back-link {
  display: inline-block;
  color: var(--color-voltage-blue);
  font-size: var(--text-body-sm);
  text-transform: uppercase;
  letter-spacing: 0.02em;
  font-weight: var(--fw-light);
  margin-bottom: var(--sp-29);
  transition: opacity 200ms ease-out;
}
.back-link:hover { opacity: 0.6; }

.two-cta {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-43);
  text-align: center;
  padding: var(--sp-80) 0;
}
.two-cta__col { display: flex; flex-direction: column; align-items: center; gap: var(--sp-20); }
.two-cta__title { font-family: var(--font-display); font-weight: var(--fw-bold); font-size: var(--text-heading-sm); color: var(--color-voltage-blue); text-transform: uppercase; }
@media (max-width: 860px) {
  .two-cta { grid-template-columns: 1fr; gap: var(--sp-43); }
}

/* Пустое состояние / загрузка */
.empty { color: var(--ink-muted); padding: var(--sp-29) 0; }

/* ============================================================
   Календарь: группа по дате (крупная цифра дня + день недели)
   ============================================================ */
.cal-day {
  display: grid;
  grid-template-columns: 120px 1fr;
  gap: var(--sp-29);
  padding: var(--sp-29) 0;
  border-top: var(--hairline) solid var(--color-ash);
}
.cal-day__head { line-height: 1; }
.cal-day__num {
  font-family: var(--font-serif);
  font-weight: var(--fw-regular);
  font-size: 96px;                 /* крупная цифра дня, как в макете */
  color: var(--color-voltage-blue);
  display: block;
  line-height: 1;
}
.cal-day__wd {
  font-size: var(--text-body-sm);
  font-weight: var(--fw-medium);   /* «февраля, вт» — Medium, строчными */
  letter-spacing: 0.01em;
  color: var(--ink-muted);
  margin-top: 6px;
  display: block;
}
.cal-day__matches .match-row:first-child { border-top: 0; }

@media (max-width: 860px) {
  .cal-day { grid-template-columns: 1fr; gap: var(--sp-14); }
  .cal-day__head { display: flex; align-items: baseline; gap: var(--sp-14); }
  .cal-day__num { font-size: 40px; }
  /* Мобильный вариант фильтров — без «Турнир» (по макету Figma) */
  .filter--tournament { display: none; }
}

/* ============================================================
   Протокол матча
   ============================================================ */
.match-hero { padding: var(--sp-80) 0; }
.match-hero__meta {
  display: flex;
  justify-content: space-between;
  gap: var(--sp-20);
  font-size: var(--text-body-sm);
  font-weight: var(--fw-medium);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  margin-bottom: var(--sp-80);
}
.match-hero__meta .l { color: var(--color-voltage-blue); }
.match-hero__meta .c { color: var(--color-terracotta); }
.match-hero__meta .r { color: var(--color-voltage-blue); text-align: right; }
.match-hero__score {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: var(--sp-43);
  text-align: center;
}
.match-hero__team {
  font-family: var(--font-serif);
  font-weight: var(--fw-regular);
  font-size: var(--text-heading-lg);
  color: var(--color-voltage-blue);
  line-height: var(--leading-tight);
}
.match-hero__team--home { text-align: right; }
.match-hero__team--away { text-align: left; }
.match-hero__num {
  font-family: var(--font-serif);
  font-weight: var(--fw-regular);
  font-size: var(--text-display);
  color: var(--color-voltage-blue);
  white-space: nowrap;
  line-height: 1;
}
.match-hero__periods { text-align: center; margin-top: var(--sp-20); color: var(--ink-muted); font-size: var(--text-body-lg); font-weight: var(--fw-light); }
.match-hero__status { text-align: center; margin-top: var(--sp-11); }
.match-hero__status .hot { color: var(--color-terracotta); text-transform: uppercase; font-size: var(--text-body-sm); font-weight: var(--fw-medium); letter-spacing: 0.04em; }

@media (max-width: 860px) {
  .match-hero { padding: var(--sp-43) 0; }
  .match-hero__meta { flex-direction: column; gap: 4px; margin-bottom: var(--sp-43); }
  .match-hero__meta .r, .match-hero__meta .c { text-align: left; }
  .match-hero__score { grid-template-columns: 1fr; gap: var(--sp-14); }
  .match-hero__team, .match-hero__team--home, .match-hero__team--away { text-align: center; font-size: var(--text-heading-sm); }
  .match-hero__num { font-size: var(--text-heading); }
}

/* ============================================================
   Страница игрока: крупная фоновая цифра-декор
   ============================================================ */
.player {
  position: relative;
  padding: var(--sp-43) 0 var(--sp-80);
  overflow: hidden;
}
/* Крупная фоновая цифра — по вертикали по центру с блоком инфо */
.player__ghost {
  position: absolute;
  top: 50%; right: -0.02em;
  transform: translateY(-50%);
  font-family: var(--font-serif);
  font-weight: var(--fw-medium);
  font-size: 340px;
  line-height: 1;
  color: var(--ghost-number);
  pointer-events: none;
  user-select: none;
  z-index: 0;
}
/* Фото и информация — по вертикали по центру */
.player__inner { position: relative; z-index: 1; display: flex; gap: var(--sp-43); align-items: center; }
.player__photo {
  width: 180px; height: 180px; flex: none;
  border: var(--hairline) solid var(--color-voltage-blue);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-serif); color: var(--color-voltage-blue);
  font-size: var(--text-subheading);
}
.player__name {
  font-family: var(--font-serif);
  font-weight: var(--fw-regular);
  font-size: var(--text-heading);
  color: var(--color-voltage-blue);
  margin: var(--sp-11) 0 var(--sp-29);
}
/* Амплуа — крупнее и Medium */
.player__body .kicker--hot {
  font-size: var(--text-body-lg);
  font-weight: var(--fw-medium);
}
/* Параметры игрока — в одну строку (как в макете) */
.player__bio {
  display: flex;
  gap: var(--sp-43);
  flex-wrap: wrap;
}
.bio-item .label { display: block; font-size: var(--text-body-sm); font-weight: var(--fw-medium); letter-spacing: 0.04em; text-transform: uppercase; color: var(--color-voltage-blue); margin-bottom: 4px; }
.bio-item .value { font-size: var(--text-body-lg); font-weight: var(--fw-light); }

@media (max-width: 860px) {
  .player__ghost { font-size: 200px; opacity: 0.7; }
  .player__inner { flex-direction: column; gap: var(--sp-29); align-items: flex-start; }
  .player__photo { width: 140px; height: 140px; }
  .player__name { font-size: var(--text-heading-sm); }
  .player__bio { gap: var(--sp-29); }
}

/* ============================================================
   Заголовок команды
   ============================================================ */
.team-head { display: flex; align-items: center; gap: var(--sp-29); flex-wrap: wrap; }
.team-head__titles h1 {
  font-family: var(--font-serif);
  font-weight: var(--fw-light);
  font-size: var(--text-heading);
  color: var(--color-voltage-blue);
  margin: 0;
  line-height: var(--leading-heading);
}
.team-head__uni { color: var(--ink-muted); font-size: var(--text-body); }
.team-stats { display: flex; gap: var(--sp-43); margin-left: auto; }
.team-stats .stat .label { display: block; font-size: 13px; letter-spacing: 0.04em; text-transform: uppercase; color: var(--color-voltage-blue); }
.team-stats .stat .value { font-size: var(--text-heading-sm); color: var(--color-ink); }
@media (max-width: 860px) {
  .team-stats { margin-left: 0; gap: var(--sp-29); }
  .team-head__titles h1 { font-size: var(--text-heading-sm); }
}

/* Крупная квадратная монограмма (заголовок команды) */
.monogram--square-lg { width: 72px; height: 72px; font-size: 24px; border-radius: 10px; }

/* ---------- Состав команды (таблица) ---------- */
.roster-table { width: 100%; font-size: var(--text-body); }
.roster-table__head, .roster-table__row {
  display: grid;
  grid-template-columns: 56px 1fr auto;
  align-items: center;
  gap: var(--sp-14);
  padding: var(--sp-14) 0;
}
.roster-table__head {
  border-bottom: var(--hairline) solid var(--color-ash);
  font-size: var(--text-body-sm); font-weight: var(--fw-medium);
  letter-spacing: 0.04em; text-transform: uppercase;
  color: var(--color-voltage-blue);      /* заголовки, включая «Амплуа» — голубые */
}
.roster-table__row {
  border-bottom: var(--hairline) solid var(--color-ash);
  transition: background-color 200ms ease-out;
}
.roster-table__row:hover { background: rgba(0, 110, 255, 0.03); }
.roster-table__num { color: var(--color-voltage-blue); }        /* номера — голубые */
.roster-table__name { color: var(--color-ink); }
.roster-table__row:hover .roster-table__name { color: var(--color-voltage-blue); }
.roster-table__pos { color: var(--color-voltage-blue); text-align: right; } /* амплуа — чёрное, справа */

/* Строка результата на странице команды (В/П + соперник + счёт + дата) */
.result-row {
  display: grid;
  grid-template-columns: 40px 1fr auto 100px;
  align-items: center;
  gap: var(--sp-14);
  padding: var(--sp-20) 0;
  border-top: var(--hairline) solid var(--color-ash);
  transition: background-color 200ms ease-out;
  font-size: var(--text-body);
}
.result-row:hover { background: rgba(0, 110, 255, 0.03); }
.result-row__oc { font-weight: var(--fw-medium); color: var(--color-voltage-blue); } /* статус — голубой */
.result-row__score { color: var(--color-voltage-blue); white-space: nowrap; }         /* счёт — голубой */
.result-row__date { text-align: right; color: var(--color-ink); font-size: var(--text-body-sm); } /* дата — чёрная */

/* ============================================================
   Крупный заголовок страницы (Турниры / Команды) — Playfair
   ============================================================ */
.page-title {
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: var(--text-heading-lg);
  color: var(--color-voltage-blue);
  line-height: var(--leading-tight);
  letter-spacing: var(--tracking);
  text-transform: uppercase;
  margin: var(--sp-20) 0 var(--sp-29);
}

/* ============================================================
   Фильтр-пилюли (Турниры: статус, Команды: сезон)
   Активная кнопка — залита синим; счётчик «Найдено» терракотовый.
   ============================================================ */
.pill-filter {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-20);
  flex-wrap: wrap;
  margin-bottom: var(--sp-43);
}
.pill-filter__group { display: flex; gap: var(--sp-14); flex-wrap: wrap; }
.pill-btn {
  font: inherit;
  font-size: var(--text-body-sm);
  font-weight: var(--fw-light);
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--color-voltage-blue);
  background: transparent;
  border: var(--hairline) solid var(--color-voltage-blue);
  border-radius: var(--radius-pill);
  padding: var(--sp-11) var(--sp-29);
  cursor: pointer;
  transition: background-color 220ms ease-out, color 220ms ease-out, border-color 220ms ease-out;
}
.pill-btn:hover { background: var(--blue-soft); }
.pill-btn.is-active {
  background: var(--color-voltage-blue);
  color: var(--color-cream);
  border-color: var(--color-voltage-blue);
}
.found-count { color: var(--color-terracotta); font-size: var(--text-body-sm); margin: 0; }

/* Полные/короткие подписи пилюль (мобильный — короткие) */
.pill-btn .t-short { display: none; }

/* Заголовок страницы + счётчик справа (Календарь) */
.page-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--sp-20);
  flex-wrap: wrap;
  margin-bottom: var(--sp-29);
}

/* ============================================================
   Список турниров: карточки сезонов (2 колонки)
   ============================================================ */
.season-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-29);
  align-items: start; /* карточки «обнимают» контент, не тянутся до высоты соседа */
}
.season-card {
  display: flex;
  flex-direction: column;
  border: var(--hairline) solid var(--color-ash);
  padding: var(--sp-29);
}
.season-card > .pill { align-self: flex-start; }
.season-card__title {
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: var(--text-heading-sm);
  color: var(--color-voltage-blue);
  text-transform: uppercase;
  margin: var(--sp-14) 0 var(--sp-11);
}
.season-card__period { color: var(--ink-muted); font-size: var(--text-body-sm); margin-bottom: var(--sp-20); }
.season-card__counts { display: flex; gap: var(--sp-43); }
.season-card__counts .count__label {
  display: block; font-size: 13px; letter-spacing: 0.04em; text-transform: uppercase;
  color: var(--color-voltage-blue); margin-bottom: 2px;
}
.season-card__counts .count__value { font-size: var(--text-subheading); }
.season-card__tournaments { margin-top: var(--sp-29); border-top: var(--hairline) solid var(--color-ash); padding-top: var(--sp-20); }
.season-card__tlabel {
  display: block; font-size: 13px; letter-spacing: 0.04em; text-transform: uppercase;
  color: var(--color-voltage-blue); margin-bottom: var(--sp-14);
}
.tournament-line {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--sp-20);
  padding: var(--sp-11) 0;
  transition: color 200ms ease-out;
}
.tournament-line__name { color: var(--color-voltage-blue); display: block; }
.tournament-line__meta { color: var(--ink-muted); font-size: var(--text-body-sm); }
.tournament-line:hover .tournament-line__name { opacity: 0.65; }
.tournament-line__status { color: var(--ink-muted); font-size: var(--text-body-sm); white-space: nowrap; }

@media (max-width: 860px) {
  .season-grid { grid-template-columns: 1fr; gap: var(--sp-14); }
  .pill-btn--upcoming { display: none; } /* мобильный: 3 пилюли, по макету */
  .pill-btn .t-full { display: none; }
  .pill-btn .t-short { display: inline; }
}

/* ============================================================
   Ребренд: индикатор раздела в шапке
   ============================================================ */
.section-indicator {
  max-width: var(--frame-max);
  margin: 0 auto;
  padding: var(--sp-11) var(--page-pad-x);
  display: flex;
  align-items: baseline;
  gap: var(--sp-14);
  border-top: var(--hairline) solid rgba(255, 248, 241, 0.18);
  flex-wrap: wrap;
}
.section-indicator__label {
  font-size: 13px; letter-spacing: 0.04em; text-transform: uppercase;
  color: rgba(255, 248, 241, 0.6); font-weight: var(--fw-light);
}
.section-indicator__name {
  font-family: var(--font-display);
  font-weight: var(--fw-medium);
  text-transform: uppercase;
  letter-spacing: 0.01em;
  color: var(--color-header-fg);
  font-size: var(--text-body);
}
.section-indicator__switch {
  margin-left: auto;
  color: var(--color-terracotta);
  font-size: var(--text-body-sm);
  text-transform: uppercase;
  letter-spacing: 0.02em;
  font-weight: var(--fw-medium);
  transition: opacity 200ms ease-out;
}
.section-indicator__switch:hover { opacity: 0.75; }

/* ============================================================
   Ребренд: плашки выбора раздела (главная)
   ============================================================ */
.section-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: var(--sp-29);
  margin-top: var(--sp-29);
}
.section-plate {
  display: flex;
  flex-direction: column;
  gap: var(--sp-14);
  border: var(--hairline) solid var(--color-voltage-blue);
  padding: var(--sp-43);
  min-height: 200px;
  transition: background-color 220ms ease-out, transform 220ms ease-out;
}
.section-plate:hover { background: var(--blue-soft); }
.section-plate__name {
  font-family: var(--font-display);
  font-weight: var(--fw-medium);
  text-transform: uppercase;
  letter-spacing: 0.01em;
  font-size: var(--text-heading-sm);
  color: var(--color-voltage-blue);
  line-height: var(--leading-tight);
}
.section-plate__tagline { color: var(--ink-muted); font-size: var(--text-body); }
.section-plate__cta {
  margin-top: auto;
  color: var(--color-terracotta);
  text-transform: uppercase;
  letter-spacing: 0.02em;
  font-size: var(--text-body-sm);
  font-weight: var(--fw-medium);
}

/* ============================================================
   Ребренд: новости (лента, список, карточка, страница)
   ============================================================ */
.news-list { display: grid; gap: var(--sp-29); }
.news-card {
  display: grid;
  grid-template-columns: 320px 1fr;
  gap: var(--sp-29);
  border: var(--hairline) solid var(--color-ash);
  transition: border-color 220ms ease-out;
  overflow: hidden;
}
.news-card:hover { border-color: var(--color-voltage-blue); }
.news-card__media {
  position: relative;
  background: var(--blue-soft);
  min-height: 200px;
}
.news-card__media img { width: 100%; height: 100%; object-fit: cover; }
/* Пустая подложка новости — просто мягкий фон, без иконки-медведя. */
.news-card__body {
  display: flex;
  flex-direction: column;
  gap: var(--sp-11);
  padding: var(--sp-29) var(--sp-29) var(--sp-29) 0;
}
.news-card__meta { display: flex; flex-wrap: wrap; gap: var(--sp-14); align-items: center; }
.news-card__date { font-size: var(--text-body-sm); color: var(--ink-muted); }
.news-card__tag {
  font-size: 13px; letter-spacing: 0.04em; text-transform: uppercase;
  color: var(--color-terracotta); font-weight: var(--fw-medium);
}
.news-card__section {
  font-size: 12px; letter-spacing: 0.03em; text-transform: uppercase;
  color: var(--color-voltage-blue);
  border: var(--hairline) solid var(--color-ash);
  border-radius: var(--radius-pill);
  padding: 2px var(--sp-11);
}
.news-card__title {
  font-family: var(--font-serif);
  font-weight: var(--fw-regular);
  font-size: var(--text-subheading);
  color: var(--color-voltage-blue);
  line-height: var(--leading-snug);
}
.news-card__excerpt { color: var(--color-ink); font-size: var(--text-body); font-weight: var(--fw-light); }
.news-card__more {
  margin-top: auto;
  color: var(--color-voltage-blue);
  text-transform: uppercase; letter-spacing: 0.02em;
  font-size: var(--text-body-sm); font-weight: var(--fw-medium);
}

@media (max-width: 860px) {
  .news-card { grid-template-columns: 1fr; }
  .news-card__media { min-height: 180px; }
  .news-card__body { padding: var(--sp-20); }
}

/* Страница отдельной новости */
.news-item { max-width: 820px; }
.news-item__meta { display: flex; flex-wrap: wrap; gap: var(--sp-14); align-items: center; margin-bottom: var(--sp-14); }
.news-item__title {
  font-family: var(--font-serif);
  font-weight: var(--fw-regular);
  font-size: var(--text-heading);
  color: var(--color-voltage-blue);
  line-height: var(--leading-heading);
  margin: 0 0 var(--sp-29);
}
.news-item__media {
  margin: 0 0 var(--sp-29);
  border: var(--hairline) solid var(--color-ash);
  background: var(--blue-soft);
  position: relative;
  min-height: 240px;
}
.news-item__media img { width: 100%; display: block; }
.news-item__media.is-empty { min-height: 260px; }
.news-item__body p { margin: 0 0 var(--sp-20); font-size: var(--text-body-lg); font-weight: var(--fw-light); line-height: var(--leading-body); }
@media (max-width: 860px) {
  .news-item__title { font-size: var(--text-heading-sm); }
}

/* ============================================================
   Ребренд: блок трансляции матча
   ============================================================ */
.broadcast { margin-top: var(--sp-43); border-top: var(--hairline) solid var(--color-ash); }
.broadcast__head { display: flex; align-items: center; gap: var(--sp-14); margin-bottom: var(--sp-20); }
.broadcast__frame {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  border: var(--hairline) solid var(--color-ash);
  background: #000;
  overflow: hidden;
}
.broadcast__frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.broadcast__frame--placeholder { background: var(--blue-soft); }
.broadcast__ph {
  position: absolute; inset: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: var(--sp-14); color: var(--ink-muted); text-align: center; padding: var(--sp-20);
}
.broadcast__ph-icon {
  width: 64px; height: 64px; border-radius: 50%;
  border: var(--hairline) solid var(--color-voltage-blue);
  display: flex; align-items: center; justify-content: center;
  color: var(--color-voltage-blue); font-size: 24px;
}
.broadcast__ph-note { font-size: var(--text-body); }
.broadcast__foot { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-14); margin-top: var(--sp-14); flex-wrap: wrap; }
.broadcast__platform { font-size: var(--text-body-sm); color: var(--ink-muted); text-transform: uppercase; letter-spacing: 0.04em; }

/* Метаданные турнира (страница турнира) */
.tournament-meta {
  display: flex;
  gap: var(--sp-43);
  margin: var(--sp-20) 0 var(--sp-29);
  flex-wrap: wrap;
}
.tournament-meta .item .label { display: block; font-size: var(--text-body-sm); font-weight: var(--fw-medium); letter-spacing: 0.04em; text-transform: uppercase; color: var(--color-voltage-blue); margin-bottom: 2px; }
.tournament-meta .item .value { font-size: var(--text-subheading); font-weight: var(--fw-light); color: var(--color-ink); }

/* ---------- Модалка «Сообщить об ошибке» ---------- */
.modal { position: fixed; inset: 0; z-index: 1000; background: rgba(0,0,0,0.45); display: grid; place-items: center; padding: var(--sp-20); }
.modal__box { background: var(--color-cream); border: var(--hairline) solid var(--color-ash); padding: var(--sp-35); width: 100%; max-width: 460px; }
.modal__title { font-family: var(--font-display); font-weight: var(--fw-light); font-size: var(--text-heading-sm); color: var(--color-voltage-blue); margin: 0 0 var(--sp-11); }
.modal__note { color: var(--ink-muted); font-size: var(--text-body-sm); margin: 0 0 var(--sp-20); }
.modal__field { display: flex; flex-direction: column; gap: 6px; margin-bottom: var(--sp-14); }
.modal__field span { font-size: 13px; letter-spacing: 0.04em; text-transform: uppercase; color: var(--ink-muted); }
.modal__field textarea, .modal__field input { font: inherit; font-size: var(--text-body-sm); letter-spacing: var(--tracking); padding: var(--sp-11) var(--sp-14); border: var(--hairline) solid var(--color-ash); border-radius: 0; background: var(--color-cream); color: var(--color-ink); resize: vertical; }
.modal__field textarea:focus, .modal__field input:focus { outline: none; border-color: var(--color-voltage-blue); }
.modal__actions { display: flex; gap: var(--sp-14); align-items: center; justify-content: flex-end; margin-top: var(--sp-20); flex-wrap: wrap; }
.modal__msg { margin-right: auto; font-size: var(--text-body-sm); color: var(--color-voltage-blue); }
.modal__msg--err { color: var(--color-terracotta); }
.modal__box--sm { max-width: 400px; }
.modal__confirm { font-size: var(--text-body); color: var(--color-ink); margin: 0 0 var(--sp-20); white-space: pre-line; line-height: var(--leading-snug); }

/* Ссылка на трансляцию у LIVE-матча (строка списка) */
.match-row__watch {
  display: inline-flex; align-items: center; gap: 6px;
  margin: -6px 0 var(--sp-11) auto; width: fit-content;
  font-size: var(--text-body-sm); font-weight: var(--fw-medium);
  color: var(--color-terracotta);
}
.match-row__watch::before { content: '●'; font-size: 9px; }
.match-row__watch:hover { text-decoration: underline; }
