/* =============================================================================
   ITB · Portafolio de proyectos · hoja común de las webs propias

   TOKENS. Todo color y fuente sale de un token `--itb-pf-*` con un valor neutro de respaldo que
   pasa AA sobre blanco y sobre la caja (#f5f6f8): tinta #16181d, cuerpo #3f4650 (9,5:1),
   atenuado #5f6672 (5,4:1), enlace #1d4ed8 (6,3:1), cifra #0f766e (5,5:1), acento #16181d con
   texto blanco. El fondo de respaldo es BLANCO, no transparente: la paleta es coherente sola.
   Un sitio con paleta propia redefine los tokens en `itb-portafolio-local.css` (jesusiturbide.com
   lleva ahí su kit oscuro; un sitio claro puede poner `--itb-pf-fondo: transparent`). Prefijo
   `--itb-` siempre: un nombre genérico se lo come el primer CSS de Elementor que lo defina cerca.

   ESPECIFICIDAD (medido el 07-09-2026 en el banco de RIN, kit oscuro de Homiqo). El kit de
   Elementor declara `.elementor-kit-N h2 { color: #fff; text-transform: capitalize; … }` con
   especificidad (0,1,1) y se comía `.itb-pf__titulo` (0,1,0): título blanco sobre tarjeta blanca,
   invisible. Y con el fondo en `transparent` la tinta fija #16181d caía sobre el negro del tema.
   Por eso TODOS los selectores de esta hoja van precedidos de `.itb-pf` —(0,2,x), por encima del
   kit sin `!important`— y los encabezados fijan familia, transformación y estilo. La hoja local
   de cada sitio usa el MISMO prefijo: a igual especificidad gana la que carga después, y la local
   carga después.

   LEY DEL ANCHO. Las rejillas van con `auto-fit` y `minmax(min(320px,100%),1fr)`: llenan el
   ancho con tantas tarjetas como quepan y nunca dejan una columna sola con el resto en blanco.
   Con UNA sola tarjeta, se tumba: imagen a la izquierda y texto a la derecha, en vez de una
   tarjeta gigante. La ficha reparte 7 y 5 de doce columnas entre cuerpo y panel de datos.
   `minmax(0,1fr)` y no `1fr` a secas: con `1fr` el contenido ancho desborda en móvil sin que se
   vea en escritorio.
   ============================================================================= */

.itb-pf{
  --pf-fondo:var(--itb-pf-fondo,#ffffff);
  --pf-caja:var(--itb-pf-caja,#f5f6f8);
  --pf-borde:var(--itb-pf-borde,#e2e5ea);
  --pf-t1:var(--itb-pf-texto,#16181d);
  --pf-t2:var(--itb-pf-texto-2,#3f4650);
  --pf-t3:var(--itb-pf-texto-3,#5f6672);
  --pf-acento:var(--itb-pf-acento,#16181d);
  --pf-acento-texto:var(--itb-pf-acento-texto,#ffffff);
  --pf-enlace:var(--itb-pf-enlace,#1d4ed8);
  --pf-cifra:var(--itb-pf-cifra,#0f766e);
  --pf-fuente:var(--itb-pf-fuente,inherit);
  --pf-fuente-titulos:var(--itb-pf-fuente-titulos,inherit);
  --pf-r:18px; --pf-rs:14px;

  background:var(--pf-fondo);
  color:var(--pf-t2);
  font-family:var(--pf-fuente);
  padding:56px 20px 80px;
}
.itb-pf *{box-sizing:border-box}
/* 1280 y no 1200: en un tema sin caja propia (Hello Elementor) el portafolio es la única caja de
   la página, y 1200 px sobre los 1400 útiles de una pantalla de 1440 (86 %) es un bloque encogido
   para el gate de composición; 1280 (91 %) llena sin pasar de 92 caracteres por línea en la ficha
   (medido en el banco el 07-09-2026). En The7 (jesusiturbide) el tema la envuelve más estrecha. */
.itb-pf .itb-pf__ancho{max-width:1280px;margin:0 auto}

/* encabezados: lo que el kit del tema intenta imponer (color, mayúsculas, cursiva) no entra */
.itb-pf .itb-pf__h1,.itb-pf .itb-pf__titulo,.itb-pf .itb-pf__cuerpo-largo h2,
.itb-pf .itb-pf__otros>h2,.itb-pf .itb-pf__galeria>h2,.itb-pf .itb-pf__bloque-t,
.itb-pf .itb-pf__cierre h2,.itb-pf .itb-pf__cifras-t{
  font-family:var(--pf-fuente-titulos);text-transform:none;letter-spacing:normal;
  font-style:normal;text-decoration:none;word-spacing:normal}
.itb-pf .itb-pf__cuerpo-largo p,.itb-pf .itb-pf__entradilla,.itb-pf .itb-pf__resumen,
.itb-pf .itb-pf__cierre p{font-family:var(--pf-fuente);font-style:normal;text-transform:none}

/* ── portada ──────────────────────────────────────────────────────────────── */
.itb-pf .itb-pf__k{font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;font-weight:700;
  color:var(--pf-t3);margin:0 0 12px}
.itb-pf .itb-pf__h1{font-size:clamp(2rem,4.4vw,3.1rem);line-height:1.12;font-weight:700;
  color:var(--pf-t1);margin:0 0 18px;text-wrap:balance}
.itb-pf .itb-pf__entradilla{font-size:1.06rem;line-height:1.65;color:var(--pf-t2);max-width:62ch;margin:0}
.itb-pf .itb-pf__portada{margin:0 0 34px}
/* Con entradilla, la portada se COMPONE: título a 7 columnas y entradilla a 5, alineadas por la
   base. Medido el 07-09-2026 en Badalona: la entradilla sola a 62ch se quedaba al 53 % de la caja
   con el resto en blanco, que es el defecto que la ley del ancho persigue; ponerla junto al título
   llena la fila sin estirar la línea. Sin entradilla la portada sigue en una columna. */
.itb-pf .itb-pf__portada--dos{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:8px 48px;align-items:end}
.itb-pf .itb-pf__portada--dos .itb-pf__k{grid-column:1/-1}
.itb-pf .itb-pf__portada--dos .itb-pf__h1{margin:0}
.itb-pf .itb-pf__portada--dos .itb-pf__entradilla{max-width:none;padding-bottom:.4em}

.itb-pf .itb-pf__migas{font-size:.82rem;color:var(--pf-t3);margin:0 0 26px;display:flex;gap:8px;flex-wrap:wrap}
.itb-pf .itb-pf__migas a{color:var(--pf-t3);text-decoration:none}
.itb-pf .itb-pf__migas a:hover{color:var(--pf-enlace);text-decoration:underline}

/* ── filtros ──────────────────────────────────────────────────────────────── */
.itb-pf .itb-pf__filtros{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 34px}
.itb-pf .itb-pf__chip{display:inline-block;padding:7px 15px;border-radius:100px;font-size:.85rem;
  font-weight:500;text-decoration:none;color:var(--pf-t2);background:var(--pf-caja);
  border:1px solid var(--pf-borde);transition:background .18s,color .18s,border-color .18s}
.itb-pf .itb-pf__chip:hover{color:var(--pf-t1);border-color:var(--pf-t3)}
.itb-pf .itb-pf__chip.es-activo{background:var(--pf-acento);border-color:var(--pf-acento);color:var(--pf-acento-texto)}

/* ── rejilla de tarjetas ──────────────────────────────────────────────────── */
.itb-pf .itb-pf__rejilla{list-style:none;margin:0;padding:0;display:grid;gap:26px;
  grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr))}
.itb-pf .itb-pf__tarjeta{background:var(--pf-caja);border:1px solid var(--pf-borde);margin:0;
  border-radius:var(--pf-r);overflow:hidden;transition:transform .2s,border-color .2s}
.itb-pf .itb-pf__tarjeta:hover{transform:translateY(-3px);border-color:var(--pf-t3)}
.itb-pf .itb-pf__enlace{display:flex;flex-direction:column;height:100%;text-decoration:none;color:inherit}
.itb-pf .itb-pf__foto{aspect-ratio:16/10;overflow:hidden;background:var(--pf-borde)}
.itb-pf .itb-pf__foto img{width:100%;height:100%;object-fit:cover;display:block}
.itb-pf .itb-pf__foto-vacia{display:block;width:100%;height:100%;
  background:linear-gradient(135deg,var(--pf-caja),var(--pf-borde))}
.itb-pf .itb-pf__cuerpo{padding:22px;display:flex;flex-direction:column;gap:9px;flex:1}
.itb-pf .itb-pf__meta{font-size:.78rem;color:var(--pf-t3);margin:0;letter-spacing:.02em}
.itb-pf .itb-pf__titulo{font-size:1.22rem;line-height:1.3;font-weight:650;color:var(--pf-t1);margin:0}
.itb-pf .itb-pf__resumen{font-size:.93rem;line-height:1.6;color:var(--pf-t2);margin:0}
.itb-pf .itb-pf__cifra-tarjeta{margin:auto 0 0;padding:12px 0 0;border-top:1px solid var(--pf-borde);
  display:flex;align-items:baseline;gap:9px}
.itb-pf .itb-pf__cifra-tarjeta strong{font-size:1.5rem;font-weight:700;color:var(--pf-cifra);
  font-variant-numeric:tabular-nums}
.itb-pf .itb-pf__cifra-tarjeta span{font-size:.83rem;color:var(--pf-t3)}

/* una sola tarjeta: se tumba en vez de crecer hasta 1200 px de ancho y 750 de alto */
.itb-pf .itb-pf__tarjeta:only-child .itb-pf__enlace{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr)}
.itb-pf .itb-pf__tarjeta:only-child .itb-pf__foto{aspect-ratio:auto;min-height:280px;height:100%}
.itb-pf .itb-pf__tarjeta:only-child .itb-pf__cuerpo{padding:30px 34px;justify-content:center}

.itb-pf .itb-pf__vacio{padding:40px;text-align:center;color:var(--pf-t3);margin:0;
  border:1px dashed var(--pf-borde);border-radius:var(--pf-r)}

/* ── ficha: siete columnas de cuerpo y cinco de panel ─────────────────────── */
.itb-pf .itb-pf__imagen{margin:0 0 40px;border-radius:var(--pf-r);overflow:hidden;border:1px solid var(--pf-borde)}
.itb-pf .itb-pf__imagen img{width:100%;height:auto;display:block}

.itb-pf .itb-pf__cols{display:grid;gap:44px;align-items:start;
  grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
.itb-pf .itb-pf__cols--solo{grid-template-columns:minmax(0,1fr);max-width:70ch}

.itb-pf .itb-pf__cuerpo-largo h2{font-size:1.42rem;line-height:1.28;font-weight:650;color:var(--pf-t1);
  margin:34px 0 12px}
.itb-pf .itb-pf__cuerpo-largo h2:first-child{margin-top:0}
.itb-pf .itb-pf__cuerpo-largo p{font-size:1.02rem;line-height:1.72;color:var(--pf-t2);margin:0 0 15px}
.itb-pf .itb-pf__cuerpo-largo a{color:var(--pf-enlace)}
.itb-pf .itb-pf__libre ul,.itb-pf .itb-pf__libre ol{color:var(--pf-t2);line-height:1.7;padding-left:1.3em}
.itb-pf .itb-pf__libre img{max-width:100%;height:auto;border-radius:var(--pf-rs)}

.itb-pf .itb-pf__testimonio{margin:34px 0 0;padding:24px 26px;background:var(--pf-caja);
  border-left:3px solid var(--pf-acento);border-radius:0 var(--pf-rs) var(--pf-rs) 0}
.itb-pf .itb-pf__testimonio blockquote{margin:0;padding:0;border:0;background:transparent}
.itb-pf .itb-pf__testimonio p{font-size:1.06rem;line-height:1.65;color:var(--pf-t1);margin:0;font-style:italic}
.itb-pf .itb-pf__testimonio figcaption{margin:12px 0 0;font-size:.85rem;color:var(--pf-t3);font-style:normal}

/* ── panel de datos ───────────────────────────────────────────────────────── */
.itb-pf .itb-pf__panel{position:sticky;top:24px;background:var(--pf-caja);border:1px solid var(--pf-borde);
  border-radius:var(--pf-r);padding:26px}
.itb-pf .itb-pf__datos{margin:0;display:flex;flex-direction:column;gap:14px}
.itb-pf .itb-pf__datos>div{display:flex;justify-content:space-between;gap:14px;align-items:baseline;
  padding:0 0 14px;border-bottom:1px solid var(--pf-borde)}
.itb-pf .itb-pf__datos>div:last-child{border-bottom:0;padding-bottom:0}
.itb-pf .itb-pf__datos dt{font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;
  color:var(--pf-t3);margin:0;flex-shrink:0;font-weight:600}
.itb-pf .itb-pf__datos dd{margin:0;font-size:.95rem;color:var(--pf-t1);text-align:right;font-weight:500}
.itb-pf .itb-pf__datos dd a{color:var(--pf-enlace)}

.itb-pf .itb-pf__visitar{display:flex;align-items:center;justify-content:center;gap:8px;margin:22px 0 0;
  padding:12px 18px;border-radius:100px;background:transparent;border:1px solid var(--pf-acento);
  color:var(--pf-t1);font-size:.92rem;font-weight:600;text-decoration:none;
  transition:background .18s,color .18s}
.itb-pf .itb-pf__visitar:hover{background:var(--pf-acento);color:var(--pf-acento-texto)}
.itb-pf .itb-pf__ext{font-size:.9em}

.itb-pf .itb-pf__cifras{margin:26px 0 0;padding:22px 0 0;border-top:1px solid var(--pf-borde)}
.itb-pf .itb-pf__cifras-t{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--pf-t3);margin:0 0 16px;font-weight:700;line-height:1.3}
.itb-pf .itb-pf__cifra+.itb-pf__cifra{margin-top:20px;padding-top:20px;border-top:1px solid var(--pf-borde)}
.itb-pf .itb-pf__cifra-v{font-size:2rem;line-height:1.05;font-weight:700;color:var(--pf-cifra);margin:0;
  font-variant-numeric:tabular-nums}
.itb-pf .itb-pf__cifra-q{font-size:.95rem;color:var(--pf-t2);margin:5px 0 0}
.itb-pf .itb-pf__cifra-f{font-size:.76rem;color:var(--pf-t3);margin:7px 0 0;line-height:1.45}

/* ── galería ──────────────────────────────────────────────────────────────── */
.itb-pf .itb-pf__galeria{margin:56px 0 0}
.itb-pf .itb-pf__galeria>h2{font-size:1.5rem;font-weight:650;color:var(--pf-t1);margin:0 0 22px}
/* Celdas UNIFORMES (4:3, recorte centrado). Medido el 07-09-2026 en el banco: con imágenes de
   proporciones distintas, la rejilla estira cada celda a la altura de la más alta (una captura
   de móvil, 768 px) y las demás quedan con un 50-93 % de caja vacía — dos bandas muertas que el
   gate cazó. La imagen completa se abre al pulsar; la celda solo es la miniatura. */
.itb-pf .itb-pf__galeria-rejilla{list-style:none;margin:0;padding:0;display:grid;gap:18px;
  grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr))}
.itb-pf .itb-pf__galeria-item{margin:0;border-radius:var(--pf-rs);overflow:hidden;border:1px solid var(--pf-borde);
  background:var(--pf-caja);aspect-ratio:4/3}
.itb-pf .itb-pf__galeria-item a{display:block;height:100%}
.itb-pf .itb-pf__galeria-item img{width:100%;height:100%;object-fit:cover;display:block}

/* ── otros proyectos, bloque por shortcode y cierre ───────────────────────── */
.itb-pf .itb-pf__otros{margin:64px 0 0;padding:44px 0 0;border-top:1px solid var(--pf-borde)}
.itb-pf .itb-pf__otros>h2{font-size:1.5rem;font-weight:650;color:var(--pf-t1);margin:0 0 26px}

/* el bloque del shortcode vive dentro de una página ajena: fondo transparente y el título y el
   enlace heredan el color de esa página, porque la paleta neutra es para el fondo propio */
.itb-pf.itb-pf--bloque{padding:0;background:transparent}
.itb-pf .itb-pf__bloque-t{font-size:1.5rem;font-weight:650;color:inherit;margin:0 0 26px}
.itb-pf .itb-pf__ver-todos{margin:22px 0 0;font-size:.95rem}
.itb-pf .itb-pf__ver-todos a{color:inherit;font-weight:600;text-decoration:underline}

.itb-pf .itb-pf__cierre{margin:64px 0 0;padding:34px;background:var(--pf-caja);
  border:1px solid var(--pf-borde);border-radius:var(--pf-r);
  display:grid;gap:26px;align-items:center;grid-template-columns:minmax(0,1fr) auto}
.itb-pf .itb-pf__cierre h2{font-size:1.4rem;font-weight:650;color:var(--pf-t1);margin:0 0 9px}
.itb-pf .itb-pf__cierre p{font-size:.98rem;line-height:1.65;color:var(--pf-t2);margin:0;max-width:58ch}
.itb-pf .itb-pf__cierre a{color:var(--pf-enlace)}
.itb-pf .itb-pf__cta{display:inline-block;padding:14px 28px;border-radius:100px;background:var(--pf-acento);
  color:var(--pf-acento-texto);font-weight:600;font-size:.98rem;text-decoration:none;white-space:nowrap;
  border:0;line-height:1.3;transition:opacity .18s}
.itb-pf .itb-pf__cierre a.itb-pf__cta{color:var(--pf-acento-texto)}
.itb-pf .itb-pf__cta:hover{opacity:.88}

/* ── paginación ───────────────────────────────────────────────────────────── */
.itb-pf .pagination,.itb-pf .nav-links{margin:44px 0 0;display:flex;gap:9px;flex-wrap:wrap;
  justify-content:center}
.itb-pf .page-numbers{display:inline-block;padding:9px 15px;border-radius:10px;
  background:var(--pf-caja);border:1px solid var(--pf-borde);color:var(--pf-t2);
  text-decoration:none;font-size:.92rem}
.itb-pf .page-numbers.current{background:var(--pf-acento);border-color:var(--pf-acento);color:var(--pf-acento-texto)}

/* ── foco visible: un control que solo responde al ratón deja fuera al teclado ─ */
.itb-pf a:focus-visible{outline:2px solid var(--pf-enlace);outline-offset:3px;border-radius:6px}

/* ── responsive ───────────────────────────────────────────────────────────── */
@media (max-width:1024px){
  .itb-pf .itb-pf__cols{grid-template-columns:minmax(0,1fr);gap:34px}
  .itb-pf .itb-pf__panel{position:static}
  .itb-pf .itb-pf__portada--dos{grid-template-columns:minmax(0,1fr);gap:14px}
  .itb-pf .itb-pf__portada--dos .itb-pf__h1{margin:0 0 4px}
  .itb-pf .itb-pf__portada--dos .itb-pf__entradilla{max-width:62ch;padding-bottom:0}
}
@media (max-width:760px){
  .itb-pf .itb-pf__tarjeta:only-child .itb-pf__enlace{grid-template-columns:minmax(0,1fr)}
  .itb-pf .itb-pf__tarjeta:only-child .itb-pf__foto{aspect-ratio:16/10;min-height:0;height:auto}
  .itb-pf .itb-pf__tarjeta:only-child .itb-pf__cuerpo{padding:22px}
}
@media (max-width:600px){
  .itb-pf{padding:36px 16px 60px}
  .itb-pf .itb-pf__cierre{grid-template-columns:minmax(0,1fr);padding:26px}
  .itb-pf .itb-pf__cta{text-align:center}
  .itb-pf .itb-pf__datos>div{flex-direction:column;align-items:flex-start;gap:4px}
  .itb-pf .itb-pf__datos dd{text-align:left}
}
@media (prefers-reduced-motion:reduce){
  .itb-pf *{transition:none}
  .itb-pf .itb-pf__tarjeta:hover{transform:none}
}
