/* Fichas de proyectos (proyectos/<slug>/): tarjeta de marca del hero, nota de imagen ilustrativa
   y tarjetas relacionadas con logo. Lo genera herramientas/construir_proyectos.py.
   Los logos van siempre sobre fondo blanco: son archivos con fondo propio y deben leerse igual en modo oscuro. */

.pj-marca
{
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .75rem;
  aspect-ratio: 4 / 3;
  padding: 2rem;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: #FFFFFF;
  box-shadow: var(--shadow-win);
  text-align: center;
}
.pj-marca img
{
  max-width: min(100%, 22rem);
  max-height: 11rem;
  width: auto;
  height: auto;
  object-fit: contain;
}
.pj-marca-tx
{
  font-size: clamp(1.5rem, 3vw, 2.25rem);
  font-weight: 700;
  line-height: 1.1;
  color: #0C4AA2;
}
.pj-marca-sub
{
  margin: 0;
  font-size: .8125rem;
  line-height: 1.4;
  color: #4A5568;
}

.pj-ilus
{
  margin: .5rem 0 0;
  font-size: .75rem;
  line-height: 1.4;
  color: var(--muted);
}

.pj-cap
{
  margin-top: 2rem;
}
.pj-cap-t
{
  margin: 0 0 .75rem;
  font-size: .875rem;
  font-weight: 600;
  color: var(--muted);
}

.pj-cv
{
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
  background: #FFFFFF;
}
.pj-cv img
{
  max-width: 70%;
  max-height: 70%;
  object-fit: contain;
}
.pj-cv .pj-marca-tx
{
  font-size: 1.25rem;
}

.ficha .ficha-ancha
{
  grid-column: 1 / -1;
}


/* ==========================================================================================================
   ITERACIÓN 17 · Sistema común de las 12 fichas (prefijo pf-). Lo escribe herramientas/construir_fichas_17.py.
   Bloques: hero compacto → síntesis (blanco) → funcionalidades (azul muy claro) → otros destacados → formulario (azul profundo).
   Color por significado (mismos tonos que Integraciones, Dynamic Fleet y Sender). Modos: claro / oscuro / contraste.
   ========================================================================================================== */
:root
{
  --pf-azul: #EEF4FB;
  --pf-azul-linea: #D3E0F0;
  --pf-erp: #1967D2;
  --pf-crm: #C2185B;
  --pf-comercio: #BF5500;
  --pf-inventario: #6D4FB8;
  --pf-pagos: #0B7A70;
  --pf-logistica: #267B3D;
  --pf-externo: #546E7A;
}
:root[data-mode="dark"]
{
  --pf-azul: #141A25;
  --pf-azul-linea: #2A3446;
  --pf-erp: #6C8CFF;
  --pf-crm: #F9A8D4;
  --pf-comercio: #FD9426;
  --pf-inventario: #B39DDB;
  --pf-pagos: #2DD4BF;
  --pf-logistica: #5FD38A;
  --pf-externo: #90A4AE;
}
@media (prefers-color-scheme: dark)
{
  :root[data-mode="auto"]
  {
    --pf-azul: #141A25;
    --pf-azul-linea: #2A3446;
    --pf-erp: #6C8CFF;
    --pf-crm: #F9A8D4;
    --pf-comercio: #FD9426;
    --pf-inventario: #B39DDB;
    --pf-pagos: #2DD4BF;
    --pf-logistica: #5FD38A;
    --pf-externo: #90A4AE;
  }
}
:root[data-mode="contrast"]
{
  --pf-azul: #FFFFFF;
  --pf-azul-linea: #000000;
}
.pf-t-erp { --pf-c: var(--pf-erp); }
.pf-t-crm { --pf-c: var(--pf-crm); }
.pf-t-comercio { --pf-c: var(--pf-comercio); }
.pf-t-inventario { --pf-c: var(--pf-inventario); }
.pf-t-pagos { --pf-c: var(--pf-pagos); }
.pf-t-logistica { --pf-c: var(--pf-logistica); }
.pf-t-externo { --pf-c: var(--pf-externo); }

/* ---------- Hero compacto y metadatos discretos ---------- */
.pf-hero
{
  padding-block: clamp(1.5rem, 3.5vw, 2.75rem) clamp(1.75rem, 4vw, 3rem);
}
.pf-hero .split
{
  grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr);
}
.pf-hero .case-hero-media .pj-marca
{
  aspect-ratio: 16 / 10;
  padding: 1.5rem;
}
.pf-hero .pj-marca img
{
  max-height: 8rem;
}
.pf-hero .pj-marca-tx.pj-tres,
.pj-cv .pj-marca-tx.pj-tres
{
  display: block;
  font-size: clamp(1.125rem, 2vw, 1.5rem);
  line-height: 1.25;
}
.pj-cv .pj-marca-tx.pj-tres
{
  font-size: 1rem;
}
.pf-meta
{
  display: flex;
  flex-wrap: wrap;
  gap: .5rem 2rem;
  margin: .25rem 0 0;
  padding-top: .875rem;
  border-top: 1px solid var(--line-soft);
}
.pf-meta > div
{
  min-width: 0;
}
.pf-meta .ficha-ancha
{
  flex-basis: 100%;
}
.pf-meta dt
{
  margin: 0;
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: var(--muted);
}
.pf-meta dd
{
  margin: .125rem 0 0;
  font-size: .9375rem;
  color: var(--ink);
}
.pf-credito
{
  display: flex;
  align-items: center;
  gap: .5rem;
  margin: .25rem 0 0;
  font-size: .9375rem;
  font-weight: 600;
  color: var(--accent-text);
}

/* ---------- Secciones y ritmo de fondos ---------- */
.pf-ficha .pf-azul
{
  background: var(--pf-azul);
  border-block: 1px solid var(--pf-azul-linea);
}
.pf-sint
{
  display: grid;
  gap: 2rem;
}
.pf-sint-tx
{
  max-width: 46rem;
}
.pf-sint-tx .prose p + p
{
  margin-top: 1rem;
}
.pf-sint-fig
{
  grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
  align-items: center;
}
.pf-fig
{
  margin: 0;
}
.pf-fig img
{
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  border-radius: var(--r);
  border: 1px solid var(--line-soft);
}
.pf-fig figcaption
{
  margin-top: .5rem;
  font-size: .75rem;
  line-height: 1.4;
  color: var(--muted);
}
.pf-head
{
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: .5rem;
  margin-bottom: 1.5rem;
}
.pf-intro
{
  margin: 0;
  max-width: 60rem;
  color: var(--muted);
}

/* ---------- Módulos con ícono ---------- */
.pf-mods,
.pf-flujo,
.pf-hub-n
{
  display: grid;
  gap: 1rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.pf-mods { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pf-mods.pf-n2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.pf-mods.pf-n4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.pf-mod
{
  display: flex;
  gap: .875rem;
  align-items: flex-start;
  padding: 1.125rem 1.25rem;
  border-radius: var(--r);
  background: var(--card);
  border: 1px solid var(--pf-azul-linea);
}
.pf-mod h3
{
  margin: 0;
  font-size: 1rem;
  line-height: 1.3;
  color: var(--ink);
}
.pf-mod p
{
  margin: .25rem 0 0;
  font-size: .9375rem;
  line-height: 1.45;
  color: var(--muted);
}
.pf-ic
{
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 50%;
  background: color-mix(in srgb, var(--pf-c) 14%, var(--card));
  color: var(--pf-c);
}
.pf-ic .mi
{
  font-size: 1.5rem;
}
.pf-sub
{
  margin: 2rem 0 .75rem;
  font-size: .875rem;
  font-weight: 600;
  color: var(--muted);
}

/* Grupos (ejes) */
.pf-grupos
{
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
  align-items: start;
}
.pf-grupo
{
  padding: 1rem;
  border-radius: calc(var(--r) + 4px);
  border: 1px solid var(--pf-azul-linea);
  border-top: 4px solid var(--pf-c);
  background: color-mix(in srgb, var(--pf-c) 5%, var(--card));
}
.pf-grupo-t
{
  margin: 0 0 .75rem;
  font-size: .8125rem;
  font-weight: 700;
  letter-spacing: .03em;
  text-transform: uppercase;
  color: var(--ink);
}
.pf-grupo .pf-mods
{
  grid-template-columns: 1fr;
  gap: .75rem;
}

/* Flujo (pasos con flecha) */
.pf-flujo { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.75rem; }
.pf-flujo.pf-n4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.pf-flujo .pf-mod
{
  position: relative;
  flex-direction: column;
  height: 100%;
}
.pf-flujo .pf-mod:not(:last-child)::after
{
  content: "chevron_right";
  font-family: 'Material Icons Round', 'Material Icons';
  position: absolute;
  top: 50%;
  right: -1.5rem;
  translate: 0 -50%;
  font-size: 1.5rem;
  line-height: 1;
  color: var(--muted);
}

/* Hub: nodo central y cuatro áreas */
.pf-hub-c
{
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .625rem;
  width: fit-content;
  margin: 0 auto 2.25rem;
  padding: .875rem 1.5rem;
  border-radius: 999px;
  background: var(--pie);
  color: #FFFFFF;
  font-size: 1.0625rem;
}
.pf-hub-c::after
{
  content: "";
  position: absolute;
  left: 50%;
  top: 100%;
  width: 2px;
  height: 1.125rem;
  background: var(--pf-azul-linea);
}
.pf-hub-n
{
  position: relative;
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.pf-hub-n::before
{
  content: "";
  position: absolute;
  top: -1.125rem;
  left: 12.5%;
  right: 12.5%;
  height: 2px;
  background: var(--pf-azul-linea);
}
.pf-hub-n .pf-mod
{
  position: relative;
  flex-direction: column;
}
.pf-hub-n .pf-mod::before
{
  content: "";
  position: absolute;
  left: 50%;
  top: -1.125rem;
  width: 2px;
  height: 1.125rem;
  background: var(--pf-azul-linea);
}

/* Dos columnas */
.pf-cols
{
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.25rem;
}
.pf-col
{
  padding: 1.5rem;
  border-radius: calc(var(--r) + 4px);
  background: var(--card);
  border: 1px solid var(--pf-azul-linea);
  border-top: 4px solid var(--pf-c);
}
.pf-col h3
{
  margin: .875rem 0 .375rem;
  font-size: 1.125rem;
  color: var(--ink);
}
.pf-col p
{
  margin: 0;
  color: var(--muted);
}

/* Soporte transversal */
.pf-base
{
  display: flex;
  align-items: center;
  gap: .75rem;
  margin-top: 1rem;
  padding: .875rem 1.25rem;
  border-radius: var(--r);
  border: 1px dashed var(--pf-azul-linea);
  background: color-mix(in srgb, var(--pf-externo) 8%, var(--card));
}
.pf-base .mi { color: var(--pf-externo); }
.pf-base p { margin: 0; font-size: .9375rem; color: var(--body); }

/* Bloque extra (cifras, testimonio) */
.pf-cifras
{
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1rem;
  margin: 0 0 2rem;
  padding: 0;
  list-style: none;
}
.pf-cifras li
{
  padding: 1.125rem 1.25rem;
  border-radius: var(--r);
  background: var(--pf-azul);
  border: 1px solid var(--pf-azul-linea);
}
.pf-cifras b
{
  display: block;
  font-size: clamp(1.5rem, 2.5vw, 2rem);
  line-height: 1.1;
  color: var(--accent-text);
}
.pf-cifras span
{
  display: block;
  margin-top: .375rem;
  font-size: .875rem;
  line-height: 1.4;
  color: var(--muted);
}
.pf-testi
{
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: .5rem 1.25rem;
  align-items: center;
  max-width: 52rem;
  margin: 0;
}
.pf-testi img
{
  grid-row: span 2;
  width: 5rem;
  height: 5rem;
  border-radius: 50%;
  object-fit: cover;
}
.pf-testi blockquote
{
  margin: 0;
}
.pf-testi blockquote p
{
  margin: 0;
  font-size: 1.0625rem;
  line-height: 1.5;
  color: var(--ink);
}
.pf-testi figcaption
{
  font-size: .875rem;
  color: var(--muted);
}

/* Otros proyectos destacados */
.pf-cards
{
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.pf-card .cv
{
  aspect-ratio: 16 / 9;
  min-height: 0;
}
.pf-todos
{
  margin: 1.75rem 0 0;
  text-align: center;
}

/* Formulario de contacto */
.pf-ct
{
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: clamp(1.5rem, 4vw, 3.5rem);
  align-items: start;
}
.pf-ct-tx
{
  display: flex;
  flex-direction: column;
  gap: .75rem;
}
.pf-form,
.pf-ct-form .done
{
  padding: clamp(1.25rem, 3vw, 2rem);
  border-radius: calc(var(--r) + 4px);
  background: var(--card);
  color: var(--body);
}
.pf-form label,
.pf-form .opt
{
  color: var(--ink);
}
.pf-form .opt
{
  font-weight: 400;
  color: var(--muted);
}
.pf-aviso
{
  margin: .75rem 0 0;
}
.pf-form .btn
{
  margin-top: .5rem;
}

@media (max-width: 1100px)
{
  .pf-hub-n,
  .pf-flujo.pf-n4,
  .pf-cifras
  {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .pf-hub-n::before,
  .pf-hub-n .pf-mod::before,
  .pf-hub-c::after
  {
    display: none;
  }
  .pf-hub-c
  {
    margin-bottom: 1.25rem;
  }
  .pf-flujo.pf-n4 .pf-mod::after
  {
    display: none;
  }
}
@media (max-width: 860px)
{
  .pf-hero .split,
  .pf-sint-fig,
  .pf-ct,
  .pf-grupos,
  .pf-cols,
  .pf-cards
  {
    grid-template-columns: 1fr;
  }
  .pf-mods,
  .pf-mods.pf-n2,
  .pf-mods.pf-n4,
  .pf-flujo,
  .pf-flujo.pf-n4,
  .pf-hub-n,
  .pf-cifras
  {
    grid-template-columns: 1fr;
  }
  .pf-flujo
  {
    gap: 1.75rem;
  }
  .pf-flujo .pf-mod,
  .pf-hub-n .pf-mod
  {
    flex-direction: row;
  }
  .pf-flujo .pf-mod:not(:last-child)::after
  {
    display: block;
    content: "expand_more";
    top: auto;
    bottom: -1.625rem;
    right: auto;
    left: 50%;
    translate: -50% 0;
  }
  .pf-hero .case-hero-media
  {
    order: -1;
  }
  .pf-hero .case-hero-media .pj-marca
  {
    aspect-ratio: auto;
    min-height: 7rem;
    padding: 1rem;
  }
  .pf-testi
  {
    grid-template-columns: 1fr;
  }
  .pf-testi img
  {
    grid-row: auto;
  }
}
@media (prefers-reduced-motion: reduce)
{
  .pf-ficha *
  {
    transition: none !important;
  }
}

/* Ajustes tras la primera revisión visual (iteración 17) */
.pj-tres-w
{
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .25rem;
  text-align: center;
}
.pf-meta > div
{
  padding: 0;
  border: 0;
  background: none;
}
.pf-sint-tx .prose
{
  margin-top: .875rem;
}

/* Portada de Proyectos: misma tarjeta para los 12 (logo sobre blanco, 16:9), 4 columnas */
.pf-port
{
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.pf-port .pcard-b p
{
  display: -webkit-box;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
@media (max-width: 1100px)
{
  .pf-port { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 560px)
{
  .pf-port { grid-template-columns: 1fr; }
}

/* La sección destacada de la portada tiene fondo azul profundo: las tarjetas son blancas y deben conservar sus colores */
.pf-card .pcard-b .kicker
{
  color: var(--accent-text);
}
.pf-card .pcard-b h3
{
  color: var(--ink);
}
.pf-card .pcard-b p
{
  color: var(--muted);
}
:root[data-mode="dark"] .pf-card .pcard-b .kicker,
:root[data-mode="dark"] .pf-card .pcard-b h3
{
  color: var(--on-deep);
}

/* Botón secundario «Ver todos los proyectos»: en modo oscuro el color base del botón no alcanzaba 4,5:1 (medido con axe: 3,41:1) */
:root[data-mode="dark"] .pf-todos .btn-secondary
{
  color: var(--on-deep-link);
  border-color: var(--on-deep-link);
}
@media (prefers-color-scheme: dark)
{
  :root[data-mode="auto"] .pf-todos .btn-secondary
  {
    color: var(--on-deep-link);
    border-color: var(--on-deep-link);
  }
}
@media (max-width: 560px)
{
  .pf-card .cv { aspect-ratio: 16 / 8; }
}

/* Al navegar con teclado, el campo enfocado no debe quedar bajo el botón flotante de la esquina inferior */
html:has(.pf-ficha)
{
  scroll-padding-bottom: 6rem;
}


/* ==========================================================================================================
   ITERACIÓN 17.1 · pulido final y homologación (hero, metadatos, resumen, pilares, cifras, cierre en azul claro)
   ========================================================================================================== */

/* ---------- Hero: contenedor editorial de la marca (no una placa blanca vacía) ---------- */
.pf-hero .case-hero-media
{
  min-width: 0;
}
.pf-brand
{
  position: relative;
  display: grid;
  place-items: center;
  aspect-ratio: 5 / 3;
  padding: clamp(1.25rem, 3vw, 2rem);
  overflow: hidden;
  border-radius: calc(var(--r) + 6px);
  border: 1px solid var(--pf-azul-linea);
  background:
    radial-gradient(circle at 1px 1px, color-mix(in srgb, var(--pf-erp) 22%, transparent) 1px, transparent 1.5px) 0 0 / 18px 18px,
    var(--pf-azul);
}
.pf-brand-acento
{
  position: absolute;
  top: 1.25rem;
  left: 1.25rem;
  width: 2.5rem;
  height: 4px;
  border-radius: 4px;
  background: var(--pf-comercio);
}
.pf-plaque
{
  display: grid;
  place-items: center;
  max-width: 100%;
  padding: clamp(1rem, 2.5vw, 1.75rem) clamp(1.25rem, 3vw, 2.25rem);
  border-radius: var(--r);
  border: 1px solid var(--line-soft);
  background: #FFFFFF;
  box-shadow: 0 22px 36px -28px rgba(2, 33, 76, .55);
}
.pf-plaque img
{
  display: block;
  width: auto;
  height: auto;
  max-width: min(100%, 17rem);
  max-height: 7.5rem;
  object-fit: contain;
}
.pf-forma-apaisado .pf-plaque img { max-width: min(100%, 19rem); max-height: 5.5rem; }
.pf-forma-cuadrado .pf-plaque img { max-width: min(100%, 9rem); max-height: 9rem; }
.pf-forma-texto .pf-plaque { padding-inline: clamp(1.5rem, 4vw, 2.5rem); }
.pf-brand .pj-tres-w { gap: .35rem; }
.pf-brand .pj-marca-tx { color: #0C4AA2; }

/* ---------- Metadatos: banda de tres celdas con ícono discreto ---------- */
.pf-banda
{
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.35fr);
  margin: clamp(1.25rem, 3vw, 2rem) 0 0;
  border-block: 1px solid var(--line-soft);
}
.pf-celda
{
  display: flex;
  gap: .75rem;
  align-items: flex-start;
  min-width: 0;
  padding: 1rem 1.25rem;
}
.pf-celda + .pf-celda
{
  border-left: 1px solid var(--line-soft);
}
.pf-celda:first-child { padding-left: 0; }
.pf-ci
{
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  background: var(--pf-azul);
  color: var(--pf-erp);
}
.pf-ci .mi { font-size: 1.125rem; }
.pf-celda dt
{
  margin: 0;
  font-size: .6875rem;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--muted);
}
.pf-celda dd
{
  margin: .125rem 0 0;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.35;
  color: var(--ink);
}

/* ---------- Resumen del proyecto: título a la izquierda, texto a la derecha ---------- */
.pf-res
{
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: clamp(1.5rem, 5vw, 4.5rem);
  align-items: start;
}
.pf-res-t
{
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: .625rem;
}
.pf-res-t .pf-fig
{
  width: 100%;
  margin-top: 1rem;
}
.pf-res-tx p
{
  margin: 0;
}
.pf-res-tx p + p
{
  margin-top: 1rem;
}

/* ---------- Capacidades: grupos a igual altura, pilares y mapa a todo el ancho ---------- */
.pf-grupos
{
  align-items: stretch;
}
.pf-grupo
{
  display: flex;
  flex-direction: column;
}
.pf-grupo .pf-mods
{
  flex: 1;
  grid-auto-rows: 1fr;
}
.pf-grupos-apilados
{
  grid-template-columns: 1fr;
  gap: 1.25rem;
}
.pf-grupos-apilados .pf-mods.pf-c2
{
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.pf-grupos-apilados .pf-mods.pf-c3
{
  grid-template-columns: repeat(6, minmax(0, 1fr));
}
.pf-c3 > li
{
  grid-column: span 2;
}
.pf-c3 > li:nth-last-child(2):nth-child(3n + 1)
{
  grid-column: 2 / span 2;
}
.pf-mods.pf-pilares
{
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.pf-pilares .pf-mod
{
  flex-direction: column;
  gap: 1rem;
  padding: 1.5rem 1.25rem 1.5rem;
  border-top: 4px solid var(--pf-c);
}
.pf-pilares .pf-ic
{
  width: 3.25rem;
  height: 3.25rem;
}
.pf-pilares .pf-ic .mi { font-size: 1.75rem; }
.pf-pilares .pf-mod h3 { font-size: 1.0625rem; }

/* ---------- Indicadores del alcance (Fonasa): número dominante sobre azul profundo ---------- */
.pf-cifras
{
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1rem;
}
.pf-cifras li
{
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  gap: .625rem;
  padding: 1.5rem 1.25rem;
  border: 0;
  border-radius: calc(var(--r) + 2px);
  background: var(--deep);
  color: var(--on-deep);
}
.pf-cifras li::before
{
  content: "";
  width: 2rem;
  height: 3px;
  border-radius: 3px;
  background: var(--naranjo, #FD9426);
}
.pf-cifras b
{
  display: block;
  font-size: clamp(2.25rem, 1.4rem + 2.6vw, 3.5rem);
  font-weight: 700;
  line-height: 1;
  letter-spacing: -.02em;
  color: #FFFFFF;
}
.pf-cifras span
{
  margin: 0;
  font-size: .9375rem;
  line-height: 1.4;
  color: var(--on-deep-2, rgba(245, 245, 247, .78));
}
.pf-extra .pf-head { margin-bottom: 1.25rem; }

/* ---------- Cierre de contacto: azul muy claro (jamás el color del footer), formulario blanco ---------- */
.pf-ficha .pf-contacto
{
  background: var(--pf-azul);
  border-top: 1px solid var(--pf-azul-linea);
}
.pf-form,
.pf-ct-form .done
{
  border: 1px solid var(--pf-azul-linea);
  background: var(--card);
  box-shadow: 0 24px 40px -32px rgba(2, 33, 76, .45);
}

/* ---------- Responsive 17.1 ---------- */
@media (max-width: 1100px)
{
  .pf-mods.pf-pilares,
  .pf-cifras
  {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 860px)
{
  .pf-res,
  .pf-grupos-apilados .pf-mods.pf-c2
  {
    grid-template-columns: 1fr;
  }
  .pf-grupos-apilados .pf-mods.pf-c3
  {
    grid-template-columns: 1fr;
  }
  .pf-c3 > li,
  .pf-c3 > li:nth-last-child(2):nth-child(3n + 1)
  {
    grid-column: auto;
  }
  .pf-banda
  {
    grid-template-columns: 1fr;
  }
  .pf-celda,
  .pf-celda:first-child
  {
    padding: .875rem 0;
  }
  .pf-celda + .pf-celda
  {
    border-left: 0;
    border-top: 1px solid var(--line-soft);
  }
  .pf-hero .case-hero-media
  {
    order: -1;
  }
  .pf-brand
  {
    aspect-ratio: 16 / 7;
    padding: 1rem;
  }
  .pf-plaque img { max-height: 5rem; }
  .pf-forma-cuadrado .pf-plaque img { max-height: 5.5rem; max-width: 6rem; }
}
@media (max-width: 560px)
{
  .pf-mods.pf-pilares,
  .pf-cifras
  {
    grid-template-columns: 1fr;
  }
}

.pf-cifras b small
{
  font-size: .42em;
  font-weight: 600;
  letter-spacing: 0;
}

/* Consalud: seis funciones en grilla pareja 3 x 2, cada una con la etiqueta y el color de su eje (sin tarjetas vacías) */
.pf-leyenda
{
  display: flex;
  flex-wrap: wrap;
  gap: .5rem 1.5rem;
  margin: 0 0 1.25rem;
  padding: 0;
  list-style: none;
}
.pf-leyenda li
{
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  font-size: .8125rem;
  font-weight: 700;
  letter-spacing: .03em;
  text-transform: uppercase;
  color: var(--ink);
}
.pf-leyenda i
{
  width: .75rem;
  height: .75rem;
  border-radius: 50%;
  background: var(--pf-c);
}
.pf-plano
{
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-auto-rows: 1fr;
}
.pf-plano .pf-mod
{
  border-top: 4px solid var(--pf-c);
}
.pf-tag
{
  display: block;
  margin-bottom: .25rem;
  font-size: .6875rem;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--pf-c);
}
@media (max-width: 860px)
{
  .pf-mods.pf-plano { grid-template-columns: 1fr; }
}
@media (min-width: 561px) and (max-width: 1100px)
{
  .pf-mods.pf-plano { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Banda de metadatos con marcado válido: el ícono vive dentro del <dt>; el valor (dd) queda alineado bajo la etiqueta */
.pf-celda
{
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  column-gap: .75rem;
  row-gap: .125rem;
  align-items: start;
}
.pf-celda dt
{
  display: contents;
}
.pf-celda dt .pf-ci
{
  grid-row: 1 / span 2;
  grid-column: 1;
}
.pf-celda dd
{
  grid-column: 2;
  grid-row: 2;
}

/* Ajuste: ícono fuera del flujo para que etiqueta y valor queden juntos */
.pf-celda
{
  display: block;
  position: relative;
  padding: 1rem 1.25rem 1rem 3.75rem;
}
.pf-celda:first-child
{
  padding-left: 2.75rem;
}
.pf-celda dt
{
  display: block;
}
.pf-celda dt .pf-ci
{
  position: absolute;
  left: 1.25rem;
  top: 1rem;
}
.pf-celda:first-child dt .pf-ci
{
  left: 0;
}
.pf-celda dd
{
  margin: .1875rem 0 0;
}
@media (max-width: 860px)
{
  .pf-celda,
  .pf-celda:first-child
  {
    padding: .875rem 0 .875rem 2.75rem;
  }
  .pf-celda dt .pf-ci,
  .pf-celda:first-child dt .pf-ci
  {
    left: 0;
    top: .875rem;
  }
}

/* Tablet: tres tarjetas de «Otros proyectos destacados» en una fila (antes quedaban apiladas y muy altas) */
@media (min-width: 561px) and (max-width: 860px)
{
  .pf-cards
  {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .75rem;
  }
  .pf-card .cv
  {
    aspect-ratio: 4 / 3;
    padding: 1rem;
  }
  .pf-card .pcard-b { padding: .875rem .875rem 1rem; }
  .pf-card .pcard-b p { font-size: .8125rem; }
}
@media (max-width: 560px)
{
  .pf-card .cv { aspect-ratio: 16 / 6.5; padding: 1rem; }
}
