/*
 Theme Name: Astra Child (GAP)
 Template: astra
 Version: 2.0.0
 Description: Tema hijo de Astra para GAP Enginyeria.
              CSS organizado por secciones. Última revisión: 2026-04-02.
*/

/* =========================================================
   ÍNDICE DE SECCIONES
   =========================================================
   00) Protecciones globales (anti overflow horizontal)
   01) Variables globales (:root)
   02) Fondo global (body)
   03) CSS Global — fuera de Home (servicios, links, tipografía)
   04) Layout base — gap-wrap, gap-grid, tipografía
   05) Componentes comunes — cards, listas, chips, bandas, CTAs
   05C) Links visibles en contenido — tipologías / páginas satélite
   05D) Excepciones — no subrayar links en cards/CTAs
   06) Formularios
   07) Botón gap-btn global
   08) Bloques de cierre / FAQ
   09) Proyectos — Archive (listado)
   10) Proyectos — Single (ficha)
   11) Astra — utilidades (ocultar títulos automáticos)
   12) Servicios — Hero en caja (gap-hero-box)
   13) GAP HOME — Solo homepage
       13a) Resets de contenedor Astra en home
       13b) Variables y base del bloque .gap-home
       13c) Hero dark (imagen de fondo)
       13d) Secciones light (Servicios, Diferenciales, Proceso, Cobertura)
       13e) Proceso (pasos)
       13f) CTA band + mini footer
       13g) Responsive home
   14) Servicios "Impacto" (gap-svc-*) — páginas de servicio
   15) Reveal — animaciones de entrada (Home + Servicios)
   16) Bloque de decisión (gap-decide) — B2B
   17) Tarjetas de proyectos en páginas de servicio (gap-relproy)
   18) Fixes finales — espacio entre menú y hero en Home
   ========================================================= */


/* =========================================================
   00) PROTECCIONES GLOBALES (anti overflow horizontal)
   ========================================================= */
html, body {
  max-width: 100%;
  overflow-x: hidden;
  height: auto !important;
  overflow-y: auto !important;
}


/* =========================================================
   01) VARIABLES GLOBALES
   ========================================================= */
:root {
  /* Colores de texto */
  --gap-text: #111827;
  --gap-muted: #4b5563;
  --gap-soft: #6b7280;
  --gap-kicker: #6b7280;

  /* Bordes */
  --gap-border: #e5e7eb;
  --gap-border-soft: #f3f4f6;

  /* Tarjetas y sombras */
  --gap-card: #fff;
  --gap-shadow: 0 10px 30px rgba(17,24,39,.08);
  --gap-radius: 16px;
  --gap-radius-sm: 12px;

  /* CTAs y bandas */
  --gap-cta-bg: #f8fafc;
  --gap-cta-bd: #e2e8f0;
  --gap-wide-bg: #ecfeff;
  --gap-wide-border: #a5f3fc;

  /* Estados */
  --gap-warn-bg: rgba(245,158,11,.10);
  --gap-warn-bd: rgba(245,158,11,.25);
  --gap-ok-bg: rgba(34,197,94,.10);
  --gap-ok-bd: rgba(34,197,94,.22);

  /* Botones y gradientes */
  --gap-btn: #1f3a8a;
  --gap-g1: rgba(99,102,241,.22);
  --gap-g2: rgba(59,130,246,.16);
  --gap-g3: rgba(16,185,129,.14);

  /* Focus accesible */
  --gap-focus: 0 0 0 4px rgba(31,58,138,.18);

  /* Offset para anclas con header fijo */
  --gap-anchor-offset: 170px;

  /* Acento principal B2B */
  --gap-accent: #2563eb;
  --gap-accent-soft: rgba(37,99,235,.12);
  --gap-brand: var(--gap-accent);
}

/* Ajuste offset con admin bar */
body.admin-bar { --gap-anchor-offset: 210px; }


/* =========================================================
   02) FONDO GLOBAL
   ========================================================= */
body { background: #f8fafc; }

/* Gradiente decorativo de fondo (fijo, detrás de todo) */
body::before {
  content: "";
  position: fixed;
  inset: -12%;
  z-index: -1;
  pointer-events: none;
  background:
    radial-gradient(520px 300px at 10% 8%, rgba(99,102,241,.24), transparent 60%),
    radial-gradient(480px 300px at 90% 6%, rgba(59,130,246,.20), transparent 62%),
    radial-gradient(620px 420px at 50% 120%, rgba(16,185,129,.14), transparent 60%);
  filter: blur(14px);
}


/* =========================================================
   03) CSS GLOBAL — FUERA DE LA HOME
   ========================================================= */

/* Listado de servicios en sidebar/footer */
.gap-services li a,
.gap-services li a:visited { color: #b8b8b8; }
.gap-services li a:hover,
.gap-services li a:focus { color: #ffffff; text-decoration: underline; }
.gap-services-title { color: #000000; }

/* Sticky sidebar en desktop */
@media (min-width: 992px) {
  .sidebar-derecha,
  .project-sidebar,
  .sticky-sidebar {
    position: sticky;
    top: 110px;
    align-self: flex-start;
  }
}

/* Links de especialidades visibles */
.gap-links .gap-item-title a {
  color: var(--gap-brand);
  font-weight: 700;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 4px;
}
.gap-links .gap-item-title a:hover { text-decoration-thickness: 3px; }
.gap-links li { transition: transform .15s ease; }
.gap-links li:hover { transform: translateX(2px); }


/* =========================================================
   04) LAYOUT BASE — gap-wrap, gap-grid, tipografía
   ========================================================= */
.gap-wrap, .gap-wrap * { box-sizing: border-box; }
.gap-grid > * { min-width: 0; }

.gap-wrap { max-width: 1100px; margin: 0 auto; padding: 48px 20px; color: var(--gap-text); }
.gap-grid { display: grid; grid-template-columns: 1.15fr .85fr; gap: 28px; align-items: stretch; }
.gap-grid--3 { grid-template-columns: 1.05fr 1fr .85fr; }

@media (max-width: 900px) {
  .gap-grid, .gap-grid--3 { grid-template-columns: 1fr; }
}

.gap-intro { grid-column: 1 / -1; padding-bottom: 10px; }

/* Tipografía funcional */
.gap-kicker { font-size: 14px; letter-spacing: .06em; text-transform: uppercase; color: var(--gap-kicker); margin: 0 0 10px; }
.gap-h1 { font-size: clamp(28px,3.2vw,44px); line-height: 1.15; margin: 0 0 14px; }
.gap-h2 { font-size: 22px; margin: 0 0 14px; }
.gap-h3 { font-size: 18px; margin: 18px 0 10px; color: var(--gap-text); }

.gap-lead, .gap-note { color: var(--gap-muted); text-align: justify; text-justify: inter-word; }
.gap-lead { font-size: 18px; line-height: 1.75; margin: 0 0 12px; }
.gap-note { font-size: 16px; line-height: 1.7; margin: 0 0 12px; }

@media (max-width: 700px) {
  .gap-lead, .gap-note, .gap-card p, .gap-card li {
    text-align: left !important;
    text-justify: auto !important;
  }
}

.gap-divider { height: 1px; background: var(--gap-border); margin: 14px 0 10px; }
.gap-exp { margin: 0; font-size: 20px; font-weight: 700; color: #4b5563; letter-spacing: .02em; text-align: center; }
.gap-muted { margin: 0; color: var(--gap-muted); }


/* =========================================================
   05) COMPONENTES COMUNES
   ========================================================= */

/* --- Tarjeta base --- */
.gap-card {
  background: var(--gap-card);
  border: 1px solid var(--gap-border);
  border-radius: var(--gap-radius);
  padding: 26px;
  box-shadow: var(--gap-shadow);
  display: flex;
  flex-direction: column;
  height: 100%;
  margin-bottom: 24px;
}
.gap-card.slim { padding: 20px; }
.gap-card.soft { border-color: var(--gap-cta-bd); background: var(--gap-cta-bg); }

/* Tarjeta con gradiente decorativo */
.gap-card.grad { position: relative; overflow: hidden; }
.gap-card.grad::before {
  content: "";
  position: absolute;
  inset: -2px;
  pointer-events: none;
  z-index: 0;
  filter: blur(10px);
  background:
    radial-gradient(260px 160px at 12% 12%, var(--gap-g1), transparent 60%),
    radial-gradient(240px 160px at 88% 10%, var(--gap-g2), transparent 62%),
    radial-gradient(280px 200px at 70% 115%, var(--gap-g3), transparent 60%);
}
.gap-card.grad > * { position: relative; z-index: 1; }
.gap-card p, .gap-card li { line-height: 1.75; color: var(--gap-muted); }

/* --- Listas --- */
.gap-bullets { margin: 10px 0 0; padding-left: 18px; }
.gap-bullets li { margin: 6px 0; }

.gap-list { margin: 0; padding: 0; list-style: none; }
.gap-list li { padding: 14px 0; border-top: 1px solid var(--gap-border-soft); }
.gap-list li:first-child { border-top: none; padding-top: 0; }

.gap-item-title { font-weight: 700; color: var(--gap-text); margin: 0 0 6px; }
.gap-item-desc { margin: 0; color: var(--gap-muted); line-height: 1.7; }

/* Links dentro de listas de tipologías */
.gap-wrap .gap-item-title a,
.gap-wrap .gap-item-title a:visited {
  color: var(--gap-brand);
  font-weight: 800;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 4px;
}
.gap-wrap .gap-item-title a:hover,
.gap-wrap .gap-item-title a:focus {
  color: #1f3a8a;
  text-decoration-thickness: 3px;
}
.gap-wrap .gap-item-title a:focus-visible {
  outline: none;
  box-shadow: var(--gap-focus);
  border-radius: 6px;
}

/* --- Banda informativa --- */
.gap-band {
  margin-top: 18px;
  padding: 22px 24px;
  border-radius: 18px;
  background: var(--gap-cta-bg);
  border: 1px solid var(--gap-cta-bd);
  box-shadow: 0 6px 18px rgba(17,24,39,.05);
}
.gap-band h2, .gap-band h3 { margin-top: 0; }
.gap-band p { margin: 0; color: var(--gap-muted); line-height: 1.75; }
.gap-band.warn { background: var(--gap-warn-bg); border-color: var(--gap-warn-bd); }
.gap-band.ok { background: var(--gap-ok-bg); border-color: var(--gap-ok-bd); }

/* --- CTA wide --- */
.gap-wide-cta {
  margin: 36px 0;
  padding: 32px;
  border-radius: 22px;
  background: var(--gap-wide-bg);
  border: 1px solid var(--gap-wide-border);
  display: flex;
  gap: 24px;
  justify-content: space-between;
  align-items: center;
}
@media (max-width: 800px) {
  .gap-wide-cta { flex-direction: column; align-items: flex-start; }
}
.gap-wide-cta h3 { margin: 0 0 8px; font-size: 22px; }

/* --- Chips --- */
.gap-chip {
  border: 1px solid var(--gap-border-soft);
  background: #fff;
  border-radius: 999px;
  padding: 8px 12px;
  display: inline-flex;
  gap: 8px;
  align-items: baseline;
  box-shadow: 0 6px 18px rgba(17,24,39,.03);
}
.gap-chip__k { font-size: 12px; color: var(--gap-kicker); }
.gap-chip__v { font-size: 13px; font-weight: 700; color: var(--gap-text); }


/* =========================================================
   05C) LINKS VISIBLES EN CONTENIDO
   Tipologías / páginas satélite
   ========================================================= */

.entry-content a,
.wp-block-post-content a {
  text-decoration-thickness: 2px;
  text-underline-offset: 4px;
}

.entry-content a:not(.gap-btn):not(.gap-svc-btn):not(.wp-block-button__link),
.wp-block-post-content a:not(.gap-btn):not(.gap-svc-btn):not(.wp-block-button__link) {
  color: var(--gap-brand);
  font-weight: 800;
  text-decoration: underline;
}

.entry-content a:not(.gap-btn):not(.gap-svc-btn):not(.wp-block-button__link):hover,
.wp-block-post-content a:not(.gap-btn):not(.gap-svc-btn):not(.wp-block-button__link):hover {
  color: #1f3a8a;
  text-decoration-thickness: 3px;
}

.entry-content a:not(.gap-btn):not(.gap-svc-btn):not(.wp-block-button__link):focus-visible,
.wp-block-post-content a:not(.gap-btn):not(.gap-svc-btn):not(.wp-block-button__link):focus-visible {
  outline: none;
  box-shadow: var(--gap-focus);
  border-radius: 6px;
}

/* Links en headings */
.entry-content h2 a:not(.wp-block-button__link),
.entry-content h3 a:not(.wp-block-button__link),
.entry-content h4 a:not(.wp-block-button__link),
.wp-block-post-content h2 a:not(.wp-block-button__link),
.wp-block-post-content h3 a:not(.wp-block-button__link),
.wp-block-post-content h4 a:not(.wp-block-button__link) {
  font-weight: 900;
  text-decoration-thickness: 2px;
}

/* Separadores */
.entry-content hr,
.wp-block-post-content hr,
.wp-block-separator {
  border: none;
  border-top: 1px solid var(--gap-border-soft);
  margin: 18px 0;
}


/* =========================================================
   05D) EXCEPCIONES — No subrayar links en cards/CTAs
   ========================================================= */

/* Home: tarjetas de servicios y cards en general */
.gap-home #servicios a,
.gap-home .gap-cards a,
.gap-card a,
.gap-svc-card a,
.post-type-archive-proyectos .gap-proy-card a,
.single-proyectos .gap-proyecto__card a {
  text-decoration: none !important;
}

.gap-home #servicios a:hover,
.gap-home .gap-cards a:hover,
.gap-card a:hover,
.gap-svc-card a:hover,
.post-type-archive-proyectos .gap-proy-card a:hover,
.single-proyectos .gap-proyecto__card a:hover {
  text-decoration: none !important;
  opacity: .92;
}


/* =========================================================
   06) FORMULARIOS
   ========================================================= */
.gap-wrap .fluentform, .gap-wrap .ff-el-group { max-width: 100%; }
.gap-wrap .ff-el-form-control:focus {
  outline: none;
  box-shadow: var(--gap-focus);
  border-color: rgba(31,58,138,.45);
}
[id^="solicitud-"] { scroll-margin-top: 120px; }

.gap-form-box {
  max-width: 1100px;
  margin: 0 auto 48px;
  padding: 22px 24px;
  border-radius: 18px;
  background: #fff;
  border: 1px solid var(--gap-border);
  box-shadow: var(--gap-shadow);
}
.gap-form-box .fluentform { margin-top: 10px; }

@media (max-width: 640px) {
  .gap-form-box { padding: 18px 16px; }
}

.gap-form-box .gap-form-intro { text-align: center; max-width: 680px; margin: 0 auto 18px; }
.gap-form-box .gap-kicker { margin: 0 0 8px; text-align: center; }
.gap-form-box .gap-h2 { margin: 0 0 10px; text-align: center; }
.gap-form-box .gap-note { margin: 0; text-align: center; text-justify: auto; }


/* =========================================================
   07) BOTÓN gap-btn GLOBAL
   ========================================================= */
.gap-cta {
  max-width: 1100px;
  margin: 22px auto 18px;
  padding: 22px 24px;
  border-radius: 18px;
  background: var(--gap-cta-bg);
  border: 1px solid var(--gap-cta-bd);
  display: flex;
  gap: 18px;
  justify-content: space-between;
  align-items: center;
  box-shadow: 0 6px 18px rgba(17,24,39,.05);
}
.gap-cta h3 { margin: 0 0 6px; font-size: 22px; line-height: 1.2; color: var(--gap-text); }
.gap-cta p { margin: 0; color: var(--gap-muted); line-height: 1.6; }

@media (max-width: 800px) {
  .gap-cta { flex-direction: column; align-items: flex-start; }
}

a.gap-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 12px 16px;
  border-radius: 14px;
  background: var(--gap-btn);
  color: #fff !important;
  text-decoration: none !important;
  font-weight: 800;
  border: 1px solid transparent;
  white-space: nowrap;
}
a.gap-btn:hover { filter: brightness(.95); }
a.gap-btn:focus { outline: none; box-shadow: var(--gap-focus); }

.gap-card .gap-cta,
.gap-form-box .gap-cta { max-width: 100%; margin: 0; border-radius: 14px; box-shadow: none; }


/* =========================================================
   08) BLOQUES DE CIERRE / FAQ
   ========================================================= */
.gap-close {
  max-width: 1100px;
  margin: 18px auto;
  padding: 22px 24px;
  border-radius: 18px;
  background: #fff;
  border: 1px solid var(--gap-border);
  box-shadow: 0 6px 18px rgba(17,24,39,.05);
}
.gap-close p { margin: 0 0 12px; color: var(--gap-muted); line-height: 1.75; }
.gap-close p:last-child { margin-bottom: 0; }
.gap-close .gap-h2 { margin: 0 0 12px; }
.gap-close .gap-h3 { margin: 16px 0 8px; }
.gap-close p + .gap-h3 { margin-top: 18px; }

@media (max-width: 640px) {
  .gap-close { padding: 18px 16px; }
}


/* =========================================================
   09) PROYECTOS — ARCHIVE (listado)
   ========================================================= */
.post-type-archive-proyectos .ast-container { max-width: 1100px; }
.post-type-archive-proyectos .site-content { padding: 28px 0 48px; }
.post-type-archive-proyectos .gap-archivo { max-width: 1100px; margin: 0 auto; padding: 32px 20px; color: var(--gap-text); }
.post-type-archive-proyectos .gap-archivo__header { margin: 0 0 18px; }
.post-type-archive-proyectos .gap-archivo__title {
  margin: 0 0 10px;
  font-size: clamp(28px,3.2vw,44px);
  line-height: 1.15;
  letter-spacing: -0.01em;
}
.post-type-archive-proyectos .gap-archivo__intro { margin: 0; max-width: 80ch; color: var(--gap-muted); line-height: 1.75; }

/* Barra de filtros — contenedor */
.gap-archivo__filtros {
  margin: 0 0 24px;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 4px 20px rgba(17,24,39,.07);
}

/* Zona búsqueda */
.gap-archivo__search {
  position: relative;
  padding: 16px 20px;
  border-bottom: 1px solid var(--gap-border-soft);
}
.gap-archivo__search input {
  width: 100%;
  padding: 10px 16px 10px 40px;
  border: 1.5px solid #e2e8f0;
  border-radius: 8px;
  font-size: 14px;
  color: var(--gap-text);
  background: #f8fafc;
  outline: none;
  transition: border-color .2s ease, box-shadow .2s ease, background .2s ease;
  box-sizing: border-box;
  font-family: inherit;
}
.gap-archivo__search input:focus {
  border-color: #1e40af;
  box-shadow: 0 0 0 3px rgba(30,64,175,.10);
  background: #fff;
}
.gap-archivo__search input::placeholder { color: #9ca3af; }
.gap-archivo__search-icon {
  position: absolute;
  left: 34px;
  top: 50%;
  transform: translateY(-50%);
  color: #9ca3af;
  pointer-events: none;
}

/* Zona chips */
.gap-archivo__chips-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  padding: 14px 20px;
  background: #f8fafc;
  border-bottom: 1px solid var(--gap-border-soft);
}
.gap-archivo__chips-label {
  font-size: 11px;
  font-weight: 700;
  color: var(--gap-kicker);
  text-transform: uppercase;
  letter-spacing: .07em;
  margin-right: 4px;
  white-space: nowrap;
}

/* Chip base */
.gap-filtro-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 14px;
  border-radius: 999px;
  border: 1.5px solid #cbd5e1;
  background: #fff;
  color: var(--gap-muted);
  font-size: 12px;
  font-weight: 600;
  font-family: inherit;
  cursor: pointer;
  transition: all .18s ease;
  user-select: none;
  letter-spacing: .01em;
  box-shadow: 0 1px 3px rgba(17,24,39,.06);
}
.gap-filtro-chip:hover {
  border-color: #1e40af;
  color: #1e40af;
  background: #eff4ff;
  box-shadow: 0 2px 8px rgba(30,64,175,.12);
  transform: translateY(-1px);
}
.gap-filtro-chip.activo {
  background: #1e40af;
  border-color: #1e40af;
  color: #fff;
  box-shadow: 0 4px 12px rgba(30,64,175,.30);
}
.gap-filtro-chip.activo svg { stroke: #fff !important; }
.gap-filtro-chip.activo:hover {
  background: #1e3a8a;
  border-color: #1e3a8a;
  transform: translateY(-1px);
}

/* Zona contador */
.gap-archivo__footer-filtro {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 9px 20px;
}
.gap-archivo__count {
  margin: 0;
  font-size: 12px;
  color: var(--gap-soft);
}
.gap-archivo__count strong { color: var(--gap-text); }
.gap-archivo__filtro-activo {
  font-size: 12px;
  color: var(--gap-soft);
}
.gap-archivo__filtro-activo span {
  color: #1e40af;
  font-weight: 700;
}

/* Grid archivo */
.post-type-archive-proyectos .gap-archivo__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 14px;
}
@media (max-width: 980px) { .post-type-archive-proyectos .gap-archivo__grid { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (max-width: 640px) { .post-type-archive-proyectos .gap-archivo__grid { grid-template-columns: 1fr; } }
@media (min-width: 1200px) { .post-type-archive-proyectos .gap-archivo__grid { grid-template-columns: repeat(4,minmax(0,1fr)); } }

/* Cards archivo */
.post-type-archive-proyectos .gap-proy-card {
  border: 1px solid var(--gap-border);
  background: var(--gap-card);
  border-radius: 14px;
  box-shadow: 0 6px 16px rgba(17,24,39,.06);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  min-width: 0;
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.post-type-archive-proyectos .gap-proy-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 16px 36px rgba(17,24,39,.12);
  border-color: #d1d5db;
}
.post-type-archive-proyectos .gap-proy-card.oculta { display: none; }

/* Imagen */
.post-type-archive-proyectos .gap-proy-card__thumb { display: block; text-decoration: none; }
.post-type-archive-proyectos .gap-proy-card__thumb img {
  width: 100%; height: 160px;
  object-fit: cover; object-position: center;
  background: #fff; display: block;
  border-bottom: 1px solid var(--gap-border-soft);
}
.post-type-archive-proyectos .gap-proy-card__ph {
  display: block; width: 100%; aspect-ratio: 16/9;
  background: linear-gradient(135deg,#f3f4f6,#fff);
}

/* Body */
.post-type-archive-proyectos .gap-proy-card__body {
  padding: 10px 12px 12px;
  display: flex; flex-direction: column;
  gap: 6px; flex: 1;
}
.post-type-archive-proyectos .gap-proy-card__kicker { margin: 0; font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--gap-kicker); }
.post-type-archive-proyectos .gap-proy-card__title { margin: 0; line-height: 1.25; font-size: 15px; font-weight: 700; }
.post-type-archive-proyectos .gap-proy-card__title a { color: var(--gap-text); text-decoration: none; }
.post-type-archive-proyectos .gap-proy-card__title a:hover { color: var(--gap-text); }
.post-type-archive-proyectos .gap-proy-card__desc { margin: 0; color: var(--gap-muted); font-size: 13px; line-height: 1.45; }

/* Chips cards */
.post-type-archive-proyectos .gap-proy-card__chips { margin: 2px 0 0; padding: 0; list-style: none; display: flex; flex-wrap: wrap; gap: 6px; }
.post-type-archive-proyectos .gap-chip { padding: 3px 7px; }
.post-type-archive-proyectos .gap-chip__k { font-size: 11px; }
.post-type-archive-proyectos .gap-chip__v { font-size: 12px; }

/* CTA — botón azul */
.post-type-archive-proyectos .gap-proy-card__cta {
  margin-top: auto;
  padding-top: 8px;
  display: flex;
  justify-content: flex-end;
}
.post-type-archive-proyectos .gap-proy-card__link {
  display: inline-block;
  padding: 7px 12px;
  border-radius: 6px;
  background: #1e40af;
  color: #ffffff !important;
  font-weight: 600;
  font-size: 13px;
  text-decoration: none !important;
  border: 1px solid #1e40af;
  transition: background .2s ease, border-color .2s ease;
}
.post-type-archive-proyectos .gap-proy-card__link:hover {
  background: #1e3a8a;
  border-color: #1e3a8a;
  text-decoration: none !important;
}

/* Sin resultados */
.gap-archivo__empty {
  grid-column: 1 / -1;
  text-align: center;
  padding: 60px 20px;
  color: var(--gap-soft);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.gap-archivo__empty p { margin: 0; font-size: 15px; }

/* Paginación */
.post-type-archive-proyectos .gap-archivo__pagination { margin-top: 18px; }

/* Responsive */
@media (max-width: 640px) {
  .gap-archivo__search { padding: 12px 14px; }
  .gap-archivo__chips-row { padding: 12px 14px; gap: 6px; }
  .gap-archivo__footer-filtro { padding: 8px 14px; flex-direction: column; align-items: flex-start; gap: 2px; }
  .gap-filtro-chip { font-size: 11px; padding: 5px 10px; }
}

/* =========================================================
   10) PROYECTOS — SINGLE (ficha de proyecto)
   ========================================================= */
.single-proyectos .gap-proyecto,
.single-proyectos .gap-proyecto * { box-sizing: border-box; }
.single-proyectos .gap-proyecto { max-width: 1100px; margin: 0 auto; padding: 48px 20px; color: var(--gap-text); }

/* Intro */
.single-proyectos .gap-proyecto__intro {
  margin: 0 0 18px;
  padding: 18px 18px 16px;
  border: 1px solid var(--gap-border);
  background: #fff;
  border-radius: 18px;
  box-shadow: 0 8px 22px rgba(17,24,39,.05);
}
.single-proyectos .gap-proyecto__intro .gap-proyecto__rich {
  border-top: 1px solid var(--gap-border-soft);
  padding-top: 12px;
  margin-top: 10px;
}
.single-proyectos .gap-proyecto__subtitle {
  font-size: 16px;
  color: var(--gap-muted);
  margin: 6px 0 14px;
  line-height: 1.5;
}
.single-proyectos .gap-proyecto__resumen {
  margin-top: 0;
  padding-top: 12px;
  border-top: 1px solid var(--gap-border-soft);
}

/* Bloques destacados */
.single-proyectos #problema {
  border-left: 4px solid rgba(245,158,11,.6);
  background: rgba(245,158,11,.06);
}
.single-proyectos #resultado {
  border-left: 4px solid rgba(34,197,94,.7);
  background: rgba(34,197,94,.08);
  transform: scale(1.01);
}
.single-proyectos #resultado h2 { color: #065f46; }
.single-proyectos #resultado .gap-proyecto__rich { font-weight: 500; color: #065f46; }

/* Grid principal */
.single-proyectos .gap-proyecto__section { margin-bottom: 18px; }
.single-proyectos .gap-breadcrumbs { font-size: 12px; color: var(--gap-kicker); margin: 0 0 10px; }
.single-proyectos .gap-breadcrumbs a { color: inherit; text-decoration: none; }
.single-proyectos .gap-breadcrumbs a:hover { text-decoration: underline; }
.single-proyectos .gap-proyecto__introseo { margin: 6px 0 14px; color: var(--gap-muted); font-size: 14px; line-height: 1.6; }

.single-proyectos .gap-proyecto__grid {
  display: grid;
  grid-template-columns: minmax(0,1.6fr) minmax(0,.9fr);
  gap: 28px;
  align-items: start;
  overflow: visible !important;
}
@media (max-width: 980px) {
  .single-proyectos .gap-proyecto__grid { grid-template-columns: 1fr; }
}

/* Fix overflow heredado de Astra */
.single-proyectos .site,
.single-proyectos .site-content,
.single-proyectos .ast-container,
.single-proyectos .content-area,
.single-proyectos .site-main,
.single-proyectos .entry-content {
  height: auto !important;
  overflow: visible !important;
  transform: none !important;
  filter: none !important;
}

/* Media */
.single-proyectos .gap-proyecto__media {
  margin: 0 0 14px;
  border: 1px solid var(--gap-border);
  background: #fff;
  border-radius: 16px;
  padding: 12px;
  box-shadow: 0 8px 22px rgba(17,24,39,.05);
}
.single-proyectos .gap-proyecto__media img {
  width: 100% !important;
  height: auto !important;
  max-height: 380px;
  object-fit: contain !important;
  display: block;
  background: #fff;
  border-radius: 12px;
  border: 1px solid var(--gap-border-soft);
  padding: 14px;
}

/* Secciones */
.single-proyectos .gap-proyecto__section {
  margin: 0 0 16px;
  padding: 18px 18px 16px;
  border: 1px solid var(--gap-border);
  background: #fff;
  border-radius: 18px;
  box-shadow: 0 8px 22px rgba(17,24,39,.05);
}
.single-proyectos .gap-proyecto__section h2 { margin: 0 0 10px; font-size: 18px; font-weight: 800; color: var(--gap-text); }

.single-proyectos .gap-proyecto__rich { color: var(--gap-muted); line-height: 1.75; }
.single-proyectos .gap-proyecto__rich p { margin: 0 0 12px; }
.single-proyectos .gap-proyecto__rich p:last-child { margin-bottom: 0; }
.single-proyectos .gap-proyecto__rich ul { margin: 0 0 12px 18px; padding: 0; }
.single-proyectos .gap-proyecto__rich li { margin: 0 0 6px; }

/* Galería */
.single-proyectos .gap-proyecto__gallery { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
@media (max-width: 560px) { .single-proyectos .gap-proyecto__gallery { grid-template-columns: 1fr; } }

.single-proyectos .gap-gal__item {
  display: block;
  border-radius: 14px;
  overflow: hidden;
  border: 1px solid var(--gap-border-soft);
  box-shadow: 0 10px 22px rgba(17,24,39,.04);
  text-decoration: none;
  transition: transform .12s ease, box-shadow .12s ease;
}

/* Sidebar sticky desactivado (pendiente revisión) */
.single-proyectos .ast-sticky-sidebar,
.single-proyectos .ast-sticky-sidebar .ast-sidebar-wrapper,
.single-proyectos .ast-sticky-active { position: static !important; }

/* Cards sidebar */
.single-proyectos .gap-proyecto__card {
  background: #fff;
  border: 1px solid var(--gap-border);
  border-radius: 18px;
  padding: 14px;
  box-shadow: 0 8px 22px rgba(17,24,39,.05);
}
.single-proyectos .gap-proyecto__card + .gap-proyecto__card { margin-top: 14px; }
.single-proyectos .gap-proyecto__card-title {
  margin: 0 0 10px;
  font-size: 12px;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--gap-kicker);
}

/* Meta */
.single-proyectos .gap-proyecto__meta { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.single-proyectos .gap-proyecto__meta li { border: 1px solid var(--gap-border-soft); border-radius: 14px; padding: 10px 12px; }
.single-proyectos .gap-proyecto__meta-k { display: block; font-size: 12px; color: var(--gap-kicker); margin-bottom: 2px; }
.single-proyectos .gap-proyecto__meta-v { display: block; font-size: 14px; font-weight: 700; color: var(--gap-text); line-height: 1.25; word-break: break-word; }

/* Iconos */
.single-proyectos .gap-proyecto__icons {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 10px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--gap-border-soft);
}
.single-proyectos .gap-iconcard { border: 1px solid var(--gap-border-soft); background: #fff; border-radius: 14px; padding: 10px 8px; text-align: center; }
.single-proyectos .gap-iconcard img { width: 40px; height: 40px; object-fit: contain; display: block; margin: 0 auto 6px; }
.single-proyectos .gap-iconcard span { display: block; font-size: 12px; font-weight: 650; color: var(--gap-muted); line-height: 1.15; }

/* CTA aside */
.single-proyectos .gap-aside__cta { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--gap-border-soft); display: flex; flex-direction: column; gap: 10px; }
.single-proyectos .gap-btn-aside {
  display: block; text-align: center; border-radius: 14px; padding: 12px 14px; font-weight: 800;
  text-decoration: none !important; border: 1px solid transparent; background: var(--gap-btn); color: #fff !important;
}
.single-proyectos .gap-btn-aside--ghost { background: #fff; border-color: var(--gap-border); color: var(--gap-text) !important; }
.single-proyectos .gap-btn-inline {
  display: inline-block; padding: 10px 14px; border-radius: 12px;
  background: var(--gap-btn); color: #fff !important; text-decoration: none !important; font-weight: 800;
}
.single-proyectos .gap-aside__toc { margin: 0; line-height: 1.65; }

/* Anclas con offset */
.single-proyectos .gap-proyecto__section[id],
.single-proyectos #alcance,
.single-proyectos #normativa,
.single-proyectos #coordinacion,
.single-proyectos #documentacion,
.single-proyectos #contacto { scroll-margin-top: var(--gap-anchor-offset); }

.single-proyectos .gap-proyecto__section[id]:target {
  padding-top: var(--gap-anchor-offset);
  margin-top: calc(var(--gap-anchor-offset) * -1);
}

/* Caja SEO final (full-width dentro del grid) */
body.single-proyectos .gap-proyecto__grid > section.gap-proyecto__context {
  grid-column: 1 / -1 !important;
  width: 100% !important;
  display: block !important;
  margin: 18px 0 0;
  padding: 22px 24px;
  border-radius: 18px;
  background: #fff;
  border: 1px solid var(--gap-border);
  box-shadow: 0 6px 18px rgba(17,24,39,.05);
}
body.single-proyectos .gap-proyecto__context-inner { max-width: 100ch; }
body.single-proyectos .gap-proyecto__context p {
  margin: 0 0 12px; color: var(--gap-muted); line-height: 1.75;
  text-align: justify; text-justify: inter-word;
}
body.single-proyectos .gap-proyecto__context p:last-child { margin-bottom: 0; }
body.single-proyectos .gap-proyecto__context a { font-weight: 800; text-decoration: underline; }
body.single-proyectos .gap-proyecto__context h2 { font-size: 16px; font-weight: 800; margin: 0 0 10px; color: var(--gap-text); }

@media (max-width: 700px) {
  body.single-proyectos .gap-proyecto__context p { text-align: left; text-justify: auto; }
}


/* =========================================================
   11) ASTRA — UTILIDADES
   ========================================================= */

/* Ocultar títulos automáticos de Astra (usamos H1 propio en el contenido) */
.entry-title,
.ast-page-title,
.page-title,
.ast-archive-title { display: none !important; }


/* =========================================================
   12) SERVICIOS — HERO EN CAJA (gap-hero-box)
   ========================================================= */
.gap-hero-box {
  background: var(--gap-card);
  border: 1px solid var(--gap-border);
  border-radius: 18px;
  box-shadow: var(--gap-shadow);
  padding: 22px 24px;
  margin: 0 0 6px;
}
.gap-hero-box .gap-kicker { margin-top: 0; }
.gap-hero-box .gap-h1 { margin-bottom: 12px; }
.gap-hero-box .gap-lead { margin-bottom: 12px; }
.gap-hero-box .gap-note { margin-bottom: 12px; }
.gap-hero-box .gap-divider { margin: 14px 0 10px; }

@media (max-width: 640px) {
  .gap-hero-box { padding: 18px 16px; border-radius: 16px; }
  .gap-hero-box .gap-exp { font-size: 18px; }
}


/* =========================================================
   13) GAP HOME — SOLO HOMEPAGE
   ========================================================= */

/* --- 13a) Resets de contenedor Astra en home --- */

/* Quitar padding lateral del contenedor Astra (con :has para soporte moderno) */
@supports selector(:has(*)) {
  body.home .ast-container:has(.gap-home),
  body.home .site-content:has(.gap-home),
  body.home .ast-plain-container:has(.gap-home) {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

/* Fallback sin :has */
body.home .site-content,
body.home .ast-container {
  padding-left: 0 !important;
  padding-right: 0 !important;
  max-width: none !important;
}

/* Eliminar padding/margin superior del contenido en home */
body.home #content,
body.home .site-content,
body.home #primary,
body.home .content-area,
body.home .site-main {
  padding-top: 0 !important;
  margin-top: 0 !important;
}

/* Eliminar margen del bloque Gutenberg (wp-block-group) que genera espacio extra */
body.home .wp-block-group.is-layout-flow,
body.home .wp-block-group-is-layout-flow {
  margin-top: 0 !important;
  padding-top: 0 !important;
}
body.home .entry-content > .wp-block-group:first-child,
body.home .entry-content {
  margin-top: 0 !important;
  padding-top: 0 !important;
}

/* Nota: El header NO es flotante/transparente en home.
   El hero empieza justo debajo del menú.
   Si en el futuro se quiere header flotante, descomentar:
body.home .site-header {
  position: absolute;
  left: 0; right: 0; top: 0;
  width: 100%;
  background: transparent !important;
  z-index: 999;
}
*/


/* --- 13b) Variables y base del bloque .gap-home --- */
.gap-home {
  /* Variables propias del bloque home (dark) */
  --bg: #0b1220;
  --bg2: #0f1b33;
  --bg3: #070b14;
  --text: #eaf0ff;
  --muted: #b9c6e6;
  --line: rgba(255,255,255,.12);
  --accent: #5dd6ff;
  --accent2: #7c5cff;
  --max: 1120px;
  --max-wide: 1500px;
  --pad: 20px;
  --r: 18px;

  color: var(--text);
  width: 100%;
  max-width: none;
  overflow-x: clip;
  overflow-y: visible !important;
  height: auto !important;
  max-height: none !important;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;

  /* Ocultar scrollbar (decorativa) */
  -ms-overflow-style: none;
  scrollbar-width: none;
}
.gap-home::-webkit-scrollbar { width: 0 !important; height: 0 !important; }
.gap-home * { box-sizing: border-box; }
.gap-home a { color: inherit; }
.gap-home img, .gap-home svg, .gap-home video, .gap-home iframe { max-width: 100%; height: auto; }

/* Contenedor interno centrado */
.gap-home .gap-container {
  width: 100%;
  max-width: var(--max);
  margin: 0 auto;
  padding-inline: clamp(16px, 3vw, 24px);
}

/* Offset para anclas */
.gap-home [id] { scroll-margin-top: 90px; }

/* Full-width sin overflow */
.gap-home .gap-bleed {
  width: 100%;
  max-width: 100%;
  margin: 0;
  overflow-x: clip;
}

/* Botones en home */
.gap-home .gap-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 12px 16px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: rgba(255,255,255,.06);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease;
  font-weight: 800;
  text-decoration: none;
  line-height: 1;
  max-width: 100%;
}
.gap-home .gap-btn:hover { transform: translateY(-1px); border-color: rgba(255,255,255,.22); }
.gap-home .gap-btn:focus-visible { outline: 3px solid rgba(93,214,255,.55); outline-offset: 3px; }
.gap-home .gap-btn.gap-primary {
  background: linear-gradient(135deg, var(--accent) 0%, var(--accent2) 100%);
  color: #071023;
  border: none;
  box-shadow: 0 10px 30px rgba(93,214,255,.18);
}

/* Pills */
.gap-home .gap-pill {
  display: inline-flex;
  gap: 8px;
  align-items: center;
  border: 1px solid rgba(255,255,255,.16);
  background: rgba(255,255,255,.06);
  padding: 8px 12px;
  border-radius: 999px;
  color: var(--muted);
  font-weight: 800;
  font-size: 13px;
}


/* --- 13c) HERO DARK (imagen de fondo) --- */
.gap-home .gap-hero {
  position: relative;
  min-height: 92vh;
  display: flex;
  align-items: center;
  color: var(--text);
  background:
    linear-gradient(180deg, rgba(11,18,32,.45) 0%, rgba(11,18,32,.35) 55%, rgba(11,18,32,.55) 100%),
    radial-gradient(900px 500px at 85% 65%, rgba(255,245,220,.28), transparent 65%),
    url('/wp-content/uploads/2026/01/hero-b2b-gapenginyeria.webp') center / cover no-repeat;
  border-bottom: 1px solid rgba(255,255,255,.10);
  overflow: hidden;
  padding-top: 0;
}

/* Overlay gradiente lateral (legibilidad texto izquierdo) */
.gap-home .gap-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    rgba(5,10,20,.55) 0%,
    rgba(5,10,20,.40) 30%,
    rgba(5,10,20,.22) 50%,
    rgba(5,10,20,.10) 65%,
    rgba(5,10,20,0) 80%
  );
  pointer-events: none;
}

/* Luz premium en esquina superior derecha */
.gap-home .gap-hero::after {
  content: "";
  position: absolute;
  top: -20%;
  right: -10%;
  width: 600px;
  height: 600px;
  background: radial-gradient(
    circle,
    rgba(120,160,255,.25) 0%,
    rgba(120,160,255,.15) 35%,
    rgba(120,160,255,0) 70%
  );
  pointer-events: none;
  filter: blur(40px);
}

/* Contenedor hero con z-index sobre overlays */
.gap-home .gap-hero .gap-container {
  max-width: min(1400px, 100%);
  position: relative;
  z-index: 2;
}

/* Grid hero: texto | card */
.gap-home .gap-hero-grid {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(0, 460px);
  gap: clamp(18px, 4vw, 72px);
  align-items: center;
  padding: clamp(36px, 6vw, 64px) 0;
}
.gap-home .gap-hero-grid > * { min-width: 0; }

/* Tipografía hero */
.gap-home .gap-hero h1 {
  font-size: clamp(34px,4.2vw,56px);
  letter-spacing: -.8px;
  margin: 10px 0 14px;
  line-height: 1.06;
  text-wrap: balance;
  color: #ffffff;
  text-shadow: 0 6px 24px rgba(0,0,0,.30);
}
.gap-home .gap-hero p {
  margin: 0 0 22px;
  color: rgba(235,240,255,.92);
  font-size: clamp(16px,1.6vw,19px);
  max-width: 620px;
}

/* KPIs y CTA */
.gap-home .gap-kpis { display: flex; flex-wrap: wrap; gap: 10px; margin: 12px 0 26px; }
.gap-home .gap-kpis .gap-pill {
  color: #ffffff;
  border: 1px solid rgba(255,255,255,.45);
  background: rgba(255,255,255,.10);
}
.gap-home .gap-cta { display: flex; gap: 12px; flex-wrap: wrap; }

/* Tarjeta glass derecha */
.gap-home .gap-hero-card {
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.22);
  border-radius: 18px;
  padding: 22px;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  box-shadow: 0 30px 80px rgba(0,0,0,.35);
}
.gap-home .gap-hero-card h3 {
  margin: 0 0 10px;
  font-size: 16px;
  color: #ffffff;
  font-weight: 900;
  letter-spacing: -.2px;
}
.gap-home .gap-hero-card b { color: #ffffff; }
.gap-home .gap-hero-card span { color: rgba(220,230,255,.85); }

/* Lista interna de la tarjeta */
.gap-home .gap-list { display: grid; gap: 14px; }
.gap-home .gap-item {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 14px 16px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(10,15,25,.55);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.gap-home .gap-dot {
  width: 10px; height: 10px;
  border-radius: 99px;
  background: linear-gradient(135deg, var(--accent) 0%, var(--accent2) 100%);
  margin-top: 4px;
  flex: 0 0 auto;
}
.gap-home .gap-item b { display: block; font-size: 14px; }
.gap-home .gap-item span { display: block; color: var(--muted); font-size: 13px; margin-top: 2px; }


/* --- 13d) SECCIONES LIGHT (Servicios, Diferenciales, Cobertura) --- */
.gap-home .gap-light {
  background: #fff;
  color: #111;
  border-top: 1px solid #eef2f7;
  border-bottom: 1px solid #eef2f7;
}
.gap-home .gap-light .gap-container {
  padding-top: 54px;
  padding-bottom: 54px;
  max-width: var(--max-wide);
}
.gap-home .gap-light h2,
.gap-home .gap-light h3,
.gap-home .gap-light b { color: #0f172a; }
.gap-home .gap-light p,
.gap-home .gap-light span { color: #475569; }
.gap-home .gap-sub { margin: 8px 0 0; max-width: 72ch; }

/* Grid de cards (auto-fit) */
.gap-home .gap-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 14px;
  margin-top: 18px;
  justify-items: stretch;
  align-items: stretch;
}

/* Fix clipping de texto en cards de servicios */
.gap-home #servicios .gap-cards { justify-content: stretch; grid-auto-flow: row dense; }
.gap-home #servicios .gap-cards > * {
  grid-column: auto !important;
  justify-self: stretch !important;
  align-self: stretch !important;
  width: auto !important;
  max-width: none !important;
  min-width: 0 !important;
  margin: 0 !important;
}
.gap-home #servicios .gap-cards > .gap-card { width: 100% !important; }
.gap-home #servicios .gap-cards > * > .gap-card { width: 100% !important; }
.gap-home #servicios .gap-card, .gap-home #servicios .gap-card * { text-overflow: clip !important; }
.gap-home #servicios .gap-card h3,
.gap-home #servicios .gap-card p {
  white-space: normal !important;
  overflow: visible !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
  max-width: 100% !important;
}
.gap-home #servicios .gap-card h3 { hyphens: auto !important; }
.gap-home #servicios .gap-card-top { display: flex; gap: 12px; align-items: flex-start; }
.gap-home #servicios .gap-card-top > .gap-icon { flex: 0 0 42px; }
.gap-home #servicios .gap-card-top > div { min-width: 0 !important; flex: 1 1 auto; overflow: visible !important; }
.gap-home #servicios .gap-icon { font-size: 0 !important; line-height: 0 !important; }
.gap-home #servicios .gap-icon svg { font-size: initial; display: block; width: 22px; height: 22px; margin: 0 auto; }

/* Card light base */
.gap-home .gap-light .gap-card {
  position: relative;
  overflow: visible;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: var(--r);
  padding: 18px;
  transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease;
}
.gap-home .gap-light .gap-card:hover {
  transform: translateY(-3px);
  border-color: #cbd5e1;
  box-shadow: 0 12px 30px rgba(0,0,0,.08);
}
.gap-home .gap-light .gap-card::before {
  content: "";
  position: absolute;
  left: 14px; right: 14px; top: 0;
  height: 3px;
  border-radius: 99px;
  background: linear-gradient(90deg, var(--card-accent,#2563eb), transparent);
  opacity: .95;
}

/* Card top (icono + texto) */
.gap-home .gap-card-top { display: flex; gap: 12px; align-items: flex-start; margin-bottom: 10px; }
.gap-home .gap-icon {
  width: 42px; height: 42px;
  border-radius: 14px;
  display: flex; align-items: center; justify-content: center;
  background: #f8fafc;
  border: 1px solid #e5e7eb;
  flex: 0 0 auto;
  color: var(--card-accent,#2563eb);
  font-size: 18px;
  font-weight: 900;
  line-height: 1;
}

/* Colores de acento por tipo de card */
.gap-home .accent-blue  { --card-accent: #2563eb; }
.gap-home .accent-red   { --card-accent: #dc2626; }
.gap-home .accent-cyan  { --card-accent: #0891b2; }
.gap-home .accent-violet { --card-accent: #7c3aed; }


/* --- 13e) PROCESO (pasos) --- */
.gap-home #proceso .gap-process { position: relative; margin-top: 18px; }

/* Línea conectora entre pasos (solo desktop) */
.gap-home #proceso .gap-process::before {
  content: "";
  position: absolute;
  left: 0; right: 0; top: 34px;
  height: 2px;
  background: linear-gradient(90deg,
    rgba(37,99,235,.35),
    rgba(8,145,178,.28),
    rgba(124,58,237,.28),
    rgba(220,38,38,.22)
  );
  opacity: .9;
  pointer-events: none;
}
@media (max-width: 1100px) {
  .gap-home #proceso .gap-process::before { display: none; }
}

.gap-home #proceso .gap-steps {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 14px;
  margin-top: 0;
}
.gap-home #proceso .gap-step {
  position: relative;
  overflow: hidden;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: var(--r);
  padding: 18px;
  transition: border-color .2s ease, box-shadow .2s ease;
}
.gap-home #proceso .gap-step::before {
  content: "";
  position: absolute;
  left: 14px; right: 14px; top: 0;
  height: 3px;
  border-radius: 99px;
  background: linear-gradient(90deg, var(--card-accent,#2563eb), transparent);
  opacity: .95;
}
.gap-home #proceso .gap-step:hover { border-color: #cbd5e1; box-shadow: 0 12px 30px rgba(0,0,0,.08); }
.gap-home #proceso .gap-step-head { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; padding-top: 6px; }
.gap-home #proceso .gap-step-ico {
  width: 42px; height: 42px;
  border-radius: 14px;
  display: flex; align-items: center; justify-content: center;
  background: #f8fafc;
  border: 1px solid #e5e7eb;
  flex: 0 0 auto;
  color: var(--card-accent,#2563eb);
  position: relative;
}
.gap-home #proceso .gap-step-ico svg {
  width: 22px; height: 22px;
  stroke: currentColor; fill: none;
  stroke-width: 2; stroke-linecap: round; stroke-linejoin: round;
}
.gap-home #proceso .gap-step-num {
  position: absolute;
  right: -6px; top: -6px;
  width: 22px; height: 22px;
  border-radius: 99px;
  display: flex; align-items: center; justify-content: center;
  font-weight: 900; font-size: 10px; letter-spacing: .2px;
  color: #0f172a;
  background: #fff;
  border: 1px solid #e5e7eb;
  box-shadow: 0 6px 14px rgba(0,0,0,.10);
}
.gap-home #proceso .gap-step span { display: block; font-size: 13px; line-height: 1.45; }


/* --- 13f) CTA BAND + MINI FOOTER --- */
.gap-home .gap-cta-band {
  border-top: 1px solid rgba(255,255,255,.12);
  border-bottom: 1px solid rgba(255,255,255,.12);
  background: linear-gradient(135deg, rgba(93,214,255,.10), rgba(124,92,255,.10));
}
.gap-home .gap-cta-band p { color: var(--muted); }
.gap-home .gap-cta-wrap {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  padding: 26px 0;
}
.gap-home .gap-mini-footer {
  padding: 34px 0;
  color: var(--muted);
  font-size: 14px;
  border-top: 1px solid rgba(255,255,255,.10);
}


/* --- 13g) RESPONSIVE HOME --- */
@media (max-width: 980px) {
  .gap-home .gap-hero-grid { grid-template-columns: 1fr; padding: 46px 0; }
  .gap-home .gap-cta-wrap { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 560px) {
  .gap-home .gap-hero { min-height: auto; }
}


/* =========================================================
   14) SERVICIOS "IMPACTO" (gap-svc-*) — Páginas de servicio
   ========================================================= */
.gap-svc-hero, .gap-svc-cards { overflow-x: clip; }
@supports not (overflow-x: clip) {
  .gap-svc-hero, .gap-svc-cards { overflow-x: hidden; }
}

.gap-svc-container {
  width: 100%;
  max-width: 1280px;
  margin: 0 auto;
  padding-inline: clamp(16px, 3vw, 28px);
}

/* Hero dark de servicios (sin imagen, con gradiente) */
.gap-svc-hero {
  position: relative;
  overflow: hidden;
  border-radius: 22px;
  margin: 16px auto 28px;
  background:
    radial-gradient(900px 520px at 15% 25%, rgba(93,214,255,.18), transparent 60%),
    radial-gradient(900px 520px at 85% 70%, rgba(124,92,255,.18), transparent 62%),
    linear-gradient(180deg, rgba(15,23,42,.96), rgba(11,18,32,.98));
  border: 1px solid rgba(255,255,255,.08);
  box-shadow: 0 30px 80px rgba(0,0,0,.25);
}

/* Animación de luz de fondo */
.gap-svc-hero::before {
  content: "";
  position: absolute;
  inset: -45%;
  background:
    radial-gradient(circle at 20% 20%, rgba(93,214,255,.16), transparent 45%),
    radial-gradient(circle at 70% 60%, rgba(124,92,255,.14), transparent 48%);
  filter: blur(22px);
  opacity: .85;
  animation: gapSvcFloat 10s ease-in-out infinite;
  pointer-events: none;
}
@keyframes gapSvcFloat {
  0%,100% { transform: translate3d(-2%, -1%, 0) scale(1); }
  50%      { transform: translate3d(2%, 1.5%, 0) scale(1.03); }
}

/* Grid héroe servicios: 50/50 */
.gap-svc-hero-grid {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(22px, 4.5vw, 64px);
  align-items: stretch;
  padding: clamp(18px, 2.6vw, 28px) clamp(18px, 3.2vw, 34px);
}
.gap-svc-hero-grid > * { min-width: 0; }
.gap-svc-hero .gap-svc-hero-grid > :first-child { max-width: 68ch; }

@media (max-width: 980px) {
  .gap-svc-hero-grid { grid-template-columns: 1fr; gap: 14px; padding: 18px; align-items: start; }
}

/* Pill / etiqueta */
.gap-svc-pill {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 12px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.14);
  background: rgba(255,255,255,.06);
  color: rgba(234,240,255,.82);
  font-weight: 800; font-size: 12.5px;
}

/* Tipografía hero servicios */
.gap-svc-hero h1 {
  margin: 10px 0 10px;
  font-size: clamp(24px, 2.65vw, 40px);
  line-height: 1.08; letter-spacing: -.35px;
  color: #eaf0ff; text-wrap: balance;
}
.gap-svc-hero p {
  margin: 0 0 14px;
  color: rgba(185,198,230,.92);
  font-size: clamp(14.5px, 1.08vw, 16.5px);
  line-height: 1.52; max-width: 68ch;
}
.gap-svc-hero a:not(.gap-svc-btn) { color: inherit; text-decoration: none; }
.gap-svc-hero a:not(.gap-svc-btn):hover,
.gap-svc-hero a:not(.gap-svc-btn):focus { text-decoration: none; }
.gap-svc-hero a:focus-visible { outline: none; box-shadow: var(--gap-focus); border-radius: 6px; }

/* KPIs */
.gap-svc-kpis { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 10px; margin: 12px 0 14px; }
@media (max-width: 680px) { .gap-svc-kpis { grid-template-columns: 1fr; } }
.gap-svc-kpi { border: 1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.05); border-radius: 16px; padding: 11px 12px; }
.gap-svc-kpi b { display: block; color: #eaf0ff; font-weight: 900; letter-spacing: -.2px; font-size: 13.5px; }
.gap-svc-kpi span { display: block; margin-top: 2px; color: rgba(185,198,230,.9); font-size: 12.8px; }

/* Botones CTA servicios */
.gap-svc-cta { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 4px; }
.gap-svc-btn {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 11px 14px; border-radius: 999px;
  text-decoration: none; font-weight: 900;
  background: transparent; color: #ffffff;
  border: 2px solid rgba(255,255,255,.85);
  transition: transform .2s ease, box-shadow .2s ease, background .2s ease, color .2s ease, border-color .2s ease;
}
.gap-svc-btn:hover {
  background: #ffffff; color: #071023;
  transform: translateY(-1px); border-color: #ffffff;
  box-shadow: 0 10px 28px rgba(255,255,255,.22);
}
.gap-svc-primary {
  border: none !important;
  background: linear-gradient(135deg, rgba(93,214,255,1), rgba(124,92,255,1)) !important;
  color: #071023 !important;
  box-shadow: 0 14px 40px rgba(93,214,255,.18);
}
@media (max-width: 520px) { .gap-svc-btn { width: 100%; text-align: center; } }

/* Tarjeta glass derecha */
.gap-svc-hero-card {
  width: 100%; height: 100%;
  border-radius: 18px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.05);
  padding: 18px;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  display: flex; flex-direction: column;
}
.gap-svc-hero-card h3 {
  margin: 0 0 12px;
  color: rgba(234,240,255,.92);
  font-size: 15px; letter-spacing: -.1px; font-weight: 950;
}
.gap-svc-list {
  margin: 0; padding-left: 18px;
  color: rgba(185,198,230,.94);
  line-height: 1.55;
  font-size: clamp(14.5px, 1.08vw, 16.5px);
  flex: 1 1 auto;
}
.gap-svc-list li { margin: 6px 0; }
.gap-svc-note {
  margin-top: 12px;
  border-top: 1px solid rgba(255,255,255,.10);
  padding-top: 12px;
  color: rgba(185,198,230,.94); font-size: 13.5px; line-height: 1.45;
}

/* Cards de servicios (light) */
.gap-svc-cards { margin-bottom: 18px; }
.gap-svc-cards h2 { margin: 0; font-size: clamp(20px, 2vw, 26px); letter-spacing: -.2px; color: var(--gap-text); }
.gap-svc-sub { margin: 8px 0 0; color: var(--gap-muted); max-width: 72ch; }
.gap-svc-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px,1fr)); gap: 14px; margin-top: 16px; align-items: stretch; }

.gap-svc-card {
  position: relative; overflow: hidden;
  border-radius: 18px; background: #fff; border: 1px solid #e5e7eb;
  padding: 18px;
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
  display: flex; flex-direction: column; height: 100%; min-width: 0;
}
.gap-svc-card::before {
  content: "";
  position: absolute; left: 14px; right: 14px; top: 0;
  height: 3px; border-radius: 99px;
  background: linear-gradient(90deg, #2563eb, transparent);
  opacity: .95;
}
.gap-svc-card:hover { transform: translateY(-3px); border-color: #cbd5e1; box-shadow: 0 12px 30px rgba(0,0,0,.08); }
.gap-svc-card-top { display: flex; gap: 12px; align-items: flex-start; }
.gap-svc-card-top > * { min-width: 0; }
.gap-svc-card-top > div { overflow-wrap: anywhere; word-break: break-word; }
.gap-svc-ico {
  width: 42px; height: 42px; border-radius: 14px;
  display: flex; align-items: center; justify-content: center;
  background: #f8fafc; border: 1px solid #e5e7eb;
  flex: 0 0 auto; color: #2563eb; font-size: 20px; line-height: 1;
}
.gap-svc-card h3 { margin: 0 0 6px; color: #0f172a; font-size: 16px; letter-spacing: -.1px; }
.gap-svc-card p { margin: 0; color: #475569; font-size: 14px; line-height: 1.45; overflow-wrap: anywhere; word-break: break-word; }


/* =========================================================
   15) REVEAL — Animaciones de entrada
   Requiere JS que añade .is-in al hacer scroll
   ========================================================= */
.reveal {
  opacity: 0;
  transform: translateY(10px) scale(.985);
  transform-origin: 50% 50%;
  filter: blur(8px);
  transition: opacity .75s ease, transform .75s cubic-bezier(.2,.8,.2,1), filter .75s ease;
  will-change: opacity, transform, filter;
}
.reveal.is-in { opacity: 1; transform: translateY(0) scale(1); filter: blur(0); }

.reveal-group .reveal-item {
  opacity: 0;
  transform: translateY(10px) scale(.99);
  transform-origin: 50% 50%;
  filter: blur(8px);
  transition: opacity .70s ease, transform .70s cubic-bezier(.2,.8,.2,1), filter .70s ease;
  will-change: opacity, transform, filter;
}
.reveal-group.is-in .reveal-item { opacity: 1; transform: translateY(0) scale(1); filter: blur(0); }
.reveal-group.is-in .reveal-item:nth-child(1)  { transition-delay: .05s }
.reveal-group.is-in .reveal-item:nth-child(2)  { transition-delay: .10s }
.reveal-group.is-in .reveal-item:nth-child(3)  { transition-delay: .15s }
.reveal-group.is-in .reveal-item:nth-child(4)  { transition-delay: .20s }
.reveal-group.is-in .reveal-item:nth-child(5)  { transition-delay: .25s }
.reveal-group.is-in .reveal-item:nth-child(6)  { transition-delay: .30s }
.reveal-group.is-in .reveal-item:nth-child(7)  { transition-delay: .35s }
.reveal-group.is-in .reveal-item:nth-child(8)  { transition-delay: .40s }
.reveal-group.is-in .reveal-item:nth-child(9)  { transition-delay: .45s }
.reveal-group.is-in .reveal-item:nth-child(10) { transition-delay: .50s }
.reveal-group.is-in .reveal-item:nth-child(11) { transition-delay: .55s }
.reveal-group.is-in .reveal-item:nth-child(12) { transition-delay: .60s }

/* Accesibilidad: desactivar animaciones si el usuario lo prefiere */
@media (prefers-reduced-motion: reduce) {
  .reveal, .reveal-item {
    opacity: 1 !important; transform: none !important;
    filter: none !important; transition: none !important; animation: none !important;
  }
  .gap-svc-hero::before { animation: none !important; }
}

/* Fix LCP: hero de servicios visible inmediatamente sin esperar reveal */
.gap-svc-hero.reveal {
  opacity: 1 !important;
  transform: none !important;
  filter: none !important;
}


/* =========================================================
   16) BLOQUE DE DECISIÓN (gap-decide) — B2B
   ========================================================= */
.gap-decide, .gap-decide * { box-sizing: border-box; }
.gap-decide {
  --dec-accent: var(--gap-accent);
  --dec-accent-soft: var(--gap-accent-soft);
  --dec-bg: #ffffff;
  --dec-bd: var(--gap-border);
  --dec-shadow: 0 14px 38px rgba(17,24,39,.08);
  max-width: 1200px; margin: 18px auto 28px; padding: 18px;
}
.gap-decide__box {
  position: relative; overflow: hidden;
  border-radius: 20px; background: var(--dec-bg);
  border: 1px solid var(--dec-bd); box-shadow: var(--dec-shadow);
  padding: clamp(18px, 3.2vw, 26px);
}
.gap-decide__box::before {
  content: ""; position: absolute; left: 16px; right: 16px; top: 0;
  height: 4px; border-radius: 999px;
  background: linear-gradient(90deg, var(--dec-accent), transparent);
  opacity: .95; pointer-events: none;
}
.gap-decide__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
  gap: 18px; align-items: start;
}
.gap-decide__grid > * { min-width: 0; }
@media (max-width: 980px) {
  .gap-decide { padding: 14px; }
  .gap-decide__grid { grid-template-columns: 1fr; }
}
.gap-decide__kicker { margin: 0 0 10px; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--gap-kicker); }
.gap-decide__title { margin: 0 0 10px; color: var(--gap-text); font-weight: 900; letter-spacing: -.25px; font-size: clamp(22px, 2.2vw, 30px); line-height: 1.12; text-wrap: balance; }
.gap-decide__lead { margin: 0 0 14px; color: var(--gap-muted); line-height: 1.65; font-size: 15px; max-width: 70ch; overflow-wrap: anywhere; word-break: break-word; }
.gap-decide__bullets { margin: 0; padding: 0; list-style: none; display: grid; gap: 10px; }
.gap-decide__bullets li { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; border-radius: 14px; border: 1px solid var(--gap-border-soft); background: rgba(248,250,252,.8); }
.gap-decide__dot { width: 10px; height: 10px; border-radius: 999px; background: var(--dec-accent); margin-top: 4px; flex: 0 0 auto; }
.gap-decide__bullets b { display: block; color: var(--gap-text); font-size: 13px; line-height: 1.25; }
.gap-decide__bullets span { display: block; color: var(--gap-muted); font-size: 13px; line-height: 1.35; margin-top: 2px; overflow-wrap: anywhere; word-break: break-word; }
.gap-decide__side { border-radius: 16px; border: 1px solid var(--gap-border-soft); background: linear-gradient(180deg, rgba(37,99,235,.06), rgba(37,99,235,.03)); padding: 14px; }
.gap-decide__kpis { display: grid; gap: 10px; margin: 0 0 12px; }
.gap-decide__kpi { border: 1px solid rgba(17,24,39,.08); background: #fff; border-radius: 14px; padding: 10px 12px; }
.gap-decide__kpi b { display: block; color: var(--gap-text); font-weight: 900; letter-spacing: -.1px; }
.gap-decide__kpi span { display: block; margin-top: 2px; color: var(--gap-muted); font-size: 13px; line-height: 1.35; overflow-wrap: anywhere; word-break: break-word; }
.gap-decide__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 8px; }
.gap-decide__btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  padding: 12px 14px; border-radius: 14px;
  text-decoration: none !important; font-weight: 900;
  border: 1px solid rgba(17,24,39,.12); background: #fff; color: var(--gap-text) !important;
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease, filter .18s ease;
  max-width: 100%;
}
.gap-decide__btn:hover { transform: translateY(-1px); border-color: rgba(17,24,39,.18); box-shadow: 0 10px 22px rgba(17,24,39,.08); }
.gap-decide__btn:focus { outline: none; box-shadow: var(--gap-focus); }
.gap-decide__btn--primary { border-color: transparent; background: var(--dec-accent); color: #fff !important; }
.gap-decide__btn--primary:hover { filter: brightness(.97); }
.gap-decide__note { margin: 12px 0 0; padding-top: 12px; border-top: 1px solid rgba(17,24,39,.08); color: var(--gap-muted); font-size: 13px; line-height: 1.45; }
@media (max-width: 520px) { .gap-decide__btn { width: 100%; } }

/* Variante Aerotermia */
.gap-decide--aero { --dec-accent: #0f766e; --dec-accent-soft: rgba(15,118,110,.12); }
.gap-decide--aero .gap-decide__side { background: linear-gradient(180deg, rgba(15,118,110,.10), rgba(15,118,110,.04)); }


/* =========================================================
   17) TARJETAS DE PROYECTOS EN PÁGINAS DE SERVICIO
   (gap-relproy — grid 3 columnas dentro de servicios)
   ========================================================= */

/* Grid contenedor */
.gap-relproy__wrap {
  display: grid !important;
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap: 16px;
}

/* La grid interna "mini" actúa como contents */
.gap-relproy__wrap .gap-proy-mini-grid { display: contents; }

/* Ocultar layouts legacy */
.gap-relproy__wrap .gap-proy-row,
.gap-relproy__wrap .gap-proy-mini-card { display: none !important; }

/* Card */
.gap-relproy__wrap .gap-proy-card {
  display: flex; flex-direction: column; height: 100%;
  background: #ffffff;
  border: 1px solid #e5e7eb;
  border-radius: 14px; padding: 0;
  overflow: hidden;
  box-shadow: 0 8px 22px rgba(17,24,39,.06);
  transition: all .2s ease;
}
.gap-relproy__wrap .gap-proy-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 16px 36px rgba(17,24,39,.12);
  border-color: #d1d5db;
}

/* Imagen — ocupa todo el ancho sin padding, pegada arriba */
.gap-relproy__wrap .gap-proy-card__thumb { width: 100%; margin-bottom: 0; }
.gap-relproy__wrap .gap-proy-card__thumb img {
  max-height: 160px;
  width: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

/* Body — padding lateral compacto */
.gap-relproy__wrap .gap-proy-card__body { display: flex; flex-direction: column; flex: 1; gap: 3px; padding: 8px 10px 10px; }

/* Kicker "Proyecto" */
.gap-relproy__wrap .gap-proy-card__kicker { font-size: 11px; margin: 0; }

/* Chips: especialidad + año en una sola línea */
.gap-relproy__wrap .gap-proy-card__chips {
  display: flex !important;
  flex-wrap: wrap;
  flex-direction: row !important;
  gap: 6px;
  margin: 0 !important;
  padding: 0 !important;
}
.gap-relproy__wrap .gap-chip {
  padding: 3px 7px !important;
  font-size: 11px;
}

/* Título — corregido (era 22px con valor roto en el <a>) */
.gap-relproy__wrap h2.gap-proy-card__title,
.gap-relproy__wrap .gap-proy-card__title {
  font-size: 15px !important;
  line-height: 1.3 !important;
  font-weight: 700 !important;
  margin: 0 0 4px !important;
}
.gap-relproy__wrap h2.gap-proy-card__title a,
.gap-relproy__wrap .gap-proy-card__title a {
  font-size: 15px !important;
  color: #1f2937 !important;
  text-decoration: none !important;
}
.gap-relproy__wrap .gap-proy-card__title a:hover { color: #1f2937; }

/* CTA siempre abajo */
.gap-relproy__wrap .gap-proy-card__cta {
  margin-top: auto;
  display: flex; justify-content: flex-end;
}
.gap-relproy__wrap .gap-proy-card__cta a {
  display: inline-block; padding: 7px 12px; border-radius: 6px;
  background: #1e40af !important; color: #ffffff !important;
  font-weight: 600; font-size: 13px;
  text-decoration: none !important;
  border: 1px solid #1e40af;
  transition: all .2s ease;
}
.gap-relproy__wrap .gap-proy-card__cta a:hover { background: #1e3a8a !important; border-color: #1e3a8a; }

/* Botón "Ver más proyectos" */
.gap-relproy__foot { margin-top: 20px; }
.gap-relproy__more {
  display: block; width: 100%; text-align: center;
  padding: 14px 18px; border-radius: 10px;
  background: #e8eefc; color: #1e40af !important;
  font-weight: 600; font-size: 14px;
  text-decoration: none;
  transition: all .2s ease;
}
.gap-relproy__more:hover { background: #dbe6fb; }

/* Responsive móvil */
@media (max-width: 900px) {
  .gap-relproy__wrap { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 14px; }
}
@media (max-width: 640px) {
  .gap-relproy__wrap { grid-template-columns: 1fr; gap: 12px; }
  .gap-relproy__wrap .gap-proy-card { padding: 12px; }
  .gap-relproy__wrap .gap-proy-card__thumb img { max-height: 120px; object-fit: contain; padding: 6px; }
  .gap-relproy__wrap h2.gap-proy-card__title,
  .gap-relproy__wrap .gap-proy-card__title { font-size: 14px !important; }
  .gap-relproy__wrap .gap-proy-card__cta { justify-content: stretch; }
  .gap-relproy__wrap .gap-proy-card__cta a { width: 100%; text-align: center; }
}
/* =========================================================
   18) FIXES FINALES — Espacio entre menú y hero en Home
   ========================================================= */

/* Eliminar margen/padding de contenedores Astra en home */
body.home #content,
body.home .site-content,
body.home #primary,
body.home .content-area,
body.home .site-main,
body.home .ast-container,
body.home .entry-content {
  padding-top: 0 !important;
  margin-top: 0 !important;
}

/* Eliminar espacio generado por el wp-block-group de Gutenberg */
body.home .wp-block-group.is-layout-flow,
body.home .wp-block-group-is-layout-flow,
body.home .entry-content > .wp-block-group:first-child {
  margin-top: 0 !important;
  padding-top: 0 !important;
}

/* =========================================================
   FIX STICKY FICHA TÉCNICA
   ========================================================= */
body.single-proyectos .gap-proyecto__grid {
  align-items: start !important;
}

body.single-proyectos .gap-proyecto__aside {
  position: sticky !important;
  top: 90px !important;
  align-self: start !important;
  height: fit-content !important;
  max-height: calc(100vh - 100px) !important;
  overflow-y: auto !important;
}

body.single-proyectos .gap-proyecto__aside-inner {
  height: auto !important;
}

body.single-proyectos .gap-proyecto__card {
  height: auto !important;
}
/* FIX STICKY — eliminar height fija del aside */
body.single-proyectos aside.gap-proyecto__aside {
  height: auto !important;
  max-height: none !important;
}

body.single-proyectos .gap-proyecto__aside-inner {
  height: auto !important;
  max-height: none !important;
}

body.single-proyectos .gap-proyecto__card {
  height: auto !important;
  max-height: none !important;
  margin-bottom: 14px !important;
}

/* =========================================================
   LISTAS DE LINKS (tipologías, guías, satélites)
   Selector genérico: cualquier .gap-list dentro de .gap-card
   que contenga .gap-item-title con <a>
   Sin tocar HTML — cubre todas las páginas automáticamente
   ========================================================= */

.gap-card .gap-list:has(.gap-item-title a) { gap: 0; }

.gap-card .gap-list:has(.gap-item-title a) li {
  padding: 0;
  border-radius: 10px;
  margin-bottom: 4px;
  border-top: none !important;
  transition: background .18s ease;
}
.gap-card .gap-list:has(.gap-item-title a) li:hover {
  background: #f0f4ff;
}

/* Título */
.gap-card .gap-list:has(.gap-item-title a) li .gap-item-title {
  margin: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 20px 4px 14px;
}
.gap-card .gap-list:has(.gap-item-title a) li .gap-item-title a {
  text-decoration: none !important;
  color: var(--gap-brand, #2563eb);
  font-weight: 800;
  font-size: 15px;
  flex: 1;
}

/* Badge flecha rectangular */
.gap-card .gap-list:has(.gap-item-title a) li .gap-item-title::after {
  content: "→";
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 4px 10px;
  border-radius: 7px;
  background: var(--gap-brand, #2563eb);
  color: #fff;
  font-size: 13px;
  font-weight: 900;
  flex: 0 0 auto;
  transition: background .18s ease, transform .2s ease;
  box-shadow: 0 2px 8px rgba(37,99,235,.25);
}
.gap-card .gap-list:has(.gap-item-title a) li:hover .gap-item-title::after {
  background: #1f3a8a;
  transform: translateX(3px);
}

/* Descripción */
.gap-card .gap-list:has(.gap-item-title a) li .gap-item-desc {
  margin: 0;
  padding: 2px 14px 12px;
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--gap-muted, #4b5563);
}

/* ===== BANNER COOKIES ===== */
#gap-cookie-banner {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -48%);
  z-index: 99999;
  width: 90%;
  max-width: 420px;
  background: #fff;
  border-radius: 14px;
  padding: 28px 24px 22px;
  box-shadow: 0 8px 40px rgba(0,0,0,.18);
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  font-size: 13px;
  line-height: 1.6;
  color: #333;
  opacity: 0;
  transition: opacity .35s ease, transform .35s ease;
}
#gap-cookie-banner.show {
  opacity: 1;
  transform: translate(-50%, -50%);
}
#gap-cookie-banner h4 {
  font-size: 15px;
  font-weight: 700;
  margin: 0 0 10px;
  color: #111;
}
#gap-cookie-banner p {
  margin: 0 0 18px;
  color: #555;
}
#gap-cookie-banner a { color: #1a73e8; text-decoration: underline; }
.gap-cookie-btns { display: flex; gap: 10px; }
.gap-btn-accept {
  flex: 1;
  background: #1a1a2e;
  color: #fff;
  border: none;
  border-radius: 8px;
  padding: 11px 0;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: opacity .15s;
}
.gap-btn-accept:hover { opacity: .85; }
.gap-btn-reject {
  flex: 1;
  background: transparent;
  color: #555;
  border: 1px solid #d0d0d0;
  border-radius: 8px;
  padding: 11px 0;
  font-size: 13px;
  cursor: pointer;
  transition: background .15s;
}
.gap-btn-reject:hover { background: #f5f5f5; }