@charset "UTF-8";

/* FICAL 2026. Única hoja de estilos. */
:root {
  color-scheme: light;
  --bg: #e8d8bc;
  --paper: #fff6e6;
  --paper-alt: #dfc9a5;
  --ink: #103c46;
  --muted: #464b41;
  --accent: #923713;
  --accent-ink: #fff8ed;
  --line: #867659;
  --focus: #87320f;
  --grain: url("../img/papel/tex-cartulina-beige.webp");
  --paper-wash: #fff6e6f2;
  --alt-wash: #dfc9a5ed;
  --shadow-rgb: 43, 27, 12;
  --shadow: 0 2px 2px rgba(var(--shadow-rgb), .19), 0 12px 22px -8px rgba(var(--shadow-rgb), .25), 0 30px 45px -25px rgba(var(--shadow-rgb), .38);
  --raised: 0 3px 3px rgba(var(--shadow-rgb), .2), 0 17px 28px -8px rgba(var(--shadow-rgb), .28), 0 36px 48px -24px rgba(var(--shadow-rgb), .4);
  --font: "Barlow", sans-serif;
  --display: "Barlow Condensed", "Arial Narrow", sans-serif;
  --max: 1280px;
  --gutter: clamp(1rem, 4vw, 4rem);
  --header-height: 96px;
  --ease: cubic-bezier(.2, .75, .25, 1);
  --tear: polygon(0 44%, 3% 27%, 7% 43%, 12% 16%, 18% 39%, 24% 22%, 29% 48%, 35% 25%, 41% 40%, 47% 12%, 53% 34%, 59% 20%, 65% 47%, 72% 23%, 78% 38%, 85% 17%, 91% 39%, 96% 22%, 100% 34%, 100% 100%, 0 100%);
}
:root[data-theme="oscuro"] {
  color-scheme: dark;
  --bg: #10292e;
  --paper: #193b41;
  --paper-alt: #284d50;
  --ink: #fff0d6;
  --muted: #d2cebd;
  --accent: #ffc47d;
  --accent-ink: #17383c;
  --line: #96a7a1;
  --focus: #ffcf83;
  --paper-wash: #193b41f5;
  --alt-wash: #284d50f3;
  --shadow-rgb: 0, 0, 0;
}
@media (prefers-color-scheme: dark) {
  :root[data-theme="sistema"] {
    color-scheme: dark;
    --bg: #10292e;
    --paper: #193b41;
    --paper-alt: #284d50;
    --ink: #fff0d6;
    --muted: #d2cebd;
    --accent: #ffc47d;
    --accent-ink: #17383c;
    --line: #96a7a1;
    --focus: #ffcf83;
    --paper-wash: #193b41f5;
    --alt-wash: #284d50f3;
    --shadow-rgb: 0, 0, 0;
  }
}

*, *::before, *::after { box-sizing: border-box; }
html { background: var(--bg); scroll-padding-top: 1.5rem; }
body {
  margin: 0;
  color: var(--ink);
  background: var(--bg);
  font: 400 1.0625rem/1.55 var(--font);
  overflow-wrap: anywhere;
}
[hidden] { display: none !important; }
img { display: block; max-width: 100%; height: auto; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
button:disabled { cursor: not-allowed; }
a { color: inherit; text-underline-offset: .2em; text-decoration-thickness: 1px; }
a:hover { text-decoration-thickness: 2px; }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 5px; }
#contenido:focus { outline: none; }
:target { scroll-margin-top: 1.5rem; }
::selection { background: #f5c26f; color: #102e36; }
h1, h2, h3, h4, p, figure { margin: 0; }
h1, h2, h3, h4 { font-family: var(--display); line-height: 1.06; font-weight: 700; text-wrap: balance; }
h1 { font-size: clamp(3rem, 5.6vw, 5.8rem); letter-spacing: -.02em; }
h2 { font-size: clamp(2.3rem, 4vw, 4rem); letter-spacing: -.015em; }
h3 { font-size: clamp(1.75rem, 2.3vw, 2.35rem); }
h4 { font-size: 1.4rem; }
em { color: var(--accent); font-style: normal; }
p + p { margin-top: .7rem; }
ul, ol { padding-left: 1.4rem; }
iframe { border: 0; }
.container { width: min(var(--max), calc(100% - var(--gutter) * 2)); margin-inline: auto; }
.eyebrow { color: var(--muted); font: 700 .8rem/1.4 var(--font); letter-spacing: .085em; text-transform: uppercase; }
.small { color: var(--muted); font-size: .9375rem; line-height: 1.5; }
.preserve-lines { white-space: pre-line; }
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  border: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}
.skip-link {
  position: fixed;
  top: 1rem;
  left: 1rem;
  z-index: 100;
  padding: .8rem 1rem;
  background: var(--paper);
  color: var(--ink);
  box-shadow: var(--shadow);
}
.skip-link:not(:focus) { clip-path: inset(50%); pointer-events: none; }
.paper-panel, .box__body, .activity-hero__paper {
  background: linear-gradient(var(--paper-wash), var(--paper-wash)), var(--grain);
  background-size: auto, 512px 512px;
  border: 0;
  border-radius: 1px 3px 2px 1px;
  box-shadow: var(--shadow);
}
.button-row { display: flex; flex-wrap: wrap; align-items: center; gap: .8rem; }
.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .6rem;
  min-height: 48px;
  max-width: 100%;
  padding: .8rem 1.1rem;
  border: 2px solid var(--accent);
  border-radius: 2px 5px 2px 3px;
  color: var(--accent-ink);
  background: var(--accent);
  font-weight: 700;
  line-height: 1.35;
  text-decoration: none;
  text-align: center;
  box-shadow: 0 2px 1px rgba(var(--shadow-rgb), .2), 0 7px 12px -5px rgba(var(--shadow-rgb), .35);
  transition: transform .2s var(--ease), box-shadow .2s var(--ease);
}
.button--outline { color: var(--ink); background: var(--paper); border-color: var(--ink); }
.button--small { min-height: 44px; padding: .6rem .9rem; font-size: .95rem; }
.button--light { color: #103c46; background: #fff0d6; border-color: #fff0d6; }
.text-link, .back-link { display: inline-flex; align-items: center; gap: .5rem; min-height: 44px; padding-block: .4rem; font-weight: 600; }
.back-link { margin-bottom: .8rem; font-size: .95rem; }
.tag { width: fit-content; padding: .25rem .6rem; color: var(--ink); background: var(--paper-alt); font-size: .85rem; font-weight: 600; }
.paper-icon { flex: 0 0 28px; width: 28px; height: 28px; object-fit: contain; }
.icon-label { display: flex; align-items: center; gap: .55rem; }
.icon-label > span { min-width: 0; }
.example-note { color: var(--muted); font-size: .8rem; }
.empty-panel, .notice { padding: 1.5rem; grid-column: 1 / -1; }
.empty-panel h3 { margin-bottom: .7rem; }
.notice { border-left: 4px solid var(--accent); background: var(--paper-alt); margin-bottom: 1.5rem; }

/* Navegación no fija: no oculta destinos ni foco. */
.site-header { position: relative; z-index: 10; background: var(--paper); box-shadow: 0 4px 14px rgba(var(--shadow-rgb), .17); }
.header-layout { display: flex; flex-wrap: wrap; align-items: center; gap: 1.25rem; min-height: 96px; padding-block: 1rem; }
.brand { display: flex; align-items: center; gap: .85rem; text-decoration: none; }
.brand__name { font: 800 2.2rem/.86 var(--display); letter-spacing: -.025em; }
.brand__name span { display: block; margin-top: .15rem; }
.brand__edition { border-left: 1px solid var(--line); padding-left: .85rem; font: 700 .95rem/1.2 var(--display); text-transform: uppercase; }
.header-tools { order: 3; margin-left: auto; display: flex; gap: .45rem; }
.theme-toggle, .nav-toggle, .motion-toggle {
  min-height: 44px;
  padding: .55rem .75rem;
  border: 1px solid var(--line);
  border-radius: 2px;
  color: var(--ink);
  background: var(--paper);
  font-size: .875rem;
  font-weight: 600;
}
.site-nav { margin-left: auto; }
.site-nav ul { display: flex; flex-wrap: wrap; gap: .2rem; list-style: none; margin: 0; padding: 0; }
.site-nav a { display: block; min-height: 44px; padding: .6rem .55rem; font-weight: 600; text-decoration: none; }
.site-nav a:hover, .site-nav a[aria-current] { text-decoration: underline; text-decoration-thickness: 3px; text-underline-offset: .4em; }
.site-nav a[aria-current] { color: var(--accent); }

/* Escenarios a sangre. Solo las decoraciones se recortan. */
.hero, .interior-hero {
  position: relative;
  isolation: isolate;
  background: #e8d8bc;
}
.hero {
  display: grid;
  align-items: center;
  min-height: calc(100svh - var(--header-height));
  padding-block: clamp(2rem, 4vw, 4.5rem) 4rem;
}
.interior-hero {
  display: grid;
  align-items: center;
  min-height: 62svh;
  padding-block: 2.5rem 4.5rem;
}
.stage-layout {
  position: relative;
  z-index: 3;
  width: min(1740px, 88%);
  margin-inline: auto;
}
.scene { position: absolute; z-index: 0; inset: 0; overflow: hidden; pointer-events: none; }
.scene__layer { position: absolute; max-width: none; filter: drop-shadow(0 3px 2px #38220f30) drop-shadow(0 15px 10px #38220f35); }
.scene__sky { inset: 0; width: 100%; height: 100%; object-fit: cover; filter: none; }
.scene__sun { z-index: 1; width: 15%; top: 6%; right: 12%; }
.scene__clouds { z-index: 2; width: 29%; right: 0; top: 7%; }
.scene__mountains { z-index: 3; width: 106%; height: auto; left: -3%; bottom: -22%; }
.scene__dunes { z-index: 4; width: 106%; height: auto; left: -3%; bottom: -37%; }
.scene__camera { z-index: 5; width: 14%; max-height: 59%; object-fit: contain; right: 16%; bottom: 12%; }
.scene__reel { z-index: 6; width: 18%; right: 3%; bottom: 9%; }
.scene__plants { z-index: 7; width: 110%; height: auto; left: -5%; bottom: -36%; }
.scene__chairs { z-index: 5; width: 34%; right: 3%; bottom: 12%; }
.scene__microphones { z-index: 6; width: 29%; right: 3%; bottom: 8%; }
.scene__curtain {
  position: absolute;
  z-index: 1;
  inset: -30px auto -30px 0;
  width: 15%;
  background: linear-gradient(105deg, #0b3440 0 24%, #1b5765 25% 55%, #124a59 56% 82%, transparent 83%);
  filter: drop-shadow(9px 7px 8px #10282e45);
}
.stage-wings { position: absolute; z-index: 2; inset: 0; overflow: hidden; pointer-events: none; }
.stage-wings img {
  position: absolute;
  left: -10%;
  top: -5%;
  width: 120%;
  max-width: none;
  height: 110%;
  object-fit: cover;
  filter: drop-shadow(9px 15px 10px #092c3650);
}
.scene--programacion .scene__sun { width: 18%; right: 16%; top: 5%; }
.scene--programacion .scene__reel { width: 22%; right: 7%; bottom: 8%; }
.scene--programacion .scene__mountains,
.scene--entradas .scene__mountains,
.scene--participa .scene__mountains,
.scene--noticias .scene__mountains { bottom: -40%; }
.scene--programacion .scene__dunes,
.scene--entradas .scene__dunes,
.scene--noticias .scene__dunes { bottom: -48%; }
.scene--invitados .scene__sun { width: 13%; right: 21%; }
.scene--invitados .scene__mountains { bottom: -37%; }
.scene--invitados .scene__plants { bottom: -46%; }
.scene--festival .scene__sun { right: 16%; top: 8%; width: 14%; }
.scene--festival .scene__camera { right: 23%; bottom: 3%; width: 15%; max-height: 72%; z-index: 8; }
.scene--festival .scene__mountains { bottom: -47%; }
.scene--festival .scene__dunes { bottom: -58%; }
.scene--festival .scene__plants { bottom: -53%; }
.scene--actividad .scene__mountains { bottom: -49%; }
.scene--actividad .scene__dunes { bottom: -51%; }
.scene--cine .scene__reel { width: 11%; right: 1%; bottom: 1%; }
.scene--prensa .scene__camera { z-index: 3; width: 12%; max-height: 64%; right: auto; left: 6%; bottom: -2%; }
.scene--prensa .scene__curtain { width: 7%; }
.scene--prensa .scene__microphones { width: 34%; right: 6%; bottom: -9%; }

/*
 * Superficies ilustradas claras, también en tema oscuro.
 * Se fijan sus tokens para no imprimir texto claro sobre el WebP marfil.
 */
.header-board, .hero__after, .festival-intro {
  color-scheme: light;
  --paper: #fff6e6;
  --ink: #103c46;
  --muted: #464b41;
  --accent: #923713;
  --accent-ink: #fff8ed;
  --focus: #87320f;
  --shadow-rgb: 43, 27, 12;
  color: var(--ink);
}
.header-board {
  position: relative;
  width: min(75%, 960px);
  margin: 0;
  --copy-top: 12%;
  --copy-right: 13%;
  --copy-bottom: 23%;
  --copy-left: 13%;
}
.board__image {
  width: 100%;
  height: auto;
  filter: drop-shadow(0 3px 2px #38220f30) drop-shadow(8px 22px 16px #38220f38);
}
.board__title, .board__copy { position: relative; min-width: 0; }
.board__title { padding: 1.25rem 1.5rem 0; background: #fff6e6; }
.board__copy { padding: 1.5rem; background: #fff6e6; box-shadow: var(--shadow); }
.board__flow { display: flex; flex-direction: column; align-items: flex-start; gap: .9rem; width: 100%; min-width: 0; }
.board__flow > p { margin: 0; }
.board__flow h1 { width: 100%; }
.board__flow .button-row { width: 100%; }
.header-board:not(.is-mounted) .board__image { max-height: 240px; object-fit: contain; margin-bottom: 1rem; }
.header-board.is-mounted > .board__image { max-height: none; margin: 0; }
.header-board.is-mounted > .board__copy {
  position: absolute;
  inset: var(--copy-top) var(--copy-right) var(--copy-bottom) var(--copy-left);
  display: flex;
  align-items: center;
  padding: 0;
  background: transparent;
  box-shadow: none;
}
.header-board.is-mounted > .board__title {
  position: absolute;
  inset: var(--title-top, 6%) var(--title-right, 14%) var(--title-bottom, 85%) var(--title-left, 14%);
  display: flex;
  align-items: center;
  padding: 0;
  background: transparent;
}
.header-board--home { width: 100%; --copy-top: 8%; --copy-right: 12%; --copy-bottom: 22%; --copy-left: 12%; }
.header-board--home:not(.is-mounted) .board__image { display: none; }
.header-board--home:not(.is-mounted) .board__copy { padding: clamp(1.5rem, 4vw, 3rem); }
.hero__content { width: 62%; }
.hero h1 { font: 800 clamp(3.3rem, 4.8vw, 6.3rem)/.94 var(--display); letter-spacing: -.025em; }
.hero__date { font: 700 clamp(1.6rem, 2vw, 2.2rem)/1.15 var(--display); }
.hero__date span { font-size: .62em; margin-left: .35rem; white-space: nowrap; }
.hero .button { font-size: .98rem; padding-inline: .9rem; }
.hero__after {
  position: relative;
  width: 82%;
  margin: -.4rem auto 0;
  padding: 1rem 1.25rem;
  background: linear-gradient(#fff6e6f5, #fff6e6f5), var(--grain);
  box-shadow: var(--shadow);
}
.hero__intro { max-width: 58ch; }
.countdown { font-size: .94rem; font-weight: 600; }
.hero__after .example-note { margin-top: .5rem; }
/* Zonas de texto medidas sobre cada pieza (panel en blanco + margen interior). */
.header-board--programacion {
  width: min(66%, 980px);
  --title-top: 6.5%; --title-bottom: 84.5%; --title-left: 18%; --title-right: 17%;
  --copy-top: 22%; --copy-right: 17%; --copy-bottom: 25%; --copy-left: 17%;
}
.board__title--rotulo .board__flow { align-items: center; }
.board__rotulo { width: 100%; text-align: center; font: 700 clamp(1rem, 3.1cqw, 2.2rem)/1 var(--display); letter-spacing: .06em; text-transform: uppercase; color: var(--ink); }
.header-board--programacion.is-mounted h1 { font-size: clamp(2.2rem, 10.5cqw, 6.6rem); }
/* Los arbustos de primer plano no tapan los elementos de la escena. */
.scene--programacion .scene__plants, .scene--invitados .scene__plants { clip-path: inset(0 48% 0 0); }
.header-board--entradas {
  width: min(78%, 1180px);
  --title-top: 16%; --title-bottom: 71%; --title-left: 12%; --title-right: 14%;
  --copy-top: 46%; --copy-right: 42%; --copy-bottom: 16%; --copy-left: 16%;
}
.header-board--invitados { width: min(62%, 1000px); --copy-top: 15%; --copy-bottom: 26%; --copy-left: 19%; --copy-right: 19%; }
.header-board--prensa { width: min(62%, 1000px); margin-left: 5%; --copy-top: 15%; --copy-bottom: 26%; --copy-left: 19%; --copy-right: 19%; }
.header-board--participa { width: min(78%, 1150px); --copy-top: 9%; --copy-left: 11%; --copy-right: 26%; --copy-bottom: 20%; }
.header-board--noticias { width: min(66%, 980px); --copy-top: 14%; --copy-left: 12%; --copy-right: 14%; --copy-bottom: 14%; }
/* La tipografía escala con la pieza y ocupa su panel. */
.header-board { container-type: inline-size; }
.header-board.is-mounted h1 { font-size: clamp(2rem, 9cqw, 6.2rem); line-height: .92; }
.header-board--sign.is-mounted .board__title h1 { font-size: clamp(1.8rem, 6.6cqw, 4.8rem); }
.header-board.is-mounted .board__flow { gap: clamp(.5rem, 1.8cqw, 1.3rem); }
.header-board.is-mounted .board__flow > p:not(.eyebrow):not(.example-note) { font-size: clamp(.95rem, 2.15cqw, 1.45rem); line-height: 1.45; max-width: 44ch; }
.header-board.is-mounted .eyebrow { font-size: clamp(.72rem, 1.3cqw, 1rem); }
.header-board.is-mounted .button, .header-board.is-mounted .text-link { font-size: clamp(.9rem, 1.7cqw, 1.2rem); }
.header-board.is-mounted .example-note { font-size: clamp(.72rem, 1.1cqw, .85rem); }
.header-board--invitados.is-mounted h1, .header-board--prensa.is-mounted h1 { font-size: clamp(2.4rem, 11.5cqw, 7.2rem); }
.header-board--entradas.is-mounted .board__flow > p:not(.eyebrow) { font-size: clamp(.95rem, 1.85cqw, 1.35rem); }
.header-board--noticias.is-mounted h1 { font-size: clamp(2.2rem, 8.5cqw, 6rem); }
.festival-intro {
  width: min(66%, 850px);
  padding: clamp(1.5rem, 3vw, 3rem);
  background: linear-gradient(#fff6e6f5, #fff6e6f5), var(--grain);
}
.festival-intro h1 { margin-block: .7rem 1.2rem; }
.festival-intro > p:not(.eyebrow) { max-width: 58ch; }
.festival-intro .text-link { margin-top: 1rem; }
.interior-hero--festival { min-height: 72svh; padding-bottom: 13rem; }

/* Fichas: la ilustración completa es un único plano. */
.interior-hero--activity { min-height: 0; padding-block: 3rem 4.5rem; }
.activity-hero-layout { position: relative; z-index: 3; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 2rem; align-items: center; }
.activity-keyart { grid-column: 2; grid-row: 1; min-width: 0; }
.activity-keyart__image { width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: contain; filter: drop-shadow(0 3px 2px #38220f30) drop-shadow(0 20px 17px #38220f45); }
.activity-hero__paper { grid-column: 1; grid-row: 1; min-width: 0; position: relative; padding: clamp(1.4rem, 3vw, 2.5rem); }
.activity-hero__paper h1 { font-size: clamp(2.7rem, 4vw, 4.5rem); margin-block: .8rem 1.2rem; }
.activity-hero__date { font-weight: 600; margin-bottom: .8rem; }
.activity-hero__date p + p { margin-top: .2rem; font-weight: 400; }
.activity-hero__links { margin-top: 1rem; gap: .4rem .9rem; }
.activity-hero__paper .guest-chips { margin-top: .5rem; }
.activity-hero__paper .tag { margin-block: .75rem; }
.activity-hero__paper .example-note { margin-top: 1rem; }
.interior-hero--cinema .activity-hero-layout { grid-template-columns: minmax(0, .75fr) minmax(0, 1.25fr); gap: clamp(2rem, 6vw, 6rem); }
.interior-hero--cinema .activity-keyart { grid-column: 1; }
.interior-hero--cinema .activity-hero__paper { grid-column: 2; }
.poster-stand { position: relative; width: min(100%, 330px); margin-inline: auto; }
.poster-stand__support { width: 100%; filter: drop-shadow(6px 15px 12px #38220f45); }
.poster-stand__mount { position: absolute; inset: 3.5% 8% 13%; display: grid; place-items: center; }
.poster-stand__mount .cinema-poster { width: 100%; height: 100%; aspect-ratio: auto; box-shadow: none; }

/* Banda de exploración. */
.programme-ribbon { position: relative; z-index: 4; color: #fff0d6; background: #103c46; --focus: #ffce7a; padding-block: .65rem 1.1rem; }
.programme-ribbon__list { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .3rem 1rem; padding: 0; list-style: none; }
.programme-ribbon a { display: flex; align-items: center; justify-content: space-between; gap: .8rem; min-height: 48px; padding: .45rem .1rem; font: 600 1.25rem/1.3 var(--display); text-transform: uppercase; letter-spacing: .04em; }

/* Hojas editoriales: profundidad en la sección, no marcos repetidos. */
.sheet {
  --sheet-color: var(--paper);
  --sheet-wash: var(--paper-wash);
  position: relative;
  isolation: isolate;
  padding-block: clamp(3.5rem, 6vw, 6rem);
  margin-top: -1px;
  background: linear-gradient(var(--sheet-wash), var(--sheet-wash)), var(--grain);
  background-size: auto, 512px 512px;
}
.sheet::before, .site-footer::before {
  content: "";
  position: absolute;
  inset: -15px 0 auto;
  height: 17px;
  background: var(--sheet-color);
  clip-path: var(--tear);
  pointer-events: none;
}
.sheet--alt { --sheet-color: var(--paper-alt); --sheet-wash: var(--alt-wash); }
.sheet--landscape { padding-bottom: 10rem; }
.sheet--landscape::after {
  content: "";
  position: absolute;
  z-index: -1;
  inset: auto 0 0;
  height: 6rem;
  background: url("../img/diorama/03-dunas-naranjas.webp") center 80% / cover no-repeat;
  pointer-events: none;
}
.section-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 1.5rem; margin-bottom: 2.25rem; }
.section-heading .eyebrow { margin-bottom: .5rem; }
.section-heading__note { max-width: 30ch; color: var(--muted); }
.card-grid, .guest-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(1.4rem, 2.6vw, 2.25rem); align-items: stretch; }
.card-grid > *, .guest-grid > *, .detail-layout > *, .generic-layout > * { min-width: 0; }

/* Una imagen + una hoja. No hay marco exterior ni paisaje sobre la imagen. */
.shadowbox {
  position: relative;
  display: flex;
  flex-direction: column;
  min-width: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--ink);
  transition: transform .2s var(--ease);
}
.box__window {
  position: relative;
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  width: 100%;
  aspect-ratio: 3 / 2;
  background: var(--paper-alt);
}
.activity-card__image { width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: contain; }
.box__body {
  position: relative;
  z-index: 1;
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: .8rem;
  min-width: 0;
  margin: 0;
  padding: clamp(1.15rem, 2vw, 1.6rem);
  transition: box-shadow .2s var(--ease);
}
.box__body > p { margin: 0; }
.box__body h3 { max-width: 100%; }
.box__body h3 a { display: inline-block; padding-block: .15rem; min-height: 44px; }
.activity-card__date { font-weight: 600; }
.activity-card__date p + p { margin-top: .2rem; }
.activity-card__bottom { width: 100%; margin-top: auto; padding-top: .75rem; }
.guest-chips { display: flex; flex-wrap: wrap; gap: .15rem .7rem; list-style: none; margin: 0; padding: 0; }
.guest-chips a { display: inline-flex; align-items: center; min-height: 44px; font-size: .9rem; font-weight: 600; }
.art-placeholder { width: 100%; height: 100%; min-height: 200px; padding: 1.5rem; display: flex; flex-direction: column; justify-content: space-between; gap: 1rem; color: #fff0d6; background: #103c46; }
.art-placeholder span { font-size: .8rem; letter-spacing: .1em; }
.art-placeholder strong { font: 700 2.4rem/1.05 var(--display); }

/* Carteles 2:3 íntegros, sobre una base neutra. */
.box__window--poster { min-height: 320px; padding: 1rem; background: linear-gradient(var(--alt-wash), var(--alt-wash)), var(--grain); }
.cinema-poster { position: relative; width: 100%; aspect-ratio: 2 / 3; background: #fff4df; color: #103c46; box-shadow: 0 2px 2px #231c1830, 0 12px 18px -8px #231c1850; }
.box__window--poster .cinema-poster { width: 190px; max-width: 100%; }
.cinema-poster__image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; }
.cinema-poster__placeholder { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: space-between; gap: .6rem; padding: 1rem; background: linear-gradient(#fff4dfe8, #fff4dfe8), var(--grain); }
.cinema-poster__placeholder p { margin: 0; }
.cinema-poster__edition { font: 800 1.7rem/1 var(--display); }
.cinema-poster__edition span { display: block; margin-top: .35rem; font: 600 .7rem/1.2 var(--font); letter-spacing: .08em; }
.cinema-poster__type { font-size: .72rem; font-weight: 700; text-transform: uppercase; }
.cinema-poster__title { font: 700 clamp(1.35rem, 2vw, 2rem)/1.06 var(--display); }
.cinema-poster__status { color: #793315; font-size: .8rem; font-weight: 700; line-height: 1.35; }

/* Invitados: retratos limpios, sin arcos ni marcos superpuestos. */
.guest-grid--home { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.5rem; }
.box__window--portrait { aspect-ratio: 1 / 1; }
.portrait { width: 100%; height: 100%; aspect-ratio: 1; object-fit: cover; object-position: center 28%; }
.guest-card:target { outline: 3px solid var(--focus); outline-offset: 6px; }
.guest-role { font-weight: 600; color: var(--accent); }
.guest-grid--home h3 { font-size: clamp(1.65rem, 2.2vw, 2rem); }
.guest-grid--home .box__body { padding: 1rem; }
.guest-activity-links { list-style: none; padding: 0; margin: 0; width: 100%; font-size: .95rem; }
.guest-activity-links a { display: inline-block; padding-block: .5rem; min-height: 44px; font-weight: 600; }
.guest-activity-links li + li { margin-top: .75rem; }
.guest-activity-links .small { display: block; }
.guest-card h4 { margin-top: .6rem; }
.portrait-placeholder { width: 100%; height: 100%; display: grid; place-items: center; background: #e0bb79; color: #103c46; }
.portrait-placeholder span { font: 800 6rem/1 var(--display); }

/* Fachada de vídeo: no conecta con terceros hasta pulsar. */
.trailer__screen { position: relative; aspect-ratio: 3 / 2; min-height: 220px; color: #fff0d6; background: #103c46; }
.trailer__art { position: absolute; inset: 0; display: grid; place-items: center; }
.trailer__illustration { width: 100%; height: 100%; object-fit: contain; }
.trailer--cinema .trailer__art { inset: 1rem 40% 1rem 8%; }
.trailer__art .cinema-poster { width: auto; height: 100%; max-width: 100%; }
.trailer__slate { display: flex; flex-direction: column; justify-content: space-between; gap: 1rem; width: 100%; height: 100%; padding: 1.5rem 5rem 1.5rem 1.5rem; }
.trailer__slate span { font-size: .8rem; letter-spacing: .08em; }
.trailer__slate strong { font: 700 1.8rem/1.1 var(--display); }
.trailer__play-button {
  position: absolute;
  z-index: 2;
  right: 1rem;
  bottom: 1rem;
  display: grid;
  place-items: center;
  width: 64px;
  height: 60px;
  border: 2px solid #103c46;
  border-radius: 2px 8px 2px 3px;
  color: #103c46;
  background: #fff0d6;
  box-shadow: 0 3px 2px #0004, 0 10px 18px #0005;
  font-size: 1.6rem;
}
.trailer__play-button:focus-visible { outline: 3px solid #fff; outline-offset: 3px; box-shadow: 0 0 0 9px #103c46; }
.trailer__screen iframe { position: absolute; inset: 0; width: 100%; height: 100%; }
.trailer__screen iframe:focus-visible { outline: 3px solid var(--focus); outline-offset: 5px; }
.trailer.is-playing .trailer__screen { aspect-ratio: 16 / 9; min-height: 0; }
.trailer__availability { color: #103c46; background: #f3d49f; font-weight: 700; }
.trailer-feature { display: flex; flex-direction: column; }
.trailer-feature .trailer { flex: 1; }
.trailer-feature > .text-link { align-self: flex-start; margin-top: .8rem; }
.trailer-editorial { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.3fr); gap: clamp(2rem, 5vw, 5rem); align-items: center; }
.trailer-editorial h2 { margin-block: .6rem 1.2rem; }
.trailer-editorial .trailer { min-width: 0; }


/* Ficha y contenido documental. */
.detail-layout { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(280px, 1fr); gap: clamp(1.5rem, 3vw, 3rem); align-items: start; }
.prose-panel, .visit-card { padding: clamp(1.3rem, 3vw, 2.5rem); }
.prose-panel h2, .visit-card h2 { font-size: clamp(2rem, 3vw, 3rem); margin-block: .5rem 1.2rem; }
.prose-panel h3 { margin-block: 2rem 1rem; }
.prose-panel .button-row { margin-top: 1.5rem; }
.prose-panel > p { max-width: 68ch; }
.technical-list, .visit-data { margin: 0; }
.technical-list > div, .visit-data > div { padding-block: .8rem; }
.technical-list dt, .visit-data dt { font-size: .8rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); }
.technical-list dd, .visit-data dd { margin: .25rem 0 0; }
.technical-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1.5rem; }
.visit-data time strong { display: block; font: 700 3rem/1.2 var(--display); }
.visit-data .small { display: block; }
.visit-card > .small { margin-block: 1rem; }
.visit-card > .button { width: 100%; }

/* Agenda: filtros tranquilos fuera del escenario. */
.filters { padding-block: .5rem 2rem; margin-bottom: 1.5rem; border-bottom: 1px solid var(--line); }
.filters fieldset { border: 0; min-width: 0; padding: 0; margin: 0; }
.filters legend { font: 700 1.8rem/1.2 var(--display); padding: 0; margin-bottom: .6rem; }
.type-chips { display: flex; flex-wrap: wrap; gap: .65rem; margin-block: 1.25rem; }
.type-chip {
  min-height: 44px;
  max-width: 100%;
  padding: .55rem .8rem;
  color: var(--ink);
  background: transparent;
  border: 1px solid var(--line);
  border-radius: 2px;
  font-weight: 600;
}
.type-chip[aria-pressed="true"] { color: var(--accent-ink); background: var(--accent); border-color: var(--accent); text-decoration: underline; text-underline-offset: .25em; }
.filters__fields { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; }
.filters--chips .filters__fields { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.field { min-width: 0; }
.field label { display: block; margin-bottom: .4rem; font-weight: 600; }
.field select { width: 100%; min-height: 48px; padding: .65rem .5rem; color: var(--ink); background: var(--paper); border: 1px solid var(--line); border-radius: 2px; }
.filters__actions { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1.2rem; }
.results-count { font-weight: 600; margin-bottom: 2rem; }
.results-count:focus { outline: 3px solid var(--focus); outline-offset: 5px; }
.agenda-day + .agenda-day { margin-top: 4rem; }
.day-heading { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.75rem; }
.day-heading h2 { font-size: clamp(1.9rem, 3.2vw, 3rem); }
.day-heading__number { padding: .6rem .85rem; color: #fff0d6; background: #103c46; box-shadow: var(--shadow); font: 700 3rem/.95 var(--display); text-align: center; }
.day-heading__number span { display: block; font: 600 .85rem/1.4 var(--font); text-transform: uppercase; }

/* Editorial y sedes. */
.anniversary-panel { display: grid; grid-template-columns: minmax(170px, .65fr) minmax(0, 1.35fr); align-items: center; gap: clamp(2rem, 6vw, 6rem); }
.anniversary-panel h2 { margin-block: .6rem 1.5rem; }
.anniversary-panel .button-row { margin-top: 1.5rem; }
.festival-poster { display: block; width: min(100%, 320px); justify-self: center; background: #fff0d6; box-shadow: var(--raised); }
.festival-poster img { width: 100%; }
.generic-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(180px, 300px); gap: clamp(2rem, 5vw, 5rem); align-items: start; }
.generic-content > * + * { margin-top: 2rem; }
.generic-aside > p { margin-top: 1.5rem; }
.venue-card .box__body { padding-top: 2rem; }
.venue-card .text-link { margin-top: auto; }

/* Pie institucional: originales completos, sin máscaras en los logos. */
.site-footer {
  --sheet-color: #103c46;
  --focus: #ffcf83;
  position: relative;
  padding-block: 3.5rem 1.5rem;
  color: #fff0d6;
  background: #103c46;
  box-shadow: 0 -8px 18px -10px #0008;
}
.footer-top { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) auto; gap: 2rem; align-items: start; margin-bottom: 1.5rem; }
.footer-wordmark { display: inline-block; font: 800 clamp(2.8rem, 4vw, 4rem)/1 var(--display); margin-bottom: 1rem; text-decoration: none; }
.footer-top p { font-size: .95rem; }
.footer-top p + p { margin-top: .3rem; }
.footer-links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .1rem 1.2rem; list-style: none; margin: 0; padding: 0; }
.footer-links a { display: inline-flex; align-items: center; min-height: 44px; padding-block: .5rem; }
.footer-actions { display: flex; flex-direction: column; align-items: flex-start; gap: 1rem; }
.motion-toggle { color: #fff0d6; border-color: #9aafaa; background: transparent; }
.institution-panel { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 540px); align-items: center; gap: .5rem 1.5rem; padding: .7rem 1rem; background: #ccb297; box-shadow: 0 3px 2px #061f2550; }
.institution-panel__label { margin: 0; color: #103c46; font-size: .8rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.institution-strip { display: block; width: 100%; max-width: 540px; min-width: 0; min-height: 44px; align-content: center; justify-self: end; background: #ccb297; --focus: #103c46; }
.institution-strip img { width: 100%; height: auto; }
.footer-note { margin-top: 1.1rem; padding-top: .85rem; border-top: 1px solid #819b98; font-size: .85rem; }

/* ==========================================================================
   DIORAMA POR CAPAS
   Cabecera XXV, bloques escénicos, despliegue pop-up y deriva ambiental.
   El movimiento de capas lo aplica main.js (transform); el despliegue usa
   las propiedades independientes translate/rotate para no interferir.
   ========================================================================== */

/* --- Cabecera XXV: lámina troquelada sobre el diorama --- */
.hero--xxv {
  color-scheme: light;
  --ink: #103c46;
  --muted: #4a4f45;
  --accent: #923713;
  --accent-ink: #fff8ed;
  --paper: #fff6e6;
  --focus: #87320f;
  --shadow-rgb: 43, 27, 12;
  --sheet: #e3cfae;
  display: block;
  height: max(600px, clamp(42vw, calc(100svh - var(--header-height)), 56.25vw));
  min-height: 0;
  padding: 0;
  overflow: hidden;
  color: var(--ink);
  background: var(--sheet);
}
.hero--xxv .scene { inset: 0; }
.hero--xxv .scene__sun { width: 13%; top: 11%; right: 29%; }
.hero--xxv .scene__clouds { width: 26%; top: 14%; right: 4%; }
.hero--xxv .scene__mountains { bottom: -14%; }
.hero--xxv .scene__dunes { bottom: -27%; }
.hero--xxv .scene__camera { width: 12%; right: 37.6%; bottom: 8%; }
.hero--xxv .scene__reel { width: 12%; right: 20.5%; bottom: 30%; }
.hero--xxv .scene__plants { bottom: -40%; }
/* Lema: cada palabra en su línea hasta «Cine.», ALMERÍA destacada. */
.hero__lema span { display: inline-block; margin-right: .18em; }
.hero__lema em { display: block; margin-top: .06em; letter-spacing: .01em; }
/* Primer plano por delante de la lámina: la vegetación asoma sobre el troquel. */
.hero__front {
  position: absolute;
  z-index: 7;
  left: -4%;
  bottom: -52%;
  width: 108%;
  max-width: none;
  pointer-events: none;
  /* solo la planta derecha: la izquierda taparía el texto */
  clip-path: inset(0 0 0 60%);
  filter: drop-shadow(0 -2px 3px rgba(43, 27, 12, .2)) drop-shadow(0 18px 14px rgba(43, 27, 12, .35));
  transition: translate 1.1s var(--ease) .65s, opacity .7s ease .65s;
}
.can-reveal .hero--xxv:not(.is-revealed) .hero__front { opacity: 0; translate: 0 110px; }
.hero__sheet {
  position: absolute;
  z-index: 5;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  /* La lámina proyecta sombra dentro de las letras: ahí está la profundidad. */
  filter: drop-shadow(5px 8px 3px rgba(43, 27, 12, .38)) drop-shadow(16px 28px 20px rgba(43, 27, 12, .32));
}
.hero__sheet-paper { fill: var(--sheet); }
.hero__cut-edge path { stroke: #fbf1de; stroke-width: 2.5; opacity: .85; }
.hero__sheet--compacto { display: none; }
.hero--xxv .hero__layout {
  position: relative;
  z-index: 6;
  display: flex;
  align-items: center;
  height: 100%;
  perspective: 1600px;
}
.hero__copy { width: min(41%, 620px); padding-block: 2rem; }
.hero--xxv h1 {
  margin-block: .9rem 1.4rem;
  font: 800 clamp(3rem, 4.9vw, 6.6rem)/.92 var(--display);
  letter-spacing: -.03em;
}
.hero--xxv .hero__date { margin-top: 1rem; font: 700 clamp(1.7rem, 2.3vw, 2.7rem)/1 var(--display); }
.hero--xxv .hero__date span { font-size: .6em; margin-left: .3rem; }
.hero--xxv .hero__intro { max-width: 40ch; margin-bottom: 1.6rem; font-size: 1.1rem; }
.hero--xxv .countdown { margin-top: 1.4rem; }
.hero--xxv .example-note { margin-top: .4rem; }
.hero__edition {
  position: absolute;
  z-index: 6;
  left: 48.5%;
  bottom: 3.5%;
  margin: 0;
  color: var(--ink);
  font: 700 clamp(.78rem, 1vw, .95rem)/1.2 var(--font);
  letter-spacing: .14em;
  text-transform: uppercase;
}

@media (max-width: 1000px) {
  .hero--xxv { height: auto; padding-bottom: 2.5rem; background: linear-gradient(#e3cfaee6, #e3cfaee6), var(--grain); }
  .hero--xxv .scene { bottom: auto; height: 68.9vw; }
  .hero__sheet--ancho { display: none; }
  .hero__sheet--compacto { display: block; bottom: auto; height: 68.9vw; }
  .hero--xxv .hero__layout { display: block; height: auto; padding-top: calc(68.9vw + .5rem); }
  .hero__copy { width: min(100%, 680px); padding-block: 0; }
  .hero--xxv h1 { font-size: clamp(2.6rem, 10vw, 5rem); }
  .hero__edition { top: calc(68.9vw - 2.4rem); bottom: auto; left: 0; right: 0; text-align: center; }
  .hero--xxv .scene__sun { width: 15%; top: 13%; right: 44%; }
  .hero--xxv .scene__clouds { width: 30%; top: 12%; right: 8%; }
  .hero--xxv .scene__mountains { bottom: -6%; }
  .hero--xxv .scene__dunes { bottom: -24%; }
  .hero--xxv .scene__camera { width: 13%; right: 44%; bottom: 14%; }
  .hero--xxv .scene__reel { width: 17%; right: 9%; bottom: 12%; }
  .hero--xxv .scene__plants { bottom: -22%; }
  .hero__front, .hero__edition { display: none; }
}
@media (max-width: 760px) {
  .hero--xxv .button-row { flex-direction: column; align-items: stretch; }
}

/* --- Bloques escénicos: la escena de cada sección ocupa todo el bloque --- */
.escena {
  color-scheme: light;
  --ink: #103c46;
  --muted: #5d4c38;
  --accent: #923713;
  --accent-ink: #fff8ed;
  --paper: #fff6e6;
  --focus: #87320f;
  --shadow-rgb: 43, 27, 12;
  position: relative;
  isolation: isolate;
  display: flex;
  align-items: center;
  min-height: clamp(560px, 44vw, 860px);
  padding-block: 4.5rem;
  overflow: hidden;
  color: var(--ink);
  background: #e4d0b1;
}
/* La escena panorámica ocupa todo el bloque. */
.escena__fondo { position: absolute; z-index: 0; inset: 0; pointer-events: none; }
.escena--derecha .escena__capa { object-position: 70% 55%; }
.escena--izquierda .escena__capa { object-position: 30% 55%; }
.escena__capa, .escena__telon {
  position: absolute;
  inset: -5%;
  width: 110%;
  height: 110%;
  max-width: none;
  object-fit: cover;
}
.escena__telon { inset: -8% -12%; width: 124%; height: 116%; }
/* 3. Hoja de cartulina rasgada con el texto impreso: forma parte del diorama. */
.escena__layout { position: relative; z-index: 2; display: flex; perspective: 1600px; }
.escena--izquierda .escena__layout { justify-content: flex-end; }
.escena__texto {
  position: relative;
  width: min(42%, 560px);
  padding: clamp(2.2rem, 4vw, 3.8rem) clamp(1.8rem, 3.4vw, 3.4rem);
  transform-origin: 50% 100%;
  isolation: isolate;
}
.escena__texto::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  background: linear-gradient(#fbf2e2f5, #f3e3c8f5), var(--grain);
  background-size: auto, 420px 420px;
  /* borde rasgado a mano */
  clip-path: polygon(0% 2.5%, 8% 0.6%, 17% 2.1%, 28% 0%, 39% 1.8%, 51% 0.4%, 63% 2.2%, 74% 0.3%, 86% 1.9%, 100% 0.8%, 99.1% 12%, 100% 26%, 98.9% 41%, 99.8% 57%, 98.7% 72%, 99.9% 87%, 99% 99.2%, 87% 98.1%, 75% 100%, 62% 98.4%, 49% 99.8%, 37% 98.2%, 24% 99.9%, 12% 98.3%, 0.4% 99.6%, 1.2% 85%, 0% 70%, 1.1% 54%, 0.1% 38%, 1.3% 21%);
  filter: drop-shadow(0 1px 1px rgba(43, 27, 12, .3));
}
.escena__texto::after {
  /* sombra de la hoja sobre la escena */
  content: "";
  position: absolute;
  z-index: -2;
  inset: 4% 2% -2% 4%;
  background: rgba(43, 27, 12, .5);
  filter: blur(22px);
  translate: 10px 16px;
}
.escena__texto h2 { margin-block: .7rem 1.2rem; font-size: clamp(2.3rem, 3.5vw, 3.8rem); }
.escena__texto > p:not(.eyebrow) { max-width: 44ch; }
.escena__texto .button { margin-top: 1.6rem; }
.escena__capa, .escena__telon { transition: translate 1.2s var(--ease), opacity .8s ease; }
.escena__lamina { filter: drop-shadow(0 -2px 2px rgba(43, 27, 12, .22)) drop-shadow(4px 10px 9px rgba(43, 27, 12, .38)); }
.escena__lamina + .escena__lamina { transition-delay: .15s; }
.escena__figuras { filter: drop-shadow(3px 5px 3px rgba(43, 27, 12, .4)) drop-shadow(10px 20px 16px rgba(43, 27, 12, .35)); transition-delay: .3s; }
.can-reveal .escena:not(.is-revealed) .escena__lamina { opacity: 0; translate: 0 50px; }
/* Margen para que el parallax nunca deje ver los bordes. */
.escena .escena__capa { inset: -9%; width: 118%; height: 118%; }
.can-reveal .escena:not(.is-revealed) .escena__figuras { opacity: 0; translate: 0 60px; }
.escena__telon { transition-delay: .45s; }
.can-reveal .escena:not(.is-revealed) .escena__plano { translate: 0 -30px; }
.can-reveal .escena:not(.is-revealed) .escena__telon { opacity: 0; }

/* --- Ficha de actividad: ilustración en ventana y dunas delante --- */
.activity-keyart { position: relative; }
.keyart-window {
  position: relative;
  z-index: 1;
  padding: clamp(10px, 1vw, 14px);
  background: linear-gradient(#f3e4c8, #eedcbc), var(--grain);
  border-radius: 3px 7px 4px 9px / 7px 3px 8px 4px;
  box-shadow: 0 2px 2px rgba(43, 27, 12, .22), 10px 22px 26px -8px rgba(43, 27, 12, .42);
}
.keyart-window .activity-keyart__image { filter: none; object-fit: cover; }
.keyart-front {
  position: absolute;
  z-index: 2;
  left: -8%;
  bottom: -38%;
  width: 116%;
  max-width: none;
  pointer-events: none;
}

/* --- Despliegue pop-up (solo con JS y movimiento permitido) --- */
.stage-layout { perspective: 1600px; }
.scene__layer:not(.scene__sky), .scene__curtain, .stage-wings img, .keyart-front {
  transition: translate 1.1s var(--ease), opacity .7s ease;
}
.scene__sun { transition-delay: .05s; }
.scene__clouds, .scene__curtain { transition-delay: .12s; }
.scene__mountains { transition-delay: .18s; }
.scene__dunes { transition-delay: .28s; }
.scene__camera, .scene__chairs, .scene__microphones, .keyart-front { transition-delay: .38s; }
.scene__reel { transition-delay: .46s; }
.scene__plants { transition-delay: .52s; }
.stage-wings img { transition-delay: .6s; }
.can-reveal [data-scene]:not(.is-revealed) :is(.scene__layer:not(.scene__sky), .scene__curtain, .stage-wings img, .keyart-front) {
  opacity: 0;
  translate: 0 90px;
}
[data-popup] {
  transform-origin: 50% 100%;
  transition: rotate 1s cubic-bezier(.2, .9, .3, 1.12) .3s, opacity .45s ease .3s;
}
.can-reveal [data-popup]:not(.is-revealed) { opacity: 0; rotate: x 78deg; }

/* --- Deriva ambiental: el escenario respira sin distraer --- */
.is-revealed [data-drift="clouds"] { animation: drift-clouds 22s ease-in-out infinite alternate; }
.is-revealed [data-drift="sun"] { animation: drift-sun 11s ease-in-out infinite alternate; }
.is-revealed [data-drift="reel"] { animation: drift-reel 8s ease-in-out infinite alternate; }
@keyframes drift-clouds { from { translate: -3% 0; } to { translate: 4% -2%; } }
@keyframes drift-sun { from { scale: 1; rotate: -3deg; } to { scale: 1.05; rotate: 5deg; } }
@keyframes drift-reel { from { rotate: -5deg; } to { rotate: 4deg; } }

/* --- Adaptación --- */
@media (max-width: 900px) {
  .escena { display: block; min-height: 0; padding: calc(66vw - 3rem) 0 3rem; }
  .escena__fondo { bottom: auto; height: 66vw; }
  .escena--derecha .escena__capa { object-position: 85% 50%; }
  .escena--izquierda .escena__capa { object-position: 15% 50%; }
  .escena__layout, .escena--izquierda .escena__layout { display: block; }
  .escena__texto { width: auto; margin-inline: .5rem; }
}
}
}
@media (max-width: 760px) {
}


/* --- Láminas de cartulina: sustituyen a los rectángulos lisos --- */
.festival-intro, .activity-hero__paper {
  position: relative;
  background: linear-gradient(#fbf1dff2, #f4e5cbf2), var(--grain);
  background-size: auto, 420px 420px;
  border-radius: 3px 9px 4px 7px / 8px 3px 9px 4px;
  box-shadow: 0 1px 1px rgba(43, 27, 12, .25), 6px 14px 18px -6px rgba(43, 27, 12, .38), 0 38px 50px -28px rgba(43, 27, 12, .5);
}
.festival-intro::before, .activity-hero__paper::before {
  /* segunda hoja detrás, algo girada: el canto de una pila de papel */
  content: "";
  position: absolute;
  z-index: -1;
  inset: 6px -8px -9px 7px;
  background: linear-gradient(#e7d2ad, #dcc39a);
  border-radius: 6px 3px 8px 4px / 4px 8px 3px 7px;
  rotate: 1.2deg;
  box-shadow: 0 10px 18px -8px rgba(43, 27, 12, .4);
}
:root[data-theme="oscuro"] .activity-hero__paper { background: linear-gradient(#1d4449f5, #173b40f5), var(--grain); }
:root[data-theme="oscuro"] .activity-hero__paper::before { background: #0f2d31; }
@media (prefers-color-scheme: dark) {
  :root[data-theme="sistema"] .activity-hero__paper { background: linear-gradient(#1d4449f5, #173b40f5), var(--grain); }
  :root[data-theme="sistema"] .activity-hero__paper::before { background: #0f2d31; }
}

/* Microinteracciones de papel, sin inclinaciones ni seguimiento del puntero. */
@media (hover: hover) and (pointer: fine) {
  .shadowbox:not(.is-playing):hover { transform: translateY(-2px); }
  .shadowbox:hover .box__body { box-shadow: var(--raised); }
  .shadowbox:focus-within { transform: none; }
  .button:hover { transform: translateY(-2px); box-shadow: var(--raised); }
}

/* Telón progresivo: navegación nativa, sin demoras ni interceptar enlaces. */
@view-transition { navigation: auto; }
::view-transition-old(root) { animation: curtain-away .25s ease both; }
::view-transition-new(root) { animation: curtain-reveal .4s var(--ease) both; }
@keyframes curtain-away { to { opacity: .6; } }
@keyframes curtain-reveal {
  from { clip-path: polygon(0 0, 0 0, 13% 100%, 0 100%); }
  to { clip-path: polygon(0 0, 100% 0, 113% 100%, 0 100%); }
}

/* Recomposición, nunca reducción forzada del texto. */
@media (min-width: 1000px) {
  .agenda-day .card-grid[data-count="1"] { grid-template-columns: minmax(0, 1fr); }
  .agenda-day .card-grid[data-count="1"] .activity-card { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); align-items: center; }
  .agenda-day .card-grid[data-count="1"] .box__body { align-self: stretch; justify-content: center; }
  .agenda-day .card-grid[data-count="1"] .box__window--poster { min-height: 340px; }
}
@media (max-width: 1150px) {
  .site-nav { width: 100%; order: 4; margin-left: 0; }
  .site-nav ul { justify-content: space-between; }
  .guest-grid--home { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .footer-top { grid-template-columns: 1.3fr 1fr; }
  .footer-actions { grid-column: 1 / -1; flex-direction: row; flex-wrap: wrap; align-items: center; }
  .header-board--invitados, .header-board--prensa { width: 72%; }
  .header-board--programacion { width: 76%; }
}
@media (max-width: 1000px) {
  .activity-hero-layout { gap: 1.5rem; }
}
@media (max-width: 900px) {
  .card-grid, .guest-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .detail-layout { grid-template-columns: minmax(0, 1fr); }
  .filters__fields, .filters--chips .filters__fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .interior-hero--invitados, .interior-hero--prensa { padding-bottom: 15rem; }
  .header-board--invitados, .header-board--prensa { width: min(100%, 800px); margin: 0 auto; }
  .scene__chairs { width: 300px; right: 10%; bottom: 1rem; }
  .scene__microphones { width: 230px; right: 8%; bottom: 1rem; }
  .scene--prensa .scene__camera { width: 85px; left: 8%; bottom: 1rem; }
}
@media (max-width: 760px) {
  .header-layout { min-height: 86px; gap: .75rem; }
  .brand__name { font-size: 2rem; }
  .brand__edition { display: none; }
  .header-tools { margin-left: auto; }
  .site-nav { padding-top: .75rem; }
  .site-nav ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; }
  .site-nav a { background: var(--paper-alt); padding: .7rem; }
  .stage-layout { width: calc(100% - 2rem); }
  .stage-wings img { left: -15%; width: 130%; object-fit: cover; }
  .interior-hero { min-height: 0; padding-top: 1.75rem; }
  .header-board, .header-board--prensa { width: 100%; margin-inline: auto; }
  .header-board h1 { font-size: clamp(2.5rem, 8vw, 4rem); }
  .board__copy { padding: 1.5rem; }
  .header-board--sign .board__title h1 { font-size: clamp(2.1rem, 6.5vw, 3.2rem); }
  .header-board:not(.is-mounted) .board__image { max-height: 190px; }
  .scene__mountains { bottom: -8%; }
  .scene__dunes { bottom: -15%; }
  .scene__plants { bottom: -12%; }
  .scene--programacion .scene__mountains,
  .scene--entradas .scene__mountains,
  .scene--participa .scene__mountains,
  .scene--noticias .scene__mountains { bottom: -12%; }
  .scene--programacion .scene__dunes,
  .scene--entradas .scene__dunes,
  .scene--noticias .scene__dunes { bottom: -19%; }
  .scene--programacion .scene__reel { width: 90px; right: -20px; bottom: 5px; }
  .scene--programacion .scene__sun { width: 100px; right: 0; top: 1rem; }
  .scene--invitados .scene__mountains { bottom: -8%; }
  .scene--invitados .scene__plants { bottom: -14%; }
  .scene--festival .scene__mountains { bottom: -4%; }
  .scene--festival .scene__dunes { bottom: -9%; }
  .scene--festival .scene__plants { bottom: -14%; }
  .scene--festival .scene__camera, .scene--festival .scene__clouds { display: none; }
  .scene--festival .scene__sun { width: 90px; top: auto; bottom: 6rem; }
  .festival-intro { width: 100%; padding: 1.5rem; }
  .interior-hero--festival { padding-bottom: 13rem; }
  .activity-hero-layout, .interior-hero--cinema .activity-hero-layout { grid-template-columns: minmax(0, 1fr); gap: 1.25rem; }
  .activity-keyart, .interior-hero--cinema .activity-keyart { grid-column: 1; grid-row: 1; }
  .activity-hero__paper, .interior-hero--cinema .activity-hero__paper { grid-column: 1; grid-row: 2; }
  .activity-hero__paper h1 { font-size: clamp(2.6rem, 8vw, 3.8rem); }
  .activity-keyart--cinema { width: min(75%, 290px); justify-self: center; }
  .scene--actividad .scene__mountains { bottom: -4%; }
  .scene--actividad .scene__dunes { bottom: -8%; }
  .scene--cine .scene__reel { width: 80px; }
  .programme-ribbon__list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .2rem 1rem; }
  .programme-ribbon a { font-size: 1.08rem; }
  .section-heading { align-items: flex-start; flex-direction: column; gap: .8rem; }
  .trailer-editorial, .generic-layout { grid-template-columns: minmax(0, 1fr); }
  .generic-aside { width: min(100%, 300px); margin-inline: auto; }
  .anniversary-panel { grid-template-columns: minmax(150px, .7fr) minmax(0, 1fr); gap: 2rem; }
  .anniversary-panel h2 { font-size: 2.4rem; }
  .institution-panel { grid-template-columns: minmax(0, 1fr); gap: .35rem; padding: .65rem; }
  .institution-panel__label { text-align: center; }
  .institution-strip { justify-self: center; }
}
@media (max-width: 540px) {
  body { font-size: 1rem; }
  .card-grid, .guest-grid, .guest-grid--home, .filters__fields, .filters--chips .filters__fields, .anniversary-panel, .footer-top { grid-template-columns: minmax(0, 1fr); }
  .box__body { padding: 1.25rem; }
  .box__window--portrait { aspect-ratio: 1.15; }
  .portrait { aspect-ratio: 1.15; }
  .guest-card h3 { font-size: 2rem; }
  .type-chips { gap: .5rem; }
  .type-chip { padding-inline: .65rem; font-size: .95rem; }
  .technical-list { grid-template-columns: minmax(0, 1fr); }
  .festival-poster { width: min(100%, 250px); }
  .footer-top { gap: 1.5rem; }
  .footer-actions { grid-column: auto; }
}
@media (max-width: 359px) {
  .header-layout { gap: .5rem; }
  .theme-toggle, .nav-toggle { padding-inline: .5rem; font-size: .8rem; }
  .programme-ribbon__list { grid-template-columns: minmax(0, 1fr); }
}

/* Pausa y movimiento reducido: también anulan las transiciones nativas. */
:root[data-motion="off"] *, :root[data-motion="off"] *::before, :root[data-motion="off"] *::after {
  animation: none !important;
  transition: none !important;
  scroll-behavior: auto !important;
}
:root[data-motion="off"] [data-depth],
:root[data-motion="off"] .shadowbox,
:root[data-motion="off"] .button { transform: none !important; }
:root[data-motion="off"]::view-transition-old(root),
:root[data-motion="off"]::view-transition-new(root) { animation: none !important; }
@media (prefers-reduced-motion: reduce) {
  @view-transition { navigation: none; }
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  [data-depth], .shadowbox, .button { transform: none !important; }
  ::view-transition-old(root), ::view-transition-new(root) { animation: none !important; }
}
@media (forced-colors: active) {
  @view-transition { navigation: none; }
  .scene, .stage-wings, .board__image, .poster-stand__support, .paper-icon,
  .sheet::before, .sheet::after, .site-footer::before, .hero__sheet, .hero__edition, .hero__front, .escena__fondo, .keyart-front { display: none !important; }
  .hero, .interior-hero, .sheet, .escena, .site-footer, .paper-panel, .box__body,
  .header-board, .board__title, .board__copy, .hero__after, .festival-intro,
  .activity-hero__paper, .escena__texto, .programme-ribbon, .box__window {
    color: CanvasText;
    background: Canvas;
    box-shadow: none;
  }
  .header-board.is-mounted > .board__title,
  .header-board.is-mounted > .board__copy { position: static; padding: 1rem; }
  .hero__content, .header-board, .hero__after, .festival-intro { width: 100%; }
  .hero, .interior-hero { min-height: 0; padding-block: 2rem; }
  .paper-panel, .box__body, .activity-hero__paper { border: 1px solid CanvasText; }
  .poster-stand { aspect-ratio: 2 / 3; }
  .poster-stand__mount { inset: 0; }
  .cinema-poster__placeholder, .trailer__availability { color: CanvasText; background: Canvas; border: 1px solid CanvasText; }
  .cinema-poster__status { color: CanvasText; }
  .trailer__play-button { color: ButtonText; background: ButtonFace; border-color: ButtonText; box-shadow: none; }
  .type-chip[aria-pressed="true"] { background: Highlight; color: HighlightText; border-color: Highlight; }
  :focus-visible, .results-count:focus { outline-color: Highlight; }
  [data-depth], .shadowbox, .button { transform: none !important; }
  .institution-panel { background: Canvas; border: 1px solid CanvasText; box-shadow: none; }
  .institution-panel__label { color: CanvasText; }
  .institution-strip { forced-color-adjust: none; background: #ccb297; }
  ::view-transition-old(root), ::view-transition-new(root) { animation: none !important; }
}
@media print {
  :root, :root[data-theme="oscuro"], :root[data-theme="sistema"] {
    color-scheme: light;
    --bg: #fff;
    --paper: #fff;
    --paper-alt: #eee;
    --ink: #000;
    --muted: #333;
    --accent: #000;
    --accent-ink: #fff;
    --line: #777;
    --paper-wash: #fff;
    --alt-wash: #fff;
  }
  body { font-size: 10pt; background: white; }
  .site-header, .site-footer, .scene, .stage-wings, .board__image, .skip-link,
  .filters, .programme-ribbon, .trailer__play-button, .activity-hero__links,
  .sheet::before, .sheet::after, .site-footer::before, .hero__sheet, .hero__edition, .hero__front, .escena__fondo, .keyart-front { display: none !important; }
  .container, .stage-layout { width: 100%; }
  .sheet, .hero, .interior-hero, .escena { min-height: 0; padding-block: 1rem; background: white; box-shadow: none; }
  .hero__content, .header-board, .hero__after, .festival-intro { width: 100%; }
  .header-board.is-mounted > .board__title,
  .header-board.is-mounted > .board__copy { position: static; padding: 1rem 0; }
  .paper-panel, .box__body, .header-board, .hero__after, .activity-hero__paper,
  .escena__texto, .festival-poster { box-shadow: none; break-inside: avoid; }
  .detail-layout, .generic-layout, .trailer-editorial, .activity-hero-layout,
  .interior-hero--cinema .activity-hero-layout, .escena__layout { display: block; }
  .card-grid, .guest-grid, .guest-grid--home { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .activity-keyart { width: 230px; margin: 1rem auto; }
  .visit-card { margin-top: 1rem; }
  [data-depth], .shadowbox, .button { transform: none !important; }
}

.technical-list--single { grid-template-columns: minmax(0, 1fr); }
.technical-list dt a { color: var(--ink); }
.card-grid--carteles { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 1.5rem; }
.edition-poster { margin: 0; display: grid; gap: .6rem; }
.edition-poster .festival-poster { width: 100%; }

/* ==========================================================================
   ESTRUCTURA DEL SITIO: cabecera con logo, portadas de sección, secciones y pie
   ========================================================================== */

/* Cabecera del sitio */
.brand__logo { width: auto; height: 52px; }
.brand__edition { color: var(--ink); }
:root[data-theme="oscuro"] .brand__logo { filter: brightness(0) invert(.93) sepia(.2); }
@media (prefers-color-scheme: dark) { :root[data-theme="sistema"] .brand__logo { filter: brightness(0) invert(.93) sepia(.2); } }
.site-nav ul { align-items: center; }
.site-nav__cta { margin-left: .6rem; }
.site-nav__cta .button { color: var(--accent-ink); text-decoration: none; }
.site-nav__cta .button:hover { text-decoration: none; }

/* Datos clave dentro de las cabeceras */
.header-datos { display: flex; flex-wrap: wrap; gap: .25rem 1.1rem; }
.header-datos strong { font-weight: 700; }

/* Portadas de sección */
.hub-intro { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: clamp(1.5rem, 4vw, 4rem); align-items: center; }
.hub-intro .prose-panel h2 { margin-block: .5rem 1.2rem; }
.cifras { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.4rem; margin: 0; }
.cifras div { padding: 1.2rem 1rem; border-top: 3px solid var(--accent); }
.cifras dt { font: 800 clamp(2.6rem, 4.5vw, 4rem)/1 var(--display); color: var(--ink); }
.cifras dd { margin: .35rem 0 0; color: var(--muted); font-weight: 600; }
.card-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.hub-card .box__body { gap: .55rem; }
.hub-card h3 a { text-decoration: none; }
.hub-card h3 a::after { content: ""; position: absolute; inset: 0; }
.hub-card { position: relative; }
.hub-card__datos { display: flex; flex-wrap: wrap; gap: .2rem .9rem; margin-top: auto; }
.yoso-panel { text-align: center; max-width: 820px; margin-inline: auto; }
.yoso-panel .button-row, .yoso-panel > .button { justify-content: center; margin-top: 1.4rem; }
.yoso-panel h2 { margin-block: .5rem 1rem; }

/* Páginas de sección */
.technical-list--tres { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.nominaciones, .jurados { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem; }
.nominaciones h3, .jurados h3 { font-size: clamp(1.4rem, 1.8vw, 1.7rem); margin-bottom: .8rem; }
.lista-simple { margin: 0; padding-left: 1.1rem; }
.lista-simple li + li { margin-top: .3rem; }
.otras-secciones { margin-top: 2.5rem; text-align: center; }
.otras-secciones ul { display: flex; flex-wrap: wrap; justify-content: center; gap: .2rem 1.4rem; list-style: none; padding: 0; margin: .6rem 0 0; }
.otras-secciones a { display: inline-flex; min-height: 44px; align-items: center; font-weight: 600; }

/* Premios */
.premios-layout { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 2rem; align-items: start; }
.guest-grid--dos { grid-template-columns: repeat(2, minmax(0, 1fr)); }

/* Organización */
.organizacion > p { max-width: 70ch; }
.logos-institucionales { display: flex; flex-wrap: wrap; align-items: center; gap: 2rem 3rem; margin-top: 2rem; }
.logos-institucionales img { width: auto; height: 90px; }
.colaboradores-panel { padding: clamp(1.5rem, 3vw, 3rem); background: #103c46; box-shadow: var(--shadow); }
.colaboradores-panel img { width: 100%; height: auto; }
.convocatoria { display: flex; flex-direction: column; gap: .6rem; }
.convocatoria .text-link { margin-top: auto; }
.agenda-prensa dd { font-size: .95rem; }

/* Pie del sitio */
.site-footer .footer-top { grid-template-columns: minmax(0, 1.1fr) minmax(0, 2fr) auto; gap: clamp(2rem, 4vw, 4rem); padding-bottom: 2.2rem; border-bottom: 1px solid #ffffff26; }
.footer-brand img { width: 220px; height: auto; margin-bottom: 1rem; }
.footer-brand p { font-size: .95rem; line-height: 1.5; }
.footer-brand .button { margin-top: 1.2rem; }
.footer-nav { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; }
.footer-nav__titulo { font: 700 .8rem/1.3 var(--font); letter-spacing: .12em; text-transform: uppercase; color: #ffce7a; margin-bottom: .4rem; }
.site-footer .footer-links { grid-template-columns: minmax(0, 1fr); gap: 0; }
.site-footer .footer-links a { min-height: 40px; padding-block: .35rem; }
.footer-logos { display: flex; flex-wrap: wrap; gap: 1.5rem 3rem; margin-block: 2rem 1.5rem; }
.footer-logos__grupo { display: grid; gap: .7rem; }
.footer-logos__titulo { font: 700 .75rem/1.3 var(--font); letter-spacing: .12em; text-transform: uppercase; color: #cfdcd9; }
.footer-logos__fila { display: flex; align-items: center; gap: 2.4rem; padding: .4rem 0; background: none; }
.footer-logos__fila img { width: auto; height: 56px; }
.footer-colaboradores { display: grid; gap: .8rem; padding-top: 1.5rem; border-top: 1px solid #ffffff26; }
.footer-colaboradores img { width: min(100%, 900px); height: auto; justify-self: center; opacity: .92; }

@media (max-width: 1150px) {
  .card-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .site-footer .footer-top { grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr); }
  .site-nav__cta { margin-left: 0; }
}
@media (max-width: 900px) {
  .hub-intro, .premios-layout, .nominaciones, .jurados { grid-template-columns: minmax(0, 1fr); }
  .technical-list--tres { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .site-footer .footer-top { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 760px) {
  .brand__logo { height: 44px; }
  .brand__edition { display: none; }
  .site-nav__cta { grid-column: 1 / -1; }
  .site-nav__cta .button { width: 100%; }
}
@media (max-width: 540px) {
  .card-grid--4, .technical-list--tres, .footer-nav, .guest-grid--dos { grid-template-columns: minmax(0, 1fr); }
  .footer-logos__fila { flex-wrap: wrap; gap: 1rem; }
  .footer-logos__fila img { height: 44px; }
  .logos-institucionales img { height: 64px; }
}

/* Franja de datos clave bajo la cabecera de cada sección */
.datos-seccion { position: relative; z-index: 4; color: #fff0d6; background: #103c46; --focus: #ffce7a; }
.datos-seccion dl { display: flex; flex-wrap: wrap; align-items: center; gap: .8rem 2.5rem; margin-block: 0; padding-block: 1rem; }
.datos-seccion dt { font: 700 .75rem/1.3 var(--font); letter-spacing: .12em; text-transform: uppercase; color: #ffce7a; }
.datos-seccion dd { margin: .15rem 0 0; font: 700 1.2rem/1.2 var(--display); }
.datos-seccion__cta { margin-left: auto; }

/* Textos largos en las piezas de cabecera: la letra se adapta para caber siempre en su panel. */
.header-board--titulo-largo.is-mounted h1,
.header-board--invitados.header-board--titulo-largo.is-mounted h1,
.header-board--prensa.header-board--titulo-largo.is-mounted h1 { font-size: clamp(1.8rem, 6.4cqw, 4.6rem); }
.header-board--texto-largo.is-mounted .board__flow > p:not(.eyebrow):not(.example-note) { font-size: clamp(.85rem, 1.75cqw, 1.2rem); }
.header-board--texto-largo.is-mounted .board__flow { gap: clamp(.35rem, 1.1cqw, .9rem); }

/* Logo de cabecera a tamaño protagonista */
.brand__logo { height: 76px; }
.header-layout { min-height: 104px; }
@media (max-width: 760px) { .brand__logo { height: 56px; } .header-layout { min-height: 84px; } }
.header-board--texto-largo.is-mounted h1 { font-size: clamp(1.9rem, 8.4cqw, 5.6rem); }

/* ==========================================================================
   MENÚ DESPLEGABLE DE SECCIONES: panel a todo el ancho bajo la cabecera,
   cada sección con su objeto de papel
   ========================================================================== */
.nav-drop { display: flex; align-items: center; }
.nav-drop > a { padding-right: .1rem; }
.nav-drop__toggle { display: inline-grid; place-items: center; width: 30px; min-height: 44px; padding: 0; border: 0; background: none; color: inherit; cursor: pointer; }
.nav-drop__toggle::before { content: ""; width: .45rem; height: .45rem; border: solid currentColor; border-width: 0 2px 2px 0; transform: translateY(-2px) rotate(45deg); transition: transform .2s ease; }
.nav-drop.is-open .nav-drop__toggle::before { transform: translateY(2px) rotate(-135deg); }
.nav-drop__toggle:focus-visible { outline: 3px solid var(--accent); outline-offset: -2px; }
.nav-drop__panel {
  position: absolute; z-index: 60; left: 0; right: 0; top: 100%;
  padding-block: 1.8rem 1.2rem; background: var(--paper);
  border-top: 1px solid rgba(var(--shadow-rgb), .14);
  box-shadow: 0 18px 30px -12px rgba(var(--shadow-rgb), .38);
  visibility: hidden; opacity: 0; translate: 0 -6px;
  transition: opacity .18s ease, translate .22s ease, visibility 0s linear .22s;
}
.nav-drop.is-open .nav-drop__panel { visibility: visible; opacity: 1; translate: 0 0; transition-delay: 0s; }
.nav-drop__grupos { display: grid; grid-template-columns: 1fr 1.9fr 1.35fr; gap: 2.5rem; }
.nav-drop__titulo { margin: 0 0 .7rem; font: 700 .76rem/1.3 var(--font); letter-spacing: .14em; text-transform: uppercase; }
.site-nav .nav-drop__titulo a { display: inline; min-height: 0; padding: 0; color: var(--muted); }
.site-nav .nav-drop__panel ul { display: grid; gap: .15rem; list-style: none; margin: 0; padding: 0; }
.nav-drop__grupo:nth-child(2) ul { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 1.5rem; }
.site-nav .nav-drop__panel li a { display: flex; align-items: center; gap: .75rem; min-height: 52px; padding: .3rem .5rem .3rem .3rem; border-radius: 4px; font-weight: 600; line-height: 1.2; text-decoration: none; }
.site-nav .nav-drop__panel li a:hover, .site-nav .nav-drop__panel li a:focus-visible { background: var(--paper-alt); text-decoration: none; }
.site-nav .nav-drop__panel li a[aria-current] { color: var(--accent); }
.nav-drop__panel li img { flex: none; width: 44px; height: 44px; object-fit: contain; filter: drop-shadow(0 2px 2px rgba(var(--shadow-rgb), .3)); transition: translate .25s ease; }
.nav-drop__panel li a:hover img { translate: 0 -2px; }
.nav-drop__pie { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .5rem 1.5rem; margin-top: 1.1rem; padding-top: .8rem; border-top: 1px solid rgba(var(--shadow-rgb), .14); }
.site-nav .nav-drop__pie a { display: inline-flex; gap: .35rem; align-items: center; min-height: 44px; padding: .5rem 0; color: var(--accent); }
@media (prefers-reduced-motion: reduce) { .nav-drop__panel, .nav-drop__toggle::before, .nav-drop__panel li img { transition: none; } }
@media (max-width: 1150px) { .nav-drop__grupos { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; } .nav-drop__grupo:nth-child(2) ul { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 760px) {
  .nav-drop { flex-wrap: wrap; grid-column: 1 / -1; }
  .nav-drop > a { flex: 1; }
  .nav-drop__toggle { width: 44px; background: var(--paper-alt); }
  .nav-drop__panel { position: static; display: none; padding: .6rem 0 .4rem; border: 0; box-shadow: none; visibility: visible; opacity: 1; translate: none; }
  .nav-drop.is-open .nav-drop__panel { display: block; }
  .nav-drop__panel .container { padding-inline: 0; }
  .nav-drop__grupos { grid-template-columns: minmax(0, 1fr); gap: 1rem; }
  .site-nav .nav-drop__panel li a { background: none; padding-inline: 0; }
}

/* ==========================================================================
   VENTANA DIORAMA DE LAS OBRAS: cartel a sangre + dunas de papel + camaleón
   ========================================================================== */
.box__window--poster:has(.card-dio) { min-height: 0; padding: 0; aspect-ratio: 4 / 3; overflow: hidden; background: #d9b98a; }
.card-dio { position: absolute; inset: 0; overflow: hidden; isolation: isolate; }
.card-dio > img { position: absolute; max-width: none; pointer-events: none; transition: translate .6s cubic-bezier(.2, .9, .3, 1.15), scale .8s var(--ease, ease); }
.card-dio__cartel { inset: -6% -4% auto; width: 108%; height: 112%; object-fit: cover; object-position: 50% 22%; }
/* Luz cálida al pie del cartel para asentar las dunas, sin desenfoques. */
.card-dio::after { content: ""; position: absolute; inset: 45% 0 0; z-index: 1; background: linear-gradient(transparent, #7a3a1440); pointer-events: none; }
.card-dio__dunas { z-index: 2; left: -3%; bottom: -3%; width: 106%; height: auto; max-height: 30%; object-fit: cover; object-position: 50% 0; filter: drop-shadow(0 -3px 3px #3a1c0a55) drop-shadow(0 -10px 14px #3a1c0a30); }
.card-dio__camaleon { z-index: 3; height: auto; filter: drop-shadow(0 3px 2px #1a2a2e66) drop-shadow(0 12px 14px #1a2a2e44); }
.card-dio--0 .card-dio__camaleon { bottom: 9%; width: 22%; }
.card-dio--1 .card-dio__camaleon { bottom: 8%; width: 30%; }
.card-dio--2 .card-dio__camaleon { bottom: 5%; width: 15%; }
.card-dio--der .card-dio__camaleon { right: 4%; }
.card-dio--izq .card-dio__camaleon { left: 4%; }
/* Las poses miran a un lado; en el lado izquierdo se reflejan para mirar hacia el cartel. */
.card-dio--izq.card-dio--0 .card-dio__camaleon, .card-dio--izq.card-dio--1 .card-dio__camaleon, .card-dio--der.card-dio--2 .card-dio__camaleon { scale: -1 1; }
.card-dio--izq .card-dio__dunas { scale: -1 1; }
/* Al pasar por encima: el cartel se acerca, las dunas bajan y el camaleón se asoma. */
.activity-card:hover .card-dio__cartel, .activity-card:focus-within .card-dio__cartel { scale: 1.05; }
.activity-card:hover .card-dio__dunas, .activity-card:focus-within .card-dio__dunas { translate: 0 5%; }
.activity-card:hover .card-dio__camaleon, .activity-card:focus-within .card-dio__camaleon { translate: 0 -9%; }
@media (prefers-reduced-motion: reduce) { .card-dio > img { transition: none; } .activity-card .card-dio > img { translate: none; scale: none; } }

/* ==========================================================================
   RETRATO TROQUELADO DE INVITADOS: foto real recortada en cartulina dentro de un diorama
   ========================================================================== */
.retrato-dio { position: absolute; inset: 0; overflow: hidden; isolation: isolate; background: var(--rd-fondo, #3f7f86) var(--grain) center / 420px; background-blend-mode: multiply; }
.retrato-dio--1 { --rd-fondo: #2f5f6b; }
.retrato-dio--2 { --rd-fondo: #c9853a; }
.retrato-dio > img { position: absolute; max-width: none; height: auto; pointer-events: none; transition: translate .6s cubic-bezier(.2, .9, .3, 1.15); }
.retrato-dio__sol { width: 42%; top: 7%; right: 6%; }
.retrato-dio--1 .retrato-dio__sol { right: auto; left: 5%; }
.retrato-dio__fondo { width: 120%; left: -10%; bottom: 14%; opacity: .95; filter: drop-shadow(0 -4px 6px #1a2a2e40); }
.retrato-dio--1 .retrato-dio__fondo { scale: -1 1; }
.retrato-dio > .retrato-dio__figura { left: 0; right: 0; margin-inline: auto; bottom: 3%; width: auto; height: 86%; max-width: 92%; object-fit: contain; object-position: 50% 100%; filter: drop-shadow(0 2px 1px #1a2a2e70) drop-shadow(0 14px 16px #1a2a2e50); }
.retrato-dio__frente { width: 116%; left: -8%; bottom: -8%; filter: drop-shadow(0 -3px 3px #3a1c0a55) drop-shadow(0 -10px 14px #3a1c0a30); }
.retrato-dio--2 .retrato-dio__frente { scale: -1 1; }
.guest-card:hover .retrato-dio__figura, .guest-card:focus-within .retrato-dio__figura { translate: 0 -4%; }
.guest-card:hover .retrato-dio__frente, .guest-card:focus-within .retrato-dio__frente { translate: 0 4%; }
@media (prefers-reduced-motion: reduce) { .retrato-dio > img { transition: none; } .guest-card .retrato-dio > img { translate: none; } }

/* ==========================================================================
   PREMIADOS EN LA GALA: pantalla del Maestro Padilla, rótulo, figura y trofeo
   ========================================================================== */
.guest-card--premio .box__window--portrait { aspect-ratio: 1 / 1.05; }
.premio-dio { position: absolute; inset: 0; overflow: hidden; isolation: isolate; container-type: inline-size; background: #0e2a33; }
.premio-dio > img { position: absolute; max-width: none; pointer-events: none; transition: translate .6s cubic-bezier(.2, .9, .3, 1.15), scale .8s ease; }
.premio-dio > .premio-dio__fondo { inset: 0; width: 100%; height: 100%; object-fit: cover; }
.premio-dio__rotulo { position: absolute; z-index: 1; top: 13%; left: 8%; width: 46%; margin: 0; color: #fff3df; font: 800 7.4cqw/1 var(--display); text-transform: uppercase; letter-spacing: .01em; text-shadow: 0 0 14px rgba(120, 190, 255, .45); }
.premio-dio__rotulo span { display: block; margin-bottom: .25em; color: #f39a5c; font-size: .62em; letter-spacing: .08em; }
.premio-dio > .premio-dio__figura { z-index: 2; right: 2%; bottom: 0; width: auto; height: 74%; max-width: 64%; object-fit: contain; object-position: 100% 100%; filter: drop-shadow(0 2px 1px #0a1a1e80) drop-shadow(-6px 14px 18px #0a1a1e90); }
.premio-dio > .premio-dio__trofeo { z-index: 3; left: 3%; bottom: -3%; width: 34%; height: auto; filter: drop-shadow(0 6px 8px #0a1a1eaa); }
.guest-card--premio:hover .premio-dio__figura, .guest-card--premio:focus-within .premio-dio__figura { translate: 0 -3%; }
.guest-card--premio:hover .premio-dio__trofeo, .guest-card--premio:focus-within .premio-dio__trofeo { translate: 0 -6%; }
.guest-card--premio:hover .premio-dio__fondo { scale: 1.04; }
@media (prefers-reduced-motion: reduce) { .premio-dio > img { transition: none; } .guest-card--premio .premio-dio > img { translate: none; scale: none; } }

/* ==========================================================================
   MINI DIORAMA DE SECCIÓN: objeto de papel de cada sección sobre dunas
   ========================================================================== */
.sec-dio { position: absolute; inset: 0; overflow: hidden; isolation: isolate; background: #e9cfa3 var(--grain) center / 420px; background-blend-mode: multiply; }
.sec-dio > img { position: absolute; max-width: none; height: auto; pointer-events: none; transition: translate .6s cubic-bezier(.2, .9, .3, 1.15), scale .8s ease; }
.sec-dio__lamina { position: absolute; z-index: 1; left: 7%; top: 9%; width: 56%; height: 70%; padding: 2.2%; background: #fbf3e4 var(--grain) center / 300px; background-blend-mode: multiply; rotate: -2.5deg; box-shadow: 0 2px 2px #1a2a2e40, 0 14px 18px -6px #1a2a2e55; transition: translate .6s cubic-bezier(.2, .9, .3, 1.15); }
.sec-dio__lamina::before { content: ""; position: absolute; z-index: 1; top: -4%; left: 50%; width: 9%; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #f0b35a, #a4471c); box-shadow: 0 2px 2px #1a2a2e60; translate: -50% 0; }
.sec-dio__lamina img { width: 100%; height: 100%; object-fit: cover; background: #fff; }
.activity-card:nth-child(even) .sec-dio__lamina { rotate: 2deg; }
.sec-dio > .sec-dio__sol { width: 26%; top: 8%; right: 10%; }
.sec-dio > .sec-dio__sierra { width: 120%; left: -10%; bottom: 16%; scale: -1 1; filter: drop-shadow(0 -4px 6px #3a1c0a30); }
.sec-dio > .sec-dio__pieza { width: var(--w); bottom: var(--b); z-index: 2; filter: drop-shadow(0 3px 2px #1a2a2e55) drop-shadow(0 12px 14px #1a2a2e40); }
.sec-dio > .sec-dio__pieza--c { left: 0; right: 0; margin-inline: auto; }
.sec-dio > .sec-dio__pieza--i { left: 7%; }
.sec-dio > .sec-dio__pieza--d { right: 7%; }
.sec-dio > .sec-dio__frente { z-index: 3; width: 110%; left: -5%; bottom: -5%; max-height: 26%; object-fit: cover; object-position: 50% 0; filter: drop-shadow(0 -3px 3px #3a1c0a55) drop-shadow(0 -10px 14px #3a1c0a30); }
/* Con foto: el objeto se aparta a una esquina para no tapar la imagen. */
.sec-dio--foto > .sec-dio__pieza { left: auto; right: 4%; margin: 0; }
.sec-dio--foto > .sec-dio__pieza + .sec-dio__pieza { right: 22%; }
.sec-dio--galas > .sec-dio__pieza[src*="tarima"] { z-index: 4; left: -5%; right: auto; margin: 0; }
.activity-card:hover .sec-dio__lamina, .activity-card:focus-within .sec-dio__lamina { translate: 0 -3%; }
.activity-card:hover .sec-dio__pieza, .hub-card:hover .sec-dio__pieza, .activity-card:focus-within .sec-dio__pieza, .hub-card:focus-within .sec-dio__pieza { translate: 0 -8%; }
.activity-card:hover .sec-dio__frente, .hub-card:hover .sec-dio__frente { translate: 0 6%; }
@media (prefers-reduced-motion: reduce) { .sec-dio > img { transition: none; } .activity-card .sec-dio > img, .hub-card .sec-dio > img { translate: none; scale: none; } }

/* Páginas de texto: columna de lectura ajustada al panel y cronología en línea de tiempo. */
.generic-layout { grid-template-columns: minmax(0, 800px) minmax(220px, 320px); justify-content: space-between; }
.cronologia { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 1.2rem; margin: 1.4rem 0 0; padding: 0; list-style: none; counter-reset: hito; }
.cronologia li { position: relative; display: grid; align-content: start; gap: .4rem; padding-top: 1.3rem; border-top: 3px solid var(--accent); font-size: .95rem; line-height: 1.4; }
.cronologia li::before { content: ""; position: absolute; top: -9px; left: 0; width: 15px; height: 15px; border-radius: 50%; background: var(--paper); border: 3px solid var(--accent); }
.cronologia__anio { font: 800 1.5rem/1 var(--display); color: var(--ink); }

/* Sedes: las principales en tarjeta, el resto en una lista compacta a tres columnas. */
.venue-card h3 { font-size: clamp(1.35rem, 1.7vw, 1.6rem); }
.sedes-resto__titulo { margin: 3rem 0 1rem; font-size: clamp(1.4rem, 2vw, 1.8rem); }
.sedes-resto { columns: 3 260px; column-gap: 2.5rem; margin: 0; padding: 0; list-style: none; }
.sedes-resto li { display: grid; gap: .15rem; break-inside: avoid; padding: .75rem 0; border-top: 1px solid rgba(var(--shadow-rgb), .2); }
.sedes-resto strong { font-weight: 700; color: var(--ink); line-height: 1.25; }
.sedes-resto span { font-size: .9rem; color: var(--muted); }
.card-grid--carteles { align-items: end; row-gap: 2.2rem; }
.header-board--texto-largo.is-mounted .board__flow > p:not(.eyebrow):not(.example-note) { font-size: clamp(.98rem, 1.95cqw, 1.25rem); }
/* Todas las ventanas de tarjeta con la misma proporción, sea cartel, foto o diorama. */
.box__window--dio { aspect-ratio: 4 / 3; min-height: 0; padding: 0; overflow: hidden; background: #d9b98a; }

/* Invitados sin retrato: fichas compactas en rejilla propia. */
.guest-compactas__titulo { margin: 3rem 0 1rem; font-size: clamp(1.35rem, 1.9vw, 1.7rem); }
.guest-compactas { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 1rem 1.5rem; }
.guest-compacta { display: grid; align-content: start; gap: .35rem; padding: 1.1rem 1.2rem 1.2rem; background: var(--paper); border-top: 4px solid var(--accent); box-shadow: 0 2px 2px rgba(var(--shadow-rgb), .12), 0 10px 18px -10px rgba(var(--shadow-rgb), .35); }
.sheet--alt .guest-compacta { background: #fff9ee; }
.guest-compacta h3 { margin: 0; font-size: 1.3rem; }
.guest-compacta .guest-role { margin: 0; }
.guest-compacta .guest-activity-links { margin-top: .35rem; }

/* Jurado: nombre y papel, a lo ancho en columnas. */
.jurados { grid-template-columns: minmax(0, 1fr); }
.jurado__lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 1.1rem 2rem; margin: 0; padding: 0; list-style: none; }
.jurado__lista li { display: grid; gap: .15rem; padding-left: .9rem; border-left: 3px solid var(--accent); }
.jurado__lista strong { font: 700 1.15rem/1.25 var(--display); color: var(--ink); }
.jurado__lista span { font-size: .92rem; color: var(--muted); }

/* Otras secciones: rejilla con el objeto de papel de cada una. */
.otras-secciones { margin-top: 3rem; text-align: left; }
.otras-secciones ul { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: .3rem 1.5rem; justify-content: stretch; }
.otras-secciones a { display: flex; align-items: center; gap: .7rem; min-height: 52px; padding: .3rem .4rem; border-radius: 4px; font-weight: 600; line-height: 1.25; text-decoration: none; }
.otras-secciones a:hover, .otras-secciones a:focus-visible { background: rgba(255, 249, 238, .7); }
.otras-secciones img { flex: none; width: 40px; height: 40px; object-fit: contain; filter: drop-shadow(0 2px 2px rgba(var(--shadow-rgb), .3)); }

/* Almería en Corto: selección oficial, título primero. */
.cortos-lista { columns: 3 250px; column-gap: 2.5rem; margin: 0; padding: 0; list-style: none; }
.cortos-lista li { display: grid; gap: .1rem; break-inside: avoid; padding: .65rem 0; border-bottom: 1px solid rgba(var(--shadow-rgb), .15); }
.cortos-lista strong { font: 700 1.1rem/1.25 var(--display); color: var(--ink); }
.cortos-lista span { font-size: .9rem; color: var(--muted); }
.nominaciones { grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); gap: 1.2rem; }
.nominaciones .prose-panel { padding: 1.4rem 1.5rem; }
.nominaciones h3 { font-size: 1.3rem; }
.nominaciones .lista-simple { font-size: .95rem; }

/* Histórico de premiados: galería densa; sin foto, la corona de laurel de papel. */
.premiados-historico { grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 1.2rem; }
.premiados-historico .box__body { padding: .8rem .9rem 1rem; gap: .2rem; }
.premiados-historico h3 { font-size: 1.1rem; }
.premiados-historico .guest-role { font-size: .85rem; }
.premiado-sin-foto { display: grid; place-items: center; width: 100%; height: 100%; background: #2f5f6b var(--grain) center / 300px; background-blend-mode: multiply; }
.premiado-sin-foto img { width: 72%; height: auto; filter: drop-shadow(0 4px 6px #0a1a1e70); }

/* Agenda de prensa por días. */
.agenda-dias { display: grid; grid-template-columns: repeat(auto-fill, minmax(420px, 1fr)); gap: 1.4rem; align-items: start; }
.agenda-dia { padding: 1.3rem 1.5rem 1.1rem; background: var(--paper); box-shadow: var(--shadow); }
.agenda-dia h3 { margin: 0 0 .6rem; font-size: 1.35rem; }
.agenda-dia ul { margin: 0; padding: 0; list-style: none; }
.agenda-dia li { display: grid; grid-template-columns: 3.2rem 6.6rem minmax(0, 1fr); gap: .8rem; align-items: baseline; padding: .6rem 0; border-top: 1px solid rgba(var(--shadow-rgb), .15); font-size: .95rem; }
.agenda-dia time { font-weight: 700; color: var(--ink); }
.agenda-dia__tipo { justify-self: start; padding: .1rem .45rem; font-size: .72rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; border-radius: 2px; background: #2f5f6b; color: #fff6e6; }
.agenda-dia__tipo--rueda { background: #a4471c; }
.agenda-dia__titulo { display: grid; gap: .1rem; line-height: 1.35; }
@media (max-width: 540px) { .agenda-dias { grid-template-columns: minmax(0, 1fr); } .agenda-dia li { grid-template-columns: 3rem minmax(0, 1fr); } .agenda-dia__tipo { grid-column: 2; } .agenda-dia__titulo { grid-column: 2; } }

/* Variantes del mini diorama para que tarjetas vecinas no se repitan. */
.sec-dio--v1 { background-color: #d9e2d8; }
.sec-dio--v1 > .sec-dio__sol { right: auto; left: 8%; top: 10%; }
.sec-dio--v1 > .sec-dio__sierra { scale: 1 1; }
.sec-dio--v2 { background-color: #f1d9b3; }
.sec-dio--v2 > .sec-dio__sol { width: 20%; top: 14%; right: 30%; }
.sec-dio--v2 > .sec-dio__frente { scale: -1 1; }
.keyart-window--dio { position: relative; aspect-ratio: 3 / 2; overflow: hidden; }

/* Portada en móvil: proyecciones y actividades en carrusel horizontal en lugar de una columna interminable. */
@media (max-width: 760px) {
  .carrusel-movil { display: grid; grid-auto-flow: column; grid-auto-columns: 84%; grid-template-columns: none; gap: 1rem;
    overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; margin-inline: calc(var(--gutter) * -1); padding: .5rem var(--gutter) 1.6rem; scroll-padding-inline: var(--gutter); }
  .carrusel-movil > * { scroll-snap-align: start; }
  .carrusel-movil:focus-visible { outline: 3px solid var(--accent); outline-offset: -3px; }
}
/* En móvil, si el texto no cabe en la pieza de la cabecera, la pieza vacía no se muestra. */
@media (max-width: 760px) { .header-board:not(.is-mounted) .board__image { display: none; } }
/* La cámara y la bobina del hero viven dentro del troquel SVG. */
.hero--xxv .scene__camera, .hero--xxv .scene__reel { display: none; }
.hero__prop { filter: drop-shadow(0 6px 6px rgba(20, 30, 32, .35)); }
/* Modo oscuro: los iconos de papel (tinta petróleo) se asientan sobre una ficha de cartulina para no perderse. */
:root[data-theme="oscuro"] .paper-icon { padding: 3px; border-radius: 50%; background: #f4e6cc; }
@media (prefers-color-scheme: dark) { :root[data-theme="sistema"] .paper-icon { padding: 3px; border-radius: 50%; background: #f4e6cc; } }

/* Tarjetas de obra y actividad: toda la tarjeta lleva a la ficha (el título es el enlace real);
   los enlaces secundarios (invitados, tráiler) quedan por encima y siguen siendo pulsables. */
.activity-card { position: relative; cursor: pointer; }
.activity-card h3 a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.activity-card .guest-chips a, .activity-card .activity-card__bottom a { position: relative; z-index: 2; }
.activity-card h3 a:focus-visible { outline: none; }
.activity-card:has(h3 a:focus-visible) { outline: 3px solid var(--focus); outline-offset: 5px; }
.activity-card:hover h3 a { text-decoration-thickness: 3px; }
.activity-card > .box__body { position: static; }

/* ==========================================================================
   ESCENAS DE SEDES REALES: lienzo 2,4:1 que cubre el bloque; piezas en % del lienzo
   ========================================================================== */
.escena--sede .escena__fondo { container-type: size; background: #1c3a41; }
.sede-lienzo { position: absolute; top: 50%; left: var(--centro, 50%); width: max(118cqw, 250cqh); aspect-ratio: 2304 / 960; translate: -50% -50%; }
.sede-lienzo > img { position: absolute; max-width: none; pointer-events: none; transition: translate 1.2s var(--ease), opacity .8s ease; }
.sede-lienzo__fondo { inset: 0; width: 100%; height: 100%; }
.sede-lienzo__pieza { height: auto; }
.sede-lienzo__pieza--figuras { filter: drop-shadow(2px 4px 3px rgba(20, 20, 20, .35)) drop-shadow(8px 16px 14px rgba(20, 20, 20, .3)); transition-delay: .2s; }
.sede-lienzo__pieza--frente { filter: drop-shadow(0 -4px 6px rgba(10, 16, 18, .35)) drop-shadow(0 -14px 22px rgba(10, 16, 18, .3)); transition-delay: .35s; }
.can-reveal .escena--sede:not(.is-revealed) .sede-lienzo__pieza--figuras { opacity: 0; translate: 0 40px; }
.can-reveal .escena--sede:not(.is-revealed) .sede-lienzo__pieza--frente { opacity: 0; translate: 0 70px; }
@media (max-width: 760px) { .sede-lienzo { width: max(100cqw, 240cqh); left: 50%; } }
.escena--sede { min-height: clamp(500px, 38vw, 760px); }
.sede-lienzo { width: max(104cqw, 240cqh); }
.premio-dio > .premio-dio__figura--gala { height: 82%; right: 4%; }
/* Retratos de primer plano (sin foto de gala): más pequeños para mantener la escala de la escena. */
.premio-dio > .premio-dio__figura:not(.premio-dio__figura--gala) { height: 60%; right: 6%; }

/* ==========================================================================
   CABECERA DE SECCIÓN: misma altura en todas; hoja rasgada + objeto de la sección
   ========================================================================== */
.sec-hero {
  --ink: #103c46; --muted: #5d4c38; --accent: #923713; --accent-ink: #fff8ed; --paper: #fff6e6; --focus: #87320f; --shadow-rgb: 43, 27, 12;
  position: relative; isolation: isolate; display: flex; align-items: center;
  min-height: clamp(440px, 36vw, 600px); padding-block: 3.2rem 4rem; overflow: hidden; color: var(--ink); background: #e4d0b1;
}
.sec-hero__fondo { position: absolute; z-index: 0; inset: 0; pointer-events: none; container-type: size; }
.sec-hero__fondo > img { position: absolute; max-width: none; height: auto; }
.sec-hero__fondo > .sec-hero__cielo { inset: 0; width: 100%; height: 100%; object-fit: cover; }
.sec-hero__sol { width: 10%; top: 9%; right: 7%; filter: drop-shadow(0 3px 2px #38220f30) drop-shadow(0 12px 10px #38220f30); }
.sec-hero__nubes { width: 21%; top: 12%; right: 19%; filter: drop-shadow(0 3px 2px #38220f30); }
.sec-hero__sierra { width: 104%; left: -2%; bottom: -34%; filter: drop-shadow(0 -3px 4px #38220f30); }
.sec-hero__dunas { width: 104%; left: -2%; bottom: -52%; filter: drop-shadow(0 -4px 6px #38220f40); }
.sec-hero__plantas { width: 108%; left: -4%; bottom: -46%; filter: drop-shadow(0 6px 8px #38220f40); }
/* Caja de los objetos: mitad derecha, sobre las dunas. */
.sec-hero__objetos { position: absolute; right: 5%; bottom: 8%; width: 44%; height: 78%; }
.sec-hero__pieza { position: absolute; width: var(--w); height: auto; bottom: var(--b); max-width: none; filter: drop-shadow(0 4px 3px #1a2a2e55) drop-shadow(0 18px 18px #1a2a2e45); }
.sec-hero__pieza--c { left: 0; right: 0; margin-inline: auto; }
.sec-hero__pieza--i { left: 6%; }
.sec-hero__pieza--d { right: 6%; }
.sec-hero__pieza[src*="tarima"] { left: -30%; width: 160% !important; }
.sec-hero__layout { position: relative; z-index: 2; }
.sec-hero__hoja { width: min(46%, 580px); padding: clamp(1.8rem, 3vw, 2.8rem) clamp(1.6rem, 3vw, 2.8rem); }
.sec-hero__hoja h1 { margin-block: .5rem .9rem; font-size: clamp(2.3rem, 3.6vw, 3.9rem); line-height: .98; }
.sec-hero__hoja > p:not(.eyebrow) { max-width: 44ch; font-size: 1.05rem; }
.sec-hero__hoja .button { margin-top: 1.2rem; }
.sec-hero--sede .sec-hero__fondo { background: #1c3a41; }
.can-reveal .sec-hero:not(.is-revealed) .sec-hero__pieza { opacity: 0; translate: 0 40px; }
.sec-hero__pieza { transition: translate 1s var(--ease), opacity .7s ease; }
@media (max-width: 900px) {
  .sec-hero { min-height: 0; flex-direction: column; align-items: stretch; padding-block: 0 2rem; }
  .sec-hero__fondo { position: relative; height: 58vw; }
  .sec-hero__objetos { right: 0; left: 0; margin-inline: auto; width: 70%; }
  .sec-hero__layout { margin-top: -3rem; }
  .sec-hero__hoja { width: 100%; }
}
.sec-hero__objetos { right: 3%; bottom: 4%; width: 50%; height: 84%; }
.sec-hero__sol { right: 5%; top: 7%; width: 11%; }
.sec-hero__nubes { right: 26%; top: 8%; }
.sec-hero__dunas { bottom: -44%; }
.sec-hero__frente { z-index: 3; right: -4%; bottom: -3%; width: 64%; filter: drop-shadow(0 -4px 5px #3a1c0a55) drop-shadow(0 -12px 16px #3a1c0a35); }
.sec-hero__objetos { bottom: 9%; }
.sec-hero .sede-lienzo { width: max(112cqw, 250cqh); }
@media (max-width: 900px) { .sec-hero__frente { width: 110%; right: -5%; } }
.sec-hero__fondo > .sec-hero__frente { left: -2%; right: auto; width: 104%; height: 30%; bottom: -2%; object-fit: cover; object-position: 50% 0; }
@media (max-width: 900px) { .sec-hero__fondo > .sec-hero__frente { height: 26%; } }
@media (max-width: 900px) {
  .sec-hero__fondo { height: 74vw; }
  .sec-hero__objetos { width: 88%; height: 80%; bottom: 16%; }
  .sec-hero__sol { width: 14%; }
  .sec-hero__nubes { width: 30%; right: 30%; }
  .sec-hero__layout { margin-top: -2.2rem; }
}
/* Logos institucionales en blanco sobre el pie, como la banda de patrocinadores. */
.footer-logos { gap: 1.5rem 4rem; }
/* El lienzo de la sede siempre cubre el bloque, esté donde esté su centro. */
.sede-lienzo, .sec-hero .sede-lienzo { width: max(calc(var(--cubre, 104) * 1cqw), 250cqh); }
@media (max-width: 760px) { .sede-lienzo { left: 50%; width: max(104cqw, 240cqh); } }

/* Blog */
.blog-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem; }
.blog-card--destacada { grid-column: span 2; grid-row: span 2; }
.blog-card--destacada .box__window--dio { aspect-ratio: 16 / 10; }
.blog-card--destacada h3 { font-size: clamp(1.8rem, 2.6vw, 2.6rem); }
.blog-card__mas { margin-top: auto !important; font-weight: 700; color: var(--accent); }
@media (max-width: 900px) { .blog-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .blog-grid { grid-template-columns: minmax(0, 1fr); } .blog-card--destacada { grid-column: auto; grid-row: auto; } }

/* Streaming: pantalla en directo y parrilla */
.streaming-layout { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: clamp(2rem, 4vw, 4rem); align-items: start; }
.streaming-pantalla { padding: 14px; background: #103c46; border-radius: 6px; box-shadow: var(--shadow); }
.streaming-pantalla__marco { position: relative; display: grid; align-content: end; gap: .5rem; aspect-ratio: 16 / 9; padding: clamp(1.4rem, 3vw, 2.6rem); color: #fff3df;
  background: radial-gradient(ellipse at 70% 30%, #2f6b78, #0c2a31 75%); border-radius: 3px; }
.streaming-pantalla__marco .eyebrow { color: #f3b27a; }
.streaming-pantalla__marco h2 { margin: 0; color: #fff3df; font-size: clamp(1.8rem, 3vw, 3rem); }
.streaming-pantalla__marco p { margin: 0; }
.streaming-pantalla__marco .small { color: #cfdcd9; }
.streaming-pantalla__piloto { position: absolute; top: 1.2rem; left: 1.2rem; display: inline-flex; align-items: center; gap: .5rem; padding: .25rem .6rem; background: #0006; border-radius: 3px; font-weight: 700; font-size: .8rem; letter-spacing: .1em; text-transform: uppercase; }
.streaming-pantalla__piloto::before { content: ""; width: .6rem; height: .6rem; border-radius: 50%; background: #e2453b; box-shadow: 0 0 0 3px #e2453b44; }
.streaming-parrilla h2 { margin: .4rem 0 1rem; font-size: clamp(1.6rem, 2.2vw, 2.2rem); }
.streaming-parrilla ol { margin: 0; padding: 0; list-style: none; }
.streaming-parrilla li { display: grid; grid-template-columns: 7.5rem minmax(0, 1fr); gap: 1rem; padding: .8rem 0; border-top: 1px solid rgba(var(--shadow-rgb), .18); }
.streaming-parrilla time strong { display: block; color: var(--ink); }
.streaming-parrilla a { font-weight: 700; }
@media (max-width: 900px) { .streaming-layout { grid-template-columns: minmax(0, 1fr); } }

/* Desplegable sencillo (Actualidad): panel pequeño bajo su enlace. */
.nav-drop--simple { position: relative; }
.nav-drop--simple .nav-drop__panel { left: auto; right: -1rem; top: calc(100% + 1.2rem); width: 320px; padding: .7rem; border-radius: 4px; border-top: 3px solid var(--accent); }
.site-nav .nav-drop--simple .nav-drop__panel li a { gap: .8rem; min-height: 60px; }
.nav-drop--simple .nav-drop__panel small { display: block; margin-top: .15rem; font-weight: 500; font-size: .82rem; color: var(--muted); }
@media (max-width: 760px) { .nav-drop--simple .nav-drop__panel { width: 100%; right: auto; border-top: 0; padding: .4rem 0; } }

/* Descarga del programa de mano: folleto de papel con páginas asomando. */
.programa-mano__layout { display: grid; grid-template-columns: minmax(220px, 360px) minmax(0, 1fr); gap: clamp(2.5rem, 7vw, 7rem); align-items: center; }
.programa-mano__folleto { position: relative; display: block; width: 100%; aspect-ratio: 425 / 600; rotate: -4deg; transition: rotate .4s var(--ease), translate .4s var(--ease); }
.programa-mano__folleto img { position: relative; z-index: 2; width: 100%; height: 100%; object-fit: cover; box-shadow: 0 2px 2px rgba(var(--shadow-rgb), .2), 0 22px 30px -12px rgba(var(--shadow-rgb), .5); }
.programa-mano__hoja { position: absolute; inset: 0; background: #fbf3e4; box-shadow: 0 10px 18px -8px rgba(var(--shadow-rgb), .4); }
.programa-mano__hoja--2 { z-index: 1; rotate: 5deg; translate: 14px 6px; }
.programa-mano__hoja--3 { z-index: 0; rotate: 9deg; translate: 28px 14px; background: #efe0c4; }
.programa-mano__faja { position: absolute; z-index: 3; left: -6%; right: -6%; bottom: 9%; padding: .7rem 1rem; background: #103c46; color: #fff3df; font: 800 clamp(1.3rem, 2vw, 1.7rem)/1 var(--display); text-align: center; text-transform: uppercase; letter-spacing: .02em; box-shadow: 0 6px 10px rgba(var(--shadow-rgb), .35); }
.programa-mano:hover .programa-mano__folleto { rotate: -1deg; translate: 0 -6px; }
.programa-mano__texto h2 { margin-block: .6rem 1.1rem; font-size: clamp(2.4rem, 4.2vw, 4.4rem); line-height: .98; }
.programa-mano__texto > p:not(.eyebrow) { max-width: 52ch; font-size: 1.1rem; }
.programa-mano__texto .button-row { margin-top: 1.6rem; }
.programa-mano__meta { margin-top: 1rem; }
@media (max-width: 760px) { .programa-mano__layout { grid-template-columns: minmax(0, 1fr); } .programa-mano__folleto { width: 62%; margin-inline: auto; } }
@media (prefers-reduced-motion: reduce) { .programa-mano__folleto { transition: none; } }

/* El Festival: texto editorial y cifras como entradas de cine troqueladas. */
.edicion { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: clamp(2.5rem, 6vw, 6rem); align-items: center; }
.edicion__texto h2 { margin-block: .7rem 1.4rem; font-size: clamp(2.6rem, 4.6vw, 4.8rem); line-height: .96; }
.edicion__entrada { font-size: clamp(1.15rem, 1.5vw, 1.35rem); line-height: 1.5; max-width: 46ch; }
.edicion__columnas { display: grid; grid-template-columns: 1fr 1fr; gap: 1.8rem; margin-top: 1.6rem; padding-top: 1.4rem; border-top: 3px solid var(--accent); }
.edicion__columnas p { margin: 0; }
.entradas-cifras { display: grid; grid-template-columns: 1fr 1fr; gap: 1.3rem 1.1rem; margin: 0; padding: 0; list-style: none; }
.entrada-cifra { position: relative; display: grid; align-content: start; gap: .2rem; padding: 1.3rem 1.3rem 1rem 1.5rem; color: #fff3df; background: #103c46;
  /* muescas laterales de la entrada */
  -webkit-mask: radial-gradient(circle 11px at 0 58%, #0000 98%, #000) , radial-gradient(circle 11px at 100% 58%, #0000 98%, #000);
  -webkit-mask-composite: source-in; mask-composite: intersect;
  box-shadow: 0 10px 18px -8px rgba(var(--shadow-rgb), .5); filter: drop-shadow(0 6px 8px rgba(var(--shadow-rgb), .25)); rotate: -1.5deg; }
.entrada-cifra:nth-child(2) { background: #a4471c; rotate: 1.8deg; translate: 0 10px; }
.entrada-cifra:nth-child(3) { background: #d8792c; color: #1a2a2e; rotate: .8deg; }
.entrada-cifra:nth-child(4) { background: #3f7f86; rotate: -1deg; translate: 0 10px; }
.entrada-cifra strong { font: 800 clamp(3rem, 4.8vw, 4.4rem)/.9 var(--display); }
.entrada-cifra span { font-weight: 700; line-height: 1.25; }
.entrada-cifra small { margin-top: .9rem; padding-top: .6rem; border-top: 2px dashed currentColor; font-size: .7rem; letter-spacing: .14em; opacity: .75; }
@media (max-width: 900px) { .edicion { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 540px) { .edicion__columnas { grid-template-columns: minmax(0, 1fr); } }

/* Reproductor de emisiones (YouTube) */
.reproductor { display: grid; gap: .7rem; }
.reproductor__pantalla { position: relative; aspect-ratio: 16 / 9; overflow: hidden; border: 12px solid #103c46; border-radius: 6px; color: #fff3df;
  background: radial-gradient(ellipse at 70% 30%, #2f6b78, #0c2a31 75%); box-shadow: var(--shadow); }
.reproductor__pantalla iframe { position: absolute; inset: 0; z-index: 3; width: 100%; height: 100%; border: 0; }
.reproductor__piloto { position: absolute; top: 1rem; left: 1rem; display: inline-flex; align-items: center; gap: .5rem; padding: .25rem .6rem; background: #0006; border-radius: 3px; font-weight: 700; font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; }
.reproductor__piloto::before { content: ""; width: .6rem; height: .6rem; border-radius: 50%; background: #e2453b; box-shadow: 0 0 0 3px #e2453b44; }
.reproductor__info { position: absolute; left: clamp(1rem, 3vw, 2rem); right: 30%; bottom: clamp(1rem, 3vw, 1.8rem); }
.reproductor__info .eyebrow { color: #f3b27a; margin: 0 0 .3rem; }
.reproductor__titulo { margin: 0; font: 800 clamp(1.5rem, 2.8vw, 2.6rem)/1 var(--display); }
.reproductor__play { position: absolute; right: clamp(1rem, 4vw, 2.5rem); bottom: clamp(1rem, 4vw, 2rem); display: grid; place-items: center; width: clamp(64px, 8vw, 92px); aspect-ratio: 1; border: 0; border-radius: 50%; background: #d8792c; color: #fff; font-size: clamp(1.6rem, 2.6vw, 2.2rem); cursor: pointer; box-shadow: 0 8px 18px #0008; transition: scale .2s ease; }
.reproductor__play:hover { scale: 1.08; }
.reproductor__play:focus-visible { outline: 3px solid #fff; outline-offset: 4px; }
.reproductor__aviso { margin: 0; }
.parrilla-item { display: grid; grid-template-columns: 6.5rem minmax(0, 1fr); gap: 1rem; width: 100%; padding: .75rem .6rem; border: 0; border-top: 1px solid rgba(var(--shadow-rgb), .18); background: none; color: var(--ink); font: inherit; text-align: left; cursor: pointer; }
.parrilla-item:hover { background: rgba(var(--shadow-rgb), .06); }
.parrilla-item[aria-current] { background: var(--paper-alt); box-shadow: inset 4px 0 0 var(--accent); }
.parrilla-item span { font-weight: 700; line-height: 1.3; }
.parrilla-item__sec { display: block; margin-bottom: .15rem; color: var(--accent); font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; }
.streaming-parrilla ol { max-height: 560px; overflow-y: auto; }
.streaming-parrilla li { display: block; padding: 0; border: 0; }

/* Franja de taquilla */
.taquilla-franja { position: relative; padding-block: clamp(2.4rem, 4vw, 3.4rem); color: #fff3df; background: #103c46; }
.taquilla-franja::before { content: ""; position: absolute; inset: 0 0 auto; height: 10px; background: radial-gradient(circle 6px at 12px 0, var(--paper) 98%, transparent) 0 0 / 24px 10px repeat-x; }
.taquilla-franja__layout { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: clamp(1.5rem, 4vw, 3.5rem); align-items: center; }
.taquilla-franja__objeto { width: clamp(110px, 12vw, 170px); height: auto; margin-block: -1rem -2.2rem; filter: drop-shadow(0 10px 14px #0008); }
.taquilla-franja .eyebrow { color: #f3b27a; }
.taquilla-franja h2 { margin: .4rem 0 .6rem; color: #fff3df; font-size: clamp(2rem, 3.2vw, 3rem); }
.taquilla-franja__texto p:last-child { margin: 0; max-width: 52ch; color: #d9e3e0; }
.taquilla-franja__acciones { display: grid; gap: .7rem; margin: 0; padding: 0; list-style: none; }
.taquilla-franja__enlace { display: grid; min-height: 44px; padding: .5rem 0 .5rem 1rem; border-left: 3px solid #d8792c; color: #fff3df; font-weight: 700; text-decoration: none; }
.taquilla-franja__enlace:hover { text-decoration: underline; }
.taquilla-franja__enlace small { font-weight: 500; color: #b9cbc7; }
@media (max-width: 900px) { .taquilla-franja__layout { grid-template-columns: auto minmax(0, 1fr); } .taquilla-franja__acciones { grid-column: 1 / -1; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); } .taquilla-franja__objeto { margin-block: 0; } }
@media (max-width: 540px) { .taquilla-franja__layout { grid-template-columns: minmax(0, 1fr); } .taquilla-franja__objeto { width: 110px; } }
/* Pie: nota legal y selector de tema en la misma línea. */
.footer-bottom { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; }
.footer-bottom .footer-note { margin: 0; }
.theme-toggle--pie { color: #fff3df; border-color: #ffffff55; background: transparent; }
.reproductor__pantalla { background: linear-gradient(180deg, #0c2a3140 0%, #0c2a31e6 78%), var(--fondo, none) center / cover, #0c2a31; }
.taquilla-franja { background: #8f3a16; }
.taquilla-franja::before { background-image: radial-gradient(circle 6px at 12px 0, var(--franja-arriba, var(--paper)) 98%, transparent); }
.sheet--alt + .taquilla-franja { --franja-arriba: #dfc9a5; }
.taquilla-franja .eyebrow { color: #ffd29c; }
.taquilla-franja__texto p:last-child { color: #f6e2cc; }
.taquilla-franja__enlace { border-left-color: #ffd29c; }
.taquilla-franja__enlace small { color: #f0d2b6; }
.reproductor__pantalla { background: #0c2a31; }
.reproductor__fondo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.reproductor__pantalla::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, #0c2a3130 0%, #0c2a31f0 82%); }
.reproductor__piloto, .reproductor__info, .reproductor__play { z-index: 2; }

/* ==========================================================================
   CABECERA DE FICHA: sede real o paisaje por capas; cartel en atril o lámina clavada
   ========================================================================== */
.ficha-hero {
  --ink: #103c46; --muted: #5d4c38; --accent: #923713; --accent-ink: #fff8ed; --paper: #fff6e6; --focus: #87320f; --shadow-rgb: 43, 27, 12;
  position: relative; isolation: isolate; display: flex; align-items: center;
  min-height: clamp(520px, 40vw, 680px); padding-block: 3rem 4rem; overflow: hidden; color: var(--ink); background: #e4d0b1;
}
.ficha-hero--sede .sec-hero__fondo { background: #1c3a41; }
.ficha-hero__layout { position: relative; z-index: 2; display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: clamp(2rem, 5vw, 5rem); align-items: center; }
.ficha-hero__layout--solo { grid-template-columns: minmax(0, 1fr); }
.ficha-hero__layout--solo .ficha-hero__hoja { width: min(100%, 640px); }
.ficha-hero__arte { display: grid; place-items: center; }
.ficha-hero__arte--cartel .poster-stand { width: min(100%, 330px); }
.ficha-hero__hoja { width: 100%; padding: clamp(1.8rem, 3vw, 2.8rem); }
.ficha-hero__hoja h1 { margin-block: .4rem .9rem; font-size: clamp(2.3rem, 4vw, 4.2rem); line-height: .98; }
.ficha-hero__hoja > * + * { margin-top: .6rem; }
.ficha-hero__lamina { position: relative; inset: auto; display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; padding: 3%; }
.ficha-hero__lamina img { width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 900px) {
  .ficha-hero { flex-direction: column; align-items: stretch; min-height: 0; padding-block: 2rem 2.5rem; }
  .ficha-hero__layout { grid-template-columns: minmax(0, 1fr); gap: 1.5rem; }
  .ficha-hero__arte--cartel .poster-stand { width: min(62%, 260px); }
}
.ficha-hero__lamina img { object-fit: contain; background: #fbf3e4; }
.ficha-hero__arte--cartel .poster-stand { width: min(100%, 300px); }
.ficha-hero__layout--solo { justify-items: end; }
/* La lámina toma la proporción de la foto (horizontal o vertical). */
.ficha-hero__lamina { aspect-ratio: auto; width: auto; max-width: 100%; }
.ficha-hero__lamina img { width: auto; height: auto; max-width: 100%; max-height: min(52vh, 420px); background: none; }

/* Historia */
.historia-apertura { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: clamp(2rem, 6vw, 6rem); align-items: center; }
.historia-apertura h2 { margin-block: .6rem 1.2rem; font-size: clamp(2.6rem, 4.6vw, 4.8rem); line-height: .96; }
.historia-apertura__entrada { font-size: clamp(1.15rem, 1.5vw, 1.35rem); line-height: 1.55; }
.historia-apertura__entrada::first-letter { float: left; margin: .05em .12em 0 0; font: 800 4.4em/.8 var(--display); color: var(--accent); }
.historia-carteles { position: relative; height: clamp(360px, 34vw, 470px); }
.historia-carteles figure { position: absolute; margin: 0; width: 54%; }
.historia-carteles img { display: block; width: 100%; height: auto; box-shadow: 0 2px 2px rgba(var(--shadow-rgb), .2), 0 22px 30px -12px rgba(var(--shadow-rgb), .5); }
.historia-carteles figcaption { margin-top: .5rem; font: 800 1.6rem/1 var(--display); color: var(--accent); }
.historia-carteles__uno { left: 0; top: 0; rotate: -5deg; }
.historia-carteles__dos { right: 0; top: 8%; rotate: 4deg; }
.historia-cuerpo { columns: 2 340px; column-gap: 3.5rem; margin-top: clamp(2.5rem, 5vw, 4rem); padding-top: 2rem; border-top: 3px solid var(--accent); }
.historia-cuerpo p { margin: 0 0 1rem; break-inside: avoid; line-height: 1.65; }
.linea-tiempo { position: relative; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 1.4rem; margin: 0; padding: 2.4rem 0 0; list-style: none; }
.linea-tiempo::before { content: ""; position: absolute; top: .9rem; left: 0; right: 0; height: 14px; background: #103c46;
  -webkit-mask: radial-gradient(circle 3px at 8px 7px, #0000 97%, #000) 0 0 / 16px 14px repeat-x; mask: radial-gradient(circle 3px at 8px 7px, #0000 97%, #000) 0 0 / 16px 14px repeat-x; }
.linea-tiempo__hito { display: grid; align-content: start; gap: .7rem; }
.linea-tiempo__anio { font: 800 clamp(1.5rem, 2.2vw, 2.1rem)/1 var(--display); color: var(--ink); }
.linea-tiempo__hito img { width: 100%; height: auto; aspect-ratio: 3 / 4; object-fit: cover; object-position: top; box-shadow: var(--shadow); }
.linea-tiempo__hito p { margin: 0; font-weight: 600; line-height: 1.35; }
.historia-sigue { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; }
.historia-sigue__tarjeta { display: flex; align-items: center; gap: 1.4rem; padding: 1.3rem 1.6rem; background: var(--paper); box-shadow: var(--shadow); color: var(--ink); text-decoration: none; }
.historia-sigue__tarjeta img { width: 110px; height: 110px; object-fit: contain; }
.historia-sigue__tarjeta span { display: grid; gap: .3rem; font: 800 clamp(1.4rem, 2vw, 1.9rem)/1.05 var(--display); }
.historia-sigue__tarjeta small { font: 700 .78rem/1 var(--font); letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.historia-sigue__tarjeta:hover span { text-decoration: underline; }
@media (max-width: 900px) { .historia-apertura { grid-template-columns: minmax(0, 1fr); } .linea-tiempo { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); } .linea-tiempo::before { display: none; } .historia-sigue { grid-template-columns: minmax(0, 1fr); } }

/* Organización */
.organiza { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: clamp(2rem, 6vw, 5rem); align-items: center; }
.organiza__edificio { width: 100%; height: auto; filter: drop-shadow(0 18px 20px rgba(var(--shadow-rgb), .35)); }
.organiza__texto h2 { margin-block: .5rem 1.1rem; font-size: clamp(2.4rem, 4vw, 4rem); }
.organiza__texto p:not(.eyebrow) { max-width: 56ch; font-size: 1.08rem; }
.instituciones { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; margin-top: clamp(2.5rem, 5vw, 4rem); }
.instituciones__grupo { padding: 1.4rem 1.6rem; background: #fff; box-shadow: var(--shadow); }
.instituciones__grupo .eyebrow { color: #51564b; }
.instituciones__grupo ul { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-around; gap: 1.5rem 2.5rem; margin: 1rem 0 0; padding: 0; list-style: none; }
.instituciones__grupo img { width: auto; height: 84px; }
.colaboradores-banda { padding-block: clamp(3rem, 6vw, 5rem); background: #103c46; color: #fff3df; text-align: center; }
.colaboradores-banda .eyebrow { color: #ffd29c; }
.colaboradores-banda h2 { margin: .5rem 0 .8rem; color: #fff3df; font-size: clamp(2rem, 3.4vw, 3.2rem); }
.colaboradores-banda p:not(.eyebrow) { max-width: 60ch; margin: 0 auto 2.5rem; color: #cfdcd9; }
.colaboradores-banda img { width: min(100%, 1000px); height: auto; }
@media (max-width: 900px) { .organiza, .instituciones { grid-template-columns: minmax(0, 1fr); } .organiza__edificio { max-width: 420px; margin-inline: auto; } }
/* Horizonte de Almería en las cabeceras: el monumento queda a la derecha, tras el objeto. */
.sec-hero__fondo > .sec-hero__horizonte { z-index: 1; left: -2%; bottom: 13%; width: 104%; height: auto; filter: drop-shadow(0 -3px 5px #38220f30); }
.sec-hero__fondo:has(.sec-hero__horizonte) > .sec-hero__dunas { bottom: -58%; }
.sec-hero__fondo:has(.sec-hero__horizonte) .sec-hero__objetos { right: 1%; width: 40%; height: 70%; bottom: 7%; }
.sec-hero__fondo:has(.sec-hero__horizonte) .sec-hero__objetos .sec-hero__pieza { max-width: 70%; }
.sec-hero__fondo:has(.sec-hero__horizonte) > .sec-hero__sol { right: 3%; top: 4%; width: 8%; }
@media (max-width: 900px) { .sec-hero__fondo > .sec-hero__horizonte { bottom: 18%; width: 150%; left: -46%; } }
.sec-hero__objetos { z-index: 2; }
.sec-hero__fondo:has(.sec-hero__horizonte) .sec-hero__objetos { left: 40%; right: auto; width: 30%; height: 62%; bottom: 5%; }
.sec-hero__fondo:has(.sec-hero__horizonte) .sec-hero__objetos .sec-hero__pieza { max-width: 100%; }
@media (max-width: 900px) { .sec-hero__fondo:has(.sec-hero__horizonte) .sec-hero__objetos { left: 8%; width: 56%; } }
.sec-hero__fondo:has(.sec-hero__horizonte) .sec-hero__objetos { left: 49%; width: 27%; }
@media (max-width: 900px) { .sec-hero__fondo:has(.sec-hero__horizonte) .sec-hero__objetos { left: 6%; width: 56%; } }
/* Cabecera con la acción a la izquierda (Tabernas): hoja a la derecha y bloque más alto, como en El Festival. */
.sec-hero--texto-derecha { min-height: clamp(560px, 42vw, 800px); }
.sec-hero--texto-derecha .sec-hero__layout { display: flex; justify-content: flex-end; }
@media (max-width: 900px) { .sec-hero--texto-derecha .sec-hero__layout { display: block; } }

/* === Contraste (revisión WCAG AA) === */
/* Escenas de cabecera y bloques escénicos: siempre papel claro, también sus etiquetas. */
.sec-hero, .ficha-hero, .escena { --paper-alt: #dfc9a5; }
/* Cifras del festival: el teal claro no llegaba a 4,5:1 con texto crema. */
.entrada-cifra:nth-child(4) { background: #2f5f6b; }
/* Fichas compactas de invitados: el fondo sigue al tema (antes era crema fijo en modo oscuro). */
.sheet--alt .guest-compacta { background: var(--paper); }

/* Móvil: las escenas de sede se ven más altas y centradas en la acción; la hoja solo pisa el borde. */
@media (max-width: 900px) {
  .escena--sede { --alto: max(66vw, min(92vw, 420px)); padding: calc(var(--alto) - 1.5rem) 0 2.5rem; }
  .escena--sede .escena__fondo { height: var(--alto); }
  .escena--sede .sede-lienzo { left: 50%; width: max(104cqw, 240cqh); }
}
/* Ficha: la foto de la actividad se ve entera (sin recortar logos ni rótulos). */
.keyart-window .activity-keyart__image { object-fit: contain; background: #fbf3e4; }
/* El telón de papel (imagen) ya enmarca la escena; la franja plana de degradado sobraba en pantallas anchas. */
.scene__curtain { display: none; }
/* Noticias: la entrada destacada ocupa dos columnas en horizontal, sin hueco vacío. */
.blog-card--destacada { grid-row: auto; display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); }
.blog-card--destacada .box__window--dio { aspect-ratio: auto; height: 100%; min-height: 320px; }
.blog-card--destacada .box__body { justify-content: center; }
@media (max-width: 900px) { .blog-card--destacada { grid-template-columns: minmax(0, 1fr); } .blog-card--destacada .box__window--dio { aspect-ratio: 4 / 3; min-height: 0; } }
.blog-card--destacada { grid-column: 1 / -1; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); }
.blog-card--destacada .box__window--dio { min-height: 360px; }
.blog-card--destacada .box__body { padding: clamp(1.6rem, 3vw, 3rem); }
.blog-card--destacada .blog-card__mas { margin-top: 1rem !important; }

/* ==========================================================================
   MENÚ MÓVIL: panel a pantalla completa, lista editorial con desplegables
   ========================================================================== */
@media (max-width: 760px) {
  .site-nav { position: fixed; z-index: 90; inset: var(--header-height, 84px) 0 0; order: 4; width: auto; margin: 0; padding: .5rem 1.25rem 2rem;
    overflow-y: auto; overscroll-behavior: contain; background: var(--paper); border-top: 3px solid var(--accent); box-shadow: 0 20px 40px -10px rgba(var(--shadow-rgb), .4); }
  .site-nav > ul { display: block; }
  .site-nav > ul > li { border-bottom: 1px solid rgba(var(--shadow-rgb), .16); }
  .site-nav > ul > li > a, .site-nav .nav-drop > a { display: flex; align-items: center; min-height: 58px; padding: .4rem 0; background: none;
    font: 700 1.6rem/1.1 var(--display); color: var(--ink); text-decoration: none; }
  .site-nav > ul > li > a[aria-current], .site-nav .nav-drop > a[aria-current] { color: var(--accent); }
  .nav-drop { display: flex; flex-wrap: wrap; align-items: center; }
  .nav-drop > a { flex: 1; }
  .nav-drop__toggle { width: 48px; min-height: 48px; background: none; border-radius: 50%; }
  .nav-drop__toggle::before { width: .6rem; height: .6rem; border-width: 0 2.5px 2.5px 0; }
  .nav-drop__panel { flex-basis: 100%; padding: 0 0 1rem; background: none; }
  .site-nav .nav-drop__panel li a { min-height: 48px; padding: .25rem 0; font-size: 1rem; }
  .nav-drop__panel li img { width: 36px; height: 36px; }
  .nav-drop__titulo { margin: .8rem 0 .2rem; }
  .nav-drop__grupos { gap: .2rem; }
  .nav-drop__pie { margin-top: .6rem; }
  .site-nav .site-nav__cta { border-bottom: 0; margin-top: 1.5rem; }
  .site-nav .site-nav__cta .button { display: flex; justify-content: center; width: 100%; min-height: 56px; background: var(--accent); color: var(--accent-ink); font-size: 1.1rem; }
  .nav-toggle { min-width: 104px; }
  body.menu-abierto { overflow: hidden; }
}
@media (max-width: 760px) {
  .nav-drop__panel .container { width: 100%; padding: 0; }
  .site-nav .nav-drop__panel ul, .nav-drop__grupo:nth-child(2) ul { grid-template-columns: minmax(0, 1fr); }
  .site-nav .nav-drop__titulo a { background: none; padding: 0; min-height: 0; color: var(--muted); font-size: .75rem; }
  .nav-drop__titulo { padding-top: .6rem; border-top: 1px dashed rgba(var(--shadow-rgb), .2); }
  .nav-drop__grupo:first-child .nav-drop__titulo { border-top: 0; }
  .site-nav .nav-drop__panel li a { padding-left: .2rem; }
  .nav-drop__pie { flex-direction: column; gap: 0; border-top: 1px dashed rgba(var(--shadow-rgb), .2); }
}
/* Franja de taquilla en móvil: título con la taquilla a la derecha y acciones apiladas a todo el ancho. */
@media (max-width: 760px) {
  .taquilla-franja { padding-block: 2.4rem 2.2rem; }
  .taquilla-franja__layout { grid-template-columns: minmax(0, 1fr) 92px; gap: 1rem 1rem; align-items: start; }
  .taquilla-franja__objeto { grid-column: 2; grid-row: 1; width: 92px; margin: -.4rem 0 0; }
  .taquilla-franja__texto { grid-column: 1; grid-row: 1; }
  .taquilla-franja h2 { font-size: 2rem; line-height: 1; }
  .taquilla-franja__texto p:last-child { grid-column: 1 / -1; }
  .taquilla-franja__acciones { grid-column: 1 / -1; grid-template-columns: minmax(0, 1fr); gap: 0; margin-top: .4rem; }
  .taquilla-franja__acciones .button { display: flex; justify-content: space-between; width: 100%; min-height: 54px; margin-bottom: .6rem; }
  .taquilla-franja__enlace { grid-template-columns: minmax(0, 1fr) auto; padding: .8rem 0; border-left: 0; border-top: 1px solid #ffffff38; }
  .taquilla-franja__enlace::after { content: "→"; grid-column: 2; grid-row: 1 / 3; align-self: center; font-size: 1.2rem; }
}

/* Botón de menú: tres líneas que se convierten en una X. */
.nav-toggle { display: inline-grid; place-items: center; width: 48px; min-width: 48px !important; height: 48px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--ink); cursor: pointer; }
.nav-toggle[hidden] { display: none; }
.nav-toggle:hover { background: var(--paper-alt); }
.nav-toggle__lineas { position: relative; display: block; width: 26px; height: 18px; }
.nav-toggle__lineas span { position: absolute; left: 0; width: 100%; height: 2.5px; border-radius: 2px; background: currentColor; transition: transform .25s ease, opacity .2s ease, top .25s ease; }
.nav-toggle__lineas span:nth-child(1) { top: 0; }
.nav-toggle__lineas span:nth-child(2) { top: 7.75px; }
.nav-toggle__lineas span:nth-child(3) { top: 15.5px; }
.nav-toggle[aria-expanded="true"] .nav-toggle__lineas span:nth-child(1) { top: 7.75px; transform: rotate(45deg); }
.nav-toggle[aria-expanded="true"] .nav-toggle__lineas span:nth-child(2) { opacity: 0; }
.nav-toggle[aria-expanded="true"] .nav-toggle__lineas span:nth-child(3) { top: 7.75px; transform: rotate(-45deg); }
@media (prefers-reduced-motion: reduce) { .nav-toggle__lineas span { transition: none; } }

/* Cabeceras de sección en móvil: el paisaje no se sale de la escena y los objetos se apoyan en las dunas. */
@media (max-width: 900px) {
  .sec-hero__fondo { height: 78vw; overflow: hidden; }
  .sec-hero__fondo > .sec-hero__sierra { bottom: -12%; }
  .sec-hero__fondo > .sec-hero__dunas { bottom: -34%; }
  .sec-hero__fondo > .sec-hero__frente { height: 24%; bottom: 0; }
  .sec-hero__objetos { left: 0; right: 0; margin-inline: auto; width: 74%; height: 66%; bottom: 17%; }
  .sec-hero__nubes { top: 8%; right: 30%; width: 28%; }
  .sec-hero__sol { top: 7%; right: 6%; width: 13%; }
  .sec-hero__layout { margin-top: -1.8rem; }
}

/* === Revisión móvil === */
@media (max-width: 760px) {
  /* Franja de datos de sección: rejilla ordenada y botón a todo el ancho. */
  .datos-seccion dl { display: grid; grid-template-columns: 1fr 1fr; gap: .9rem 1.2rem; padding-block: 1.2rem 1.4rem; }
  .datos-seccion dl > div:nth-child(3) { grid-column: 1 / -1; }
  .datos-seccion__cta { grid-column: 1 / -1; margin: .2rem 0 0; }
  .datos-seccion__cta .button { display: flex; justify-content: space-between; width: 100%; min-height: 50px; }
  /* Ficha: las dunas delanteras no pisan la hoja de texto. */
  .keyart-front { display: none; }
  .keyart-window { box-shadow: 0 10px 18px -8px rgba(var(--shadow-rgb), .45); }
}
/* Ficha: la foto de la actividad toma su proporción natural (sin bandas laterales). */
.keyart-window:not(.keyart-window--dio) { width: fit-content; max-width: 100%; margin-inline: auto; aspect-ratio: auto; height: auto; }
.keyart-window:not(.keyart-window--dio) .activity-keyart__image { width: auto; height: auto; max-width: 100%; max-height: min(58vh, 460px); aspect-ratio: auto; object-fit: contain; background: none; }
/* Reproductor en móvil: título compacto sin chocar con el botón. */
@media (max-width: 600px) {
  .reproductor__pantalla { border-width: 8px; }
  .reproductor__info { right: 90px; bottom: .9rem; left: .9rem; }
  .reproductor__info .eyebrow { display: none; }
  .reproductor__titulo { font-size: 1.25rem; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
  .reproductor__play { width: 60px; right: .9rem; bottom: .9rem; font-size: 1.4rem; }
  .reproductor__piloto { top: .7rem; left: .7rem; }
}
@media (max-width: 900px) { .streaming-parrilla ol { max-height: none; overflow: visible; } }
/* Móvil: histórico de premiados en rejilla de tres, compacta. */
@media (max-width: 600px) {
  .premiados-historico { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .7rem; }
  .premiados-historico .box__body { padding: .5rem .55rem .7rem; }
  .premiados-historico h3 { font-size: .92rem; line-height: 1.1; }
  .premiados-historico .guest-role { font-size: .75rem; }
}
.convocatoria { gap: .5rem; }
.convocatoria h3 { margin: .1rem 0 .3rem; }
.convocatoria p { margin: 0; }
/* Mini dioramas: la duna del fondo baja hasta el borde para que su base recta nunca asome bajo la duna delantera. */
.sec-dio > .sec-dio__sierra { bottom: -6%; }
.sec-dio > .sec-dio__frente { max-height: 30%; bottom: -3%; }
.reproductor__play { background: #a4471c; }
