/* ==========================================================================
   La Sopa — lasopapodcast.com
   Riso-print worlds: rojo → papel → teal → dorado → rojo.
   Tokens: ver BRAND.md
   ========================================================================== */

:root {
  --maroon: #630B17;
  --crimson: #CD142C;
  --red-hot: #EA051A;
  --paper: #F4F4F4;
  --teal-deep: #003031;
  --teal: #034142;
  --teal-shadow: #001B1C;
  --lime: #C0FF80;
  --gold: #FFC504;
  --ink: #141414;

  --font: "Kanit", "Trebuchet MS", sans-serif;
  --step-display: clamp(2.4rem, 6.5vw, 4.6rem);
  --step-lead: clamp(1.02rem, 1.5vw, 1.2rem);
  --wrap: 72rem;
  --shadow-pop: 8px 8px 0;
}

* { margin: 0; padding: 0; box-sizing: border-box; }

[hidden] { display: none !important; }

html { scroll-behavior: smooth; }

body {
  font-family: var(--font);
  font-weight: 300;
  background: var(--maroon);
  color: var(--paper);
  line-height: 1.55;
  overflow-x: hidden;
}

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

.wrap {
  max-width: var(--wrap);
  margin-inline: auto;
  padding-inline: clamp(1.25rem, 4vw, 2.5rem);
}

/* ---- type voices ------------------------------------------------------- */

.display {
  font-size: var(--step-display);
  font-weight: 900;
  font-style: italic;
  text-transform: uppercase;
  line-height: 0.95;
  letter-spacing: -0.01em;
}

.display--ink { color: var(--ink); }
.display--lime { color: var(--lime); }

.eyebrow {
  font-weight: 700;
  font-style: italic;
  text-transform: uppercase;
  letter-spacing: 0.22em;
  font-size: 0.82rem;
  margin-bottom: 0.4rem;
}

.eyebrow--crimson { color: var(--crimson); }
.eyebrow--lime { color: var(--lime); }
.eyebrow--ink { color: var(--ink); }
.eyebrow--gold { color: var(--gold); }

.lead {
  font-size: var(--step-lead);
  max-width: 34rem;
  margin-top: 1rem;
}

/* ---- buttons & chips --------------------------------------------------- */

.btn {
  display: inline-block;
  font-family: var(--font);
  font-weight: 700;
  font-style: italic;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-size: 0.95rem;
  text-decoration: none;
  padding: 0.72rem 1.5rem;
  border: 2px solid var(--ink);
  box-shadow: 5px 5px 0 var(--ink);
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.btn:hover, .btn:focus-visible {
  transform: translate(3px, 3px);
  box-shadow: 2px 2px 0 var(--ink);
}

.btn:active {
  transform: translate(5px, 5px);
  box-shadow: 0 0 0 var(--ink);
}

.btn--paper { background: var(--paper); color: var(--maroon); }

.btn--ghost {
  background: transparent;
  color: var(--paper);
  border-color: var(--paper);
  box-shadow: 5px 5px 0 var(--crimson);
}

.btn--ghost:hover, .btn--ghost:focus-visible { box-shadow: 2px 2px 0 var(--crimson); }

.chips { display: flex; flex-wrap: wrap; gap: 0.6rem; }

.chip {
  font-weight: 500;
  font-size: 0.88rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  text-decoration: none;
  color: var(--ink);
  border: 2px solid var(--ink);
  padding: 0.32rem 0.9rem;
  box-shadow: 4px 4px 0 var(--ink);
  transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease, color 0.15s ease;
}

.chip:hover, .chip:focus-visible {
  background: var(--crimson);
  color: var(--paper);
  transform: translate(2px, 2px);
  box-shadow: 2px 2px 0 var(--ink);
}

:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }

/* en los mundos claros el dorado no se ve */
.episodio :focus-visible, .aliados :focus-visible { outline-color: var(--crimson); }

/* ---- topbar ------------------------------------------------------------ */

.topbar {
  position: absolute;
  inset: 0 0 auto 0;
  z-index: 10;
  display: flex;
  align-items: center;
  gap: 1.8rem;
  padding: 1.1rem clamp(1.25rem, 4vw, 2.5rem);
}

.topbar__brand img { height: 40px; width: auto; }

.topbar__nav {
  display: flex;
  gap: 1.4rem;
  margin-left: auto;
}

.topbar__nav a {
  color: var(--paper);
  text-decoration: none;
  font-weight: 500;
  font-size: 0.95rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.topbar__nav a:hover, .topbar__nav a:focus-visible {
  text-decoration: underline wavy var(--gold) 2px;
  text-underline-offset: 6px;
}

.topbar__cta { padding: 0.45rem 1.1rem; font-size: 0.85rem; }

/* ---- hero · mundo rojo ------------------------------------------------- */

.hero {
  position: relative;
  min-height: 100vh;
  min-height: 100svh;
  display: grid;
  place-items: center;
  text-align: center;
  padding: 6.5rem 1.25rem 4rem;
  background: var(--maroon);
  overflow: hidden;
}

/* una sola capa de olas que se revuelve como sopa en la olla:
   gira suave de lado a lado mientras respira hacia afuera desde el logo */
.hero__waves {
  position: absolute;
  inset: -18%;
  background: var(--crimson);
  -webkit-mask: url("assets/bg/waves-1.svg") center / cover no-repeat;
  mask: url("assets/bg/waves-1.svg") center / cover no-repeat;
  animation: waves-in 1.4s ease-out both, simmer 16s ease-in-out 1.4s infinite alternate;
}

@keyframes waves-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes simmer {
  from { transform: rotate(-2.5deg) scale(1); }
  to   { transform: rotate(2.5deg) scale(1.13); }
}

.hero__inner { position: relative; z-index: 1; }

/* --- coreografía de entrada: la sopa se sirve --- */

.hero__logo { animation: logo-pop 0.7s cubic-bezier(0.18, 1.5, 0.4, 1) 0.15s both; }

@keyframes logo-pop {
  from { opacity: 0; scale: 0.55; rotate: -5deg; }
  to   { opacity: 1; scale: 1; rotate: 0deg; }
}

.hero__slogan { animation: rise-in 0.55s cubic-bezier(0.2, 0.9, 0.3, 1) 0.45s both; }
.hero__sub    { animation: rise-in 0.55s cubic-bezier(0.2, 0.9, 0.3, 1) 0.6s both; }
.hero__actions { animation: rise-in 0.55s cubic-bezier(0.2, 0.9, 0.3, 1) 0.75s both; }

@keyframes rise-in {
  from { opacity: 0; translate: 0 34px; }
  to   { opacity: 1; translate: 0 0; }
}

/* el vapor se acelera cuando pasas el mouse por el logo */
.hero__logo:hover .steam { animation-duration: 1.5s; }

.hero__logo {
  position: relative;
  display: inline-block;
  margin-bottom: 1.6rem;
}

.hero__logo svg {
  width: clamp(240px, 34vw, 380px);
  height: auto;
  display: block;
  filter: drop-shadow(10px 10px 0 rgba(20, 20, 20, 0.28));
}

.hero__logo svg path { fill: var(--paper); }

/* el vapor respira — distancias en unidades del viewBox (3000) */
.steam { animation: steam 3.4s ease-in-out infinite; }

.steam.s2 { animation-delay: 0.5s; }
.steam.s3 { animation-delay: 1s; }

@keyframes steam {
  0%, 100% { opacity: 0.5; transform: translateY(110px); }
  45%      { opacity: 1; transform: translateY(-90px); }
  70%      { opacity: 0.75; transform: translateY(-150px); }
}

.hero__sticker {
  position: absolute;
  top: -1.4rem;
  right: -4.2rem;
  z-index: 2;
  background: var(--gold);
  color: var(--ink);
  font-weight: 800;
  font-style: italic;
  text-transform: uppercase;
  font-size: 0.85rem;
  letter-spacing: 0.05em;
  padding: 0.42rem 0.95rem;
  border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 var(--ink);
  transform: rotate(7deg);
  animation: sticker-slap 0.4s cubic-bezier(0.2, 1.2, 0.35, 1) 1s both, wobble 5s ease-in-out 1.4s infinite;
}

/* la calcomanía cae y se pega */
@keyframes sticker-slap {
  from { opacity: 0; transform: rotate(22deg) scale(2.4); }
  to   { opacity: 1; transform: rotate(7deg) scale(1); }
}

@keyframes wobble {
  0%, 100% { transform: rotate(7deg); }
  50%      { transform: rotate(3.5deg) translateY(-4px); }
}

.hero__slogan {
  font-size: clamp(1.7rem, 4.4vw, 3rem);
  font-weight: 900;
  font-style: italic;
  text-transform: uppercase;
  line-height: 1.02;
}

.hero__sub {
  margin-top: 1rem;
  font-weight: 300;
  font-size: var(--step-lead);
  opacity: 0.92;
}

.hero__actions {
  margin-top: 2rem;
  display: flex;
  gap: 1.1rem;
  justify-content: center;
  flex-wrap: wrap;
}

/* --- cuenta regresiva a la próxima sopita --- */

.hero__next {
  margin-top: 2.4rem;
  animation: rise-in 0.55s cubic-bezier(0.2, 0.9, 0.3, 1) 0.9s both;
}

.hero__next-static {
  font-weight: 700;
  font-style: italic;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.78rem;
  opacity: 0.85;
  margin-bottom: 0.8rem;
}

.hero__next-clock {
  display: flex;
  justify-content: center;
  gap: 0.7rem;
}

.clock__cell {
  background: var(--paper);
  color: var(--maroon);
  border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 var(--ink);
  padding: 0.45rem 0.55rem 0.35rem;
  min-width: 3.6rem;
}

.clock__cell:nth-child(odd) { transform: rotate(-1.5deg); }
.clock__cell:nth-child(even) { transform: rotate(1.5deg); }

.clock__cell b {
  display: block;
  font-weight: 800;
  font-style: italic;
  font-size: 1.5rem;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}

.clock__cell i {
  display: block;
  font-style: normal;
  font-weight: 500;
  font-size: 0.58rem;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  opacity: 0.7;
  margin-top: 0.2rem;
}

.hero__next-live {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  background: var(--gold);
  color: var(--ink);
  font-weight: 800;
  font-style: italic;
  text-transform: uppercase;
  font-size: 0.95rem;
  text-decoration: none;
  padding: 0.6rem 1.3rem;
  border: 2px solid var(--ink);
  box-shadow: 5px 5px 0 var(--ink);
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.hero__next-live:hover { transform: translate(3px, 3px); box-shadow: 2px 2px 0 var(--ink); }

.hero__next-live::before {
  content: "";
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: var(--red-hot);
  animation: live-pulse 1.4s ease-in-out infinite;
}

@keyframes live-pulse {
  0%, 100% { opacity: 1; scale: 1; }
  50%      { opacity: 0.45; scale: 0.75; }
}

.hero__next-cal {
  margin-top: 0.9rem;
  display: flex;
  justify-content: center;
  gap: 0.6rem;
  flex-wrap: wrap;
}

.cal-chip {
  font-size: 0.72rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--paper);
  text-decoration: none;
  border: 1px solid rgba(244, 244, 244, 0.55);
  padding: 0.28rem 0.75rem;
  opacity: 0.85;
  transition: opacity 0.15s ease, background 0.15s ease, color 0.15s ease;
}

.cal-chip:hover, .cal-chip:focus-visible {
  opacity: 1;
  background: var(--paper);
  color: var(--maroon);
}

.hero__cue {
  position: absolute;
  bottom: 1.2rem;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1;
  font-style: italic;
  font-weight: 400;
  font-size: 0.9rem;
  opacity: 0.75;
  animation: cue-in 0.8s ease-out 1.6s both;
}

@keyframes cue-in {
  from { opacity: 0; }
  to   { opacity: 0.75; }
}

.hero__cue::after {
  content: "";
  display: block;
  margin: 0.3rem auto 0;
  width: 2px;
  height: 16px;
  background: var(--paper);
  animation: cue-bob 1.8s ease-in-out 2.4s infinite;
}

@keyframes cue-bob {
  0%, 100% { transform: translateY(0); opacity: 0.4; }
  50%      { transform: translateY(6px); opacity: 1; }
}

/* ---- goteo entre secciones ---------------------------------------------
   El color de la sección anterior gotea sobre la siguiente, como sopa. */

.drip {
  position: absolute;
  top: -1px;
  left: 0;
  right: 0;
  height: clamp(36px, 6vw, 78px);
  z-index: 2;
  pointer-events: none;
  -webkit-mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201200%2090'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0%200L1200%200L1200%2024C1156%2058%201108%2016%201062%2034C1016%2052%20992%2078%20944%2046C896%2014%20852%2060%20800%2042C748%2024%20706%2074%20654%2054C602%2034%20566%2012%20514%2038C462%2064%20430%2086%20378%2050C326%2014%20288%2054%20238%2036C188%2018%20148%2068%2098%2046C48%2024%2026%2042%200%2028Z'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
  mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201200%2090'%20preserveAspectRatio='none'%3E%3Cpath%20d='M0%200L1200%200L1200%2024C1156%2058%201108%2016%201062%2034C1016%2052%20992%2078%20944%2046C896%2014%20852%2060%20800%2042C748%2024%20706%2074%20654%2054C602%2034%20566%2012%20514%2038C462%2064%20430%2086%20378%2050C326%2014%20288%2054%20238%2036C188%2018%20148%2068%2098%2046C48%2024%2026%2042%200%2028Z'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
}

.drip--paper { background: var(--paper); }
.drip--teal { background: var(--teal-deep); }
.drip--gold { background: var(--gold); }
.drip--ink { background: var(--ink); }
.drip--crimson { background: var(--crimson); }

/* ---- ticker ------------------------------------------------------------ */

.ticker {
  background: var(--crimson);
  color: var(--paper);
  overflow: hidden;
  border-block: 2px solid var(--ink);
  padding: 0.55rem 0;
}

.ticker__track {
  display: flex;
  width: max-content;
  white-space: nowrap;
  font-weight: 800;
  font-style: italic;
  text-transform: uppercase;
  font-size: 1rem;
  letter-spacing: 0.06em;
  animation: ticker 28s linear infinite;
}

@keyframes ticker {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

.ticker:hover .ticker__track { animation-play-state: paused; }

/* ---- episodio · mundo papel -------------------------------------------- */

.episodio {
  background: var(--paper);
  color: var(--ink);
  padding: clamp(4rem, 9vw, 7rem) 0;
}

.episodio__head .lead { font-weight: 400; }

.episodio__label {
  margin-bottom: 0.7rem;
  font-weight: 700;
  font-style: italic;
  text-transform: uppercase;
  font-size: 0.85rem;
  letter-spacing: 0.12em;
}

.episodio__tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.8rem;
  margin: 2.2rem 0 1.6rem;
}

.tab {
  font-family: var(--font);
  font-weight: 700;
  font-style: italic;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-size: 0.95rem;
  background: transparent;
  color: var(--ink);
  border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 var(--ink);
  padding: 0.5rem 1.3rem;
  cursor: pointer;
  transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease, color 0.15s ease;
}

.tab:hover { transform: translate(2px, 2px); box-shadow: 2px 2px 0 var(--ink); }

.tab.is-active {
  background: var(--crimson);
  color: var(--paper);
  transform: translate(2px, 2px);
  box-shadow: 2px 2px 0 var(--ink);
}

.lead--tight { margin-top: 0.6rem; font-size: 0.92rem; opacity: 0.75; }

.episodio__player {
  position: relative;
  background: var(--ink);
  padding: 0.9rem;
  box-shadow: var(--shadow-pop) var(--crimson);
  transform: rotate(-0.6deg);
  transition: transform 0.25s ease;
}

.player__live {
  position: absolute;
  top: -0.9rem;
  left: 1.2rem;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  background: var(--red-hot);
  color: var(--paper);
  font-weight: 800;
  font-style: italic;
  text-transform: uppercase;
  font-size: 0.78rem;
  letter-spacing: 0.06em;
  padding: 0.3rem 0.8rem;
  border: 2px solid var(--ink);
  box-shadow: 3px 3px 0 var(--ink);
}

.player__dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--paper);
  animation: live-pulse 1.4s ease-in-out infinite;
}

.episodio__player:hover { transform: rotate(0deg); }

.episodio__player iframe {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  height: auto;
  border: 0;
  border-radius: 10px;
  transition: opacity 0.25s ease;
}

.episodio__player.swapping iframe { opacity: 0.2; }

.episodio__audio {
  margin-top: 2.6rem;
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  gap: clamp(1.5rem, 4vw, 3rem);
  align-items: start;
}

.episodio__audio iframe { display: block; border: 0; border-radius: 12px; }

/* ---- redes · mundo crimson --------------------------------------------- */

.redes {
  position: relative;
  background: var(--crimson);
  color: var(--paper);
  padding: clamp(4rem, 9vw, 7rem) 0;
  overflow: hidden;
}

.redes__waves {
  position: absolute;
  inset: -5%;
  background: #B31227;
  -webkit-mask: url("assets/bg/waves-4.svg") center / cover no-repeat;
  mask: url("assets/bg/waves-4.svg") center / cover no-repeat;
}

.redes .wrap { position: relative; z-index: 1; }

.eyebrow--paper { color: var(--paper); opacity: 0.8; }

.redes .display { color: var(--paper); }

.redes__sub {
  margin-top: 0.6rem;
  font-style: italic;
  font-weight: 400;
  font-size: var(--step-lead);
}

.redes__grid {
  margin-top: 2.6rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(1.4rem, 3vw, 2.4rem);
  align-items: start;
}

.feed {
  background: var(--paper);
  border: 2px solid var(--ink);
  box-shadow: var(--shadow-pop) var(--maroon);
}

.feed:nth-child(odd) { transform: rotate(-0.7deg); }
.feed:nth-child(even) { transform: rotate(0.7deg); }

.feed__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.8rem;
  flex-wrap: wrap;
  padding: 0.7rem 1rem;
  border-bottom: 2px solid var(--ink);
  background: var(--ink);
}

.feed__name {
  font-weight: 800;
  font-style: italic;
  text-transform: uppercase;
  font-size: 1rem;
  color: var(--paper);
}

.feed__link {
  font-size: 0.72rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--gold);
  text-decoration: none;
}

.feed__link:hover, .feed__link:focus-visible { text-decoration: underline; }

.feed__frame {
  background: #FFFFFF;
  height: clamp(420px, 52vw, 560px);
  overflow: hidden;
}

.feed__frame iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}

/* ---- la mesa · mundo teal ---------------------------------------------- */

.mesa {
  position: relative;
  background: var(--teal-deep);
  color: var(--paper);
  padding: clamp(4rem, 9vw, 7rem) 0;
  overflow: hidden;
}

.mesa__waves {
  position: absolute;
  inset: -4%;
  background: var(--teal);
  -webkit-mask: url("assets/bg/waves-5.svg") center / cover no-repeat;
  mask: url("assets/bg/waves-5.svg") center / cover no-repeat;
}

.mesa .wrap { position: relative; z-index: 1; }

.mesa__sub {
  margin-top: 0.6rem;
  font-style: italic;
  font-weight: 400;
  font-size: var(--step-lead);
  color: var(--lime);
}

.hosts {
  list-style: none;
  margin-top: 3rem;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: clamp(1.2rem, 2.5vw, 2rem);
}

.host {
  background: var(--teal);
  border: 2px solid var(--teal-shadow);
  box-shadow: var(--shadow-pop) var(--teal-shadow);
  padding: 1rem 1rem 1.3rem;
  transition: transform 0.2s ease;
}

.host:nth-child(odd) { transform: rotate(-1.2deg); }
.host:nth-child(even) { transform: rotate(1.2deg); }

.host:hover { transform: rotate(0deg) translateY(-6px); }

/* La cabeza rompe el marco: la foto es más alta que su caja y desborda arriba */
.host__photo {
  position: relative;
  aspect-ratio: 4 / 5;
  background: var(--teal-deep);
  margin-bottom: 0.9rem;
}

/* tazón de fondo asomándose detrás del recorte */
.host__photo::before {
  content: "";
  position: absolute;
  inset: 8% 12% 30%;
  background: url("assets/logo/lasopa-icon-white.svg") no-repeat center top / contain;
  opacity: 0.1;
}

.host__photo img {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 114%;
  object-fit: cover;
  object-position: center bottom;
  transition: opacity 0.18s ease;
}

.host__photo img.alt { opacity: 0; }

.host:hover img.alt, .host.flip img.alt { opacity: 1; }
.host:hover img:not(.alt), .host.flip img:not(.alt) { opacity: 0; }

.host__name {
  font-weight: 800;
  font-style: italic;
  text-transform: uppercase;
  font-size: 1.05rem;
  line-height: 1.15;
}

.host__name span { color: var(--lime); }

/* ---- la culebra · mundo tinta ------------------------------------------ */

.page-ink { background: var(--ink); }

.topbar__nav .nav-culebra { color: var(--lime); }

.culebra {
  position: relative;
  background: var(--ink);
  color: var(--paper);
  padding: clamp(4rem, 9vw, 7rem) 0;
  overflow: hidden;
}

.culebra--page {
  min-height: 100vh;
  min-height: 100svh;
  padding-top: clamp(8rem, 14vw, 10.5rem);
}

.culebra__waves {
  position: absolute;
  inset: -6%;
  background: #222222;
  -webkit-mask: url("assets/bg/waves-2.svg") center / cover no-repeat;
  mask: url("assets/bg/waves-2.svg") center / cover no-repeat;
}

.culebra .wrap { position: relative; z-index: 1; }

.culebra__sticker {
  display: inline-block;
  background: var(--lime);
  color: var(--ink);
  font-weight: 800;
  font-style: italic;
  text-transform: uppercase;
  font-size: 0.85rem;
  letter-spacing: 0.05em;
  padding: 0.4rem 0.95rem;
  border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 #000000;
  transform: rotate(-2deg);
  margin-bottom: 1.4rem;
}

.culebra__empty {
  grid-column: 1 / -1;
  font-style: italic;
  font-size: 1.05rem;
  opacity: 0.8;
}

.culebra__sub {
  margin-top: 0.6rem;
  font-style: italic;
  font-weight: 400;
  font-size: var(--step-lead);
  color: var(--lime);
}

#culebra-bets { margin-top: 2.8rem; }

.culebra__group + .culebra__group { margin-top: 3rem; }

.group__name {
  font-weight: 800;
  font-style: italic;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.95rem;
  color: var(--gold);
  border-bottom: 2px solid #333333;
  padding-bottom: 0.5rem;
}

.culebra__bets {
  margin-top: 1.4rem;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(1.4rem, 3vw, 2.4rem);
}

.bet {
  background: #222222;
  border: 2px solid var(--lime);
  box-shadow: var(--shadow-pop) #000000;
  padding: 1.4rem 1.4rem 1.6rem;
  animation: bet-in 0.5s cubic-bezier(0.2, 1.3, 0.4, 1) both;
}

.bet:nth-child(2) { animation-delay: 0.1s; }
.bet:nth-child(3) { animation-delay: 0.2s; }
.bet:nth-child(4) { animation-delay: 0.3s; }

@keyframes bet-in {
  from { opacity: 0; translate: 0 24px; scale: 0.94; }
  to   { opacity: 1; translate: 0 0; scale: 1; }
}

.bet__match {
  font-weight: 800;
  font-style: italic;
  text-transform: uppercase;
  font-size: clamp(1.15rem, 2vw, 1.45rem);
  line-height: 1.1;
}

.bet__match span { color: var(--lime); font-size: 0.8em; padding: 0 0.25em; }

.bet__when {
  font-size: 0.8rem;
  opacity: 0.7;
  margin-top: 0.25rem;
}

.bet__choices {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.8rem;
  margin-top: 1.1rem;
}

.bet__btn {
  font-family: var(--font);
  font-weight: 800;
  font-style: italic;
  text-transform: uppercase;
  font-size: 0.95rem;
  background: var(--paper);
  color: var(--ink);
  border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 #000000;
  padding: 0.7rem 0.5rem;
  cursor: pointer;
  transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
}

.bet__btn:hover { transform: translate(2px, 2px); box-shadow: 2px 2px 0 #000000; background: var(--lime); }

.bet__btn:active { transform: translate(4px, 4px); box-shadow: 0 0 0 #000000; }

.bet__odds {
  margin-top: 0.6rem;
  font-size: 0.75rem;
  opacity: 0.65;
}

.bet__bar {
  display: flex;
  height: 2.4rem;
  border: 2px solid var(--paper);
  margin-top: 1.1rem;
  overflow: hidden;
}

.bet__bar-a, .bet__bar-b {
  display: flex;
  align-items: center;
  overflow: hidden;
  white-space: nowrap;
  font-weight: 800;
  font-style: italic;
  font-size: 0.78rem;
  text-transform: uppercase;
  color: var(--ink);
  padding: 0 0.55rem;
  min-width: 0;
  transition: width 0.6s cubic-bezier(0.2, 0.9, 0.3, 1);
}

.bet__bar-a { background: var(--lime); }
.bet__bar-b { background: var(--gold); justify-content: flex-end; }

.bet__mesa {
  margin-top: 0.9rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  align-items: center;
}

.bet__mesa-label {
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  opacity: 0.6;
  margin-right: 0.2rem;
}

.mesa-chip {
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 0.15rem 0.6rem;
  border: 1px solid;
}

.mesa-chip--a { color: var(--lime); border-color: var(--lime); }
.mesa-chip--b { color: var(--gold); border-color: var(--gold); }

.bet__status {
  margin-top: 0.9rem;
  font-size: 0.78rem;
  font-weight: 700;
  font-style: italic;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.bet__status--won { color: var(--lime); }
.bet__status--closed { opacity: 0.7; }

/* ---- branding Stake (su segmento) ---- */

.stake-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.8rem;
  margin-top: 1.4rem;
  background: #000000;
  border: 2px solid #333333;
  padding: 0.55rem 1rem;
  text-decoration: none;
  transition: border-color 0.15s ease, transform 0.15s ease;
}

.stake-badge:hover, .stake-badge:focus-visible {
  border-color: var(--gold);
  transform: translate(2px, 2px);
}

.stake-badge__pre {
  font-size: 0.68rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--paper);
  opacity: 0.7;
}

.stake-badge img { height: 28px; width: auto; }

.stake-badge__code {
  background: var(--gold);
  color: var(--ink);
  font-size: 0.68rem;
  font-weight: 800;
  font-style: italic;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  padding: 0.22rem 0.6rem;
  border: 1px solid var(--ink);
}

.stake-banner {
  margin-top: 3.4rem;
  background: #000000;
  border: 2px solid var(--gold);
  box-shadow: var(--shadow-pop) #2A2A2A;
  padding: 1.5rem 1.8rem;
  display: flex;
  align-items: center;
  gap: clamp(1.2rem, 3vw, 2.4rem);
  flex-wrap: wrap;
}

.stake-banner__logo { width: clamp(120px, 14vw, 170px); }

.stake-banner__text { flex: 1 1 16rem; }

.stake-banner__line {
  font-weight: 700;
  font-style: italic;
  text-transform: uppercase;
  font-size: 0.95rem;
  letter-spacing: 0.04em;
}

.stake-banner__code {
  margin-top: 0.5rem;
  display: inline-block;
  background: var(--gold);
  color: var(--ink);
  font-weight: 500;
  font-size: 1rem;
  padding: 0.3rem 0.9rem;
  border: 2px solid var(--paper);
  animation: chip-wiggle 7s ease-in-out 2s infinite;
}

.stake-banner__code strong { font-weight: 800; letter-spacing: 0.1em; }

.stake-banner__cta { text-align: center; }

.btn--gold {
  background: var(--gold);
  color: var(--ink);
  border-color: var(--ink);
  box-shadow: 5px 5px 0 #000000;
}

.btn--gold:hover, .btn--gold:focus-visible { box-shadow: 2px 2px 0 #000000; }

.stake-banner__legal {
  margin-top: 0.5rem;
  font-size: 0.68rem;
  opacity: 0.6;
}

/* Advertencia legal obligatoria (MINCETUR) — nunca reducir ni ocultar */
.ludopatia {
  border: 2px solid currentColor;
  padding: 0.85rem 1.1rem;
  font-size: 0.82rem;
  font-weight: 500;
  line-height: 1.45;
  text-align: center;
  letter-spacing: 0.01em;
}

.ludopatia strong {
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.ludopatia--dark { color: var(--gold); background: #000000; }
.ludopatia--light { color: var(--ink); background: rgba(20, 20, 20, 0.06); }

.culebra .ludopatia { margin-top: 1.6rem; }
.aliados .ludopatia { margin-top: 1.4rem; max-width: 52rem; }
.footer .ludopatia {
  margin-top: 0.6rem;
  color: var(--paper);
  border-color: rgba(244, 244, 244, 0.45);
  font-size: 0.74rem;
  max-width: 46rem;
}

.bet__odds a { color: var(--lime); }
.bet__odds strong { color: var(--gold); font-weight: 800; }

/* ---- la cuenta: leaderboard con caras ---- */

.culebra__cuenta { margin-top: 3.8rem; }

.cuenta__title {
  font-weight: 900;
  font-style: italic;
  text-transform: uppercase;
  font-size: clamp(1.3rem, 3.4vw, 2rem);
  line-height: 1;
}

.cuenta__row {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: clamp(0.8rem, 2vw, 1.4rem);
  margin-top: 1.6rem;
}

.cuenta-card {
  background: #222222;
  border: 2px solid #3A3A3A;
  box-shadow: 6px 6px 0 #000000;
  padding: 1rem 0.7rem 1.1rem;
  text-align: center;
  transition: transform 0.2s ease;
}

.cuenta-card:hover { transform: translateY(-4px); }

.cuenta-card--leader { border-color: var(--gold); }

.cuenta-card--chat { border-color: var(--lime); }

.cuenta-card__crown {
  font-size: 0.68rem;
  font-weight: 800;
  font-style: italic;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--gold);
  margin-bottom: 0.4rem;
}

.cuenta-card__face {
  width: clamp(64px, 8vw, 92px);
  aspect-ratio: 1;
  margin-inline: auto;
  border-radius: 50%;
  overflow: hidden;
  border: 2px solid var(--paper);
  background: #1B1B1B;
}

.cuenta-card__face img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(2.1);
  transform-origin: 50% 4%;
}

.cuenta-card__face--chat {
  display: grid;
  place-items: center;
  background: var(--lime);
  border-color: var(--lime);
}

.cuenta-card__face--chat img {
  width: 58%;
  height: auto;
  transform: none;
  object-fit: contain;
}

.cuenta-card__name {
  font-weight: 800;
  font-style: italic;
  text-transform: uppercase;
  font-size: 0.82rem;
  margin-top: 0.6rem;
  line-height: 1.1;
}

.cuenta-card__rec {
  color: var(--lime);
  font-weight: 800;
  font-style: italic;
  font-size: 1.15rem;
  margin-top: 0.25rem;
  font-variant-numeric: tabular-nums;
}

.cuenta-card__pct {
  font-size: 0.7rem;
  opacity: 0.65;
}

/* ---- historial de torneos ---- */

.culebra__hist { margin-top: 3.8rem; }

.hist {
  background: #1C1C1C;
  border: 2px solid #333333;
  margin-top: 0.9rem;
}

.hist summary {
  cursor: pointer;
  list-style: none;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
  flex-wrap: wrap;
  padding: 0.9rem 1.1rem;
  font-weight: 800;
  font-style: italic;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 0.9rem;
}

.hist summary::-webkit-details-marker { display: none; }

.hist summary::before {
  content: "▸";
  color: var(--gold);
  margin-right: 0.5rem;
  display: inline-block;
  transition: rotate 0.15s ease;
}

.hist[open] summary::before { rotate: 90deg; }

.hist__meta {
  font-weight: 500;
  font-style: normal;
  text-transform: none;
  letter-spacing: 0;
  font-size: 0.75rem;
  opacity: 0.65;
}

.hist-row {
  border-top: 1px solid #2C2C2C;
  padding: 0.85rem 1.1rem 0.95rem;
}

.hist-row__top {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
  align-items: baseline;
}

.hist-row__match {
  font-weight: 800;
  font-style: italic;
  text-transform: uppercase;
  font-size: 0.95rem;
}

.hist-row__match i { font-style: italic; color: var(--lime); font-size: 0.8em; padding: 0 0.2em; }

.hist-row__won {
  font-size: 0.75rem;
  font-weight: 700;
  font-style: italic;
  text-transform: uppercase;
  color: var(--lime);
}

.hist-row__won--pend { color: #999999; }

.hist-row__meta {
  margin-top: 0.5rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  align-items: center;
  font-size: 0.72rem;
}

.hist-chip {
  border: 1px solid #555555;
  padding: 0.05rem 0.5rem;
  font-size: 0.66rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.hist-chip--hit { border-color: var(--lime); color: var(--lime); }

.hist-chip--miss { border-color: #555555; color: #888888; }

/* El Chat: quinto jugador, siempre destacado */
.hist-chip--chat {
  border-width: 2px;
  border-style: dashed;
  font-style: italic;
}

.hist-chip--chat.hist-chip--hit { border-color: var(--gold); color: var(--gold); }
.hist-chip--chat.hist-chip--miss { border-color: #6B5A2E; color: #9C8A55; }
.hist-chip--chat:not(.hist-chip--hit):not(.hist-chip--miss) { border-color: var(--gold); color: var(--gold); }

.culebra__note {
  margin-top: 2.6rem;
  font-size: 0.8rem;
  opacity: 0.8;
}

.culebra__note a { color: var(--lime); }
.culebra__note strong { color: var(--gold); }

/* ---- aliados · mundo dorado -------------------------------------------- */

.aliados {
  position: relative;
  background: var(--gold);
  color: var(--ink);
  padding: clamp(4rem, 9vw, 7rem) 0;
  overflow: hidden;
}

.aliados__waves {
  position: absolute;
  inset: -4%;
  background: #E3AE00;
  -webkit-mask: url("assets/bg/waves-6.svg") center / cover no-repeat;
  mask: url("assets/bg/waves-6.svg") center / cover no-repeat;
}

.aliados .wrap { position: relative; z-index: 1; }

.aliados__sub {
  margin-top: 0.6rem;
  font-style: italic;
  font-weight: 500;
  font-size: var(--step-lead);
}

.sponsors {
  margin-top: 3rem;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: clamp(1.2rem, 2.5vw, 2rem);
}

.sponsor {
  border: 2px solid var(--ink);
  box-shadow: var(--shadow-pop) var(--ink);
  padding: 1.6rem 1.4rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.35rem;
  min-height: 11rem;
  transition: transform 0.2s ease;
}

.sponsor:hover { transform: translateY(-6px); }

.sponsor__logo {
  font-weight: 900;
  font-style: italic;
  text-transform: uppercase;
  font-size: clamp(1.6rem, 3vw, 2.2rem);
  line-height: 1;
}

.sponsor__tag {
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.72rem;
  opacity: 0.85;
}

.sponsor--stake {
  grid-column: span 2;
  background: var(--ink);
  color: var(--paper);
}

.sponsor--stake .sponsor__logo { font-size: clamp(2.6rem, 5vw, 4rem); }

.sponsor__img {
  width: min(62%, 260px);
  margin-block: 0.4rem;
}

a.sponsor { text-decoration: none; }

.sponsor__code {
  margin-top: 0.5rem;
  align-self: flex-start;
  background: var(--gold);
  color: var(--ink);
  font-weight: 500;
  font-size: 0.9rem;
  padding: 0.28rem 0.8rem;
  border: 2px solid var(--paper);
}

.sponsor__code strong { font-weight: 800; letter-spacing: 0.08em; }

/* el código pide atención cada tanto */
.sponsor__code { animation: chip-wiggle 7s ease-in-out 3s infinite; }

@keyframes chip-wiggle {
  0%, 88%, 100% { transform: rotate(0deg) scale(1); }
  90% { transform: rotate(-3deg) scale(1.07); }
  93% { transform: rotate(2.5deg) scale(1.04); }
  96% { transform: rotate(-1.2deg) scale(1.02); }
}

.sponsor--kick {
  background: var(--ink);
  color: var(--lime);
}

.sponsor--small { background: var(--paper); }

.aliados__legal {
  margin-top: 2.2rem;
  font-size: 0.8rem;
  font-weight: 400;
  opacity: 0.75;
}

/* ---- footer · mundo rojo ----------------------------------------------- */

.footer {
  position: relative;
  background: var(--maroon);
  color: var(--paper);
  padding: clamp(4.5rem, 8vw, 6.5rem) 0 2.5rem;
}

.footer__grid {
  display: grid;
  justify-items: center;
  text-align: center;
  gap: 1.3rem;
}

.footer__logo { height: 56px; width: auto; }

.footer__social {
  list-style: none;
  display: flex;
  gap: 1.1rem;
}

.footer__social a {
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  color: var(--paper);
  border: 2px solid var(--paper);
  transition: background 0.15s ease, color 0.15s ease, transform 0.15s ease;
}

.footer__social svg { width: 22px; height: 22px; }

.footer__social a:hover, .footer__social a:focus-visible {
  background: var(--paper);
  color: var(--maroon);
  transform: translateY(-4px) rotate(-8deg);
}

.footer__line {
  font-weight: 700;
  font-style: italic;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-size: 0.95rem;
}

.footer__copy { font-size: 0.85rem; opacity: 0.8; }

.footer__easter {
  font-style: italic;
  font-size: 0.8rem;
  opacity: 0.68;
}

/* ---- reveals ------------------------------------------------------------
   Solo se ocultan si hay JS (html.js); usan `translate` para no pelear con
   los transforms decorativos (tilts, hovers, rotate del player). */

.js .reveal {
  opacity: 0;
  translate: 0 26px;
  transition: opacity 0.7s ease, translate 0.7s ease;
}

.js .reveal.in { opacity: 1; translate: none; }

/* los títulos entran como sello estampado */
.js .reveal .display {
  opacity: 0;
  scale: 1.28;
  rotate: -1.5deg;
  transition: opacity 0.4s ease 0.1s, scale 0.55s cubic-bezier(0.2, 1.4, 0.4, 1) 0.1s, rotate 0.55s cubic-bezier(0.2, 1.4, 0.4, 1) 0.1s;
}

.js .reveal.in .display { opacity: 1; scale: 1; rotate: 0deg; }

/* los eyebrows se deslizan desde la izquierda */
.js .reveal .eyebrow {
  opacity: 0;
  translate: -28px 0;
  transition: opacity 0.4s ease, translate 0.4s ease;
}

.js .reveal.in .eyebrow { opacity: 1; translate: 0 0; }

/* las cards mantienen su hover rápido junto al reveal, y entran con pop */
.js .host.reveal, .js .sponsor.reveal {
  scale: 0.88;
  transition: opacity 0.55s ease, translate 0.55s ease, scale 0.6s cubic-bezier(0.2, 1.4, 0.4, 1), transform 0.2s ease;
}

.js .host.reveal.in, .js .sponsor.reveal.in { scale: 1; }

.js .hosts .reveal:nth-child(2), .js .sponsors .reveal:nth-child(2) {
  transition: opacity 0.55s ease 0.1s, translate 0.55s ease 0.1s, scale 0.6s cubic-bezier(0.2, 1.4, 0.4, 1) 0.1s, transform 0.2s ease;
}
.js .hosts .reveal:nth-child(3), .js .sponsors .reveal:nth-child(3) {
  transition: opacity 0.55s ease 0.2s, translate 0.55s ease 0.2s, scale 0.6s cubic-bezier(0.2, 1.4, 0.4, 1) 0.2s, transform 0.2s ease;
}
.js .hosts .reveal:nth-child(4), .js .sponsors .reveal:nth-child(4) {
  transition: opacity 0.55s ease 0.3s, translate 0.55s ease 0.3s, scale 0.6s cubic-bezier(0.2, 1.4, 0.4, 1) 0.3s, transform 0.2s ease;
}

/* ---- responsive -------------------------------------------------------- */

@media (max-width: 900px) {
  .episodio__audio { grid-template-columns: 1fr; }
  .culebra__bets { grid-template-columns: 1fr; }
  .redes__grid { grid-template-columns: 1fr; }
  .cuenta__row { grid-template-columns: repeat(2, 1fr); }
  .hosts { grid-template-columns: repeat(2, 1fr); row-gap: 3.2rem; }
  .sponsors { grid-template-columns: repeat(2, 1fr); }
  .topbar { flex-wrap: wrap; row-gap: 0.6rem; }
  .topbar__brand { order: 1; }
  .topbar__cta { order: 2; margin-left: auto; }
  .topbar__nav { order: 3; width: 100%; justify-content: center; margin-left: 0; }
  .hero { padding-top: 9rem; }
}

@media (max-width: 520px) {
  .hosts { grid-template-columns: 1fr 1fr; }
  .sponsors { grid-template-columns: 1fr; }
  .sponsor--stake { grid-column: span 1; }
  .hero__sticker { right: -1.2rem; top: -1.8rem; }
  .hero__logo svg { width: min(66vw, 300px); }
}

/* ---- reduced motion ---------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .hero__waves, .steam, .hero__sticker, .ticker__track,
  .hero__logo, .hero__slogan, .hero__sub, .hero__actions, .hero__cue,
  .hero__cue::after, .sponsor__code, .hero__next, .hero__next-live::before, .bet, .stake-banner__code, .player__dot { animation: none; }
  .bet__bar-a, .bet__bar-b { transition: none; }
  .steam { opacity: 1; transform: none; }
  .js .reveal { opacity: 1; translate: none; transition: none; }
  .js .reveal .display, .js .reveal .eyebrow { opacity: 1; scale: none; rotate: none; translate: none; transition: none; }
  .js .host.reveal, .js .sponsor.reveal { scale: none; }
}
