/* ==========================================================================
   CSTV — ЕДИНЫЙ HLTV-СТИЛЬ (hltv-style.css)
   Заменяет hltv-rating / team / transfers / teamlist / match / player.css.
   Подключать ОДНИМ файлом после first-design.css:
     <link rel="stylesheet" href="hltv-style.css?v=1">
   Состав: рейтинг · профиль команды · трансферы · список команд · страница матча ·
           страница игрока · матчи · турниры · страница турнира · сетка · светлая тема.
   ========================================================================== */
/* ==========================================================================
   HLTV-style рейтинг команд (вкладка «Рейтинг»)
   Подключается ПОСЛЕ styles.css / ui-update.css / first-design.css и
   переопределяет только rk-* правила. Разметка — rkItemHtml() в app.js.
   ========================================================================== */

/* ---------- Заголовок страницы рейтинга ---------- */
.rk-headbar{
  background:linear-gradient(90deg,rgba(var(--accent-rgb),.16),var(--bg-elev) 70%);
  border:1px solid var(--border);
  border-left:4px solid var(--accent);
  border-radius:8px;
  padding:12px 16px;
}
.rk-title{font-size:26px;text-transform:uppercase;letter-spacing:.8px;}
.rk-sub{margin:8px 2px 14px;}

/* ---------- Строка команды ---------- */
.rk-item{
  border-radius:8px;
  margin-bottom:6px;
  border-left:3px solid transparent;
  transition:border-color .12s, background .12s, box-shadow .12s;
}
.rk-item:hover{border-color:rgba(var(--accent-rgb),.5);box-shadow:0 4px 14px rgba(0,0,0,.18);}
.rk-item.open{border-color:var(--accent);}
.rk-item.rk-top{border-left-color:#FFD700;}
.rk-item.rk-podium:has(.rk-rankbox.rk-rank-2){border-left-color:#C0C6CE;}
.rk-item.rk-podium:has(.rk-rankbox.rk-rank-3){border-left-color:#CD7F32;}

.rk-head{gap:14px;padding:10px 16px 10px 12px;}

/* Блок места: «#1» и изменение под ним */
.rk-rankbox{
  flex:none;width:56px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  padding:6px 0;border-radius:6px;background:var(--bg-elev-2);
}
.rk-rankbox .rk-rank{width:auto;font-size:26px;text-align:center;}
.rk-rankbox .rk-move{min-width:0;text-align:center;font-size:12px;line-height:1;}
.rk-rankbox.rk-rank-1{background:rgba(255,215,0,.10);}
.rk-rankbox.rk-rank-2{background:rgba(192,198,206,.10);}
.rk-rankbox.rk-rank-3{background:rgba(205,127,50,.10);}

.rk-logo-wrap{flex:none;display:flex;align-items:center;justify-content:center;width:52px;height:52px;}

/* Название */
.rk-name{gap:8px;}
.rk-name b{font-family:var(--font-display);font-size:24px;line-height:1;letter-spacing:.6px;text-transform:uppercase;}
.rk-fullname{font-size:13px;}

/* Фото-полоска игроков в свёрнутой строке */
.rk-minis{flex:none;display:flex;align-items:center;padding-left:8px;}
.rk-mini{
  width:32px;height:32px;border-radius:50%;overflow:hidden;flex:none;
  margin-left:-8px;background:var(--bg-elev-2);border:2px solid var(--bg-elev);
  display:flex;align-items:flex-end;justify-content:center;
}
.rk-mini:first-child{margin-left:0;}
.rk-mini img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block;}
.rk-mini svg{opacity:.5;}
.rk-item:hover .rk-mini{border-color:var(--bg-elev-2);}

/* Статистика: компактные «чипы» с подписью */
.rk-stats{gap:14px;}
.rk-st{display:flex;flex-direction:column;align-items:center;line-height:1.15;font-family:var(--font-mono);font-size:13px;font-weight:700;color:var(--text);}
.rk-st em{font-style:normal;font-size:9.5px;letter-spacing:.8px;text-transform:uppercase;color:var(--muted);font-weight:600;}
.rk-st.pos{color:var(--green);}
.rk-st.neg{color:var(--red);}

/* Очки */
.rk-ptsbox{flex:none;min-width:92px;text-align:right;}
.rk-ptsbox .rk-pts{font-size:14px;color:var(--yellow);}
.rk-chev{flex:none;width:14px;text-align:center;color:var(--muted);font-size:13px;}
.rk-item:hover .rk-chev,.rk-item.open .rk-chev{color:var(--accent-text);}

/* ---------- Раскрытое содержимое: карточки игроков ---------- */
.rk-body{
  background:linear-gradient(180deg,rgba(var(--accent-rgb),.07),transparent 70%);
  padding:18px 16px 14px;
}
.rk-players{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;max-width:820px;}

.rk-photo{
  position:relative;aspect-ratio:3/4;max-width:none;width:100%;margin:0;
  border-radius:8px;overflow:hidden;border:1px solid var(--border);
  background:linear-gradient(170deg,var(--bg-elev-2),var(--bg));
  align-items:flex-end;
  transition:border-color .12s, transform .12s;
}
.rk-photo img{object-position:center top;}
.rk-photo > svg{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);}
.rk-player:hover .rk-photo{border-color:var(--accent);transform:translateY(-2px);}

.rk-pnamebar{
  position:absolute;left:0;right:0;bottom:0;padding:22px 6px 7px;text-align:center;
  background:linear-gradient(180deg,transparent,rgba(0,0,0,.82));
  color:#fff;font-family:var(--font-display);font-size:18px;letter-spacing:.5px;line-height:1;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.rk-pflag{
  position:absolute;left:6px;top:6px;display:flex;padding:2px 3px;border-radius:4px;
  background:rgba(0,0,0,.45);backdrop-filter:blur(3px);
}
.rk-prole{
  position:absolute;right:6px;top:6px;padding:2px 6px;border-radius:4px;
  background:var(--accent);color:#111;
  font-family:var(--font-mono);font-size:10px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;
}

/* ---------- Адаптив ---------- */
@media (max-width:1000px){
  .rk-minis{display:none;}
}
@media (max-width:720px){
  .rk-stats,.rk-form{display:none;}
  .rk-title{font-size:21px;}
  .rk-head{gap:10px;padding:9px 10px 9px 8px;}
  .rk-rankbox{width:44px;}
  .rk-rankbox .rk-rank{font-size:21px;}
  .rk-logo-wrap{width:40px;height:40px;}
  .rk-name b{font-size:20px;}
  .rk-ptsbox{min-width:0;}
  .rk-chev{display:none;}
  .rk-players{grid-template-columns:repeat(3,minmax(0,1fr));}
}

/* ==========================================================================
   FIX: аватарки игроков не должны налезать на название команды
   Адаптив считается по ширине САМОЙ СТРОКИ (container query), а не окна —
   рядом есть сайдбар, поэтому окно может быть широким, а строка узкой.
   ========================================================================== */
.rk-item{container-type:inline-size;}
.rk-head{flex-wrap:nowrap;align-items:center;}

/* Название всегда видно: минимальная ширина, остальное сжимается/прячется */
.rk-main{flex:1 1 auto;min-width:120px;overflow:hidden;}
.rk-name{display:flex;flex-wrap:nowrap;align-items:center;gap:8px;min-width:0;}
.rk-name > *{flex:none;}
.rk-name b{white-space:nowrap;}
.rk-name .rk-fullname{
  flex:0 1 auto;min-width:0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}

/* Ники дублируют фото-полоску — показываем только когда фото скрыты */
.rk-nicks{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rk-head:has(.rk-minis) .rk-nicks{display:none;}

.rk-minis{flex:none;margin:0 6px 0 10px;}
.rk-stats,.rk-form,.rk-ptsbox,.rk-chev,.rk-rankbox,.rk-logo-wrap{flex:none;}

/* Ступени по ширине строки: сначала уходят фото, потом форма, потом W-L */
@container (max-width:980px){
  .rk-minis{display:none;}
  .rk-head:has(.rk-minis) .rk-nicks{display:block;}
}
@container (max-width:760px){
  .rk-form{display:none;}
}
@container (max-width:560px){
  .rk-stats{display:none;}
  .rk-fullname{display:none;}
}

/* ==========================================================================
   HLTV + Esports Manager стиль — ПРОФИЛЬ КОМАНДЫ
   Подключать ПОСЛЕ hltv-rating.css. Разметка: teamHeroHtml(), teamSquadCardsHtml()
   в app.js. Цвета команды приходят через --th-a / --th-b.
   ========================================================================== */

/* ---------- Hero-шапка ---------- */
.th-hero{
  position:relative;overflow:hidden;
  border:1px solid var(--border);border-radius:10px;margin-bottom:12px;
  background:
    linear-gradient(115deg,color-mix(in srgb,var(--th-a) 38%,transparent) 0%,
                           color-mix(in srgb,var(--th-b) 14%,transparent) 55%,transparent 100%),
    var(--bg-elev);
}
.th-hero::before{ /* диагональная «киберспортивная» полоса */
  content:"";position:absolute;inset:0 0 auto 0;height:4px;
  background:linear-gradient(90deg,var(--th-a),var(--th-b));
}
.th-hero::after{ /* крупный водяной знак */
  content:"";position:absolute;right:-60px;top:-40px;width:320px;height:320px;
  background:radial-gradient(circle,color-mix(in srgb,var(--th-a) 22%,transparent),transparent 70%);
  pointer-events:none;
}
.th-hero-main{position:relative;z-index:1;display:flex;align-items:center;gap:20px;padding:22px 22px 14px;flex-wrap:wrap;}

.th-logo{
  flex:none;width:124px;height:124px;display:flex;align-items:center;justify-content:center;
  border-radius:12px;background:rgba(0,0,0,.28);
  border:1px solid color-mix(in srgb,var(--th-a) 55%,var(--border));
  box-shadow:0 8px 24px rgba(0,0,0,.35), inset 0 0 0 1px rgba(255,255,255,.04);
}
.th-id{flex:1 1 260px;min-width:0;}
.th-kicker{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  font-size:12px;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted);font-weight:700;
}
.th-name{
  margin:4px 0 6px;font-family:var(--font-display);font-size:46px;line-height:1;
  letter-spacing:.8px;text-transform:uppercase;color:var(--text);
  overflow-wrap:anywhere;
}
.th-tagline{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.th-tag{
  font-family:var(--font-mono);font-weight:800;font-size:13px;letter-spacing:1px;
  padding:3px 9px;border-radius:4px;background:var(--th-a);color:#fff;
  text-shadow:0 1px 2px rgba(0,0,0,.45);
}
.th-desc{color:var(--muted);font-size:13.5px;max-width:640px;}
.th-actions{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.th-report{color:var(--red);border-color:var(--red);}

/* Полоса ключевых цифр (как «Team profile» на HLTV) */
.th-statbar{
  position:relative;z-index:1;display:grid;
  grid-template-columns:repeat(auto-fit,minmax(104px,1fr));
  gap:1px;background:var(--border);border-top:1px solid var(--border);
}
.th-stat{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  padding:13px 8px;background:color-mix(in srgb,var(--bg-elev) 92%,#000);
  font-family:var(--font-mono);
}
.th-stat b{font-size:19px;color:var(--text);font-weight:800;line-height:1;}
.th-stat em{font-style:normal;font-size:9.5px;letter-spacing:.9px;text-transform:uppercase;color:var(--muted);font-weight:600;}
.th-stat.pos b{color:var(--green);}
.th-stat.neg b{color:var(--red);}
.th-stat-rank b{color:var(--accent-text,var(--text));font-size:24px;}

.th-formrow{
  position:relative;z-index:1;display:flex;align-items:center;gap:12px;
  padding:10px 22px;background:color-mix(in srgb,var(--bg-elev) 92%,#000);
  border-top:1px solid var(--border);
}
.th-formlbl{font-size:10.5px;letter-spacing:.9px;text-transform:uppercase;color:var(--muted);font-weight:700;}

/* ---------- Карточки состава (в духе Esports Manager) ---------- */
.th-squad{padding:14px 16px 4px;}
.th-sec-title{
  font-family:var(--font-display);font-size:18px;letter-spacing:.8px;text-transform:uppercase;
  margin-bottom:10px;padding-left:10px;border-left:3px solid var(--accent);
}
.th-squad-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;}

.th-pc{
  --tier:var(--muted);
  position:relative;cursor:pointer;overflow:hidden;
  border:1px solid var(--border);border-radius:10px;background:var(--bg-elev-2);
  transition:transform .12s,border-color .12s,box-shadow .12s;
}
.th-pc::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--tier);z-index:2;}
.th-pc:hover{transform:translateY(-3px);border-color:var(--tier);box-shadow:0 8px 20px rgba(0,0,0,.28);}
.th-pc.tier-s{--tier:#ffd24a;}
.th-pc.tier-a{--tier:#3ddc84;}
.th-pc.tier-b{--tier:#4aa8ff;}
.th-pc.tier-c{--tier:#8b95a1;}

.th-pc-photo{
  position:relative;aspect-ratio:1/1;overflow:hidden;display:flex;align-items:flex-end;justify-content:center;
  background:linear-gradient(170deg,color-mix(in srgb,var(--th-a,#3a7bd5) 40%,var(--bg-elev-2)),var(--bg));
}
.th-pc-photo img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block;}
.th-pc-sil{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:.45;}
.th-pc-flag{
  position:absolute;left:6px;top:10px;display:flex;padding:2px 3px;border-radius:4px;
  background:rgba(0,0,0,.5);backdrop-filter:blur(3px);
}
/* Рейтинг-«оверолл» в углу, как в менеджер-играх */
.th-pc-rate{
  position:absolute;right:6px;top:10px;min-width:42px;text-align:center;
  padding:3px 6px;border-radius:5px;background:var(--tier);color:#111;
  font-family:var(--font-mono);font-size:13px;font-weight:800;line-height:1.1;
  box-shadow:0 2px 6px rgba(0,0,0,.4);
}
.th-pc-info{padding:8px 10px 10px;display:flex;flex-direction:column;gap:4px;}
.th-pc-nick{
  font-family:var(--font-display);font-size:20px;letter-spacing:.5px;line-height:1.05;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.th-pc-role{font-size:11px;}
.th-pc-kd{
  display:flex;justify-content:space-between;align-items:center;margin-top:2px;padding-top:5px;
  border-top:1px solid var(--border);font-family:var(--font-mono);font-size:12.5px;font-weight:700;
}
.th-pc-kd em{font-style:normal;font-size:9.5px;letter-spacing:.8px;text-transform:uppercase;color:var(--muted);font-weight:600;}

/* ---------- Блок «Информация» и трофеи под составом ---------- */
.tprofile-card{
  border:1px solid var(--border);border-radius:10px;background:var(--bg-elev);
  margin-bottom:14px;overflow:hidden;
}
.tprofile-card .team-info-grid{
  display:flex;flex-wrap:wrap;gap:0;background:transparent;
  border-top:1px solid var(--border);margin-top:12px;
}
/* flex вместо grid: последняя неполная строка растягивается, без «дырок» и просвечивающего фона */
.tprofile-card .tig-row{
  flex:1 1 240px;min-width:0;
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  padding:10px 16px;background:transparent;
  border-right:1px solid var(--border);border-bottom:1px solid var(--border);
}
.tprofile-card .tig-row:last-child{border-right:0;}
.tprofile-card .tig-label{font-size:11px;letter-spacing:.7px;text-transform:uppercase;color:var(--muted);font-weight:600;}
.tprofile-card .tig-val{font-weight:700;font-size:13px;text-align:right;}
.tprofile-card .team-trophy-strip{padding:10px 14px;border-top:1px solid var(--border);}

/* ---------- Вкладки в стиле HLTV ---------- */
.team-tabs-box{
  display:flex;gap:2px;overflow-x:auto;margin:0 0 14px;padding:0;
  border-bottom:1px solid var(--border);background:transparent;scrollbar-width:thin;
}
.team-tabs-box button{
  flex:none;border:0;background:transparent;color:var(--muted);cursor:pointer;
  padding:11px 16px;font-size:12.5px;font-weight:700;letter-spacing:.7px;text-transform:uppercase;
  border-bottom:3px solid transparent;margin-bottom:-1px;border-radius:0;
  transition:color .12s,border-color .12s,background .12s;
}
.team-tabs-box button:hover{color:var(--text);background:rgba(var(--accent-rgb),.06);}
.team-tabs-box button.active{color:var(--text);border-bottom-color:var(--accent);background:rgba(var(--accent-rgb),.10);}

/* ---------- Адаптив ---------- */
@media (max-width:900px){
  .th-name{font-size:36px;}
  .th-logo{width:96px;height:96px;}
  .th-actions{margin-left:0;width:100%;}
}
@media (max-width:600px){
  .th-hero-main{padding:16px 14px 10px;gap:14px;}
  .th-name{font-size:30px;}
  .th-statbar{grid-template-columns:repeat(3,1fr);}
  .th-formrow{padding:9px 14px;}
  .th-squad{padding:12px 10px 2px;}
  .th-squad-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .team-tabs-box button{padding:10px 12px;font-size:11.5px;}
}

/* ==========================================================================
   HLTV + Esports Manager стиль — ВКЛАДКА «ТРАНСФЕРЫ»
   Подключать после hltv-team.css. Разметка: renderTransfers() в app.js
   ========================================================================== */

/* ---------- Заголовок + сводка ---------- */
.tf-headbar{
  display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  background:linear-gradient(90deg,rgba(var(--accent-rgb),.16),var(--bg-elev) 70%);
  border:1px solid var(--border);border-left:4px solid var(--accent);
  border-radius:8px;padding:12px 16px;margin-bottom:12px;
}
.tf-title{margin:0;font-family:var(--font-display);font-size:26px;letter-spacing:.8px;text-transform:uppercase;}
.tf-stats{display:flex;gap:8px;flex-wrap:wrap;}
.tf-stat{
  display:flex;flex-direction:column;align-items:center;gap:3px;min-width:86px;
  padding:8px 12px;border-radius:6px;background:rgba(0,0,0,.22);font-family:var(--font-mono);
}
.tf-stat b{font-size:18px;line-height:1;color:var(--text);}
.tf-stat em{font-style:normal;font-size:9.5px;letter-spacing:.8px;text-transform:uppercase;color:var(--muted);font-weight:600;}

/* ---------- Фильтры-пилюли ---------- */
.tf-filters{display:flex;gap:6px;flex-wrap:wrap;margin:16px 0 10px;}
.tf-filters button{
  display:inline-flex;align-items:center;gap:7px;cursor:pointer;
  padding:7px 14px;border-radius:999px;border:1px solid var(--border);
  background:var(--bg-elev);color:var(--muted);
  font-size:12px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;
  transition:color .12s,border-color .12s,background .12s;
}
.tf-filters button span{
  font-family:var(--font-mono);font-size:11px;padding:1px 6px;border-radius:999px;background:rgba(0,0,0,.25);
}
.tf-filters button:hover{color:var(--text);border-color:rgba(var(--accent-rgb),.5);}
.tf-filters button.active{color:#111;background:var(--accent);border-color:var(--accent);}
.tf-filters button.active span{background:rgba(0,0,0,.18);color:#111;}

/* ---------- Лента ---------- */
.tf-feed{display:flex;flex-direction:column;gap:6px;}
.tf-date{
  margin:14px 0 4px;padding-left:10px;border-left:3px solid var(--accent);
  font-family:var(--font-display);font-size:15px;letter-spacing:.8px;text-transform:uppercase;color:var(--muted);
}
.tf-date:first-child{margin-top:0;}

.tf-row{
  display:grid;grid-template-columns:minmax(180px,1.1fr) minmax(260px,1.6fr) auto;
  align-items:center;gap:16px;
  padding:10px 16px 10px 12px;border:1px solid var(--border);border-left:3px solid transparent;
  border-radius:8px;background:var(--bg-elev);
  transition:border-color .12s,box-shadow .12s,background .12s;
}
.tf-row:hover{border-left-color:var(--accent);box-shadow:0 4px 14px rgba(0,0,0,.18);}

.tf-player{display:flex;align-items:center;gap:12px;min-width:0;cursor:pointer;}
.tf-photo{flex:none;display:flex;}
.tf-pinfo{min-width:0;display:flex;flex-direction:column;gap:3px;}
.tf-nick{display:flex;align-items:center;gap:7px;min-width:0;}
.tf-nick b{
  font-family:var(--font-display);font-size:22px;line-height:1;letter-spacing:.5px;text-transform:uppercase;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.tf-role{font-size:11px;}

/* Откуда → куда */
.tf-move{display:flex;align-items:center;justify-content:center;gap:18px;}
.tf-side{display:flex;flex-direction:column;align-items:center;gap:5px;min-width:78px;}
.tf-side.tf-click{cursor:pointer;}
.tf-side.tf-click:hover .tf-side-tag{color:var(--accent-text,var(--text));}
.tf-side-tag{font-family:var(--font-mono);font-size:12px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--text);}
.tf-side.from{opacity:.75;}
.tf-arrow{font-size:20px;color:var(--accent);}

/* Тип сделки */
.tf-meta{display:flex;justify-content:flex-end;}
.tf-chip{
  display:inline-block;padding:4px 10px;border-radius:4px;white-space:nowrap;
  font-family:var(--font-mono);font-size:10.5px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;
}
.tf-chip-transfer{background:rgba(var(--accent-rgb),.16);color:var(--accent-text,var(--text));}
.tf-chip-sign{background:rgba(61,220,132,.16);color:var(--green);}
.tf-chip-free{background:rgba(255,92,92,.15);color:var(--red);}
.tf-chip-loan{background:rgba(255,210,74,.16);color:var(--yellow);}

/* ---------- Адаптив ---------- */
@media (max-width:900px){
  .tf-row{grid-template-columns:1fr auto;gap:10px 12px;}
  .tf-move{grid-column:1 / -1;order:3;justify-content:flex-start;gap:14px;}
}
@media (max-width:600px){
  .tf-title{font-size:21px;}
  .tf-stats{width:100%;}
  .tf-stat{flex:1 1 70px;min-width:0;}
  .tf-nick b{font-size:19px;}
}

/* ==========================================================================
   HLTV + Esports Manager стиль — ВКЛАДКА «КОМАНДЫ» (список)
   Подключать после hltv-transfers.css. Разметка: teamListCardHtml() в app.js
   ========================================================================== */
.tc-headbar{
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  background:linear-gradient(90deg,rgba(var(--accent-rgb),.16),var(--bg-elev) 70%);
  border:1px solid var(--border);border-left:4px solid var(--accent);
  border-radius:8px;padding:12px 16px;margin-bottom:12px;
}
.tc-title{margin:0;display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-size:26px;letter-spacing:.8px;text-transform:uppercase;}
.tc-count{font-family:var(--font-mono);font-size:12px;padding:2px 9px;border-radius:999px;background:rgba(0,0,0,.28);color:var(--muted);}

.tc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;margin-top:12px;}

.tc-card{
  position:relative;overflow:hidden;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;
  padding:14px 14px 12px;border:1px solid var(--border);border-radius:10px;
  background:
    linear-gradient(180deg,color-mix(in srgb,var(--th-a) 22%,transparent),transparent 46%),
    var(--bg-elev);
  transition:transform .12s,border-color .12s,box-shadow .12s;
}
.tc-card:hover{transform:translateY(-3px);border-color:var(--th-a);box-shadow:0 10px 24px rgba(0,0,0,.3);}
.tc-bar{position:absolute;left:0;right:0;top:0;height:4px;background:linear-gradient(90deg,var(--th-a),var(--th-b));}

.tc-top{width:100%;display:flex;align-items:center;justify-content:space-between;min-height:30px;}
.tc-rank{
  font-family:var(--font-display);font-size:20px;line-height:1;letter-spacing:.5px;
  padding:4px 10px;border-radius:6px;background:rgba(0,0,0,.35);color:var(--text);
}
.tc-rank-none{color:var(--muted);}
.tc-fav{display:flex;position:relative;}
.tc-fav .fav-star,.tc-fav button{position:static!important;}

.tc-logo{
  width:96px;height:96px;display:flex;align-items:center;justify-content:center;
  border-radius:12px;background:rgba(0,0,0,.22);
  border:1px solid color-mix(in srgb,var(--th-a) 45%,var(--border));
}
.tc-name{display:flex;align-items:center;justify-content:center;gap:7px;flex-wrap:wrap;max-width:100%;}
.tc-name b{
  font-family:var(--font-display);font-size:22px;line-height:1.05;letter-spacing:.6px;text-transform:uppercase;
  overflow-wrap:anywhere;
}
.tc-sub{display:flex;align-items:center;justify-content:center;gap:8px;font-size:12px;color:var(--muted);}
.tc-tag{
  font-family:var(--font-mono);font-weight:800;font-size:11px;letter-spacing:.8px;
  padding:2px 7px;border-radius:4px;background:var(--th-a);color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.45);
}

.tc-minis{margin:2px 0;padding-left:8px;justify-content:center;}
.tc-minis.tc-empty{font-size:12px;color:var(--muted);padding:6px 0;}

.tc-stats{
  width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:1px;
  background:var(--border);border:1px solid var(--border);border-radius:8px;overflow:hidden;
}
.tc-st{display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 4px;background:color-mix(in srgb,var(--bg-elev) 90%,#000);font-family:var(--font-mono);}
.tc-st b{font-size:15px;line-height:1;font-weight:800;color:var(--text);}
.tc-st b.pos{color:var(--green);}
.tc-st b.neg{color:var(--red);}
.tc-st em{font-style:normal;font-size:9px;letter-spacing:.8px;text-transform:uppercase;color:var(--muted);font-weight:600;}

.tc-form{display:flex;justify-content:center;}
.tc-foot{
  width:100%;display:flex;flex-direction:column;align-items:center;gap:5px;
  margin-top:2px;padding-top:8px;border-top:1px solid var(--border);font-size:12px;color:var(--muted);
}
.tc-coach b{color:var(--text);}

@media (max-width:600px){
  .tc-title{font-size:21px;}
  .tc-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;}
}

/* ==========================================================================
   HLTV + Esports Manager стиль — СТРАНИЦА МАТЧА
   Подключать после hltv-teamlist.css. Цвета команд приходят через
   --mh-a (команда 1) и --mh-b (команда 2) на .match-hero (matchHeroStyle() в app.js).
   Переопределяет существующие match-hero*/match-map-* правила.
   ========================================================================== */
.match-hero{
  --mh-a:#3a7bd5;--mh-b:#d55a3a;
  position:relative;overflow:hidden;
  border:1px solid var(--border);border-radius:12px;margin-bottom:14px;padding:0 0 14px;
  background:
    linear-gradient(90deg,color-mix(in srgb,var(--mh-a) 30%,transparent) 0%,transparent 42%,transparent 58%,color-mix(in srgb,var(--mh-b) 30%,transparent) 100%),
    var(--bg-elev);
}
.match-hero::before{ /* двухцветная полоса сверху: команда 1 | команда 2 */
  content:"";position:absolute;left:0;right:0;top:0;height:4px;
  background:linear-gradient(90deg,var(--mh-a) 0 50%,var(--mh-b) 50% 100%);
}
.match-hero-top{
  position:relative;z-index:1;display:grid;grid-template-columns:1fr minmax(180px,auto) 1fr;
  align-items:center;gap:12px;padding:26px 22px 10px;
}

/* Команда в шапке */
.match-hero-team{
  display:flex;flex-direction:column;align-items:center;gap:8px;cursor:pointer;
  transition:opacity .15s,transform .15s;
}
.match-hero-team:hover{transform:translateY(-2px);}
/* команды симметрично прижаты к центру: левая — к правому краю своей колонки, правая — к левому
   (раньше у обеих была фиксированная ширина из styles.css и они прилипали к левому краю колонок) */
.match-hero-top > .match-hero-team:first-child{justify-self:end;}
.match-hero-top > .match-hero-team:last-child{justify-self:start;}
.match-hero-team .mh-logo{
  width:112px;height:112px;display:flex;align-items:center;justify-content:center;
  border-radius:14px;background:rgba(0,0,0,.28);
  border:1px solid rgba(255,255,255,.08);box-shadow:0 8px 22px rgba(0,0,0,.35);
}
.match-hero-team .mh-name{
  font-family:var(--font-display);font-size:28px;line-height:1.05;letter-spacing:.7px;
  text-transform:uppercase;text-align:center;overflow-wrap:anywhere;
}
.mh-meta{display:flex;align-items:center;gap:8px;}
.mh-tag{
  font-family:var(--font-mono);font-weight:800;font-size:11px;letter-spacing:.8px;
  padding:2px 8px;border-radius:4px;background:rgba(255,255,255,.12);color:var(--text);
}
.mh-rank{font-family:var(--font-mono);font-weight:800;font-size:12px;color:var(--yellow);}
/* победитель / проигравший */
.match-hero-team.mh-win .mh-name{color:var(--green);}
.match-hero-team.mh-win .mh-logo{border-color:var(--green);box-shadow:0 0 0 1px var(--green),0 8px 22px rgba(0,0,0,.35);}
.match-hero-team.mh-loss{opacity:.62;}
.match-hero-team.mh-loss:hover{opacity:.9;}

/* Центр */
.match-hero-center{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;}
.match-hero-center .rpf{justify-content:center;max-width:440px;}
.match-hero-score{
  font-family:var(--font-display);font-size:64px;line-height:1;letter-spacing:2px;color:var(--text);
  text-shadow:0 4px 18px rgba(0,0,0,.45);
}
.match-hero-time{font-family:var(--font-display);font-size:44px;line-height:1;letter-spacing:1.5px;}
.match-hero-countdown{font-family:var(--font-mono);font-size:13px;color:var(--muted);letter-spacing:.6px;min-height:18px;}
.match-hero-event{font-size:12px;color:var(--muted);letter-spacing:.4px;}
.match-hero-center .tour-pill{
  padding:4px 12px;border-radius:999px;font-size:11px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;
  background:rgba(var(--accent-rgb),.18);color:var(--accent-text,var(--text));border:1px solid rgba(var(--accent-rgb),.4);
}

/* Кнопки под шапкой */
.match-hero-actions{
  position:relative;z-index:1;display:flex;flex-wrap:wrap;justify-content:center;gap:8px;
  padding:10px 16px 0;margin-top:6px;border-top:1px solid rgba(255,255,255,.06);
}

/* ---------- Карты ---------- */
.match-maps-head{
  display:flex;align-items:baseline;gap:10px;margin:18px 0 8px;padding-left:10px;border-left:3px solid var(--accent);
}
.match-maps-head .mm-title{font-family:var(--font-display);font-size:18px;letter-spacing:.8px;text-transform:uppercase;}
.match-maps-head .mm-sub{font-size:12px;color:var(--muted);font-family:var(--font-mono);}
.match-maps-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px;}
.match-map-card{
  display:flex;align-items:center;gap:12px;padding:10px 14px;
  border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:8px;background:var(--bg-elev);
}
.match-map-card.tba{border-left-color:var(--border);opacity:.7;}
.match-map-card .mm-num{
  flex:none;width:26px;height:26px;display:flex;align-items:center;justify-content:center;
  border-radius:50%;background:rgba(0,0,0,.3);font-family:var(--font-mono);font-size:12px;font-weight:800;color:var(--muted);
}
.match-map-card .mm-name{flex:1;font-weight:700;font-size:14px;letter-spacing:.4px;text-transform:uppercase;}
.match-map-card .mm-score{font-family:var(--font-mono);font-size:16px;font-weight:800;color:var(--text);}

/* ---------- Адаптив ---------- */
@media (max-width:760px){
  .match-hero-top{grid-template-columns:1fr auto 1fr;gap:6px;padding:20px 10px 8px;}
  .match-hero-team .mh-logo{width:72px;height:72px;}
  .match-hero-team .mh-name{font-size:18px;}
  .match-hero-score{font-size:42px;}
  .match-hero-time{font-size:30px;}
}
@media (max-width:480px){
  .match-hero-team .mh-logo{width:56px;height:56px;}
  .match-hero-team .mh-name{font-size:15px;}
  .match-hero-score{font-size:34px;letter-spacing:1px;}
  .mh-meta{display:none;}
}

/* ==========================================================================
   HLTV + Esports Manager стиль — СТРАНИЦА ИГРОКА
   Подключать после hltv-match.css. Разметка: renderPlayerBanner() /
   hpHeroStatbarHtml() в profile.js. Скины шапки (.hps-*) не трогаем —
   они задают фон сами; здесь только полоса цифр, вкладки и блоки статистики.
   ========================================================================== */

/* ---------- Шапка: название и данные ---------- */
.hp-head .hp-nick{
  font-family:var(--font-display);font-size:52px;line-height:1;letter-spacing:.8px;text-transform:uppercase;
}
.hp-head .hp-real{color:var(--muted);font-size:14px;letter-spacing:.3px;margin-top:2px;}

/* Данные (возраст, команда, роль…) — плотная сетка label/value.
   !important нужен: скины шапки (.hps-*) задают свои display/padding для этих блоков. */
.hp-head .hp-rows{
  display:flex!important;flex-wrap:wrap!important;gap:0!important;
  grid-template-columns:none!important;margin-top:14px!important;padding:0!important;
  border:1px solid var(--border)!important;border-radius:8px!important;overflow:hidden!important;
  background:rgba(8,10,16,.72)!important;backdrop-filter:blur(3px);
}
.hp-head .hp-row{
  flex:1 1 230px!important;min-width:0!important;margin:0!important;
  display:flex!important;justify-content:space-between!important;align-items:center!important;gap:16px!important;
  padding:10px 16px!important;background:transparent!important;
  border:0!important;border-right:1px solid var(--border)!important;border-bottom:1px solid var(--border)!important;
}
.hp-head .hp-row .k{flex:none!important;font-size:11px!important;letter-spacing:.7px;text-transform:uppercase;font-weight:700;white-space:nowrap;}
.hp-head .hp-row .v{
  flex:0 1 auto!important;min-width:0;display:flex;align-items:center;justify-content:flex-end;gap:6px;
  font-weight:700;font-size:13px;text-align:right;color:var(--text);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.hp-head .hp-row .v select{max-width:140px;}

/* ---------- Полоса ключевых цифр ---------- */
.hp-statbar{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));
  gap:1px;margin-top:14px;background:var(--border);
  border:1px solid var(--border);border-radius:8px;overflow:hidden;
}
.hp-sb{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  padding:13px 8px;background:color-mix(in srgb,var(--bg-elev) 90%,#000);font-family:var(--font-mono);
}
.hp-sb b{font-size:20px;line-height:1;font-weight:800;color:var(--text);}
.hp-sb em{font-style:normal;font-size:9.5px;letter-spacing:.9px;text-transform:uppercase;color:var(--muted);font-weight:600;}
.hp-sb.pos b{color:var(--green);}
.hp-sb.mid b{color:var(--yellow);}
.hp-sb.neg b{color:var(--red);}
.hp-sb-main{background:linear-gradient(180deg,rgba(var(--accent-rgb),.18),color-mix(in srgb,var(--bg-elev) 90%,#000));}
.hp-sb-main b{font-size:28px;}

/* ---------- Вкладки как на HLTV ---------- */
.hp-tabs{
  display:flex;gap:2px;overflow-x:auto;margin:14px 0;padding:0;
  border-bottom:1px solid var(--border);background:transparent;scrollbar-width:thin;
}
.hp-tabs .hp-tab{
  flex:none;border:0;background:transparent;color:var(--muted);cursor:pointer;border-radius:0;
  padding:11px 16px;font-size:12.5px;font-weight:700;letter-spacing:.7px;text-transform:uppercase;
  border-bottom:3px solid transparent;margin-bottom:-1px;
  transition:color .12s,border-color .12s,background .12s;
}
.hp-tabs .hp-tab:hover{color:var(--text);background:rgba(var(--accent-rgb),.06);}
.hp-tabs .hp-tab.active{color:var(--text);border-bottom-color:var(--accent);background:rgba(var(--accent-rgb),.10);}

/* ---------- Заголовки блоков ---------- */
.hp-body .hp-h{
  font-family:var(--font-display);font-size:18px;letter-spacing:.8px;text-transform:uppercase;
  padding-left:10px;border-left:3px solid var(--accent);margin:0 0 12px;
}
.hp-body .hp-h-sub{font-family:var(--font-mono);font-size:11px;letter-spacing:.3px;text-transform:none;color:var(--muted);}

/* ---------- Полосы навыков ---------- */
.hp-bars{display:flex;flex-direction:column;gap:10px;}
.hp-bar-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:5px;
  font-size:11.5px;letter-spacing:.6px;text-transform:uppercase;color:var(--muted);font-weight:700;}
.hp-bar-val b{color:var(--text);font-family:var(--font-mono);font-size:13px;}
.hp-bar-track{height:8px;border-radius:999px;background:rgba(0,0,0,.35);overflow:hidden;}
.hp-bar-fill{
  height:100%;border-radius:999px;
  background:linear-gradient(90deg,var(--accent),color-mix(in srgb,var(--accent) 55%,#fff));
  transition:width .5s ease;
}

/* ---------- Плитки статистики ---------- */
.hp-statgrid{
  display:grid;gap:1px;background:var(--border);
  border:1px solid var(--border);border-radius:8px;overflow:hidden;
}
.hp-statgrid > div{
  display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 6px;
  background:color-mix(in srgb,var(--bg-elev) 90%,#000);font-family:var(--font-mono);
}
.hp-statgrid > div b{font-size:19px;line-height:1;font-weight:800;}
.hp-statgrid > div span{font-size:9.5px;letter-spacing:.8px;text-transform:uppercase;color:var(--muted);font-weight:600;}

/* ---------- Карточки матчей ---------- */
.hp-mcard{
  display:flex;align-items:center;gap:12px;padding:10px 14px;margin-bottom:6px;cursor:pointer;
  border:1px solid var(--border);border-left:3px solid var(--border);border-radius:8px;background:var(--bg-elev);
  transition:border-color .12s,box-shadow .12s;
}
.hp-mcard:hover{box-shadow:0 4px 14px rgba(0,0,0,.18);}
.hp-mcard.win{border-left-color:var(--green);}
.hp-mcard.loss{border-left-color:var(--red);}
.hp-mcard .hp-vs-label{font-size:10px;letter-spacing:.8px;text-transform:uppercase;color:var(--muted);font-weight:700;}
.hp-mcard .hp-mname{font-weight:700;font-size:14px;letter-spacing:.3px;text-transform:uppercase;}
.hp-mcard .hp-mscore{font-family:var(--font-mono);font-size:17px;font-weight:800;}
.hp-mcard.win .hp-mscore{color:var(--green);}
.hp-mcard.loss .hp-mscore{color:var(--red);}
.hp-mcard .hp-mtime{display:flex;flex-direction:column;align-items:flex-end;font-family:var(--font-mono);}
.hp-mcard .hp-mtime b{font-size:15px;}
.hp-mcard .hp-mtime span{font-size:10.5px;color:var(--muted);}

/* ---------- Адаптив ---------- */
@media (max-width:760px){
  .hp-head .hp-nick{font-size:38px;}
  .hp-statbar{grid-template-columns:repeat(3,1fr);}
  .hp-tabs .hp-tab{padding:10px 12px;font-size:11.5px;}
}


/* ==========================================================================
   HLTV-стиль — ВКЛАДКА «МАТЧИ» (список)
   Разметка: renderMatches() в app.js (.match-date-head, .match-row, .mr-*)
   ========================================================================== */
#tab-matches .row-between,
#tab-tournaments .row-between{
  background:linear-gradient(90deg,rgba(var(--accent-rgb),.16),var(--bg-elev) 70%);
  border:1px solid var(--border);border-left:4px solid var(--accent);
  border-radius:8px;padding:12px 16px;margin-bottom:12px;
}
#tab-matches .section-title,#tab-tournaments .section-title{
  margin:0;font-family:var(--font-display);font-size:26px;letter-spacing:.8px;text-transform:uppercase;
}
#tab-matches .section-title .bar,#tab-tournaments .section-title .bar{display:none;}

.match-date-head{
  margin:18px 0 6px;padding:6px 10px;border-left:3px solid var(--accent);
  font-family:var(--font-display);font-size:15px;letter-spacing:.8px;text-transform:uppercase;color:var(--muted);
  background:linear-gradient(90deg,rgba(var(--accent-rgb),.10),transparent 60%);border-radius:0 6px 6px 0;
}
.match-date-head:first-child{margin-top:4px;}

.match-row{
  display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;
  padding:9px 12px 9px 12px;margin-bottom:5px;
  border:1px solid var(--border);border-left:3px solid var(--border);border-radius:8px;background:var(--bg-elev);
  transition:border-color .12s,box-shadow .12s,background .12s;
}
.match-row:hover{border-color:rgba(var(--accent-rgb),.5);box-shadow:0 4px 14px rgba(0,0,0,.16);}
.match-row.is-live,.match-row.st-live{
  border-left-color:var(--red);
  background:linear-gradient(90deg,color-mix(in srgb,var(--red) 12%,transparent),var(--bg-elev) 55%);
}
.mr-meta{
  flex:0 0 190px;min-width:0;font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--muted);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.mr-teams{
  flex:1 1 280px;min-width:0;display:grid;grid-template-columns:1fr minmax(76px,auto) 1fr;align-items:center;gap:10px;
}
.mr-team{
  display:flex;align-items:center;gap:8px;min-width:0;cursor:pointer;
  font-family:var(--font-display);font-size:20px;line-height:1;letter-spacing:.5px;text-transform:uppercase;
  transition:color .12s;
}
.mr-team:hover{color:var(--accent-text,var(--accent));}
.mr-team.right{justify-content:flex-end;text-align:right;}
.mr-team span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mr-center{display:flex;justify-content:center;}
.mr-center .mono{
  min-width:64px;text-align:center;padding:3px 10px;border-radius:5px;background:rgba(0,0,0,.28);
  font-family:var(--font-mono);letter-spacing:1px;
}
.mr-center .meta{font-family:var(--font-mono);font-size:12px;text-transform:uppercase;color:var(--muted);}
.mr-status{flex:none;min-width:104px;display:flex;justify-content:flex-end;}
.match-row .status{
  display:inline-block;padding:3px 9px;border-radius:4px;white-space:nowrap;
  font-family:var(--font-mono);font-size:10.5px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;
  background:rgba(var(--accent-rgb),.14);color:var(--accent-text,var(--text));
}
.match-row .status.approved{background:rgba(61,220,132,.16);color:var(--green);}
.match-row .status.scheduled{background:rgba(255,210,74,.16);color:var(--yellow);}
.match-row .status.pending{background:rgba(255,255,255,.08);color:var(--muted);}
.match-row .status.live{background:var(--red);color:#fff;animation:mrPulse 1.6s ease-in-out infinite;}
@keyframes mrPulse{0%,100%{opacity:1}50%{opacity:.65}}
.mr-expand-toggle{
  flex:none;display:flex;align-items:center;justify-content:center;width:30px;height:30px;
  border:1px solid var(--border);border-radius:6px;background:transparent;color:var(--muted);cursor:pointer;
}
.mr-expand-toggle:hover,.match-row.expanded .mr-expand-toggle{color:var(--text);border-color:var(--accent);}
.mr-maps-row{width:100%;display:flex;flex-wrap:wrap;gap:6px;order:4;}
.mr-actions{width:100%;order:6;display:flex;flex-wrap:wrap;gap:6px;padding-top:8px;border-top:1px solid var(--border);}
/* действия и прогнозы скрыты, пока строка не раскрыта */
.match-row:not(.expanded):has(> .mr-expand-toggle) > .mr-actions,
.match-row:not(.expanded):has(> .mr-expand-toggle) > .mr-maps-row,
.match-row:not(.expanded):has(> .mr-expand-toggle) > div[style*="order:5"]{display:none;}
.match-row:not(:has(> .mr-expand-toggle)) > .mr-actions{border-top:0;padding-top:0;width:auto;margin-left:auto;order:0;}

@media (max-width:760px){
  .mr-meta{flex:1 1 100%;order:-1;}
  .mr-team{font-size:17px;}
  .mr-status{min-width:0;}
}

/* ---------- Карточка матча v2 (сетка, группы, турнирная страница) ---------- */
.match-card-v2{
  border:1px solid var(--border);border-radius:8px;background:var(--bg-elev);margin-bottom:8px;overflow:hidden;
}
.match-card-v2 .mc-top{
  display:flex;align-items:center;gap:8px;padding:6px 12px;
  font-family:var(--font-mono);font-size:11px;font-weight:700;letter-spacing:.5px;color:var(--muted);
  background:rgba(0,0,0,.22);border-bottom:1px solid var(--border);
}
.match-card-v2 .mc-bo{margin-left:auto;padding:1px 7px;border-radius:4px;background:rgba(var(--accent-rgb),.16);color:var(--accent-text,var(--text));}
.match-card-v2 .mc-top .mc-bo + a{margin-left:10px!important;}
.match-card-v2 .mc-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;}
.match-card-v2 .mc-team{
  display:flex;align-items:center;gap:8px;min-width:0;flex:1 1 0;
  font-family:var(--font-display);font-size:19px;letter-spacing:.5px;text-transform:uppercase;
}
.match-card-v2 .mc-row > .mc-team:last-child{justify-content:flex-end;flex-direction:row-reverse;}
.match-card-v2 .mc-lose{opacity:.55;}
.match-card-v2 .mc-cross{color:var(--red);font-size:12px;}
.match-card-v2 .mc-row > .mono{
  flex:none;min-width:70px;text-align:center;padding:3px 10px;border-radius:5px;background:rgba(0,0,0,.28);
}
.round-chevron-header{
  margin:0 0 10px;padding:6px 10px;border-left:3px solid var(--accent);
  font-family:var(--font-display);font-size:16px;letter-spacing:.8px;text-transform:uppercase;
  background:linear-gradient(90deg,rgba(var(--accent-rgb),.10),transparent 60%);
}
.swiss-columns{display:flex;gap:16px;overflow-x:auto;align-items:flex-start;padding-bottom:6px;}
.swiss-day-col{flex:1 1 280px;}
.swiss-day-col table{width:100%;border-collapse:collapse;border:1px solid var(--border);border-radius:8px;overflow:hidden;}
.swiss-day-col th{
  padding:7px 10px;text-align:left;font-size:10px;letter-spacing:.8px;text-transform:uppercase;color:var(--muted);
  background:rgba(0,0,0,.22);
}
.swiss-day-col td{padding:7px 10px;border-top:1px solid var(--border);font-weight:700;}
.swiss-day-col td.pos{color:var(--green);}.swiss-day-col td.neg{color:var(--red);}

/* ==========================================================================
   HLTV-стиль — ВКЛАДКА «ТУРНИРЫ» (список)
   Разметка: renderTournaments() — .tour-cat-tabs, .tourn-card, .tourn-badge
   ========================================================================== */
.tour-cat-tabs{
  display:flex;gap:2px;overflow-x:auto;margin:14px 0;padding:0;
  border-bottom:1px solid var(--border);scrollbar-width:thin;
}
.tour-cat-tabs button{
  flex:none;border:0;background:transparent;color:var(--muted);cursor:pointer;border-radius:0;
  padding:11px 16px;font-size:12.5px;font-weight:700;letter-spacing:.7px;text-transform:uppercase;
  border-bottom:3px solid transparent;margin-bottom:-1px;transition:color .12s,border-color .12s,background .12s;
}
.tour-cat-tabs button:hover{color:var(--text);background:rgba(var(--accent-rgb),.06);}
.tour-cat-tabs button.active{color:var(--text);border-bottom-color:var(--accent);background:rgba(var(--accent-rgb),.10);}

.tourn-card{
  position:relative;overflow:hidden;display:flex;flex-direction:column;gap:6px;
  padding:16px 14px 12px;border:1px solid var(--border);border-radius:10px;
  background:linear-gradient(180deg,rgba(var(--accent-rgb),.12),transparent 50%),var(--bg-elev);
  transition:transform .12s,border-color .12s,box-shadow .12s;
}
.tourn-card:hover{transform:translateY(-3px);border-color:var(--accent);box-shadow:0 10px 24px rgba(0,0,0,.3);}
.tourn-cover{width:calc(100% + 28px);height:110px;object-fit:cover;margin:-16px -14px 6px;display:block;}
.tourn-card .team-name{font-family:var(--font-display);letter-spacing:.6px;text-transform:uppercase;line-height:1.05;}
.tourn-badges{display:flex;flex-wrap:wrap;gap:5px;margin-top:4px;}
.tourn-badge{
  padding:3px 8px;border-radius:4px;background:rgba(0,0,0,.28);
  font-family:var(--font-mono);font-size:10.5px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;
}
.tourn-progress-track{height:6px;border-radius:999px;background:rgba(0,0,0,.35);overflow:hidden;margin-top:6px;}
.tourn-progress-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent),color-mix(in srgb,var(--accent) 55%,#fff));}

/* ==========================================================================
   HLTV-стиль — СТРАНИЦА ТУРНИРА
   Разметка: renderTournamentDetailView() — .tour-hero, .tv-*
   ========================================================================== */
.tour-hero{
  position:relative;overflow:hidden;display:flex;align-items:center;gap:20px;flex-wrap:wrap;
  padding:24px 22px 18px;margin-bottom:12px;border:1px solid var(--border);border-radius:10px;
  background:linear-gradient(115deg,rgba(var(--accent-rgb),.30) 0%,rgba(var(--accent-rgb),.08) 60%,transparent 100%),var(--bg-elev);
}
.tour-hero::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:var(--accent);z-index:2;}
.tour-hero.has-banner{display:block;padding:0;}
.tour-hero-banner{width:100%;height:190px;object-fit:cover;display:block;}
.tour-hero.has-banner::after{
  content:"";position:absolute;left:0;right:0;top:0;height:190px;pointer-events:none;
  background:linear-gradient(180deg,transparent 40%,var(--bg-elev));
}
.tour-hero-body{position:relative;z-index:1;display:flex;align-items:center;gap:20px;flex-wrap:wrap;padding:0 22px 18px;margin-top:-44px;}
.tour-hero-icon{
  flex:none;width:112px;height:112px;display:flex;align-items:center;justify-content:center;font-size:44px;
  border-radius:12px;background:rgba(0,0,0,.34);padding:8px;
  border:1px solid rgba(var(--accent-rgb),.55);box-shadow:0 8px 24px rgba(0,0,0,.35);
}
.tour-hero-title{
  margin:0 0 8px;font-family:var(--font-display);font-size:44px;line-height:1;letter-spacing:.8px;
  text-transform:uppercase;overflow-wrap:anywhere;
}
.tv-hero-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.tour-pill{
  display:inline-block;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;
  background:rgba(var(--accent-rgb),.16);color:var(--accent-text,var(--text));border:1px solid rgba(var(--accent-rgb),.4);
}
.tcal-live{
  padding:3px 8px;border-radius:4px;background:var(--red);color:#fff;
  font-family:var(--font-mono);font-size:11px;font-weight:800;letter-spacing:1px;animation:mrPulse 1.6s ease-in-out infinite;
}

.tv-tabs{
  display:flex;gap:2px;overflow-x:auto;margin:0 0 14px;padding:0;
  border-bottom:1px solid var(--border);scrollbar-width:thin;
}
.tv-tabs button{
  flex:none;border:0;background:transparent;color:var(--muted);cursor:pointer;border-radius:0;
  padding:11px 16px;font-size:12.5px;font-weight:700;letter-spacing:.7px;text-transform:uppercase;
  border-bottom:3px solid transparent;margin-bottom:-1px;transition:color .12s,border-color .12s,background .12s;
}
.tv-tabs button:hover{color:var(--text);background:rgba(var(--accent-rgb),.06);}
.tv-tabs button.active{color:var(--text);border-bottom-color:var(--accent);background:rgba(var(--accent-rgb),.10);}

/* Полоса цифр: даты / призовой фонд / команды / формат */
.tv-info{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;margin-bottom:16px;
  background:var(--border);border:1px solid var(--border);border-radius:8px;overflow:hidden;
}
.tv-info > div{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:13px 10px;text-align:center;
  background:color-mix(in srgb,var(--bg-elev) 92%,#000);font-family:var(--font-mono);min-width:0;
}
.tv-info .k{font-size:9.5px;letter-spacing:.9px;text-transform:uppercase;color:var(--muted);font-weight:600;}
.tv-info b{font-size:16px;font-weight:800;color:var(--text);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tv-info small{font-size:11px;color:var(--yellow);}

.tv-sec{margin-bottom:16px;}
.tv-h{
  margin:0 0 10px;padding-left:10px;border-left:3px solid var(--accent);
  font-family:var(--font-display);font-size:18px;letter-spacing:.8px;text-transform:uppercase;
}
.tv-panel{border:1px solid var(--border);border-radius:10px;background:var(--bg-elev);padding:14px 16px;}
.tv-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;align-items:start;}
.tv-note{
  padding:12px 16px;border:1px dashed var(--border);border-radius:8px;color:var(--muted);font-size:13px;background:rgba(0,0,0,.12);
}
.tv-format-name{font-family:var(--font-display);font-size:22px;letter-spacing:.6px;text-transform:uppercase;}
.tv-format-hint{margin-top:6px;color:var(--muted);font-size:13px;}
.tv-kv{display:flex;flex-direction:column;}
.tv-kv > div{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:8px 0;border-bottom:1px solid var(--border);}
.tv-kv > div:last-child{border-bottom:0;}
.tv-kv .k{font-size:11px;letter-spacing:.7px;text-transform:uppercase;color:var(--muted);font-weight:700;}
.tv-kv .v{font-weight:700;font-size:13px;text-align:right;}
.tv-actions,.tv-hero-actions{display:flex;flex-wrap:wrap;gap:8px;}

/* Призовые места */
.tv-prizes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;}
@media (max-width:700px){.tv-prizes{grid-template-columns:repeat(2,minmax(0,1fr));}}
.tv-prize{
  --tier:var(--border);position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;gap:5px;
  padding:14px 10px 12px;text-align:center;border:1px solid var(--border);border-radius:10px;background:var(--bg-elev-2);
}
.tv-prize::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--tier);}
.tv-prize.p1{--tier:#ffd24a;}.tv-prize.p2{--tier:#c0c6ce;}.tv-prize.p3{--tier:#cd7f32;}
.tv-prize.p1{background:linear-gradient(180deg,rgba(255,210,74,.14),var(--bg-elev-2) 70%);}
.tv-prize-team{display:flex;align-items:center;gap:7px;cursor:pointer;font-family:var(--font-display);font-size:20px;letter-spacing:.5px;text-transform:uppercase;}
.tv-prize-team:hover{color:var(--accent-text,var(--accent));}
.tv-prize-place{font-size:11px;letter-spacing:.9px;text-transform:uppercase;color:var(--tier);font-weight:800;}
.tv-prize-amt{font-family:var(--font-mono);font-size:18px;font-weight:800;color:var(--green);}
.tv-prize-rp{font-family:var(--font-mono);font-size:11px;color:var(--yellow);}

/* ==========================================================================
   HLTV-стиль — ТУРНИРНАЯ СЕТКА (плей-офф)
   Геометрию (left/top/width/height) задаёт renderPlayoffTabContent() inline,
   здесь только позиционирование и внешний вид.
   ========================================================================== */
.bracket-tree-wrap{
  overflow:auto;padding:14px 12px 18px;border:1px solid var(--border);border-radius:10px;
  background:
    linear-gradient(180deg,rgba(var(--accent-rgb),.06),transparent 40%),var(--bg-elev);
}
.bracket-tree{position:relative;}
.bt-round-label{
  position:absolute;top:0;text-align:center;padding:4px 0;border-bottom:2px solid var(--accent);
  font-family:var(--font-display);font-size:14px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);
}
.bt-line{position:absolute;background:color-mix(in srgb,var(--muted) 55%,transparent);pointer-events:none;}
.bt-line-h{height:2px;}
.bt-line-v{width:2px;}

.bt-card{
  position:absolute;display:flex;flex-direction:column;box-sizing:border-box;overflow:hidden;
  border:1px solid var(--border);border-radius:6px;background:var(--bg-elev-2);
  transition:border-color .12s,box-shadow .12s,transform .12s;
}
.bt-card.bt-clickable{cursor:pointer;}
.bt-card.bt-clickable:hover{border-color:var(--accent);box-shadow:0 6px 16px rgba(0,0,0,.3);transform:translateY(-1px);z-index:3;}
.bt-row{
  flex:1 1 0;min-height:0;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 0 0 8px;
  font-size:13px;font-weight:700;
}
.bt-row + .bt-row{border-top:1px solid var(--border);}
.bt-team{display:flex;align-items:center;gap:7px;min-width:0;font-family:var(--font-display);font-size:15px;letter-spacing:.5px;text-transform:uppercase;}
.bt-team > span:last-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.bt-score{
  flex:none;align-self:stretch;min-width:30px;display:flex;align-items:center;justify-content:center;gap:3px;padding:0 8px;
  font-family:var(--font-mono);font-weight:800;font-size:13px;background:rgba(0,0,0,.22);color:var(--muted);
}
.bt-row.bt-win .bt-team{color:var(--text);}
.bt-row.bt-win .bt-score{background:var(--green);color:#0b1a10;}
.bt-row.bt-lose{opacity:.6;}
.bt-row.bt-lose .bt-score{color:var(--red);}
.bt-cross{color:var(--red);font-size:10px;}
.bt-live{position:absolute;right:6px;top:50%;transform:translateY(-50%);color:var(--red);font-size:11px;animation:mrPulse 1.2s ease-in-out infinite;}

.bt-champion{
  flex-direction:row;align-items:center;justify-content:center;gap:8px;border-color:#ffd24a;
  background:linear-gradient(135deg,rgba(255,210,74,.28),var(--bg-elev-2));
  box-shadow:0 0 0 1px #ffd24a,0 8px 22px rgba(255,210,74,.22);
  font-family:var(--font-display);font-size:20px;letter-spacing:.7px;text-transform:uppercase;
}
.bt-crown-fly{position:absolute;display:flex;justify-content:center;pointer-events:none;z-index:2;}
.bt-crown-fly img{height:30px;width:auto;filter:drop-shadow(0 3px 6px rgba(0,0,0,.4));}


/* ==========================================================================
   СОВМЕСТИМОСТЬ со styles.css: перебиваем его старые правила для тех же классов
   (граница/радиус/фон/позиции), чтобы не получались двойные рамки и полосы.
   ========================================================================== */
/* Матчи */
.matches-list{border:0;border-radius:0;overflow:visible;margin-top:8px;}
.matches-list .match-row:last-child{border-bottom:1px solid var(--border);}
.match-row{border-radius:8px;}
.mr-team.right{flex-direction:row;justify-content:flex-end;}
.match-card-v2{padding:0;margin-bottom:8px;}
.match-card-v2 .mc-top{margin:0;}
.match-card-v2 .mc-team.mc-lose{color:var(--muted);}
/* Вкладки категорий турниров: были «пилюли» с рамкой */
.tour-cat-tabs{flex-wrap:nowrap;gap:2px;margin-bottom:14px;}
.tour-cat-tabs button,.tour-cat-tabs button:hover,.tour-cat-tabs button.active{
  border:0;border-bottom:3px solid transparent;border-radius:0;
}
.tour-cat-tabs button.active{border-bottom-color:var(--accent);color:var(--text);}
/* Страница турнира */
.tour-hero::before{width:auto;right:0;left:0;top:0;bottom:auto;border-radius:0;background:var(--accent);}
.tour-hero.has-banner .tour-hero-body{margin-top:0;align-items:flex-start;}
.tour-hero.has-banner .tour-hero-icon{margin-top:-52px;}
.tour-hero.has-banner .tour-hero-body > div:last-child{padding-top:14px;}
.tv-tabs{background:transparent;border:0;border-bottom:1px solid var(--border);border-radius:0;}
.tv-tabs button,.tv-tabs button:last-child{flex:none;border:0;border-bottom:3px solid transparent;margin-bottom:-1px;border-radius:0;box-shadow:none;}
.tv-tabs button.active{border-bottom-color:var(--accent);background:rgba(var(--accent-rgb),.10);box-shadow:none;}
.tv-info{padding:0;gap:1px;border-radius:8px;}
.tv-info .k{margin-bottom:0;}
.tv-h{color:var(--text);margin:0 0 10px;}
.tv-panel{border-radius:10px;}
.tv-kv > div{background:transparent;margin:0;padding:8px 0;border-radius:0;}
.tv-prize{background:var(--bg-elev-2);border-radius:10px;}
.tv-prize.p1,.tv-prize.p2,.tv-prize.p3{border-top:1px solid var(--border);}
.tv-team{border-radius:10px;border:1px solid var(--border);transition:transform .12s,border-color .12s;}
.tv-team:hover{transform:translateY(-2px);}
/* Сетка */
.bt-card{padding:0;gap:0;justify-content:stretch;border-radius:6px;}
.bt-row{padding:0 0 0 8px;margin:0;border-radius:0;color:var(--muted);}
.bt-row.bt-win{color:var(--text);}
.bt-row.bt-lose{background:transparent;color:var(--muted);}
.bt-round-label{background:transparent;border-radius:0;font-weight:400;}
.bt-line-h{border-top:0;}
.bt-line-v{border-left:0;}
.bt-cross{margin-left:0;}
.bracket-tree-wrap{padding-bottom:18px;}

/* ==========================================================================
   СВЕТЛАЯ ТЕМА (html[data-theme="light"]) — подгонка всех блоков выше.
   Тёмные полупрозрачные подложки (rgba(0,0,0,.x)) на светлом фоне дают грязные
   «пятна», а жёлтый/зелёный текст теряет контраст — заменяем на светлые аналоги.
   ========================================================================== */
html[data-theme="light"]{
  --lt-card:color-mix(in srgb,var(--bg-elev) 45%,#fff);--lt-soft:rgba(15,23,42,.05);--lt-soft2:rgba(15,23,42,.08);
  --lt-yellow:color-mix(in srgb,var(--yellow) 55%,#5a3d00);
  --lt-green:color-mix(in srgb,var(--green) 70%,#06361c);
  --lt-red:color-mix(in srgb,var(--red) 80%,#5a0000);
}
/* подложки логотипов, чипов, счёта */
html[data-theme="light"] :is(
  .match-hero-team .mh-logo,.th-logo,.tc-logo,.tour-hero-icon,.mh-tag,.tc-rank,.tc-count,.tf-stat,.tf-filters button span,
  .match-map-card .mm-num,.mr-center .mono,.match-card-v2 .mc-row > .mono,.match-card-v2 .mc-top,.tourn-badge,
  .tourn-progress-track,.hp-bar-track,.bt-score,.swiss-day-col th,.tv-note
){background:var(--lt-soft2);}
html[data-theme="light"] .match-hero-team .mh-logo,
html[data-theme="light"] .th-logo,
html[data-theme="light"] .tc-logo,
html[data-theme="light"] .tour-hero-icon{box-shadow:0 4px 14px rgba(15,23,42,.12);border-color:var(--border);}
html[data-theme="light"] .match-hero-score{text-shadow:none;}
html[data-theme="light"] .match-hero-actions{border-top-color:var(--border);}
html[data-theme="light"] .mh-tag{color:var(--text);}
/* светлые «полосы цифр»: вместо затемнения #000 — белая карточка */
html[data-theme="light"] :is(.hp-sb,.hp-statgrid > div,.th-stat,.th-formrow,.tc-st,.tv-info > div){
  background:var(--lt-card);
}
html[data-theme="light"] .hp-sb-main{background:linear-gradient(180deg,rgba(var(--accent-rgb),.14),var(--lt-card));}
html[data-theme="light"] .hp-head .hp-rows{background:rgba(255,255,255,.88)!important;}
/* акцентные цвета текста — потемнее для контраста */
html[data-theme="light"] :is(.mh-rank,.rk-ptsbox .rk-pts,.tf-chip-loan,.tv-info small,.tv-prize-rp,.hp-sb.mid b){color:var(--lt-yellow);}
html[data-theme="light"] :is(.match-hero-team.mh-win .mh-name,.rk-st.pos,.th-stat.pos b,.tc-st b.pos,.hp-sb.pos b,.hp-mcard.win .hp-mscore,.tf-chip-sign,.tv-prize-amt,.swiss-day-col td.pos){color:var(--lt-green);}
html[data-theme="light"] :is(.rk-st.neg,.th-stat.neg b,.tc-st b.neg,.hp-sb.neg b,.hp-mcard.loss .hp-mscore,.tf-chip-free,.th-report,.swiss-day-col td.neg,.bt-row.bt-lose .bt-score,.match-card-v2 .mc-cross,.bt-cross){color:var(--lt-red);}
html[data-theme="light"] .th-report{border-color:var(--lt-red);}
html[data-theme="light"] .tf-chip-sign{background:rgba(22,163,74,.14);}
html[data-theme="light"] .tf-chip-free{background:rgba(220,38,38,.12);}
html[data-theme="light"] .tf-chip-loan{background:rgba(217,119,6,.15);}
/* ряды рейтинга / карточки: тени мягче */
html[data-theme="light"] :is(.rk-item:hover,.hp-mcard:hover,.tf-row:hover,.match-row:hover){box-shadow:0 4px 14px rgba(15,23,42,.10);}
html[data-theme="light"] :is(.th-pc:hover,.tc-card:hover,.tourn-card:hover){box-shadow:0 10px 24px rgba(15,23,42,.14);}
html[data-theme="light"] .rk-rankbox{background:var(--lt-soft);}
html[data-theme="light"] .th-pc-rate,html[data-theme="light"] .th-pc-flag,html[data-theme="light"] .rk-pflag{box-shadow:0 2px 6px rgba(15,23,42,.18);}
/* вкладки и фильтры */
html[data-theme="light"] :is(.hp-tabs .hp-tab,.team-tabs-box button,.tv-tabs button,.tour-cat-tabs button){color:var(--muted);}
html[data-theme="light"] :is(.hp-tabs .hp-tab,.team-tabs-box button,.tv-tabs button,.tour-cat-tabs button):is(:hover,.active){color:var(--text);}
/* статусы в списке матчей */
html[data-theme="light"] .match-row .status.approved{background:rgba(22,163,74,.14);color:var(--lt-green);}
html[data-theme="light"] .match-row .status.scheduled{background:rgba(217,119,6,.14);color:var(--lt-yellow);}
html[data-theme="light"] .match-row .status.pending{background:var(--lt-soft2);}
html[data-theme="light"] .match-row.is-live,html[data-theme="light"] .match-row.st-live{background:linear-gradient(90deg,rgba(220,38,38,.09),var(--bg-elev) 55%);}
/* шапки с командными цветами: слабее заливка, чтобы текст читался */
html[data-theme="light"] .match-hero{background:linear-gradient(90deg,color-mix(in srgb,var(--mh-a) 18%,transparent) 0%,transparent 42%,transparent 58%,color-mix(in srgb,var(--mh-b) 18%,transparent) 100%),var(--bg-elev);}
html[data-theme="light"] .th-hero{background:linear-gradient(115deg,color-mix(in srgb,var(--th-a) 22%,transparent) 0%,color-mix(in srgb,var(--th-b) 8%,transparent) 55%,transparent 100%),var(--bg-elev);}
html[data-theme="light"] .tour-hero{background:linear-gradient(115deg,rgba(var(--accent-rgb),.16) 0%,rgba(var(--accent-rgb),.04) 60%,transparent 100%),var(--bg-elev);}
html[data-theme="light"] .tour-hero.has-banner::after{background:linear-gradient(180deg,transparent 40%,var(--bg-elev));}
/* сетка */
html[data-theme="light"] .bt-card{background:var(--lt-card);}
html[data-theme="light"] .bt-card.bt-clickable:hover{box-shadow:0 6px 16px rgba(15,23,42,.16);}
html[data-theme="light"] .bt-line{background:color-mix(in srgb,var(--muted) 45%,transparent);}
html[data-theme="light"] .bt-row.bt-win .bt-score{background:var(--lt-green);color:#fff;}
html[data-theme="light"] .bt-champion{background:linear-gradient(135deg,rgba(255,210,74,.35),#fffdf3);border-color:#d9a400;box-shadow:0 0 0 1px #d9a400,0 8px 22px rgba(217,164,0,.2);}
html[data-theme="light"] .bt-crown-fly img{filter:drop-shadow(0 3px 6px rgba(15,23,42,.25));}
html[data-theme="light"] .tv-prize{background:var(--lt-card);}
html[data-theme="light"] .tv-prize.p1{background:linear-gradient(180deg,rgba(255,210,74,.22),var(--lt-card) 70%);}
html[data-theme="light"] .tv-prize.p2{--tier:#8b95a1;}
html[data-theme="light"] .tv-prize.p1{--tier:#c79300;}
html[data-theme="light"] .tv-panel,html[data-theme="light"] .bracket-tree-wrap,html[data-theme="light"] .match-card-v2{background:var(--lt-card);}
/* кнопки-фильтры «active»: тёмный текст на акценте остаётся читаемым, но на светлой — белый */
html[data-theme="light"] .tf-filters button.active,html[data-theme="light"] .tf-filters button.active span{color:#fff;}
html[data-theme="light"] .rk-prole{color:#fff;}
html[data-theme="light"] .th-pc-rate{color:#111;}

html[data-theme="light"] .tour-cat-tabs button,html[data-theme="light"] .tv-tabs button{background:transparent;}
html[data-theme="light"] .tour-cat-tabs button.active,html[data-theme="light"] .tv-tabs button.active{background:rgba(var(--accent-rgb),.10);}
html[data-theme="light"] .tv-prize{background:var(--lt-card);}
html[data-theme="light"] .tv-team{background:var(--lt-card);border-color:var(--border);}
html[data-theme="light"] .tv-info small{color:var(--lt-yellow);}
html[data-theme="light"] .matches-list .match-row{background:var(--bg-elev);}
html[data-theme="light"] .match-date-head{background:linear-gradient(90deg,rgba(var(--accent-rgb),.10),transparent 60%);}
html[data-theme="light"] .bt-row.bt-lose{color:var(--muted);}
html[data-theme="light"] .bt-champion{color:var(--text);}
html[data-theme="light"] .tourn-card{background:linear-gradient(180deg,rgba(var(--accent-rgb),.08),transparent 50%),var(--bg-elev);}

/* ==========================================================================
   Фильтры матчей: вкладки LIVE / Предстоящие / Результаты (renderMatches)
   ========================================================================== */
.mf-tabs{
  display:flex;gap:2px;overflow-x:auto;margin:14px 0 4px;padding:0;
  border-bottom:1px solid var(--border);scrollbar-width:thin;
}
.mf-tabs button{
  flex:none;display:inline-flex;align-items:center;gap:8px;border:0;border-bottom:3px solid transparent;margin-bottom:-1px;
  border-radius:0;background:transparent;color:var(--muted);cursor:pointer;
  padding:11px 16px;font-size:12.5px;font-weight:700;letter-spacing:.7px;text-transform:uppercase;
  transition:color .12s,border-color .12s,background .12s;
}
.mf-tabs button span{
  font-family:var(--font-mono);font-size:11px;padding:1px 7px;border-radius:999px;background:rgba(0,0,0,.28);color:var(--muted);
}
.mf-tabs button:hover{color:var(--text);background:rgba(var(--accent-rgb),.06);}
.mf-tabs button.active{color:var(--text);border-bottom-color:var(--accent);background:rgba(var(--accent-rgb),.10);}
.mf-tabs button.has-live span{background:var(--red);color:#fff;animation:mrPulse 1.6s ease-in-out infinite;}

/* ==========================================================================
   Страница «Статистика» игроков (renderStats) — как hltv.org/stats
   ========================================================================== */
.sp-leaders{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin:12px 0;}
.sp-leader{
  position:relative;overflow:hidden;cursor:pointer;padding:12px 14px 12px;
  border:1px solid var(--border);border-radius:10px;
  background:linear-gradient(180deg,rgba(var(--accent-rgb),.12),transparent 60%),var(--bg-elev);
  transition:transform .12s,border-color .12s,box-shadow .12s;
}
.sp-leader::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--accent);}
.sp-leader:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:0 8px 20px rgba(0,0,0,.25);}
.sp-leader-title{font-size:10.5px;letter-spacing:.9px;text-transform:uppercase;color:var(--muted);font-weight:700;}
.sp-leader-body{display:flex;align-items:center;gap:12px;margin-top:8px;}
.sp-leader-body b{display:block;font-family:var(--font-display);font-size:24px;line-height:1;letter-spacing:.5px;text-transform:uppercase;}
.sp-leader-body em{font-style:normal;font-family:var(--font-mono);font-size:15px;font-weight:800;color:var(--accent-text,var(--text));}

.sp-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:10px;background:var(--bg-elev);}
.sp-table{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:13px;}
.sp-table th,.sp-table td{padding:9px 12px;text-align:center;white-space:nowrap;border-bottom:1px solid var(--border);}
.sp-table tbody tr:last-child td{border-bottom:0;}
.sp-table tbody tr:hover td{background:rgba(var(--accent-rgb),.06);}
.sp-table thead th{
  background:rgba(0,0,0,.22);font-size:10px;font-weight:700;letter-spacing:.9px;text-transform:uppercase;color:var(--muted);
  border-bottom:2px solid var(--border);
}
.sp-th{cursor:pointer;user-select:none;transition:color .12s;}
.sp-th:hover,.sp-th.on{color:var(--text);}
.sp-th.on{box-shadow:inset 0 -3px 0 var(--accent);}
.sp-th.sp-n{cursor:default;box-shadow:none;}
.sp-table .sp-n{width:42px;color:var(--muted);}
.sp-table .sp-left{text-align:left;}
.sp-player{cursor:pointer;display:flex;align-items:center;gap:10px;}
.sp-player b{font-family:var(--font-display);font-size:19px;letter-spacing:.5px;text-transform:uppercase;font-weight:400;}
.sp-player:hover b{color:var(--accent-text,var(--accent));}
.sp-team{font-weight:700;}
.sp-pos{color:var(--green);}
.sp-neg{color:var(--red);}
.sp-rating{font-weight:800;font-size:14px;background:rgba(0,0,0,.14);}
.sp-r-hi{color:var(--green);}
.sp-r-mid{color:var(--yellow);}
.sp-r-low{color:var(--red);}

/* ==========================================================================
   Сетка: подсветка пути команды (наведение / нажатие по названию)
   ========================================================================== */
.bt-hint{margin:0 0 8px;font-size:12px;color:var(--muted);}
.bracket-tree .bt-card,.bracket-tree .bt-line{transition:opacity .15s,border-color .12s,box-shadow .12s,transform .12s;}
.bracket-tree.bt-focus .bt-card:not(.bt-hl-card){opacity:.3;}
.bracket-tree.bt-focus .bt-line{opacity:.2;}
.bracket-tree .bt-card.bt-hl-card{border-color:var(--accent);z-index:3;box-shadow:0 0 0 1px var(--accent),0 6px 16px rgba(0,0,0,.25);}
.bracket-tree .bt-row.bt-hl{background:rgba(var(--accent-rgb),.22);box-shadow:inset 3px 0 0 var(--accent);}
.bracket-tree .bt-row.bt-hl.bt-lose{opacity:1;}
.bracket-tree .bt-row.bt-hl .bt-team{color:var(--text);}

@media (max-width:600px){
  .sp-table th,.sp-table td{padding:8px 8px;}
  .sp-table .sp-n{width:30px;}
  .mf-tabs button{padding:10px 12px;font-size:11.5px;}
}

/* ---- светлая тема для новых блоков ---- */
html[data-theme="light"] .mf-tabs button span,
html[data-theme="light"] .sp-table thead th{background:var(--lt-soft2);}
html[data-theme="light"] .sp-rating{background:var(--lt-soft);}
html[data-theme="light"] .sp-table-wrap,html[data-theme="light"] .sp-leader{background:var(--lt-card);}
html[data-theme="light"] .sp-leader{background:linear-gradient(180deg,rgba(var(--accent-rgb),.10),transparent 60%),var(--lt-card);}
html[data-theme="light"] .sp-leader:hover{box-shadow:0 8px 20px rgba(15,23,42,.14);}
html[data-theme="light"] .sp-pos,html[data-theme="light"] .sp-r-hi{color:var(--lt-green);}
html[data-theme="light"] .sp-neg,html[data-theme="light"] .sp-r-low{color:var(--lt-red);}
html[data-theme="light"] .sp-r-mid{color:var(--lt-yellow);}
html[data-theme="light"] .mf-tabs button.has-live span{background:var(--lt-red);color:#fff;}
html[data-theme="light"] .bracket-tree .bt-card.bt-hl-card{box-shadow:0 0 0 1px var(--accent),0 6px 16px rgba(15,23,42,.16);}


/* ==========================================================================
   ТУРНИР В СТИЛЕ HLTV — участники, групповой этап (Swiss), плей-офф, призовые.
   Подключается ПОСЛЕДНИМ: перебивает прежние .tv-team / .tv-prize / .bt-* правила.
   Разметка: renderParticipantGrid, renderSwissBracketHtml, renderPlayoffTabContent,
   блок призовых в renderTournamentDetailView (app.js).
   ========================================================================== */

/* ---------- Участники («Teams attending») ---------- */
.ev-teams{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:10px;}
.ev-team{
  position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;min-height:200px;
  padding:34px 10px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg-elev-2);
  color:var(--text);font:inherit;text-align:center;cursor:pointer;
  transition:border-color .12s,transform .12s,box-shadow .12s;
}
button.ev-team:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 8px 18px rgba(0,0,0,.28);}
.ev-team-seed,.ev-team-rp{
  position:absolute;top:0;padding:2px 7px;font-family:var(--font-mono);font-size:11px;font-weight:800;line-height:1.5;color:#fff;
}
.ev-team-seed{left:0;border-radius:6px 0 6px 0;background:color-mix(in srgb,var(--muted) 38%,var(--bg-elev-2));}
.ev-team-rp{right:0;border-radius:0 6px 0 6px;background:#d9731a;}
.ev-team-name{
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-weight:800;font-size:14px;letter-spacing:.3px;color:var(--text);
}
.ev-team-logo{flex:1 1 auto;display:flex;align-items:center;justify-content:center;width:100%;}
.ev-team-logo img.team-badge{object-fit:contain !important;border-radius:0 !important;background:none !important;border:0 !important;}
.ev-team-sub{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--muted);}
.ev-team-flags{display:flex;gap:4px;flex-wrap:wrap;justify-content:center;}
.ev-team-flags .tv-team-slot,.ev-team-flags .tv-team-fee{position:static;}
.ev-team.tbd{
  justify-content:center;border-style:dashed;background:transparent;cursor:default;opacity:.55;padding-top:12px;
}
.ev-team.tbd .ev-team-name{color:var(--muted);}

/* ---------- Групповой этап (Swiss) ---------- */
.sw-tools{display:flex;justify-content:flex-end;margin:-4px 0 8px;}
.sw-wrap{overflow-x:auto;padding:14px;border:1px solid var(--border);border-radius:6px;background:var(--bg-elev-2);}
.sw-grid{display:flex;align-items:stretch;gap:0;min-width:max-content;}
.sw-col{display:flex;flex-direction:column;justify-content:center;gap:18px;min-width:138px;padding:0 16px;}
.sw-col:first-child{padding-left:0;}
.sw-col + .sw-col{border-left:1px dashed var(--border);}
.sw-grp{display:flex;flex-direction:column;gap:6px;}
.sw-rec{font-family:var(--font-mono);font-size:12px;font-weight:800;letter-spacing:.5px;color:var(--muted);}
.sw-m{
  display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 9px;
  border:1px solid var(--border);border-radius:6px;background:var(--bg-elev);
  transition:border-color .12s,transform .12s;
}
.sw-m.clk{cursor:pointer;}
.sw-m.clk:hover{border-color:var(--accent);transform:translateY(-1px);}
.sw-m.live{border-color:var(--red);}
.sw-vs{font-family:var(--font-mono);font-size:11px;font-weight:800;color:var(--muted);}
.sw-t{display:inline-flex;align-items:center;justify-content:center;min-width:28px;transition:opacity .12s,filter .12s;}
.sw-t img.team-badge{object-fit:contain !important;border-radius:0 !important;background:none !important;border:0 !important;}
.sw-t.lose{opacity:.32;filter:grayscale(1);}
.sw-t.tbd{color:var(--muted);font-weight:800;}
.sw-m .sw-t.win + .sw-vs, .sw-m .sw-vs{color:var(--text);}
.sw-outs{justify-content:space-between;gap:26px;}
.sw-outs-top,.sw-outs-bot{display:flex;flex-direction:column;gap:8px;}
.sw-outs-top{justify-content:flex-start;}
.sw-outs-bot{justify-content:flex-end;}
.sw-box{display:flex;flex-direction:column;gap:6px;padding:8px 10px;border-radius:6px;min-width:150px;}
.sw-box .sw-rec{color:var(--text);}
.sw-box.ok{background:color-mix(in srgb,var(--green) 22%,var(--bg-elev));border:1px solid color-mix(in srgb,var(--green) 60%,transparent);}
.sw-box.out{background:color-mix(in srgb,var(--red) 20%,var(--bg-elev));border:1px solid color-mix(in srgb,var(--red) 60%,transparent);}
.sw-box-teams{display:flex;flex-wrap:wrap;gap:8px;}
.sw-box-teams .sw-t{cursor:pointer;}

/* ---------- Плей-офф ---------- */
.bracket-tree-wrap{padding:16px 16px 20px;border-radius:6px;background:var(--bg-elev-2);}
.bt-hint{font-size:12px;color:var(--muted);margin-bottom:8px;}
.bt-round-label{
  border-bottom:0;padding:2px 0 6px;
  font-family:inherit;font-size:13px;font-weight:800;letter-spacing:.2px;text-transform:none;color:var(--muted);
}
.bt-line{background:color-mix(in srgb,var(--muted) 45%,transparent);}
.bt-line-h{height:1px;}.bt-line-v{width:1px;}
.bt-card{border-radius:4px;background:var(--bg-elev);}
.bt-row{position:relative;padding:0 0 0 12px;font-weight:600;color:var(--muted);}
.bt-row::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:transparent;}
.bt-row.bt-win::before{background:var(--green);}
.bt-row.bt-lose::before{background:var(--red);}
.bt-row.bt-win{color:var(--text);}
.bt-row.bt-win .bt-team{font-weight:800;}
.bt-row.bt-lose{opacity:1;}
.bt-row.bt-lose .bt-team{opacity:.55;}
.bt-row.bt-lose .bt-team img.team-badge{filter:grayscale(1);}
.bt-team{font-family:inherit;font-size:13px;letter-spacing:0;text-transform:none;}
.bt-team img.team-badge{object-fit:contain !important;border-radius:0 !important;background:none !important;border:0 !important;}
.bt-score{background:transparent;min-width:28px;padding:0 10px;font-size:13px;}
.bt-row.bt-win .bt-score{background:transparent;color:var(--text);}
.bt-row.bt-lose .bt-score{color:var(--muted);}
.bt-card.bt-champion{border-color:#ffd24a;}

/* ---------- Призовые ---------- */
.tv-prizes{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;}
.tv-prize{
  min-height:96px;justify-content:center;gap:4px;padding:14px 10px;border-radius:6px;
  background:var(--bg-elev-2);
}
.tv-prize::before{height:2px;}
.tv-prize.top{grid-column:span 2;min-height:128px;}
.tv-prize.top .tv-prize-amt{font-size:22px;}
.tv-prize-wm{
  position:absolute;left:50%;top:50%;height:150%;width:auto;max-width:70%;transform:translate(-50%,-50%);
  object-fit:contain;opacity:.07;pointer-events:none;
}
.tv-prize > *:not(.tv-prize-wm){position:relative;z-index:1;}
.tv-prize-team{font-family:inherit;font-size:16px;font-weight:800;letter-spacing:.2px;text-transform:none;}
.tv-prize.top .tv-prize-team{font-size:19px;}
.tv-prize-title{font-size:15px;font-weight:800;color:var(--tier,var(--text));}
.tv-prize-place{font-size:13px;font-weight:800;text-transform:none;letter-spacing:0;}
.tv-prize-amt{font-size:16px;}
.tv-prize-rp{font-size:11px;}
.tv-prize.p1{background:linear-gradient(180deg,rgba(255,210,74,.12),var(--bg-elev-2) 75%);}
@media (max-width:700px){
  .tv-prizes{grid-template-columns:repeat(2,minmax(0,1fr));}
  .ev-teams{grid-template-columns:repeat(2,minmax(0,1fr));}
}


/* ---------- Окно «Расписание раунда» ---------- */
.modal.rs-modal{max-width:720px;width:calc(100% - 24px);}
.rs-quick{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin:10px 0 12px;}
.rs-quick .field{margin:0;flex:1 1 130px;}
.rs-list{max-height:44vh;overflow:auto;border-top:1px solid var(--border);}
.rs-row{display:grid;grid-template-columns:minmax(130px,1.5fr) 1fr .8fr .7fr;gap:8px;align-items:center;padding:7px 0;border-bottom:1px solid var(--border);}
.rs-match{display:flex;flex-direction:column;min-width:0;}
.rs-match b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rs-match small{color:var(--muted);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rs-row input,.rs-row select{width:100%;min-width:0;}
.rs-tg{display:flex;align-items:center;gap:8px;margin:12px 0 4px;font-size:13px;cursor:pointer;}
.rs-tg input{width:auto;}
@media (max-width:620px){
  .rs-row{grid-template-columns:1fr 1fr;}
  .rs-match{grid-column:1 / -1;}
}
