/* =========================================================
   Jardines Perpetuos — Festival de Día de Muertos (/festival/)

   Se carga DESPUÉS de styles.css y sólo añade lo propio del minisitio:
   hereda tokens, tipografías, botones, header, footer y utilidades
   (.wrap, .btn, .link-caps, .icon, [data-reveal]) del sitio.

   Personalidad: las fotografías mandan. Bandas alternadas marfil / noche,
   filetes de oro, títulos en Cormorant y un papel picado discreto. Todo
   con prefijo .fp- para no tocar nunca el resto del sitio.
   ========================================================= */

.fp-body {
  --fp-noche: #1A0A24;
  --fp-marfil: #FBF7F2;
  --fp-linea: rgba(75, 36, 100, .16);
  --fp-linea-clara: rgba(255, 210, 122, .32);
}

/* =========================================================
   GUIRNALDA DE CEMPASÚCHIL EN EL BORDE DEL ENCABEZADO

   Sólo en /festival/. El encabezado es el MISMO de todo el sitio: aquí no se
   toca ni su marcado ni su CSS, se le cuelga un ::after acotado a .fp-body.
   Fuera del Festival no existe.

   Va como fondo repetido en horizontal de un SVG propio cuyo mosaico casa por
   los dos cantos, así que no hay empalme visible a ningún ancho. Cuelga por
   debajo del borde para dar profundidad, y no intercepta el ratón: lo que
   queda detrás se sigue pudiendo pulsar.
   ========================================================= */
.fp-body .site-header::after {
  content: "";
  /* Sube 8 px sobre el borde: las flores se apoyan en él en vez de quedar
     cortadas en recto. Esos 8 px caen en la franja vacía que el encabezado
     deja bajo el logotipo y el menú, así que no tapan nada. */
  position: absolute; left: 0; right: 0; top: calc(100% - 8px);
  height: 34px;
  background: url(../images/guirnalda-cempasuchil.svg) repeat-x left top / auto 34px;
  pointer-events: none;
}

/* En un teléfono el encabezado mide 68 px: una guirnalda de 34 se come la
   mitad y deja de ser un adorno del borde. Se achica con él. */
@media (max-width: 899px) {
  .fp-body .site-header::after {
    top: calc(100% - 6px); height: 27px;
    background-size: auto 27px;
  }
}
@media (max-width: 639px) {
  .fp-body .site-header::after {
    top: calc(100% - 5px); height: 22px;
    background-size: auto 22px;
  }
}

/* Al desplazar, el encabezado del sitio dibuja una línea de 1 px sobre su
   borde. Aquí estorba: la guirnalda ES el borde. Se deja sólo la sombra. */
.fp-body .site-header.is-scrolled {
  box-shadow: 0 8px 24px -18px rgba(31, 26, 36, .35);
}

/* ---------- Utilidades del minisitio ---------- */
.fp-oculto {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: 0;
  overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0;
}

.fp-titulo-seccion {
  font-family: var(--font-serif); font-weight: 500;
  font-size: clamp(34px, 3.6vw, 54px); line-height: 1.02; letter-spacing: -.01em;
  color: var(--jp-purple);
}
.fp-titulo-seccion--claro { color: var(--jp-cream); }

.fp-encabezado { max-width: 62ch; margin-bottom: clamp(30px, 3.6vw, 56px); }
.fp-encabezado__texto {
  margin-top: 14px; font-size: clamp(16px, 1.25vw, 18px); line-height: 1.6; color: var(--jp-muted);
  max-width: 54ch;
}

/* Pie de foto: antetítulo versalita + una línea de contexto */
.fp-pie { display: block; margin-top: 14px; }
.fp-pie__titulo {
  display: block;
  font: 600 12px/1.2 var(--font-sans); letter-spacing: .14em; text-transform: uppercase;
  color: var(--jp-purple);
}
.fp-pie__texto {
  display: block; margin-top: 6px; max-width: 44ch;
  font-size: 15px; line-height: 1.5; color: var(--jp-muted);
}

/* Papel picado: el mismo gesto de la portada del Festival en la home */
.fp-papel {
  position: absolute; left: 0; right: 0; top: 0; height: 11px; z-index: 3;
  background: radial-gradient(circle at 10px 0, transparent 7px, var(--jp-marigold) 7.5px) 0 0 / 20px 11px repeat-x;
  opacity: .92;
}

/* =========================================================
   PORTADA
   ========================================================= */
.fp-portada {
  position: relative; isolation: isolate; overflow: hidden;
  min-height: 540px;
  height: min(calc(100svh - var(--header-h)), 840px);
  display: flex; flex-direction: column; justify-content: flex-end;
  padding-bottom: clamp(34px, 4vw, 62px);
  color: #fff; background: var(--fp-noche);
}
/* Capas apiladas hacia ARRIBA: foto (0) · velo (1) · texto (2) · papel picado (3).
   Sin z-index negativos, para que el orden se lea de un vistazo. */
.fp-portada__media, .fp-portada__media img { position: absolute; inset: 0; width: 100%; height: 100%; }
.fp-portada__media { z-index: 0; }
.fp-portada__media img { object-fit: cover; object-position: 50% 44%; }
.fp-portada::before {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background:
    linear-gradient(0deg, rgba(20, 6, 28, .86) 0%, rgba(20, 6, 28, .42) 38%, rgba(20, 6, 28, 0) 66%),
    linear-gradient(90deg, rgba(20, 6, 28, .52) 0%, rgba(20, 6, 28, .12) 42%, rgba(20, 6, 28, 0) 70%);
}

.fp-portada__inner { position: relative; z-index: 2; }
.fp-portada__edicion {
  font: 700 clamp(13px, 1.25vw, 18px)/1 var(--font-sans);
  letter-spacing: .26em; text-transform: uppercase; color: var(--jp-gold);
}
.fp-portada__titulo {
  margin-top: clamp(10px, 1.2vw, 18px);
  font-family: var(--font-serif); font-weight: 600;
  font-size: clamp(54px, 7.4vw, 112px); line-height: .9; letter-spacing: -.015em;
  color: var(--jp-cream);
  text-shadow: 0 4px 30px rgba(0, 0, 0, .45);
}
.fp-portada__lema {
  margin-top: clamp(12px, 1.4vw, 20px);
  font-family: var(--font-serif); font-style: italic; font-weight: 500;
  font-size: clamp(21px, 2.2vw, 33px); color: #fff;
  text-shadow: 0 2px 18px rgba(0, 0, 0, .5);
}

.fp-portada__datos {
  display: flex; flex-wrap: wrap; align-items: center; gap: 10px 18px;
  margin-top: clamp(22px, 2.4vw, 34px);
  padding-top: clamp(18px, 2vw, 28px);
  border-top: 1px solid rgba(255, 210, 122, .45);
  max-width: 640px;
  font: 600 clamp(13px, 1.05vw, 15px)/1 var(--font-sans);
  letter-spacing: .12em; text-transform: uppercase;
}
.fp-portada__datos li { display: flex; align-items: center; gap: 18px; }
.fp-portada__datos li + li::before {
  content: ""; width: 5px; height: 5px; border-radius: 50%;
  background: var(--jp-marigold); flex: none;
}
.fp-portada__libre {
  padding: 8px 14px; border-radius: 999px;
  background: var(--jp-marigold-deep); color: #fff; letter-spacing: .1em;
}
.fp-portada__datos li.fp-portada__libre::before { display: none; }

.fp-portada__cta { margin-top: clamp(26px, 2.8vw, 40px); }

.fp-portada__pie {
  position: absolute; right: var(--gutter); bottom: clamp(16px, 1.8vw, 26px); z-index: 2;
  display: flex; align-items: center; gap: 8px;
  font: 500 12.5px/1.2 var(--font-sans); letter-spacing: .1em; text-transform: uppercase;
  color: rgba(255, 255, 255, .78);
}
.fp-portada__pie .icon { font-size: 16px; color: var(--jp-marigold); }

/* =========================================================
   MANIFIESTO
   ========================================================= */
.fp-manifiesto {
  background: var(--fp-marfil);
  padding: clamp(58px, 6.6vw, 108px) 0 clamp(52px, 5.6vw, 88px);
}
.fp-manifiesto__inner {
  display: grid;
  grid-template-columns: minmax(0, 32%) minmax(0, 1fr);
  gap: clamp(26px, 3vw, 44px) clamp(32px, 5vw, 84px);
  align-items: start;
}
.fp-manifiesto__titulo {
  font-family: var(--font-serif); font-weight: 500;
  font-size: clamp(50px, 6.6vw, 104px); line-height: .92; letter-spacing: -.015em;
  color: var(--jp-purple);
}
.fp-manifiesto__titulo::after {
  content: ""; display: block; width: 84px; height: 2px; margin-top: 22px;
  background: linear-gradient(90deg, var(--jp-marigold), rgba(244, 162, 30, 0));
}
.fp-manifiesto__texto { max-width: 62ch; }
.fp-manifiesto__texto p + p { margin-top: 1.1em; font-size: clamp(16px, 1.2vw, 17.5px); line-height: 1.68; color: var(--jp-muted); }
.fp-manifiesto__lead {
  font-family: var(--font-serif); font-weight: 500;
  font-size: clamp(23px, 2.2vw, 32px); line-height: 1.34; color: var(--jp-text);
}

.fp-conceptos {
  grid-column: 1 / -1;
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(20px, 3vw, 48px);
  margin-top: clamp(30px, 3.6vw, 54px);
}
.fp-conceptos li { padding-top: 22px; border-top: 1px solid var(--fp-linea); }
.fp-conceptos__icono { display: block; color: var(--jp-purple); }
.fp-conceptos__icono .icon { font-size: 30px; stroke-width: 1.25; }
.fp-conceptos__titulo {
  margin: 14px 0 8px;
  font: 600 12.5px/1.2 var(--font-sans); letter-spacing: .16em; text-transform: uppercase;
  color: var(--jp-purple);
}
.fp-conceptos li p { font-size: 15px; line-height: 1.55; color: var(--jp-muted); max-width: 34ch; }

/* Con fotografía: el título va sobre el danzante del sombrero blanco, en un
   panel vertical; el texto de la derecha sigue sobre marfil. Un velo sólo
   abajo, donde cae la palabra. */
.fp-manifiesto__rotulo {
  position: relative; isolation: isolate; overflow: hidden;
  display: flex; align-items: flex-end;
  aspect-ratio: 800 / 1157;   /* la de la foto: se ve entera y el título cae
                                 sobre el traje, debajo de la máscara */
  padding: clamp(18px, 1.8vw, 28px);
  border-radius: var(--radius); background: var(--fp-noche);
}
.fp-manifiesto__rotulo picture, .fp-manifiesto__rotulo img {
  position: absolute; inset: 0; width: 100%; height: 100%;
}
.fp-manifiesto__rotulo picture { z-index: -2; }
.fp-manifiesto__rotulo img { object-fit: cover; object-position: 50% 0; }
.fp-manifiesto__rotulo::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(0deg, rgba(26, 10, 36, .8) 0%, rgba(26, 10, 36, .25) 24%, rgba(26, 10, 36, 0) 40%);
}
.fp-manifiesto__rotulo .fp-manifiesto__titulo {
  font-size: clamp(44px, 4.6vw, 76px);
  color: var(--jp-cream); text-shadow: 0 2px 18px rgba(0, 0, 0, .45);
}
.fp-manifiesto__rotulo .fp-manifiesto__titulo::after { margin-top: 14px; }
.fp-manifiesto--foto .fp-manifiesto__texto { align-self: center; }

/* =========================================================
   MOMENTOS
   ========================================================= */
.fp-momentos { background: var(--jp-white); padding: clamp(50px, 5.6vw, 92px) 0 clamp(56px, 6vw, 98px); }
.fp-momentos__duo {
  display: grid; grid-template-columns: repeat(12, minmax(0, 1fr));
  column-gap: clamp(20px, 2.6vw, 42px);
  align-items: start;
}
.fp-momento { margin: 0; }
.fp-momento--1 { grid-column: 1 / 6; }
.fp-momento--2 { grid-column: 7 / 13; margin-top: clamp(56px, 8.5vw, 148px); }

.fp-momento__img { overflow: hidden; border-radius: var(--radius); background: var(--jp-ivory-2); }
.fp-momento__img picture { display: block; }
.fp-momento__img img {
  width: 100%; height: auto;
  transition: transform .9s var(--ease);
}
.fp-momento:hover .fp-momento__img img { transform: scale(1.03); }

/* Del tercer momento en adelante: la fotografía ocupa el ancho completo */
.fp-momento--ancho { margin-top: clamp(50px, 6vw, 96px); }
.fp-momento--ancho .fp-momento__img { border-radius: 0; }
.fp-momento--ancho .fp-momento__img picture { display: block; height: 100%; }
.fp-momento--ancho .fp-momento__img img {
  aspect-ratio: 16 / 7; object-fit: cover; object-position: 50% 42%;
}
.fp-momento--ancho .fp-pie { margin-top: 16px; }

/* =========================================================
   PROGRAMA
   ========================================================= */
.fp-programa {
  position: relative; isolation: isolate; overflow: hidden;
  color: #fff;
  background:
    radial-gradient(58% 78% at 8% 92%, rgba(196, 58, 128, .38) 0%, rgba(196, 58, 128, 0) 62%),
    radial-gradient(48% 62% at 62% 6%, rgba(120, 60, 170, .42) 0%, rgba(120, 60, 170, 0) 72%),
    linear-gradient(118deg, #2E0F42 0%, #4B2464 52%, #34124A 100%);
  padding: clamp(54px, 6vw, 94px) 0 clamp(56px, 6.2vw, 98px);
}
.fp-programa__inner {
  display: grid; grid-template-columns: minmax(0, 1fr) clamp(200px, 25%, 320px);
  gap: clamp(30px, 4.4vw, 72px); align-items: center;
}
.fp-programa .fp-titulo-seccion { color: var(--jp-cream); }

.fp-programa__cuando {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px;
  margin-top: 18px;
  font: 600 clamp(14px, 1.15vw, 16px)/1.4 var(--font-sans);
  letter-spacing: .1em; text-transform: uppercase; color: var(--jp-gold);
}
.fp-programa__cuando span[aria-hidden] { opacity: .5; }
.fp-programa__libre {
  padding: 7px 13px; border-radius: 999px;
  background: var(--jp-marigold-deep); color: #fff; letter-spacing: .08em;
}

.fp-actividades {
  display: grid; grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: clamp(12px, 1.6vw, 26px);
  margin-top: clamp(28px, 3.4vw, 46px);
}
.fp-actividades li {
  display: flex; flex-direction: column; align-items: center; text-align: center; gap: 12px;
  padding-top: 20px; border-top: 1px solid var(--fp-linea-clara);
  font: 600 12px/1.3 var(--font-sans); letter-spacing: .08em; text-transform: uppercase;
}
.fp-actividades .icon { font-size: clamp(30px, 2.6vw, 38px); color: var(--jp-gold); stroke-width: 1.25; }
.fp-programa__nota {
  margin-top: clamp(20px, 2.2vw, 30px);
  font-size: 14px; line-height: 1.5; color: rgba(255, 255, 255, .66);
  max-width: 46ch;
}

/* Cartel oficial */
.fp-cartel { margin: 0; }
.fp-cartel__enlace {
  position: relative; display: block; overflow: hidden;
  border-radius: var(--radius); text-decoration: none; color: #fff;
  box-shadow: 0 0 0 1px rgba(255, 210, 122, .35), 0 26px 50px -26px rgba(0, 0, 0, .85);
}
.fp-cartel__enlace img { width: 100%; height: auto; transition: transform .9s var(--ease); }
.fp-cartel__enlace:hover img { transform: scale(1.025); }
.fp-cartel__lupa, .fp-cartelito__lupa {
  position: absolute; left: 0; right: 0; bottom: 0;
  display: flex; align-items: center; justify-content: center; gap: 8px;
  padding: 26px 12px 13px;
  background: linear-gradient(0deg, rgba(20, 6, 28, .88), rgba(20, 6, 28, 0));
  font: 600 11.5px/1.2 var(--font-sans); letter-spacing: .12em; text-transform: uppercase;
  color: #fff;
  opacity: 0; transition: opacity .3s var(--ease);
}
.fp-cartel__enlace:hover .fp-cartel__lupa,
.fp-cartel__enlace:focus-visible .fp-cartel__lupa,
.fp-cartelito__img:hover .fp-cartelito__lupa,
.fp-cartelito__img:focus-visible .fp-cartelito__lupa { opacity: 1; }
.fp-cartel figcaption {
  margin-top: 12px; text-align: center;
  font: 600 11.5px/1.2 var(--font-sans); letter-spacing: .16em; text-transform: uppercase;
  color: rgba(255, 255, 255, .7);
}

/* =========================================================
   CONVOCATORIAS
   ========================================================= */
.fp-convocatorias { background: var(--fp-marfil); padding: clamp(54px, 6vw, 96px) 0 clamp(58px, 6.4vw, 104px); }
.fp-carteles {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(22px, 3vw, 46px);
  align-items: start;
}
/* Los tres carteles a la misma altura: son la misma pieza (4:5) y se leen
   como una fila, no en escalera. */
.fp-cartelito figure { margin: 0; }
.fp-cartelito__img {
  position: relative; display: block; overflow: hidden;
  border-radius: var(--radius); background: var(--jp-ivory-2);
  box-shadow: 0 1px 0 rgba(75, 36, 100, .1), 0 22px 40px -28px rgba(42, 15, 59, .75);
}
.fp-cartelito__img img { width: 100%; height: auto; transition: transform .9s var(--ease); }
.fp-cartelito__img:hover img { transform: scale(1.025); }
.fp-cartelito__titulo {
  margin-top: 20px;
  font-family: var(--font-serif); font-weight: 600;
  font-size: clamp(22px, 1.9vw, 28px); line-height: 1.15; color: var(--jp-purple);
}
.fp-cartelito__texto {
  margin-top: 10px; font-size: 15px; line-height: 1.6; color: var(--jp-muted);
}
.fp-convocatorias__informes { margin-top: clamp(30px, 3.4vw, 50px); }
.fp-convocatorias__informes .link-caps .icon { font-size: 16px; }
.fp-convocatorias__informes .link-caps:hover .icon { transform: none; }

/* =========================================================
   GALERÍA
   ========================================================= */
.fp-galeria { background: var(--jp-white); padding: clamp(54px, 6vw, 96px) 0 clamp(58px, 6.4vw, 104px); }
.fp-mosaico {
  display: grid; grid-template-columns: repeat(12, minmax(0, 1fr));
  column-gap: clamp(18px, 2.4vw, 36px);
  align-items: start;
}
/* Por defecto media rejilla: si mañana se capturan más de tres fotografías,
   las extra se colocan solas sin romper el mosaico. */
.fp-mosaico__celda { margin: 0; grid-column: auto / span 6; }
.fp-mosaico__celda figure { margin: 0; }
.fp-mosaico__celda--1 { grid-column: 1 / 5;  grid-row: 1; }
.fp-mosaico__celda--2 { grid-column: 6 / 13; grid-row: 1; margin-top: clamp(30px, 6vw, 100px); }
.fp-mosaico__celda--3 { grid-column: 3 / 11; grid-row: 2; margin-top: clamp(26px, 3.4vw, 56px); }
.fp-mosaico__img { overflow: hidden; border-radius: var(--radius); background: var(--jp-ivory-2); }
.fp-mosaico__img picture { display: block; }
.fp-mosaico__img img { width: 100%; height: auto; transition: transform .9s var(--ease); }
.fp-mosaico__celda:hover .fp-mosaico__img img { transform: scale(1.03); }

/* Del cuarto en adelante: tira de retratos, cuatro por fila */
.fp-mosaico__celda:nth-child(n+4) { grid-column: auto / span 3; margin-top: clamp(30px, 3.4vw, 56px); }
.fp-mosaico__celda:nth-child(n+4) .fp-mosaico__img img { aspect-ratio: 3 / 4; object-fit: cover; }

/* =========================================================
   LOS ALTARES — tres verticales; la del centro, más alta
   ========================================================= */
.fp-altares { background: var(--fp-marfil); padding: clamp(54px, 6vw, 96px) 0 clamp(58px, 6.4vw, 104px); }
.fp-altares__fila {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr) minmax(0, 1fr);
  gap: clamp(18px, 2.4vw, 36px); align-items: start;
}
.fp-altares__celda figure { margin: 0; }
.fp-altares__celda--1, .fp-altares__celda--3 { margin-top: clamp(40px, 6vw, 96px); }
.fp-altares__img { overflow: hidden; border-radius: var(--radius); background: var(--jp-ivory-2); }
.fp-altares__img picture { display: block; }
.fp-altares__img img { width: 100%; height: auto; aspect-ratio: 3 / 4; object-fit: cover; transition: transform .9s var(--ease); }
.fp-altares__celda:hover .fp-altares__img img { transform: scale(1.03); }

/* =========================================================
   EL LUGAR
   ========================================================= */
.fp-lugar {
  position: relative; isolation: isolate; overflow: hidden;
  color: #fff; background: var(--jp-purple-deep);
}
.fp-lugar__media, .fp-lugar__media picture, .fp-lugar__media img {
  position: absolute; inset: 0; width: 100%; height: 100%;
}
.fp-lugar__media { z-index: 0; }
.fp-lugar__media img { object-fit: cover; object-position: 50% 46%; }
.fp-lugar::before {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(96deg, rgba(20, 6, 28, .93) 0%, rgba(20, 6, 28, .78) 36%, rgba(20, 6, 28, .18) 74%, rgba(20, 6, 28, .05) 100%);
}
.fp-lugar__inner {
  position: relative; z-index: 2;
  min-height: clamp(400px, 44vw, 600px);
  display: flex; align-items: center;
  padding: clamp(50px, 5.4vw, 86px) 0;
}
.fp-lugar__tarjeta { max-width: 44ch; }
.fp-lugar__texto {
  margin-top: 16px; font-size: clamp(16px, 1.2vw, 17.5px); line-height: 1.6;
  color: rgba(255, 255, 255, .86);
}
.fp-lugar__direccion {
  display: flex; align-items: flex-start; gap: 12px;
  margin: clamp(22px, 2.4vw, 32px) 0 clamp(24px, 2.6vw, 34px);
  padding-top: clamp(20px, 2.2vw, 28px);
  border-top: 1px solid var(--fp-linea-clara);
  font-size: 15.5px; line-height: 1.6; color: rgba(255, 255, 255, .92);
}
.fp-lugar__direccion .icon { font-size: 22px; color: var(--jp-marigold); margin-top: 2px; }
.fp-lugar__direccion strong {
  display: inline-block; margin-bottom: 4px;
  font-size: 13px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase;
}

/* =========================================================
   CIERRE
   ========================================================= */
.fp-cierre {
  background: linear-gradient(180deg, var(--jp-purple-deep) 0%, #3A1553 100%);
  color: #fff; padding: clamp(54px, 6.2vw, 100px) 0;
}
.fp-cierre__inner { display: flex; flex-direction: column; align-items: center; text-align: center; }
.fp-cierre__ante {
  font: 700 12px/1 var(--font-sans); letter-spacing: .24em; text-transform: uppercase;
  color: var(--jp-gold);
}
.fp-cierre__frase {
  margin-top: clamp(16px, 1.8vw, 24px); max-width: 24ch;
  font-family: var(--font-serif); font-style: italic; font-weight: 500;
  font-size: clamp(26px, 3.1vw, 45px); line-height: 1.22; color: var(--jp-cream);
}
.fp-cierre__cta { margin-top: clamp(26px, 3vw, 40px); }

/* =========================================================
   VISOR DE CARTELES (mejora progresiva: sin JS, el enlace abre el JPG)
   ========================================================= */
.fp-visor {
  position: fixed; inset: 0; z-index: 120;
  display: flex; align-items: center; justify-content: center;
  padding: clamp(16px, 4vw, 48px);
  background: rgba(16, 5, 24, .94);
  opacity: 0; visibility: hidden;
  transition: opacity .25s var(--ease), visibility 0s linear .25s;
}
.fp-visor.is-open { opacity: 1; visibility: visible; transition-delay: 0s; }
.fp-visor img {
  max-width: 100%; max-height: 100%; width: auto; height: auto;
  border-radius: 6px; box-shadow: 0 30px 70px -30px rgba(0, 0, 0, .9);
}
.fp-visor__cerrar {
  position: absolute; top: clamp(12px, 2vw, 24px); right: clamp(12px, 2vw, 24px);
  display: grid; place-items: center; width: 48px; height: 48px;
  border: 1px solid rgba(255, 255, 255, .35); border-radius: 50%;
  background: rgba(255, 255, 255, .08); color: #fff; cursor: pointer;
  transition: background-color .25s var(--ease), border-color .25s var(--ease);
}
.fp-visor__cerrar:hover { background: rgba(255, 255, 255, .2); border-color: #fff; }
.fp-visor__cerrar .icon { font-size: 22px; }
body.fp-visor-abierto { overflow: hidden; }

/* =========================================================
   APARICIÓN SUAVE — retardos escalonados de esta página
   ========================================================= */
@media (prefers-reduced-motion: no-preference) {
  .js .fp-conceptos [data-reveal]:nth-child(2),
  .js .fp-carteles [data-reveal]:nth-child(2),
  .js .fp-mosaico [data-reveal]:nth-child(2) { transition-delay: .08s; }
  .js .fp-conceptos [data-reveal]:nth-child(3),
  .js .fp-carteles [data-reveal]:nth-child(3),
  .js .fp-mosaico [data-reveal]:nth-child(3) { transition-delay: .16s; }
  .js .fp-altares__fila [data-reveal]:nth-child(2) { transition-delay: .08s; }
  .js .fp-altares__fila [data-reveal]:nth-child(3) { transition-delay: .16s; }
}

/* =========================================================
   RESPONSIVE
   ========================================================= */

/* Laptop */
@media (max-width: 1279px) {
  .fp-momento--2 { margin-top: clamp(40px, 7vw, 100px); }
  .fp-actividades { gap: 10px; }
  .fp-actividades li { font-size: 11px; }
}

/* Tablet */
@media (max-width: 1023px) {
  .fp-portada { height: min(calc(100svh - var(--header-h)), 720px); }
  .fp-portada__media img { object-position: 50% 40%; }

  .fp-manifiesto__inner { grid-template-columns: 1fr; }
  .fp-manifiesto__titulo::after { margin-top: 16px; }

  .fp-programa__inner { grid-template-columns: 1fr; }
  .fp-cartel { max-width: 300px; margin-inline: auto; }

  .fp-carteles { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(20px, 3vw, 34px) clamp(18px, 2.6vw, 30px); }
  .fp-cartelito:nth-child(3) { grid-column: 1 / -1; max-width: 58%; }

  .fp-mosaico__celda--1 { grid-column: 1 / 7; }
  .fp-mosaico__celda--2 { grid-column: 7 / 13; margin-top: clamp(40px, 8vw, 90px); }
  .fp-mosaico__celda--3 { grid-column: 1 / 13; margin-top: clamp(24px, 4vw, 44px); }

  .fp-lugar::before {
    background: linear-gradient(0deg, rgba(20, 6, 28, .96) 0%, rgba(20, 6, 28, .88) 42%,
                                      rgba(20, 6, 28, .6) 74%, rgba(20, 6, 28, .3) 100%);
  }
  .fp-lugar__inner { align-items: flex-end; min-height: clamp(460px, 64vw, 620px); }
  .fp-lugar__tarjeta { max-width: none; }
}

/* =========================================================
   MÓVIL — composición propia, no el desktop apilado:
   portada vertical a pantalla completa, una columna, fotografías
   a sangre y datos en fila corrida.
   ========================================================= */
@media (max-width: 719px) {
  .fp-portada {
    height: min(calc(100svh - var(--header-h)), 700px); min-height: 500px;
    padding-bottom: 30px;
  }
  .fp-portada__media img { object-position: 50% 32%; }
  .fp-portada::before {
    background: linear-gradient(0deg, rgba(20, 6, 28, .92) 0%, rgba(20, 6, 28, .62) 40%,
                                      rgba(20, 6, 28, .28) 68%, rgba(20, 6, 28, .1) 100%);
  }
  .fp-portada__edicion { font-size: 12px; letter-spacing: .22em; }
  .fp-portada__titulo { font-size: clamp(46px, 13.5vw, 64px); }
  .fp-portada__lema { font-size: 20px; }
  .fp-portada__datos {
    flex-direction: column; align-items: flex-start; gap: 10px;
    margin-top: 20px; padding-top: 16px; font-size: 12.5px; letter-spacing: .1em;
  }
  .fp-portada__datos li + li::before { display: none; }
  .fp-portada__datos li { gap: 10px; }
  .fp-portada__libre { padding: 7px 12px; }
  .fp-portada__cta { margin-top: 22px; width: 100%; justify-content: center; }
  .fp-portada__pie { display: none; }

  .fp-manifiesto { padding: 48px 0 44px; }
  .fp-manifiesto__titulo { font-size: clamp(44px, 14vw, 62px); }
  .fp-manifiesto__lead { font-size: 22px; }
  .fp-conceptos { grid-template-columns: 1fr; gap: 0; margin-top: 30px; }
  .fp-conceptos li { padding: 20px 0; border-top: 1px solid var(--fp-linea); }
  .fp-conceptos li:last-child { padding-bottom: 0; }
  .fp-conceptos li p { max-width: none; }

  /* Las fotos salen del contenedor: a sangre, como en una revista */
  .fp-momentos { padding: 40px 0 44px; }
  .fp-momentos__duo { grid-template-columns: 1fr; row-gap: 36px; }
  .fp-momento--1, .fp-momento--2 { grid-column: 1; margin-top: 0; }
  .fp-momentos__duo .fp-momento__img {
    margin-inline: calc(var(--gutter) * -1); border-radius: 0;
  }
  .fp-momento--ancho { margin-top: 36px; }
  .fp-momento--ancho .fp-momento__img img { aspect-ratio: 4 / 3; }
  .fp-momento--2 .fp-momento__img img { aspect-ratio: 5 / 4; object-fit: cover; object-position: 60% 50%; }

  .fp-programa { padding: 46px 0 50px; }
  .fp-programa__cuando { font-size: 13px; gap: 8px 10px; }
  .fp-actividades {
    grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0;
    margin-top: 28px;
  }
  .fp-actividades li {
    flex-direction: row; align-items: center; text-align: left; gap: 14px;
    padding: 16px 0; border-top: 1px solid var(--fp-linea-clara);
  }
  .fp-actividades li:nth-child(odd) { padding-right: 10px; }
  .fp-actividades li:nth-child(even) { padding-left: 10px; }
  .fp-actividades .icon { font-size: 26px; }
  .fp-cartel { max-width: none; margin-top: 32px; }
  .fp-cartel__enlace { max-width: 260px; margin-inline: auto; }
  /* Sin hover, la etiqueta se queda fija. Como píldora en la esquina no tapa el
     pie del cartel, que es donde va la dirección y el teléfono de informes. */
  .fp-cartel__lupa, .fp-cartelito__lupa {
    opacity: 1;
    left: auto; bottom: auto; top: 10px; right: 10px;
    padding: 8px 12px; border-radius: 999px;
    background: rgba(20, 6, 28, .82); font-size: 10.5px;
  }

  .fp-convocatorias { padding: 46px 0 50px; }
  .fp-carteles { grid-template-columns: 1fr; gap: 34px; }
  .fp-cartelito:nth-child(2), .fp-cartelito:nth-child(3) { margin-top: 0; max-width: none; }
  .fp-cartelito__img { max-width: 78%; }
  .fp-cartelito__titulo { margin-top: 16px; font-size: 24px; }

  .fp-galeria { padding: 46px 0 50px; }
  .fp-mosaico { grid-template-columns: 1fr; row-gap: 34px; }
  .fp-mosaico__celda--1, .fp-mosaico__celda--2, .fp-mosaico__celda--3 {
    grid-column: 1; grid-row: auto; margin-top: 0;
  }
  .fp-mosaico__celda--2 .fp-mosaico__img, .fp-mosaico__celda--3 .fp-mosaico__img {
    margin-inline: calc(var(--gutter) * -1); border-radius: 0;
  }
  .fp-mosaico__celda--2 .fp-pie, .fp-mosaico__celda--3 .fp-pie { padding-inline: 0; }
  .fp-mosaico__celda--1 .fp-mosaico__img { max-width: 78%; }
  /* La tira de retratos va a dos columnas */
  .fp-mosaico { grid-template-columns: 1fr 1fr; column-gap: 12px; }
  .fp-mosaico__celda--1, .fp-mosaico__celda--2, .fp-mosaico__celda--3 { grid-column: 1 / -1; }
  .fp-mosaico__celda:nth-child(n+4) { grid-column: auto / span 1; margin-top: 0; }
  .fp-mosaico__celda:nth-child(n+4) .fp-pie__titulo { font-size: 11px; letter-spacing: .1em; }

  .fp-manifiesto__rotulo { aspect-ratio: 3 / 4; padding: 18px; }
  .fp-manifiesto__rotulo .fp-manifiesto__titulo { font-size: 44px; }

  .fp-altares { padding: 46px 0 50px; }
  .fp-altares__fila { grid-template-columns: 1fr 1fr; gap: 26px 12px; }
  .fp-altares__celda--2 { grid-column: 1 / -1; grid-row: 1; }
  .fp-altares__celda--1, .fp-altares__celda--3 { margin-top: 0; }
  .fp-altares__celda--2 .fp-altares__img img { aspect-ratio: 4 / 5; }

  .fp-lugar__inner { min-height: 520px; padding: 44px 0 40px; }
  .fp-lugar__media img { object-position: 50% 50%; }
  .fp-lugar__direccion { font-size: 15px; }
  .fp-lugar .btn { width: 100%; justify-content: center; }

  .fp-cierre { padding: 48px 0 52px; }
  .fp-cierre__frase { font-size: 26px; max-width: none; }
  .fp-cierre__cta { width: 100%; justify-content: center; }
}

/* Móvil angosto */
@media (max-width: 380px) {
  .fp-portada__titulo { font-size: 44px; }
  .fp-actividades { grid-template-columns: 1fr; }
  .fp-actividades li:nth-child(odd), .fp-actividades li:nth-child(even) { padding-inline: 0; }
  .fp-cartelito__img, .fp-mosaico__celda--1 .fp-mosaico__img { max-width: none; }
}
