/* ==========================================================================
   AZTECH METAL - EDICIÓN ESPECIAL DE NOTA (festival / evento)

   La carga tools/generar-notas.js solo en las notas con `especial: {...}`
   en articles.js (body.nt-especial). Nació el 14-oct-2026 con la nota del
   Implode Fest, cuando Sam dijo "está muy feo, hazlo más chingón".

   Idea: un cartel de concierto en la oscuridad con la luz dorada del
   festival ("Redemption"). Negro del sitio de fondo, UN acento: el dorado
   sacado del cartel (#E0B25C). El rojo se queda en la cabecera del sitio.
   Esquinas rectas en todo, tipografía condensada (Bebas Neue / Barlow).

   Piezas: portada dividida (.ne-heroe), franja con lo esencial (.ne-franja),
   columna de lectura (.ne-wrap) y franjas a lo ancho que pintan los bloques
   frase, cartel, playlist y boletos (bloques.js). Todo se mueve solo si el
   lector no pidió reducir movimiento.
   ========================================================================== */

.nt-especial {
  --ne-hueso: #F2EDE4;
  --ne-hueso-2: rgba(242, 237, 228, 0.76);
  --ne-hueso-3: rgba(242, 237, 228, 0.5);
  --ne-linea: rgba(242, 237, 228, 0.12);
  --ne-oro: #E0B25C;
  --ne-oro-claro: #F3DFB3;
  --ne-oro-hondo: #8A6A3A;
  --ne-oro-velo: rgba(224, 178, 92, 0.16);
  --ne-tinta-oro: #140E04;
  --ne-curva: cubic-bezier(0.16, 1, 0.3, 1);
}

/* Las franjas a lo ancho se salen de la columna: el sitio ya corta lo que
   sobra por los lados (body overflow-x: hidden). */
.nt-especial .nt-main { padding-bottom: 0; container-type: inline-size; }
.nt-especial [id] { scroll-margin-top: 140px; }

/* ================================ PORTADA ================================ */
.ne-heroe {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background:
    radial-gradient(ellipse 55% 75% at 74% 48%, rgba(224, 178, 92, 0.24), transparent 70%),
    linear-gradient(180deg, #0B0A0D 0%, #060507 100%);
  border-bottom: 1px solid var(--ne-linea);
}

/* Rayos de luz detrás del cartel: el "Redemption" del festival hecho fondo.
   Giran muy lento; con movimiento reducido se quedan quietos. */
.ne-luz {
  position: absolute;
  inset: -40% -20%;
  z-index: -1;
  pointer-events: none;
  background: repeating-conic-gradient(from 0deg at 72% 48%,
    rgba(243, 223, 179, 0.09) 0deg 2deg, transparent 2deg 14deg);
  -webkit-mask-image: radial-gradient(circle at 72% 48%, #000 0%, rgba(0, 0, 0, 0.55) 26%, transparent 58%);
          mask-image: radial-gradient(circle at 72% 48%, #000 0%, rgba(0, 0, 0, 0.55) 26%, transparent 58%);
  opacity: 0.9;
}

.ne-heroe-in {
  max-width: 1280px;
  margin: 0 auto;
  padding: clamp(1.6rem, 4vw, 3.4rem) clamp(1rem, 4vw, 3rem) clamp(2.4rem, 5vw, 4.4rem);
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(0, 0.88fr);
  gap: clamp(2rem, 5vw, 4.5rem);
  align-items: center;
}

.ne-heroe-texto .nt-migas { margin-bottom: 1.4rem; }
.ne-heroe-texto .tp-marca { margin: 0 0 1.1rem; }

.nt-especial .ne-heroe .nt-titulo {
  margin: 0;
  font-family: var(--font-display, 'Bebas Neue', sans-serif);
  font-weight: 400;
  text-transform: uppercase;
  letter-spacing: 0.005em;
  color: var(--ne-hueso);
  text-wrap: balance;
}
/* El título se lee en dos tiempos, como cartel: el nombre del festival en
   grande y la idea de la nota debajo. Es el mismo h1 (mismo texto para Google). */
.ne-t1 {
  display: block;
  font-size: clamp(3.6rem, 8.4vw, 7.6rem);
  line-height: 0.84;
}
.ne-t1 em { font-style: normal; color: var(--ne-oro); }
.ne-t2 {
  display: block;
  margin-top: 0.9rem;
  font-family: var(--font-headline, 'Barlow Condensed', sans-serif);
  font-weight: 700;
  font-size: clamp(1.45rem, 2.55vw, 2.2rem);
  line-height: 1.04;
  color: var(--ne-hueso-2);
  max-width: 24ch;
}

.nt-especial .ne-heroe .nt-bajada {
  margin: 1.5rem 0 0;
  max-width: 38ch;
  font-family: var(--font-body, 'Outfit', sans-serif);
  font-size: clamp(1.02rem, 1.3vw, 1.18rem);
  line-height: 1.6;
  color: var(--ne-hueso-2);
}

.ne-cta { display: flex; flex-wrap: wrap; gap: 0.9rem; margin-top: 2rem; }

/* Botones: rectos. El de boletos es el más visible de la página. */
.ne-btn, .nt-especial .bq-boton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  padding: 1rem 1.5rem;
  border: 1px solid rgba(242, 237, 228, 0.32);
  background: transparent;
  color: var(--ne-hueso);
  font: 700 0.8rem/1 var(--font-data, 'Barlow', sans-serif);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color 0.25s var(--ne-curva), border-color 0.25s var(--ne-curva), color 0.25s var(--ne-curva), transform 0.25s var(--ne-curva);
}
.ne-btn:hover { border-color: var(--ne-oro); color: var(--ne-oro); }
.ne-btn--oro, .nt-especial .bq-boton {
  padding: 1.2rem 2.2rem;
  font-size: 0.95rem;
  border-color: var(--ne-oro);
  background: var(--ne-oro);
  color: var(--ne-tinta-oro);
  box-shadow: 0 14px 40px -14px rgba(224, 178, 92, 0.65);
}
.ne-btn--oro:hover, .nt-especial .bq-boton:hover { background: var(--ne-oro-claro); border-color: var(--ne-oro-claro); color: var(--ne-tinta-oro); transform: translateY(-2px); }
.ne-btn:active, .nt-especial .bq-boton:active { transform: translateY(0) scale(0.98); }
.ne-btn:focus-visible, .nt-especial .bq-boton:focus-visible { outline: 2px solid var(--ne-oro-claro); outline-offset: 3px; }
/* Pasado el evento, nota-vivo.js esconde los botones de compra. */
.ne-btn[hidden], .nt-especial .bq-boton[hidden] { display: none; }

/* El cartel: nítido, con marco de oro fino y la luz detrás. */
.ne-heroe-cartel {
  margin: 0;
  justify-self: end;
  width: min(100%, 560px);
  perspective: 1400px;
}
.ne-heroe-cartel img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1 / 1;
  border: 1px solid rgba(224, 178, 92, 0.55);
  box-shadow:
    0 40px 90px -30px rgba(0, 0, 0, 0.9),
    0 0 0 6px rgba(224, 178, 92, 0.06),
    0 0 140px -20px rgba(224, 178, 92, 0.42);
  transform: rotateY(-7deg) rotateX(2deg);
  transform-origin: 60% 50%;
  transition: transform 0.9s var(--ne-curva);
}
.ne-heroe-cartel:hover img { transform: rotateY(0) rotateX(0); }

/* ============================ LO ESENCIAL ============================ */
.ne-franja {
  border-bottom: 1px solid var(--ne-linea);
  background: linear-gradient(90deg, rgba(224, 178, 92, 0.08), rgba(224, 178, 92, 0.015) 45%, transparent 80%);
}
.ne-franja-in {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 clamp(1rem, 4vw, 3rem);
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.ne-dato {
  padding: clamp(1.2rem, 2.2vw, 1.7rem) clamp(0.9rem, 2vw, 1.5rem);
  border-left: 1px solid var(--ne-linea);
}
.ne-dato:first-child { border-left: 0; padding-left: 0; }
.ne-dato dt {
  font: 700 0.66rem/1 var(--font-data, 'Barlow', sans-serif);
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ne-oro);
  margin-bottom: 0.65rem;
}
.ne-dato dd { margin: 0; display: grid; gap: 0.35rem; }
.ne-dato dd b {
  font: 400 clamp(1.55rem, 2.3vw, 2.15rem)/1 var(--font-display, 'Bebas Neue', sans-serif);
  letter-spacing: 0.01em;
  color: var(--ne-hueso);
}
.ne-dato dd span {
  font: 400 0.86rem/1.4 var(--font-body, 'Outfit', sans-serif);
  color: var(--ne-hueso-3);
}
.ne-dato dd .ne-cuenta { color: var(--ne-oro-claro); font-weight: 500; }

.ne-franja-ligas {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 clamp(1rem, 4vw, 3rem) 1.3rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem 1.8rem;
}
.ne-franja-ligas a {
  font: 700 0.72rem/1 var(--font-data, 'Barlow', sans-serif);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ne-hueso-2);
  text-decoration: underline;
  text-decoration-color: var(--ne-oro);
  text-underline-offset: 5px;
}
.ne-franja-ligas a:hover { color: var(--ne-oro); }

.nt-especial .ne-firma {
  max-width: calc(720px + 4rem);
  margin: clamp(2.2rem, 5vw, 3.4rem) auto 0;
  padding: 0 clamp(1rem, 5vw, 2rem);
}

/* ========================== COLUMNA DE LECTURA ========================== */
.ne-wrap {
  max-width: calc(720px + 4rem);
  margin: 0 auto;
  padding: 1.4rem clamp(1rem, 5vw, 2rem) 0;
}
.nt-especial .article-content-prose {
  font-size: 1.12rem;
  line-height: 1.82;
  color: rgba(242, 237, 228, 0.86);
}
.nt-especial .article-content-prose strong { color: var(--ne-hueso); }
.nt-especial .prose-lead-paragraph {
  font-size: clamp(1.2rem, 1.6vw, 1.36rem);
  line-height: 1.7;
  color: var(--ne-hueso);
}
/* Letra capital, de revista. */
.nt-especial .prose-lead-paragraph::first-letter {
  float: left;
  margin: 0.06em 0.12em 0 0;
  font-family: var(--font-display, 'Bebas Neue', sans-serif);
  font-size: 4.9em;
  line-height: 0.8;
  color: var(--ne-oro);
}

.nt-especial .article-section-title {
  position: relative;
  margin: clamp(3.4rem, 7vw, 4.8rem) 0 1.4rem;
  padding: 1.15rem 0 0;
  border: 0;
  font-family: var(--font-display, 'Bebas Neue', sans-serif);
  font-weight: 400;
  font-size: clamp(2.2rem, 4.2vw, 3.3rem);
  line-height: 0.95;
  letter-spacing: 0.005em;
  text-transform: uppercase;
  color: var(--ne-hueso);
  text-wrap: balance;
}
.nt-especial .article-section-title::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 56px;
  height: 3px;
  background: var(--ne-oro);
}

.nt-especial .nt-cuerpo p a,
.nt-especial .nt-cuerpo .callout-body a { text-decoration-color: var(--ne-oro); }
.nt-especial .nt-cuerpo p a:hover { color: var(--ne-oro); }

/* Preguntas rápidas: dos columnas, cada una con su raya de oro. */
.ne-preguntas {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.6rem 2rem;
  margin: 0 0 1rem;
}
.ne-pregunta { padding-top: 1rem; border-top: 1px solid rgba(224, 178, 92, 0.4); }
.ne-pregunta h3 {
  margin: 0 0 0.5rem;
  font: 700 1.28rem/1.15 var(--font-headline, 'Barlow Condensed', sans-serif);
  color: var(--ne-hueso);
}
.ne-pregunta p { margin: 0; font-size: 0.98rem; line-height: 1.65; color: var(--ne-hueso-2); }

/* ====================== FRANJAS A LO ANCHO (bloques) ====================== */
.nt-especial .bq-frase,
.nt-especial .bq-cartel,
.nt-especial .bq-playlist,
.nt-especial .bq-boletos {
  width: 100vw;
  width: 100cqi;
  max-width: none;
  margin: clamp(3rem, 7vw, 5rem) 0 clamp(3rem, 7vw, 5rem) calc(50% - 50vw);
  margin-left: calc(50% - 50cqi);
  border: 0;
  border-block: 1px solid rgba(224, 178, 92, 0.18);
}

/* --- La frase --- */
.nt-especial .bq-frase {
  padding: clamp(3.2rem, 8vw, 5.6rem) clamp(1rem, 4vw, 3rem);
  background:
    radial-gradient(ellipse 60% 110% at 50% 0%, rgba(224, 178, 92, 0.16), transparent 62%),
    #0A090C;
}
.nt-especial .bq-frase blockquote { position: relative; max-width: 1160px; margin: 0 auto; padding-top: 1.6rem; }
.nt-especial .bq-frase blockquote::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 72px;
  height: 3px;
  background: var(--ne-oro);
}
.nt-especial .bq-frase p {
  margin: 0;
  font: 400 clamp(1.95rem, 4vw, 3.3rem)/1.02 var(--font-display, 'Bebas Neue', sans-serif);
  letter-spacing: 0.005em;
  text-transform: uppercase;
  color: var(--ne-hueso);
  text-wrap: balance;
}

/* --- El cartel como póster --- */
.nt-especial .bq-cartel {
  padding: clamp(3.6rem, 8vw, 6.2rem) clamp(1rem, 4vw, 3rem) clamp(3rem, 6vw, 4.6rem);
  text-align: center;
  background:
    radial-gradient(circle at 50% 12%, rgba(224, 178, 92, 0.22), transparent 52%),
    linear-gradient(180deg, #0D0B08 0%, #070608 100%);
}
.nt-especial .bq-cartel-in { max-width: 1120px; margin: 0 auto; }
.nt-especial .bq-cartel-titulo {
  margin: 0;
  font: 400 clamp(2.3rem, 4.6vw, 3.6rem)/0.95 var(--font-display, 'Bebas Neue', sans-serif);
  text-transform: uppercase;
  color: var(--ne-hueso);
}
.nt-especial .bq-cartel-intro {
  max-width: 46ch;
  margin: 1rem auto 0;
  font-size: 1.04rem;
  line-height: 1.6;
  color: var(--ne-hueso-2);
}
.nt-especial .bq-cartel-arriba {
  list-style: none;
  margin: clamp(2.4rem, 5vw, 3.6rem) 0 0;
  padding: 0;
  display: grid;
  gap: clamp(1.6rem, 3.2vw, 2.4rem);
}
.nt-especial .bq-cartel-arriba li { display: grid; justify-items: center; gap: 0.55rem; }
.nt-especial .bq-cartel-arriba li + li::before {
  content: "";
  width: 46px;
  height: 1px;
  margin-bottom: clamp(0.4rem, 1.6vw, 1rem);
  background: rgba(224, 178, 92, 0.6);
}
.nt-especial .bq-cartel-nombre {
  font: 400 clamp(3rem, 8.6vw, 7rem)/0.86 var(--font-display, 'Bebas Neue', sans-serif);
  letter-spacing: 0.01em;
  text-transform: uppercase;
  color: var(--ne-hueso);
  text-decoration: none;
  text-shadow: 0 0 46px rgba(224, 178, 92, 0.22);
  transition: color 0.25s var(--ne-curva);
}
.nt-especial .bq-cartel-arriba li:first-child .bq-cartel-nombre { font-size: clamp(3.6rem, 11vw, 9rem); }
.nt-especial a.bq-cartel-nombre:hover { color: var(--ne-oro); }
.nt-especial .bq-cartel-dato {
  font: 600 0.78rem/1.4 var(--font-data, 'Barlow', sans-serif);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ne-oro-claro);
}
.nt-especial .bq-cartel-grupo {
  display: flex;
  align-items: center;
  gap: 1.2rem;
  max-width: 640px;
  margin: clamp(3rem, 6vw, 4.4rem) auto 1.4rem;
  font: 700 0.72rem/1 var(--font-data, 'Barlow', sans-serif);
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--ne-hueso-3);
}
.nt-especial .bq-cartel-grupo::before,
.nt-especial .bq-cartel-grupo::after { content: ""; flex: 1; height: 1px; background: var(--ne-linea); }
.nt-especial .bq-cartel-abajo {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 0.6rem 2.2rem;
}
.nt-especial .bq-cartel-abajo li {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  font: 400 clamp(1.8rem, 3.8vw, 2.9rem)/1 var(--font-display, 'Bebas Neue', sans-serif);
  text-transform: uppercase;
  color: var(--ne-hueso-2);
}
.nt-especial .bq-cartel-abajo li::before {
  content: "";
  width: 7px;
  height: 7px;
  background: var(--ne-oro);
  transform: rotate(45deg);
}

/* --- La playlist --- */
.nt-especial .bq-playlist {
  display: grid;
  grid-template-columns: auto minmax(0, 520px);
  justify-content: center;
  align-items: center;
  gap: clamp(1.8rem, 5vw, 4rem);
  padding: clamp(2.8rem, 6vw, 4.4rem) clamp(1rem, 4vw, 3rem);
  background:
    radial-gradient(ellipse 40% 90% at 20% 50%, rgba(224, 178, 92, 0.14), transparent 70%),
    #0B0A0D;
}
.nt-especial .bq-playlist-portada img {
  display: block;
  width: 300px;
  max-width: 100%;
  height: auto;
  aspect-ratio: 1 / 1;
  border: 1px solid rgba(224, 178, 92, 0.45);
  box-shadow: 0 30px 70px -26px rgba(0, 0, 0, 0.9), 0 0 90px -20px rgba(224, 178, 92, 0.4);
}
.nt-especial .bq-playlist .bq-cabeza { margin-bottom: 0.8rem; }
.nt-especial .bq-playlist .bq-kicker { color: var(--ne-oro); }
.nt-especial .bq-playlist .bq-titulo {
  font: 400 clamp(2.2rem, 4vw, 3.2rem)/0.92 var(--font-display, 'Bebas Neue', sans-serif);
  color: var(--ne-hueso);
}
.nt-especial .bq-playlist-lema { margin: 0 0 1.4rem; font-size: 1.02rem; line-height: 1.6; color: var(--ne-hueso-2); }
.nt-especial .bq-playlist .bq-escucha-boton {
  width: 100%;
  border: 1px solid rgba(224, 178, 92, 0.55);
  border-radius: 0;
  background: rgba(224, 178, 92, 0.07);
}
.nt-especial .bq-playlist .bq-escucha-boton:hover { background: rgba(224, 178, 92, 0.14); border-color: var(--ne-oro); }
.nt-especial .bq-playlist .bq-escucha-icono { background: var(--ne-oro); }
.nt-especial .bq-playlist .bq-escucha-icono::after { border-left-color: var(--ne-tinta-oro); }
.nt-especial .bq-playlist .bq-escucha-texto b { color: var(--ne-hueso); }
.nt-especial .bq-playlist .bq-escucha-liga a { text-decoration-color: var(--ne-oro); }
.nt-especial .bq-playlist iframe { border-radius: 0; }

/* --- Cierre con boletos --- */
.nt-especial .bq-boletos {
  padding: clamp(3.2rem, 7vw, 5rem) clamp(1rem, 4vw, 3rem);
  background:
    radial-gradient(ellipse 45% 95% at 82% 50%, rgba(224, 178, 92, 0.24), transparent 70%),
    #0B0A0D;
  border-block-color: rgba(224, 178, 92, 0.28);
}
.nt-especial .bq-boletos-in {
  max-width: 1180px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
  gap: clamp(2rem, 5vw, 4rem);
  align-items: center;
}
.nt-especial .bq-boletos-titulo {
  margin: 0;
  font: 400 clamp(3rem, 6.2vw, 5.4rem)/0.88 var(--font-display, 'Bebas Neue', sans-serif);
  text-transform: uppercase;
  color: var(--ne-hueso);
}
.nt-especial .bq-boletos-lema { margin: 1.1rem 0 1.8rem; max-width: 40ch; font-size: 1.08rem; line-height: 1.6; color: var(--ne-hueso-2); }
.nt-especial .bq-boletos-liga {
  display: block;
  width: fit-content;
  margin-top: 1.3rem;
  font: 600 0.92rem/1.4 var(--font-body, 'Outfit', sans-serif);
  color: var(--ne-hueso-2);
  text-decoration: underline;
  text-decoration-color: var(--ne-oro);
  text-underline-offset: 4px;
}
.nt-especial .bq-boletos-liga:hover { color: var(--ne-oro); }
.nt-especial .bq-boletos-arte img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 820 / 360;
  border: 1px solid rgba(224, 178, 92, 0.45);
  box-shadow: 0 30px 80px -30px rgba(0, 0, 0, 0.9), 0 0 110px -26px rgba(224, 178, 92, 0.5);
}

/* ===================== FECHAS Y TIENDA, EN EL MISMO ORO =====================
   Son piezas del sitio (nota.css / evento.css) que en esta nota se tiñen del
   acento del festival para no meter un segundo color. */
.nt-especial .nt-evento { border-top-color: var(--ne-oro); }
.nt-especial .nt-evento > h2 { font-family: var(--font-display, 'Bebas Neue', sans-serif); font-weight: 400; font-size: clamp(1.9rem, 3.4vw, 2.6rem); line-height: 0.95; text-transform: uppercase; color: var(--ne-hueso); }
.nt-especial .nt-ev-cuando { color: var(--ne-oro); }
.nt-especial .nt-cuerpo a.nt-ev-lugar { text-decoration-color: var(--ne-oro); }
.nt-especial .nt-cuerpo a.nt-ev-lugar:hover { color: var(--ne-oro); }
.nt-especial .nt-cuerpo .nt-ev-btn--rojo { background: var(--ne-oro); border-color: var(--ne-oro); color: var(--ne-tinta-oro); }
.nt-especial .nt-cuerpo .nt-ev-btn--rojo:hover { background: var(--ne-oro-claro); border-color: var(--ne-oro-claro); }
.nt-especial .nt-cuerpo .nt-ev-todos { color: var(--ne-oro); }
.nt-especial .pr-tienda {
  background: linear-gradient(120deg, rgba(224, 178, 92, 0.12), rgba(16, 14, 18, 0.9) 45%);
  border-color: rgba(224, 178, 92, 0.3);
  border-left-color: var(--ne-oro);
}
.nt-especial .pr-tienda .pr-tienda-kicker { color: var(--ne-oro); }
.nt-especial .pr-tienda .pr-tienda-ver { background: var(--ne-oro); color: var(--ne-tinta-oro); }
.nt-especial .pr-tienda .pr-tienda-ver:hover { background: var(--ne-oro-claro); }
.nt-especial .nt-tag:hover { border-color: var(--ne-oro); color: var(--ne-oro); }
.nt-especial .nt-creditos { border-left-color: var(--ne-oro); }

/* ============================ SEGUIR LEYENDO ============================ */
.ne-seguir {
  max-width: 1280px;
  margin: clamp(3.4rem, 7vw, 5rem) auto 0;
  padding: 0 clamp(1rem, 4vw, 3rem) clamp(3rem, 6vw, 4.5rem);
}
.ne-seguir h2 {
  position: relative;
  font-weight: 400;
  margin: 0 0 1.6rem;
  padding-top: 1.1rem;
  font: 400 clamp(2rem, 3.6vw, 2.8rem)/0.95 var(--font-display, 'Bebas Neue', sans-serif);
  text-transform: uppercase;
  color: var(--ne-hueso);
}
.ne-seguir h2::before { content: ""; position: absolute; top: 0; left: 0; width: 56px; height: 3px; background: var(--ne-oro); }
.ne-seguir ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.4rem; }
.ne-seguir a { display: grid; gap: 0.7rem; text-decoration: none; color: inherit; }
.ne-seguir img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border: 1px solid var(--ne-linea); transition: border-color 0.25s var(--ne-curva); }
.ne-seguir a:hover img { border-color: var(--ne-oro); }
.ne-seguir b {
  font: 700 1.12rem/1.2 var(--font-headline, 'Barlow Condensed', sans-serif);
  color: var(--ne-hueso);
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.ne-seguir a:hover b { color: var(--ne-oro-claro); }
.ne-seguir i {
  font: 600 0.68rem/1 var(--font-data, 'Barlow', sans-serif);
  font-style: normal;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ne-hueso-3);
}

/* =============================== MOVIMIENTO ===============================
   Solo lo que cuenta algo: la portada entra en orden (título, idea, botones,
   cartel) y la luz gira muy despacio detrás del cartel. */
@media (prefers-reduced-motion: no-preference) {
  .ne-luz { animation: ne-girar 140s linear infinite; transform-origin: 72% 48%; }
  .ne-heroe-texto > * { animation: ne-sube 0.9s var(--ne-curva) backwards; }
  .ne-heroe-texto > :nth-child(2) { animation-delay: 0.05s; }
  .ne-heroe-texto > :nth-child(3) { animation-delay: 0.12s; }
  .ne-heroe-texto > :nth-child(4) { animation-delay: 0.22s; }
  .ne-heroe-texto > :nth-child(5) { animation-delay: 0.32s; }
  .ne-heroe-cartel { animation: ne-cartel 1.2s 0.15s var(--ne-curva) backwards; }
  .ne-franja .ne-dato { animation: ne-sube 0.8s var(--ne-curva) backwards; }
  .ne-franja .ne-dato:nth-child(2) { animation-delay: 0.08s; }
  .ne-franja .ne-dato:nth-child(3) { animation-delay: 0.16s; }
  .ne-franja .ne-dato:nth-child(4) { animation-delay: 0.24s; }
}
@keyframes ne-girar { to { transform: rotate(360deg); } }
@keyframes ne-sube { from { opacity: 0; transform: translateY(22px); } }
@keyframes ne-cartel { from { opacity: 0; transform: translateY(28px) scale(0.97); } }

/* ================================ TELÉFONO ================================ */
@media (max-width: 1100px) {
  .ne-seguir ul { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  .ne-heroe-in { grid-template-columns: minmax(0, 1fr); gap: 2.2rem; }
  .ne-heroe-cartel { justify-self: center; width: min(100%, 460px); }
  .ne-heroe-cartel img { transform: none; }
  .ne-luz {
    background: repeating-conic-gradient(from 0deg at 50% 74%, rgba(243, 223, 179, 0.09) 0deg 2deg, transparent 2deg 14deg);
    -webkit-mask-image: radial-gradient(circle at 50% 74%, #000 0%, rgba(0, 0, 0, 0.5) 24%, transparent 55%);
            mask-image: radial-gradient(circle at 50% 74%, #000 0%, rgba(0, 0, 0, 0.5) 24%, transparent 55%);
    transform-origin: 50% 74%;
  }
  .ne-heroe { background: radial-gradient(ellipse 90% 45% at 50% 76%, rgba(224, 178, 92, 0.24), transparent 72%), linear-gradient(180deg, #0B0A0D 0%, #060507 100%); }
  .ne-franja-in { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ne-dato:nth-child(odd) { border-left: 0; padding-left: 0; }
  .ne-dato:nth-child(n + 3) { border-top: 1px solid var(--ne-linea); }
  .nt-especial .bq-playlist { grid-template-columns: minmax(0, 1fr); justify-items: center; text-align: left; }
  .nt-especial .bq-playlist-portada img { width: 220px; }
  .nt-especial .bq-playlist-texto { width: 100%; max-width: 520px; }
  .nt-especial .bq-boletos-in { grid-template-columns: minmax(0, 1fr); }
  .ne-seguir ul { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
  .ne-cta .ne-btn { flex: 1 1 100%; }
  .ne-preguntas { grid-template-columns: minmax(0, 1fr); }
  .ne-dato dd b { font-size: 1.4rem; }
  .ne-dato { padding-block: 1rem; }
  .ne-seguir ul { grid-template-columns: minmax(0, 1fr); }
  .nt-especial .bq-cartel-abajo { flex-direction: column; gap: 0.7rem; }
  .nt-especial .bq-cartel-abajo li { flex-direction: column; gap: 0.7rem; }
}
