/* ============================================================
   TSS — HEADER + HERO CARRUSEL
   Cargar DESPUÉS de los estilos inline de index.html.
   ============================================================ */

:root{
  /* 16/9 = la miniatura de YouTube entra entera, sin recorte.
     1200px = tope de ancho: la fuente es 1280×720, así no se agranda ni pixela. */
  --th-ar: 16/9;
  --th-w: 66vw;
  --th-max: 1200px;
  --th-gap: 20px;
}

/* ══════════════════════════════════════════
   HEADER — logo · menú · cuenta
   ══════════════════════════════════════════ */
.topnav{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  gap:18px;
}
.topnav .nav-spacer{display:none}
.topnav .nav-logo{justify-self:start}
.topnav .nav-links{justify-self:center;display:flex;align-items:center;gap:6px}
.topnav .nav-auth,
.topnav #navUser,
.topnav .nav-hamburger{grid-column:3;justify-self:end}

/* Links: texto limpio, subrayado fino como indicador. Sin pastillas. */
.topnav .nlnk{
  position:relative;
  height:auto;padding:6px 14px;
  border-radius:0;background:none;
  font-family:var(--ff-display);
  font-size:16px;font-weight:600;letter-spacing:.6px;
  color:rgba(255,255,255,.82);
  transition:color .18s ease;
}
.topnav .nlnk::after{
  content:'';position:absolute;left:14px;right:14px;bottom:-2px;height:1.5px;
  background:var(--cyan);transform:scaleX(0);transform-origin:center;
  transition:transform .22s ease;
}
.topnav .nlnk:hover{color:#fff;background:none}
.topnav .nlnk:hover::after{transform:scaleX(1)}
.topnav .nlnk.active{color:#fff;background:none}
.topnav .nlnk.active::after{transform:scaleX(1)}

/* Iniciar sesión: contorno fino, sin glow */
.topnav .btn-cta{
  height:36px;padding:0 20px;
  border-radius:4px;
  background:transparent;
  border:1px solid rgba(255,255,255,.28);
  color:#fff;
  font-family:var(--ff-display);
  font-size:15px;font-weight:600;letter-spacing:.6px;
  box-shadow:none;
  transition:background .18s ease,border-color .18s ease;
}
.topnav .btn-cta:hover{
  background:rgba(255,255,255,.08);
  border-color:rgba(255,255,255,.55);
  transform:none;
}

@media(max-width:1180px){
  .topnav .nlnk{font-size:15px;padding:6px 10px}
  .topnav .nlnk::after{left:10px;right:10px}
}
@media(max-width:980px){
  .topnav{grid-template-columns:1fr auto;gap:10px}
  .topnav .nav-links{display:none}
}

/* ══════════════════════════════════════════
   HERO — carrusel infinito
   ══════════════════════════════════════════ */
#tssHero{
  position:relative;
  padding:24px 0 26px;
  border-bottom:1px solid var(--border);
  overflow:hidden;
}

.th-viewport{overflow:hidden;width:100%}

.th-rail{
  display:flex;
  gap:var(--th-gap);
  will-change:transform;
  transition:transform .6s cubic-bezier(.4,0,.2,1);
}
.th-rail.no-anim{transition:none}

.th-slide{
  position:relative;
  flex:0 0 min(var(--th-w), var(--th-max));
  aspect-ratio:var(--th-ar);
  border-radius:18px;
  overflow:hidden;
  background:#000;
  cursor:pointer;
  border:1px solid var(--border);
  opacity:.34;
  transition:opacity .5s ease;
}
.th-slide.is-active{opacity:1}

.th-slide img{width:100%;height:100%;object-fit:cover;display:block}

.th-slide::after{
  content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,transparent 45%,rgba(0,0,0,.82) 100%);
}

.th-body{
  position:absolute;left:0;right:0;bottom:0;z-index:3;
  padding:22px 26px;
  display:flex;align-items:flex-end;justify-content:space-between;gap:18px;
}
.th-titles{min-width:0}

.th-kicker{
  display:inline-flex;align-items:center;gap:7px;
  font-size:13px;font-weight:700;letter-spacing:2px;text-transform:uppercase;
  color:var(--cyan);margin-bottom:7px;
}
.th-kicker.is-live{color:var(--rose)}
.th-kicker .dot{width:7px;height:7px;border-radius:50%;background:currentColor;flex-shrink:0}
.th-kicker.is-live .dot{animation:thPulse 1.8s ease-in-out infinite}
@keyframes thPulse{
  0%{box-shadow:0 0 0 0 rgba(224,43,43,.7)}
  70%{box-shadow:0 0 0 8px rgba(224,43,43,0)}
  100%{box-shadow:0 0 0 0 rgba(224,43,43,0)}
}

.th-title{
  font-family:var(--ff-display);
  font-size:clamp(17px,1.5vw,26px);font-weight:700;color:#fff;line-height:1.2;
  text-shadow:0 2px 16px rgba(0,0,0,.7);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}

.th-play{
  flex-shrink:0;
  width:52px;height:52px;border-radius:50%;
  display:grid;place-items:center;
  background:rgba(255,255,255,.14);
  border:1px solid rgba(255,255,255,.3);
  backdrop-filter:blur(4px);
  transition:background .2s ease,border-color .2s ease;
}
.th-slide.is-active:hover .th-play{background:var(--rose);border-color:var(--rose)}
.th-play svg{width:20px;height:20px;fill:#fff;margin-left:2px}

/* Flechas */
.th-nav{
  position:absolute;top:50%;transform:translateY(-50%);z-index:8;
  width:46px;height:46px;border-radius:50%;
  display:grid;place-items:center;
  background:rgba(10,10,10,.7);border:1px solid rgba(255,255,255,.16);color:#fff;
  backdrop-filter:blur(8px);
  transition:background .2s ease,border-color .2s ease;
}
.th-nav:hover{background:rgba(10,10,10,.95);border-color:rgba(255,255,255,.4)}
.th-prev{left:22px}
.th-next{right:22px}
.th-nav svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2}

/* Puntos */
.th-dots{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:18px}
.th-dot{
  width:8px;height:8px;border-radius:50%;
  background:rgba(255,255,255,.22);border:none;padding:0;
  transition:width .25s ease,background .25s ease,border-radius .25s ease;
}
.th-dot.is-active{width:26px;border-radius:4px;background:var(--cyan)}

/* Esqueleto */
.th-skel{
  flex:0 0 min(var(--th-w), var(--th-max));
  aspect-ratio:var(--th-ar);border-radius:18px;
  background:linear-gradient(90deg,var(--ink2) 25%,var(--surface) 50%,var(--ink2) 75%);
  background-size:200% 100%;animation:thShimmer 1.4s linear infinite;
}
@keyframes thShimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* Reproductor + chat: ocultos hasta elegir un banner o hasta el vivo */
.hero-live{display:none}
.hero-live.is-open{display:grid}

/* ══════════════════════════════════════════
   MÓVIL
   ══════════════════════════════════════════ */
@media(max-width:900px){
  :root{--th-w:82vw;--th-gap:12px}
  #tssHero{padding:14px 0 18px}
  .th-slide{border-radius:14px;opacity:.4}
  .th-body{padding:14px 16px;gap:12px}
  .th-kicker{font-size:11px;letter-spacing:1.4px;margin-bottom:5px}
  .th-title{font-size:15px;-webkit-line-clamp:2}
  .th-play{width:40px;height:40px}
  .th-play svg{width:16px;height:16px}
  .th-nav{display:none}
  .th-dots{margin-top:13px;gap:7px}
  .th-dot{width:7px;height:7px}
  .th-dot.is-active{width:20px}
}
@media(max-width:560px){
  :root{--th-w:86vw;--th-gap:10px}
  .th-body{padding:12px 14px;gap:10px}
  .th-title{font-size:14px;line-height:1.25}
  .th-kicker{font-size:10px;margin-bottom:4px}
  .th-play{width:36px;height:36px}
  .th-play svg{width:14px;height:14px}
  .th-slide::after{background:linear-gradient(180deg,transparent 38%,rgba(0,0,0,.88) 100%)}
}

/* ══════════════════════════════════════════
   EMERGENTE — elegir dónde ver + reproductor
   ══════════════════════════════════════════ */
.th-modal{
  position:fixed;inset:0;z-index:900;
  display:none;align-items:center;justify-content:center;
  padding:24px;
  background:rgba(4,4,6,.86);
  backdrop-filter:blur(10px);
  opacity:0;transition:opacity .22s ease;
}
.th-modal.is-open{display:flex}
.th-modal.is-visible{opacity:1}

.th-modal-close{
  position:absolute;top:22px;right:24px;z-index:3;
  width:42px;height:42px;border-radius:50%;
  display:grid;place-items:center;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);color:#fff;
  transition:background .18s ease,border-color .18s ease;
}
.th-modal-close:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.4)}
.th-modal-close svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2.2}

/* ── Tarjeta de elección ── */
.th-choice{
  width:100%;max-width:460px;
  background:var(--ink2);
  border:1px solid var(--border2);
  border-radius:14px;overflow:hidden;
  transform:translateY(10px) scale(.98);
  transition:transform .25s cubic-bezier(.4,0,.2,1);
}
.th-modal.is-visible .th-choice{transform:none}

.th-choice-thumb{position:relative;width:100%;aspect-ratio:16/9;background:#000}
.th-choice-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.th-choice-thumb::after{
  content:'';position:absolute;inset:0;
  background:linear-gradient(180deg,transparent 45%,rgba(17,17,17,.96) 100%);
}

.th-choice-body{padding:20px 22px 22px;margin-top:-52px;position:relative;z-index:2}

.th-choice-title{
  font-family:var(--ff-display);
  font-size:19px;font-weight:700;color:#fff;line-height:1.3;
  margin-bottom:18px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}

.th-choice-actions{display:flex;flex-direction:column;gap:9px}

.th-btn{
  display:flex;align-items:center;justify-content:center;gap:9px;
  width:100%;height:46px;border-radius:7px;
  font-family:var(--ff-display);font-size:16px;font-weight:600;letter-spacing:.4px;
  border:1px solid transparent;
  transition:background .18s ease,border-color .18s ease;
}
.th-btn svg{width:18px;height:18px;flex-shrink:0}
.th-btn-main{background:var(--cyan);color:#fff}
.th-btn-main:hover{background:var(--violet)}
.th-btn-main svg{fill:currentColor}
.th-btn-ghost{background:transparent;border-color:rgba(255,255,255,.22);color:rgba(255,255,255,.88)}
.th-btn-ghost:hover{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.45)}
.th-btn-ghost svg{fill:#ff0033}

/* ── Reproductor emergente ── */
.th-player{
  width:100%;max-width:min(1200px,92vw);
  transform:translateY(10px) scale(.98);
  transition:transform .25s cubic-bezier(.4,0,.2,1);
}
.th-modal.is-visible .th-player{transform:none}

.th-player-frame{
  position:relative;width:100%;aspect-ratio:16/9;
  max-height:78vh;
  background:#000;border-radius:12px;overflow:hidden;
  border:1px solid var(--border2);
}
.th-player-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}

.th-player-bar{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  margin-top:14px;
}
.th-player-title{
  font-family:var(--ff-display);font-size:17px;font-weight:600;color:var(--t1);
  line-height:1.35;min-width:0;
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;
}
.th-player-yt{
  flex-shrink:0;
  display:flex;align-items:center;gap:8px;
  height:36px;padding:0 15px;border-radius:5px;
  background:transparent;border:1px solid rgba(255,255,255,.22);
  color:rgba(255,255,255,.85);font-size:14px;font-weight:600;
  transition:background .18s ease,border-color .18s ease;
}
.th-player-yt:hover{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.45)}
.th-player-yt svg{width:17px;height:17px;fill:#ff0033}

@media(max-width:700px){
  .th-modal{padding:14px}
  .th-modal-close{top:12px;right:14px;width:38px;height:38px}
  .th-choice{max-width:100%}
  .th-choice-body{padding:16px 17px 18px}
  .th-choice-title{font-size:17px;margin-bottom:15px}
  .th-btn{height:44px;font-size:15px}
  .th-player{max-width:100%}
  .th-player-frame{border-radius:9px}
  .th-player-bar{flex-direction:column;align-items:stretch;gap:10px;margin-top:11px}
  .th-player-title{font-size:15px;-webkit-line-clamp:2}
  .th-player-yt{justify-content:center;height:40px}
}

/* Cuando la emisión es vertical el reproductor se angosta, en vez de
   dejar dos franjas negras ocupando media pantalla. Si es horizontal
   no se toca nada: usa el marco 16:9 de siempre. */
.th-player.is-vertical{max-width:min(440px,92vw)}
.th-player.is-vertical .th-player-frame{aspect-ratio:9/16;max-height:80vh}

/* El modal de login del sitio y el del reproductor tienen los dos
   z-index 900, y el del reproductor se agrega al final del body, así
   que tapaba al de login: "Entrar o registrarme" abría el formulario
   detrás del vivo y parecía que no hacía nada. */
.modal-overlay{z-index:960}

/* ══════════════════════════════════════════════════════════════
   CHAT DEL VIVO
   ══════════════════════════════════════════════════════════════
   En escritorio va al costado del reproductor. En celular, debajo,
   ocupando lo que sobra de pantalla: el video arriba y el chat abajo,
   como en YouTube. Los colores son los de TSS, nada de azules. */
.th-player.con-chat{
  position:fixed;inset:0;max-width:none;width:auto;transform:none;
  display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:0;
  background:#000;
}
/* Da lo mismo que la señal sea vertical u horizontal: el área de la
   izquierda es negra y el reproductor de Mediastream se acomoda solo
   adentro. Con 9:16 quedan franjas negras a los costados, como en
   YouTube; con 16:9 llena el ancho. */
.th-player.con-chat.is-vertical{max-width:none;grid-template-columns:minmax(0,1fr) 380px}
.th-player.con-chat .th-player-col{display:flex;flex-direction:column;min-width:0;height:100vh}
.th-player.con-chat .th-player-frame{
  flex:1;min-height:0;aspect-ratio:auto;max-height:none;border-radius:0;border:0;
}
.th-player.con-chat .th-player-bar{margin:0;padding:12px 18px;background:#0b0b0b;
  border-top:1px solid var(--border,#242424)}
.th-modal.is-visible .th-player.con-chat{transform:none}
.th-player-col{min-width:0}

.tss-chat{
  display:flex;flex-direction:column;min-width:0;
  height:100vh;
  background:#0e0e0e;border-left:1px solid var(--border,#242424);overflow:hidden;
}
/* La cruz de cerrar: arriba a la derecha, dentro de la cabecera del
   chat, chica y sin fondo. Se nota al pasar el mouse, nada más. */
.th-modal:has(.con-chat) .th-modal-close{
  z-index:5;top:13px;right:14px;left:auto;
  width:30px;height:30px;background:transparent;border-color:transparent;color:#8a8a8a;
}
.th-modal:has(.con-chat) .th-modal-close:hover{background:rgba(255,255,255,.08);color:#fff;border-color:#2a2a2a}
.th-modal:has(.con-chat) .th-modal-close svg{width:15px;height:15px}
/* y la cabecera le deja el hueco */
.th-player.con-chat .tc-head{padding-right:52px}
.tc-head{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:14px 18px;border-bottom:1px solid var(--border,#242424);background:#111;
}
.tc-titulo{font-size:15px;font-weight:700;letter-spacing:.01em}
.tc-sub{
  display:inline-flex;align-items:center;gap:6px;margin-top:3px;
  font-family:var(--ff-mono,monospace);font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--t3,#8a8a8a);
}
.tc-dot{width:6px;height:6px;border-radius:50%;background:var(--rose,#d92b2b);
  animation:tcLatido 1.6s ease-in-out infinite}
@keyframes tcLatido{0%,100%{opacity:1}50%{opacity:.3}}

/* La lista y, encima, la capa donde vuelan las reacciones. */
.tc-cuerpo{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}
.tc-lista{flex:1;overflow-y:auto;padding:10px 12px;display:flex;flex-direction:column;gap:2px;
  scrollbar-width:thin;scrollbar-color:#333 transparent}
.tc-lista::-webkit-scrollbar{width:6px}
.tc-lista::-webkit-scrollbar-thumb{background:#333;border-radius:3px}
.tc-vacio{color:var(--t3,#8a8a8a);font-size:13.5px;text-align:center;padding:26px 10px;line-height:1.6}

/* Mensaje como en YouTube: círculo con la inicial, nombre en color y
   el texto a continuación en la misma línea. */
.tc-msg{display:flex;align-items:flex-start;gap:9px;padding:5px 6px;border-radius:8px;
  font-size:13.5px;line-height:1.45;word-break:break-word}
.tc-msg:hover{background:rgba(255,255,255,.035)}
.tc-avatar{flex:none;width:24px;height:24px;border-radius:50%;margin-top:1px;
  display:grid;place-items:center;font-size:11px;font-weight:700;color:#0b0b0b}
.tc-cuerpo-msg{min-width:0}
.tc-nombre{font-weight:700;font-size:12.5px}
.tc-texto{color:var(--t1,#ece9e3)}

/* Reacciones: una tira chica arriba del cuadro de texto. */
.tc-reacciones{display:flex;gap:4px;padding:8px 12px 0;background:#111;
  border-top:1px solid var(--border,#242424)}
.tc-re{
  flex:1;background:transparent;border:1px solid transparent;border-radius:999px;
  padding:5px 0;font-size:17px;line-height:1;cursor:pointer;
  transition:background .15s ease,transform .15s ease;
}
.tc-re:hover{background:rgba(255,255,255,.06);border-color:var(--border,#242424)}
.tc-re.is-pop{animation:tcPop .35s ease}
@keyframes tcPop{30%{transform:scale(1.35)}100%{transform:scale(1)}}

/* Los emojis que suben. Chicos, con deriva leve y se van rápido. */
.tc-vuelo{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.tc-globo{
  position:absolute;bottom:6px;font-size:22px;line-height:1;
  animation:tcSube 2.4s cubic-bezier(.2,.6,.3,1) forwards;
  filter:drop-shadow(0 2px 6px rgba(0,0,0,.5));
}
@keyframes tcSube{
  0%{transform:translate(0,0) scale(.7);opacity:0}
  12%{opacity:1;transform:translate(0,-18px) scale(1)}
  100%{transform:translate(var(--deriva,0),-260px) scale(.9);opacity:0}
}

.tc-pie{padding:10px 12px 12px;background:#111}
.tc-form{display:flex;gap:8px;align-items:center}
.tc-input{
  flex:1;min-width:0;background:#0b0b0b;border:1px solid var(--border,#242424);
  color:var(--t1,#ece9e3);border-radius:999px;padding:10px 15px;font-size:14px;font-family:inherit;
}
.tc-input:focus{outline:none;border-color:var(--rose,#d92b2b)}
.tc-enviar{
  flex:none;width:40px;height:40px;border-radius:50%;border:0;cursor:pointer;
  background:var(--rose,#d92b2b);color:#fff;display:grid;place-items:center;
}
.tc-enviar:hover{background:#b92222}
.tc-enviar svg{width:19px;height:19px}
.tc-aviso{color:var(--rose,#d92b2b);font-size:12.5px;margin-top:7px;min-height:1px}

.tc-invita{text-align:center}
.tc-invita p{color:var(--t2,#bdbdbd);font-size:13.5px;line-height:1.55;margin:0 0 11px}
.tc-btn{
  width:100%;background:var(--rose,#d92b2b);color:#fff;border:0;border-radius:6px;cursor:pointer;
  padding:11px 16px;font-family:var(--ff-mono,monospace);font-size:12.5px;
  letter-spacing:.09em;text-transform:uppercase;font-weight:700;
}
.tc-btn:hover{background:#b92222}
/* Chat sin cuenta (3/10): primero se pide solo el nombre */
.tc-form-nombre .tc-input{flex:1}
.tc-btn-nombre{flex:none;width:auto;padding:0 16px;height:42px;white-space:nowrap}
.tc-como{margin-top:7px;font-size:11.5px;color:var(--t3,#8a867f);text-align:center}
.tc-como b{color:var(--t2,#bdbdbd);font-weight:600}
.tc-cambiar{background:none;border:0;padding:0;color:var(--rose,#d92b2b);font-size:11.5px;cursor:pointer;text-decoration:underline}

/* ── Mensajes del equipo y moderación (4/10) ── */
.tc-msg.tc-staff{background:rgba(217,43,43,.1);border:1px solid rgba(217,43,43,.28);border-radius:10px;padding:7px 9px;margin:3px 0}
.tc-avatar-staff{background:#d92b2b;color:#fff;font-size:9px;font-weight:800;letter-spacing:.04em}
.tc-staff .tc-nombre{color:#ff7a7a}
.tc-check{width:13px;height:13px;vertical-align:-2px;margin-left:2px}
.tc-mod{display:none;flex:none;gap:4px;margin-left:auto;align-self:flex-start}
.es-staff .tc-msg:hover .tc-mod,.es-staff .tc-msg:active .tc-mod{display:inline-flex}
.tc-mod button{background:#1d1d1d;border:1px solid #333;border-radius:7px;width:30px;height:30px;font-size:13px;cursor:pointer;line-height:1}
.tc-mod button:hover{border-color:#d92b2b}
.tc-como-staff{color:#c9a7a7}
@media(pointer:coarse){.es-staff .tc-msg .tc-mod{display:inline-flex}}   /* en el celular no hay hover */

/* Mensaje fijado: banda arriba de la lista, visible para todos */
.tc-fijado{
  flex:none;display:flex;align-items:flex-start;gap:8px;
  margin:8px 10px 0;padding:9px 11px;border-radius:10px;
  background:rgba(217,43,43,.14);border:1px solid rgba(217,43,43,.35);
}
.tc-fij-pin{flex:none;font-size:13px}
.tc-fij-txt{flex:1;min-width:0;font-size:13px;line-height:1.45;color:#eee;word-wrap:break-word}
.tc-fij-txt b{color:#ff8a8a}
.tc-fij-x{flex:none;background:none;border:0;color:#bbb;font-size:13px;cursor:pointer;padding:2px}
.tc-fij-x:hover{color:#fff}


@media (max-width:900px){
  .th-player.con-chat,
  .th-player.con-chat.is-vertical{position:relative;inset:auto;grid-template-columns:1fr;gap:0;
    max-width:100vw;width:100%;background:transparent}
  .th-player.con-chat .th-player-col{height:auto}
  /* El video se limita para que el chat entre sin empujar nada. */
  .th-player.con-chat .th-player-frame{flex:none;aspect-ratio:16/9;max-height:46vh;border-radius:12px;
    border:1px solid var(--border2,#2a2a2a)}
  .th-player.con-chat.is-vertical .th-player-frame{aspect-ratio:9/16}
  .th-player.con-chat .th-player-bar{display:none}
  .tss-chat{height:46vh;border:1px solid var(--border,#242424);border-radius:14px 14px 0 0;border-bottom:0}
  .th-modal:has(.con-chat) .th-modal-close{display:none}
  .th-player.con-chat .tc-head{padding-right:18px}
}

/* Banner del vivo cuando el evento no tiene miniatura cargada en
   Mediastream: fondo oscuro con el logo de marca de agua, en vez del
   cartel gris de "Sin imagen". Lo ideal es que suban una. */
.th-vivo-fondo{
  width:100%;height:100%;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(120% 90% at 50% 20%,rgba(217,43,43,.30),transparent 70%),#0b0b0b;
}
.th-vivo-fondo span{
  font-family:var(--ff-display,inherit);font-size:clamp(48px,9vw,104px);
  letter-spacing:.06em;color:rgba(255,255,255,.14);line-height:1;
}



/* Contador de espectadores en el kicker del vivo */
.th-viewers{
  margin-left:12px;font-size:11px;opacity:.7;
  font-family:var(--ff-mono,monospace);letter-spacing:.04em;
}
.th-viewers::before{content:'·  '}
