/* KLEO · módulo PROYECTOS — estructura pública de los bloques (la carga cualquier visitante).
   Solo la maqueta que garantiza que nada se descuadre; colores, tipografías y espacios los pone el tema
   (con variables --kp-* y con las clases que añade por el filtro kp_clase).
   (c) Jesus Burgos & EditARTEX */
.kp-proyecto { display: flow-root; }
.kp-bloque { position: relative; margin: 0 0 var(--kp-aire, 40px); }
.kp-bloque:last-child { margin-bottom: 0; }
.kp-video .kp-ratio { position: relative; height: 0; overflow: hidden; }
.kp-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.kp-imagen { margin: 0; width: var(--kp-ancho, 100%); max-width: 100%; }
.kp-imagen img, .kp-galeria img { display: block; width: 100%; height: auto; }
/* galería por columnas */
.kp-galeria { display: grid; grid-template-columns: repeat(var(--kp-cols, 2), minmax(0, 1fr)); gap: var(--kp-hueco, 8px); }
.kp-galeria figure { margin: 0; position: relative; min-width: 0; }
/* galería en mosaico: filas que se rellenan respetando la proporción de cada foto */
.kp-galeria.kp-mosaico { display: flex; flex-wrap: wrap; }
.kp-galeria.kp-mosaico figure { flex: var(--kp-r, 1.5) 1 calc(var(--kp-r, 1.5) * var(--kp-fila, 260px)); }
.kp-galeria.kp-mosaico::after { content: ""; flex: 1000 1 0; }
.kp-galeria.kp-mosaico img { height: 100%; object-fit: cover; }
/* texto bilingüe y dos columnas */
.kp-bilingue { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--kp-hueco-texto, 40px); align-items: start; }
.kp-columnas { display: flex; gap: var(--kp-hueco-texto, 40px); align-items: flex-start; }
.kp-columna { position: relative; min-width: 0; flex: var(--kp-w1, 50) 1 0; }
.kp-columna + .kp-columna { flex-grow: var(--kp-w2, 50); }
.kp-columnas.kp-va-center { align-items: center; }
.kp-columnas.kp-va-bottom { align-items: flex-end; }
.kp-en { color: var(--kp-en-color, #9d9d9d); }
.kp-texto, .kp-es, .kp-en, .kp-titulo { overflow-wrap: anywhere; }
.kp-vacio { display: flex; align-items: center; justify-content: center; min-height: 120px; width: 100%; background: #f2f2f2; color: #999; font: 14px/1.4 system-ui, sans-serif; }
.kp-video .kp-vacio { position: absolute; inset: 0; min-height: 0; }
@media (max-width: 1024px) {
  .kp-galeria:not(.kp-mosaico) { grid-template-columns: repeat(min(var(--kp-cols, 2), 2), minmax(0, 1fr)); }
}
@media (max-width: 767px) {
  .kp-bilingue { grid-template-columns: minmax(0, 1fr); gap: 18px; }
  .kp-columnas { flex-direction: column; gap: 18px; }
  .kp-columna { width: 100%; }
  .kp-galeria:not(.kp-mosaico) { grid-template-columns: minmax(0, 1fr); }
  .kp-galeria.kp-mosaico figure { flex-basis: 100%; }
  .kp-imagen { width: 100%; }
}
/* tiras de logos: el tema ajusta alto, hueco y alineación con --kp-tira-alto / --kp-tira-hueco o sus clases */
.kp-tira { display: flex; flex-wrap: wrap; align-items: center; gap: var(--kp-tira-hueco, 24px); }
.kp-tira-item { display: inline-flex; align-items: center; position: relative; }
.kp-tira-item img { display: block; height: auto; width: auto; max-height: var(--kp-tira-alto, 48px); max-width: 100%; }
