/*
 * Estilos base del contenido importado (vocabulario común a todas las webs).
 * Cada tema define su identidad con estas variables y añade su propia hoja después.
 */
:root {
  --ancho-texto: 44rem;
  --ancho-amplio: 72rem;
  --hueco: clamp(1rem, 3vw, 2rem);
  --radio: 6px;
  --color-texto: #1d1d1f;
  --color-fondo: #fff;
  --color-suave: #f4f2ee;
  --color-borde: #e2ddd5;
  --color-acento: #9b2c1f;
  --color-acento-texto: #fff;
  --color-tenue: #6b6760;
  --fuente-texto: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --fuente-titulos: var(--fuente-texto);
}

.contenido { line-height: 1.7; overflow-wrap: break-word; }
.contenido > * { max-width: var(--ancho-texto); margin-left: auto; margin-right: auto; }
.contenido > :first-child { margin-top: 0; }
.contenido > .alignwide, .contenido > .seccion, .contenido > .columnas, .contenido > .galeria, .contenido > .rejilla,
.contenido > .diapositivas, .contenido > .grupo, .contenido > .tarjetas, .contenido > .x-ultimas, .contenido > figure.tabla,
.contenido > .cabecera-bloque { max-width: var(--ancho-amplio); }
.contenido > .alignfull, .contenido > .ancho-completo { max-width: none; }
.contenido p, .contenido ul, .contenido ol, .contenido blockquote, .contenido figure, .contenido details, .contenido pre { margin-block: 0 1.25em; }
.contenido h2, .contenido h3, .contenido h4, .contenido h5, .contenido h6 { font-family: var(--fuente-titulos); line-height: 1.2; margin: 1.8em auto .6em; text-wrap: balance; }
.contenido img, .contenido video { max-width: 100%; height: auto; }
.contenido a { color: var(--color-acento); text-underline-offset: .18em; text-decoration-thickness: 1px; }
.contenido a:hover { text-decoration-thickness: 2px; }
.contenido hr, .contenido .separador { border: 0; border-top: 1px solid var(--color-borde); margin-block: 2.5em; }
.contenido blockquote { border-left: 3px solid var(--color-acento); padding: .2em 0 .2em 1.25em; font-style: italic; color: inherit; }
.contenido blockquote.destacado, .contenido .destacado { border: 0; border-block: 1px solid var(--color-borde); padding: 1.5em 0; text-align: center; font-size: 1.25em; font-style: normal; font-family: var(--fuente-titulos); }
.contenido blockquote.grande { font-size: 1.2em; }
.contenido pre, .contenido .codigo { overflow-x: auto; background: var(--color-suave); padding: 1em 1.25em; border-radius: var(--radio); font-size: .9em; }
.contenido .verso { white-space: pre-wrap; font-family: inherit; background: none; padding: 0; }
.contenido .centrado { text-align: center; }
.contenido .derecha { text-align: right; }
.contenido figcaption { font-size: .875em; color: var(--color-tenue); margin-top: .5em; text-align: center; }

/* imágenes y alineación */
.contenido figure.imagen img, .contenido p > img { display: block; border-radius: var(--radio); }
.contenido .aligncenter, .contenido figure.aligncenter img { margin-left: auto; margin-right: auto; text-align: center; }
.contenido .alignleft, .contenido .alignright { max-width: min(50%, 22rem); }
@media (min-width: 40rem) {
  .contenido .alignleft { float: left; margin: .3em 1.5em 1em 0; }
  .contenido .alignright { float: right; margin: .3em 0 1em 1.5em; }
  .contenido > .alignleft { margin-left: max(0px, calc((100% - var(--ancho-texto)) / 2)); }
  .contenido > .alignright { margin-right: max(0px, calc((100% - var(--ancho-texto)) / 2)); }
}
.contenido::after { content: ""; display: table; clear: both; }

/* rejillas y columnas */
.contenido .columnas, .contenido .rejilla { display: grid; gap: var(--hueco); grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); align-items: start; margin-block: 0 2em; }
.contenido .columnas[data-columnas="2"] { grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); }
.contenido .columna > :last-child, .contenido .grupo > :last-child { margin-bottom: 0; }
.contenido .seccion { margin-block: 0 2.5em; }
.contenido .fila { margin-block: 0 1em; }
.contenido .grupo { margin-block: 0 2em; }

/* bloques con imagen de fondo */
.contenido .con-fondo { position: relative; isolation: isolate; color: #fff; padding: clamp(2rem, 6vw, 5rem) clamp(1.25rem, 4vw, 3rem); border-radius: var(--radio); overflow: hidden; min-height: 14rem; display: flex; flex-direction: column; justify-content: center; }
.contenido .con-fondo > img.fondo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; border-radius: 0; margin: 0; max-width: none; }
.contenido .con-fondo::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(0,0,0,.25), rgba(0,0,0,.6)); }
.contenido .con-fondo a:not(.boton) { color: inherit; }
.contenido .columnas.con-fondo { display: grid; }
.contenido .columna.con-fondo:not(:has(> :not(img.fondo))) { min-height: 18rem; }
.contenido .columna.con-fondo:not(:has(> :not(img.fondo)))::before { display: none; }

/* botones */
.contenido .botones { display: flex; flex-wrap: wrap; gap: .75rem; }
.contenido .boton, .x-contacto .boton, .x-buscador button {
  display: inline-flex; align-items: center; gap: .5em; padding: .75em 1.4em; border-radius: var(--radio); border: 1px solid var(--color-acento);
  background: var(--color-acento); color: var(--color-acento-texto); font: inherit; font-weight: 600; text-decoration: none; cursor: pointer; line-height: 1.2;
  transition: transform .15s ease, box-shadow .15s ease, background-color .15s ease;
}
.contenido .boton:hover, .x-contacto .boton:hover, .x-buscador button:hover { transform: translateY(-1px); box-shadow: 0 6px 18px -8px rgba(0,0,0,.4); }
.contenido .boton.secundario { background: transparent; color: var(--color-acento); }

/* galerías */
.contenido .galeria { display: grid; gap: .5rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 11rem), 1fr)); }
.contenido .galeria[data-columnas="2"] { grid-template-columns: repeat(auto-fill, minmax(min(100%, 18rem), 1fr)); }
.contenido .galeria figure, .contenido .galeria-item { margin: 0; }
.contenido .galeria img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: calc(var(--radio) / 2); display: block; }
.contenido .galeria figcaption { font-size: .78em; }

/* vídeos, audio, mapas, incrustados */
.contenido figure.video, .contenido figure.mapa, .contenido figure.incrustado { position: relative; }
.contenido figure.video iframe, .contenido figure.mapa iframe { width: 100%; aspect-ratio: 16 / 9; height: auto; border: 0; border-radius: var(--radio); display: block; background: #000; }
.contenido figure.mapa iframe { aspect-ratio: 4 / 3; background: var(--color-suave); }
.contenido figure.incrustado iframe { width: 100%; min-height: 20rem; border: 0; }
.contenido figure.audio-externo iframe { min-height: 0; }
.contenido audio { width: 100%; }
.contenido .publicacion-social { font-style: normal; border: 1px solid var(--color-borde); border-radius: var(--radio); padding: 1em 1.25em; }
.contenido .publicacion-social p { margin: 0 0 .3em; font-weight: 600; }
.x-mapa { background: var(--color-suave); border-radius: var(--radio); padding: 1.25rem; }
.x-mapa figcaption { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; justify-content: center; margin: 0; color: inherit; font-size: 1em; }
.x-mapa figcaption span { flex-basis: 100%; text-align: center; }
.x-mapa button { font: inherit; padding: .5em 1em; border-radius: var(--radio); border: 1px solid var(--color-acento); background: var(--color-acento); color: var(--color-acento-texto); cursor: pointer; }

/* tablas */
.contenido figure.tabla { overflow-x: auto; }
.contenido table { border-collapse: collapse; width: 100%; font-size: .95em; }
.contenido th, .contenido td { border-bottom: 1px solid var(--color-borde); padding: .6em .75em; text-align: left; vertical-align: top; }
.contenido th { font-weight: 600; background: var(--color-suave); }

/* desplegables */
.contenido details.desplegable { border: 1px solid var(--color-borde); border-radius: var(--radio); padding: 0 1.25em; margin-block: 0 .75em; background: var(--color-fondo); }
.contenido details.desplegable summary { cursor: pointer; padding: 1em 0; font-weight: 600; list-style: none; display: flex; justify-content: space-between; gap: 1em; }
.contenido details.desplegable summary::-webkit-details-marker { display: none; }
.contenido details.desplegable summary::after { content: "+"; font-weight: 400; transition: transform .2s; }
.contenido details.desplegable[open] summary::after { transform: rotate(45deg); }
.contenido details.desplegable[open] { padding-bottom: 1em; }

/* tarjetas, personas, testimonios, cifras, llamadas */
.contenido .tarjeta, .contenido .persona, .contenido .tarifa { background: var(--color-suave); border-radius: var(--radio); padding: 1.5rem; }
.contenido .tarjeta h3, .contenido .persona h3 { margin-top: .25em; }
.contenido .tarjeta-imagen img, .contenido .persona figure img { border-radius: var(--radio); width: 100%; object-fit: cover; }
.contenido .persona .cargo { color: var(--color-tenue); margin-top: -.4em; }
.contenido .testimonio { font-style: normal; border: 0; background: var(--color-suave); border-radius: var(--radio); padding: 1.5rem 1.75rem; }
.contenido .testimonio footer { font-weight: 600; margin-top: .75em; }
.contenido .testimonio img { width: 4rem; height: 4rem; border-radius: 50%; object-fit: cover; }
.contenido .cifra { text-align: center; }
.contenido .cifra strong { display: block; font-family: var(--fuente-titulos); font-size: clamp(2rem, 5vw, 3rem); line-height: 1; color: var(--color-acento); }
.contenido .llamada, .contenido .caja { background: var(--color-suave); border-left: 4px solid var(--color-acento); border-radius: var(--radio); padding: 1.5rem 1.75rem; }
.contenido .cabecera-bloque { text-align: center; padding-block: clamp(2rem, 6vw, 4rem); }
.contenido .antetitulo, .contenido .rotulo { text-transform: uppercase; letter-spacing: .12em; font-size: .8em; font-weight: 600; color: var(--color-acento); margin-bottom: .25em; }
.contenido .subtitulo { font-size: 1.15em; color: var(--color-tenue); }
.contenido .barras { list-style: none; padding: 0; }
.contenido .barras li { display: flex; justify-content: space-between; border-bottom: 1px solid var(--color-borde); padding: .4em 0; }
.contenido .redes { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem 1rem; }
.contenido .lista-iconos { list-style: none; padding-left: 0; }
.contenido .lista-iconos li { padding-left: 1.5em; position: relative; margin-bottom: .4em; }
.contenido .lista-iconos li::before { content: "✓"; position: absolute; left: 0; color: var(--color-acento); font-weight: 700; }
.contenido .archivo { display: flex; flex-wrap: wrap; gap: .5em 1em; align-items: center; background: var(--color-suave); border-radius: var(--radio); padding: .9em 1.1em; }
.contenido .medio-texto { display: grid; gap: var(--hueco); grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)); align-items: center; }

/* diapositivas: carrusel desplazable sin JS */
.contenido .diapositivas { display: grid; grid-auto-flow: column; grid-auto-columns: 100%; overflow-x: auto; scroll-snap-type: x mandatory; gap: 1rem; border-radius: var(--radio); scrollbar-width: thin; }
.contenido .diapositiva { scroll-snap-align: start; position: relative; margin: 0; }
.contenido .diapositiva img { width: 100%; aspect-ratio: 16 / 8; object-fit: cover; border-radius: var(--radio); display: block; }
.contenido .diapositiva-texto { position: absolute; inset: auto 0 0 0; padding: 2rem 1.5rem 1.25rem; color: #fff; background: linear-gradient(transparent, rgba(0,0,0,.65)); border-radius: 0 0 var(--radio) var(--radio); }
.contenido .diapositiva-texto h2 { margin: 0; color: inherit; }
.contenido .diapositiva:not(:has(img)) .diapositiva-texto { position: static; background: var(--color-suave); color: inherit; }

/* listado de últimas entradas, buscador, formularios */
.x-ultimas { display: grid; gap: var(--hueco); grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr)); margin-block: 0 2em; }
.x-tarjeta { display: flex; flex-direction: column; gap: .75rem; }
.x-tarjeta-imagen img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; border-radius: var(--radio); display: block; }
.x-tarjeta h3 { margin: .2em 0; font-size: 1.15rem; }
.x-tarjeta h3 a { color: inherit; text-decoration: none; }
.x-tarjeta time { font-size: .85em; color: var(--color-tenue); }
.x-tarjeta p { margin: 0; font-size: .95em; }
.x-oculto { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.x-buscador { display: flex; gap: .5rem; max-width: 32rem; }
.x-buscador label { flex: 1; }
.x-buscador input { width: 100%; font: inherit; padding: .7em .9em; border: 1px solid var(--color-borde); border-radius: var(--radio); background: var(--color-fondo); color: inherit; }
.x-contacto { display: grid; gap: 1rem 1.25rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); max-width: var(--ancho-texto); margin-inline: auto; }
.x-contacto .x-campo-ancho { grid-column: 1 / -1; }
.x-contacto .x-campo { margin: 0; display: flex; flex-direction: column; gap: .35rem; }
.x-contacto label { font-weight: 600; font-size: .92em; }
.x-contacto label span { font-weight: 400; color: var(--color-tenue); }
.x-contacto input:not([type=checkbox]), .x-contacto textarea { font: inherit; padding: .75em .9em; border: 1px solid var(--color-borde); border-radius: var(--radio); background: var(--color-fondo); color: inherit; width: 100%; }
.x-contacto input:focus, .x-contacto textarea:focus, .x-buscador input:focus { outline: 2px solid var(--color-acento); outline-offset: 1px; }
.x-contacto .x-acepto label { font-weight: 400; display: flex; gap: .6em; align-items: flex-start; }
.x-contacto .x-acepto input { margin-top: .35em; }
.x-contacto p { margin: 0; }
.x-trampa { position: absolute; left: -9999px; }
.x-aviso { padding: 1em 1.25em; border-radius: var(--radio); max-width: var(--ancho-texto); margin-inline: auto; }
.x-aviso-ok { background: #e7f5ea; color: #1e5b2b; }
.x-aviso-error { background: #fbe9e7; color: #8a2216; }
.x-terminos, .x-archivo, .x-paginas { list-style: none; padding: 0; columns: 14rem; }
.x-terminos span, .x-archivo span { color: var(--color-tenue); font-size: .85em; }

/* paginación */
.paginacion { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; margin-block: 3rem 1rem; }
.paginacion-numeros { display: flex; gap: .35rem; flex-wrap: wrap; }
.paginacion a, .paginacion span[aria-current] { min-width: 2.4em; text-align: center; padding: .45em .7em; border-radius: var(--radio); text-decoration: none; color: inherit; border: 1px solid var(--color-borde); }
.paginacion span[aria-current] { background: var(--color-acento); color: var(--color-acento-texto); border-color: var(--color-acento); }
.paginacion-salto { padding: .45em .2em; color: var(--color-tenue); }

/* visor de imágenes */
.x-visor { position: fixed; inset: 0; z-index: 1000; background: rgba(10,10,10,.92); display: grid; place-items: center; padding: 2rem; cursor: zoom-out; }
.x-visor img { max-width: 100%; max-height: 90vh; object-fit: contain; border-radius: 4px; box-shadow: 0 20px 60px rgba(0,0,0,.5); }
.x-visor button { position: absolute; top: 1rem; right: 1rem; background: none; border: 0; color: #fff; font-size: 2rem; cursor: pointer; line-height: 1; }
.x-visor .x-visor-ant, .x-visor .x-visor-sig { top: 50%; transform: translateY(-50%); font-size: 2.5rem; padding: 1rem; }
.x-visor .x-visor-ant { left: .5rem; right: auto; }
.x-visor .x-visor-sig { right: .5rem; }

@media (prefers-reduced-motion: reduce) { * { scroll-behavior: auto !important; transition: none !important; animation: none !important; } }
@media print { .x-contacto, .x-buscador, .paginacion { display: none; } }

/* vídeo bajo demanda (YouTube/Vimeo no se cargan hasta pulsar) */
.x-video { position: relative; display: grid; place-items: center; width: 100%; aspect-ratio: 16 / 9; border: 0; border-radius: var(--radio); cursor: pointer; padding: 1rem; font: inherit; color: #fff;
  background: radial-gradient(120% 90% at 50% 40%, #2a2a2a, #0d0d0d); overflow: hidden; }
.x-video::before { content: ""; position: absolute; inset: 0; background: linear-gradient(135deg, color-mix(in srgb, var(--color-acento) 35%, transparent), transparent 60%); opacity: .6; }
.x-video-icono { position: relative; color: #e3262d; transition: transform .2s ease; }
.x-video:hover .x-video-icono, .x-video:focus-visible .x-video-icono { transform: scale(1.08); }
.x-video-texto { position: absolute; left: 0; right: 0; bottom: 1rem; text-align: center; font-size: .95rem; font-weight: 600; text-shadow: 0 1px 2px rgba(0,0,0,.6); }
.x-video-texto small { display: block; font-weight: 400; opacity: .75; font-size: .78rem; }
.x-video:focus-visible { outline: 3px solid var(--color-acento); outline-offset: 2px; }
figure.video > iframe:only-child, figure.video > .x-video { display: block; }
.contenido figure.imagen img:not(a img), .contenido .galeria img:not(a img) { cursor: zoom-in; }

/* figuras anidadas (columnas, grupos…): sin el margen lateral de 40px del navegador */
.contenido > :not(figure) figure { margin-inline: 0; }

.x-incrustado { aspect-ratio: auto; min-height: 9rem; background: var(--color-suave); color: var(--color-texto); border: 1px dashed var(--color-borde); }
.x-incrustado::before { display: none; }
.x-incrustado .x-video-texto { position: static; text-shadow: none; }
