/* =============================================================================
   Circuito Kotarr · tema Autosites Core
   Asfalto, piano rojo y blanco, dorsales. Barlow Condensed (titulares) + Lato (texto).
   Firma del tema: el «piano» (bordillo rojo y blanco del circuito) como subrayado y remate.
   ============================================================================= */

@font-face { font-family: 'Barlow Condensed'; font-style: normal; font-weight: 500; font-display: swap; src: url("fuentes/barlow-condensed-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family: 'Barlow Condensed'; font-style: normal; font-weight: 600; font-display: swap; src: url("fuentes/barlow-condensed-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: 'Barlow Condensed'; font-style: normal; font-weight: 700; font-display: swap; src: url("fuentes/barlow-condensed-latin-700-normal.woff2") format("woff2"); }
@font-face { font-family: 'Barlow Condensed'; font-style: italic; font-weight: 600; font-display: swap; src: url("fuentes/barlow-condensed-latin-600-italic.woff2") format("woff2"); }
@font-face { font-family: 'Barlow Condensed'; font-style: italic; font-weight: 800; font-display: swap; src: url("fuentes/barlow-condensed-latin-800-italic.woff2") format("woff2"); }
@font-face { font-family: 'Lato'; font-style: normal; font-weight: 300; font-display: swap; src: url("fuentes/lato-latin-300-normal.woff2") format("woff2"); }
@font-face { font-family: 'Lato'; font-style: normal; font-weight: 400; font-display: swap; src: url("fuentes/lato-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: 'Lato'; font-style: italic; font-weight: 400; font-display: swap; src: url("fuentes/lato-latin-400-italic.woff2") format("woff2"); }
@font-face { font-family: 'Lato'; font-style: normal; font-weight: 700; font-display: swap; src: url("fuentes/lato-latin-700-normal.woff2") format("woff2"); }
@font-face { font-family: 'Lato'; font-style: normal; font-weight: 900; font-display: swap; src: url("fuentes/lato-latin-900-normal.woff2") format("woff2"); }

/* ---------------------------------------------------------------------------
   Tokens
   --------------------------------------------------------------------------- */
:root {
  --asfalto: #17181a;
  --carbono: #2c2d2e;
  --humo: #383a3e;
  --grafito: #5a5d63;
  --tiza: #d9d9d9;
  --tiza-suave: #a9abb0;
  --blanco: #ffffff;
  --hueso: #f3f2ef;
  --hueso-2: #e6e4df;
  --tinta: #1b1c1e;
  --tinta-suave: #4a4c50;
  --rojo: #d8202c;
  --rojo-vivo: #ee1c26;
  --rojo-oscuro: #a4141e;
  --bandera: #f5c518;
  --f-titulo: 'Barlow Condensed', 'Arial Narrow', 'Roboto Condensed', sans-serif;
  --f-texto: 'Lato', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --ancho: 1240px;
  --ancho-estrecho: 820px;
  --margen: clamp(1rem, 4vw, 2.5rem);
  --seccion: clamp(3rem, 6vw, 5rem);
  --transicion: .28s cubic-bezier(.2, .7, .2, 1);
  --sombra: 0 14px 40px rgba(0, 0, 0, .35);
  --sombra-suave: 0 6px 18px rgba(0, 0, 0, .18);
  --cabecera-alto: 78px;
  --color-evento: var(--rojo);
}

/* ---------------------------------------------------------------------------
   Base
   --------------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font: 400 1.0625rem/1.65 var(--f-texto);
  color: var(--tiza);
  background: var(--carbono);
  overflow-x: hidden;
}
img, svg, video { max-width: 100%; height: auto; display: block; }
a { color: var(--blanco); text-decoration-color: var(--rojo); text-decoration-thickness: 2px; text-underline-offset: .18em; }
a:hover { color: var(--rojo-vivo); }
h1, h2, h3, h4 { font-family: var(--f-titulo); line-height: 1.02; margin: 0 0 .5em; color: var(--blanco); text-wrap: balance; }
h1 { font-weight: 800; font-style: italic; text-transform: uppercase; letter-spacing: .005em; font-size: clamp(3rem, 7.5vw, 6rem); }
h2 { font-weight: 700; text-transform: uppercase; letter-spacing: .01em; font-size: clamp(2rem, 4.2vw, 3.1rem); }
h3 { font-weight: 700; font-size: clamp(1.45rem, 2.4vw, 1.9rem); letter-spacing: .01em; }
h4 { font-weight: 600; font-size: 1.3rem; }
p { margin: 0 0 1.1em; }
ul, ol { margin: 0 0 1.1em; padding-left: 1.3em; }
button { font: inherit; }
:focus-visible { outline: 3px solid var(--bandera); outline-offset: 3px; }
::selection { background: var(--rojo); color: #fff; }

.contenedor { width: min(100% - 2 * var(--margen), var(--ancho)); margin-inline: auto; }
.contenedor--estrecho { max-width: var(--ancho-estrecho); }
.salto { position: absolute; left: -999px; top: 0; z-index: 1000; padding: .6rem 1rem; background: var(--rojo); color: #fff; }
.salto:focus { left: 1rem; top: 1rem; }

/* Piano: el bordillo rojo y blanco. Firma del tema. */
.piano { height: 6px; width: 100%; background: repeating-linear-gradient(90deg, var(--rojo) 0 26px, #fff 26px 52px); }
.piano--corto { width: 132px; height: 7px; margin: 1.1rem 0 1.4rem; }
.piano--pie { height: 6px; }

/* Botones: cantos biselados como una pegatina de dorsal */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .5em;
  padding: .82em 1.9em; min-height: 3rem;
  font-family: var(--f-titulo); font-weight: 700; font-size: 1.15rem; letter-spacing: .06em; text-transform: uppercase; line-height: 1;
  text-decoration: none; cursor: pointer; border: 2px solid transparent; position: relative; isolation: isolate;
  clip-path: polygon(8px 0, 100% 0, calc(100% - 8px) 100%, 0 100%);
  transition: background-color var(--transicion), color var(--transicion), transform var(--transicion), border-color var(--transicion);
}
.btn::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(105deg, transparent 40%, rgba(255, 255, 255, .22) 50%, transparent 60%); transform: translateX(-120%); transition: transform .55s cubic-bezier(.2, .7, .2, 1); }
.btn:hover::after, .btn:focus-visible::after { transform: translateX(120%); }
.btn:hover { transform: translateY(-1px); }
.btn--rojo { background: var(--rojo); color: #fff; border-color: var(--rojo); }
.btn--rojo:hover { background: var(--rojo-vivo); color: #fff; }
.btn--claro { background: #fff; color: var(--tinta); border-color: #fff; }
.btn--claro:hover { background: var(--hueso); color: var(--tinta); }
.btn--oscuro { background: var(--asfalto); color: #fff; border-color: var(--asfalto); }
.btn--oscuro:hover { background: #000; color: #fff; }
.btn--contorno { background: transparent; color: currentColor; border-color: currentColor; clip-path: none; }
.btn--contorno:hover { background: rgba(255, 255, 255, .1); color: inherit; }
.btn--peq { padding: .6em 1.3em; min-height: 2.4rem; font-size: 1rem; }
.botones { display: flex; flex-wrap: wrap; gap: .8rem 1rem; margin-top: 1.6rem; }
.botones--centrados { justify-content: center; }
.enlace-flecha { display: inline-flex; align-items: center; gap: .4em; font-family: var(--f-titulo); font-weight: 700; font-size: 1.1rem; letter-spacing: .05em; text-transform: uppercase; text-decoration: none; color: var(--rojo-vivo); }
.enlace-flecha::after { content: "→"; transition: transform var(--transicion); }
.enlace-flecha:hover::after { transform: translateX(4px); }
.enlace-flecha--atras::after { content: none; }
.enlace-flecha--atras::before { content: "←"; transition: transform var(--transicion); }
.enlace-flecha--atras:hover::before { transform: translateX(-4px); }
.etiqueta { display: inline-block; padding: .15em .55em; font-family: var(--f-titulo); font-weight: 700; font-size: .85rem; letter-spacing: .08em; text-transform: uppercase; line-height: 1.2; vertical-align: middle; }
.etiqueta--hoy { background: var(--bandera); color: var(--tinta); }

/* ---------------------------------------------------------------------------
   Cabecera
   --------------------------------------------------------------------------- */
.cabecera { position: sticky; top: 0; z-index: 100; background: var(--asfalto); box-shadow: 0 2px 0 rgba(0, 0, 0, .4); }
.cabecera__fila { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; min-height: var(--cabecera-alto); }
.marca { display: block; flex: none; }
.marca__logo { width: 214px; height: auto; }
.nav__boton { display: none; }
.nav { display: flex; align-items: center; gap: 1.5rem; }
.nav__lista { display: flex; align-items: center; gap: .2rem; list-style: none; margin: 0; padding: 0; }
.nav__item { position: relative; display: flex; align-items: center; }
.nav__enlace { display: inline-block; padding: .55rem .8rem; font-family: var(--f-titulo); font-weight: 600; font-size: 1.2rem; letter-spacing: .05em; text-transform: uppercase; text-decoration: none; color: var(--tiza); position: relative; }
.nav__enlace::after { content: ""; position: absolute; left: .8rem; right: .8rem; bottom: .2rem; height: 3px; background: var(--rojo); transform: scaleX(0); transform-origin: left; transition: transform var(--transicion); }
.nav__enlace:hover, .nav__item--activa > .nav__enlace { color: #fff; }
.nav__enlace:hover::after, .nav__item--activa > .nav__enlace::after { transform: scaleX(1); }
.nav__flecha { display: inline-grid; place-items: center; width: 1.6rem; height: 1.6rem; margin-left: -.5rem; padding: 0; border: 0; background: none; color: var(--tiza-suave); cursor: pointer; }
.nav__flecha svg { transform: rotate(90deg); transition: transform var(--transicion); }
.nav__item--padre:hover .nav__flecha svg, .nav__flecha[aria-expanded="true"] svg { transform: rotate(-90deg); }
.nav__sub { position: absolute; top: 100%; left: 0; min-width: 16rem; margin: 0; padding: .6rem 0; list-style: none; background: var(--asfalto); border-top: 3px solid var(--rojo); box-shadow: var(--sombra); opacity: 0; visibility: hidden; transform: translateY(8px); transition: opacity var(--transicion), transform var(--transicion), visibility 0s .3s; }
.nav__item--padre:hover .nav__sub, .nav__item--padre:focus-within .nav__sub, .nav__item--padre.nav__item--abierto .nav__sub { opacity: 1; visibility: visible; transform: none; transition-delay: 0s; }
.nav__subenlace { display: block; padding: .5rem 1.1rem; font-family: var(--f-texto); font-size: .95rem; color: var(--tiza); text-decoration: none; border-left: 3px solid transparent; }
.nav__subenlace:hover, .nav__subenlace[aria-current="page"] { color: #fff; border-left-color: var(--rojo); background: rgba(255, 255, 255, .04); }
.nav__item--destacado { margin-left: .5rem; }
.nav__redes { display: flex; gap: .4rem; }
.red { display: inline-grid; place-items: center; width: 2.2rem; height: 2.2rem; border-radius: 50%; color: var(--tiza); border: 1px solid rgba(255, 255, 255, .25); transition: background var(--transicion), color var(--transicion), border-color var(--transicion); }
.red:hover { background: var(--rojo); border-color: var(--rojo); color: #fff; }
.nav__pie { display: none; }

@media (max-width: 1120px) {
  .nav__enlace { font-size: 1.05rem; padding: .5rem .55rem; }
  .marca__logo { width: 180px; }
  .nav__redes { display: none; }
}
@media (max-width: 960px) {
  .nav__boton { display: inline-grid; place-items: center; width: 3rem; height: 3rem; border: 0; background: none; cursor: pointer; color: #fff; }
  .hamburguesa { display: grid; gap: 6px; width: 26px; }
  .hamburguesa span { display: block; height: 3px; background: currentColor; transition: transform var(--transicion), opacity var(--transicion); }
  .nav__boton[aria-expanded="true"] .hamburguesa span:nth-child(1) { transform: translateY(9px) rotate(45deg); }
  .nav__boton[aria-expanded="true"] .hamburguesa span:nth-child(2) { opacity: 0; }
  .nav__boton[aria-expanded="true"] .hamburguesa span:nth-child(3) { transform: translateY(-9px) rotate(-45deg); }
  .nav { position: fixed; inset: var(--cabecera-alto) 0 0 0; z-index: 99; flex-direction: column; align-items: stretch; justify-content: flex-start; gap: 0; padding: 1rem var(--margen) 2rem; overflow-y: auto; background: var(--asfalto); transform: translateX(100%); transition: transform .35s cubic-bezier(.2, .7, .2, 1); }
  .nav--abierto { transform: none; }
  .nav__lista { flex-direction: column; align-items: stretch; gap: 0; }
  .nav__item { flex-wrap: wrap; border-bottom: 1px solid rgba(255, 255, 255, .08); }
  .nav__enlace { flex: 1; padding: .9rem 0; font-size: 1.45rem; }
  .nav__enlace::after { left: 0; right: auto; width: 40px; bottom: .6rem; }
  .nav__flecha { width: 3rem; height: 3rem; margin: 0; color: #fff; }
  .nav__sub { position: static; min-width: 0; flex-basis: 100%; padding: 0 0 .6rem; border-top: 0; box-shadow: none; opacity: 1; visibility: visible; transform: none; display: none; }
  .nav__item--padre:hover .nav__sub, .nav__item--padre:focus-within .nav__sub { display: none; }
  .nav__item--padre.nav__item--abierto .nav__sub { display: block; }
  .nav__subenlace { padding: .6rem .5rem .6rem 1rem; font-size: 1.05rem; }
  .nav__item--destacado { margin: 1.2rem 0 0; border: 0; }
  .nav__item--destacado .btn { width: 100%; }
  .nav__redes { display: flex; margin-top: 1.5rem; }
  .nav__pie { display: grid; gap: .5rem; margin-top: 1.2rem; }
  .nav__tel { display: inline-flex; align-items: center; gap: .5rem; color: var(--tiza); text-decoration: none; font-weight: 700; }
  .marca__logo { width: 170px; }
}

/* ---------------------------------------------------------------------------
   Portada
   --------------------------------------------------------------------------- */
.portada { position: relative; min-height: min(88vh, 860px); display: flex; align-items: center; padding: clamp(3rem, 8vh, 6rem) 0; overflow: hidden; background: var(--asfalto); }
.portada__fondo { position: absolute; inset: 0; z-index: 0; }
.portada__img { width: 100%; height: 100%; object-fit: cover; object-position: center 40%; }
.portada__fondo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(100deg, rgba(23, 24, 26, .94) 0%, rgba(23, 24, 26, .78) 42%, rgba(23, 24, 26, .38) 100%), linear-gradient(to bottom, transparent 70%, var(--carbono) 100%); }
.portada__rejilla { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); gap: clamp(2rem, 5vw, 5rem); align-items: center; }
.portada:not(.portada--con-calendario) .portada__rejilla { grid-template-columns: minmax(0, 1fr); }
.portada__antetitulo { margin: 0 0 .2rem; font-family: var(--f-titulo); font-weight: 500; font-size: clamp(1.4rem, 2.8vw, 2.1rem); letter-spacing: .12em; text-transform: uppercase; color: var(--tiza-suave); }
.portada__titulo { margin: 0; font-size: clamp(4.4rem, 11vw, 9rem); line-height: .92; color: #fff; text-shadow: 0 10px 40px rgba(0, 0, 0, .5); }
.portada__parrafo { max-width: 40rem; font-size: 1.1rem; font-weight: 300; color: #f2f2f2; }
.portada__parrafo p:last-child { margin-bottom: 0; }
.portada__calendario { background: #fff; color: var(--tinta); padding: 1.3rem 1.3rem 1.5rem; box-shadow: var(--sombra); border-top: 6px solid var(--rojo); }
.portada__cal-titulo { display: flex; align-items: center; gap: .5rem; margin: 0 0 .8rem; font-family: var(--f-titulo); font-weight: 700; font-size: 1.35rem; text-transform: uppercase; letter-spacing: .05em; color: var(--tinta); }
.portada__cal-titulo svg { color: var(--rojo); }
@media (max-width: 960px) {
  .portada { min-height: 0; padding: 3rem 0 3.5rem; }
  .portada__rejilla { grid-template-columns: minmax(0, 1fr); }
  .portada__fondo::after { background: linear-gradient(to bottom, rgba(23, 24, 26, .9) 0%, rgba(23, 24, 26, .75) 60%, var(--carbono) 100%); }
  .portada__calendario { max-width: 560px; }
}

/* Entrada al cargar: los elementos [data-entrada] llegan por la izquierda, escalonados */
.js [data-entrada] { opacity: 0; transform: translate3d(-32px, 0, 0); animation: entrar .8s cubic-bezier(.2, .7, .2, 1) forwards; }
.js [data-entrada="1"] { animation-delay: .05s; }
.js [data-entrada="2"] { animation-delay: .15s; }
.js [data-entrada="3"] { animation-delay: .28s; }
.js [data-entrada="4"] { animation-delay: .38s; }
.js [data-entrada="5"] { animation-delay: .48s; }
.js [data-entrada="6"] { animation-delay: .35s; transform: translate3d(0, 28px, 0); }
@keyframes entrar { to { opacity: 1; transform: none; } }

/* Revelado al hacer scroll */
.js [data-revelar] { opacity: 0; transform: translate3d(0, 28px, 0); transition: opacity .75s cubic-bezier(.2, .7, .2, 1), transform .75s cubic-bezier(.2, .7, .2, 1); }
.js [data-revelar].visible { opacity: 1; transform: none; }
.js [data-revelar][data-escalonar] > * { opacity: 0; transform: translate3d(0, 22px, 0); transition: opacity .6s cubic-bezier(.2, .7, .2, 1), transform .6s cubic-bezier(.2, .7, .2, 1); }
.js [data-revelar][data-escalonar].visible > * { opacity: 1; transform: none; }
.js [data-revelar][data-escalonar].visible > :nth-child(2) { transition-delay: .08s; }
.js [data-revelar][data-escalonar].visible > :nth-child(3) { transition-delay: .16s; }
.js [data-revelar][data-escalonar].visible > :nth-child(4) { transition-delay: .24s; }
.js [data-revelar][data-escalonar].visible > :nth-child(5) { transition-delay: .32s; }
.js [data-revelar][data-escalonar].visible > :nth-child(6) { transition-delay: .4s; }
.js [data-revelar][data-escalonar].visible > :nth-child(n+7) { transition-delay: .46s; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .js [data-entrada], .js [data-revelar], .js [data-revelar][data-escalonar] > * { opacity: 1; transform: none; animation: none; transition: none; }
  .btn::after, .escaparate__foto img, .galeria__item img { transition: none !important; }
}

/* ---------------------------------------------------------------------------
   Cabecera de página interior
   --------------------------------------------------------------------------- */
.cabecera-pagina { position: relative; padding: clamp(2.5rem, 6vw, 4.5rem) 0 clamp(2.5rem, 6vw, 4rem); background: var(--asfalto); overflow: hidden; }
.cabecera-pagina__fondo { position: absolute; inset: 0; }
.cabecera-pagina__img { width: 100%; height: 100%; object-fit: cover; object-position: center 35%; opacity: .32; filter: saturate(.7); }
.cabecera-pagina__fondo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(23, 24, 26, .9), rgba(23, 24, 26, .3)), linear-gradient(to bottom, transparent 60%, var(--carbono)); }
.cabecera-pagina__cuerpo { position: relative; }
.cabecera-pagina__titulo { margin: 0; font-size: clamp(2.8rem, 6.5vw, 5.4rem); color: #fff; }
.cabecera-pagina__texto { max-width: 42rem; font-size: 1.1rem; font-weight: 300; color: #ededed; }
.cabecera-pagina__texto p:last-child { margin: 0; }
.antetitulo { display: flex; align-items: center; gap: .6rem; margin: 0 0 .4rem; font-family: var(--f-titulo); font-weight: 600; font-size: 1.05rem; letter-spacing: .16em; text-transform: uppercase; color: var(--rojo-vivo); }
.migas { margin-bottom: 1.4rem; font-size: .85rem; }
.migas ol { display: flex; flex-wrap: wrap; gap: .2rem .4rem; list-style: none; margin: 0; padding: 0; }
.migas li + li::before { content: "/"; margin-right: .4rem; color: var(--grafito); }
.migas a { color: var(--tiza-suave); text-decoration: none; }
.migas a:hover { color: #fff; }
.migas [aria-current] { color: var(--tiza); }

/* ---------------------------------------------------------------------------
   Bloques comunes
   --------------------------------------------------------------------------- */
.bloque { padding: var(--seccion) 0; }
.bloque + .bloque { padding-top: 0; }
.bloque--claro { background: var(--hueso); color: var(--tinta); }
.bloque--claro + .bloque--claro { padding-top: 0; }
.bloque + .bloque--claro, .bloque--claro + .bloque:not(.bloque--claro) { padding-top: var(--seccion); }
.bloque--claro h1, .bloque--claro h2, .bloque--claro h3, .bloque--claro h4 { color: var(--tinta); }
.bloque--claro a { color: var(--tinta); }
.bloque--claro a:hover, .bloque--claro .enlace-flecha { color: var(--rojo); }
.titulo-seccion { position: relative; padding-bottom: .55rem; margin-bottom: 1.4rem; }
.titulo-seccion::after { content: ""; position: absolute; left: 0; bottom: 0; width: 64px; height: 5px; background: repeating-linear-gradient(90deg, var(--rojo) 0 16px, #fff 16px 32px); }
.bloque--claro .titulo-seccion::after { background: repeating-linear-gradient(90deg, var(--rojo) 0 16px, var(--tinta) 16px 32px); }
.titulo-seccion--peq { font-size: clamp(1.5rem, 2.6vw, 2rem); }
.encabezado { max-width: 52rem; margin-bottom: 2.2rem; }
.encabezado--centrado { margin-inline: auto; text-align: center; }
.encabezado--centrado .titulo-seccion::after { left: 50%; transform: translateX(-50%); }
.encabezado__texto { font-size: 1.1rem; font-weight: 300; }
.encabezado__texto p:last-child { margin: 0; }
.panel { padding: clamp(1.4rem, 3vw, 2.4rem); }
.panel--negro { background: var(--asfalto); color: var(--tiza); box-shadow: var(--sombra); }
.panel--blanco { background: #fff; color: var(--tinta); box-shadow: var(--sombra); }
.panel--blanco h2, .panel--blanco h3 { color: var(--tinta); }
.panel--blanco a { color: var(--tinta); }
.panel--blanco a:hover { color: var(--rojo); }
.nota { margin-top: 1.6rem; font-size: .95rem; color: var(--tiza-suave); }
.bloque--claro .nota { color: var(--tinta-suave); }

/* Prosa (texto rico) */
.prosa { font-weight: 300; }
.prosa strong { font-weight: 700; color: #fff; }
.bloque--claro .prosa strong, .panel--blanco .prosa strong, .tarjeta--claro .prosa strong, .aviso .prosa strong { color: inherit; }
.prosa h3, .prosa h4 { margin-top: 1.6em; }
.prosa h3 { color: var(--rojo-vivo); text-transform: uppercase; letter-spacing: .02em; }
.bloque--claro .prosa h3 { color: var(--rojo); }
.prosa ul { padding-left: 1.2em; }
.prosa li { margin-bottom: .3em; }
.prosa li::marker { color: var(--rojo-vivo); }
.prosa a { font-weight: 400; }
.texto--centrado .prosa { text-align: center; }
.texto--centrado .titulo-seccion::after { left: 50%; transform: translateX(-50%); }
.texto--panel .prosa { padding: clamp(1.4rem, 3vw, 2.4rem); background: var(--humo); border-left: 6px solid var(--rojo); }

/* ---------------------------------------------------------------------------
   Escaparate (portada)
   --------------------------------------------------------------------------- */
.escaparate { display: grid; }
.escaparate__bloque { display: grid; grid-template-columns: 1fr 1fr; min-height: 520px; }
.escaparate__bloque--invertido .escaparate__foto { order: 2; }
.escaparate__foto { margin: 0; overflow: hidden; background: var(--asfalto); }
.escaparate__foto img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.1s cubic-bezier(.2, .7, .2, 1); }
.escaparate__bloque:hover .escaparate__foto img { transform: scale(1.04); }
.escaparate__panel { display: flex; align-items: center; justify-content: center; padding: clamp(2.5rem, 6vw, 5rem) clamp(1.5rem, 6vw, 5rem); }
.escaparate__contenido { max-width: 34rem; text-align: center; }
.escaparate__titulo { margin: 0 0 1rem; display: grid; }
.escaparate__antetitulo { font-weight: 500; font-size: clamp(1.4rem, 2.6vw, 2.1rem); letter-spacing: .1em; text-transform: uppercase; line-height: 1; opacity: .8; }
.escaparate__palabra { font-weight: 800; font-style: italic; font-size: clamp(3.2rem, 6.5vw, 5.6rem); text-transform: uppercase; line-height: .95; }
.escaparate__texto { font-weight: 300; }
.escaparate__bloque .botones { justify-content: center; }
.escaparate__bloque--claro .escaparate__panel { background: var(--hueso); color: var(--tinta); }
.escaparate__bloque--claro .escaparate__titulo { color: var(--tinta); }
.escaparate__bloque--rojo .escaparate__panel { background: var(--rojo); color: #fff; }
.escaparate__bloque--oscuro .escaparate__panel { background: var(--asfalto); color: var(--tiza); }
.escaparate__bloque--rojo .btn--contorno, .escaparate__bloque--oscuro .btn--contorno { color: #fff; }
.escaparate__bloque--claro .btn--contorno { color: var(--tinta); }
.escaparate__bloque--claro .btn--contorno:hover { background: rgba(0, 0, 0, .06); }
@media (max-width: 860px) {
  .escaparate__bloque { grid-template-columns: 1fr; min-height: 0; }
  .escaparate__bloque--invertido .escaparate__foto { order: 0; }
  .escaparate__foto { aspect-ratio: 4 / 3; }
}

/* ---------------------------------------------------------------------------
   Texto y foto · galería
   --------------------------------------------------------------------------- */
.duo { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(2rem, 5vw, 4.5rem); align-items: start; }
.duo--tercio { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); }
.duo--invertido .duo__fotos { order: -1; }
.duo__fotos { display: grid; gap: 1rem; position: sticky; top: calc(var(--cabecera-alto) + 1.5rem); }
.duo__figura { margin: 0; box-shadow: var(--sombra); background: var(--asfalto); }
.duo__figura img { width: 100%; }
@media (max-width: 860px) {
  .duo, .duo--tercio { grid-template-columns: minmax(0, 1fr); }
  .duo--invertido .duo__fotos { order: 0; }
  .duo__fotos { position: static; }
}
.galeria { display: grid; gap: .75rem; grid-template-columns: repeat(var(--gal-cols, 3), minmax(0, 1fr)); }
.galeria--1 { --gal-cols: 1; }
.galeria--2 { --gal-cols: 2; }
.galeria--3 { --gal-cols: 3; }
.galeria--4 { --gal-cols: 4; }
.galeria__item { position: relative; display: block; width: 100%; padding: 0; border: 0; background: var(--asfalto); cursor: zoom-in; overflow: hidden; }
.galeria__item img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s cubic-bezier(.2, .7, .2, 1), opacity var(--transicion); }
.galeria--libre .galeria__item img { height: auto; object-fit: contain; }
.galeria__item:hover img { transform: scale(1.04); }
.galeria__lupa { position: absolute; right: .6rem; bottom: .6rem; display: grid; place-items: center; width: 2.2rem; height: 2.2rem; background: rgba(23, 24, 26, .85); color: #fff; opacity: 0; transform: translateY(6px); transition: opacity var(--transicion), transform var(--transicion); }
.galeria__item:hover .galeria__lupa, .galeria__item:focus-visible .galeria__lupa { opacity: 1; transform: none; }
@media (max-width: 700px) {
  .galeria--3, .galeria--4 { --gal-cols: 2; }
}

/* ---------------------------------------------------------------------------
   Tarjetas de color · tablas
   --------------------------------------------------------------------------- */
.tarjetas { display: grid; gap: 1.25rem; grid-template-columns: repeat(var(--tar-cols, 2), minmax(0, 1fr)); }
.tarjetas--2 { --tar-cols: 2; }
.tarjetas--3 { --tar-cols: 3; }
.tarjeta { padding: clamp(1.4rem, 3vw, 2.2rem); position: relative; }
.tarjeta::before { content: ""; position: absolute; left: 0; top: 0; width: 100%; height: 6px; background: repeating-linear-gradient(90deg, currentColor 0 22px, transparent 22px 44px); opacity: .25; }
.tarjeta--rojo { background: var(--rojo); color: #fff; }
.tarjeta--oscuro { background: var(--asfalto); color: var(--tiza); }
.tarjeta--claro { background: var(--hueso); color: var(--tinta); }
.tarjeta__cabecera { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: .4rem 1rem; margin-bottom: 1rem; }
.tarjeta__titulo { margin: 0; flex: 1 1 14rem; text-transform: uppercase; color: inherit; }
.tarjeta--claro .tarjeta__titulo { color: var(--tinta); }
.tarjeta__precio { margin: 0; font-family: var(--f-titulo); font-weight: 800; font-style: italic; font-size: clamp(2rem, 3.5vw, 2.8rem); line-height: 1; white-space: nowrap; }
.tarjeta__texto { font-size: .98rem; }
.tarjeta__texto p:last-child { margin: 0; }
.tarjeta .prosa h3 { color: inherit; font-size: 1.2rem; }
.tarjeta .prosa li::marker { color: inherit; }
.tarjeta--rojo .prosa strong { color: #fff; }
@media (max-width: 860px) { .tarjetas--3 { --tar-cols: 2; } }
@media (max-width: 620px) { .tarjetas--2, .tarjetas--3 { --tar-cols: 1; } }

.tabla-marco { overflow-x: auto; -webkit-overflow-scrolling: touch; box-shadow: var(--sombra); }
.tabla { width: 100%; border-collapse: collapse; background: var(--asfalto); font-size: .98rem; }
.tabla th, .tabla td { padding: .8rem .9rem; text-align: center; border-bottom: 1px solid rgba(255, 255, 255, .08); }
.tabla thead th { font-family: var(--f-titulo); font-weight: 700; font-size: 1.05rem; letter-spacing: .06em; text-transform: uppercase; background: var(--rojo); color: #fff; border-bottom: 1px solid rgba(0, 0, 0, .25); }
.tabla thead tr:last-child th { background: var(--rojo-oscuro); font-size: .92rem; }
.tabla thead th small { display: block; font-weight: 500; font-size: .8rem; letter-spacing: .06em; opacity: .85; }
.tabla tbody th { text-align: left; font-weight: 700; color: #fff; white-space: nowrap; }
.tabla tbody td { font-family: var(--f-titulo); font-weight: 700; font-size: 1.25rem; color: #fff; }
.tabla tbody tr:nth-child(even) { background: rgba(255, 255, 255, .03); }
.tabla tbody tr:hover { background: rgba(216, 32, 44, .12); }
.tabla__vacio { color: var(--grafito); font-weight: 400; }
.tabla--tarifas { min-width: 860px; }
.tabla--precios { max-width: 100%; box-shadow: var(--sombra); }
.tabla--precios td { text-align: left; }
.tabla--precios .tabla__concepto { font-family: var(--f-texto); font-weight: 400; font-size: 1rem; color: var(--tiza); }
.tabla--precios .tabla__precio { text-align: right; white-space: nowrap; }
.tabla--precios .tabla__grupo th { text-align: left; font-family: var(--f-titulo); font-weight: 700; font-size: 1.1rem; letter-spacing: .08em; text-transform: uppercase; background: var(--rojo); color: #fff; }

/* ---------------------------------------------------------------------------
   Contacto · inscripción · formulario del núcleo
   --------------------------------------------------------------------------- */
.contacto { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 1.5rem; align-items: start; }
.contacto__titulo { margin-bottom: 1.2rem; font-size: clamp(2rem, 4vw, 3rem); }
.contacto__titulo--datos { color: var(--tinta); }
.datos { list-style: none; margin: 0; padding: 0; display: grid; }
.dato { display: grid; grid-template-columns: auto 1fr; gap: 1rem; padding: 1.1rem 0; border-top: 1px solid var(--hueso-2); }
.dato:first-child { border-top: 0; padding-top: 0; }
.dato__icono { display: grid; place-items: center; width: 3rem; height: 3rem; color: var(--rojo); border: 2px solid var(--rojo); }
.dato__etiqueta { display: block; font-family: var(--f-titulo); font-weight: 600; font-size: .95rem; letter-spacing: .12em; text-transform: uppercase; color: var(--tinta-suave); }
.dato__valor { margin: .1rem 0 .3rem; font-weight: 700; }
.dato__valor a { text-decoration: none; margin-right: .8rem; }
.contacto__mapa { margin-top: 1.5rem; box-shadow: var(--sombra); }
.mapa { --nucleo-mapa-alto: 440px; background: var(--humo); color: var(--tiza); }
.mapa .nucleo-mapa__titulo { font-family: var(--f-titulo); font-size: 1.6rem; text-transform: uppercase; }
@media (max-width: 860px) { .contacto { grid-template-columns: minmax(0, 1fr); } }
.inscripcion { border-top: 6px solid var(--rojo); }
.horario { display: grid; gap: .5rem; margin: 0; }
.horario div { display: grid; }
.horario dt { font-weight: 700; }
.horario dd { margin: 0; }
.horario--compacto { gap: .3rem; font-size: .95rem; }
.horario--compacto dt { font-weight: 700; }

.nucleo-form__etiqueta { font-family: var(--f-titulo); font-weight: 600; font-size: 1.05rem; letter-spacing: .06em; text-transform: uppercase; }
.nucleo-form__control { padding: .8rem .9rem; border: 1px solid #c9c7c2; border-radius: 0; background: #fff; color: var(--tinta); font-size: 1rem; }
.nucleo-form__control:focus { outline: 3px solid var(--bandera); outline-offset: 0; border-color: var(--tinta); }
.panel--negro .nucleo-form__control { background: #fff; }
.nucleo-form__ayuda { font-size: .85rem; }
.nucleo-form__casilla-etiqueta { font-size: .92rem; }
.nucleo-form__error { color: var(--rojo-vivo); font-weight: 700; }
.panel--blanco .nucleo-form__error { color: var(--rojo); }
.nucleo-form__obligatorio { color: var(--rojo-vivo); }
.nucleo-form.es-validado :invalid, .nucleo-form__control--error { border-color: var(--rojo-vivo); }
.nucleo-aviso { border-radius: 0; border-width: 0 0 0 6px; }
.nucleo-aviso--ok { background: #eef8ef; color: #144; border-color: #2a7; }
.nucleo-aviso--error { background: #fdecec; color: #611; border-color: var(--rojo); }
.nucleo-form-alternativa__botones .nucleo-form__boton { border-radius: 0; }

/* ---------------------------------------------------------------------------
   Franja · logotipos · directorio · índice
   --------------------------------------------------------------------------- */
.franja { position: relative; padding: clamp(2.2rem, 5vw, 3.5rem) 0; background: var(--rojo); color: #fff; overflow: hidden; }
.franja::before { content: ""; position: absolute; left: 0; top: 0; width: 100%; height: 6px; background: repeating-linear-gradient(90deg, #fff 0 26px, transparent 26px 52px); opacity: .9; }
.franja__fila { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.5rem 3rem; }
.franja__titulo { margin: 0; font-size: clamp(1.9rem, 4vw, 3rem); color: #fff; }
.franja__parrafo { margin-top: .4rem; font-weight: 300; }
.franja__parrafo p:last-child { margin: 0; }
.franja .botones { margin: 0; }
.franja .btn--contorno { color: #fff; }

.logos { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.5rem; }
.logos--fila { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); align-items: center; justify-items: center; }
.logos--fila .logo { text-align: center; }
.logos--fila .logo__enlace { display: block; }
.logos--fila .logo__enlace img { max-height: 120px; width: auto; margin-inline: auto; }
.logos--fila .logo__texto { font-size: .9rem; margin-top: .6rem; }
.logos--fichas { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
.logos--fichas .logo { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem; align-content: start; padding: 1.5rem; background: #fff; box-shadow: var(--sombra-suave); }
.logos--fichas .logo__enlace img { max-height: 180px; width: auto; }
.logos--fichas .logo__texto { font-size: .95rem; color: var(--tinta-suave); }
.logos--fichas .logo__imagen-2 { margin: 0; padding-top: .5rem; }
.logos--fichas .logo__imagen-2 img { width: 100%; height: auto; }
.logo__texto p:last-child { margin: 0; }
.bloque--logos:not(.bloque--claro) .logos--fichas .logo { background: var(--humo); }
.bloque--logos:not(.bloque--claro) .logos--fichas .logo__texto { color: var(--tiza); }
.logo__enlace img { transition: transform var(--transicion); }
a.logo__enlace:hover img { transform: scale(1.03); }

.directorio, .indice { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
.ficha-enlace__cuerpo, .indice__enlace { position: relative; display: block; height: 100%; padding: 1.4rem 3.2rem 1.4rem 1.5rem; background: var(--humo); color: var(--tiza); text-decoration: none; border-left: 5px solid var(--rojo); transition: background var(--transicion), transform var(--transicion); }
a.ficha-enlace__cuerpo:hover, .indice__enlace:hover { background: #45474c; color: #fff; transform: translateX(4px); }
.ficha-enlace__titulo, .indice__titulo { margin: 0; font-size: 1.5rem; text-transform: uppercase; color: #fff; }
.ficha-enlace__texto { margin: .25rem 0 0; font-size: .95rem; color: var(--tiza-suave); }
.ficha-enlace__flecha, .indice__flecha { position: absolute; right: 1.2rem; top: 50%; transform: translateY(-50%); color: var(--rojo-vivo); transition: transform var(--transicion); }
a.ficha-enlace__cuerpo:hover .ficha-enlace__flecha, .indice__enlace:hover .indice__flecha { transform: translate(4px, -50%); }
.indice__vacio { color: var(--tiza-suave); font-style: italic; }

/* ---------------------------------------------------------------------------
   Aviso emergente
   --------------------------------------------------------------------------- */
.aviso { max-width: min(92vw, 560px); padding: 0; border: 0; background: #fff; color: var(--tinta); box-shadow: 0 30px 80px rgba(0, 0, 0, .6); }
.aviso::backdrop { background: rgba(10, 10, 12, .7); backdrop-filter: blur(3px); }
.aviso[open] { animation: aviso-entrar .45s cubic-bezier(.2, .7, .2, 1); }
@keyframes aviso-entrar { from { opacity: 0; transform: translateY(18px) scale(.98); } }
.aviso__cuerpo { position: relative; padding: 2rem 2.2rem 2rem; text-align: center; }
.aviso__cuerpo .piano--corto { margin: 0 auto 1.2rem; }
.aviso__titulo { font-size: clamp(2rem, 5vw, 2.8rem); color: var(--tinta); text-transform: uppercase; }
.aviso__texto { font-weight: 400; }
.aviso__texto a { color: var(--rojo); }
.aviso__pie { margin-top: 1.2rem; }
.aviso__cerrar { position: absolute; right: .6rem; top: .6rem; display: grid; place-items: center; width: 2.4rem; height: 2.4rem; border: 0; background: none; color: var(--tinta-suave); cursor: pointer; }
.aviso__cerrar:hover { color: var(--rojo); }

/* ---------------------------------------------------------------------------
   Calendario (rejilla del núcleo, clases nucleo-cal__*)
   --------------------------------------------------------------------------- */
.cal { --cal-linea: rgba(255, 255, 255, .1); --cal-fondo: var(--asfalto); --cal-fondo-2: rgba(255, 255, 255, .04); --cal-texto: var(--tiza); --cal-texto-suave: var(--tiza-suave); --cal-hoy: var(--bandera); color: var(--cal-texto); }
.bloque--claro .cal, .portada__calendario .cal { --cal-linea: #e2e0db; --cal-fondo: #fff; --cal-fondo-2: var(--hueso); --cal-texto: var(--tinta); --cal-texto-suave: var(--tinta-suave); }
.cal .nucleo-cal__cabecera { margin-bottom: 1rem; }
.cal .nucleo-cal__periodo { font-family: var(--f-titulo); font-weight: 700; font-size: clamp(1.5rem, 3vw, 2.2rem); letter-spacing: .03em; text-transform: uppercase; }
.cal .nucleo-cal__boton { display: inline-grid; place-items: center; width: 2.6rem; height: 2.6rem; border: 2px solid currentColor; background: transparent; color: inherit; transition: background var(--transicion), color var(--transicion), border-color var(--transicion); }
.cal .nucleo-cal__boton:hover:not([disabled]) { background: var(--rojo); border-color: var(--rojo); color: #fff; }
.cal .nucleo-cal__mes-titulo { font-family: var(--f-titulo); font-weight: 700; font-size: 1.3rem; text-transform: uppercase; letter-spacing: .05em; padding: 0 0 .6rem; text-align: left; color: var(--cal-texto); }
.cal .nucleo-cal__mes-ano { color: var(--cal-texto-suave); font-weight: 500; }
.cal.nucleo-cal--v1 .nucleo-cal__mes-titulo { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.cal .nucleo-cal__tabla { border: 1px solid var(--cal-linea); background: var(--cal-fondo); }
.cal .nucleo-cal__dia-semana { padding: .55rem .2rem; font-family: var(--f-titulo); font-weight: 700; font-size: .9rem; letter-spacing: .1em; text-transform: uppercase; color: var(--cal-texto-suave); background: var(--cal-fondo-2); border-bottom: 1px solid var(--cal-linea); }
.cal .nucleo-cal__dia-semana abbr { text-decoration: none; }
.cal .nucleo-cal__dia { height: 5.4rem; padding: .4rem .45rem; border-top: 1px solid var(--cal-linea); border-left: 1px solid var(--cal-linea); }
.cal .nucleo-cal__dia:first-child { border-left: 0; }
.cal .nucleo-cal__semana:first-child .nucleo-cal__dia { border-top: 0; }
.cal .nucleo-cal__dia--fuera { background: repeating-linear-gradient(-45deg, transparent 0 6px, var(--cal-linea) 6px 7px); }
.cal .nucleo-cal__dia--pasado .nucleo-cal__num { opacity: .45; }
.cal .nucleo-cal__num { width: 1.9rem; height: 1.9rem; display: grid; place-items: center; font-family: var(--f-titulo); font-weight: 700; font-size: 1.05rem; margin-bottom: .25rem; }
.cal button.nucleo-cal__num { background: var(--rojo); color: #fff; transition: background var(--transicion), transform var(--transicion); }
.cal button.nucleo-cal__num:hover, .cal .nucleo-cal__dia--activo button.nucleo-cal__num { background: var(--rojo-vivo); transform: scale(1.06); }
.cal .nucleo-cal__dia--hoy .nucleo-cal__num { box-shadow: 0 0 0 2px var(--cal-hoy); }
.cal .nucleo-cal__eventos { display: grid; gap: .15rem; }
.cal .nucleo-cal__evento { font-size: .78rem; line-height: 1.25; }
.cal .nucleo-cal__punto { width: .55rem; height: .55rem; border-radius: 0; transform: skewX(-12deg); }
.cal .nucleo-cal__mas { font-size: .72rem; color: var(--cal-texto-suave); font-weight: 700; }
.cal .nucleo-cal__celda-detalle { padding: 0; border-top: 1px solid var(--cal-linea); background: var(--cal-fondo-2); }
.cal .nucleo-cal__detalle { padding: 1.2rem 1.3rem 1.4rem; }
.cal .nucleo-cal__detalle-titulo { margin: 0; font-family: var(--f-titulo); font-weight: 700; font-size: 1.15rem; text-transform: uppercase; letter-spacing: .04em; }
.cal .nucleo-cal__detalle-titulo::first-letter, .cal .nucleo-cal__periodo::first-letter, .cal .nucleo-cal__mes-nombre::first-letter { text-transform: uppercase; }
.cal .nucleo-cal__cerrar { display: inline-grid; place-items: center; width: 2rem; height: 2rem; color: inherit; }
.cal .nucleo-cal__cerrar:hover { color: var(--rojo-vivo); }
.cal .nucleo-cal__detalle-lista { display: grid; gap: .6rem; margin-top: .8rem; }
.cal .nucleo-cal__detalle-evento { padding: .8rem 1rem; background: var(--cal-fondo); border-left: 5px solid var(--nucleo-cal-color, var(--rojo)); align-items: center; }
.cal .nucleo-cal__detalle-evento .nucleo-cal__punto { display: none; }
.cal .nucleo-cal__detalle-enlace { font-family: var(--f-titulo); font-weight: 700; font-size: 1.2rem; text-transform: uppercase; color: var(--cal-texto); text-decoration: none; }
.cal .nucleo-cal__detalle-enlace:hover { color: var(--rojo-vivo); }
.cal .nucleo-cal__detalle-fecha { font-weight: 700; font-size: .88rem; color: var(--cal-texto-suave); margin-top: .1rem; }
.cal .nucleo-cal__detalle-extracto { color: var(--cal-texto-suave); font-size: .9rem; margin-top: .25rem; }
.cal .nucleo-cal__detalle-extracto em { font-style: normal; color: var(--rojo-vivo); font-weight: 700; }
.cal .nucleo-cal__detalle-flecha { color: #fff; display: inline-grid; place-items: center; width: 2.2rem; height: 2.2rem; background: var(--rojo); }
.cal .nucleo-cal__vacio { margin: 1rem 0 0; color: var(--cal-texto-suave); font-style: italic; }
.cal--mini .nucleo-cal__dia { height: 3.6rem; padding: .3rem; }
.cal--mini .nucleo-cal__nombre { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.cal--mini .nucleo-cal__eventos { display: flex; flex-wrap: wrap; gap: .2rem; }
.cal--mini .nucleo-cal__evento { overflow: visible; }
.cal--mini .nucleo-cal__num { width: 1.7rem; height: 1.7rem; font-size: .95rem; }
.cal--mini .nucleo-cal__periodo { font-size: 1.3rem; }
.cal--mini .nucleo-cal__boton { width: 2.1rem; height: 2.1rem; }
.cal--mini .nucleo-cal__detalle { padding: .9rem 1rem 1rem; }
@media (max-width: 700px) {
  .cal .nucleo-cal__dia { height: 3.6rem; padding: .3rem; }
  .cal .nucleo-cal__nombre { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .cal .nucleo-cal__eventos { display: flex; flex-wrap: wrap; gap: .2rem; }
  .cal .nucleo-cal__evento { overflow: visible; }
  .cal .nucleo-cal__num { width: 1.7rem; height: 1.7rem; font-size: .9rem; }
  .cal .nucleo-cal__detalle { padding: 1rem; }
}

/* ---------------------------------------------------------------------------
   Próximos eventos · ficha de evento
   --------------------------------------------------------------------------- */
.proximos { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; }
.proximos--tarjetas { grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); }
.proximo__enlace { position: relative; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 1.1rem; align-items: center; height: 100%; padding: 1.1rem 1.2rem; background: var(--humo); color: var(--tiza); text-decoration: none; border-left: 5px solid var(--color-evento); transition: background var(--transicion), transform var(--transicion); }
.proximos--tarjetas .proximo__enlace { grid-template-columns: auto minmax(0, 1fr) auto; grid-template-rows: auto 1fr; align-items: start; padding: 0 1.2rem 1.2rem 0; overflow: hidden; }
.proximos--tarjetas .proximo__flecha { align-self: center; }
.proximos--tarjetas .proximo__foto { grid-column: 1 / -1; margin: 0 0 1rem; aspect-ratio: 16 / 7; overflow: hidden; background: var(--asfalto); }
.proximos--tarjetas .proximo__foto img { width: 100%; height: 100%; object-fit: cover; transition: transform .9s cubic-bezier(.2, .7, .2, 1); }
.proximo__enlace:hover .proximo__foto img { transform: scale(1.04); }
.proximo__sin-foto { display: grid; place-items: center; width: 100%; height: 100%; color: var(--grafito); }
.proximos--tarjetas .proximo__dia { margin-left: 1.2rem; }
.proximo__enlace:hover { background: #45474c; color: #fff; transform: translateX(4px); }
.proximo__dia { display: grid; place-items: center; width: 4rem; padding: .35rem 0 .45rem; background: var(--asfalto); color: #fff; font-family: var(--f-titulo); line-height: 1; border-top: 3px solid var(--color-evento); }
.proximo__num { font-size: 2.2rem; font-weight: 800; font-style: italic; }
.proximo__mes { font-size: .8rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--tiza-suave); }
.proximo__titulo { margin: 0 0 .15rem; font-size: 1.45rem; text-transform: uppercase; color: #fff; }
.proximo__cuando { margin: 0; display: flex; align-items: center; flex-wrap: wrap; gap: .4rem; font-size: .92rem; font-weight: 700; color: var(--tiza); }
.proximo__punto { display: inline-block; width: .6rem; height: .6rem; background: var(--color-evento); transform: skewX(-12deg); }
.proximo__resumen { margin: .35rem 0 0; font-size: .92rem; font-weight: 300; color: var(--tiza-suave); }
.proximo__flecha { color: var(--rojo-vivo); transition: transform var(--transicion); }
.proximo__enlace:hover .proximo__flecha { transform: translateX(4px); }
.proximo--hoy .proximo__dia { border-top-color: var(--bandera); }
.proximos__vacio { text-align: center; color: var(--tiza-suave); font-style: italic; }
.bloque--claro .proximo__enlace { background: #fff; color: var(--tinta); box-shadow: var(--sombra-suave); }
.bloque--claro .proximo__enlace:hover { background: #fff; color: var(--tinta); }
.bloque--claro .proximo__titulo { color: var(--tinta); }
.bloque--claro .proximo__cuando { color: var(--tinta); }
.bloque--claro .proximo__resumen { color: var(--tinta-suave); }
.bloque--claro .proximo__flecha { color: var(--rojo); }

.cabecera-pagina--evento { background: linear-gradient(90deg, var(--asfalto), color-mix(in srgb, var(--color-evento) 22%, var(--asfalto))); }
.evento__punto { display: inline-block; width: .7rem; height: .7rem; background: var(--color-evento); transform: skewX(-12deg); }
.evento__proxima { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin: 0; font-size: 1.15rem; color: var(--tiza); }
.evento__proxima svg { color: var(--rojo-vivo); }
.evento__proxima strong { color: #fff; font-family: var(--f-titulo); font-size: 1.5rem; text-transform: uppercase; letter-spacing: .02em; }
.evento__proxima--pasado { color: var(--tiza-suave); font-style: italic; }
.evento__rejilla { display: grid; grid-template-columns: minmax(0, 340px) minmax(0, 1fr); gap: clamp(2rem, 5vw, 4rem); align-items: start; }
.evento__lateral { position: sticky; top: calc(var(--cabecera-alto) + 1.5rem); display: grid; gap: 1.5rem; }
.evento__fechas { border-top: 6px solid var(--color-evento); }
.evento__titulo-lateral { margin-bottom: 1rem; font-size: 1.5rem; text-transform: uppercase; }
.fechas { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }
.fecha { display: grid; grid-template-columns: auto 1fr; gap: .9rem; align-items: center; }
.fecha__dia { display: grid; place-items: center; width: 3.4rem; padding: .3rem 0 .4rem; background: var(--asfalto); color: #fff; font-family: var(--f-titulo); line-height: 1; border-top: 3px solid var(--color-evento); }
.fecha__num { font-size: 1.8rem; font-weight: 800; font-style: italic; }
.fecha__mes { font-size: .72rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--tiza-suave); }
.fecha__texto { display: grid; }
.fecha__periodo { font-weight: 700; }
.fecha__nota { font-size: .9rem; color: var(--tinta-suave); }
.fecha--hoy .fecha__dia { border-top-color: var(--bandera); }
.fechas-pasadas { margin-top: 1rem; font-size: .92rem; color: var(--tinta-suave); }
.fechas-pasadas summary { cursor: pointer; font-family: var(--f-titulo); font-weight: 700; font-size: 1.05rem; letter-spacing: .05em; text-transform: uppercase; color: var(--tinta); }
.fechas-pasadas ul { margin: .6rem 0 0; padding-left: 1.2em; columns: 2; column-gap: 1.5rem; }
.evento__aviso { margin: 0; color: var(--tinta-suave); font-style: italic; }
.evento__datos { margin: 0; display: grid; gap: .8rem; }
.evento__datos dt { font-family: var(--f-titulo); font-weight: 600; font-size: .95rem; letter-spacing: .12em; text-transform: uppercase; color: var(--tiza-suave); }
.evento__datos dd { margin: .1rem 0 0; font-weight: 700; color: #fff; overflow-wrap: anywhere; }
.evento__cartel { margin: 0 0 1.5rem; box-shadow: var(--sombra); }
.evento__cartel .galeria__item img { height: auto; object-fit: contain; }
.evento__resumen { font-size: 1.25rem; font-weight: 300; color: #fff; }
.evento__texto { margin-bottom: 2rem; }
.volver { margin: 0; }
@media (max-width: 900px) {
  .evento__rejilla { grid-template-columns: minmax(0, 1fr); }
  .evento__lateral { position: static; }
  .fechas-pasadas ul { columns: 1; }
}

/* ---------------------------------------------------------------------------
   Pie
   --------------------------------------------------------------------------- */
.pie { background: var(--asfalto); color: var(--tiza); }
.pie__rejilla { display: grid; grid-template-columns: 1.3fr 1fr 1fr 1fr; gap: 2.5rem; padding: 3.5rem 0 3rem; }
.pie__marca img { width: 240px; }
.pie__texto { margin: 1rem 0 1.2rem; font-size: .92rem; color: var(--tiza-suave); }
.redes { display: flex; gap: .5rem; }
.pie__titulo { margin-bottom: .9rem; font-size: 1.35rem; text-transform: uppercase; letter-spacing: .06em; }
.pie__nav ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .4rem; }
.pie__nav a { font-family: var(--f-titulo); font-weight: 600; font-size: 1.05rem; letter-spacing: .05em; text-transform: uppercase; color: var(--tiza); text-decoration: none; }
.pie__nav a:hover { color: var(--rojo-vivo); }
.pie__contacto address { font-style: normal; }
.pie__contacto p { margin-bottom: .5rem; }
.pie__contacto a { text-decoration: none; }
.pie__contacto a:hover { color: var(--rojo-vivo); }
.horario__nota { margin: .6rem 0 0; font-size: .92rem; color: var(--tiza-suave); }
.pie__legal { border-top: 1px solid rgba(255, 255, 255, .08); padding: 1.1rem 0; font-size: .85rem; }
.pie__legal-fila { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .6rem 1.5rem; }
.pie__legal nav { display: flex; flex-wrap: wrap; gap: .4rem 1.2rem; }
.pie__legal a { color: var(--tiza-suave); text-decoration: none; }
.pie__legal a:hover { color: #fff; }
.pie__copy { font-family: var(--f-titulo); font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
@media (max-width: 960px) { .pie__rejilla { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .pie__rejilla { grid-template-columns: 1fr; gap: 2rem; } }

/* ---------------------------------------------------------------------------
   Visor · subir · piezas del núcleo
   --------------------------------------------------------------------------- */
.visor { position: fixed; inset: 0; z-index: 1000; display: grid; place-items: center; background: rgba(10, 10, 12, .94); }
.visor[hidden] { display: none; }
.visor__figura { margin: 0; max-width: min(92vw, 1400px); max-height: 90vh; display: grid; gap: .6rem; justify-items: center; }
.visor__img { max-width: 92vw; max-height: 80vh; width: auto; height: auto; object-fit: contain; box-shadow: var(--sombra); }
.visor__pie { color: var(--tiza-suave); font-size: .9rem; }
.visor__cerrar, .visor__nav { position: absolute; display: grid; place-items: center; width: 3rem; height: 3rem; border: 0; background: rgba(255, 255, 255, .08); color: #fff; cursor: pointer; transition: background var(--transicion); }
.visor__cerrar:hover, .visor__nav:hover { background: var(--rojo); }
.visor__cerrar { top: 1rem; right: 1rem; }
.visor__nav { top: 50%; transform: translateY(-50%); }
.visor__nav--prev { left: 1rem; }
.visor__nav--next { right: 1rem; }
.subir { position: fixed; right: 1.2rem; bottom: 1.2rem; z-index: 90; display: grid; place-items: center; width: 2.8rem; height: 2.8rem; background: var(--rojo); color: #fff; opacity: 0; transform: translateY(12px); pointer-events: none; transition: opacity var(--transicion), transform var(--transicion); clip-path: polygon(6px 0, 100% 0, calc(100% - 6px) 100%, 0 100%); }
.subir--visible { opacity: 1; transform: none; pointer-events: auto; }
.subir:hover { background: var(--rojo-vivo); color: #fff; }

.nucleo-legal__contenido { max-width: var(--ancho-estrecho); padding: 2.5rem var(--margen) 1rem; font-weight: 300; }
.nucleo-legal__contenido h2 { font-size: 1.7rem; text-transform: uppercase; }
.nucleo-legal__contenido h3 { font-size: 1.3rem; }
.nucleo-legal__contenido a { color: #fff; }
.nucleo-legal__tabla th, .nucleo-legal__tabla td { border-color: rgba(255, 255, 255, .12); }
.nucleo-404__contenido { max-width: var(--ancho-estrecho); padding: 2.5rem var(--margen); }
.nucleo-404__enlaces a { color: #fff; }
.nucleo-cookies { border-radius: 0; }
.nucleo-borrador { font-family: var(--f-texto); }

/* Fichas con foto */
.fichas { display: grid; gap: 1.25rem; grid-template-columns: repeat(var(--fic-cols, 3), minmax(0, 1fr)); }
.fichas--2 { --fic-cols: 2; }
.fichas--3 { --fic-cols: 3; }
.ficha { background: var(--humo); display: grid; grid-template-rows: auto 1fr; }
.ficha__foto { margin: 0; overflow: hidden; background: var(--asfalto); }
.ficha__foto img { width: 100%; height: 100%; object-fit: cover; transition: transform .9s cubic-bezier(.2, .7, .2, 1); }
.ficha:hover .ficha__foto img { transform: scale(1.04); }
.ficha__cuerpo { padding: 1.2rem 1.3rem 1.4rem; }
.ficha__titulo { font-size: 1.4rem; text-transform: uppercase; }
.ficha__texto { font-size: .98rem; font-weight: 300; }
.ficha__texto p:last-child { margin: 0; }
.ficha .botones { margin-top: 1rem; }
@media (max-width: 860px) { .fichas--3 { --fic-cols: 2; } }
@media (max-width: 560px) { .fichas--2, .fichas--3 { --fic-cols: 1; } }
