/* Habana 1957 · la landing del No Winter Music Fest 2026.
   Página propia: no usa la cabecera ni el pie de la web, ni movil.css.
   Sigue el sistema de diseño «Habana 1957»: un solo tema (noche), rosa para la
   orquesta, turquesa solo para «y Alain Pérez», coral solo para HABANA 1957 y
   el tachado de WINTER. Esquinas vivas. Pensada primero para el teléfono.

   Todo lo que se mueve está al final, bajo «Movimiento», y se apaga entero con
   «prefers-reduced-motion». Sin habana.js la página se ve completa y quieta. */

@font-face { font-family: 'Alfa Slab One'; font-style: normal; font-weight: 400; font-display: swap;
  src: url(../assets/fonts/alfa-slab-one-latin.woff2) format('woff2'); }
@font-face { font-family: 'Damion'; font-style: normal; font-weight: 400; font-display: swap;
  src: url(../assets/fonts/damion-latin.woff2) format('woff2'); }

:root {
  --fondo: #13285c; --hondo: #0b1a3d; --rosa: #f4a3b5; --turquesa: #4fb3a6;
  --azul-claro: #7f9bd6; --coral: #f06449; --crema: #f3efe4;
  --nombre: 'Anton', 'Oswald', 'Arial Narrow', sans-serif;
  --titulo: 'Alfa Slab One', Rockwell, Georgia, serif;
  --firma: 'Damion', 'Brush Script MT', cursive;
  --texto: 'Oswald', 'Arial Narrow', sans-serif;
  --lectura: 'Newsreader', Georgia, serif;
  --lado: 20px;
}
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth; }
body { margin: 0; background: var(--fondo); color: var(--crema); font-family: var(--lectura); -webkit-font-smoothing: antialiased; overflow-x: hidden; }
a { color: inherit; text-decoration: none; }
img { max-width: 100%; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; border-radius: 0; }
:focus-visible { outline: 3px solid var(--crema); outline-offset: 3px; }
[hidden] { display: none !important; }
main { overflow-x: clip; }
.solo-lector { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

/* ── Barra de arriba: la puerta de vuelta a la web ── */
.nw-barra { position: fixed; inset: 0 0 auto 0; z-index: 40; display: flex; align-items: center; gap: 14px; padding: 10px var(--lado);
  background: rgba(11,26,61,0); transition: background .3s, box-shadow .3s; }
.nw-barra.fija { background: rgba(11,26,61,.94); box-shadow: 0 1px 0 rgba(244,163,181,.3); }
.nw-barra-logo img { display: block; height: 22px; width: auto; }
.nw-barra-idiomas { margin-left: auto; display: flex; gap: 2px; font-family: var(--texto); font-weight: 500; font-size: 13px; letter-spacing: .12em; }
.nw-barra-idiomas a { padding: 8px 7px; color: rgba(243,239,228,.62); }
.nw-barra-idiomas a[aria-current] { color: var(--rosa); }
.nw-barra-entradas { font-family: var(--texto); font-weight: 600; font-size: 13px; letter-spacing: .1em; text-transform: uppercase;
  padding: 9px 12px; background: var(--rosa); color: var(--fondo); }
.nw-barra-entradas:hover { background: var(--crema); }

/* ── Portada: el cartel ── */
.h57 { position: relative; overflow: hidden; background: var(--fondo); padding-top: 46px; }
.h57-cartel { position: relative; margin: 8px 10px 0; border: 4px solid var(--rosa); padding: 7px; }
.h57-dentro { position: relative; border: 1.5px solid var(--rosa); overflow: hidden; padding: 24px 12px 16px; display: grid; }
.h57-foto { position: absolute; inset: 0; z-index: 0; overflow: hidden; }
.h57-foto img { position: absolute; inset: -3%; width: 106%; height: 106%; max-width: none; display: block; object-fit: cover; object-position: 60% 45%; }
.h57-foto::after { content: ""; position: absolute; inset: 0;
  background: linear-gradient(to bottom, rgba(19,40,92,.96) 0%, rgba(19,40,92,.7) 22%, rgba(19,40,92,.15) 46%, rgba(19,40,92,.25) 66%, rgba(19,40,92,.92) 84%, #13285c 100%); }
.h57-dentro > *:not(.h57-foto) { position: relative; z-index: 2; }
.h57-grano { position: absolute; inset: 0; z-index: 8; pointer-events: none; background-size: 220px 220px, 260px 260px; }
.h57-orquesta { margin: 0; font-family: var(--nombre); font-weight: 400; color: var(--rosa); text-transform: uppercase;
  letter-spacing: .04em; line-height: 1.04; font-size: min(5.9vw, 50px); }
.h57-orquesta span { display: block; white-space: nowrap; }
.h57-invitado { margin: 6px 0 0; justify-self: end; font-family: var(--firma); font-weight: 400; color: var(--turquesa);
  font-size: clamp(46px, 14vw, 90px); line-height: 1; transform: rotate(-8deg); transform-origin: right center;
  text-shadow: 4px 4px 0 var(--hondo); white-space: nowrap; padding: 0 4px 6px 0; }
.h57-invitado small { font-size: .62em; margin-right: .12em; }
.h57-escena { position: relative; height: clamp(330px, 98vw, 560px); margin-top: 12px; }
.h57-alain { position: absolute; left: -6%; bottom: 0; height: 100%; width: auto; max-width: none; display: block; z-index: 1; transform-origin: 50% 100%; }
.h57-titulo { position: absolute; right: 2%; bottom: 7%; z-index: 3; margin: 0; font-family: var(--titulo); font-weight: 400;
  color: var(--coral); text-transform: uppercase; line-height: 1; transform: rotate(-8deg); transform-origin: right bottom;
  font-size: clamp(54px, 16vw, 150px); text-align: right;
  text-shadow: 1px 1px 0 var(--hondo), 2px 2px 0 var(--hondo), 3px 3px 0 var(--hondo), 4px 4px 0 var(--hondo), 5px 5px 0 var(--hondo), 6px 6px 0 var(--hondo); }
.h57-titulo .pal, .h57-titulo .cifra { display: block; white-space: nowrap; }
.h57-titulo .pal i, .h57-titulo .cifra i { display: inline-block; font-style: normal; }
.h57-titulo .cifra { font-size: .8em; margin-top: -.06em; font-variant-numeric: tabular-nums; }
.h57-bajada { margin: 18px 0 0; font-family: var(--texto); font-weight: 500; font-size: clamp(17px, 4.6vw, 22px); line-height: 1.35;
  letter-spacing: .05em; text-transform: uppercase; }
.h57-cuenta { margin: 16px 0 0; font-family: var(--texto); font-weight: 500; font-size: 14px; letter-spacing: .18em; text-transform: uppercase; color: var(--rosa); min-height: 1.4em; }
.h57-cuenta b { font-family: var(--nombre); font-weight: 400; font-size: 1.7em; letter-spacing: .02em; margin-right: .2em; }

/* El panel de fechas: una entrada de época, con su botón en cada noche. */
.h57-panel { margin: 16px 5px 5px; background: var(--rosa); color: var(--fondo); border: 3px solid var(--hondo);
  outline: 1.5px solid var(--rosa); outline-offset: 4px; padding: 4px 10px; display: grid; min-height: 120px; }
.h57-fila { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 4px 10px; align-items: center; padding: 9px 0;
  border-bottom: 1px solid rgba(19,40,92,.28); font-family: var(--texto); text-transform: uppercase; letter-spacing: .04em; }
.h57-fila:last-child { border-bottom: none; }
.h57-dia { font-weight: 600; font-size: 15px; white-space: nowrap; }
.h57-sala { font-weight: 500; font-size: 13.5px; text-align: right; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.h57-fila .nw-boton { grid-column: 1 / -1; margin-top: 4px; }

/* Botones. Sobre rosa: azul. Sobre azul: rosa. «Avísame»: solo el borde. */
.nw-boton { display: grid; place-items: center; width: 100%; min-height: 48px; padding: 8px 14px; text-align: center;
  font-family: var(--texto); font-weight: 600; font-size: 15px; line-height: 1.15; letter-spacing: .06em; text-transform: uppercase;
  background: var(--fondo); color: var(--rosa); border: 2px solid var(--fondo); cursor: pointer; transition: background .15s, color .15s, transform .15s; }
.nw-boton:hover { background: var(--hondo); border-color: var(--hondo); }
.nw-boton:active { transform: translateY(2px); }
.nw-boton-aviso { background: transparent; color: var(--fondo); }
.nw-boton-aviso:hover { background: var(--fondo); color: var(--rosa); }
.sobre-azul .nw-boton { background: var(--rosa); color: var(--fondo); border-color: var(--rosa); }
.sobre-azul .nw-boton:hover { background: var(--crema); border-color: var(--crema); }
.sobre-azul .nw-boton-aviso { background: transparent; color: var(--rosa); border-color: var(--rosa); }
.sobre-azul .nw-boton-aviso:hover { background: var(--rosa); color: var(--fondo); }

/* ── La franja del No Winter: al pie del cartel, sobre el mismo azul ── */
.nw-franja { position: relative; z-index: 2; display: grid; gap: 14px; justify-items: center; text-align: center; padding: 16px var(--lado) 26px; }
.nw-marca { display: grid; gap: 6px; }
.nw-hash { font-family: var(--texto); font-weight: 600; font-size: 22px; letter-spacing: .03em; line-height: 1; }
.nw-hash s { text-decoration: none; position: relative; }
.nw-hash s::after { content: ""; position: absolute; left: -1px; right: -1px; top: 46%; height: .14em; background: var(--coral); transform-origin: left center; }
.nw-franja-fechas { font-family: var(--texto); font-weight: 500; font-size: 12px; letter-spacing: .26em; line-height: 1; text-transform: uppercase; color: var(--rosa); }
.nw-apoyo { display: grid; gap: 8px; justify-items: center; }
.nw-legal { font-family: var(--texto); font-weight: 500; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; }
.nw-logos { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 12px 16px; }
.nw-logos img { height: 30px; width: auto; display: block; }
.nw-logos .nw-filete { display: none; width: 1px; align-self: stretch; background: rgba(243,239,228,.45); }
.nw-logos .nw-ajl { height: 22px; }

/* ── La marquesina: los ritmos y las canciones, pasando ── */
.nw-cinta { position: relative; z-index: 3; margin: 6px -4vw; padding: 8px 0; background: var(--rosa); color: var(--fondo); border-block: 3px solid var(--hondo);
  transform: rotate(-2deg); overflow: hidden; white-space: nowrap; }
.nw-cinta-tira { display: inline-flex; gap: 0; font-family: var(--nombre); line-height: 1.35; font-size: 24px; letter-spacing: .06em; text-transform: uppercase; will-change: transform; }
.nw-cinta-tira span { padding: 0 .55em; }
.nw-cinta-tira span::after { content: "✦"; margin-left: 1.1em; font-size: .6em; vertical-align: .22em; }

/* ── Bloques ── */
.nw-bloque { position: relative; padding: 56px var(--lado); display: grid; gap: 22px; }
.nw-rotulo { margin: 0; font-family: var(--nombre); font-weight: 400; font-size: clamp(36px, 10.5vw, 64px); line-height: 1.2; letter-spacing: .03em; text-transform: uppercase; color: var(--rosa); text-wrap: balance; }
.nw-ante { margin: 0 0 -14px; line-height: 1.5; font-family: var(--texto); font-weight: 500; font-size: 13px; letter-spacing: .26em; text-transform: uppercase; color: var(--crema); }
.nw-texto { margin: 0; font-size: 19px; line-height: 1.6; color: rgba(243,239,228,.92); max-width: 34em; }
/* Todo bloque de texto va justificado, siempre y en todas partes, con guiones
   para que no queden ríos. Solo se libran los rótulos y las etiquetas. */
main p, main dd, main li span, .nw-pie p, .nw-hoja p, .nw-acepta span, .nw-cookies p {
  text-align: justify; hyphens: auto; -webkit-hyphens: auto; }
main p.nw-ante, main p.nw-papel, main p.nw-alain-nombre, main p.nw-disco-pista, main p.nw-pendiente,
main p.h57-orquesta, main p.h57-invitado, main p.h57-cuenta, .nw-meritos li span {
  text-align: inherit; hyphens: manual; -webkit-hyphens: manual; }
.nw-todos .nw-ante { text-align: center; }

/* La trama: punto de imprenta a 45°, en azul claro, muy bajito. */
.con-trama { overflow: hidden; }
.con-trama::before { content: ""; position: absolute; inset: -40%; z-index: 0; pointer-events: none; transform: rotate(45deg);
  background-image: radial-gradient(circle, rgba(127,155,214,.2) 1.3px, transparent 1.7px); background-size: 10px 10px; }
.con-trama > * { position: relative; z-index: 1; }

/* ── Érase una vez: se pasa con el dedo ── */
.nw-erase { background: var(--hondo); padding-inline: 0; }
.nw-erase > .nw-ante, .nw-erase > .nw-rotulo { padding-inline: var(--lado); }
.nw-carril { display: flex; gap: 14px; overflow-x: auto; scroll-snap-type: x mandatory; padding: 6px var(--lado) 14px; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.nw-carril::-webkit-scrollbar { display: none; }
.nw-carta { flex: 0 0 min(82vw, 360px); scroll-snap-align: center; min-height: 300px; display: grid; align-content: end; gap: 12px; padding: 22px 20px 24px;
  background: var(--fondo); border: 1.5px solid var(--rosa); position: relative; overflow: hidden; }
.nw-carta-n { position: absolute; top: 4px; right: 12px; font-family: var(--titulo); font-size: 120px; line-height: 1; color: rgba(127,155,214,.2); }
.nw-carta-lugar { font-family: var(--texto); font-weight: 500; font-size: 12px; letter-spacing: .24em; text-transform: uppercase; color: var(--rosa); }
.nw-carta h3 { margin: 0; font-family: var(--nombre); font-weight: 400; font-size: 31px; line-height: 1.2; letter-spacing: .03em; text-transform: uppercase; color: var(--crema); text-wrap: balance; }
.nw-carta p { margin: 0; font-family: var(--texto); font-weight: 400; font-size: 16.5px; line-height: 1.55; letter-spacing: .04em; text-transform: uppercase; color: var(--rosa); }
.nw-carta.final { background: var(--rosa); border-color: var(--hondo); align-content: center; }
.nw-carta.final h3 { color: var(--fondo); font-size: 34px; }
.nw-carta.final p { color: var(--fondo); }
.nw-carta.final .nw-boton { margin-top: 6px; }
.nw-puntos { display: flex; justify-content: center; gap: 9px; }
.nw-puntos i { width: 9px; height: 9px; background: rgba(244,163,181,.3); transition: background .2s, transform .2s; }
.nw-puntos i.on { background: var(--rosa); transform: scale(1.25); }

/* ── Las cuatro noches: la ruta y las entradas ── */
.nw-ruta { position: relative; display: grid; grid-template-columns: repeat(4, 1fr); margin: 6px 0 2px; padding-top: 34px; }
.nw-ruta::before { content: ""; position: absolute; left: 12.5%; right: 12.5%; top: 40px; border-top: 2px dashed rgba(244,163,181,.55); }
.nw-ruta-parada { display: grid; justify-items: center; gap: 8px; text-align: center; font-family: var(--texto); text-transform: uppercase; }
.nw-ruta-parada i { width: 14px; height: 14px; background: var(--fondo); border: 3px solid var(--rosa); transform: rotate(45deg); position: relative; z-index: 1; transition: background .3s; }
.nw-ruta-parada.pasada i { background: var(--rosa); }
.nw-ruta-parada b { font-weight: 600; font-size: 12.5px; letter-spacing: .03em; color: var(--crema); }
.nw-ruta-parada span { font-size: 8.5px; letter-spacing: .03em; color: var(--rosa); line-height: 1.3; }
.nw-ruta-parada b { white-space: nowrap; }
.nw-ruta-trompeta { position: absolute; top: 0; left: 10%; width: 46px; height: 26px; margin-left: -23px; z-index: 2; transition: left 1.1s cubic-bezier(.6,.05,.3,1); }
.nw-ruta-trompeta img { display: block; width: 100%; height: 100%; object-fit: contain; }

.nw-entradas { display: grid; gap: 18px; }
.nw-entrada { position: relative; display: grid; grid-template-columns: 76px minmax(0, 1fr); background: var(--rosa); color: var(--fondo);
  border: 3px solid var(--hondo); outline: 1.5px solid var(--rosa); outline-offset: 4px; margin: 5px; }
.nw-entrada:nth-child(odd) { --giro: -1.1deg; } .nw-entrada:nth-child(even) { --giro: 1deg; }
.nw-entrada-talon { display: grid; align-content: center; justify-items: center; gap: 2px; padding: 14px 6px; border-right: 2px dashed rgba(19,40,92,.55); text-align: center; text-transform: uppercase; position: relative; }
.nw-entrada-talon::before, .nw-entrada-talon::after { content: ""; position: absolute; right: -9px; width: 16px; height: 16px; background: var(--fondo); border-radius: 50%; }
.nw-entrada-talon::before { top: -11px; } .nw-entrada-talon::after { bottom: -11px; }
.nw-entrada-sem { font-family: var(--texto); font-weight: 600; font-size: 14px; letter-spacing: .14em; }
.nw-entrada-num { font-family: var(--titulo); font-size: 46px; line-height: .95; }
.nw-entrada-mes { font-family: var(--texto); font-weight: 600; font-size: 14px; letter-spacing: .14em; }
.nw-entrada-cuerpo { display: grid; gap: 10px; padding: 16px 14px 14px; align-content: start; min-width: 0; }
.nw-entrada-isla { font-family: var(--texto); font-weight: 600; font-size: 12px; letter-spacing: .22em; text-transform: uppercase; }
.nw-entrada-sala { margin: -4px 0 0; font-family: var(--nombre); font-weight: 400; font-size: 26px; line-height: 1.2; letter-spacing: .03em; text-transform: uppercase; }
.nw-entrada-ciudad { margin-top: -6px; font-family: var(--texto); font-size: 14px; letter-spacing: .06em; text-transform: uppercase; }
.nw-datos { display: flex; flex-wrap: wrap; gap: 6px 22px; margin: 0; font-family: var(--texto); }
.nw-datos dt { font-size: 11px; letter-spacing: .16em; text-transform: uppercase; opacity: .72; }
.nw-datos dd { margin: 1px 0 0; font-weight: 600; font-size: 16px; letter-spacing: .03em; }
.nw-precios summary { list-style: none; cursor: pointer; font-family: var(--texto); font-weight: 600; font-size: 13px; letter-spacing: .12em; line-height: 1.4; text-transform: uppercase; text-decoration: underline; text-underline-offset: 3px; }
.nw-precios summary::-webkit-details-marker { display: none; }
.nw-precios summary::after { content: " +"; } .nw-precios[open] summary::after { content: " –"; }
.nw-precios ul { margin: 8px 0 0; padding: 0; list-style: none; display: grid; gap: 4px; }
.nw-precios li { display: flex; justify-content: space-between; gap: 12px; align-items: baseline; font-family: var(--texto); font-size: 15px; line-height: 1.35; border-bottom: 1px solid rgba(19,40,92,.25); padding-bottom: 3px; }
.nw-precios li span { text-align: left; hyphens: manual; } .nw-precios li b { font-weight: 600; white-space: nowrap; }
main .nw-precios p { margin: 6px 0 0; font-family: var(--texto); font-size: 12px; letter-spacing: .04em; opacity: .75; text-align: left; }
.nw-ver { justify-self: start; font-family: var(--lectura); font-size: 15px; text-decoration: underline; text-underline-offset: 3px; }
.nw-pendiente { justify-self: start; margin: 0; padding: 6px 10px; font-family: var(--texto); font-size: 13px; line-height: 1.4; color: #0b1a3d; background: #f2d16b; }

/* ── El concierto: el disco ── */
.nw-concierto { gap: 28px; }
.nw-disco-caja { justify-self: center; width: min(74vw, 320px); aspect-ratio: 1; position: relative; }
.nw-disco { position: absolute; inset: 0; border-radius: 50%; background: var(--hondo);
  background-image: repeating-radial-gradient(circle, transparent 0 5px, rgba(127,155,214,.2) 5px 6px); border: 2px solid rgba(127,155,214,.45); }
.nw-disco::before { content: ""; position: absolute; inset: 31%; border-radius: 50%; background: var(--rosa); border: 3px solid var(--hondo); }
.nw-disco::after { content: ""; position: absolute; inset: 48.4%; border-radius: 50%; background: var(--fondo); }
.nw-disco-sello { position: absolute; inset: 31%; display: grid; place-content: center; text-align: center; color: var(--fondo); border-radius: 50%; z-index: 1; }
.nw-disco-sello b { font-family: var(--titulo); font-weight: 400; font-size: clamp(13px, 4.2vw, 18px); line-height: 1; margin-bottom: 26%; }
.nw-disco-sello span { font-family: var(--texto); font-weight: 600; font-size: clamp(8px, 2.4vw, 10px); letter-spacing: .14em; margin-top: 26%; }
.nw-atril { display: flex; flex-wrap: wrap; gap: 9px; margin: 0; padding: 0; list-style: none; }
.nw-atril li { font-family: var(--texto); font-weight: 500; font-size: 15px; letter-spacing: .06em; text-transform: uppercase; padding: 7px 12px; border: 1.5px solid var(--rosa); color: var(--rosa); }
.nw-alain { display: grid; gap: 14px; padding: 22px 20px; border: 1.5px solid var(--rosa); background: var(--hondo); }
.nw-alain-nombre { margin: 0; font-family: var(--firma); font-weight: 400; font-size: 54px; line-height: 1; color: var(--turquesa); text-shadow: 3px 3px 0 var(--fondo); }
.nw-meritos { margin: 0; padding: 0; list-style: none; display: grid; gap: 10px; }
.nw-meritos li { display: grid; gap: 1px; }
.nw-meritos b { font-family: var(--texto); font-weight: 600; font-size: 13px; letter-spacing: .18em; text-transform: uppercase; color: var(--rosa); }
.nw-meritos span { font-size: 17px; line-height: 1.45; }

/* ── Antes de venir ── */
.nw-sedes { display: grid; gap: 14px; }
.nw-sede { border: 1.5px solid rgba(244,163,181,.6); }
.nw-sede summary { list-style: none; display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 16px 18px; cursor: pointer; }
.nw-sede summary::-webkit-details-marker { display: none; }
.nw-sede summary b { font-family: var(--nombre); font-weight: 400; line-height: 1.25; font-size: 23px; letter-spacing: .04em; text-transform: uppercase; color: var(--rosa); }
.nw-sede summary span { font-family: var(--texto); font-size: 12px; letter-spacing: .2em; text-transform: uppercase; white-space: nowrap; }
.nw-sede summary { flex-wrap: wrap; row-gap: 2px; }
.nw-sede summary::after { content: "+"; font-family: var(--texto); font-size: 24px; line-height: 1; color: var(--rosa); margin-left: auto; padding-left: 8px; }
.nw-sede[open] summary::after { content: "–"; }
.nw-sede dl { margin: 0; padding: 0 18px 18px; display: grid; gap: 12px; }
.nw-sede dt { font-family: var(--texto); font-weight: 500; font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: var(--rosa); }
.nw-sede dd { margin: 3px 0 0; font-size: 17px; line-height: 1.5; }
.nw-sede .nw-pendiente { margin: 0 18px 18px; }

/* ── Para todo el mundo, apoyos y pie ── */
.nw-todos { background: var(--hondo); text-align: center; justify-items: center; }
.nw-todos .nw-texto { font-size: 21px; }
.nw-apoyos { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 22px 28px; }
.nw-apoyos img { height: 40px; width: auto; display: block; }
.nw-pie { display: grid; gap: 18px; justify-items: center; text-align: center; padding: 44px var(--lado) 110px; border-top: 1px solid rgba(244,163,181,.25); }
.nw-pie-logo img { display: block; height: 30px; width: auto; }
.nw-pie p { margin: 0; font-size: 16px; line-height: 1.5; color: rgba(243,239,228,.8); max-width: 26em; }
.nw-pie nav { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 20px; font-family: var(--texto); font-size: 13px; letter-spacing: .12em; text-transform: uppercase; }
.nw-pie nav a, .nw-pie nav button { padding: 8px 0; color: var(--rosa); text-transform: uppercase; letter-spacing: .12em; }

/* ── El botón que acompaña en el teléfono ── */
.nw-fijo { position: fixed; left: 12px; right: 12px; bottom: 12px; z-index: 35; display: grid; transform: translateY(160%); transition: transform .35s cubic-bezier(.2,.8,.2,1); }
.nw-fijo.visto { transform: none; }
.nw-fijo a { display: grid; place-items: center; min-height: 52px; background: var(--rosa); color: var(--fondo); border: 3px solid var(--hondo); outline: 1.5px solid var(--rosa); outline-offset: 3px;
  font-family: var(--texto); font-weight: 600; font-size: 17px; letter-spacing: .1em; text-transform: uppercase; }

/* ── «Avísame»: la hoja con el formulario ── */
.nw-hoja { border: 0; padding: 0; margin: auto auto 0; width: 100%; max-width: 520px; max-height: 92dvh; background: var(--fondo); color: var(--crema); border-top: 4px solid var(--rosa); overflow-y: auto; }
.nw-hoja::backdrop { background: rgba(11,26,61,.82); }
.nw-hoja-dentro { display: grid; gap: 16px; padding: 24px 22px 28px; }
.nw-hoja h2 { margin: 0 34px 0 0; font-family: var(--nombre); font-weight: 400; font-size: 32px; line-height: 1.2; letter-spacing: .03em; text-transform: uppercase; color: var(--rosa); }
.nw-hoja p { margin: 0; font-size: 17px; line-height: 1.5; }
.nw-hoja-cerrar { position: absolute; top: 12px; right: 12px; width: 44px; height: 44px; font-family: var(--texto); font-size: 30px; line-height: 1; color: var(--rosa); }
.nw-campo { display: grid; gap: 6px; }
.nw-campo span { font-family: var(--texto); font-weight: 500; font-size: 13px; letter-spacing: .12em; text-transform: uppercase; color: var(--rosa); }
.nw-campo input, .nw-campo select { width: 100%; height: 50px; background: var(--crema); border: 2px solid var(--crema); border-radius: 0; color: var(--fondo); font-family: var(--lectura); font-size: 17px; padding: 0 14px; outline: none; }
.nw-campo input:focus, .nw-campo select:focus { border-color: var(--rosa); }
.nw-acepta { display: flex; gap: 12px; align-items: flex-start; cursor: pointer; font-size: 14px; line-height: 1.5; color: rgba(243,239,228,.85); }
.nw-acepta input { margin: 2px 0 0; width: 20px; height: 20px; accent-color: var(--rosa); flex: none; }
.nw-error { font-size: 15px; color: var(--rosa); border-left: 2px solid var(--rosa); padding-left: 11px; }
.nw-letra { font-size: 13px !important; color: rgba(243,239,228,.65); }
.nw-letra a { text-decoration: underline; }
.nw-trampa { position: absolute; left: -9999px; }

/* ── Aviso de cookies: tarjeta pequeña ── */
.nw-cookies { position: fixed; left: 12px; right: 12px; bottom: 12px; z-index: 60; max-width: 400px; background: var(--hondo); border: 1.5px solid var(--rosa); padding: 16px 18px; display: grid; gap: 12px; box-shadow: 0 12px 40px rgba(0,0,0,.45); }
.nw-cookies p { margin: 0; font-size: 14.5px; line-height: 1.5; }
.nw-cookies p a { text-decoration: underline; white-space: nowrap; color: var(--rosa); }
.nw-cookies div { display: flex; gap: 10px; }
.nw-cookies button { flex: 1; padding: 10px 12px; font-family: var(--texto); font-weight: 600; font-size: 14px; letter-spacing: .08em; text-transform: uppercase; border: 1.5px solid var(--rosa); color: var(--rosa); }
.nw-cookies button.si { background: var(--rosa); color: var(--fondo); }

/* ── 7 y 8 de diciembre: más islas, por confirmar ── */
.nw-ruta-parada.pronto i { border-style: dashed; border-width: 2px; }
.nw-ruta-parada.pronto b, .nw-ruta-parada.pronto span { opacity: .75; }
.nw-entrada.pronto { background: transparent; color: var(--rosa); border: 2px dashed var(--rosa); outline: none; }
.nw-entrada.pronto .nw-entrada-talon { border-right-color: rgba(244,163,181,.6); }
.nw-entrada.pronto .nw-entrada-talon::before, .nw-entrada.pronto .nw-entrada-talon::after { display: none; }
.nw-entrada.pronto .nw-entrada-num { font-size: 34px; line-height: 1.1; }
.nw-entrada.pronto p { margin: 0; font-family: var(--lectura); font-size: 17px; line-height: 1.5; color: var(--crema); }

/* ── El disco se pulsa y suena ── */
.nw-disco-zona { justify-self: center; display: grid; gap: 14px; justify-items: center; width: min(74vw, 320px); }
.nw-disco-zona .nw-disco-caja { width: 100%; }
.nw-disco-caja { display: block; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.nw-disco-brazo { position: absolute; right: -4%; top: -3%; width: 34%; height: 62%; z-index: 2; pointer-events: none; transform-origin: 82% 9%; transform: rotate(-24deg); transition: transform .6s cubic-bezier(.3,.8,.3,1); }
.nw-disco-caja.suena .nw-disco-brazo { transform: rotate(0deg); }
.nw-disco-brazo::before { content: ""; position: absolute; right: 10%; top: 0; width: 18%; aspect-ratio: 1; border-radius: 50%; background: var(--rosa); border: 3px solid var(--hondo); }
.nw-disco-brazo::after { content: ""; position: absolute; right: 17%; top: 8%; width: 4px; height: 86%; background: var(--rosa); transform-origin: top center; transform: rotate(14deg); box-shadow: 0 0 0 2px var(--hondo); }
.nw-disco-caja.suena .nw-disco-brazo { transform: rotate(0deg); }
.nw-disco-pista { justify-self: center; margin: -8px 0 0; font-family: var(--texto); font-weight: 500; font-size: 13px; letter-spacing: .2em; text-transform: uppercase; color: var(--rosa); text-align: center; line-height: 1.5; }

/* ── El atril: el repertorio por grupos ── */
.nw-repertorio { display: grid; gap: 18px; }
.nw-repertorio h3 { margin: 0 0 8px; font-family: var(--texto); font-weight: 500; font-size: 13px; letter-spacing: .22em; line-height: 1.5; text-transform: uppercase; color: var(--crema); }
.nw-atril li { line-height: 1.3; }

/* ── Quién es quién ── */
.nw-quien { display: grid; gap: 18px; }
.nw-ficha { display: grid; gap: 14px; align-content: start; padding: 24px 20px; border: 1.5px solid var(--rosa); background: var(--hondo); }
.nw-ficha h3 { margin: 0; font-family: var(--nombre); font-weight: 400; font-size: 30px; line-height: 1.2; letter-spacing: .03em; text-transform: uppercase; color: var(--rosa); }
.nw-ficha .nw-papel { margin: -8px 0 0; font-family: var(--texto); font-weight: 500; font-size: 13px; letter-spacing: .2em; line-height: 1.5; text-transform: uppercase; color: var(--crema); }
.nw-ficha p { margin: 0; font-size: 18px; line-height: 1.6; color: rgba(243,239,228,.92); }
.nw-ficha a { color: var(--rosa); text-decoration: underline; text-underline-offset: 3px; }
.nw-ficha .nw-alain-nombre { font-size: 58px; line-height: 1.1; color: var(--turquesa); }
.nw-ficha-foto { position: relative; height: 260px; overflow: hidden; border-bottom: 1.5px solid var(--rosa); margin: -24px -20px 4px; background: var(--fondo); }
.nw-ficha-foto img { position: absolute; left: 50%; top: 10px; height: 150%; width: auto; max-width: none; transform: translateX(-50%); display: block; }

/* Fotos de la orquesta y de Natanael: a una tinta, como las del cartel. */
.nw-ficha-foto.ancha { height: 210px; }
.nw-ficha-foto.ancha img { position: absolute; inset: 0; width: 100%; height: 100%; top: 0; left: 0; transform: none; object-fit: cover; }
.nw-ficha-foto.tinta { background: var(--fondo); isolation: isolate; }
/* La misma tinta que la foto de la orquesta: azul claro sobre azul noche. */
.nw-ficha-foto.tinta img { filter: grayscale(1) contrast(1.05) brightness(1.3); }
.nw-ficha-foto.tinta::before { content: ""; position: absolute; inset: 0; z-index: 1; background: var(--azul-claro); mix-blend-mode: multiply; }
.nw-ficha-foto.tinta::after { content: ""; position: absolute; inset: 0; z-index: 2; background: var(--fondo); mix-blend-mode: lighten; }
.nw-disco-prueba { justify-self: center; display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin: 0; padding: 10px 12px; background: #f2d16b; }
.nw-disco-prueba span { flex-basis: 100%; text-align: center; font-family: var(--texto); font-size: 13px; color: #0b1a3d; }
.nw-disco-prueba button { font-family: var(--texto); font-weight: 600; font-size: 13px; letter-spacing: .06em; text-transform: uppercase; padding: 7px 10px; border: 2px solid #0b1a3d; color: #0b1a3d; }
.nw-disco-prueba button[aria-pressed="true"] { background: #0b1a3d; color: #f2d16b; }

/* El line-up: nombres en columnas, con su instrumento debajo. */
.nw-lineup { display: grid; gap: 14px; padding-top: 6px; }
.nw-lineup .nw-ante { margin: 0; color: var(--rosa); }
.nw-lineup ul { margin: 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 18px; }
.nw-lineup li { display: grid; gap: 1px; border-top: 1px solid rgba(244,163,181,.35); padding-top: 8px; }
.nw-lineup li b { font-family: var(--nombre); font-weight: 400; font-size: 18px; line-height: 1.3; letter-spacing: .03em; text-transform: uppercase; color: var(--crema); }
main .nw-lineup li span { font-family: var(--texto); font-size: 13px; letter-spacing: .08em; line-height: 1.4; text-transform: uppercase; color: var(--rosa); text-align: left; hyphens: manual; }
@media (min-width: 700px) { .nw-lineup ul { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .nw-lineup ul { grid-template-columns: repeat(5, minmax(0, 1fr)); } }

/* ── Compromisos y colaboradores ── */
.nw-compromisos { margin: 0; padding: 0; list-style: none; display: grid; gap: 14px; text-align: left; max-width: 900px; }
.nw-compromisos li { display: grid; gap: 3px; align-content: start; padding: 16px 18px; border: 1.5px solid rgba(244,163,181,.6); background: var(--fondo); }
.nw-compromisos b { font-family: var(--texto); font-weight: 600; font-size: 14px; letter-spacing: .16em; line-height: 1.5; text-transform: uppercase; color: var(--rosa); }
.nw-compromisos span { font-size: 17px; line-height: 1.55; }
.nw-colaboran { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 20px 30px; }
.nw-colaboran img { height: 44px; width: auto; max-width: 150px; object-fit: contain; display: block; }
.nw-colaboran img.bajo { height: 26px; }

/* ── «¿A qué suena?»: el juego de percusión (percusion.js) ──
   Una cosa pequeña y secundaria, junto al texto del concierto: un escenario
   con la banda encima y las claves delante, que son lo que toca quien juega.
   Sin caja: los instrumentos van sueltos sobre la tarima. */
.nwj { justify-self: center; width: 100%; max-width: 440px; margin-top: 26px; display: grid; gap: 14px; justify-items: center; text-align: center; }
.nwj-titulo { margin: 0; font-family: var(--titulo); font-weight: 400; font-size: 30px; line-height: 1.2; text-transform: uppercase; color: var(--rosa); transform: rotate(-4deg);
  text-shadow: 1px 1px 0 var(--hondo), 2px 2px 0 var(--hondo), 3px 3px 0 var(--hondo), 4px 4px 0 var(--hondo); }
main p.nwj-texto { margin: 0; font-size: 16px; line-height: 1.5; color: rgba(243,239,228,.88); }
/* El selector de ritmo: teclas pequeñas, como las de una gramola. */
.nwj-ritmos { display: flex; flex-wrap: nowrap; justify-content: center; gap: 3px; width: 100%; max-width: 380px; }
.nwj-ritmos button { flex: 1 1 auto; min-width: 0; min-height: 38px; padding: 5px 4px; background: var(--rosa); color: var(--fondo); border: 2px solid var(--rosa);
  font-family: var(--texto); font-weight: 600; font-size: 12.5px; letter-spacing: .04em; line-height: 1.25; text-transform: uppercase; white-space: nowrap; }
.nwj-ritmos button[aria-pressed="true"] { background: var(--hondo); color: var(--rosa); }
.nwj-ritmos button.parar { flex: 0 0 32px; background: transparent; color: var(--rosa); }
/* El escenario: marquesina arriba, la banda sobre la tarima y las claves delante. */
.nwj-escena { position: relative; width: 100%; display: grid; justify-items: center; padding-top: 4px; }
.nwj-luces { display: grid; grid-template-columns: repeat(16, 1fr); gap: 4px; width: 92%; padding: 7px 8px; background: var(--hondo); border: 2px solid var(--rosa); }
.nwj-luces i { aspect-ratio: 1; border-radius: 50%; border: 1.5px solid rgba(127,155,214,.6); background: transparent; transition: transform .05s; }
.nwj-luces i.fuerte { border-color: var(--azul-claro); }
.nwj-luces i.tuya { background: var(--rosa); border-color: var(--rosa); }
.nwj-luces i.ahora { background: var(--crema); border-color: var(--crema); transform: scale(1.25); }
.nwj-luces i.tuya.ahora { background: var(--coral); border-color: var(--coral); transform: scale(1.5); box-shadow: 0 0 0 3px rgba(240,100,73,.35); }
.nwj-banda { position: relative; z-index: 1; width: 100%; display: grid; grid-template-columns: 1fr .8fr .95fr 1.25fr 1.15fr; align-items: end; gap: 4px; padding: 26px 10px 0; margin-bottom: -16px; }
.nwj-banda .ins svg { width: 100%; height: 96px; overflow: visible; display: block; }
.nwj-banda .ins:nth-child(2) svg, .nwj-banda .ins:nth-child(4) svg { transform: translateY(8px); }
.nwj-banda .ins.fuera { opacity: .25; }
/* La tarima: un tablón rosa con su frente a rayas. */
.nwj-tarima { width: 100%; height: 44px; border-top: 5px solid var(--rosa); background: repeating-linear-gradient(90deg, var(--hondo) 0 22px, #0e2150 22px 44px); clip-path: polygon(0 0, 100% 0, 96% 100%, 4% 100%); }
/* Las claves: delante de la tarima y más grandes. Son el botón. */
.nwj-dale { position: relative; z-index: 2; margin-top: -30px; display: grid; justify-items: center; gap: 2px; padding: 0 16px 2px; cursor: pointer; user-select: none; -webkit-user-select: none; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.nwj-dale svg { width: 170px; height: 96px; overflow: visible; display: block; filter: drop-shadow(0 0 0 transparent); }
.nwj-dale span { font-family: var(--texto); font-weight: 600; font-size: 12px; letter-spacing: .18em; line-height: 1.4; text-transform: uppercase; color: var(--rosa); }
.nwj-dale:active svg { transform: translateY(2px); }
main p.nwj-marcador { margin: -4px 0 0; min-height: 1.3em; font-family: var(--firma); font-size: 28px; line-height: 1.2; color: var(--crema); text-shadow: 2px 2px 0 var(--hondo); text-align: center; hyphens: manual; transform: rotate(-3deg); }
main p.nwj-marcador.bien { color: var(--turquesa); } main p.nwj-marcador.mal { color: var(--rosa); }
/* Tinta de los dibujos: relleno rosa, trazo hondo y sombra de bloque. */
.nwj .t { fill: var(--rosa); stroke: var(--hondo); stroke-width: 4; stroke-linejoin: round; stroke-linecap: round; }
.nwj .c { fill: var(--crema); stroke: var(--hondo); stroke-width: 4; stroke-linejoin: round; }
.nwj .a { fill: var(--azul-claro); stroke: var(--hondo); stroke-width: 4; stroke-linejoin: round; }
.nwj .l { fill: none; stroke: var(--hondo); stroke-width: 3.5; stroke-linecap: round; }
.nwj .s { fill: var(--hondo); stroke: none; }
.nwj .mueve { transform-box: fill-box; transition: transform .16s cubic-bezier(.3,1.6,.5,1); }
.nwj .ins.dado .golpea { transform: rotate(14deg) translateY(6px); transition-duration: .04s; }
.nwj .ins.dado .parche { transform: scaleY(.8); transition-duration: .04s; }
.nwj .ins.dado .agita { transform: rotate(-16deg); transition-duration: .05s; }
.nwj .ins.dado .agita2 { transform: rotate(14deg); transition-duration: .05s; }
.nwj .ins.dado .rasca { transform: translateX(34px); transition-duration: .12s; }
.nwj .ins.dado .tiembla { transform: rotate(5deg); transition-duration: .04s; }
@media (prefers-reduced-motion: reduce) { .nwj .mueve { transition: none; } }

/* ── Tableta y escritorio: la composición del horizontal ── */
@media (min-width: 700px) {
  :root { --lado: 40px; }
  .nw-entradas { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 26px; }
  .nw-sedes { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: stretch; }
  .nw-carta { flex-basis: 360px; }
  .nw-quien { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .nw-quien .nw-ficha:first-child { grid-column: 1 / -1; }
  .nw-compromisos { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .nw-cinta-tira { font-size: 30px; }
  .nw-ruta-parada b { font-size: 17px; } .nw-ruta-parada span { font-size: 12.5px; }
  .nw-fijo { display: none; }
  .nw-pie { padding-bottom: 56px; }
  .nw-cookies { right: auto; left: 24px; bottom: 24px; }
  .nw-hoja { margin: auto; border: 4px solid var(--rosa); }
}
@media (min-width: 900px) {
  :root { --lado: 68px; }
  .nw-barra-logo img { height: 26px; }
  .h57-cartel { margin: 14px 28px 0; border-width: 6px; padding: 6px; }
  .h57-dentro { padding: 54px 56px 48px; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); column-gap: 24px; }
  .h57-foto::after { background: linear-gradient(to right, rgba(19,40,92,.97) 0%, rgba(19,40,92,.86) 32%, rgba(19,40,92,.25) 58%, rgba(19,40,92,.2) 100%),
    linear-gradient(to bottom, rgba(19,40,92,.4) 0%, transparent 30%, transparent 75%, rgba(19,40,92,.7) 100%); }
  .h57-foto img { object-position: center 40%; }
  .h57-orquesta, .h57-invitado, .h57-bajada, .h57-cuenta, .h57-panel { grid-column: 1; }
  .h57-orquesta { font-size: clamp(34px, 3.3vw, 52px); }
  .h57-invitado { justify-self: start; transform-origin: left center; font-size: clamp(60px, 6vw, 96px); margin: 50px 0 0 clamp(120px, 15vw, 260px); }
  .h57-escena { grid-column: 2; grid-row: 1 / span 6; height: auto; min-height: 560px; margin: -54px 0 -48px; }
  .h57-alain { left: -6%; height: 94%; }
  .h57-titulo { right: auto; left: 4%; bottom: 23%; transform-origin: left bottom; font-size: clamp(84px, 8.6vw, 150px); }
  .h57-cuenta { margin-top: clamp(110px, 12vw, 200px); }
  .h57-panel { max-width: 620px; }
  .h57-sala, .h57-dia { font-size: 16px; }
  .nw-bloque { padding: 84px var(--lado); gap: 30px; }
  .nw-erase { padding-inline: 0; }
  .nw-texto { font-size: 21px; }
  .nw-concierto { grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); column-gap: 64px; align-items: start; }
  .nw-concierto > .nw-ante, .nw-concierto > .nw-rotulo { grid-column: 1 / -1; }
  .nw-concierto > .nw-disco-zona { grid-column: 2; grid-row: 3; align-self: center; justify-self: center; width: min(100%, 360px); }
  .nw-concierto > .nw-prosa { grid-column: 1; grid-row: 3; }
  .nw-ficha { padding: 30px 32px; }
  .nw-quien .nw-ficha:first-child { grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); column-gap: 44px; }
  .nw-ficha-foto { margin: -30px 0 -30px -32px; height: auto; min-height: 340px; border-bottom: 0; border-right: 1.5px solid var(--rosa); grid-row: 1 / span 2; }
  .nw-ficha-foto.ancha { margin: -30px -32px 4px; height: 300px; min-height: 0; border-right: 0; border-bottom: 1.5px solid var(--rosa); grid-row: auto; }
  .nw-quien .nw-ficha:first-child { grid-template-columns: 300px minmax(0, 1fr); }
  .nw-quien .nw-ficha:first-child > div:not(.nw-ficha-foto) { grid-column: 2; }
  .nw-quien .nw-ficha:first-child > div { display: grid; gap: 14px; align-content: start; }
  .nw-alain { grid-column: 1 / -1; grid-template-columns: auto minmax(0, 1fr); column-gap: 40px; align-items: center; padding: 30px 34px; }
  .nw-meritos { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 30px; }
  .nw-carta { min-height: 340px; }
}
@media (min-width: 1200px) {
  .nw-logos .nw-filete { display: block; }
  .h57-fila { grid-template-columns: 96px minmax(0, 1fr) 236px; padding: 7px 0; }
  .h57-fila .nw-boton { grid-column: auto; margin: 0; min-height: 42px; font-size: 14px; padding: 6px 10px; }
  .h57-sala { text-align: left; }
  .nw-franja { grid-template-columns: auto 1fr; justify-items: start; align-items: center; text-align: left; padding: 22px var(--lado) 30px; }
  .nw-apoyo { justify-self: end; justify-items: end; }
  .nw-hash { font-size: 26px; }
  .nw-logos img { height: 38px; } .nw-logos .nw-ajl { height: 28px; }
  .nw-entradas { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 22px; }
  .nw-entrada.pronto { grid-column: 1 / -1; grid-template-columns: 220px minmax(0, 1fr); }
  .nw-entrada.pronto .nw-entrada-talon { border-bottom: 0; border-right: 2px dashed rgba(244,163,181,.6); }
  .nw-entrada { grid-template-columns: 1fr; }
  .nw-entrada-talon { grid-auto-flow: column; justify-content: center; align-items: baseline; gap: 10px; border-right: 0; border-bottom: 2px dashed rgba(19,40,92,.55); padding: 12px; }
  .nw-entrada-talon::before { top: auto; bottom: -9px; left: -11px; right: auto; } .nw-entrada-talon::after { bottom: -9px; right: -11px; }
  .nw-sedes { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* ══ Movimiento ══════════════════════════════════════════════════════════
   habana.js pone «anima» en <html> al empezar. Sin esa clase, o con
   «prefers-reduced-motion», nada de esto se aplica y todo se ve en su sitio. */
@media (prefers-reduced-motion: no-preference) {
  /* La portada se imprime por capas, como una serigrafía. */
  .anima .h57-cartel { animation: marco .9s cubic-bezier(.2,.8,.2,1) both; }
  .anima .h57-foto img { animation: foto 1.6s ease-out both, vaiven 26s ease-in-out 1.6s infinite alternate; }
  .anima .h57-orquesta span { animation: sube .6s cubic-bezier(.2,.8,.2,1) both; }
  .anima .h57-orquesta span:nth-child(1) { animation-delay: .35s; } .anima .h57-orquesta span:nth-child(2) { animation-delay: .47s; }
  .anima .h57-invitado { animation: firma .9s cubic-bezier(.6,0,.2,1) .85s both; }
  .anima .h57-alain { animation: entra .9s cubic-bezier(.2,.9,.25,1.15) .55s both, baila 1.24s ease-in-out 1.5s infinite alternate; }
  .anima .h57-titulo .pal i { animation: sello .42s cubic-bezier(.2,1.5,.4,1) both; animation-delay: calc(1.2s + var(--i) * .07s); }
  .anima .h57-titulo .cifra { animation: sello .5s cubic-bezier(.2,1.5,.4,1) 1.75s both; }
  .anima .h57-bajada, .anima .h57-cuenta, .anima .h57-panel { animation: sube .7s cubic-bezier(.2,.8,.2,1) both; }
  .anima .h57-bajada { animation-delay: 1.9s; } .anima .h57-cuenta { animation-delay: 2s; } .anima .h57-panel { animation-delay: 2.1s; }
  .anima .nw-hash s::after { animation: tacha .5s cubic-bezier(.6,0,.2,1) 2.5s both; }
  /* El ratón mueve un poco las capas (solo donde hay ratón). */
  .anima .h57-escena { transform: translate3d(calc(var(--mx, 0) * 10px), calc(var(--my, 0) * 6px), 0); transition: transform .5s ease-out; }
  .anima .h57-foto { transform: translate3d(calc(var(--mx, 0) * -8px), calc(var(--my, 0) * -5px), 0); transition: transform .7s ease-out; }
  /* La marquesina. */
  .anima .nw-cinta-tira { animation: cinta 26s linear infinite; }
  /* La trama se desplaza muy despacio. */
  .anima .con-trama::before { animation: trama 40s linear infinite; }
  /* Lo que aparece al bajar. */
  .anima .aparece { opacity: 0; transform: translateY(28px); transition: opacity .7s ease-out, transform .7s cubic-bezier(.2,.8,.2,1); transition-delay: calc(var(--n, 0) * 90ms); }
  .anima .aparece.visto { opacity: 1; transform: none; }
  .anima .nw-entrada.aparece { transform: translateY(40px) rotate(calc(var(--giro) * 5)); }
  .anima .nw-entrada.aparece.visto { transform: rotate(var(--giro)); }
  .anima .nw-entrada.visto:hover { transform: rotate(0) translateY(-4px); transition-delay: 0s; transition-duration: .25s; }
  .anima .nw-disco { animation: gira 9s linear infinite; }
  .anima .nw-disco-caja.suena .nw-disco { animation-duration: 1.8s; }
  .anima .nw-ruta-trompeta img { animation: trompeta .5s ease-in-out infinite alternate; }
  .anima .nw-fijo.visto a { animation: late 2.4s ease-in-out 1s infinite; }

  @keyframes marco { from { clip-path: inset(48% 48% 48% 48%); opacity: 0; } to { clip-path: inset(0); opacity: 1; } }
  @keyframes foto { from { opacity: 0; transform: scale(1.12); } to { opacity: 1; transform: none; } }
  @keyframes vaiven { from { transform: none; } to { transform: scale(1.05) translate(-1.2%, -.8%); } }
  @keyframes sube { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: none; } }
  @keyframes firma { from { clip-path: inset(-20% 100% -20% -5%); } to { clip-path: inset(-20% -5% -20% -5%); } }
  @keyframes entra { from { opacity: 0; transform: translateY(18%) rotate(4deg); } to { opacity: 1; transform: none; } }
  @keyframes baila { from { transform: rotate(-1.3deg) translateY(0); } 50% { transform: rotate(0) translateY(-.7%); } to { transform: rotate(1.3deg) translateY(0); } }
  @keyframes sello { from { opacity: 0; transform: scale(2.1) rotate(-9deg); } to { opacity: 1; transform: none; } }
  @keyframes tacha { from { transform: scaleX(0); } to { transform: none; } }
  @keyframes cinta { to { transform: translateX(-50%); } }
  @keyframes trama { to { background-position: 100px 0; } }
  @keyframes gira { to { transform: rotate(360deg); } }
  @keyframes trompeta { from { transform: translateY(0) rotate(-4deg); } to { transform: translateY(-3px) rotate(3deg); } }
  @keyframes late { 0%, 100% { transform: none; } 50% { transform: scale(1.025); } }
}

/* El juego, en su propio recuadro: separado del line-up, como un cartelito de club.
   En pantalla ancha, la invitación a la izquierda y el escenario a la derecha. */
.nwj { max-width: 560px; margin-top: 64px; padding: 34px 20px 30px; background: var(--hondo);
  border: 2px solid var(--rosa); box-shadow: inset 0 0 0 6px var(--hondo), inset 0 0 0 8px rgba(244,163,181,.55); }
.nwj-luces { background: var(--fondo); }
.nwj-tarima { background: repeating-linear-gradient(90deg, var(--fondo) 0 22px, #0e2150 22px 44px); }
.nwj-ritmos button[aria-pressed="true"] { background: var(--fondo); }
@media (min-width: 900px) {
  .nwj { max-width: none; margin-top: 88px; padding: 48px 56px 44px; grid-template-columns: minmax(0, 1fr) minmax(0, 440px); column-gap: 64px; row-gap: 18px;
    justify-items: start; align-items: center; text-align: left; }
  .nwj > .nwj-titulo { grid-column: 1; grid-row: 1; font-size: 46px; align-self: end; transform-origin: left center; }
  main .nwj > p.nwj-texto { grid-column: 1; grid-row: 2; font-size: 19px; line-height: 1.55; max-width: 34em; }
  .nwj > .nwj-ritmos { grid-column: 1; grid-row: 3; justify-content: flex-start; max-width: 440px; gap: 4px; }
  .nwj > .nwj-ritmos button { min-height: 46px; font-size: 15px; }
  main .nwj > p.nwj-marcador { grid-column: 1; grid-row: 4; align-self: start; text-align: left; font-size: 34px; margin: 4px 0 0; transform-origin: left center; }
  .nwj > .nwj-escena { grid-column: 2; grid-row: 1 / span 4; }
}

/* Pantallas muy anchas: el contenido no se estira más allá de 1424 px; se centra. */
@media (min-width: 1560px) { :root { --lado: calc((100vw - 1424px) / 2); } }
/* El título del juego va inclinado: necesita aire para no rozar el marco. */
.nwj { padding-top: 52px; }
@media (min-width: 900px) { .nwj { padding-top: 76px; padding-bottom: 60px; } }

/* «Érase una vez» en pantalla muy ancha: las seis cartas caben, así que no hay carrusel. */
@media (min-width: 1560px) {
  .nw-carril { overflow: visible; gap: 16px; }
  .nw-carta { flex: 1 1 0; min-width: 0; padding: 20px 18px 22px; }
  .nw-carta h3 { font-size: 24px; } .nw-carta.final h3 { font-size: 26px; }
  .nw-carta p { font-size: 14px; }
  .nw-carta-n { font-size: 96px; }
  .nw-puntos { display: none; }
}

/* En ordenador, las dos frases cortas centradas caben en una línea: sin justificar no dejan huecos. */
@media (min-width: 900px) { main .nw-todos > p.nw-texto, .nw-pie p { max-width: none; text-align: center; } }

/* La ruta responde: las paradas se pueden pulsar y la trompeta marca dónde está. */
.nw-ruta-parada { cursor: pointer; }
.nw-ruta-parada.aqui i { background: var(--crema); border-color: var(--crema); transform: rotate(45deg) scale(1.25); }
.nw-ruta-parada.aqui b { color: var(--rosa); }
.nw-ruta-parada i { transition: background .3s, transform .3s, border-color .3s; }

/* Las paradas de la ruta son las islas, no rombos. La línea pasa por detrás. */
.nw-ruta-isla { width: 34px; height: 34px; margin: -10px 0 -4px; position: relative; z-index: 1; overflow: visible; display: block; transition: transform .3s; }
.nw-ruta-isla path { fill: var(--fondo); stroke: var(--rosa); stroke-width: 5; stroke-linejoin: round; paint-order: stroke; transition: fill .3s, stroke .3s; }
.nw-ruta-parada.pasada .nw-ruta-isla path { fill: var(--rosa); }
.nw-ruta-parada.aqui .nw-ruta-isla { transform: scale(1.2); }
.nw-ruta-parada.aqui .nw-ruta-isla path { fill: var(--crema); stroke: var(--crema); }
@media (min-width: 700px) { .nw-ruta-isla { width: 46px; height: 46px; margin: -16px 0 -6px; } }
.nw-ruta-trompeta { top: -12px; }
.nw-ruta-parada.pronto i { margin: 0 0 6px; }
@media (min-width: 700px) { .nw-ruta-trompeta { top: -20px; } .nw-ruta-parada.pronto i { margin: 0 0 10px; } }

/* En la entrada, las dos fechas de venta: preventa y venta general. */
main p.nw-entrada-preventa { margin: 2px 0 0; font-family: var(--texto); font-weight: 600; font-size: 12.5px; letter-spacing: .08em; line-height: 1.4; text-transform: uppercase; color: var(--fondo); text-align: left; hyphens: manual; }
main p.nw-entrada-preventa { white-space: pre-line; }
