/* Módulos: texto, imagen, botón, separador, galería, carruseles, vídeo, mapa, cabecera ancha, miembros,
   destacados, redes, formularios, banner de cookies y blog. */

.mod { position: relative; background-position: center; background-size: cover; }
.fondo-oscuro, .fondo-oscuro h1, .fondo-oscuro h2, .fondo-oscuro h3, .fondo-oscuro h4, .fondo-oscuro h5, .fondo-oscuro h6 { color: #fff; }
.alin-izq { text-align: left; }
.alin-centro { text-align: center; }
.alin-der { text-align: right; }
.alin-just { text-align: justify; }

/* Texto */
.texto { word-wrap: break-word; }
.texto-int > :last-child { padding-bottom: 0; }
.texto ul, .codigo ul, .destacado-desc ul { list-style-type: disc; padding: 0 0 23px 1em; line-height: 26px; }
.texto ol, .codigo ol { list-style-type: decimal; padding: 0 0 23px 1em; line-height: 26px; }
.texto ul:last-child, .texto ol:last-child { padding-bottom: 0; }
.con-borde { border: 0 solid var(--color-texto); }

/* Imagen */
.imagen, .imagen-ac { margin-left: auto; margin-right: auto; line-height: 0; }
.imagen { text-align: center; }
.imagen-env { position: relative; display: inline-block; max-width: 100%; }
.imagen-env:has(> .img-hueco) { display: block; }
.imagen img, .imagen-ac img { position: relative; }
.imagen-ac img { width: 100%; }

/* Botón */
.boton-env { display: block; }
.boton-centro { text-align: center; }
.boton-der { text-align: right; }
.boton {
  position: relative;
  display: inline-block;
  padding: var(--boton-relleno);
  border: var(--boton-borde) solid var(--color-rojo);
  border-radius: var(--boton-radio);
  background-color: var(--color-crema);
  color: var(--color-titulos);
  font-size: var(--boton-texto);
  font-weight: var(--peso-normal);
  line-height: 1.7em !important;
  transition: var(--boton-transicion);
}
.boton:hover { color: var(--color-titulos); background-color: var(--color-crema); border-color: var(--color-rojo); }
/* Flecha que aparece al pasar el ratón (glifo «&» de ETmodules) */
.boton-icono {
  position: absolute; top: 50%;
  width: .8em; height: .8em;
  margin-left: -1em;
  color: var(--color-rojo);
  opacity: 0;
  transform: translateY(-50%);
  transition: all .3s ease;
}
.boton:hover .boton-icono { opacity: 1; margin-left: .3em; }

/* Separador */
.separador { position: relative; }
.espacio { box-sizing: content-box; height: 23px; }
.separador::before {
  content: ""; position: absolute; left: 0; top: 0; z-index: 10;
  width: 100%; height: 1px; border-top: 1px solid rgba(0, 0, 0, .1);
}
.separador-int { display: inline-block; width: 100%; }

/* Galería en rejilla + visor */
.galeria-items { display: flex; flex-wrap: wrap; }
.galeria-item { width: 20.875%; margin: 0 5.5% 5.5% 0; }
.galeria-item[hidden], .js .galeria-item.fuera-pagina { display: none; }
.galeria-paginas { width: 100%; border-top: 1px solid #e2e2e2; }
.galeria-paginas ul { list-style: none; margin: 0; padding: 0; text-align: right; }
.alin-izq .galeria-paginas ul { text-align: left; }
.alin-centro .galeria-paginas ul { text-align: center; }
.galeria-paginas li { display: inline-block; padding: 10px; }
.galeria-paginas li[hidden] { display: none; }
.galeria-paginas a { font-size: 16px; line-height: 16px; color: #999; }
.galeria-paginas a.activo { color: var(--color-rojo); }
.fondo-oscuro .galeria-paginas a { color: #fff; }
.galeria-item:nth-child(4n) { margin-right: 0; }
.col-1-2 .galeria-item { width: 44.18%; margin: 0 11.64% 11.64% 0; }
.col-1-2 .galeria-item:nth-child(4n) { margin-right: 11.64%; }
.col-1-2 .galeria-item:nth-child(2n) { margin-right: 0; }
.col-1-3 .galeria-item, .col-1-4 .galeria-item { width: 100%; margin-right: 0; }
.galeria-img { position: relative; line-height: 0; overflow: hidden; }
.galeria-img a { display: block; position: relative; }
.galeria-img img { width: 100%; aspect-ratio: 400 / 284; object-fit: cover; }
.galeria-titulo { margin: 10px 0 0; padding-bottom: 0; font-size: 19px; word-wrap: break-word; }
.galeria-leyenda { margin: .4em 0 0; padding-bottom: 0; font-size: 14px; line-height: 1.7; }
.velo {
  position: absolute; inset: 0; z-index: 3;
  background-color: rgba(255, 255, 255, .9);
  border: 1px solid #e5e5e5;
  opacity: 0; transition: all .3s;
}
.velo::before {
  content: ""; position: absolute; top: 50%; left: 50%; width: 32px; height: 32px;
  transform: translate(-50%, -50%);
  background-color: var(--color-rojo);
  -webkit-mask: url("../icons/lupa.svg") center / contain no-repeat;
  mask: url("../icons/lupa.svg") center / contain no-repeat;
}
.galeria-img a:hover .velo, .galeria-img a:focus-visible .velo { opacity: 1; }

.visor {
  position: fixed; inset: 0; z-index: 1000001;
  display: flex; align-items: center; justify-content: center;
  background: rgba(0, 0, 0, .8);
}
.visor[hidden] { display: none; }
.visor figure { max-width: 90vw; max-height: 90vh; text-align: center; color: #ccc; font-size: 14px; }
.visor img { max-width: 90vw; max-height: 82vh; width: auto; box-shadow: 0 0 8px rgba(0, 0, 0, .6); }
.visor figcaption { padding-top: 8px; line-height: 1.4; }
.visor button {
  position: absolute; border: 0; background: none; color: #fff; font-size: 44px; line-height: 0; padding: 12px; opacity: .65;
}
.visor button:hover { opacity: 1; }
.visor-cerrar { top: 10px; right: 10px; font-size: 32px !important; }
.visor-ant { left: 10px; top: 50%; transform: translateY(-50%); }
.visor-sig { right: 10px; top: 50%; transform: translateY(-50%); }

/* Galería en carrusel (gallery_fullwidth de Divi) */
.galeria-carrusel .diapositiva { width: 100% !important; margin: 0 !important; padding: 0; background: none; line-height: 0; }
.galeria-carrusel .diapositiva img { width: 100%; }
.galeria-carrusel .carrusel-puntos { bottom: 20px; }

/* Carrusel de diapositivas */
.carrusel { position: relative; overflow: hidden; }
.carrusel-pistas { position: relative; }
.diapositiva {
  display: none;
  position: relative;
  width: 100%;
  padding: 0 6%;
  background-position: center; background-size: cover; background-color: #333;
}
.diapositiva.activa { display: block; animation: fundido .7s ease-in-out; }
.diapositiva-cont { display: table; width: 100%; height: 100%; }
.diapositiva-int { display: table-cell; vertical-align: middle; }
.diapositiva-desc { padding: 16% 8%; text-align: center; word-wrap: break-word; }
.diapositiva-titulo { font-size: 55px; font-weight: 300; line-height: 1em; }
.diapositiva, .diapositiva h1, .diapositiva h2, .diapositiva h3, .diapositiva-titulo { color: #fff; }
.diapositiva-texto { font-size: 20px; font-weight: 500; }
.carrusel-flechas button {
  position: absolute; top: 50%; z-index: 100; margin-top: -24px;
  border: 0; background: none; color: #fff; font-size: 48px; line-height: 0; padding: 0;
  opacity: 0; transition: all .3s ease-in-out;
}
.carrusel-ant { left: 22px; }
.carrusel-sig { right: 22px; }
.carrusel:hover .carrusel-flechas button, .carrusel-flechas button:focus-visible { opacity: 1; }
.carrusel-puntos { position: absolute; bottom: 20px; left: 0; width: 100%; z-index: 10; text-align: center; }
.carrusel-puntos button {
  display: inline-block; width: 7px; height: 7px; margin-right: 10px; padding: 0;
  border: 0; border-radius: 7px; background-color: #fff; opacity: .5; text-indent: -9999px;
}
.carrusel-puntos button.activo { opacity: 1; }
@keyframes fundido { from { opacity: 0; } to { opacity: 1; } }

/* Vídeo, mapa y consentimiento */
.video .video-caja, .carrusel-video .video-caja { aspect-ratio: 16 / 9; }
.video-caja { position: relative; width: 100%; line-height: 0; }
.video-caja iframe, .video-caja video { width: 100%; height: 100%; border: 0; }
/* Divi aplica FitVids a los iframes de YouTube: ancho completo y proporción 560 × 315 */
.codigo-int .video-caja, .codigo-ac .video-caja { width: 100%; aspect-ratio: 560 / 315; }
.codigo-int iframe { border: 0; }
.consentimiento {
  position: relative; overflow: hidden; line-height: 1.4;
  background: #000 center / cover no-repeat;
  display: flex; align-items: center; justify-content: center;
}
.consentimiento-portada { position: absolute; inset: 0; width: 100%; height: 100% !important; object-fit: cover; }
/* Aviso de bloqueo con las medidas de Complianz */
.consentimiento-aviso {
  position: relative; z-index: 1; width: 300px; max-width: 100%; padding: 10px;
  background: rgba(0, 0, 0, .5); color: #fff; font-size: 14px; line-height: 23px; text-align: center;
}
.consentimiento-aviso p { padding-bottom: 0; }
.consentimiento-aviso a { color: #fff; text-decoration: underline; display: block; }
.consentimiento-aceptar { border: 1px solid #767676; border-radius: 2px; background: #efefef; color: #000; font-size: 13.3333px; padding: 1px 6px; margin-top: 4px; }
.consentimiento.cargado { background: none; }
.consentimiento.cargado iframe { position: absolute; inset: 0; width: 100%; height: 100%; }
/* Como el marcador de Complianz: ancho completo con la proporción de su imagen (1280 × 920) */
.mapa { width: 100%; aspect-ratio: 1280 / 920; }
.mapa.cargado { aspect-ratio: auto; height: 450px; }

.carrusel-video .carrusel-pistas .diapositiva { padding: 0; background: none; }
.carrusel-miniaturas { display: flex; gap: 2%; margin-top: 2%; }
.miniatura { position: relative; flex: 0 0 23.5%; padding: 0; border: 0; background: #000; line-height: 0; opacity: .7; }
.miniatura.activo, .miniatura:hover { opacity: 1; }
.miniatura img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.miniatura .video-play { position: absolute; top: 50%; left: 50%; width: 40px; height: 40px; margin: -20px 0 0 -20px; color: #fff; }

/* Cabecera de ancho completo (hero) */
.cabecera-ac { position: relative; padding: 50px 0; background-position: center; background-size: cover; }
.cabecera-ac-cont { position: relative; z-index: 3; display: flex; align-items: center; width: 80%; max-width: var(--fila-max); margin: auto; }
.cabecera-ac-txt { width: 100%; }
.cabecera-ac-txt-int { padding: 10px 0; }
.cabecera-ac-sub { display: block; font-size: 18px; }
.cabecera-ac-desc p { padding-bottom: 0; }
.cabecera-ac .boton { margin: 20px 15px 0 0; }
.cabecera-ac-img { max-width: 50%; text-align: right; }
.cabecera-ac-velo { position: absolute; inset: 0; z-index: 1; pointer-events: none; }
.fondo-oscuro.cabecera-ac, .fondo-oscuro .mod-titulo, .fondo-oscuro .cabecera-ac-sub { color: #fff; }

/* Miembro del equipo */
.miembro { display: flex; align-items: flex-start; word-wrap: break-word; }
.miembro-img { flex: none; max-width: 320px; margin-right: 30px; line-height: 0; }
.miembro-desc { flex: 1; }
.miembro .mod-titulo { padding-bottom: 0; }
.miembro-cargo { padding-bottom: 20px; }
.miembro-redes { display: flex; gap: 10px; list-style: none; padding: 0; margin-top: 20px; }
/* En columnas estrechas Divi apila imagen y texto; la imagen ocupa el ancho de la columna */
:is(.col-1-3, .col-1-4, .col-1-5, .col-1-6) .miembro { display: block; }
:is(.col-1-3, .col-1-4, .col-1-5, .col-1-6) .miembro-img { max-width: none; margin: 0 0 12px; }
:is(.col-1-3, .col-1-4, .col-1-5, .col-1-6) .miembro-img img { width: 100%; }

/* Destacado (blurb) */
.destacado-img { margin: 0 auto 30px; line-height: 0; text-align: center; }
.destacado .mod-titulo { padding-bottom: 10px; }

/* Redes sociales (seguir) */
.redes { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; list-style: none; margin: 0; padding: 0; }
.alin-izq.redes { justify-content: flex-start; }
.red-icono {
  display: flex; align-items: center; justify-content: center;
  width: 32px; height: 32px; border-radius: 3px;
  background-color: #333; color: #fff; font-size: 16px;
}
.red-nombre { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.red-facebook .red-icono { background-color: #3b5998; }
.red-instagram .red-icono { background-color: #ea2c59; }
.red-linkedin .red-icono { background-color: #007bb6; }
.red-youtube .red-icono { background-color: #a82400; }
.red-google .red-icono { background-color: #dd4b39; }

/* Formularios (aspecto de Contact Form 7 con el tema, medido en la original) */
.formulario p { padding-bottom: 18px; }
.formulario label { display: block; }
.formulario input[type="text"], .formulario input[type="email"], .formulario input[type="tel"], .formulario textarea {
  width: 100%; height: 48px; padding: 16px; border: 1px solid #ccc; border-radius: 0;
  background-color: var(--color-crema); color: #999; font: inherit; font-size: 14px; line-height: normal;
}
.formulario textarea { height: 174px; resize: vertical; }
.formulario input::placeholder, .formulario textarea::placeholder { color: #999; opacity: 1; }
/* Desplegables con el aspecto nativo que muestra la original */
.formulario select {
  width: auto; height: 22px; padding: 1px 2px; border: 1px solid #bbb; border-radius: 0;
  background-color: #fff; color: #000; font: inherit; font-size: 13.3333px; line-height: normal;
}
.formulario-aceptar { display: flex !important; align-items: baseline; gap: 6px; }
.formulario-enviar {
  float: right; margin-top: 8px; padding: 6px 20px;
  border: var(--enviar-borde) solid var(--color-rojo);
  background-color: var(--enviar-fondo); color: var(--color-crema);
  font: inherit; font-size: var(--boton-texto); line-height: 34px;
  cursor: pointer; transition: all .2s;
}
.formulario::after { content: ""; display: block; clear: both; }
.formulario-enviar:hover { color: var(--color-titulos); background-color: #eee; border-color: #eee; }
.formulario-error { display: block; color: #dc3232; font-size: 1em; font-weight: normal; }
.formulario-error:empty { display: none; }
.formulario-respuesta { margin: 0 0 1em; padding: .2em 1em; border: 2px solid #ffb900; }
.formulario-trampa { position: absolute; left: -9999px; }
/* Banner de cookies (sustituye a Complianz) */
.cookies {
  position: fixed; right: 10px; bottom: 10px; z-index: 1000000;
  width: 526px; max-width: calc(100% - 20px);
  padding: 20px; border-radius: 12px;
  background: #fff; color: #222; box-shadow: 0 0 10px rgba(0, 0, 0, .25);
  font-size: 12px; line-height: 1.5;
}
.cookies[hidden] { display: none; }
.cookies-titulo { font-size: 15px; font-weight: 600; padding-bottom: 10px; }
.cookies-texto { padding-bottom: 12px; }
.cookies-botones { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.cookies-botones button { flex: 1; min-width: 120px; padding: 10px; border: 1px solid var(--color-rojo); border-radius: 5px; font-size: 13px; font-weight: 500; }
.cookies-aceptar { background: var(--color-rojo); color: #fff; }
.cookies-denegar { background: #f9f9f9; color: #222; }
.cookies-gestionar {
  position: fixed; right: 40px; bottom: 0; z-index: 99998;
  padding: 7px 15px; border: 1px solid var(--color-rojo); border-bottom: 0; border-radius: 5px 5px 0 0;
  background: #fff; color: #222; font-size: 12px; box-shadow: 0 0 5px rgba(0, 0, 0, .2);
}
.cookies-gestionar[hidden] { display: none; }

/* Blog: listado, entrada y barra lateral (plantilla de archivo de Divi) */
.contenedor-lateral { display: flex; align-items: flex-start; padding-top: 58px; }
.contenedor-lateral::before {
  content: ""; position: absolute; top: 0; right: 20.875%; width: 1px; height: 100%; background: #e2e2e2;
}
.area-principal { width: 79.125%; padding: 0 5.5% 23px 0; }
.lateral-blog { width: 20.875%; padding: 0 0 28px 30px; }
.entrada { margin-bottom: 60px; word-wrap: break-word; }
.entrada-imagen { display: block; margin-bottom: 30px; line-height: 0; }
.entrada-imagen img { width: 100%; }
.entrada-titulo { font-weight: var(--peso-normal); padding-bottom: 10px; line-height: 1em; } /* tamaño de h2 del tema */
.entrada-titulo a { color: var(--color-titulos); }
.entrada-meta { font-size: 14px; padding-bottom: 15px !important; margin-bottom: 6px; color: var(--color-texto); }
.entrada-meta a { color: var(--color-rojo); }
.entrada-extracto { font-size: inherit; }
.entrada-cabecera { padding-bottom: 30px; }
.entrada-unica .entrada-titulo { font-size: 19px; font-weight: var(--peso-negrita); line-height: 1.6em; padding-bottom: 10px; }
.entrada-cuerpo .fila { width: 100%; }
.paginacion { display: flex; justify-content: space-between; font-size: 14px; }
.paginacion-siguientes { margin-left: auto; }
.widget-paginas ul { list-style: none; margin: 0; padding: 0; }
.widget-paginas ul ul { padding-left: 15px; }
.widget-paginas li { margin-bottom: .5em; }
.widget-paginas a { color: #666; }
.widget-paginas a:hover { color: var(--color-rojo); }
.compartir { text-align: center; padding: 20px 0; }
.compartir-titulo { font-size: 14px; padding-bottom: 10px; }
.compartir ul { display: flex; justify-content: center; gap: 8px; list-style: none; margin: 0; padding: 0; }
.compartir a { display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 50%; color: #fff; font-size: 16px; }
.compartir-facebook a { background: #3b5998; }
.compartir-whatsapp a { background: #25d366; }
.compartir-linkedin a { background: #007bb6; }
.compartir-telegram a { background: #0088cc; }
.compartir-x a { background: #000; }
.compartir-email a { background: #666; }


@media only screen and (max-width: 980px) {
  .galeria-item, .col-1-2 .galeria-item { width: 29.666%; margin: 0 5.5% 5.5% 0 !important; }
  .galeria-item:nth-child(3n) { margin-right: 0 !important; }
  .diapositiva-titulo { font-size: 39px; }
  .galeria-titulo { font-size: 13px; }
  .contenedor-lateral { display: block; }
  .contenedor-lateral::before { display: none; }
  .area-principal, .lateral-blog { width: 100%; padding: 0; }
  .lateral-blog { margin-top: 30px; }
  .cabecera-ac-cont { display: block; }
  .cabecera-ac-img { max-width: 100%; }
}

@media only screen and (max-width: 767px) {
  .galeria-item, .col-1-2 .galeria-item { width: 47.25%; }
  .galeria-item:nth-child(3n) { margin-right: 5.5% !important; }
  .galeria-item:nth-child(2n) { margin-right: 0 !important; }
  .miembro { display: block; }
  .miembro-img { margin: 0 0 12px; max-width: none; width: 100%; text-align: center; }
  .miembro-img img { width: 100%; }
  .diapositiva-titulo { font-size: 33px; }
  .galeria-titulo { font-size: 11px; }
  .entrada { margin-bottom: 42px; }
  .entrada-titulo { font-size: 16px; }
  .lateral-blog { margin-top: 0; }
  .diapositiva-texto { font-size: 11px; }
  .carrusel-flechas { display: none; }
}

@media only screen and (max-width: 479px) {
  .galeria-item, .col-1-2 .galeria-item { width: 100%; margin-right: 0 !important; }
}
