/* Турнирная сетка (см. bracket-view.js). Цвета зашиты внутри, чтобы не зависеть от токенов страницы. */

.bv-scroll {
  --bv-card: #131320;
  --bv-card-2: #191927;
  --bv-line: #2A2A3D;
  --bv-link: #34344C;
  --bv-txt: #F3F2F8;
  --bv-dim: #8C8BA3;
  --bv-faint: #5F5E72;
  --bv-a: #29E8CC;
  --bv-b: #FF3E7F;
  --bv-gold: #FFD447;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  background: #0D0D14;
  border: 1px solid var(--bv-line);
  border-radius: 14px;
  cursor: grab;
  max-width: 100%;
}
.bv-scroll.bv-grab { cursor: grabbing; user-select: none; }

.bv { position: relative; font-family: 'Inter', sans-serif; color: var(--bv-txt); }

.bv-lines { position: absolute; left: 0; top: 0; pointer-events: none; }
.bv-ln { fill: none; stroke: var(--bv-link); stroke-width: 2; }
.bv-ln-w { stroke: rgba(255, 212, 71, 0.55); }

/* заголовки этапов */
.bv-rh { position: absolute; top: 14px; }
.bv-rt { text-wrap: balance; }
.bv-rt {
  font-family: 'Big Shoulders Display', 'Inter', sans-serif;
  font-weight: 800; font-size: 20px; text-transform: uppercase; letter-spacing: 0.5px; line-height: 1.1;
}
.bv-rf {
  margin-top: 4px;
  font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 1px; color: var(--bv-dim);
}

/* карточка матча */
.bv-m {
  position: absolute;
  background: var(--bv-card);
  border: 1px solid var(--bv-line);
  border-radius: 8px;
  overflow: visible;
}
.bv-m.bv-click { cursor: pointer; }
.bv-m.bv-click:hover { border-color: #454568; }
.bv-m.bv-sel { border-color: var(--bv-gold); box-shadow: 0 0 0 1px var(--bv-gold); }
.bv-m.bv-live { border-color: var(--bv-b); box-shadow: 0 0 0 1px rgba(255, 62, 127, 0.45); }
.bv-m.bv-byecard { opacity: 0.6; }

.bv-num {
  position: absolute; left: 2px; top: -15px; white-space: nowrap;
  font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 1px; color: var(--bv-faint);
  display: flex; align-items: center; gap: 8px;
}
.bv-livetag { display: inline-flex; align-items: center; gap: 5px; color: var(--bv-b); font-weight: 700; }
.bv-livetag i {
  width: 6px; height: 6px; border-radius: 50%; background: var(--bv-b);
  animation: bv-pulse 1.5s infinite;
}
@keyframes bv-pulse {
  0% { box-shadow: 0 0 0 0 rgba(255, 62, 127, 0.55); }
  70% { box-shadow: 0 0 0 6px rgba(255, 62, 127, 0); }
  100% { box-shadow: 0 0 0 0 rgba(255, 62, 127, 0); }
}

.bv-row {
  height: 32px; display: flex; align-items: center; gap: 8px;
  padding-right: 10px; border-left: 3px solid transparent; position: relative;
}
.bv-row.bv-a { border-left-color: var(--bv-a); border-radius: 7px 7px 0 0; }
.bv-row.bv-b { border-left-color: var(--bv-b); border-radius: 0 0 7px 7px; border-top: 1px solid #22222F; }

.bv-seed {
  flex: 0 0 26px; text-align: center; font-style: normal;
  font-family: 'JetBrains Mono', monospace; font-size: 10px; color: var(--bv-faint);
}
.bv-name { flex: 1; min-width: 0; font-size: 13px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bv-score {
  flex: 0 0 auto; min-width: 20px; text-align: right;
  font-family: 'Big Shoulders Display', 'Inter', sans-serif; font-weight: 800; font-size: 19px; color: var(--bv-dim);
}

.bv-row.bv-win { background: rgba(255, 212, 71, 0.10); }
.bv-row.bv-win .bv-score { color: var(--bv-gold); }
.bv-row.bv-lose .bv-name { color: var(--bv-faint); font-weight: 500; }
.bv-row.bv-lose .bv-score { color: var(--bv-faint); }

.bv-row.bv-tbd .bv-name { color: var(--bv-faint); font-weight: 400; font-style: italic; }
.bv-row.bv-open .bv-name {
  color: var(--bv-faint); font-weight: 700; font-style: normal;
  font-family: 'JetBrains Mono', monospace; font-size: 13px; letter-spacing: 3px;
}
.bv-row.bv-bye .bv-name {
  color: var(--bv-faint); font-weight: 600; font-style: normal;
  font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 2px;
}

/* призовые места в финальных карточках */
.bv-m.bv-finalcard { border-color: rgba(255, 212, 71, 0.6); box-shadow: 0 0 0 1px rgba(255, 212, 71, 0.35), 0 0 28px rgba(255, 212, 71, 0.18); }
.bv-m.bv-bronzecard { border-color: rgba(208, 138, 84, 0.5); }
.bv-row .bv-seed { font-size: 10px; }
.bv-row.bv-champ, .bv-row.bv-second, .bv-row.bv-third { height: 32px; }
.bv-row.bv-champ .bv-seed, .bv-row.bv-second .bv-seed, .bv-row.bv-third .bv-seed { font-size: 15px; line-height: 1; }
.bv-row.bv-champ { background: linear-gradient(90deg, rgba(255, 212, 71, 0.34), rgba(255, 212, 71, 0.08)); }
.bv-row.bv-champ .bv-name { color: var(--bv-gold); font-weight: 800; font-size: 14.5px; text-transform: uppercase; letter-spacing: 0.3px; }
.bv-row.bv-champ .bv-score { color: var(--bv-gold); font-size: 22px; }
.bv-row.bv-second { background: linear-gradient(90deg, rgba(201, 203, 214, 0.2), rgba(201, 203, 214, 0.04)); }
.bv-row.bv-second .bv-name { color: #C9CBD6; font-weight: 700; }
.bv-row.bv-second .bv-score { color: #C9CBD6; }
.bv-row.bv-third { background: linear-gradient(90deg, rgba(208, 138, 84, 0.22), rgba(208, 138, 84, 0.04)); }
.bv-row.bv-third .bv-name { color: #D08A54; font-weight: 700; }
.bv-row.bv-third .bv-score { color: #D08A54; }

.bv-row.bv-open { background: repeating-linear-gradient(135deg, transparent 0 6px, rgba(255,255,255,0.025) 6px 12px); }

.bv-row.bv-hl { background: rgba(255, 255, 255, 0.07); }
.bv-row.bv-win.bv-hl { background: rgba(255, 212, 71, 0.2); }

/* режим перестановки (админка) */
.bv-row.bv-swap { cursor: pointer; }
.bv-row.bv-swap:hover { outline: 1px dashed var(--bv-a); outline-offset: -1px; }
.bv-row.bv-pick { outline: 2px solid var(--bv-a); outline-offset: -2px; background: rgba(41, 232, 204, 0.12); }

/* призёры: 1 место крупнее и с золотым свечением */
.bv-podium { display: flex; flex-wrap: wrap; gap: 12px; margin: 0 0 18px; align-items: stretch; }
.bv-pod {
  flex: 1 1 180px; padding: 14px 18px; border-radius: 12px;
  background: #131320; border: 1px solid #2A2A3D; border-left-width: 4px;
}
.bv-pod-p {
  display: flex; align-items: center; gap: 8px;
  font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 2px; text-transform: uppercase; color: #8C8BA3;
}
.bv-pod-i { font-size: 18px; line-height: 1; letter-spacing: 0; }
.bv-pod-n {
  margin-top: 6px; font-family: 'Big Shoulders Display', 'Inter', sans-serif; font-weight: 800;
  font-size: 26px; line-height: 1.1; text-transform: uppercase;
}
.bv-pod-1 {
  flex: 2 1 280px; padding: 22px 26px; border-color: rgba(255, 212, 71, 0.55); border-left-color: #FFD447;
  background: linear-gradient(120deg, rgba(255, 212, 71, 0.2), #131320 62%);
  box-shadow: 0 0 40px rgba(255, 212, 71, 0.16);
}
.bv-pod-1 .bv-pod-p { color: #FFD447; font-size: 12px; }
.bv-pod-1 .bv-pod-i { font-size: 28px; }
.bv-pod-1 .bv-pod-n { color: #FFD447; font-size: 46px; margin-top: 8px; letter-spacing: 0.5px; text-shadow: 0 0 24px rgba(255, 212, 71, 0.35); }
.bv-pod-2 { border-left-color: #C9CBD6; background: linear-gradient(120deg, rgba(201, 203, 214, 0.1), #131320 70%); }
.bv-pod-2 .bv-pod-p { color: #C9CBD6; }
.bv-pod-2 .bv-pod-n { color: #C9CBD6; font-size: 32px; }
.bv-pod-3 { border-left-color: #D08A54; }
.bv-pod-3 .bv-pod-n { color: #D08A54; }

@media (prefers-reduced-motion: reduce) {
  .bv-livetag i { animation: none; }
}

.bv-sizer { position: relative; }

/* замена выбывшего участника: «↩ LIMB» рядом с ником */
.bv-sub { flex: 0 1 auto; max-width: 78px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: .5px; color: var(--bv-gold); opacity: .85; }
