/* festival-films.com
   Identidad: el cartel de cine. Azul del emblema a sangre, títulos de película en cursiva
   (como manda la ortotipografía) y un único gesto: el bloque de créditos del pie del cartel. */

@font-face { font-family: "Instrument Serif"; src: url("../fonts/instrument-serif-latin-400-normal.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Instrument Serif"; src: url("../fonts/instrument-serif-latin-400-italic.woff2") format("woff2"); font-weight: 400; font-style: italic; font-display: swap; unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Instrument Serif"; src: url("../fonts/instrument-serif-latin-ext-400-normal.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; unicode-range: U+0100-02AF, U+1E00-1EFF, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Instrument Serif"; src: url("../fonts/instrument-serif-latin-ext-400-italic.woff2") format("woff2"); font-weight: 400; font-style: italic; font-display: swap; unicode-range: U+0100-02AF, U+1E00-1EFF, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Sofia Sans"; src: url("../fonts/sofia-sans-latin-400-normal.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Sofia Sans"; src: url("../fonts/sofia-sans-latin-400-italic.woff2") format("woff2"); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: "Sofia Sans"; src: url("../fonts/sofia-sans-latin-600-normal.woff2") format("woff2"); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: "Sofia Sans Extra Condensed"; src: url("../fonts/sofia-sans-extra-condensed-latin-600-normal.woff2") format("woff2"); font-weight: 600; font-style: normal; font-display: swap; }

:root {
  --azul-festival: #00adef;   /* mitad azul del emblema */
  --tinta-emblema: #11252f;   /* mitad oscura del emblema */
  --pantalla: #ffffff;
  --bruma: #e4f3fb;           /* azul muy rebajado para bandas de lectura */
  --plomo: #4f616b;           /* texto secundario */
  --filete: #c5d6df;

  --titulos: "Instrument Serif", "Iowan Old Style", "Times New Roman", serif;
  --texto: "Sofia Sans", "Segoe UI", system-ui, sans-serif;
  --creditos: "Sofia Sans Extra Condensed", "Arial Narrow", sans-serif;

  --e1: 8px; --e2: 16px; --e3: 24px; --e4: 32px; --e5: 48px; --e6: 64px; --e7: 96px;
  --sombra-cartel: 0 1px 2px rgba(17, 37, 47, .18), 0 18px 36px -16px rgba(17, 37, 47, .5);
  --radio: 3px;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body { margin: 0; overflow-x: clip; background: var(--pantalla); color: var(--tinta-emblema); font: 400 1.125rem/1.55 var(--texto); }
img { max-width: 100%; height: auto; display: block; }
h1, h2, h3, p, ul, ol, dl, dd, figure, blockquote { margin: 0; }
ul[class], ol[class] { padding: 0; list-style: none; }
a { color: inherit; text-decoration-color: var(--azul-festival); text-decoration-thickness: 2px; text-underline-offset: 3px; }
a:hover { text-decoration-color: currentColor; }
:focus-visible { outline: 3px solid var(--tinta-emblema); outline-offset: 3px; border-radius: 2px; }
.pie :focus-visible, .banda-creditos :focus-visible { outline-color: var(--pantalla); }
h1, h2 { font-family: var(--titulos); font-weight: 400; line-height: 1.02; letter-spacing: -.01em; text-wrap: balance; }
h2 { font-size: clamp(2rem, 3.4vw, 2.75rem); margin-bottom: var(--e3); }

.ancho { width: min(100% - 2 * clamp(20px, 4vw, 48px), 1240px); margin-inline: auto; }
.seccion { padding-block: var(--e6); }
.seccion + .seccion { padding-top: 0; }
.oculto { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.saltar { position: absolute; left: var(--e2); top: -100px; z-index: 10; padding: var(--e1) var(--e2); background: var(--tinta-emblema); color: var(--pantalla); }
.saltar:focus { top: var(--e2); }
.nota { font-size: .95rem; color: var(--plomo); margin-top: var(--e2); }
.entrada { font-size: 1.4rem; line-height: 1.4; max-width: 34ch; margin-bottom: var(--e3); }

/* ---------- Botones */
.boton { display: inline-block; padding: 13px 22px; border: 2px solid var(--azul-festival); border-radius: var(--radio); background: var(--azul-festival); color: var(--tinta-emblema); font: 600 1.0625rem/1.2 var(--texto); text-decoration: none; cursor: pointer; }
.boton:hover { background: var(--tinta-emblema); border-color: var(--tinta-emblema); color: var(--pantalla); }
.boton--tinta { background: var(--tinta-emblema); border-color: var(--tinta-emblema); color: var(--pantalla); }
.boton--tinta:hover { background: var(--pantalla); color: var(--tinta-emblema); }
.boton--linea { background: transparent; border-color: var(--tinta-emblema); }

/* ---------- Cabecera: va sobre el mismo azul que la banda que tiene debajo */
.cabecera { background: var(--azul-festival); }
.cabecera__fila { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--e1) var(--e3); padding-block: 18px; }
.marca { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; }
.marca img { width: 44px; height: 44px; border-radius: 50%; box-shadow: 0 0 0 3px var(--pantalla); }
.marca__nombre { font: 600 1.375rem/1 var(--texto); letter-spacing: .01em; }
.menu ul { display: flex; flex-wrap: wrap; gap: 4px var(--e3); margin: 0; padding: 0; list-style: none; }
.menu a { display: block; padding: 8px 0; font-weight: 600; font-size: 1.0625rem; text-decoration: none; border-bottom: 2px solid transparent; }
.menu a:hover, .menu a[aria-current="page"] { border-bottom-color: var(--tinta-emblema); }
.menu-boton { display: none; padding: 9px 16px; border: 2px solid var(--tinta-emblema); border-radius: var(--radio); background: transparent; color: inherit; font: 600 1rem/1.2 var(--texto); cursor: pointer; }

/* ---------- Portada: el próximo estreno y su cartel */
.estreno-portada { background: var(--azul-festival); }
.estreno-portada__fila { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: var(--e5); align-items: center; padding-top: var(--e5); }
.estreno-portada__texto { padding-bottom: var(--e6); }
.estreno-portada__cuando { font-weight: 600; font-size: 1.1875rem; margin-bottom: var(--e2); }
.estreno-portada__titulo { font: italic 400 clamp(3.4rem, 8.2vw, 7.75rem)/.9 var(--titulos); letter-spacing: -.02em; text-wrap: balance; }
.estreno-portada__titulo a { text-decoration: none; }
.estreno-portada__titulo a:hover { text-decoration: underline; text-decoration-thickness: 3px; text-decoration-color: currentColor; text-underline-offset: 8px; }
.estreno-portada__de { font-size: 1.4375rem; margin-top: var(--e3); }
.estreno-portada__mas { margin-top: var(--e4); padding-top: var(--e3); border-top: 2px solid var(--tinta-emblema); display: grid; gap: 6px; max-width: 30em; }
.estreno-portada__mas em { font: italic 400 1.4rem/1 var(--titulos); }
.estreno-portada__mas a { text-decoration-color: var(--tinta-emblema); text-decoration-thickness: 1px; }
.abanico { display: grid; justify-items: center; align-items: end; margin-bottom: calc(-1 * var(--e6)); }
.abanico li { grid-area: 1 / 1; width: 47%; }
.abanico img { width: 100%; border-radius: var(--radio); box-shadow: var(--sombra-cartel); }
.abanico li:nth-child(1) { z-index: 2; }
.abanico li:nth-child(2) { width: 39%; transform: translate(-82%, -4%) rotate(-7deg); }
.abanico li:nth-child(3) { width: 39%; transform: translate(82%, -4%) rotate(7deg); }
.abanico a { display: block; }
.portada .estreno-portada + .seccion { padding-top: calc(var(--e6) + var(--e6)); }

.encabezado { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--e1) var(--e3); margin-bottom: var(--e3); }
.encabezado h2 { margin: 0; }
.encabezado a { font-weight: 600; }

/* ---------- Pared de carteles (todos los listados de películas) */
.pared { display: grid; grid-template-columns: repeat(auto-fill, minmax(178px, 1fr)); gap: var(--e5) var(--e4); }
.pared--grande { grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); max-width: 980px; }
.pared--menuda { grid-template-columns: repeat(auto-fill, minmax(128px, 1fr)); gap: var(--e4) var(--e3); }
.cartel a { display: block; text-decoration: none; }
.cartel img, .cartel__vacio { width: 100%; border-radius: var(--radio); box-shadow: var(--sombra-cartel); background: var(--bruma); transition: transform .18s ease-out; }
.cartel__vacio { display: block; aspect-ratio: 27 / 40; }
.cartel a:hover img { transform: translateY(-5px); }
.cartel__titulo { display: block; margin-top: 14px; font: italic 400 1.4375rem/1.08 var(--titulos); text-wrap: balance; }
.cartel a:hover .cartel__titulo { text-decoration: underline; text-decoration-color: var(--azul-festival); text-decoration-thickness: 2px; }
.cartel__dato { display: block; margin-top: 4px; font-size: .95rem; line-height: 1.3; color: var(--plomo); }
.pared--menuda .cartel__titulo { font-size: 1.1875rem; margin-top: 10px; }
.cartel[hidden] { display: none; }
.sin-resultados { font-size: 1.25rem; }

/* ---------- Portada: declaración y club */
.manifiesto { background: var(--bruma); padding-block: var(--e7); }
.manifiesto__frase { font: 400 clamp(2.5rem, 6.4vw, 5.75rem)/1 var(--titulos); letter-spacing: -.015em; max-width: 20ch; text-wrap: balance; }
.manifiesto__texto { font-size: 1.375rem; line-height: 1.45; max-width: 36ch; margin-block: var(--e4); }
.club-banda { background: var(--azul-festival); padding-block: var(--e5); }
.club-banda__fila { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--e3); }
.club-banda h2 { margin-bottom: var(--e1); }

/* ---------- Titular de las páginas interiores: banda azul plana */
.titular { background: var(--azul-festival); padding-block: var(--e3) var(--e5); }
.titular h1 { font-size: clamp(2.9rem, 6.6vw, 5.5rem); max-width: 18ch; }
.titular .pelicula-titulo { font-style: italic; letter-spacing: -.02em; line-height: .95; max-width: 15ch; }
.titular__entrada { font-size: 1.3125rem; margin-top: var(--e2); max-width: 44ch; }
.original { opacity: .8; }
.migas { display: flex; flex-wrap: wrap; gap: 4px 10px; font-size: .95rem; margin-bottom: var(--e3); }
.migas a { text-decoration-color: var(--tinta-emblema); text-decoration-thickness: 1px; }
.buscador { margin-top: var(--e3); display: grid; gap: 6px; max-width: 26em; }
.buscador[hidden] { display: none; }
.buscador label { font-weight: 600; font-size: 1rem; }

/* ---------- Texto corrido */
.cuerpo { max-width: 68ch; }
.cuerpo--ancho { max-width: none; }
.cuerpo > * + *, .prosa > * + *, .sinopsis > * + * { margin-top: var(--e2); }
.cuerpo h2 { font-size: 2rem; margin-top: var(--e5); margin-bottom: 0; }
.cuerpo ul:not([class]) { padding-left: 1.2em; }
.cuerpo li + li { margin-top: 6px; }
.cuerpo--ancho > p, .cuerpo--ancho > ul, .cuerpo--ancho > h2 { max-width: 68ch; }

/* ---------- Ficha de película */
.ficha__cuerpo { display: grid; grid-template-columns: minmax(220px, 340px) minmax(0, 1fr); gap: var(--e6); align-items: start; }
.ficha__cartel img { width: 100%; border-radius: var(--radio); box-shadow: var(--sombra-cartel); }
.ficha__cartel > * + * { margin-top: var(--e3); }
.estreno { padding-top: var(--e2); border-top: 3px solid var(--azul-festival); }
.estreno span { display: block; font-size: .95rem; color: var(--plomo); }
.estreno strong { font: 400 2rem/1.1 var(--titulos); }
.ficha__texto { max-width: 70ch; }
.ficha__texto section + section { margin-top: var(--e5); }
.ficha__texto h2, .seccion > h2 { font-size: 2rem; margin-bottom: var(--e2); }
.sinopsis { font-size: 1.25rem; line-height: 1.5; }
.caracteristicas { margin-top: var(--e2); font-size: .98rem; color: var(--plomo); }
.trailer__marco { position: relative; aspect-ratio: 16 / 9; display: grid; place-items: center; overflow: hidden; border-radius: var(--radio); background: var(--tinta-emblema); }
.trailer__marco img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .55; }
.trailer__marco .boton { position: relative; }
.trailer__marco iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.enlaces { display: flex; flex-wrap: wrap; gap: 10px; }
.enlaces a { display: block; padding: 9px 16px; border: 2px solid var(--tinta-emblema); border-radius: var(--radio); font-weight: 600; text-decoration: none; }
.enlaces a:hover { background: var(--tinta-emblema); color: var(--pantalla); }
.premios { display: grid; gap: 10px; }
.premios li { padding-left: 18px; border-left: 3px solid var(--azul-festival); }
.criticas { display: grid; gap: var(--e4); }
.criticas blockquote { font: 400 1.625rem/1.22 var(--titulos); text-wrap: pretty; }
.criticas figcaption { margin-top: 8px; font-weight: 600; font-size: .98rem; }
.criticas--texto { font-size: 1.125rem; }
.criticas--texto p + p { margin-top: 0; }
.fotos { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--e1); }
.fotos img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; border-radius: var(--radio); }
.fotos a { display: block; }
.seccion--prensa { border-top: 1px solid var(--filete); padding-top: var(--e5); }

/* ---------- El gesto: bloque de créditos del cartel */
.banda-creditos { background: var(--tinta-emblema); color: var(--bruma); padding-block: var(--e6); }
.creditos { display: flex; flex-wrap: wrap; justify-content: center; align-items: baseline; gap: 2px 22px; max-width: 1040px; margin-inline: auto; text-align: center; font-family: var(--creditos); font-weight: 600; text-transform: uppercase; line-height: 1.12; }
.creditos div { display: inline-flex; flex-wrap: wrap; justify-content: center; align-items: baseline; gap: 0 8px; }
.creditos dt { font-size: 1.0625rem; letter-spacing: .08em; opacity: .72; }
.creditos dd { font-size: 2rem; letter-spacing: .015em; }
.creditos a { text-decoration-thickness: 1px; }
.creditos--reparto { margin-top: var(--e4); }
.creditos--reparto dt { font-size: 1.5rem; letter-spacing: .015em; opacity: 1; }
.creditos--reparto dd { font-size: .9375rem; letter-spacing: .08em; opacity: .72; }
.apoyo { margin-top: var(--e5); display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: var(--e2) var(--e3); }
.apoyo p { font-size: .95rem; flex-basis: 100%; text-align: center; opacity: .8; }
.apoyo img { height: 58px; width: auto; padding: 8px 12px; background: var(--pantalla); border-radius: var(--radio); }

/* ---------- Comprar entradas */
.entradas { display: grid; grid-template-columns: minmax(200px, 320px) minmax(0, 1fr); gap: var(--e6); align-items: start; }
.entradas__pelicula img { border-radius: var(--radio); box-shadow: var(--sombra-cartel); }
.entradas h2 { margin-top: 0; font-size: 2.25rem; }
.entradas__de { margin-top: var(--e1); }
.salas { width: 100%; max-width: 640px; margin-top: var(--e4); border-collapse: collapse; }
.salas thead th { font-size: .95rem; color: var(--plomo); font-weight: 400; }
.salas th, .salas td { padding: 11px 0; text-align: left; border-bottom: 1px solid var(--filete); vertical-align: baseline; }
.salas tbody th { font-weight: 400; width: 45%; }
.salas td a { font-weight: 600; }

/* ---------- Contacto y formularios */
.contacto { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: var(--e6); align-items: start; }
.contacto h2 { margin-top: 0; }
.datos { display: grid; gap: var(--e2); }
.datos div { display: grid; grid-template-columns: 7.5em 1fr; gap: var(--e2); padding-bottom: var(--e2); border-bottom: 1px solid var(--filete); }
.datos dt { color: var(--plomo); }
.datos--legal div { grid-template-columns: 11em 1fr; }
.mapa { margin-top: var(--e4); padding: var(--e3); background: var(--bruma); border-radius: var(--radio); }
.mapa > p:first-child { font: 400 1.75rem/1.1 var(--titulos); margin-bottom: var(--e2); }
.mapa iframe { display: block; width: 100%; height: 380px; border: 0; }
.mapa.cargado { padding: 0; }
.formulario { display: grid; gap: var(--e2); max-width: 560px; margin-top: var(--e3); }
.formulario--corto { max-width: 440px; }
.formulario label { display: grid; gap: 6px; font-weight: 600; font-size: 1rem; }
input[type="text"], input[type="email"], input[type="search"], textarea { width: 100%; padding: 11px 12px; border: 2px solid var(--tinta-emblema); border-radius: var(--radio); background: var(--pantalla); color: inherit; font: 400 1.0625rem/1.4 var(--texto); }
input:focus-visible, textarea:focus-visible { outline: 3px solid var(--azul-festival); outline-offset: 0; }
.titular input:focus-visible { outline-color: var(--tinta-emblema); outline-offset: 2px; }
.formulario .casilla { grid-template-columns: auto 1fr; align-items: start; gap: 10px; font-weight: 400; }
.casilla input { width: 20px; height: 20px; margin-top: 3px; accent-color: var(--tinta-emblema); }
.trampa { position: absolute; left: -9999px; }
.aviso-datos { padding: var(--e2); background: var(--bruma); border-radius: var(--radio); font-size: .92rem; line-height: 1.45; }
.formulario .boton { justify-self: start; }
.formulario__estado:empty { display: none; }
.formulario__estado.es-error { padding: var(--e2); border-left: 4px solid #b3261e; background: #fdecea; }

/* ---------- Tablas de los textos legales */
.tabla-desliza { overflow-x: auto; }
.tabla { width: 100%; min-width: 640px; border-collapse: collapse; font-size: 1rem; }
.tabla th, .tabla td { padding: 12px 14px 12px 0; text-align: left; vertical-align: top; border-bottom: 1px solid var(--filete); }
.tabla thead th { font-weight: 400; color: var(--plomo); font-size: .95rem; }

/* ---------- Pie: los créditos de la distribuidora */
.pie { background: var(--tinta-emblema); color: var(--bruma); padding-block: var(--e6) var(--e4); }
.creditos--pie dd { text-transform: uppercase; }
.creditos--pie dd a[href^="mailto"] { text-transform: none; letter-spacing: .03em; }
.pie__logos { display: flex; justify-content: center; margin-top: var(--e5); }
.pie__logos img { height: 64px; width: auto; padding: 8px 14px; background: var(--pantalla); border-radius: var(--radio); }
.pie__filas { margin-top: var(--e5); padding-top: var(--e3); border-top: 1px solid rgba(228, 243, 251, .28); display: grid; gap: var(--e1); justify-items: center; }
.pie__filas ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px var(--e3); margin: 0; padding: 0; list-style: none; font-size: 1rem; }
.pie__filas a { text-decoration: none; }
.pie__filas a:hover { text-decoration: underline; }
.pie__copia { margin-top: var(--e3); text-align: center; font-size: .92rem; opacity: .75; }

/* ---------- Pantallas estrechas */
@media (max-width: 900px) {
  .estreno-portada__fila { grid-template-columns: 1fr; gap: var(--e4); padding-top: var(--e3); }
  .estreno-portada__texto { padding-bottom: 0; }
  .abanico { margin-inline: auto; width: min(100%, 520px); margin-bottom: calc(-1 * var(--e5)); padding-top: var(--e3); }
  .portada .estreno-portada + .seccion { padding-top: calc(var(--e5) + var(--e5)); }
  .ficha__cuerpo, .entradas, .contacto { grid-template-columns: 1fr; gap: var(--e4); }
  .ficha__cartel, .entradas__pelicula { max-width: 300px; }
  .fotos { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 780px) {
  body { font-size: 1.0625rem; }
  /* Menú: acordeón que se abre en línea y empuja el contenido */
  .js .menu-boton { display: block; }
  .js .menu { flex-basis: 100%; display: none; }
  .js .menu.abierto { display: block; }
  .menu ul { flex-direction: column; gap: 0; border-top: 2px solid var(--tinta-emblema); margin-top: 6px; }
  .menu a { padding: 13px 0; border-bottom: 1px solid rgba(17, 37, 47, .35); font-size: 1.125rem; }
  .seccion { padding-block: var(--e5); }
  .pared { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--e4) var(--e3); }
  .pared--menuda { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--e3) var(--e2); }
  .cartel__titulo { font-size: 1.25rem; }
  .pared--menuda .cartel__titulo { font-size: 1.0625rem; }
  .manifiesto { padding-block: var(--e6); }
  .creditos dd { font-size: 1.625rem; }
  .creditos--reparto dt { font-size: 1.3125rem; }
  .datos div, .datos--legal div { grid-template-columns: 1fr; gap: 2px; }
  .criticas blockquote { font-size: 1.4375rem; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .cartel img { transition: none; }
  .cartel a:hover img { transform: none; }
}
@media print {
  .cabecera, .pie, .trailer, .club-banda, .menu-boton { display: none; }
}
