/**
 * GICA Elements — sistema de diseño
 * Tokens + componentes de los widgets. Editable vía controles de Elementor
 * (los controles generan overrides con {{WRAPPER}}, estos son los defaults).
 */

:root{
  --gic-green:#163D2A; --gic-accent:#009900; --gic-yellow:#FEFE00;
  --gic-mint:#ECF7EC; --gic-chip:#D7F0D0; --gic-white:#FFFFFF;
  --gic-ink:#1E1E1E; --gic-muted:#5B6B60; --gic-line:#E3ECE4;
  --gic-display:'GICA Display','Jost','Century Gothic',system-ui,sans-serif;
  --gic-sans:'GICA Sans','Figtree',system-ui,-apple-system,sans-serif;
  --gic-radius-card:16px; --gic-radius-lg:32px; --gic-radius-pill:999px; --gic-radius-btn:12px;
  --gic-ease:cubic-bezier(.22,.61,.36,1);
  /* Check en círculo (el que precede a «Estas empresas ya han confiado…»). */
  --gic-check-svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='8.5'/%3E%3Cpath d='M8.5 12.2l2.4 2.4 4.6-5'/%3E%3C/svg%3E");
}

/* ---------- Utilidades base ---------- */

/* El iconito que precede a los títulos (el rombo verde) se dibuja con ::before.
   Sus tres propiedades viven en variables CSS para que los controles de
   Elementor puedan cambiarlas: forma, color, tamaño y separación.
     --gic-ico-color  color del icono
     --gic-ico-size   tamaño (ancho = alto)
     --gic-ico-gap    separación icono ↔ texto */
.gic-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: var(--gic-ico-gap, 10px);
	font-family: var(--gic-sans);
	font-size: 16px;
	font-weight: 700;
	letter-spacing: .02em;
	text-transform: uppercase;
	color: var(--gic-accent);
	margin: 0 0 16px;
}
.gic-eyebrow::before {
	content: "";
	flex: 0 0 auto;
	width: var(--gic-ico-size, 14px);
	height: var(--gic-ico-size, 14px);
	background: var(--gic-ico-color, var(--gic-accent));
	transform: rotate(45deg);
}
.gic-eyebrow--light { color: var(--gic-mint); }
.gic-eyebrow--light::before { background: var(--gic-ico-color, var(--gic-yellow)); }

/* Eyebrow aplicado a un widget Heading (builder). Especificidad alta para
   ganar al color global Primary que Elementor asigna por defecto al heading. */
.elementor-widget.gic-eyebrow-wrap .elementor-heading-title {
	display: inline-flex;
	align-items: center;
	gap: var(--gic-ico-gap, 10px);
	font-family: var(--gic-sans);
	font-size: 16px;
	font-weight: 700;
	letter-spacing: .02em;
	text-transform: uppercase;
	color: var(--gic-accent);
}
.elementor-widget.gic-eyebrow-wrap .elementor-heading-title::before {
	content: "";
	flex: 0 0 auto;
	width: var(--gic-ico-size, 14px);
	height: var(--gic-ico-size, 14px);
	background: var(--gic-ico-color, var(--gic-accent));
	transform: rotate(45deg);
}
.gic-eyebrow-wrap { margin-bottom: 19px; }
.elementor-widget.gic-eyebrow-wrap--light .elementor-heading-title { color: var(--gic-mint); }
.elementor-widget.gic-eyebrow-wrap--light .elementor-heading-title::before { background: var(--gic-ico-color, var(--gic-yellow)); }

/* Imagen con radio estándar del sistema */
.gic-img-rounded img {
	border-radius: var(--gic-radius-card);
	width: 100%;
	object-fit: cover;
}

/* Hairline entre ítems de listas horizontales */
.gic-hairline { border-color: var(--gic-line); }

/* Chip reutilizable (proyectos, blog, filtros de categoría, etc.) */
.gic-chip {
	display: inline-flex;
	align-items: center;
	background: #B7F5B7;
	color: #325242;
	font-family: var(--gic-sans);
	font-size: 16px;
	font-weight: 600;
	line-height: 1;
	padding: 4px 10px;
	border-radius: 8px;
	white-space: nowrap;
}

/* Header sticky con borde al hacer scroll (Elementor Pro sticky) */
.gic-header { background: var(--gic-white); min-height: 73px; border-bottom: 1px solid rgba(143, 165, 151, .30); }
.gic-header.elementor-sticky--effects {
	box-shadow: 0 6px 24px -18px rgba(22, 61, 42, .25);
}
/* El botón "Contacto" del header usa el verde de marca (#163D2A), no el verde oscuro (#003E00) del resto. */
.gic-header .gic-btn.gic-btn--yellow { color: #163D2A; }
.gic-header .gic-btn.gic-btn--yellow svg { background: #163D2A; color: var(--gic-yellow); }

/* ---------- Botones ---------- */

.gic-btn {
	display: inline-flex;
	box-sizing: border-box;
	align-items: center;
	gap: 16px;
	font-family: var(--gic-sans);
	font-size: 18px;
	font-weight: 500;
	line-height: 1;
	padding: 16px 24px;
	border-radius: 8px;
	border: 1px solid transparent;
	cursor: pointer;
	text-decoration: none;
	transition: background .3s var(--gic-ease), color .3s var(--gic-ease), border-color .3s var(--gic-ease), transform .3s var(--gic-ease);
	white-space: nowrap;
}

.gic-btn svg { width: 16px; height: 16px; transition: transform .3s var(--gic-ease); }
.gic-btn:hover svg { transform: translateX(4px); }
.gic-btn--download:hover svg { transform: translateY(3px); }

/* Dobles clases: ganar especificidad al color de enlaces del Kit (.elementor-kit-X a) */
.gic-btn.gic-btn--yellow { background: #FEFE00; color: #003E00; }
/* Hover (fiel al Figma): el botón amarillo invierte a verde brillante + texto amarillo. */
.gic-btn.gic-btn--yellow:hover { background: #009A00; color: #FEFE00; }
.gic-btn.gic-btn--yellow:hover svg { background: #FEFE00; color: #009A00; }

/* Contorno (el segundo botón del hero en el PDF): fondo transparente, borde y
   texto amarillos, misma altura y radio que el botón sólido de al lado.
   El icono ya NO se oculta por CSS: se elige en el control «Icono» del widget. */
.gic-btn.gic-btn--outline { background: transparent; color: #FEFE00; border-color: #FEFE00; }
/* Hover (fiel al Figma): el botón outline se rellena de verde brillante. */
.gic-btn.gic-btn--outline:hover { background: #009A00; color: #FEFE00; border-color: #009A00; }

/* Fantasma: como el contorno pero sin borde (para zonas muy limpias). */
.gic-btn.gic-btn--ghost { background: transparent; color: #FEFE00; border-color: transparent; }
.gic-btn.gic-btn--ghost:hover { background: rgba(254, 254, 0, .12); color: #FEFE00; }

/* Sin icono: no hay hueco fantasma entre texto y borde. */
.gic-btn.gic-btn--noicon { gap: 0; }

/* Flecha-en-caja: botones sólidos (amarillo/link/contorno) muestran el ícono
   dentro de una caja de color. Todo esto es editable desde la pestaña Estilo. */
.gic-btn.gic-btn--yellow svg,
.gic-btn.gic-btn--outline svg,
.gic-btn.gic-btn--ghost svg,
.gic-btn.gic-btn--link svg {
	width: 24px;
	height: 24px;
	padding: 6px;
	box-sizing: border-box;
	border-radius: 6px;
	background: #003E00;
	color: #FEFE00;
	transition: transform .3s var(--gic-ease), background .3s var(--gic-ease), color .3s var(--gic-ease);
}
/* Sobre fondo oscuro (contorno / fantasma) la caja se invierte: amarilla con flecha verde. */
.gic-btn.gic-btn--outline svg,
.gic-btn.gic-btn--ghost svg { background: #FEFE00; color: #003E00; }
.gic-btn.gic-btn--outline:hover svg,
.gic-btn.gic-btn--ghost:hover svg { background: #FEFE00; color: #009A00; }

/* No es un link plano: texto subrayado + caja de flecha (mismo patrón que los "more" links, ver §gic-scard__more etc). */
.gic-btn.gic-btn--link {
	background: none;
	border: none;
	padding: 0;
	border-radius: 0;
	gap: 11px;
	color: #003E00;
	font-size: 16px;
	font-weight: 500;
	text-decoration: underline;
}
/* Variante para fondos oscuros (banda verde, hero, CTA…): texto/caja amarillos, flecha verde oscuro. */
.gic-btn.gic-btn--link.gic-btn--light { color: #FEFE00; }
.gic-btn.gic-btn--link.gic-btn--light svg { background: #FEFE00; color: #003E00; }

.gic-btn.gic-btn--download { background: var(--gic-green); color: var(--gic-mint); }
.gic-btn.gic-btn--download:hover { background: #0F2C1D; color: var(--gic-white); }

.gic-btn:focus-visible { outline: 2px solid var(--gic-accent); outline-offset: 2px; }

/* ---------- Header / Footer helpers ---------- */

.gic-logo { display: flex; align-items: center; gap: 12px; text-decoration: none; }
.gic-logo img { display: block; height: 40px; width: auto; }
.gic-logo__text {
	font-family: var(--gic-display);
	font-size: 22px;
	font-weight: 700;
	color: var(--gic-green);
	line-height: 1;
}
.gic-logo--light .gic-logo__text,
.gic-logo--light .gic-logo__text span { color: var(--gic-mint); }

/* Título de sección (widget Heading nativo dentro de gicb_section_head) — auto-estilado
   para no depender del kit global de Elementor. */
.gic-h2 .elementor-heading-title {
	font-family: var(--gic-display);
	font-weight: 700;
	color: var(--gic-green);
	font-size: clamp(38px, 5vw, 60px);
	line-height: 1.2;
	letter-spacing: normal;
}
/* Las palabras largas en español ("especialidades", "Repotenciación"…) no
   deben desbordar en pantallas estrechas. */
.gic-h2 .elementor-heading-title,
.gic-hero__title,
.gic-cta__title,
.gic-cert__title,
.gic-post__title,
.gic-scard__title,
.gic-proj__title,
.gic-tst__quote { overflow-wrap: break-word; word-break: break-word; }
.gic-h2--light .elementor-heading-title { color: var(--gic-mint); }
.gic-h2--center .elementor-heading-title { text-align: center; }

/* ---------- Barra legal del footer (widget «GICA · Barra legal») ----------
   Dos bloques: los ENLACES legales y el COPYRIGHT (con el crédito opcional).
   Cómo se colocan lo decide el control «Orden de los bloques», que es
   responsive: se puede elegir una cosa en el ordenador y otra en el teléfono.
   El control escribe una clase en el envoltorio del widget —
   .gic-legal--<valor>, .gic-legal-tablet--<valor>, .gic-legal-mobile--<valor> —
   y aquí abajo está lo que hace cada una.

   Variables editables (Avanzado → CSS personalizado del widget o del footer):
     --gic-legal-color        color del texto base
     --gic-legal-link         color de los enlaces
     --gic-legal-link-hover   color de los enlaces al pasar el cursor
     --gic-legal-line         color de la línea divisoria de arriba */
.gic-legal {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: flex-start;
	flex-wrap: wrap;
	gap: 20px;
	width: 100%;
	padding-top: 24px;
	border-top: 1px solid var(--gic-legal-line, rgba(255, 255, 255, .12));
	font-family: var(--gic-sans);
	font-size: 16px;
	line-height: 1.6;
	text-align: left;
	color: var(--gic-legal-color, rgba(255, 255, 255, .6));
}
.gic-legal--nodiv { border-top: none; padding-top: 0; }
/* La franja ocupa SIEMPRE el ancho completo de la caja del pie. Si se queda
   encogida (porque la columna que la contiene no llega al 100 %), los dos
   bloques no caben en una línea y se parten en dos renglones aunque el
   reparto sea el correcto. */
.gic-footer .elementor-widget:has(.gic-legal),
.gic-footer .e-con:has(.gic-legal),
.gic-footer .elementor-column:has(.gic-legal) {
	width: 100% !important;
	max-width: 100% !important;
	flex-basis: auto !important;
}
.gic-footer .elementor-widget:has(.gic-legal) > .elementor-widget-container { width: 100%; }
.gic-legal__links { display: flex; flex-wrap: wrap; align-items: center; gap: 26px; }
.gic-legal a { color: var(--gic-legal-link, rgba(255, 255, 255, .72)); text-decoration: underline; text-underline-offset: 3px; transition: color .3s var(--gic-ease); }
.gic-legal a:hover { color: var(--gic-legal-link-hover, var(--gic-yellow)); }
.gic-legal--nounderline a { text-decoration: none; }
.gic-legal--nounderline a:hover { text-decoration: underline; }
.gic-legal__copy { color: inherit; }
.gic-legal__credit { margin-left: 8px; }
.gic-legal__credit a { color: var(--gic-legal-link, rgba(255, 255, 255, .72)); }
/* Crédito «en una línea aparte»: sin sangría heredada y pegado al copyright. */
.gic-legal--creditbelow .gic-legal__credit { display: inline-block; margin-left: 0; margin-top: 4px; }

/* Separadores opcionales entre enlaces. */
.gic-legal--sep-dot .gic-legal__links a:not(:last-child)::after,
.gic-legal--sep-bar .gic-legal__links a:not(:last-child)::after {
	display: inline-block;
	margin-left: 26px;
	text-decoration: none;
	color: rgba(255, 255, 255, .35);
}
.gic-legal--sep-dot .gic-legal__links a:not(:last-child)::after { content: "\00B7"; }
.gic-legal--sep-bar .gic-legal__links a:not(:last-child)::after { content: "|"; }

/* --- Órdenes (control «Orden de los bloques») ---
   Cuando los dos bloques van apilados, cuál va arriba lo decide el control
   «Qué va primero», que cambia el orden REAL del HTML (no con `order`), para
   que un lector de pantalla lea lo mismo que se ve. Por eso aquí las
   disposiciones apiladas ponen `order: 0` en los dos: reinician el `order` que
   pueda venir de la disposición de escritorio. */
/* --- Escritorio (y base para todo lo demás) --- */
/* enlaces a la izquierda · copyright a la derecha */
.gic-legal--links-left .gic-legal { flex-direction: row; align-items: center; text-align: left; }
.gic-legal--links-left .gic-legal__links { order: 0; justify-content: flex-start; }
.gic-legal--links-left .gic-legal__copy { order: 1; text-align: right; }
/* copyright a la izquierda · enlaces a la derecha */
.gic-legal--copy-left .gic-legal { flex-direction: row; align-items: center; text-align: left; }
.gic-legal--copy-left .gic-legal__links { order: 1; justify-content: flex-end; }
.gic-legal--copy-left .gic-legal__copy { order: 0; text-align: left; }
/* todo a la izquierda, en dos líneas */
.gic-legal--both-left .gic-legal { flex-direction: column; align-items: flex-start; text-align: left; }
.gic-legal--both-left .gic-legal__links { order: 0; justify-content: flex-start; }
.gic-legal--both-left .gic-legal__copy { order: 0; text-align: left; }
/* todo centrado, en dos líneas */
.gic-legal--both-center .gic-legal { flex-direction: column; align-items: center; text-align: center; }
.gic-legal--both-center .gic-legal__links { order: 0; justify-content: center; }
.gic-legal--both-center .gic-legal__copy { order: 0; text-align: center; }
/* todo a la derecha, en dos líneas */
.gic-legal--both-right .gic-legal { flex-direction: column; align-items: flex-end; text-align: right; }
.gic-legal--both-right .gic-legal__links { order: 0; justify-content: flex-end; }
.gic-legal--both-right .gic-legal__copy { order: 0; text-align: right; }

/* --- Tablet (<= 1024 px) — solo si se eligió algo distinto para tablet --- */
@media (max-width: 1024px) {
	/* enlaces a la izquierda · copyright a la derecha */
	.gic-legal-tablet--links-left .gic-legal { flex-direction: row; align-items: center; text-align: left; }
	.gic-legal-tablet--links-left .gic-legal__links { order: 0; justify-content: flex-start; }
	.gic-legal-tablet--links-left .gic-legal__copy { order: 1; text-align: right; }
	/* copyright a la izquierda · enlaces a la derecha */
	.gic-legal-tablet--copy-left .gic-legal { flex-direction: row; align-items: center; text-align: left; }
	.gic-legal-tablet--copy-left .gic-legal__links { order: 1; justify-content: flex-end; }
	.gic-legal-tablet--copy-left .gic-legal__copy { order: 0; text-align: left; }
	/* todo a la izquierda, en dos líneas */
	.gic-legal-tablet--both-left .gic-legal { flex-direction: column; align-items: flex-start; text-align: left; }
	.gic-legal-tablet--both-left .gic-legal__links { order: 0; justify-content: flex-start; }
	.gic-legal-tablet--both-left .gic-legal__copy { order: 0; text-align: left; }
	/* todo centrado, en dos líneas */
	.gic-legal-tablet--both-center .gic-legal { flex-direction: column; align-items: center; text-align: center; }
	.gic-legal-tablet--both-center .gic-legal__links { order: 0; justify-content: center; }
	.gic-legal-tablet--both-center .gic-legal__copy { order: 0; text-align: center; }
	/* todo a la derecha, en dos líneas */
	.gic-legal-tablet--both-right .gic-legal { flex-direction: column; align-items: flex-end; text-align: right; }
	.gic-legal-tablet--both-right .gic-legal__links { order: 0; justify-content: flex-end; }
	.gic-legal-tablet--both-right .gic-legal__copy { order: 0; text-align: right; }
}

/* --- Teléfono (<= 767 px) — solo si se eligió algo distinto para móvil --- */
@media (max-width: 767px) {
	/* enlaces a la izquierda · copyright a la derecha */
	.gic-legal-mobile--links-left .gic-legal { flex-direction: row; align-items: center; text-align: left; }
	.gic-legal-mobile--links-left .gic-legal__links { order: 0; justify-content: flex-start; }
	.gic-legal-mobile--links-left .gic-legal__copy { order: 1; text-align: right; }
	/* copyright a la izquierda · enlaces a la derecha */
	.gic-legal-mobile--copy-left .gic-legal { flex-direction: row; align-items: center; text-align: left; }
	.gic-legal-mobile--copy-left .gic-legal__links { order: 1; justify-content: flex-end; }
	.gic-legal-mobile--copy-left .gic-legal__copy { order: 0; text-align: left; }
	/* todo a la izquierda, en dos líneas */
	.gic-legal-mobile--both-left .gic-legal { flex-direction: column; align-items: flex-start; text-align: left; }
	.gic-legal-mobile--both-left .gic-legal__links { order: 0; justify-content: flex-start; }
	.gic-legal-mobile--both-left .gic-legal__copy { order: 0; text-align: left; }
	/* todo centrado, en dos líneas */
	.gic-legal-mobile--both-center .gic-legal { flex-direction: column; align-items: center; text-align: center; }
	.gic-legal-mobile--both-center .gic-legal__links { order: 0; justify-content: center; }
	.gic-legal-mobile--both-center .gic-legal__copy { order: 0; text-align: center; }
	/* todo a la derecha, en dos líneas */
	.gic-legal-mobile--both-right .gic-legal { flex-direction: column; align-items: flex-end; text-align: right; }
	.gic-legal-mobile--both-right .gic-legal__links { order: 0; justify-content: flex-end; }
	.gic-legal-mobile--both-right .gic-legal__copy { order: 0; text-align: right; }
}

/* --- Repartos EN LÍNEA: los dos bloques comparten fila de verdad ---
   La franja permite envolver (para que los enlaces salten de línea entre
   ellos), pero eso hacía que, en cuanto el copyright y el crédito se
   alargaban, el bloque entero se cayera a una segunda línea y pareciera
   apilado. En los repartos en línea los dos bloques no envuelven: encogen, y
   es el texto de dentro el que salta de línea. */
.gic-legal--links-left .gic-legal,
.gic-legal--copy-left .gic-legal { flex-wrap: nowrap; }
.gic-legal--links-left .gic-legal__links,
.gic-legal--links-left .gic-legal__copy,
.gic-legal--copy-left .gic-legal__links,
.gic-legal--copy-left .gic-legal__copy { min-width: 0; }
/* Cuando no cabe todo, quien cede es la lista de políticas —que ya está
   pensada para saltar de línea entre enlaces—, no el bloque de derechos de
   autor, que se partiría por la mitad de una frase. */
.gic-legal--links-left .gic-legal__links,
.gic-legal--copy-left .gic-legal__links { flex: 1 1 auto; }
.gic-legal--links-left .gic-legal__copy,
.gic-legal--copy-left .gic-legal__copy { flex: 0 1 auto; max-width: 100%; }
/* El crédito viaja entero: o cabe en la línea del copyright, o baja completo. */
.gic-legal__credit { white-space: nowrap; }

@media (max-width: 1024px) {
	.gic-legal-tablet--links-left .gic-legal,
	.gic-legal-tablet--copy-left .gic-legal { flex-wrap: nowrap; }
	.gic-legal-tablet--links-left .gic-legal__links,
	.gic-legal-tablet--links-left .gic-legal__copy,
	.gic-legal-tablet--copy-left .gic-legal__links,
	.gic-legal-tablet--copy-left .gic-legal__copy { min-width: 0; }
	/* Y al revés: si en tablet se eligió apilado, la franja vuelve a envolver. */
	.gic-legal-tablet--both-left .gic-legal,
	.gic-legal-tablet--both-center .gic-legal,
	.gic-legal-tablet--both-right .gic-legal { flex-wrap: wrap; }
}

@media (max-width: 767px) {
	.gic-legal-mobile--links-left .gic-legal,
	.gic-legal-mobile--copy-left .gic-legal { flex-wrap: nowrap; }
	.gic-legal-mobile--links-left .gic-legal__links,
	.gic-legal-mobile--links-left .gic-legal__copy,
	.gic-legal-mobile--copy-left .gic-legal__links,
	.gic-legal-mobile--copy-left .gic-legal__copy { min-width: 0; }
	.gic-legal-mobile--both-left .gic-legal,
	.gic-legal-mobile--both-center .gic-legal,
	.gic-legal-mobile--both-right .gic-legal { flex-wrap: wrap; }
}

/* En el teléfono el conjunto se aprieta un poco. */
@media (max-width: 767px) {
	.gic-legal { font-size: 14px; gap: 14px; padding-top: 20px; }
	.gic-legal__links { gap: 16px; }
	.gic-legal--sep-dot .gic-legal__links a:not(:last-child)::after,
	.gic-legal--sep-bar .gic-legal__links a:not(:last-child)::after { margin-left: 16px; }
	/* Interruptor «Enlaces uno debajo de otro en el teléfono». */
	.gic-legal--linkstack .gic-legal__links { flex-direction: column; align-items: inherit; gap: 10px; }
	.gic-legal--linkstack .gic-legal__links a:not(:last-child)::after { content: none !important; }
}

/* --- Red de seguridad para marcado ANTIGUO de la franja legal ---
   El widget de la v1.33 escribe siempre una clase por dispositivo
   (`gic-legal-mobile--…`). Si esa clase NO está, lo que se está pintando viene
   de una versión anterior del plugin o de un CSS cacheado, y sus clases pueden
   estar peleadas entre sí (la v1.32 escribía la del escritorio y la del móvil
   a la vez, y ganaba la que estuviera más abajo en el archivo). En ese caso
   manda el diseño, no lo que haya guardado:

     · Ordenador y tablet → derechos a la izquierda, políticas a la derecha.
     · Teléfono → apiladas a la izquierda, políticas arriba.

   En cuanto el widget nuevo pinta la franja, esta red deja de aplicarse sola y
   vuelve a mandar el control «Orden de los bloques». */
@media (min-width: 768px) {
	.elementor-widget:not([class*="gic-legal-mobile--"]) .gic-legal {
		flex-direction: row !important;
		flex-wrap: nowrap !important;
		align-items: center !important;
		justify-content: space-between !important;
	}
	.elementor-widget:not([class*="gic-legal-mobile--"]) .gic-legal .gic-legal__copy {
		order: 0 !important;
		text-align: left !important;
		flex: 0 1 auto !important;
		min-width: 0 !important;
	}
	.elementor-widget:not([class*="gic-legal-mobile--"]) .gic-legal .gic-legal__links {
		order: 1 !important;
		justify-content: flex-end !important;
		text-align: right !important;
		flex: 1 1 auto !important;
		min-width: 0 !important;
	}
}
@media (max-width: 767px) {
	.elementor-widget:not([class*="gic-legal-mobile--"]) .gic-legal {
		flex-direction: column !important;
		flex-wrap: wrap !important;
		align-items: flex-start !important;
		text-align: left !important;
	}
	.elementor-widget:not([class*="gic-legal-mobile--"]) .gic-legal .gic-legal__links {
		order: 0 !important;
		justify-content: flex-start !important;
		text-align: left !important;
	}
	.elementor-widget:not([class*="gic-legal-mobile--"]) .gic-legal .gic-legal__copy {
		order: 1 !important;
		text-align: left !important;
	}
}

/* ---------- Footer: arreglos sobre el footer YA construido ----------
   Estos selectores actúan sobre la plantilla que ya existe en el sitio, sin
   tener que rehacerla. Se usa :has() para localizar las filas por su
   contenido, en vez de depender de la profundidad exacta del anidamiento
   (que cambia entre versiones de Elementor). */

/* (1) «Síguenos» vuelve a la misma fila que las demás columnas.
   Las cinco columnas suman ~94 % y, con los huecos, pasan del 100 %: la
   quinta se iba a una fila nueva.

   El contenedor flex del footer puede ser `.e-con` (contenedor a ancho
   completo), `.e-con-inner` (contenedor con caja) o `.elementor-container`
   (maquetación antigua por secciones), y no hay forma de saber cuál usa cada
   sitio. Por eso se aplica `nowrap` a TODOS los contenedores del footer: en
   los que apilan en columna no tiene ningún efecto, y en el que es una fila
   resuelve el problema. La franja legal se exceptúa más abajo. */
@media (min-width: 1025px) {
	.gic-footer .e-con,
	.gic-footer .e-con-inner,
	.gic-footer .elementor-container {
		flex-wrap: nowrap !important;
	}
	/* Sin min-width:0 las columnas no se dejan encoger y se desbordan. */
	.gic-footer .e-con,
	.gic-footer .e-con-inner > .e-con,
	.gic-footer .elementor-column {
		min-width: 0 !important;
		flex-shrink: 1 !important;
	}
	/* La franja legal SÍ puede envolver: son dos bloques, no cinco columnas. */
	.gic-footer .e-con:has(.gic-footer-legal),
	.gic-footer .e-con-inner:has(.gic-footer-legal),
	.gic-footer .elementor-container:has(.gic-footer-legal) {
		flex-wrap: wrap !important;
	}
}

/* (2) Franja legal ANTIGUA (la de dos bloques de texto sueltos, anterior al
   widget «GICA · Barra legal»):

     · Ordenador y tablet → los DERECHOS DE AUTOR a la izquierda y las
       POLÍTICAS a la derecha, en la misma línea.
     · Teléfono → las dos cosas apiladas contra el margen izquierdo, con las
       POLÍTICAS ARRIBA y los derechos debajo.

   Para dejarlo apilado a la izquierda TAMBIÉN en el ordenador, añadir la
   clase `gic-footer--legal-left` al contenedor del pie (Avanzado → Clases
   CSS). */

/* --- Ordenador y tablet: reparto a dos lados --- */
@media (min-width: 768px) {
	/* Derechos de autor: a la izquierda. */
	.gic-footer:not(.gic-footer--legal-left) .e-con:has(> .e-con-inner .gic-footer-legal:not(.gic-footer-legal--links)),
	.gic-footer:not(.gic-footer--legal-left) .e-con:has(> .gic-footer-legal:not(.gic-footer-legal--links)),
	.gic-footer:not(.gic-footer--legal-left) .elementor-column:has(.gic-footer-legal:not(.gic-footer-legal--links)) {
		order: -1;
		align-items: flex-start !important;
		text-align: left;
	}
	/* Políticas y demás botones: a la derecha. */
	.gic-footer:not(.gic-footer--legal-left) .e-con:has(> .e-con-inner .gic-footer-legal--links),
	.gic-footer:not(.gic-footer--legal-left) .e-con:has(> .gic-footer-legal--links),
	.gic-footer:not(.gic-footer--legal-left) .elementor-column:has(.gic-footer-legal--links) {
		order: 1;
		align-items: flex-end !important;
		text-align: right;
	}
	/* La fila no envuelve y las dos mitades se reparten el ancho. Sin esto,
	   dos columnas al 50 % más el hueco suman más del 100 % y la segunda se
	   cae a un renglón nuevo (que es justo lo que parecía «apilado»). */
	.gic-footer:not(.gic-footer--legal-left) .e-con:has(> .gic-footer-legal--links),
	.gic-footer:not(.gic-footer--legal-left) .e-con:has(> .e-con-inner .gic-footer-legal--links),
	.gic-footer:not(.gic-footer--legal-left) .e-con:has(> .gic-footer-legal:not(.gic-footer-legal--links)),
	.gic-footer:not(.gic-footer--legal-left) .e-con:has(> .e-con-inner .gic-footer-legal:not(.gic-footer-legal--links)),
	.gic-footer:not(.gic-footer--legal-left) .elementor-column:has(.gic-footer-legal) {
		flex: 1 1 0 !important;
		width: auto !important;
		min-width: 0 !important;
	}
	.gic-footer:not(.gic-footer--legal-left) .e-con:has(.gic-footer-legal--links):has(.gic-footer-legal:not(.gic-footer-legal--links)),
	.gic-footer:not(.gic-footer--legal-left) .e-con-inner:has(.gic-footer-legal--links):has(.gic-footer-legal:not(.gic-footer-legal--links)),
	.gic-footer:not(.gic-footer--legal-left) .elementor-container:has(.gic-footer-legal--links) {
		flex-wrap: nowrap !important;
	}

	/* El widget ocupa todo el ancho de su columna para que el texto llegue de
	   verdad al borde que le toca; si no, queda flotando a media caja. */
	.gic-footer:not(.gic-footer--legal-left) .gic-footer-legal:not(.gic-footer-legal--links) { align-self: flex-start !important; width: 100%; }
	.gic-footer:not(.gic-footer--legal-left) .gic-footer-legal--links { align-self: flex-end !important; width: 100%; }
	.gic-footer:not(.gic-footer--legal-left) .gic-footer-legal:not(.gic-footer-legal--links),
	.gic-footer:not(.gic-footer--legal-left) .gic-footer-legal:not(.gic-footer-legal--links) p { text-align: left !important; }
	.gic-footer:not(.gic-footer--legal-left) .gic-footer-legal--links,
	.gic-footer:not(.gic-footer--legal-left) .gic-footer-legal--links p { text-align: right !important; }
}

/* --- Todo apilado a la izquierda, con la clase de escape --- */
.gic-footer--legal-left .e-con:has(.gic-footer-legal),
.gic-footer--legal-left .e-con-inner:has(.gic-footer-legal),
.gic-footer--legal-left .elementor-container:has(.gic-footer-legal),
.gic-footer--legal-left .elementor-widget-wrap:has(.gic-footer-legal) {
	flex-direction: column !important;
	align-items: flex-start !important;
	justify-content: flex-start !important;
	text-align: left !important;
}
.gic-footer--legal-left .e-con:has(.gic-footer-legal),
.gic-footer--legal-left .elementor-column:has(.gic-footer-legal) {
	width: 100% !important;
	max-width: 100% !important;
}
.gic-footer--legal-left .e-con:has(> .gic-footer-legal--links),
.gic-footer--legal-left .elementor-column:has(.gic-footer-legal--links) { order: -1 !important; }
.gic-footer--legal-left .gic-footer-legal,
.gic-footer--legal-left .gic-footer-legal p { text-align: left !important; }

/* (3) Crédito del autor del sitio, añadido al lado del copyright. */
.gic-footer .gic-footer-credit { margin-left: 8px; white-space: nowrap; }
.gic-footer .gic-footer-credit a { color: rgba(255, 255, 255, .72) !important; text-decoration: underline; text-underline-offset: 3px; }
.gic-footer .gic-footer-credit a:hover { color: var(--gic-yellow) !important; }

/* (4) Las cinco columnas del footer, alineadas a la izquierda siempre.
   El texto de cada columna (títulos, enlaces, contacto) arranca en el mismo
   margen izquierdo, sin centrados heredados del kit global. */
.gic-footer .gic-footer-heading,
.gic-footer .gic-footer-desc,
.gic-footer .gic-footer-links,
.gic-footer .gic-footer-contact,
.gic-footer .gic-footer-social { text-align: left; }

/* En tablet y móvil todo vuelve a apilarse a la izquierda. */
@media (max-width: 1024px) {
	.gic-footer .e-con-inner > .e-con > .e-con-inner,
	.gic-footer > .e-con-inner > .e-con > .e-con-inner { flex-wrap: wrap; }
	.gic-footer .e-con-inner > .e-con > .e-con-inner > .e-con,
	.gic-footer > .e-con-inner > .e-con > .e-con-inner > .e-con { min-width: 210px; }
}
@media (max-width: 767px) {
	/* En el teléfono cada columna del footer ocupa el ancho completo,
	   sea cual sea la estructura de contenedores. */
	.gic-footer .e-con > .e-con,
	.gic-footer .e-con-inner > .e-con,
	.gic-footer .elementor-column {
		width: 100% !important;
		max-width: 100% !important;
		min-width: 0 !important;
	}
	/* En el teléfono el reparto a dos lados no cabe: la franja se apila
	   contra el margen izquierdo, con las POLÍTICAS arriba y los DERECHOS DE
	   AUTOR debajo. Esto vale con o sin la clase de escape. */
	.gic-footer .e-con:has(.gic-footer-legal),
	.gic-footer .e-con-inner:has(.gic-footer-legal),
	.gic-footer .elementor-container:has(.gic-footer-legal),
	.gic-footer .elementor-widget-wrap:has(.gic-footer-legal) {
		flex-direction: column !important;
		align-items: flex-start !important;
		justify-content: flex-start !important;
		text-align: left !important;
	}
	.gic-footer .e-con:has(> .e-con-inner .gic-footer-legal--links),
	.gic-footer .e-con:has(> .gic-footer-legal--links),
	.gic-footer .elementor-column:has(.gic-footer-legal--links) {
		order: -1 !important;
	}
	.gic-footer .gic-footer-legal { align-self: flex-start !important; width: 100%; }
	.gic-footer .gic-footer-legal,
	.gic-footer .gic-footer-legal p { text-align: left !important; }
	.gic-footer .gic-footer-credit { display: block; margin-left: 0; margin-top: 4px; white-space: normal; }
}

/* ---------- Widget «GICA · Título de sección» ---------- */
.gic-shead {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 48px;
	width: 100%;
}
.gic-shead:not(.gic-shead--row) { display: block; }
.gic-shead__main { min-width: 0; }
.gic-shead--row .gic-shead__main { flex: 1 1 auto; }
.gic-shead--row .gic-shead__aside { flex: 0 0 auto; }
.gic-shead:not(.gic-shead--row) .gic-shead__aside { margin-top: 24px; }
.gic-shead .gic-shead__eyebrow { margin: 0 0 16px; }
.gic-shead .gic-shead__title {
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: clamp(38px, 5vw, 60px);
	line-height: 1.2;
	color: var(--gic-green);
	margin: 0;
	overflow-wrap: break-word;
	word-break: break-word;
}
.gic-shead__title em { font-style: italic; color: var(--gic-accent); }
.gic-shead__intro {
	font-family: var(--gic-sans);
	font-size: 20px;
	line-height: 1.5;
	color: var(--gic-ink);
	margin: 24px 0 0;
	max-width: 760px;
}
/* Centrado: la introducción también se centra. */
.gic-shead[style*="center"] .gic-shead__intro,
.gic-shead__intro--center { margin-inline: auto; }
/* Sobre fondo oscuro. */
.gic-shead--light .gic-shead__title { color: var(--gic-mint); }
.gic-shead--light .gic-shead__intro { color: rgba(255, 255, 255, .85); }

@media (max-width: 767px) {
	.gic-shead, .gic-shead--row { display: block; }
	.gic-shead--row .gic-shead__aside { margin-top: 22px; }
	.gic-shead .gic-shead__title { font-size: clamp(28px, 8vw, 38px); line-height: 1.15; }
	.gic-shead__intro { font-size: 16px; margin-top: 16px; }
}
@media (max-width: 479px) {
	.gic-shead .gic-shead__title { font-size: 26px; }
}

/* ---------- Icono elegido en la BIBLIOTECA de Elementor ----------
   Cuando se elige un icono real (Font Awesome o SVG propio) se inyecta dentro
   del título como <span class="gic-title-ico">…</span> y se apaga el rombo
   dibujado con ::before. Comparte las mismas variables que las formas. */
.elementor-heading-title.gic-has-ico {
	display: inline-flex;
	align-items: center;
	gap: var(--gic-ico-gap, 10px);
}
.elementor-heading-title.gic-has-ico::before { display: none !important; content: none !important; }
.gic-title-ico {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	line-height: 0;
	color: var(--gic-ico-color, var(--gic-accent));
	font-size: var(--gic-ico-size, 20px);
	transition: color .3s var(--gic-ease);
}
.gic-title-ico svg {
	width: var(--gic-ico-size, 20px);
	height: var(--gic-ico-size, 20px);
	display: block;
}
/* Los iconos de relleno (Font Awesome) se pintan con `fill`; los de trazo
   traen fill="none" inline. Si forzáramos `fill` a todos, los de trazo se
   convertirían en manchas sólidas. Por eso solo se pinta el relleno cuando el
   propio SVG no lo ha desactivado. */
.gic-title-ico svg:not([fill="none"]) { fill: currentColor; }
.gic-title-ico svg[stroke] { stroke: currentColor; }
.gic-title-ico i,
.gic-title-ico i::before { font-size: var(--gic-ico-size, 20px); line-height: 1; }

/* Títulos CENTRADOS (banda de clientes, cabeceras centradas): el icono fluye
   en línea con el texto en vez de ser un ítem flex, para que el conjunto quede
   centrado de verdad aunque el texto ocupe dos renglones. */
.gic-h2--center .elementor-heading-title.gic-has-ico,
.gic-clients-title .elementor-heading-title.gic-has-ico { display: block; }
.gic-h2--center .gic-title-ico,
.gic-clients-title .gic-title-ico {
	display: inline-flex;
	vertical-align: middle;
	margin-right: var(--gic-ico-gap, 14px);
	position: relative;
	top: -1px;
}

/* ---------- Formas del iconito de los títulos ----------
   Las activa el control «GICA · Icono del título» del widget Heading, que
   añade la clase gic-ico-<forma> al wrapper. Todas comparten las variables
   --gic-ico-size / --gic-ico-color / --gic-ico-gap.

   Nota de especificidad: la regla base del eyebrow es
   `.elementor-widget.gic-eyebrow-wrap .elementor-heading-title::before`
   (dos clases en el mismo elemento). Por eso aquí se dobla también la clase
   con `.elementor-widget`, si no el rombo original ganaría siempre. */

/* Títulos que NO son eyebrows del diseño: hay que crearles el icono. */
.elementor-widget[class*="gic-ico-"]:not(.gic-ico-):not(.gic-ico-none):not(.gic-eyebrow-wrap):not(.gic-clients-title) .elementor-heading-title {
	display: inline-flex;
	align-items: center;
	gap: var(--gic-ico-gap, 10px);
}
.elementor-widget[class*="gic-ico-"]:not(.gic-ico-):not(.gic-ico-none):not(.gic-eyebrow-wrap):not(.gic-clients-title) .elementor-heading-title::before {
	content: "";
	display: inline-block;
	flex: 0 0 auto;
	width: var(--gic-ico-size, 7px);
	height: var(--gic-ico-size, 7px);
	background: var(--gic-ico-color, var(--gic-accent));
	vertical-align: middle;
}

/* Formas (aplican a cualquier título: eyebrow, clientes o normal). */
.elementor-widget.gic-ico-none .elementor-heading-title::before,
.gic-ico-none .elementor-heading-title::before { display: none !important; }

.elementor-widget.gic-ico-diamond .elementor-heading-title::before,
.gic-ico-diamond .elementor-heading-title::before { border-radius: 0; transform: rotate(45deg); clip-path: none; }

.elementor-widget.gic-ico-circle .elementor-heading-title::before,
.gic-ico-circle .elementor-heading-title::before { border-radius: 50%; transform: none; clip-path: none; }

.elementor-widget.gic-ico-square .elementor-heading-title::before,
.gic-ico-square .elementor-heading-title::before { border-radius: 0; transform: none; clip-path: none; }

.elementor-widget.gic-ico-rounded .elementor-heading-title::before,
.gic-ico-rounded .elementor-heading-title::before { border-radius: 30%; transform: none; clip-path: none; }

.elementor-widget.gic-ico-triangle .elementor-heading-title::before,
.gic-ico-triangle .elementor-heading-title::before { border-radius: 0; transform: none; clip-path: polygon(50% 0, 100% 100%, 0 100%); }

.elementor-widget.gic-ico-bar .elementor-heading-title::before,
.gic-ico-bar .elementor-heading-title::before {
	border-radius: 2px;
	transform: none;
	clip-path: none;
	width: calc(var(--gic-ico-size, 7px) / 2);
	height: calc(var(--gic-ico-size, 7px) * 2.4);
}

/* Mismas formas para el eyebrow que dibujan los widgets GICA (.gic-eyebrow). */
.gic-eico-none .gic-eyebrow::before { display: none !important; }
.gic-eico-diamond .gic-eyebrow::before { border-radius: 0; transform: rotate(45deg); clip-path: none; }
.gic-eico-circle .gic-eyebrow::before { border-radius: 50%; transform: none; clip-path: none; }
.gic-eico-square .gic-eyebrow::before { border-radius: 0; transform: none; clip-path: none; }
.gic-eico-rounded .gic-eyebrow::before { border-radius: 30%; transform: none; clip-path: none; }
.gic-eico-triangle .gic-eyebrow::before { border-radius: 0; transform: none; clip-path: polygon(50% 0, 100% 100%, 0 100%); }
.gic-eico-bar .gic-eyebrow::before {
	border-radius: 2px;
	transform: none;
	clip-path: none;
	width: calc(var(--gic-ico-size, 7px) / 2);
	height: calc(var(--gic-ico-size, 7px) * 2.4);
}

/* Párrafo introductorio bajo el H2 de sección (Servicios, Portafolio…). */
.gic-section-intro {
	font-family: var(--gic-sans);
	font-size: 20px;
	line-height: 1.5;
	color: var(--gic-ink);
	margin-top: 24px;
	max-width: var(--gic-intro-w, 1000px);
}
.gic-section-intro p { margin: 0; }
.gic-section-intro--light { color: var(--gic-mint); }
.gic-section-intro--center { text-align: center; margin-left: auto; margin-right: auto; }

/* Encabezado de la banda de clientes — NO es el H2 grande de sección, tamaño propio más pequeño. */
.gic-clients-title .elementor-heading-title {
	font-family: var(--gic-sans);
	font-size: 28px;
	font-weight: 700;
	line-height: 1.35;
	color: var(--gic-green);
	text-align: center;
}
/* El check verde que precede al título en el Figma. Va como máscara para que
   el color siga saliendo de --gic-ico-color (y por tanto del control de
   Elementor «Icono del título → Color»). */
.gic-clients-title .elementor-heading-title::before {
	content: "";
	display: inline-block;
	width: var(--gic-ico-size, 25px);
	height: var(--gic-ico-size, 25px);
	margin-right: var(--gic-ico-gap, 19px);
	background: var(--gic-ico-color, var(--gic-accent));
	transform: none;
	vertical-align: -5px;
	-webkit-mask: var(--gic-check-svg) center / contain no-repeat;
	mask: var(--gic-check-svg) center / contain no-repeat;
}

/* Nav Menu de Elementor Pro dentro del header GICA */
.gic-header-menu .elementor-nav-menu a.elementor-item {
	font-family: var(--gic-sans);
	font-size: 18px;
	font-weight: 400;
	color: #253E32;
	padding: 10px 14px;
}
.gic-header-menu .elementor-nav-menu a.elementor-item:after { background: var(--gic-accent) !important; }
.gic-header-menu .elementor-nav-menu a.elementor-item.elementor-item-active,
.gic-header-menu .elementor-nav-menu a.elementor-item:hover { color: var(--gic-accent); }
.gic-header-menu .elementor-nav-menu a.elementor-item:first-child,
.gic-header-menu .elementor-nav-menu a.elementor-item.elementor-item-active { font-weight: 700; }
.gic-header-menu .elementor-nav-menu { white-space: nowrap; gap: 32px; }

.gic-footer-heading {
	font-family: var(--gic-sans);
	font-size: 18px;
	font-weight: 600;
	color: var(--gic-white);
	margin: 0 0 18px;
}
.gic-footer-links { list-style: none; margin: 0; padding: 0; }
.gic-footer-links li { margin: 0 0 11px; }
.gic-footer-links a {
	font-family: var(--gic-sans);
	font-size: 16px;
	color: var(--gic-white);
	opacity: 1;
	text-decoration: none;
	transition: opacity .3s var(--gic-ease), color .3s var(--gic-ease);
}
.gic-footer-links a:hover { color: var(--gic-yellow); }

.gic-footer-desc { font-family: var(--gic-sans); font-size: 16px; font-weight: 400; line-height: 1.7; color: rgba(255, 255, 255, .72); max-width: 300px; }
.gic-footer-desc p { margin: 0; }

/* --- Footer: forzar texto legible sobre el verde oscuro. El kit (NC) pinta
   .elementor-heading-title y los enlaces de icon-list con colores oscuros que
   ganan por especificidad; apuntamos a los elementos REALES con !important. --- */
.gic-footer .elementor-heading-title { color: var(--gic-white) !important; }
.gic-footer .gic-footer-desc,
.gic-footer .gic-footer-desc p { color: rgba(255, 255, 255, .72) !important; }
.gic-footer .gic-footer-links a,
.gic-footer .gic-footer-links a .elementor-icon-list-text,
.gic-footer .gic-footer-links .elementor-icon-list-text { color: rgba(255, 255, 255, .72) !important; }
.gic-footer .gic-footer-links a:hover,
.gic-footer .gic-footer-links a:hover .elementor-icon-list-text { color: var(--gic-yellow) !important; }
.gic-footer .gic-footer-contact a,
.gic-footer .gic-footer-contact a span { color: rgba(255, 255, 255, .82) !important; }
.gic-footer .gic-footer-contact a:hover,
.gic-footer .gic-footer-contact a:hover span { color: var(--gic-yellow) !important; }
.gic-footer .gic-footer-contact__ic,
.gic-footer .gic-footer-contact__ic svg { color: var(--gic-yellow) !important; }
.gic-footer .gic-footer-social,
.gic-footer .gic-footer-social .elementor-icon-list-text { color: rgba(255, 255, 255, .82) !important; }
.gic-footer .gic-footer-social:hover { color: var(--gic-yellow) !important; }
.gic-footer .gic-footer-legal,
.gic-footer .gic-footer-legal p { color: rgba(255, 255, 255, .6) !important; }
.gic-footer .gic-footer-legal a { color: rgba(255, 255, 255, .72) !important; }
.gic-footer .gic-footer-legal a:hover { color: var(--gic-yellow) !important; }

/* Contacto del footer: icono amarillo + texto. */
.gic-footer-contact a,
.gic-footer-contact .gic-footer-contact__row { display: flex; align-items: center; gap: 10px; padding: 7px 0; font-family: var(--gic-sans); font-size: 16px; color: var(--gic-white); text-decoration: none; }
.gic-footer-contact a:hover { color: var(--gic-yellow); }
.gic-footer-contact__ic { flex: 0 0 auto; display: inline-flex; color: var(--gic-yellow); }
.gic-footer-contact__ic svg { width: 18px; height: 18px; display: block; }
.gic-footer-social { display: inline-flex; align-items: center; gap: 10px; font-family: var(--gic-sans); font-size: 16px; color: var(--gic-white); text-decoration: none; }
.gic-footer-social:hover { color: var(--gic-yellow); }

.gic-footer-legal { font-family: var(--gic-sans); font-size: 13px; color: var(--gic-white); }
.gic-footer-legal p { margin: 0; }
.gic-footer-legal a { color: inherit; text-decoration: underline; }
.gic-footer-legal a:hover { color: var(--gic-yellow); }

.gic-social { display: flex; gap: 12px; }
.gic-social a {
	width: 38px; height: 38px;
	border: 1px solid rgba(255, 255, 255, .25);
	border-radius: 50%;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--gic-mint);
	transition: background .3s var(--gic-ease), color .3s var(--gic-ease), border-color .3s var(--gic-ease);
}
.gic-social a:hover { background: var(--gic-yellow); color: var(--gic-green); border-color: var(--gic-yellow); }
.gic-social svg { width: 16px; height: 16px; }

.gic-contact-list .elementor-icon-list-text { font-family: var(--gic-sans); font-size: 15px; color: var(--gic-white); }
.gic-contact-list .elementor-icon-list-icon,
.gic-contact-list .elementor-icon-list-icon i,
.gic-contact-list .elementor-icon-list-icon svg { color: var(--gic-yellow); }

/* Bloques de contacto (página Contacto): título + descripción + dato/enlace. */
.gic-contact-list .gic-contact-block { padding: 20px 0; border-bottom: 1px solid var(--gic-line); }
.gic-contact-list .gic-contact-block:first-child { padding-top: 0; }
.gic-contact-list .gic-contact-block:last-child { border-bottom: 0; }
.gic-contact-list .gic-contact-block h3 { font-family: var(--gic-display); font-weight: 700; font-size: 20px; color: var(--gic-green); margin: 0 0 6px; }
.gic-contact-list .gic-contact-block p { font-family: var(--gic-sans); font-size: 15px; line-height: 1.5; color: var(--gic-muted); margin: 0 0 8px; }
.gic-contact-list .gic-contact-block a { font-family: var(--gic-sans); font-size: 16px; font-weight: 600; color: var(--gic-accent); text-decoration: none; }
.gic-contact-list .gic-contact-block a:hover { text-decoration: underline; }

/* ==================================================================
   Métodos de contacto (widget GICA · Métodos de contacto)
   Banda menta del frame «10 Contacto • Desktop»: 3 columnas de 370 con 45 de
   hueco; icono verde de 44, título 31, descripción 18/27 y el dato en verde.
   ================================================================== */
.gic-contact-methods {
	display: grid;
	grid-template-columns: repeat(var(--gic-cols, 3), minmax(0, 1fr));
	column-gap: 45px;
	row-gap: 45px;
	width: 100%;
}
.gic-contact-method {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	text-align: left;
	min-width: 0;
}
.gic-contact-method .gic-contact-method__ic {
	display: inline-flex;
	color: var(--gic-accent);
	margin: 0 0 26px;
	line-height: 0;
}
.gic-contact-method .gic-contact-method__ic svg { width: 44px; height: 44px; display: block; }
.gic-contact-method .gic-contact-method__title {
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: 31px;
	line-height: 1.2;
	letter-spacing: normal;
	color: var(--gic-green);
	margin: 0 0 17px;
	padding: 0;
	overflow-wrap: break-word;
}
.gic-contact-method .gic-contact-method__text {
	font-family: var(--gic-sans);
	font-size: 18px;
	font-weight: 400;
	line-height: 27px;
	color: var(--gic-ink);
	margin: 0 0 26px;
}
.gic-contact-method .gic-contact-method__value {
	display: inline-block;
	font-family: var(--gic-sans);
	font-size: 18px;
	font-weight: 700;
	line-height: 1.4;
	color: var(--gic-accent);
	text-decoration: none;
	overflow-wrap: anywhere;
	transition: color .25s var(--gic-ease);
}

/* ==================================================================
   Bloques «Encuéntranos» y «Horarios» del pie de Contacto
   Foto 569 × 379 (3:2) con radio 16, titular 40 y el texto a 19/28.
   ================================================================== */
.gic-infoblock .gic-infoblock__img img,
.gic-infoblock img {
	width: 100%;
	height: auto;
	aspect-ratio: var(--gic-infoblock-ratio, 3 / 2);
	object-fit: cover;
	border-radius: 16px;
	display: block;
}
.gic-infoblock-h .elementor-heading-title {
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: clamp(30px, 3vw, 40px);
	line-height: 1.15;
	letter-spacing: normal;
	color: var(--gic-green);
	margin: 0;
}
.gic-infoblock-text,
.gic-infoblock-text p {
	font-family: var(--gic-sans);
	font-size: 19px;
	font-weight: 400;
	line-height: 28px;
	color: var(--gic-ink);
	margin: 0;
}
.gic-infoblock-text strong { font-weight: 700; }

/* Título de bloque (compatibilidad con páginas ya guardadas). */
.gic-block-h .elementor-heading-title { font-family: var(--gic-display); font-weight: 700; font-size: 28px; color: var(--gic-green); }

/* ---------- Botón de la cabecera bajado debajo del carrusel (móvil) ---------- */
/* Lo coloca gica.js; aquí solo se le da el aire y el ancho que pide la lámina.
   El hueco vacío no ocupa nada mientras el botón está arriba (ordenador). */
.gic-carousel__btn-slot:empty { display: none; }
.gic-carousel__btn-slot { width: 100%; }
@media (max-width: 767px) {
	.gic-carousel__btn-slot { margin-top: 32px; }
	/* El botón baja a ancho completo. Especificidad baja (0,2,0) a propósito:
	   el control «Ancho del botón» del widget escribe con {{WRAPPER}} y por
	   tanto siempre puede más que esto. */
	.gic-carousel__btn-slot .gic-btn { width: 100%; justify-content: center; }
	/* La columna de la cabecera que se ha quedado sin su botón. */
	.gic-moved-out { display: none !important; }
}

/* ---------- Hero ---------- */

.gic-hero {
	position: relative;
	width: 100%;
	overflow: hidden;
	background: var(--gic-green);
	/* En columna para poder invertir el orden: en el teléfono la foto va
	   DEBAJO del texto (control «Dónde va la foto»). */
	display: flex;
	flex-direction: column;
}
.gic-hero__media,
.gic-hero__content { width: 100%; }
.gic-hero__media {
	position: relative;
	width: 100%;
	min-height: 653px;
	overflow: hidden;
}
.gic-slider__track {
	display: flex;
	width: 100%;
	height: 100%;
	transition: transform .7s var(--gic-ease);
	will-change: transform;
}
.gic-slide {
	position: relative;
	flex: 0 0 100%;
	width: 100%;
}
/* La altura full-bleed (653px) es SOLO del hero; testimonios/otros se ajustan al contenido. */
.gic-hero__media .gic-slide { height: 100%; min-height: 653px; }
/* La foto del slide. El `:not(.gic-hero__watermark)` es porque desde la
   v1.35.0 el logo va dentro del propio slide (para poder ponerlo o quitarlo
   foto a foto) y no debe estirarse como la foto. */
.gic-slide img:not(.gic-hero__watermark) {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.gic-hero__overlay {
	position: absolute;
	inset: 0;
	/* Scrim negro plano: deja leer la foto pero hace resaltar texto/logo. */
	background: rgba(0, 0, 0, .45);
	z-index: 1;
	pointer-events: none;
}
.gic-hero__watermark {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	/* Logo protagonista centrado sobre la foto oscurecida (como el Figma: ~536px). */
	width: min(520px, 46%);
	height: auto;
	opacity: .95;
	z-index: 1;
	pointer-events: none;
}
.gic-hero__media--empty {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 24px;
	text-align: center;
	background: repeating-linear-gradient(45deg, #eef4ee, #eef4ee 12px, #e2ece2 12px, #e2ece2 24px);
	color: var(--gic-green);
	font-family: var(--gic-sans);
	font-size: 15px;
	line-height: 1.5;
}
.gic-hero__watermark img,
.gic-hero__watermark svg { display: block; width: 100%; height: auto; }
/* Desde la v1.35.0 el logo vive dentro de su slide, así que tiene que quedar
   por encima del velo oscuro, que es hermano del carril de fotos. */
.gic-hero__media .gic-slide .gic-hero__watermark { z-index: 2; }

.gic-slider__nav {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 3;
	width: 48px; height: 48px;
	border-radius: 12px;
	border: none;
	background: var(--gic-yellow);
	color: var(--gic-green);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	box-shadow: 0 12px 28px -14px rgba(22, 61, 42, .5);
	transition: background .3s var(--gic-ease), color .3s var(--gic-ease);
}
.gic-slider__nav svg { width: 18px; height: 18px; }
.gic-slider__nav:hover { background: var(--gic-green); color: var(--gic-yellow); }
.gic-slider__nav--prev { left: 32px; }
.gic-slider__nav--next { right: 32px; }
/* Variante sin sombra (control «Sombra» del hero). */
.gic-slider__nav--flat { box-shadow: none; }
.gic-slider__nav--prev svg { transform: rotate(180deg); }
/* Especificidad suficiente para ganar a estilos de botón del kit/tema activo. */
[data-gic="slider"] button.gic-slider__nav { background: var(--gic-yellow); color: var(--gic-green); border: none; }
[data-gic="slider"] button.gic-slider__nav:hover { background: var(--gic-green); color: var(--gic-yellow); }
.gic-slider__nav:focus-visible { outline: 2px solid var(--gic-accent); outline-offset: 2px; }
.gic-slider__nav[disabled] { opacity: .35; pointer-events: none; box-shadow: none; }

.gic-dots {
	position: absolute;
	bottom: 22px;
	left: 50%;
	transform: translateX(-50%);
	display: flex;
	align-items: center;
	gap: 10px;
	z-index: 3;
	list-style: none;
	margin: 0;
	padding: 0;
}
.gic-dots button {
	appearance: none;
	-webkit-appearance: none;
	width: 9px; height: 9px;
	padding: 0;
	margin: 0;
	border: none;
	border-radius: 50%;
	background: rgba(255, 255, 255, .4);
	cursor: pointer;
	transition: background .3s var(--gic-ease), transform .3s var(--gic-ease);
}
.gic-dots button:hover { background: rgba(255, 255, 255, .7); }
.gic-dots button.is-active { background: var(--gic-yellow); transform: scale(1.15); }
.gic-dots button:focus-visible { outline: 2px solid var(--gic-accent); outline-offset: 2px; }

/* El kit del sitio (NC) fuerza padding:16px 26px + border-radius:999px a TODOS los <button>,
   lo que deformaba las flechas/dots en pastillas. Se re-forma con !important solo estos controles. */
[data-gic="slider"] .gic-slider__nav {
	width: 48px !important; height: 48px !important; min-width: 0 !important;
	padding: 0 !important; border-radius: 12px !important;
	display: inline-flex !important; box-sizing: border-box;
}
[data-gic="slider"] .gic-dots button {
	width: 9px !important; height: 9px !important; min-width: 0 !important;
	padding: 0 !important; border-radius: 50% !important; display: block !important;
}
.gic-hero__media .gic-dots button { width: 12px !important; height: 12px !important; }

/* Dots del hero: píldora oscura translúcida sobre la foto (asegura contraste sin importar la imagen). */
.gic-hero__media .gic-dots {
	background: rgba(6, 6, 6, .5);
	border-radius: 100px;
	padding: 6px 8px;
	-webkit-backdrop-filter: blur(2px);
	backdrop-filter: blur(2px);
}
.gic-hero__media .gic-dots button { width: 12px; height: 12px; background: #D9D9D9; }
.gic-hero__media .gic-dots button:hover { background: #FFFFFF; }
.gic-hero__media .gic-dots button.is-active { background: #FFF500; }

.gic-hero__content {
	position: relative;
	z-index: 2;
	background: var(--gic-green);
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 80px;
	padding: 80px 64px;
	/* El bloque de contenido se centra al ancho del sitio (1280 + 2×64) en pantallas anchas. */
	width: 100%;
	max-width: 1408px;
	margin-inline: auto;
	box-sizing: border-box;
}
.gic-hero__col { min-width: 0; }
.gic-hero .gic-hero__title {
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: 64px;
	line-height: 1.2;
	letter-spacing: -.01em;
	color: var(--gic-white);
	margin: 0;
}
.gic-hero__title em { font-style: italic; color: var(--gic-yellow); }
.gic-hero__intro {
	font-family: var(--gic-sans);
	font-size: 20px;
	line-height: 1.5;
	color: var(--gic-white);
	margin: 0 0 28px;
}
.gic-hero__actions { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
/* Botones apilados a ancho completo (se activa solo en móvil, ver media query). */
.gic-hero__actions--block .gic-btn { justify-content: space-between; }

/* ---------- Hero de página interior (banda verde partida: texto + foto) ---------- */
/* Cabecera estándar de las páginas internas (Servicios, Empresa, Proyectos…):
   banda verde de ancho completo, texto a la izquierda y foto a sangre a la derecha.
   Se compone con widgets nativos (heading + text-editor + image) dentro de dos
   columnas del DSL, así que todo sigue siendo editable desde Elementor. */
.gic-page-hero { background: var(--gic-green); overflow: hidden; }
.gic-page-hero__text { padding: 96px 56px 96px 120px; }

/* Migas de pan: «Inicio / Nuestra empresa». Van encima del H1, dentro de la
   misma columna, y se editan como cualquier widget HTML de Elementor. */
.gic-page-hero__crumbs { margin: 0 0 18px; }
.gic-crumbs {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
	font-family: var(--gic-sans);
	font-size: 15px;
	line-height: 1.4;
	color: rgba(255, 255, 255, .72);
}
.gic-crumbs a {
	color: rgba(255, 255, 255, .72);
	text-decoration: none;
	transition: color .3s var(--gic-ease);
}
.gic-crumbs a:hover { color: var(--gic-yellow); }
.gic-crumbs span[aria-current] { color: var(--gic-white); font-weight: 500; }
/* Icono de casa delante de «Inicio», como en el Figma. */
.gic-crumbs__home {
	display: inline-flex;
	align-items: center;
	margin-right: 7px;
	vertical-align: -3px;
}
.gic-crumbs__home svg { width: 16px; height: 16px; }
.gic-page-hero .gic-crumbs a:first-child { font-weight: 600; color: var(--gic-white); }
.gic-page-hero--mint .gic-crumbs a:first-child { color: var(--gic-green); }

/* --- Widget «GICA · Migas de pan» --------------------------------------
   El mismo aspecto que las migas del hero, pero como widget suelto: se puede
   dejar caer en cualquier página y elegir si va sobre fondo oscuro o claro. */
.gic-crumbs-on--light .gic-crumbs { color: rgba(255, 255, 255, .72); }
.gic-crumbs-on--light .gic-crumbs a { color: rgba(255, 255, 255, .72); }
.gic-crumbs-on--light .gic-crumbs a:hover { color: var(--gic-yellow); }
.gic-crumbs-on--light .gic-crumbs span[aria-current] { color: var(--gic-white); }

.gic-crumbs-on--dark .gic-crumbs { color: var(--gic-muted); }
.gic-crumbs-on--dark .gic-crumbs a { color: var(--gic-muted); }
.gic-crumbs-on--dark .gic-crumbs a:hover { color: var(--gic-accent); }
.gic-crumbs-on--dark .gic-crumbs span[aria-current] { color: var(--gic-green); font-weight: 500; }

.gic-crumbs-bold--yes .gic-crumbs > a:first-of-type,
.gic-crumbs-bold--yes .gic-crumbs > span:first-of-type { font-weight: 600; }
.gic-crumbs-on--light.gic-crumbs-bold--yes .gic-crumbs > a:first-of-type { color: var(--gic-white); }
.gic-crumbs-on--dark.gic-crumbs-bold--yes .gic-crumbs > a:first-of-type { color: var(--gic-green); }

/* El widget no debe heredar el ancho de línea de un párrafo suelto. */
.elementor-widget-gica_breadcrumbs .gic-crumbs { margin: 0; }
.gic-crumbs__sep { font-style: normal; opacity: .55; }
.gic-page-hero--mint .gic-crumbs,
.gic-page-hero--mint .gic-crumbs a { color: rgba(22, 61, 42, .7); }
.gic-page-hero--mint .gic-crumbs span[aria-current] { color: var(--gic-green); }
.gic-page-hero--mint .gic-crumbs a:hover { color: var(--gic-green); }

.gic-page-hero__title { margin: 0 0 24px; max-width: 560px; }
/* El color/tipografía van sobre el elemento interno .elementor-heading-title para
   ganarle al kit global de Elementor (si no, el H1 sale oscuro sobre el verde). */
.gic-page-hero .gic-page-hero__title .elementor-heading-title {
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: 64px;
	line-height: 1.14;
	letter-spacing: -.01em;
	color: var(--gic-white);
	margin: 0;
}
.gic-page-hero__intro { max-width: 560px; }
.gic-page-hero .gic-page-hero__intro,
.gic-page-hero .gic-page-hero__intro p {
	font-family: var(--gic-sans);
	font-size: 20px;
	line-height: 1.5;
	color: rgba(255, 255, 255, .92);
	margin: 0;
}
/* Palabra/frase de acento en amarillo dentro del titular (patrón <em>). */
.gic-page-hero .gic-page-hero__title .elementor-heading-title em { color: var(--gic-yellow); font-style: normal; }

/* Variante MENTA del hero interior (single de Servicio): banda clara, titular verde,
   botón verde con acentos amarillos. */
.gic-page-hero--mint { background: var(--gic-mint) !important; }
.gic-page-hero--mint .gic-page-hero__title .elementor-heading-title { color: var(--gic-green); }
.gic-page-hero--mint .gic-page-hero__intro,
.gic-page-hero--mint .gic-page-hero__intro p { color: var(--gic-ink); }
.gic-page-hero--mint .gic-btn.gic-btn--yellow { background: var(--gic-green); color: var(--gic-yellow); }
.gic-page-hero--mint .gic-btn.gic-btn--yellow:hover { background: #0F2C1D; color: var(--gic-yellow); }
.gic-page-hero--mint .gic-btn.gic-btn--yellow svg { background: var(--gic-yellow); color: var(--gic-green); }
.gic-page-hero__media { position: relative; min-height: 480px; align-self: stretch; }
/* La foto llena la columna a sangre. Se neutraliza el posicionamiento de los
   wrappers que Elementor pone alrededor del <img> para que el contexto de la
   imagen absoluta sea .gic-page-hero__media (y no el propio widget). */
.gic-page-hero__media .elementor-widget,
.gic-page-hero__media .elementor-widget-container,
.gic-page-hero__media figure,
.gic-page-hero__media a { position: static; margin: 0; height: 100%; }
/* .gic-page-hero como prefijo = especificidad (0,2,1) para ganarle a la regla
   de Elementor `.elementor-widget-image img { height:auto }` (que si no deja la
   foto a su alto natural y con hueco). */
.gic-page-hero .gic-page-hero__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; border-radius: 0; }

@media (max-width: 1024px) {
	.gic-page-hero__text { padding: 72px 40px; }
	.gic-page-hero .gic-page-hero__title .elementor-heading-title { font-size: 48px; }
	.gic-page-hero__media { min-height: 380px; }
}
@media (max-width: 767px) {
	.gic-page-hero__text { padding: 56px 24px; }
	.gic-page-hero .gic-page-hero__title .elementor-heading-title { font-size: 36px; }
	.gic-page-hero__media { min-height: 300px; }
}

/* ---------- Tarjetas de servicio ---------- */

.gic-scards {
	display: grid;
	grid-template-columns: repeat(var(--gic-cols, 3), minmax(0, 1fr));
	gap: 24px;
	width: 100%;
}
.gic-scard {
	position: relative;
	display: flex;
	flex-direction: column;
	border-radius: var(--gic-radius-card);
	overflow: hidden;
	text-decoration: none;
	background: var(--gic-green);
	cursor: pointer;
	transition: transform .4s var(--gic-ease), box-shadow .4s var(--gic-ease);
}
.gic-scard:hover { transform: translateY(-4px); box-shadow: 0 22px 48px -20px rgba(22, 61, 42, .35); }
.gic-scard__img { position: relative; width: 100%; aspect-ratio: var(--gic-scard-ratio, 384 / 232); overflow: hidden; }
.gic-scard__img img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 1s var(--gic-ease); }
.gic-scard:hover .gic-scard__img img { transform: scale(1.06); }
.gic-scard__body { background: var(--gic-green); padding: 32px; display: flex; flex-direction: column; flex: 1; }
.gic-scard .gic-scard__title {
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: 32px;
	line-height: 1.2;
	color: var(--gic-mint);
	margin: 0 0 12px;
}
.gic-scard__text {
	font-family: var(--gic-sans);
	font-size: 17px;
	line-height: 1.55;
	color: var(--gic-white);
	margin: 0 0 22px;
}
.gic-scard__more {
	margin-top: auto;
	display: inline-flex;
	align-items: center;
	gap: 11px;
	font-family: var(--gic-sans);
	font-size: 16px;
	font-weight: 500;
	text-decoration: underline;
	color: #FEFE00;
}
.gic-scard__more svg {
	width: var(--gic-scard-chip, 30px);
	height: var(--gic-scard-chip, 30px);
	padding: 7px;
	box-sizing: border-box;
	border-radius: 6px;
	background: #FEFE00;
	color: #003E00;
	transition: transform .35s var(--gic-ease);
}
.gic-scard:hover .gic-scard__more svg { transform: translateX(4px); }

/* ---------- Marquesina de logos ---------- */

.gic-marquee {
	display: flex;
	align-items: center;
	gap: 40px;
	width: 100%;
	min-width: 0;
	--gic-logo-w: 180px;
	--gic-logo-h: 132px;
	--gic-logo-img: 60px;
}
.gic-marquee__label {
	flex: 0 0 auto;
	font-family: var(--gic-sans);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--gic-muted);
	max-width: 150px;
	line-height: 1.5;
}
.gic-marquee__viewport {
	flex: 1 1 auto;
	overflow: hidden;
	/* min-width/max-width blindan el recorte: sin esto, cuando .gic-marquee pasa a
	   columna en móvil el viewport toma el ancho del contenido (miles de px) y
	   provoca scroll horizontal en TODA la página. */
	min-width: 0;
	width: 100%;
	max-width: 100%;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
	mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}
.gic-marquee__track {
	display: inline-flex;
	align-items: center;
	gap: 32px;
	padding-right: 32px;
	white-space: nowrap;
	animation: gic-marquee var(--gic-marquee-speed, 32s) linear infinite;
	will-change: transform;
}
.gic-marquee--static .gic-marquee__track { animation: none; flex-wrap: wrap; white-space: normal; justify-content: space-between; width: 100%; padding-right: 0; }
.gic-marquee:hover .gic-marquee__track { animation-play-state: paused; }
@keyframes gic-marquee { to { transform: translateX(-50%); } }
.gic-marquee__item {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: var(--gic-logo-w, 180px);
	height: var(--gic-logo-h, 132px);
	box-sizing: border-box;
	background: var(--gic-white);
	border: 1px solid var(--gic-mint);
	border-radius: var(--gic-radius-card);
	padding: 14px 26px;
	transition: box-shadow .3s var(--gic-ease), transform .3s var(--gic-ease);
}
.gic-marquee__item:hover { box-shadow: 0 12px 26px -14px rgba(22, 61, 42, .25); transform: translateY(-2px); }
.gic-marquee__item img { max-height: var(--gic-logo-img, 60px); max-width: 100%; width: auto; object-fit: contain; display: block; }

/* ---------- Carrusel de proyectos ---------- */

/* Variables del carrusel (las sobreescriben los controles de Elementor):
   --gic-slides       = cuántas tarjetas se ven a la vez
   --gic-gap          = separación entre tarjetas
   --gic-arrow-offset = separación de las flechas respecto al borde */
.gic-carousel {
	position: relative;
	width: 100%;
	--gic-slides: 3;
	--gic-gap: 24px;
	--gic-arrow-offset: 14px;
	--gic-peek: 0px;
}
/* El viewport recorta; el track es lo que se desplaza. Separarlos permite
   sacar las flechas fuera del área de scroll sin que se corten. */
.gic-carousel__viewport { position: relative; width: 100%; }
.gic-carousel__track {
	display: flex;
	gap: var(--gic-gap, 24px);
	overflow-x: auto;
	scrollbar-width: none;
	-ms-overflow-style: none;
	padding-bottom: 4px;
}
.gic-carousel__track::-webkit-scrollbar { display: none; }
.gic-carousel--snap .gic-carousel__track { scroll-snap-type: x mandatory; }
.gic-carousel--snap .gic-carousel__slide { scroll-snap-align: start; }
/* Sin arrastre: el track deja de desplazarse con el dedo/rueda (las flechas siguen funcionando). */
.gic-carousel--nodrag .gic-carousel__track { overflow-x: hidden; touch-action: pan-y; }

/* Reparto del ancho: N tarjetas visibles descontando los (N-1) huecos.
   Al subir "Proyectos visibles" o añadir más proyectos, todo se recalcula solo. */
/* --gic-peek resta unos píxeles al ancho de cada tarjeta para que ASOME la
   siguiente: en móvil es la señal visual de «esto se desliza». */
.gic-carousel__slide {
	flex: 0 0 calc((100% - (var(--gic-slides, 3) - 1) * var(--gic-gap, 24px)) / var(--gic-slides, 3) - var(--gic-peek, 0px));
	max-width: calc((100% - (var(--gic-slides, 3) - 1) * var(--gic-gap, 24px)) / var(--gic-slides, 3) - var(--gic-peek, 0px));
	min-width: 0;
}
/* "Recortar sobrantes": el JS marca con .is-clipped las tarjetas que sobran. */
.gic-carousel__slide.is-clipped { display: none; }

/* Las certificaciones solo son carrusel en el teléfono: de 768 px para arriba
   vuelven a ser celdas de una rejilla y no deben heredar el ancho de
   diapositiva (`flex` lo ignora un grid, pero `max-width` no). */
@media (min-width: 768px) {
	.gic-cert--m-slider .gic-carousel__slide { max-width: none; }
}

/* ---- Flechas: contenedor y posiciones ---- */
.gic-carousel__nav {
	display: flex;
	flex-direction: row;
	gap: 10px;
	z-index: 3;
}
/* A los lados, superpuestas sobre las tarjetas (por defecto). */
.gic-carousel--arrows-edges .gic-carousel__nav,
.gic-carousel--arrows-outside .gic-carousel__nav {
	position: absolute;
	top: 50%;
	left: 0;
	right: 0;
	transform: translateY(-50%);
	justify-content: space-between;
	pointer-events: none;
}
.gic-carousel--arrows-edges .gic-carousel__btn,
.gic-carousel--arrows-outside .gic-carousel__btn { pointer-events: auto; }
.gic-carousel--arrows-edges .gic-carousel__nav { padding: 0 var(--gic-arrow-offset, 14px); }
.gic-carousel--arrows-outside .gic-carousel__nav { left: calc(-1 * (48px + var(--gic-arrow-offset, 14px))); right: calc(-1 * (48px + var(--gic-arrow-offset, 14px))); }
/* Dentro, a la derecha (las dos juntas). */
.gic-carousel--arrows-inside-right .gic-carousel__nav {
	position: absolute;
	top: 50%;
	right: var(--gic-arrow-offset, 14px);
	transform: translateY(-50%);
}
/* Debajo / encima del carrusel. */
.gic-carousel--arrows-bottom-right .gic-carousel__nav { justify-content: flex-end; margin-top: 20px; }
.gic-carousel--arrows-bottom-center .gic-carousel__nav { justify-content: center; margin-top: 20px; }
.gic-carousel--arrows-top-right { display: flex; flex-direction: column; }
.gic-carousel--arrows-top-right .gic-carousel__nav { justify-content: flex-end; margin-bottom: 20px; order: -1; }
/* Ocultar la flecha inactiva en lugar de atenuarla. */
.gic-carousel--hide-disabled .gic-carousel__btn[disabled] { visibility: hidden; }

/* Navegación exclusiva de móvil: existe en el DOM pero se esconde en pantallas
   grandes, donde el diseño aprobado va sin flechas ni puntos. */
@media (min-width: 768px) {
	.gic-carousel--arrows-m-only .gic-carousel__nav { display: none; }
	.gic-carousel--dots-m-only .gic-dots { display: none; }
}

/* Puntos del carrusel (los genera el JS: su número depende del breakpoint). */
.gic-carousel .gic-dots {
	position: static;
	transform: none;
	justify-content: center;
	margin-top: 22px;
}
/* El kit del sitio fuerza padding:16px 26px + border-radius:999px a TODOS los
   <button>, lo que convertía los puntos en píldoras anchas. Se re-forman aquí
   con !important, igual que ya se hacía con los del slider. */
.gic-carousel .gic-dots button {
	appearance: none;
	-webkit-appearance: none;
	/* Tamaño por variable para que el control «Tamaño» de Elementor lo cambie
	   por breakpoint sin pelearse con estos !important (que hacen falta para
	   deshacer el estilo de <button> del tema). */
	width: var(--gic-dot, 8px) !important;
	height: var(--gic-dot, 8px) !important;
	min-width: 0 !important;
	min-height: 0 !important;
	padding: 0 !important;
	margin: 0 !important;
	border: none !important;
	border-radius: 50% !important;
	display: block !important;
	box-sizing: border-box;
	background: #D9D9D9;
}
.gic-carousel .gic-dots button.is-active { background: var(--gic-yellow); transform: none; }
.gic-carousel .gic-dots:empty { display: none; }
.gic-carousel button.gic-carousel__btn {
	appearance: none;
	-webkit-appearance: none;
	box-sizing: border-box;
	/* El tamaño va por variable: así el control responsive «Tamaño del botón»
	   lo cambia por breakpoint sin pelearse con reglas !important. */
	width: var(--gic-arrow-btn, 48px);
	height: var(--gic-arrow-btn, 48px);
	min-width: var(--gic-arrow-btn, 48px);
	padding: 0;
	margin: 0;
	line-height: 0;
	/* Cuadrado redondeado, como las flechas del Figma/PDF.
	   Ajustable en Elementor → Estilo → Flechas → «Radio de esquinas». */
	border-radius: 12px;
	border: none;
	background: var(--gic-yellow);
	color: var(--gic-green);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	box-shadow: 0 12px 28px -14px rgba(22, 61, 42, .4);
	outline: none;
	transition: background .3s var(--gic-ease), color .3s var(--gic-ease), opacity .3s;
}
.gic-carousel button.gic-carousel__btn:hover { background: var(--gic-green); color: var(--gic-yellow); }
.gic-carousel button.gic-carousel__btn:focus { outline: none; }
.gic-carousel button.gic-carousel__btn:focus-visible { outline: 2px solid var(--gic-accent); outline-offset: 2px; }
/* Cuando ya no hay más que deslizar, el diseño deja la flecha IGUAL (no la
   atenúa). La opacidad va por variable para poder atenuarla desde Elementor
   si algún día se prefiere. */
.gic-carousel button.gic-carousel__btn[disabled] { opacity: var(--gic-arrow-off, 1); pointer-events: none; box-shadow: none; }
.gic-carousel button.gic-carousel__btn svg { width: 18px; height: 18px; display: block; }
.gic-carousel button.gic-carousel__btn--prev svg { transform: rotate(180deg); }
/* Tarjetas de proyecto más altas en el carrusel del home (Figma 384×543).
   Se declara en el contenedor (no en .gic-proj) para que el control
   «Proporción de la tarjeta» de Elementor lo pueda sobreescribir siempre. */
.gic-carousel { --gic-ratio: 384 / 543; }

/* ---------- Tarjeta de proyecto ---------- */

/* min-height es una red de seguridad: si por lo que sea `aspect-ratio` no se
   aplica (CSS de Elementor sin regenerar, navegador antiguo, valor inválido),
   la tarjeta seguiría teniendo alto y la sección de abajo NO se montaría
   encima. Sin esto, .gic-proj colapsa a 0 px porque todo su contenido está
   posicionado en absoluto. */
.gic-proj {
	position: relative;
	display: block;
	min-height: 260px;
	border-radius: var(--gic-radius-card);
	overflow: hidden;
	background: var(--gic-green);
	text-decoration: none;
	aspect-ratio: var(--gic-ratio, 4 / 5);
	isolation: isolate;
	cursor: pointer;
}
/* La foto ocupa TODA la tarjeta. Se apila con z-index positivo (antes usaba
   z-index:-1, que algunos temas con transform/overflow propios hacían desaparecer). */
.gic-proj__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 1s var(--gic-ease);
	z-index: 0;
}
.gic-proj:hover .gic-proj__img { transform: scale(1.05); }
.gic-proj::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(22, 61, 42, 0) 45%, rgba(22, 61, 42, .55) 64%, rgba(22, 61, 42, .90) 85%, rgba(22, 61, 42, .97) 100%);
	z-index: 1;
	transition: opacity .3s var(--gic-ease);
	pointer-events: none;
}
/* Degradado con color configurable desde Elementor (--gic-scrim).
   Se aplica solo si el navegador soporta color-mix; si no, queda el degradado de arriba. */
/* Degradado con color e INICIO configurables desde Elementor
   (--gic-scrim / --gic-scrim-start). Solo si el navegador soporta color-mix;
   si no, queda el degradado fijo de arriba. */
@supports (background: color-mix(in srgb, red 50%, transparent)) {
	.gic-proj::after {
		background: linear-gradient(180deg,
			transparent var(--gic-scrim-start, 45%),
			color-mix(in srgb, var(--gic-scrim, #163D2A) 55%, transparent) calc(var(--gic-scrim-start, 45%) + 19%),
			color-mix(in srgb, var(--gic-scrim, #163D2A) 90%, transparent) calc(var(--gic-scrim-start, 45%) + 40%),
			color-mix(in srgb, var(--gic-scrim, #163D2A) 97%, transparent) 100%);
	}
}
.gic-proj__inner {
	position: absolute;
	inset: 0;
	z-index: 2;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	padding: 24px;
}
.gic-proj__chips {
	position: absolute;
	top: 18px;
	left: 18px;
	z-index: 2;
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}
/* Modo "chips abajo" (grid de proyectos, fiel al Figma): los chips fluyen
   bajo el subtítulo, no flotan sobre la imagen. */
.gic-proj--chip-bottom .gic-proj__chips {
	position: static;
	top: auto;
	left: auto;
	margin-top: 18px;
}
/* Pills de proyecto más generosas (fiel al Figma). */
.gic-proj .gic-chip { padding: 8px 15px; border-radius: 10px; }
.gic-proj .gic-proj__title {
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: 32px;
	letter-spacing: -.005em;
	color: var(--gic-white);
	margin: 0 0 4px;
}
.gic-proj__subtitle {
	font-family: var(--gic-sans);
	font-size: 18px;
	color: var(--gic-white);
	margin: 0;
}
.gic-proj__foot {
	display: inline-flex;
	align-items: center;
	gap: 11px;
	margin-top: 22px;
	font-family: var(--gic-sans);
	font-size: 16px;
	font-weight: 500;
	text-decoration: underline;
	color: #FEFE00;
}
.gic-proj__foot svg {
	width: 24px;
	height: 24px;
	padding: 6px;
	box-sizing: border-box;
	border-radius: 6px;
	background: #FEFE00;
	color: #003E00;
	transition: transform .35s var(--gic-ease);
}
.gic-proj:hover .gic-proj__foot svg { transform: translateX(4px); }

/* ---------- Grid filtrable de proyectos ---------- */

.gic-grid { width: 100%; }

/* "Cargar más" (píldora amarilla con flecha; !important para ganarle al botón global del kit). */
.gic-loadmore-wrap { display: flex; justify-content: center; margin-top: 44px; }
.gic-loadmore {
	display: inline-flex !important; align-items: center; gap: 14px;
	font-family: var(--gic-sans); font-size: 16px; font-weight: 600;
	color: var(--gic-green) !important; background: var(--gic-yellow) !important;
	border: none !important; padding: 16px 26px !important;
	border-radius: 999px !important; min-width: 0 !important; cursor: pointer;
	transition: background .3s var(--gic-ease);
}
.gic-loadmore:hover { background: #E6E600 !important; }
.gic-loadmore svg,
.gic-loadmore img,
.gic-loadmore i {
	width: 24px; height: 24px; padding: 6px; box-sizing: border-box;
	border-radius: 6px; background: var(--gic-green); color: var(--gic-yellow);
	display: inline-flex; align-items: center; justify-content: center;
	font-size: 12px; line-height: 1; flex: 0 0 auto;
}
.is-more-hidden { display: none !important; }
/* Barra de filtros. `--gic-bar-dir` la fija el control «Disposición de la
   barra»: en línea (etiqueta y chips en la misma fila) o apilada (la etiqueta
   encima), que es como va en el diseño de móvil. */
.gic-grid__bar {
	display: flex;
	flex-direction: var(--gic-bar-dir, row);
	align-items: var(--gic-bar-align, center);
	justify-content: flex-start;
	gap: var(--gic-bar-gap, 20px);
	flex-wrap: wrap;
	margin-bottom: 32px;
}
.gic-grid .gic-filters__label,
.gic-blogwrap .gic-filters__label {
	font-family: var(--gic-sans);
	font-size: 16px;
	font-weight: 700;
	line-height: 1.3;
	color: var(--gic-green);
	flex: 0 0 auto;
}
/* Los chips van en UNA sola línea que se desliza con el dedo: con muchas
   categorías, envolverlos en varias filas rompe la altura del bloque en el
   teléfono. `--gic-filters-wrap` lo controla desde Elementor. */
.gic-grid .gic-filters,
.gic-blogwrap .gic-filters {
	display: flex;
	flex-wrap: var(--gic-filters-wrap, wrap);
	gap: var(--gic-chip-gap, 20px);
	list-style: none;
	margin: 0;
	padding: 0;
	max-width: 100%;
	overflow-x: auto;
	overflow-y: hidden;
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
}
.gic-grid .gic-filters::-webkit-scrollbar,
.gic-blogwrap .gic-filters::-webkit-scrollbar { display: none; }
.gic-grid .gic-filters > li,
.gic-blogwrap .gic-filters > li { flex: 0 0 auto; margin: 0; list-style: none; }
.gic-grid button.gic-filters__btn {
	appearance: none;
	-webkit-appearance: none;
	/* inline-flex y no inline-block: así el alto del chip es exactamente
	   relleno + línea de texto + borde (40 px en el Figma), sin los píxeles de
	   más que Chromium le añade a la caja de línea de un <button>. */
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	font-family: var(--gic-sans);
	font-size: 16px;
	font-weight: 500;
	line-height: 20px;
	letter-spacing: normal;
	text-transform: none;
	white-space: nowrap;
	color: var(--gic-green);
	background: transparent;
	border: 1px solid #B7F5B7;
	border-radius: var(--gic-radius-pill);
	padding: 9px 14px;
	margin: 0;
	box-shadow: none;
	cursor: pointer;
	transition: background .3s var(--gic-ease), color .3s var(--gic-ease), border-color .3s var(--gic-ease);
}
.gic-grid button.gic-filters__btn:hover { border-color: var(--gic-accent); color: var(--gic-accent); background: transparent; }
/* El chip activo va AMARILLO con el texto verde, como el diseño. */
.gic-grid button.gic-filters__btn.is-active {
	background: var(--gic-yellow);
	color: var(--gic-green);
	border-color: var(--gic-yellow);
}
.gic-grid button.gic-filters__btn:focus-visible { outline: 2px solid var(--gic-accent); outline-offset: 2px; }

.gic-grid__items {
	display: grid;
	grid-template-columns: repeat(var(--gic-cols, 4), minmax(0, 1fr));
	gap: 24px;
}
.gic-grid__items .gic-proj.is-hidden { display: none; }

/* ---------- Testimonios ---------- */

/* Variables (las sobreescriben los controles de Elementor):
   --gic-tst-inset          = margen lateral de la tarjeta
   --gic-tst-arrow          = tamaño del botón de flecha
   --gic-tst-arrow-overlap  = 0..100 → cuánto monta la flecha sobre la tarjeta
                              (50 = mitad dentro / mitad fuera, como el PDF) */
.gic-tst {
	position: relative;
	width: 100%;
	/* El Figma da la tarjeta a TODO el ancho del contenido y las flechas
	   montadas sobre su borde (centro del botón justo en el borde). */
	--gic-tst-inset: 0px;
	--gic-tst-arrow: 48px;
	--gic-tst-arrow-x: max(6px, var(--gic-tst-arrow-x-wide, -28px));
}
@media (min-width: 1380px) {
	/* Aquí ya hay aire a los lados: la flecha sale fuera, como el diseño. */
	.gic-tst { --gic-tst-arrow-x: var(--gic-tst-arrow-x-wide, -28px); }
}
/* Eyebrow "Testimonios" centrado y estático, encima de las tarjetas (opción B). */
.gic-tst__head { text-align: center; margin: 0 0 32px; }
/* .gic-tst__stage NO recorta: es la referencia de posición de las flechas.
   .gic-tst__viewport sí recorta (esconde las tarjetas que no están activas). */
.gic-tst__stage { position: relative; }
.gic-tst__viewport { position: relative; overflow: hidden; }
.gic-tst .gic-slide { display: flex; }
/* Cada testimonio es una TARJETA mint que se desplaza COMPLETA con su texto
   (no solo el texto): el fondo mint vive en la tarjeta, no en el contenedor. */
.gic-tst .gic-tst__slide {
	position: relative;
	flex: 1 1 auto;
	margin: 0 var(--gic-tst-inset, 0px);
	background: var(--gic-mint);
	border-radius: var(--gic-radius-lg);
	padding: 73px 72px 71px;
}
/* Eyebrow DENTRO del cuadro: arriba a la izquierda, como el PDF. */
.gic-tst .gic-tst__eyebrow { display: inline-flex; margin: 0 0 30px; }
/* Flechas: centradas justo sobre el borde de la tarjeta.
   left = margen − tamaño × (1 − solape) */
.gic-tst .gic-slider__nav {
	width: var(--gic-tst-arrow, 56px) !important;
	height: var(--gic-tst-arrow, 56px) !important;
	min-width: 0 !important;
}
.gic-tst .gic-slider__nav--prev {
	left: calc(var(--gic-tst-inset, 0px) + var(--gic-tst-arrow-x, -28px));
}
.gic-tst .gic-slider__nav--next {
	right: calc(var(--gic-tst-inset, 0px) + var(--gic-tst-arrow-x, -28px));
}
/* Dots estáticos debajo de las tarjetas (van sobre blanco → tonos oscuros). */
.gic-tst .gic-dots { position: static; transform: none; justify-content: center; margin: 30px auto 0; }

/* Modo «flechas debajo»: las flechas bajan a la misma línea de los puntos.
   Se consigue quitando el position:relative del stage, para que las flechas
   se anclen a .gic-tst (todo el widget) en lugar de a la tarjeta. */
.gic-tst--arrows-below .gic-tst__stage { position: static; }
.gic-tst--arrows-below .gic-slider__nav { top: auto; bottom: 0; transform: none; }
.gic-tst--arrows-below .gic-slider__nav--prev { left: 0; right: auto; }
.gic-tst--arrows-below .gic-slider__nav--next { right: 0; left: auto; }
.gic-tst--arrows-below .gic-dots {
	margin-top: 26px;
	min-height: var(--gic-tst-arrow, 48px);
	align-items: center;
}
.gic-tst .gic-dots button { background: rgba(22, 61, 42, .22); }
.gic-tst .gic-dots button:hover { background: rgba(22, 61, 42, .4); }
.gic-tst .gic-dots button.is-active { background: var(--gic-green); transform: none; }
.gic-tst .gic-tst__quote {
	font-family: var(--gic-sans);
	font-weight: 400;
	font-size: 23px;
	line-height: 32px;
	color: var(--gic-green);
	margin: 0 0 27px;
}
.gic-tst .gic-tst__meta {
	display: flex;
	align-items: center;
	justify-content: flex-start;
	flex-wrap: wrap;
	column-gap: 20px;
	row-gap: 6px;
	font-family: var(--gic-sans);
	font-size: 18px;
	line-height: 1.4;
	color: #163D2A;
	margin: 0 0 28px;
}
.gic-tst .gic-tst__meta strong { font-weight: 700; }
.gic-tst .gic-tst__meta span { font-weight: 400; color: #163D2A; }
/* Separador rombo entre nombre y cargo (Figma), en vez de un bullet. */
.gic-tst .gic-tst__sep {
	flex: 0 0 auto;
	width: 7px;
	height: 7px;
	background: #163D2A;
	transform: rotate(45deg);
}
.gic-tst .gic-tst__rule { width: 100%; height: 2px; background: #CBD9CE; opacity: 1; border: none; margin: 0 0 29px; }
.gic-tst .gic-tst__company {
	font-family: var(--gic-sans);
	font-weight: 700;
	font-size: 18px;
	line-height: 1.4;
	color: var(--gic-accent);
	margin: 0;
}
.gic-tst .gic-tst__link {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	margin-top: 12px;
	font-family: var(--gic-sans);
	font-size: 17px;
	font-weight: 400;
	line-height: 1.4;
	color: #003E00;
	text-decoration: underline;
}
.gic-tst .gic-tst__link svg {
	width: 25px;
	height: 25px;
	padding: 5px;
	box-sizing: border-box;
	border-radius: 7px;
	background: #003E00;
	color: #FEFE00;
	transition: transform .35s var(--gic-ease);
}
.gic-tst .gic-tst__link:hover svg { transform: translateX(4px); }

/* ---------- Banda CTA ---------- */

.gic-cta {
	position: relative;
	width: 100%;
	background: var(--gic-green);
	color: var(--gic-mint);
	overflow: hidden;
	display: flex;
	align-items: stretch;
	justify-content: space-between;
	flex-wrap: wrap;
}
.gic-cta--rounded { border-radius: 15px; }
/* Variante full-width: alinear contenido con el ancho del sitio */
.gic-cta--full {
	border-radius: 0;
	padding-left: max(64px, calc((100% - 1240px) / 2 + 24px));
	padding-right: max(64px, calc((100% - 1240px) / 2 + 24px));
}
.gic-cta__content {
	position: relative;
	z-index: 1;
	flex: 1 1 380px;
	min-width: 0;
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: 56px 40px 56px 64px;
}
.gic-cta .gic-cta__title {
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: 45px;
	line-height: 1.2;
	margin: 0 0 14px;
	color: #FEFFF6;
}
.gic-cta__title em { font-style: italic; color: var(--gic-yellow); }
.gic-cta__text {
	font-family: var(--gic-sans);
	font-size: 19px;
	line-height: 1.5;
	color: #FEFFF6;
	margin: 0 0 26px;
	max-width: 520px;
}
.gic-cta__action { position: relative; z-index: 1; }
.gic-cta__media {
	position: relative;
	flex: 1 1 510px;
	min-width: 280px;
	min-height: 280px;
	overflow: hidden;
}
.gic-cta__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.gic-cta--rounded .gic-cta__media { border-radius: 0 15px 15px 0; }

/* Variante menta: banda clara, titulares verdes y botón verde con acentos amarillos
   (usada en el CTA de la página de Servicios). */
.gic-cta--mint { background: var(--gic-mint); color: var(--gic-green); }
.gic-cta--mint .gic-cta__title { color: var(--gic-green); }
.gic-cta--mint .gic-cta__text { color: var(--gic-green); }
.gic-cta--mint .gic-btn.gic-btn--yellow { background: var(--gic-green); color: var(--gic-yellow); }
.gic-cta--mint .gic-btn.gic-btn--yellow:hover { background: #0F2C1D; color: var(--gic-yellow); }
.gic-cta--mint .gic-btn.gic-btn--yellow svg { background: var(--gic-yellow); color: var(--gic-green); }

/* ---------- Pestañas técnicas (tabs interactivas) ---------- */

.gic-tabs { display: grid; grid-template-columns: minmax(260px, 360px) 1fr; gap: 40px; align-items: start; width: 100%; }
.gic-tabs__nav { display: flex; flex-direction: column; gap: 10px; }
.gic-tabs__tab {
	display: flex;
	align-items: center;
	gap: 16px;
	width: 100%;
	padding: 18px 22px;
	border: 1px solid var(--gic-line);
	border-radius: 14px;
	background: transparent;
	color: var(--gic-green);
	font-family: var(--gic-sans);
	text-align: left;
	cursor: pointer;
	transition: background .3s var(--gic-ease), color .3s var(--gic-ease), border-color .3s var(--gic-ease);
}
.gic-tabs__tab:hover { border-color: var(--gic-accent); }
.gic-tabs__num { font-family: var(--gic-display); font-weight: 700; font-size: 20px; line-height: 1; color: var(--gic-accent); }
.gic-tabs__label { font-size: 18px; font-weight: 600; }
.gic-tabs__tab.is-active { background: var(--gic-green); border-color: var(--gic-green); color: var(--gic-mint); }
.gic-tabs__tab.is-active .gic-tabs__num { color: var(--gic-yellow); }
.gic-tabs__tab:focus-visible { outline: 2px solid var(--gic-accent); outline-offset: 2px; }
.gic-tabs__panels { min-width: 0; }
.gic-tabs__panel { display: none; }
.gic-tabs__panel.is-active { display: block; animation: gic-tab-fade .35s var(--gic-ease); }
.gic-tabs__img { width: 100%; border-radius: var(--gic-radius-card); margin: 0 0 24px; display: block; }
.gic-tabs .gic-tabs__title { font-family: var(--gic-display); font-weight: 700; font-size: 28px; color: var(--gic-green); margin: 0 0 14px; }
.gic-tabs__text { font-family: var(--gic-sans); font-size: 18px; line-height: 1.6; color: var(--gic-ink); margin: 0; }
@keyframes gic-tab-fade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

/* Tema OSCURO de las pestañas (sobre banda verde: lista con hairlines, activa verde). */
.gic-tabs--dark .gic-tabs__tab { border: 0; border-bottom: 1px solid rgba(255, 255, 255, .15); border-radius: 0; padding: 18px 4px; color: var(--gic-mint); }
.gic-tabs--dark .gic-tabs__num { color: var(--gic-mint); }
.gic-tabs--dark .gic-tabs__tab:hover { color: var(--gic-white); border-bottom-color: var(--gic-accent); }
.gic-tabs--dark .gic-tabs__tab.is-active { background: transparent; color: var(--gic-accent); border-bottom-color: var(--gic-accent); }
.gic-tabs--dark .gic-tabs__tab.is-active .gic-tabs__num { color: var(--gic-accent); }
.gic-tabs--dark .gic-tabs__title { color: var(--gic-mint); }
.gic-tabs--dark .gic-tabs__text { color: rgba(255, 255, 255, .82); }

/* ---------- Categorías (lista numerada + panel) ----------
   Bloque «Categorías» de las páginas internas de servicio (Diseño,
   Supervisión, Asesoría).

   Medidas tomadas de los frames «4 Plantilla interna de servicio …» a 1440 px:
     · lista 80 → 680  |  panel 760 → 1360  (50 % / 50 %, hueco 80)
     · alto de fila 54.7 px  →  16 arriba + 22 de línea + 16 abajo + 1 de hairline
     · hairline #B7F5B7 de 1 px
     · activa: número + nombre + flecha en #FEFE00
     · imagen 600 × 373 (aspect-ratio 600/373), radio 16
     · descripción 16/30 en blanco, a 26 px de la imagen

   ESPECIFICIDAD: todas las reglas van prefijadas con `.gic-cats` (0,2,0). No es
   manía: el bloque se apoya en un <ul>/<li> y en <button>, tres etiquetas que
   casi todos los temas de WordPress (y el kit global de Elementor) pintan por
   su cuenta con selectores tipo `.elementor button` (0,1,1). Con una sola clase
   perdíamos y el bloque salía con el acabado del tema en vez del del Figma.

   Estos valores son SOLO los defaults del sistema de diseño: cada uno tiene su
   control en Elementor (ver widgets/categories.php), y los controles emiten con
   {{WRAPPER}} (0,3,0), así que siempre mandan sobre lo de aquí. */

.gic-cats { width: 100%; }
.gic-cats .gic-cats__title {
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: clamp(38px, 4.4vw, 63px);
	line-height: 1.1;
	letter-spacing: normal;
	text-transform: none;
	color: var(--gic-white);
	margin: 0 0 48px;
	padding: 0;
	overflow-wrap: break-word;
}
/* La lista pide «la mitad» del ancho: se le resta media separación para que
   lista y panel queden EXACTAMENTE iguales (en el Figma, 600 y 600 con 80 en
   medio). Si cambias el ancho o la separación desde Elementor, la cuenta se
   rehace sola. */
.gic-cats .gic-cats__grid {
	display: grid;
	--gic-cats-gap: 80px;
	grid-template-columns:
		minmax(0, calc(var(--gic-cats-listw, 50%) - var(--gic-cats-gap, 80px) / 2))
		minmax(0, 1fr);
	column-gap: var(--gic-cats-gap, 80px);
	row-gap: 40px;
	/* Centrado: con 12 categorías la lista es más alta y el panel se centra
	   contra ella; con 5 (Supervisión, Asesoría) es al revés y se centra la
	   lista contra la foto. Es lo que hace el Figma en los tres frames. */
	align-items: center;
	width: 100%;
}
/* Panel a la izquierda: se invierte el orden visual sin tocar el HTML (el orden
   del DOM sigue siendo lista → panel, que es el correcto para lectores). */
.gic-cats-panel--left .gic-cats__list   { order: 2; }
.gic-cats-panel--left .gic-cats__panels { order: 1; }

/* --- Lista --- */
.gic-cats .gic-cats__list {
	list-style: none;
	margin: 0;
	padding: 0;
	min-width: 0;
	align-self: center;
}
.gic-cats .gic-cats__item {
	list-style: none;
	margin: 0;
	padding: 12px 0;
	border: 0;
	border-bottom: 1px solid var(--gic-cats-sep, #B7F5B7);
	background: none;
	transition: background-color .25s var(--gic-ease);
}
.gic-cats .gic-cats__item::before,
.gic-cats .gic-cats__item::marker { content: none; }

/* Reset a fondo del <button>/<a> de cada fila: muchos temas pintan los botones
   con fondo, borde, radio, sombra, mayúsculas y espaciado propios. */
.gic-cats .gic-cats__btn {
	position: relative;
	display: flex;
	align-items: center;
	gap: 0;
	width: 100%;
	min-height: 0;
	max-width: none;
	margin: 0;
	/* Hueco a la derecha para la flecha, que va ABSOLUTA: así una flecha de
	   28 px no engorda la fila (en el Figma la fila mide 54.7 px, marcada por
	   la línea de texto de 22, no por la flecha). */
	padding: 0 calc(var(--gic-cats-arrow-w, 30px) + 16px) 0 0;
	border: 0;
	border-radius: 0;
	background: none;
	background-color: transparent;
	box-shadow: none;
	color: inherit;
	font-family: var(--gic-sans);
	font-size: 16px;
	font-weight: 400;
	line-height: inherit;
	letter-spacing: normal;
	text-transform: none;
	text-align: left;
	text-decoration: none;
	text-shadow: none;
	-webkit-appearance: none;
	appearance: none;
	cursor: pointer;
	transition: transform .3s var(--gic-ease);
}
.gic-cats .gic-cats__btn:hover,
.gic-cats .gic-cats__btn:focus,
.gic-cats .gic-cats__btn:active {
	background: none;
	background-color: transparent;
	box-shadow: none;
	border: 0;
	text-decoration: none;
}
.gic-cats .gic-cats__num {
	flex: 0 0 auto;
	min-width: 28px;
	margin: 0;
	padding: 0;
	font-family: var(--gic-sans);
	font-size: 24px;
	font-weight: 500;
	line-height: 30px;
	letter-spacing: normal;
	text-transform: none;
	color: var(--gic-white);
	transition: color .25s var(--gic-ease);
}
.gic-cats .gic-cats__label {
	flex: 1 1 auto;
	min-width: 0;
	/* Rejilla de una sola celda: el texto visible y una copia en negrita se
	   superponen, así la fila SIEMPRE mide lo que medirá en estado activo y no
	   cambia de alto al activarse (ver el comentario del render). */
	display: grid;
	margin: 0;
	padding: 0;
	font-family: var(--gic-sans);
	font-size: 20px;
	font-weight: 500;
	line-height: 30px;
	letter-spacing: normal;
	text-transform: none;
	color: var(--gic-white);
	overflow-wrap: break-word;
	transition: color .25s var(--gic-ease);
}
.gic-cats .gic-cats__label::before {
	content: attr(data-label);
	grid-area: 1 / 1;
	font-weight: 700;
	visibility: hidden;
	pointer-events: none;
}
/* El texto visible hereda TODO del contenedor: hay temas que estilan `span` a
   secas (`.elementor span { letter-spacing: … }`) y le ganarían a la herencia
   normal. Con `font`/`letter-spacing: inherit` mandan siempre los controles de
   Elementor, que apuntan al contenedor .gic-cats__label. */
.gic-cats .gic-cats__labeltext {
	grid-area: 1 / 1;
	font: inherit;
	letter-spacing: inherit;
	text-transform: inherit;
	color: inherit;
	margin: 0;
	padding: 0;
}
.gic-cats .gic-cats__arrow {
	position: absolute;
	right: 0;
	top: 50%;
	display: inline-flex;
	align-items: center;
	justify-content: flex-end;
	margin: 0;
	padding: 0;
	transform: translate(var(--gic-cats-arrow-shift, 0px), -50%);
	color: var(--gic-yellow);
	opacity: 0;
	transition: opacity .25s var(--gic-ease), transform .3s var(--gic-ease), color .25s var(--gic-ease);
}
.gic-cats .gic-cats__arrow svg {
	width: var(--gic-cats-arrow-w, 30px);
	height: var(--gic-cats-arrow-w, 30px);
	stroke-width: 2.4;
	display: block;
	fill: none;
}
.gic-cats .gic-cats__arrow.is-always { opacity: 1; }

/* Activa: número, nombre y flecha en amarillo (el hairline no cambia). */
.gic-cats .gic-cats__item.is-active .gic-cats__num,
.gic-cats .gic-cats__item.is-active .gic-cats__label { color: var(--gic-yellow); }
.gic-cats .gic-cats__item.is-active .gic-cats__label { font-weight: 700; }
.gic-cats .gic-cats__item.is-active .gic-cats__arrow { opacity: 1; color: var(--gic-yellow); }
.gic-cats .gic-cats__item:hover .gic-cats__label,
.gic-cats .gic-cats__item:hover .gic-cats__num { color: var(--gic-yellow); }
.gic-cats .gic-cats__btn:focus-visible { outline: 2px solid var(--gic-yellow); outline-offset: 4px; }

/* --- Panel --- */
/* Columna flexible centrada: el JS reserva aquí el alto del panel más alto
   (lockHeight) y esto mantiene el panel visible centrado dentro de esa
   reserva, que es como se ve en el Figma. */
.gic-cats .gic-cats__panels {
	min-width: 0;
	align-self: center;
	display: flex;
	flex-direction: column;
	justify-content: center;
}
.gic-cats .gic-cats__panel {
	display: none;
	flex-direction: column;
	gap: 32px;
	margin: 0;
	padding: 0;
}
.gic-cats .gic-cats__panel.is-active { display: flex; }
.gic-cats-text--above .gic-cats__panel { flex-direction: column-reverse; }
/* Modo acordeón (teléfono): el JS mete el panel activo dentro de su categoría. */
.gic-cats .gic-cats__item > .gic-cats__panel { margin-top: 18px; }
.gic-cats .gic-cats__img {
	display: block;
	width: 100%;
	max-width: 100%;
	height: auto;
	aspect-ratio: 600 / 373;
	object-fit: cover;
	border: 0;
	border-radius: var(--gic-radius-card);
	margin: 0;
	padding: 0;
}
.gic-cats .gic-cats__text {
	font-family: var(--gic-sans);
	font-size: 20px;
	font-weight: 400;
	line-height: 27px;
	letter-spacing: normal;
	text-transform: none;
	color: var(--gic-white);
	margin: 0;
	padding: 0;
}

/* Ancho de la banda de Categorías. En los tres frames del Figma el bloque
   respira 80 px por lado (1280 de contenido), mientras que el kit del sitio usa
   1240. Se corrige SOLO en esta sección, y con tres clases para ganarle a la
   regla propia de Elementor (`.e-con > .e-con-inner`). Sigue siendo editable:
   el control «Ancho del contenido» del contenedor pesa más que esto. */
.e-con.gic-cats-band > .e-con-inner,
.elementor-section.gic-cats-band > .elementor-container {
	max-width: var(--gic-cats-band-w, 1280px);
}

/* Transiciones del panel (control «Transición del panel»). */
.gic-cats--anim-fade .gic-cats__panel.is-active { animation: gic-cats-fade .35s var(--gic-ease); }
.gic-cats--anim-up .gic-cats__panel.is-active { animation: gic-cats-up .4s var(--gic-ease); }
@keyframes gic-cats-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes gic-cats-up { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
/* ---------- Certificaciones ---------- */

.gic-cert { position: relative; width: 100%; }
.gic-cert__items {
	display: grid;
	grid-template-columns: repeat(var(--gic-cols, 3), minmax(0, 1fr));
	gap: 24px;
}
/* Variables del sello (las fijan los controles de Elementor). */
.gic-cert { --gic-badge-w: 94px; --gic-badge-h: 140px; }
.gic-cert__card {
	position: relative;
	display: flex;
	/* El sello va ARRIBA, a la altura del título (fiel al PDF), no centrado. */
	align-items: flex-start;
	justify-content: space-between;
	gap: 24px;
	background: var(--gic-mint);
	/* Sutil realce hacia el sello (el Figma superpone un gráfico de fondo; sustituir por el asset real si lo hay). */
	background-image: radial-gradient(135% 135% at 85% 12%, rgba(255, 255, 255, .5) 0%, rgba(255, 255, 255, 0) 55%);
	border: none;
	border-radius: var(--gic-radius-card);
	padding: 24px;
	text-align: left;
	transition: box-shadow .3s var(--gic-ease), transform .3s var(--gic-ease);
}
.gic-cert__card:hover { box-shadow: 0 18px 40px -20px rgba(22, 61, 42, .2); transform: translateY(-3px); }
.gic-cert__body { flex: 1 1 auto; min-width: 0; }
/* Caja de tamaño FIJO: los tres sellos miden exactamente lo mismo aunque los
   archivos originales tengan proporciones distintas (object-fit los encaja). */
.gic-cert__badge {
	flex: 0 0 auto;
	width: var(--gic-badge-w, 94px);
	height: var(--gic-badge-h, 140px);
	margin: 0;
	display: flex;
	align-items: flex-start;
	justify-content: center;
}
.gic-cert__badge img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	object-position: center top;
	display: block;
}
/* Sello debajo del texto (opción del control «Posición del sello»). */
.gic-cert__card--badge-bottom { flex-direction: column; align-items: flex-start; }
.gic-cert__card--badge-left { flex-direction: row-reverse; justify-content: flex-end; }
.gic-cert .gic-cert__title {
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: 30px;
	line-height: 1.18;
	color: var(--gic-green);
	margin: 0 0 8px;
	/* Antes «Garantizada» se partía en «Garantizad / a»: entre cortar una
	   palabra y que asome un pelo, siempre es mejor lo segundo. */
	overflow-wrap: normal;
	word-break: normal;
	hyphens: none;
}
.gic-cert__code {
	display: block;
	font-family: var(--gic-sans);
	font-size: 24px;
	font-weight: 500;
	letter-spacing: .02em;
	color: #009B00;
	margin: 0 0 12px;
}
.gic-cert__text { font-family: var(--gic-sans); font-size: 18px; line-height: 1.5; color: var(--gic-green); margin: 0; }

/* ---------- Blog ---------- */

/* ==================================================================
   Blog — rejilla de artículos (widget GICA · Grid de Blog)
   Frame «8 Hub blog • Desktop»: dos columnas de tarjetas menta con la foto a
   la izquierda y, a la derecha, la chapa de la categoría, el tiempo de
   lectura, el titular, el resumen y «Leer más» abajo a la derecha.
   Todo esto son valores de fábrica: cada uno tiene su control en Elementor.
   ================================================================== */
.gic-blogwrap { width: 100%; }
/* Título de la lista: va entre el artículo grande y la barra de filtros. */
.gic-blogwrap .gic-blogwrap__title {
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: clamp(38px, 5vw, 60px);
	line-height: 1.2;
	letter-spacing: normal;
	color: var(--gic-green);
	margin: 0 0 31px;
	padding: 0;
	overflow-wrap: break-word;
}
.gic-blog {
	display: grid;
	grid-template-columns: repeat(var(--gic-cols, 2), minmax(0, 1fr));
	column-gap: 24px;
	row-gap: 44px;
	width: 100%;
	--gic-post-img-w: 47.2%;
	--gic-post-more-align: flex-end;
}
/* La tarjeta es un <a>: hay que desarmar el estilo de enlace del tema. */
.gic-blog .gic-post {
	display: flex;
	align-items: stretch;
	box-sizing: border-box;
	min-height: 378px;
	background: #E5F5E5;
	border: none;
	border-radius: 12px;
	padding: 16px 22px;
	gap: 30px;
	overflow: hidden;
	text-decoration: none;
	box-shadow: none;
	cursor: pointer;
	transition: background-color .35s var(--gic-ease), box-shadow .35s var(--gic-ease);
}
.gic-blog a.gic-post:hover { text-decoration: none; }
.gic-blog .gic-post.is-hidden,
.gic-blog .gic-post.is-more-hidden { display: none; }
/* La foto ocupa TODO el alto útil de la tarjeta (fiel al Figma): el ancho lo
   manda --gic-post-img-w y el alto lo da align-self:stretch. */
.gic-blog .gic-post__img {
	position: relative;
	display: block;
	flex: 0 0 var(--gic-post-img-w, 47.2%);
	max-width: var(--gic-post-img-w, 47.2%);
	align-self: stretch;
	overflow: hidden;
	border-radius: 8px;
}
.gic-blog .gic-post__img img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform 1s var(--gic-ease);
}
/* Modo «proporción fija»: la foto deja de estirarse y usa un aspect-ratio. */
.gic-blog .gic-post--img-ratio .gic-post__img { align-self: flex-start; aspect-ratio: var(--gic-post-img-ratio, 3 / 4); }
.gic-blog .gic-post__body {
	flex: 1 1 auto;
	min-width: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
}
/* Chapa de categoría y «Lectura X min», en la misma fila. */
.gic-blog .gic-post__meta {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
	margin: 0 0 26px;
}
.gic-blog .gic-post__cat {
	align-self: flex-start;
	display: inline-flex;
	align-items: center;
	background: #B7F5B7;
	color: var(--gic-green);
	font-family: var(--gic-sans);
	font-size: 14px;
	font-weight: 700;
	line-height: 1.4;
	padding: 4px 12px;
	border-radius: 40px;
	margin: 0;
	white-space: nowrap;
}
.gic-blog .gic-post__read {
	display: block;
	font-family: var(--gic-sans);
	font-size: 14px;
	font-weight: 400;
	line-height: 1.4;
	color: var(--gic-green);
	margin: 0;
}
.gic-blog .gic-post__title {
	display: block;
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: 27px;
	line-height: 1.33;
	letter-spacing: normal;
	color: var(--gic-green);
	margin: 0 0 8px;
	overflow-wrap: break-word;
}
.gic-blog .gic-post__excerpt {
	display: block;
	font-family: var(--gic-sans);
	font-size: 17px;
	font-weight: 400;
	line-height: 24px;
	color: var(--gic-green);
	margin: 0;
}
/* «Leer más»: abajo a la DERECHA (fiel al Figma), empujado por margin-top:auto. */
.gic-blog .gic-post__more {
	margin-top: 20px;
	margin-bottom: 10px;
	align-self: var(--gic-post-more-align, flex-end);
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-family: var(--gic-sans);
	font-size: 17px;
	font-weight: 400;
	line-height: 1.4;
	text-decoration: underline;
	color: #003E00;
}
/* El truco del «auto» va en un separador flexible, para que el margen mínimo
   del control siga respetándose cuando el texto es corto. */
.gic-blog .gic-post__excerpt { margin-bottom: auto; }
.gic-blog .gic-post__more svg {
	width: 25px;
	height: 25px;
	padding: 5px;
	box-sizing: border-box;
	border-radius: 7px;
	background: #003E00;
	color: #FEFE00;
	flex: 0 0 auto;
	transition: transform .35s var(--gic-ease);
}
.gic-blog .gic-post:hover .gic-post__more svg { transform: translateX(4px); }

/* Barra de filtros del blog: comparte marcado con la de Proyectos, pero sus
   pastillas son píldoras con borde verde claro (y la activa, amarilla). */
.gic-blogwrap .gic-grid__bar { margin-bottom: 86px; }
.gic-blogwrap .gic-filters { --gic-chip-gap: 16px; }
.gic-blogwrap button.gic-filters__btn {
	appearance: none;
	-webkit-appearance: none;
	box-sizing: border-box;
	/* Los temas suelen darle a los <button> un min-height propio: sin esto, la
	   pastilla crecía de 47 a 48 px en el «tema hostil». */
	min-height: 0;
	min-width: 0;
	height: auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-family: var(--gic-sans);
	font-size: 16px;
	font-weight: 500;
	line-height: 1.4;
	padding: 11px 18px;
	border: 1px solid #B7F5B7;
	border-radius: 999px;
	background: var(--gic-white);
	color: var(--gic-green);
	box-shadow: none;
	cursor: pointer;
	white-space: nowrap;
	transition: background-color .25s var(--gic-ease), color .25s var(--gic-ease), border-color .25s var(--gic-ease);
}
.gic-blogwrap button.gic-filters__btn:hover { background: var(--gic-mint); }
.gic-blogwrap button.gic-filters__btn.is-active {
	background: var(--gic-yellow);
	border-color: var(--gic-yellow);
	color: var(--gic-green);
}
.gic-blogwrap .gic-loadmore-wrap { margin-top: 70px; }

/* ==================================================================
   Blog — artículo destacado (widget GICA · Artículo destacado)
   ================================================================== */
.gic-bfeat {
	display: flex;
	align-items: flex-start;
	gap: 60px;
	width: 100%;
	--gic-bfeat-textw: 39.8%;
}
.gic-bfeat .gic-bfeat__body {
	flex: 0 0 var(--gic-bfeat-textw, 39.8%);
	max-width: var(--gic-bfeat-textw, 39.8%);
	min-width: 0;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
}
.gic-bfeat .gic-bfeat__meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 12px;
	margin: 0 0 35px;
}
.gic-bfeat .gic-bfeat__cat {
	display: inline-flex;
	align-items: center;
	background: #B7F5B7;
	color: var(--gic-green);
	font-family: var(--gic-sans);
	font-size: 14px;
	font-weight: 700;
	line-height: 1.4;
	padding: 4px 12px;
	border-radius: 40px;
	white-space: nowrap;
}
.gic-bfeat .gic-bfeat__read {
	font-family: var(--gic-sans);
	font-size: 14px;
	font-weight: 400;
	line-height: 1.4;
	color: var(--gic-green);
}
.gic-bfeat .gic-bfeat__title {
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: 33px;
	line-height: 1.15;
	letter-spacing: normal;
	color: var(--gic-green);
	margin: 0 0 31px;
	padding: 0;
	overflow-wrap: break-word;
}
.gic-bfeat .gic-bfeat__title a { color: inherit; text-decoration: none; }
.gic-bfeat .gic-bfeat__title a:hover { text-decoration: underline; }
.gic-bfeat .gic-bfeat__excerpt {
	font-family: var(--gic-sans);
	font-size: 18px;
	font-weight: 400;
	line-height: 1.5;
	color: var(--gic-green);
	margin: 0;
}
.gic-bfeat .gic-bfeat__more {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	margin-top: 110px;
	font-family: var(--gic-sans);
	font-size: 17px;
	font-weight: 400;
	line-height: 1.4;
	text-decoration: underline;
	color: #003E00;
}
.gic-bfeat .gic-bfeat__more svg {
	width: 25px;
	height: 25px;
	padding: 5px;
	box-sizing: border-box;
	border-radius: 7px;
	background: #003E00;
	color: #FEFE00;
	flex: 0 0 auto;
	transition: transform .35s var(--gic-ease);
}
.gic-bfeat .gic-bfeat__more:hover svg { transform: translateX(4px); }
.gic-bfeat .gic-bfeat__img {
	display: block;
	flex: 1 1 auto;
	min-width: 0;
	aspect-ratio: 663 / 450;
	overflow: hidden;
	border-radius: 16px;
	line-height: 0;
}
/* Cuando el artículo grande lo pinta la propia rejilla (control «Primer
   artículo grande arriba»), separa de las tarjetas de abajo. */
.gic-blogwrap > .gic-bfeat { margin-bottom: 64px; }
.gic-bfeat .gic-bfeat__img img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform 1s var(--gic-ease);
}

/* ---------- Grid de características ---------- */

.gic-feat {
	display: grid;
	grid-template-columns: repeat(var(--gic-cols, 4), minmax(0, 1fr));
	gap: 28px;
	width: 100%;
}
.gic-feat__item { min-width: 0; text-align: left; }
.gic-feat__icon {
	--gic-feat-ico: 30px;
	--gic-feat-box: 56px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--gic-green);
	margin-bottom: 18px;
	line-height: 1;
}
.gic-feat__icon svg,
.gic-feat__icon img,
.gic-feat__icon i {
	width: var(--gic-feat-ico);
	height: var(--gic-feat-ico);
	font-size: var(--gic-feat-ico);
	line-height: 1;
	display: block;
}
/* Recuadro detrás del icono. «Automático» respeta lo de siempre: pastilla en
   los temas claro y oscuro, icono suelto en las tarjetas verdes del ADN. */
.gic-feat-box--yes .gic-feat__icon,
.gic-feat-box--auto .gic-feat--light .gic-feat__icon,
.gic-feat-box--auto .gic-feat--dark .gic-feat__icon {
	width: var(--gic-feat-box);
	height: var(--gic-feat-box);
	border-radius: var(--gic-radius-btn);
	background: var(--gic-chip);
}
.gic-feat__num {
	width: 52px; height: 52px;
	border-radius: 50%;
	border: 1px solid var(--gic-line);
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: 18px;
	color: var(--gic-green);
	margin-bottom: 22px;
}
.gic-feat .gic-feat__title {
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: 19px;
	line-height: 1.35;
	color: var(--gic-green);
	margin: 0 0 10px;
}
.gic-feat__text { font-family: var(--gic-sans); font-size: 15px; line-height: 1.6; color: var(--gic-muted); margin: 0; }

.gic-feat--dark { background: var(--gic-green); border-radius: var(--gic-radius-lg); padding: 48px; }
.gic-feat--dark .gic-feat__icon { color: var(--gic-mint); }
.gic-feat-box--yes .gic-feat--dark .gic-feat__icon,
.gic-feat-box--auto .gic-feat--dark .gic-feat__icon { background: rgba(255, 255, 255, .12); }
.gic-feat--dark .gic-feat__num { border-color: rgba(255, 255, 255, .3); color: var(--gic-mint); }
.gic-feat--dark .gic-feat__title { color: var(--gic-mint); }
.gic-feat--dark .gic-feat__text { color: var(--gic-mint); opacity: .75; }

.gic-feat--light { background: var(--gic-mint); border-radius: var(--gic-radius-lg); padding: 48px; }

/* Variante "tarjetas": cada ítem es una tarjeta verde oscuro (ADN de la empresa). */
.gic-feat--cards { background: transparent; padding: 0; gap: 24px; }
.gic-feat--cards .gic-feat__item {
	background: var(--gic-green);
	border-radius: var(--gic-radius-card);
	padding: 30px 28px;
}
/* Iconos del ADN: amarillos, SIN caja de fondo (fiel al Figma). */
.gic-feat--cards .gic-feat__icon { color: var(--gic-yellow); }
.gic-feat--cards .gic-feat__title { color: var(--gic-mint); font-size: 22px; }
.gic-feat--cards .gic-feat__text { color: var(--gic-mint); opacity: .8; }

/* Checklist (icon-list nativo con checks) — sección "Por qué confiar en nosotros". */
.gic-checklist .elementor-icon-list-items { display: flex; flex-direction: column; gap: 4px; }
.gic-checklist .elementor-icon-list-item { padding: 8px 0; }
.gic-checklist .elementor-icon-list-icon { color: var(--gic-accent); }
.gic-checklist .elementor-icon-list-icon svg,
.gic-checklist .elementor-icon-list-icon i { color: var(--gic-accent); }
.gic-checklist .elementor-icon-list-text { font-family: var(--gic-sans); font-size: 18px; font-weight: 500; color: var(--gic-ink); }

/* ---------- Equipo ---------- */

/* Barra de búsqueda / filtro del equipo. */
.gic-team-wrap { width: 100%; }
.gic-team-toolbar { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 32px; }
.gic-team-search { flex: 1 1 280px; }
.gic-team-search,
.gic-team-area,
.gic-team-sort {
	font-family: var(--gic-sans);
	font-size: 15px;
	color: var(--gic-green);
	padding: 13px 16px;
	border: 1px solid var(--gic-line);
	border-radius: 10px;
	background: var(--gic-white);
	appearance: auto;
}
.gic-team-search::placeholder { color: var(--gic-muted); }
.gic-team-search:focus,
.gic-team-area:focus,
.gic-team-sort:focus { outline: none; border-color: var(--gic-accent); }

/* --- Acabado de la barra según el diseño ---------------------------------
   Buscador con lupa dentro, desplegable de área con fondo verde muy claro y
   «Ordenar por» suelto a la derecha, sin recuadro. Se cambia desde Elementor
   («Acabado de la barra»). */
.gic-team-tb--design .gic-team-toolbar { align-items: center; }
/* En el diseño los dos campos NO ocupan todo el ancho: son dos cajas de
   tamaño contenido a la izquierda, y «Ordenar por» queda suelto a la derecha.
   Los anchos se controlan desde Elementor (--gic-team-search-w / -area-w). */
.gic-team-tb--design .gic-team-field {
	position: relative;
	display: flex;
	align-items: center;
	flex: 0 1 var(--gic-team-search-w, 380px);
	width: var(--gic-team-search-w, 380px);
	max-width: 100%;
	min-width: 0;
}
.gic-team-tb--design .gic-team-field__ico {
	position: absolute;
	left: 16px;
	width: 18px;
	height: 18px;
	color: var(--gic-muted);
	pointer-events: none;
}
.gic-team-tb--design .gic-team-search { width: 100%; padding-left: 44px; }
.gic-team-tb--design .gic-team-area {
	flex: 0 1 var(--gic-team-area-w, 350px);
	width: var(--gic-team-area-w, 350px);
	max-width: 100%;
	min-width: 0;
	background: var(--gic-team-area-bg, #F2FAF3);
	border-color: var(--gic-team-area-border, #BFE0C6);
	color: var(--gic-green);
	padding-right: 40px;
}
/* «Ordenar por» va suelto al final de la línea, sin caja ni borde. */
.gic-team-tb--design .gic-team-sort {
	margin-left: auto;
	flex: 0 0 auto;
	width: var(--gic-team-sort-w, auto);
	max-width: 100%;
	border-color: transparent;
	background: transparent;
	padding-inline: 4px;
	color: var(--gic-green);
}
.gic-team-tb--design .gic-team-sort:focus { border-color: var(--gic-accent); }
/* ------------------------------------------------------------------
   Utilidad: «gic-media-last».
   Escríbela en «Clases CSS» de cualquier contenedor de dos columnas y, en el
   teléfono, la PRIMERA columna (normalmente la foto) pasa al final. Sirve para
   secciones tipo «¿Quiénes somos?» o «Por qué confiar», donde en el diseño
   móvil el texto va arriba y la imagen debajo.
   Se aplica al propio contenedor y a sus variantes internas de Elementor
   (.e-con-inner / .elementor-container), porque según la versión y el tipo de
   contenedor la fila flex es uno u otro elemento.
   ------------------------------------------------------------------ */
@media (max-width: 767px) {
	.gic-media-last,
	.gic-media-last > .e-con-inner,
	.gic-media-last > .elementor-container { flex-direction: column-reverse !important; }

	/* La contraria, por si alguna sección necesita lo contrario. */
	.gic-media-first,
	.gic-media-first > .e-con-inner,
	.gic-media-first > .elementor-container { flex-direction: column !important; }

	/* --------------------------------------------------------------
	   Y AUTOMÁTICO, sin tener que escribir nada: en el teléfono, una
	   columna que contiene SOLO una imagen se va al final de su fila.
	   Es lo que pide el diseño en «Historia» y «Diferenciales»: primero
	   el título y el texto, la foto después.

	   `order: 9` la manda al final sin tocar el orden del resto (los
	   demás hijos se quedan en el 0 por defecto), así que funciona con
	   dos columnas o con las que sean, y da igual en qué posición esté
	   la imagen dentro de la fila.

	   Se cubren las dos formas del contenedor de Elementor: con
	   `.e-con-inner` y sin él, según el tipo y la versión.
	   Excepciones: el hero interior (ahí la foto es la banda de la
	   derecha) y cualquier contenedor al que le pongas `gic-media-keep`.
	   -------------------------------------------------------------- */
	.e-con:has( > .elementor-widget-image:only-child):not(.gic-media-keep):not(.gic-page-hero__media),
	.e-con:has( > .e-con-inner > .elementor-widget-image:only-child):not(.gic-media-keep):not(.gic-page-hero__media),
	.elementor-column:has( > .elementor-widget-wrap > .elementor-widget-image:only-child):not(.gic-media-keep) {
		order: 9;
	}
	/* Si la fila ya lleva `gic-media-last` o `gic-media-first` mandas tú: la
	   regla automática se desactiva ahí dentro. Si no, «column-reverse» y
	   «order: 9» se cancelarían y la foto volvería arriba. */
	.gic-media-last > *,
	.gic-media-last > .e-con-inner > *,
	.gic-media-first > *,
	.gic-media-first > .e-con-inner > * { order: 0 !important; }
}

/* Aviso de diagnóstico visible SOLO dentro del editor de Elementor. */
.gic-editor-note {
	font-family: var(--gic-sans);
	font-size: 13px;
	line-height: 1.5;
	color: #7A5B00;
	background: #FFF8E1;
	border-left: 3px solid #E5B700;
	border-radius: 6px;
	padding: 10px 14px;
	margin: 0 0 16px;
}

/* Contador de resultados y mensaje de «sin resultados». */
.gic-team__count {
	font-family: var(--gic-sans);
	font-size: 14px;
	color: var(--gic-muted);
	margin: -18px 0 22px;
}
.gic-team__empty {
	font-family: var(--gic-sans);
	font-size: 16px;
	color: var(--gic-muted);
	text-align: center;
	padding: 40px 0;
	margin: 0;
}
.gic-team__empty[hidden] { display: none; }

/* Dos estados de ocultación INDEPENDIENTES, gestionados por la misma máquina
   de estado en gica.js: `is-hidden` = la tarjeta no pasa el filtro;
   `is-more-hidden` = sí pasa el filtro pero está en una página posterior de
   «Cargar más». Al ser independientes, buscador y paginación ya conviven. */
.gic-team__card.is-hidden,
.gic-team__card.is-more-hidden { display: none; }

.gic-team {
	display: grid;
	grid-template-columns: repeat(var(--gic-cols, 4), minmax(0, 1fr));
	gap: 22px;
	width: 100%;
}
.gic-team__card {
	position: relative;
	border-radius: var(--gic-radius-card);
	overflow: hidden;
	aspect-ratio: 4 / 5;
	background: var(--gic-green);
	isolation: isolate;
	--gic-team-scrim: rgba(22, 61, 42, .88);
	--gic-team-scrim-start: 45%;
	--gic-team-zoom: 1.05;
}
.gic-team__card:focus-visible { outline: 3px solid var(--gic-accent); outline-offset: 3px; }

/* La foto se apila con z-index POSITIVO (no -1): con z-index negativo basta
   con que un ancestro tenga fondo propio para que la foto desaparezca.
   Es el mismo patrón frágil que ya se corrigió en .gic-proj. */
.gic-team__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	min-height: 100%;
	object-fit: cover;
	z-index: 0;
	transition: transform 1s var(--gic-ease);
}
.gic-team__card:hover .gic-team__img,
.gic-team__card.is-revealed .gic-team__img { transform: scale(var(--gic-team-zoom, 1.05)); }

.gic-team__card::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background: linear-gradient(180deg, transparent var(--gic-team-scrim-start, 45%), var(--gic-team-scrim, rgba(22, 61, 42, .88)) 100%);
	transition: opacity .35s var(--gic-ease);
}
.gic-team__info {
	position: absolute;
	inset: auto 0 0 0;
	z-index: 2;
	padding: 20px;
	transition: opacity .3s var(--gic-ease);
}
.gic-team__card .gic-team__name {
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: 17px;
	color: var(--gic-white);
	margin: 0 0 3px;
	line-height: 1.3;
}
.gic-team__role {
	font-family: var(--gic-sans);
	font-size: 13px;
	line-height: 1.45;
	color: var(--gic-mint);
	opacity: .85;
	margin: 0;
}
.gic-team__social { display: flex; gap: 10px; margin-top: 12px; }
.gic-team__social a { color: var(--gic-white); opacity: .85; transition: opacity .3s var(--gic-ease), color .3s var(--gic-ease); display: inline-flex; }
.gic-team__social a:hover { opacity: 1; color: var(--gic-yellow); }
.gic-team__social svg { width: 15px; height: 15px; }

/* --- Acabado «cristal esmerilado» (el del diseño, por defecto) ------------
   La franja inferior no es un degradado oscuro con texto blanco, sino un
   cristal translúcido que desenfoca la foto que tiene detrás. Por eso cada
   tarjeta tiña distinto: el color lo pone la propia fotografía.
   El acabado se cambia desde Elementor («Acabado de la tarjeta»). */
.gic-team-skin--glass .gic-team__card::after { opacity: 0; }
.gic-team-skin--glass .gic-team__info {
	inset: auto 0 0 0;
	/* Verde de marca muy claro y translúcido: la foto se sigue viendo detrás,
	   y por eso cada tarjeta tiñe la franja de un tono distinto. */
	background: var(--gic-team-band-bg, rgba(219, 236, 222, .66));
	-webkit-backdrop-filter: blur(var(--gic-team-band-blur, 18px)) saturate(1.5);
	backdrop-filter: blur(var(--gic-team-band-blur, 18px)) saturate(1.5);
}
.gic-team-skin--glass .gic-team__card .gic-team__name { color: var(--gic-green); }
.gic-team-skin--glass .gic-team__role { color: #4A5B52; opacity: 1; }
/* Sin `backdrop-filter` (navegadores antiguos) el cristal se vuelve opaco,
   para que el texto verde nunca quede ilegible sobre la foto. */
@supports not (backdrop-filter: blur(2px)) {
	.gic-team-skin--glass .gic-team__info { background: rgba(228, 241, 230, .93); }
}

/* --- Panel de información (hover en escritorio, toque en móvil) --- */
.gic-team__card:hover::after,
.gic-team__card.is-revealed::after { opacity: 0; }
.gic-team__card:hover .gic-team__info,
.gic-team__card.is-revealed .gic-team__info { opacity: 0; }

.gic-team__reveal {
	position: absolute;
	inset: 0;
	z-index: 3;
	display: flex;
	padding: 24px;
	/* En el diseño la foto se sigue adivinando detrás del texto: el panel es
	   translúcido de verdad, no una capa opaca. */
	background: rgba(233, 242, 235, .82);
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
	opacity: 0;
	visibility: hidden;
	--gic-team-speed: 350ms;
	transition: opacity var(--gic-team-speed) var(--gic-ease),
		visibility var(--gic-team-speed) var(--gic-ease),
		transform var(--gic-team-speed) var(--gic-ease);
}
/* Columna interna con scroll propio: si una persona tiene bio larga + datos +
   contacto, el panel nunca desborda la tarjeta. */
.gic-team__reveal-in {
	display: flex;
	flex-direction: column;
	width: 100%;
	min-height: 0;
	overflow-y: auto;
	overscroll-behavior: contain;
	scrollbar-width: thin;
}
.gic-team__card:hover .gic-team__reveal,
.gic-team__card.is-revealed .gic-team__reveal {
	opacity: 1;
	visibility: visible;
	transform: none;
}

/* Variantes de entrada del panel (control «Cómo aparece»).
   En «sube desde abajo» —el del diseño— la ficha entra DESLIZÁNDOSE de verdad
   desde el borde inferior de la tarjeta, no apareciendo con un fundido: se
   mantiene opaca y es el `overflow: hidden` de la tarjeta el que la recorta
   mientras está fuera. */
.gic-team-anim--up .gic-team__reveal,
.gic-team-anim--down .gic-team__reveal {
	opacity: 1;
	visibility: visible;
	transition: transform var(--gic-team-speed, 350ms) var(--gic-ease);
}
.gic-team-anim--up .gic-team__reveal { transform: translateY(100%); }
.gic-team-anim--down .gic-team__reveal { transform: translateY(-100%); }
.gic-team-anim--zoom .gic-team__reveal { transform: scale(.94); }

/* Fuera de la tarjeta la ficha no debe ser alcanzable con el ratón ni con el
   tabulador (está visible solo a efectos de animación). */
.gic-team-anim--up .gic-team__card:not(:hover):not(.is-revealed) .gic-team__reveal,
.gic-team-anim--down .gic-team__card:not(:hover):not(.is-revealed) .gic-team__reveal {
	pointer-events: none;
}

.gic-team__rname {
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: 19px;
	line-height: 1.25;
	color: var(--gic-green);
	margin: 0 0 4px;
}
.gic-team__rrole { font-family: var(--gic-sans); font-size: 14px; line-height: 1.4; color: #325242; margin: 0 0 14px; }
.gic-team__rule { display: block; height: 1px; background: rgba(22, 61, 42, .28); margin: 0 0 16px; flex: 0 0 auto; }
.gic-team__bio {
	font-family: var(--gic-sans);
	font-size: 14px;
	line-height: 1.55;
	color: #2c3d34;
	margin: 0;
}
/* Recorte opcional de la bio a N líneas (control «Máximo de líneas»). */
.gic-team__bio {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: var(--gic-team-bio-lines, 99);
	line-clamp: var(--gic-team-bio-lines, 99);
	overflow: hidden;
}

/* Datos y contacto dentro del panel. */
.gic-team__meta {
	list-style: none;
	margin: 14px 0 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 8px;
	font-family: var(--gic-sans);
	font-size: 13px;
	line-height: 1.4;
	color: #2c3d34;
}
.gic-team__meta li { display: flex; align-items: flex-start; gap: 8px; }
.gic-team__meta svg,
.gic-team__meta i,
.gic-team__metaico {
	width: 16px;
	height: 16px;
	flex: 0 0 16px;
	color: var(--gic-green);
	font-size: 14px;
	line-height: 1;
	margin-top: 2px;
}
.gic-team__meta a { color: inherit; text-decoration: none; word-break: break-word; }
.gic-team__meta a:hover { text-decoration: underline; }

/* Correo y teléfono: etiqueta en negrita encima, dato subrayado debajo.
   El bloque se pega abajo (margin-top:auto), como en el diseño: bio arriba,
   hueco en medio, contacto y «Ver Perfil» al pie. */
.gic-team__contact {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin-top: auto;
	padding-top: 18px;
	flex: 0 0 auto;
}
.gic-team__crow { display: flex; flex-direction: column; gap: 3px; }
.gic-team__clabel {
	font-family: var(--gic-sans);
	font-size: 13px;
	font-weight: 700;
	line-height: 1.3;
	color: var(--gic-green);
}
.gic-team__cval {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	font-family: var(--gic-sans);
	font-size: 13px;
	line-height: 1.35;
	color: #2C3D34;
	text-decoration: none;
	word-break: break-word;
}
.gic-team__cval span { text-decoration: underline; }
.gic-team__cval svg { width: 15px; height: 15px; flex: 0 0 auto; color: var(--gic-green); }
.gic-team__cval:hover span { color: var(--gic-green); }

/* Cuando NO hay bloque de contacto, el enlace de perfil es el que se pega
   abajo; si lo hay, va justo debajo de él, sin doble empujón. */
.gic-team__contact + .gic-team__profile { margin-top: 0; padding-top: 12px; }

.gic-team__profile {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	margin-top: auto;
	padding-top: 16px;
	font-family: var(--gic-sans);
	font-size: 15px;
	font-weight: 500;
	color: var(--gic-green);
	text-decoration: none;
	flex: 0 0 auto;
}
.gic-team__ptext { text-decoration: underline; }
.gic-team__profile:hover .gic-team__ptext { color: #0A5B2E; }

/* Icono del enlace: por defecto CHAPA verde con el glifo en blanco (diseño). */
.gic-team__pico {
	--gic-team-pico: 20px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: var(--gic-team-pico);
	height: var(--gic-team-pico);
	flex: 0 0 auto;
	line-height: 1;
}
.gic-team__pico svg,
.gic-team__pico img,
.gic-team__pico i {
	width: 68%;
	height: 68%;
	font-size: calc(var(--gic-team-pico) * .58);
}
.gic-team-pico--chip .gic-team__pico {
	background: var(--gic-green);
	color: var(--gic-white);
	border-radius: 4px;
}
.gic-team-pico--chip .gic-team__pico svg { width: 82%; height: 82%; }
.gic-team-pico--plain .gic-team__pico { color: var(--gic-green); }
.gic-team-pico--plain .gic-team__pico svg { width: 100%; height: 100%; }

/* En pantallas táctiles el panel se abre al tocar: se avisa con un cursor
   de "pulsable" y se evita que el navegador seleccione texto al tocar. */
.gic-team-wrap--tap .gic-team__card { cursor: pointer; -webkit-tap-highlight-color: transparent; }
.gic-team-wrap--tap .gic-team__reveal { cursor: auto; }

/* ---------- Tiles de categorías ---------- */

.gic-tiles {
	display: grid;
	grid-template-columns: repeat(var(--gic-cols, 6), minmax(0, 1fr));
	gap: 16px;
	width: 100%;
}
.gic-tile {
	display: flex;
	align-items: center;
	gap: 14px;
	border: 1px solid var(--gic-line);
	border-radius: var(--gic-radius-btn);
	background: var(--gic-white);
	padding: 20px;
	text-decoration: none;
	cursor: pointer;
	transition: border-color .3s var(--gic-ease), box-shadow .3s var(--gic-ease), transform .3s var(--gic-ease);
}
.gic-tile:hover { border-color: var(--gic-accent); box-shadow: 0 14px 30px -16px rgba(22, 61, 42, .16); transform: translateY(-2px); }
.gic-tile__icon {
	flex: 0 0 auto;
	width: 40px; height: 40px;
	border-radius: 50%;
	background: var(--gic-chip);
	color: var(--gic-green);
	display: flex;
	align-items: center;
	justify-content: center;
}
.gic-tile__icon svg { width: 20px; height: 20px; }
.gic-tile__name { display: block; font-family: var(--gic-sans); font-size: 15px; font-weight: 700; color: var(--gic-green); margin: 0 0 2px; }
.gic-tile__count { display: block; font-family: var(--gic-sans); font-size: 13px; color: var(--gic-muted); margin: 0; }

/* ---------- Formularios (Elementor Pro Form skin GICA) ---------- */

.gic-form .elementor-field-group .elementor-field {
	font-family: var(--gic-sans);
	border-radius: var(--gic-radius-btn);
	border: 1px solid var(--gic-line);
	background: var(--gic-white);
	color: var(--gic-ink);
	font-size: 15px;
	padding: 14px 16px;
	transition: border-color .3s var(--gic-ease);
}
.gic-form .elementor-field-group .elementor-field:focus { border-color: var(--gic-accent); box-shadow: none; outline: none; }
.gic-form .elementor-field-label { font-family: var(--gic-sans); font-size: 13.5px; font-weight: 600; color: var(--gic-green); }
.elementor-widget.gic-form .elementor-button {
	font-family: var(--gic-sans);
	font-weight: 700;
	border-radius: var(--gic-radius-pill);
	background: var(--gic-green) !important;
	color: var(--gic-mint) !important;
	padding: 16px 30px;
	transition: background .3s var(--gic-ease), color .3s var(--gic-ease);
}
.elementor-widget.gic-form .elementor-button:hover { background: #0F2C1D !important; color: var(--gic-white) !important; }

/* ==================================================================
   Formulario de Contacto sobre la tarjeta verde
   Frame «10 Contacto • Desktop»: tarjeta #163D2A de 690 × 751 con radio 24 y
   44 de relleno; campos menta de 44 de alto con radio 8, etiquetas blancas de
   18 y el botón amarillo de siempre.
   Todo esto son valores de fábrica: el widget Formulario de Elementor Pro
   trae sus propios controles de Estilo y siempre puede más que estas reglas.
   ================================================================== */
.gic-form--dark .elementor-field-group .elementor-field,
.gic-form--dark .elementor-field-group .elementor-field-textual {
	background: var(--gic-mint);
	border: none;
	border-radius: 8px;
	color: var(--gic-green);
	font-family: var(--gic-sans);
	font-size: 18px;
	line-height: 1.4;
	min-height: 44px;
	padding: 9px 13px;
	box-shadow: none;
	transition: box-shadow .25s var(--gic-ease);
}
.gic-form--dark .elementor-field-group textarea.elementor-field {
	height: 181px;
	min-height: 181px;
	resize: vertical;
}
.gic-form--dark .elementor-field-group .elementor-field::placeholder { color: #656560; opacity: 1; }
.gic-form--dark .elementor-field-group .elementor-field:focus {
	outline: none;
	box-shadow: 0 0 0 2px var(--gic-accent);
}
.gic-form--dark .elementor-field-group .elementor-field-label {
	font-family: var(--gic-sans);
	font-size: 18px;
	font-weight: 400;
	line-height: 1.4;
	color: var(--gic-white);
	padding-bottom: 11px;
}
/* La casilla de aceptación: cuadrado blanco de 19, sin relleno, con su texto
   al lado (el kit de los temas suele pintarlas redondas y con fondo). */
/* El Figma deja algo más de aire antes de la casilla y del botón que entre
   filas de campos. */
.gic-form--dark .elementor-field-type-acceptance { margin-top: 5px; }
.gic-form--dark .e-form__buttons { margin-top: 21px; }
.gic-form--dark .elementor-field-type-acceptance .elementor-field-option {
	display: flex;
	align-items: center;
	gap: 7px;
}
.gic-form--dark .elementor-field-type-acceptance input[type="checkbox"] {
	appearance: none;
	-webkit-appearance: none;
	flex: 0 0 auto;
	width: 19px;
	height: 19px;
	margin: 0;
	border: 1.5px solid var(--gic-white);
	border-radius: 3px;
	background: transparent;
	cursor: pointer;
}
.gic-form--dark .elementor-field-type-acceptance input[type="checkbox"]:checked {
	background: var(--gic-yellow);
	border-color: var(--gic-yellow);
}
.gic-form--dark .elementor-field-type-acceptance label {
	font-family: var(--gic-sans);
	font-size: 16px;
	line-height: 1.4;
	color: var(--gic-white);
	margin: 0;
	cursor: pointer;
}
.gic-form--dark .elementor-field-type-acceptance a { color: var(--gic-yellow); }
/* Botón: el mismo amarillo con chapa verde del resto del sitio. */
.elementor-widget.gic-form--dark .elementor-button {
	/* Reset a fondo: los temas pintan TODOS los <button> (borde, sombra,
	   min-height, mayúsculas…) y el botón del formulario es uno de ellos. */
	appearance: none;
	-webkit-appearance: none;
	box-sizing: border-box;
	border: none !important;
	box-shadow: none !important;
	text-transform: none !important;
	letter-spacing: normal !important;
	min-height: 0 !important;
	min-width: 0 !important;
	height: auto !important;
	font-family: var(--gic-sans) !important;
	font-size: 18px;
	font-weight: 400;
	line-height: 1.4 !important;
	border-radius: var(--gic-radius-btn) !important;
	background: var(--gic-yellow) !important;
	color: var(--gic-green) !important;
	padding: 16px 23px !important;
	min-height: 56px;
	transition: background .3s var(--gic-ease), color .3s var(--gic-ease);
}
.elementor-widget.gic-form--dark .elementor-button:hover { background: var(--gic-white) !important; color: var(--gic-green) !important; }
/* El texto va dentro de un <span>: los temas también lo alcanzan con su
   tracking y sus mayúsculas, así que se resetea aquí. */
.elementor-widget.gic-form--dark .elementor-button .elementor-button-text,
.elementor-widget.gic-form--dark .elementor-button .elementor-button-content-wrapper {
	font-family: var(--gic-sans) !important;
	letter-spacing: normal !important;
	text-transform: none !important;
	line-height: 1.4 !important;
}
/* La flecha en chapa, igual que en los botones GICA. */
.elementor-widget.gic-form--dark .elementor-button svg,
.elementor-widget.gic-form--dark .elementor-button i {
	width: 24px;
	height: 24px;
	padding: 6px;
	box-sizing: border-box;
	border-radius: 6px;
	background: #003E00;
	color: var(--gic-yellow);
	margin-left: 15px;
}
/* La tarjeta verde que envuelve al formulario. */
.gic-form-card { box-sizing: border-box; }

/* ---------- Ficha del proyecto (tabla de especificaciones) ----------
   Medido en «6 Plantilla interna proyectos • Desktop» (1440 px): filas de 68,
   hairline de 1 px #D9D9D9 arriba y debajo, etiqueta 18/700 en #009900 y valor
   18 px alineado a la derecha. Todo con control en Elementor. */

.gic-pdetails { width: 100%; margin: 0; }
.gic-pdetails .gic-pdetails__row {
	display: flex;
	flex-direction: row;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	margin: 0;
	padding: 21px 0;
	border: 0;
	border-bottom: 1px solid #D9D9D9;
}
/* La línea de arriba solo cuando el control «Línea encima de la primera fila»
   está encendido; así se puede encajar la ficha justo bajo otro bloque. */
.gic-pdetails--top .gic-pdetails__row:first-child { border-top: 1px solid #D9D9D9; }
.gic-pdetails .gic-pdetails__label {
	flex: 0 1 auto;
	margin: 0;
	font-family: var(--gic-sans);
	font-size: 18px;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: normal;
	text-transform: none;
	color: var(--gic-accent);
}
.gic-pdetails .gic-pdetails__val {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	align-items: center;
	justify-content: flex-end;
	margin: 0;
	font-family: var(--gic-sans);
	font-size: 18px;
	font-weight: 400;
	line-height: 1.4;
	letter-spacing: normal;
	text-transform: none;
	color: var(--gic-ink);
	text-align: right;
	overflow-wrap: break-word;
}
.gic-pdetails .gic-pdetails__chips { flex-wrap: wrap; gap: 8px; }
.gic-pdetails .gic-chip {
	display: inline-flex;
	align-items: center;
	font-family: var(--gic-sans);
	font-size: 15px;
	font-weight: 500;
	line-height: 1.2;
	white-space: nowrap;
	padding: 7px 14px;
	border-radius: 8px;
	background: var(--gic-chip);
	color: var(--gic-green);
}

/* ---------- Galería del proyecto ---------- */

.gic-pgallery { width: 100%; }
.gic-pgallery .gic-pgallery__title {
	font-family: var(--gic-display);
	font-weight: 700;
	color: var(--gic-green);
	font-size: clamp(34px, 4.2vw, 60px);
	line-height: 1.15;
	letter-spacing: normal;
	text-transform: none;
	text-align: center;
	margin: 0 0 80px;
	padding: 0;
	overflow-wrap: break-word;
}
/* El carrusel de la galería no recorta por los lados: así las flechas pueden
   montarse sobre el borde de las fotos sin quedar cortadas. Las medidas son las
   del Figma y todas tienen su control en Elementor. */
.gic-pgallery__carousel {
	overflow: visible;
	--gic-gap: 32px;
	--gic-arrow-btn: 56px;
	/* Por defecto las flechas van DENTRO: fuera solo caben cuando la ventana
	   deja aire suficiente a los lados del contenido (1280 + las dos flechas),
	   y salirse sin sitio provocaría scroll horizontal. */
	--gic-arrow-offset: 12px;
	--gic-dot: 8px;
}
@media (min-width: 1380px) {
	/* Aquí ya hay aire: las flechas se montan sobre el borde, como el Figma. */
	.gic-pgallery__carousel { --gic-arrow-offset: -28px; }
}
/* Flechas montadas SOBRE el borde de las fotos: el nav se estira hacia fuera
   con `left/right` negativos (un padding no admite valores negativos), así el
   centro de cada botón cae justo en el borde, como el Figma. */
.gic-pgallery__carousel.gic-carousel--arrows-edges .gic-carousel__nav {
	padding: 0 !important;
	left: var(--gic-arrow-offset, -28px);
	right: var(--gic-arrow-offset, -28px);
}
.gic-pgallery__link { display: block; line-height: 0; }
.gic-pgallery .gic-pgallery__img {
	width: 100%;
	max-width: 100%;
	height: auto;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	border-radius: var(--gic-radius-card);
	border: 0;
	display: block;
	transition: transform .5s var(--gic-ease);
}
.gic-pgallery__slide { overflow: hidden; border-radius: var(--gic-radius-card); }
.gic-pgallery .gic-dots { margin-top: 58px; justify-content: center; }
/* En la galería el punto activo va VERDE (en el carrusel de proyectos, amarillo). */
.gic-pgallery .gic-dots button.is-active { background: var(--gic-accent); }

/* Pie de foto (widget Imagen de Elementor con leyenda) al estilo GICA: una
   barrita verde a la izquierda y el texto en gris. */
.gic-figcaption figcaption,
.gic-figcaption .widget-image-caption {
	margin: 18px 0 0;
	padding: 2px 0 2px 14px;
	border-left: 2px solid var(--gic-accent);
	font-family: var(--gic-sans);
	font-size: 16px;
	line-height: 1.5;
	color: var(--gic-muted);
	text-align: left;
}

/* ---------- Single Proyecto ---------- */

/* El hero del single es una foto a sangre MÁS BAJA que la de las internas de
   servicio (658 px en el Figma, frente a los 596 + texto de aquéllas), con las
   migas de pan encima, en blanco. */
.gic-single-hero { position: relative; width: 100%; }
.gic-single-hero img {
	width: 100%;
	height: var(--gic-single-hero-h, 658px);
	object-fit: cover;
	display: block;
	border-radius: 0;
}
.gic-single-hero__crumbs {
	position: absolute;
	top: var(--gic-single-crumbs-top, 38px);
	left: 0;
	right: 0;
	z-index: 2;
	pointer-events: none;
}
.gic-single-hero__crumbs .gic-crumbs { pointer-events: auto; }
/* Sobre la foto, las migas van en blanco y con una sombra suave para que se
   lean pase lo que pase debajo. */
.gic-single-hero__crumbs .gic-crumbs,
.gic-single-hero__crumbs .gic-crumbs a,
.gic-single-hero__crumbs .gic-crumbs span,
.gic-single-hero__crumbs .gic-crumbs i {
	color: var(--gic-white);
	text-shadow: 0 1px 10px rgba(0, 0, 0, .45);
}
.gic-single-hero__crumbs .gic-crumbs a:first-child,
.gic-single-hero__crumbs .gic-crumbs span[aria-current] { color: var(--gic-white); }

/* Cabecera del single: titular, resumen y el H2 de la descripción. */
.gic-single-title .elementor-heading-title {
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: clamp(30px, 2.6vw, 38px);
	line-height: 1.12;
	letter-spacing: normal;
	color: var(--gic-green);
	margin: 0;
	overflow-wrap: break-word;
}
.gic-single-lead,
.gic-single-lead p {
	font-family: var(--gic-sans);
	font-size: 18px;
	line-height: 27px;
	color: var(--gic-ink);
	margin: 0;
}
.gic-single-h3 .elementor-heading-title {
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: clamp(26px, 2.4vw, 32px);
	line-height: 1.2;
	color: var(--gic-green);
	margin: 0;
}
/* Cuerpo de la descripción: párrafos, listas y fotos del contenido. */
.gic-single-body,
.gic-single-body p,
.gic-single-body li {
	font-family: var(--gic-sans);
	font-size: 18px;
	line-height: 30px;
	color: var(--gic-ink);
}
.gic-single-body p { margin: 0 0 22px; }
.gic-single-body ul,
.gic-single-body ol { margin: 0 0 22px; padding-left: 24px; }
.gic-single-body li { margin: 0 0 6px; }
.gic-single-body h2,
.gic-single-body h3,
.gic-single-body h4 {
	font-family: var(--gic-display);
	font-weight: 700;
	color: var(--gic-green);
	margin: 34px 0 16px;
}
.gic-single-body img { max-width: 100%; height: auto; border-radius: var(--gic-radius-card); }

.gic-back {
	display: inline-block;
	font-family: var(--gic-sans);
	font-size: 14px;
	font-weight: 600;
	color: var(--gic-muted);
	text-decoration: none;
	transition: color .3s var(--gic-ease);
}
.gic-back:hover { color: var(--gic-accent); }

/* Single Post: chips de categoría, meta y compartir. */
.gic-post-tags .elementor-post-info__terms-list-item,
.gic-post-tags .elementor-post-info__item {
	display: inline-flex;
	align-items: center;
	background: #B7F5B7;
	color: #325242;
	font-family: var(--gic-sans);
	font-size: 15px;
	font-weight: 600;
	padding: 5px 12px;
	border-radius: 8px;
	margin: 0 6px 0 0;
}
.gic-post-tags .elementor-inline-items { list-style: none; margin: 0; padding: 0; }
.gic-post-meta .elementor-icon-list-items,
.gic-post-meta .elementor-inline-items { color: var(--gic-muted); font-family: var(--gic-sans); font-size: 15px; }
.gic-post-share { display: inline-flex; align-items: center; gap: 8px; }
.gic-post-share a {
	display: inline-flex; align-items: center; justify-content: center;
	width: 38px; height: 38px; border-radius: 50%;
	border: 1px solid var(--gic-line); color: var(--gic-green);
	transition: background .3s var(--gic-ease), color .3s var(--gic-ease), border-color .3s var(--gic-ease);
}
.gic-post-share a:hover { background: var(--gic-green); color: var(--gic-mint); border-color: var(--gic-green); }
.gic-post-share svg { width: 17px; height: 17px; }


/* ---------- Responsive ---------- */

@media (max-width: 1024px) {
	.gic-scards { grid-template-columns: repeat(min(var(--gic-cols, 3), 2), minmax(0, 1fr)); }
	.gic-grid__items { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.gic-cert__items { grid-template-columns: repeat(min(var(--gic-cols, 3), 2), minmax(0, 1fr)); }
	.gic-tiles { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	/* Defaults por breakpoint. Los controles de Elementor los sobreescriben. */
	.gic-carousel { --gic-slides: 2; --gic-peek: 32px; --gic-gap: 20px; }
	.gic-hero .gic-hero__title { font-size: 48px; line-height: 1.18; }
	.gic-hero .gic-hero__intro { font-size: 18px; }
	.gic-hero__content { padding: 44px 40px; gap: 28px; }
	.gic-hero__media, .gic-hero__media .gic-slide { min-height: 500px; height: 500px; }
	.gic-cta__content { padding: 44px 40px; }
	.gic-cta .gic-cta__title { font-size: 34px; }
	.gic-blog .gic-post { min-height: 320px; }
	.gic-blog .gic-post__title { font-size: 25px; line-height: 33px; }
	.gic-blog .gic-post__excerpt { font-size: 16px; line-height: 22px; }
	/* En tablet la banda se apila: si no, la columna de texto se estrecha
	   tanto que el titular se parte en cinco líneas. */
	.gic-bfeat { flex-direction: column; gap: 40px; --gic-bfeat-textw: 100%; }
	.gic-bfeat .gic-bfeat__body { flex: 0 0 100%; max-width: 100%; }
	.gic-bfeat .gic-bfeat__img { width: 100%; aspect-ratio: 3 / 2; }
	.gic-bfeat .gic-bfeat__title { font-size: 30px; line-height: 38px; margin-bottom: 26px; }
	.gic-bfeat .gic-bfeat__meta { margin-bottom: 28px; }
	.gic-bfeat .gic-bfeat__more { margin-top: 48px; }
	.gic-proj .gic-proj__title { font-size: 26px; }
	.gic-cert .gic-cert__title { font-size: 27px; }
	.gic-cert { --gic-badge-w: 84px; --gic-badge-h: 124px; }
	.gic-tst { --gic-tst-arrow: 48px; }
	.gic-tst .gic-tst__slide { padding: 52px 44px 50px; }
	/* Tablet: la rejilla de logos baja a tres columnas. */
	.gic-logos__carousel { --gic-slides: 3; }
	.gic-logos .gic-logos__title { font-size: 25px; margin-bottom: 44px; }
	.gic-logos .gic-logos__card { height: 150px; }
	.gic-logos .gic-logos__img { max-width: 150px; max-height: 100px; }
	.gic-h2 .elementor-heading-title { font-size: clamp(32px, 5vw, 44px); }
	.gic-marquee__item { width: 160px; height: 116px; }
	/* Categorías: en tablet la lista y el panel se apilan (el control
	   «Apilar en una sola columna» viene ya en «Sí» para tablet y móvil;
	   esto es la red de seguridad si el CSS del widget aún no se regeneró). */
	.gic-cats .gic-cats__grid { grid-template-columns: minmax(0, 1fr); }
	.gic-cats .gic-cats__title { font-size: clamp(32px, 5vw, 46px); margin-bottom: 44px; }
	.gic-cats .gic-cats__num { font-size: 22px; line-height: 28px; }
	.gic-cats .gic-cats__label { font-size: 19px; line-height: 28px; }
	.gic-cats .gic-cats__text { font-size: 18px; line-height: 25px; }
	.gic-cats .gic-cats__panels { align-self: start; }
}

/* ============================================================
   MÓVIL — capa completa (≤767 px)
   Todo lo de aquí son valores POR DEFECTO: cualquier control
   responsive de Elementor los sobreescribe sin tocar código.
   ============================================================ */
@media (max-width: 767px) {

	/* --- Blindaje anti-scroll horizontal --- */
	.gic-carousel,
	.gic-carousel__viewport,
	.gic-marquee,
	.gic-marquee__viewport,
	.gic-tst,
	.gic-tst__viewport { max-width: 100%; }

	/* --- Botones --- */
	.gic-btn { font-size: 16px; padding: 14px 18px; gap: 12px; }
	.gic-btn.gic-btn--yellow svg,
	.gic-btn.gic-btn--outline svg,
	.gic-btn.gic-btn--ghost svg,
	.gic-btn.gic-btn--link svg { width: 22px; height: 22px; }
	/* Apilados a ancho completo: dos botones iguales, sin escalones raros. */
	.gic-hero__actions--block { flex-direction: column; align-items: stretch; }
	.gic-hero__actions--block .gic-btn { width: 100%; min-width: 0; white-space: normal; }

	/* --- Hero --- */
	/* Una sola columna: título arriba, texto y botones debajo. */
	.gic-hero__content { grid-template-columns: 1fr; padding: 32px 20px 40px; gap: 22px; }
	.gic-hero__col { min-width: 0; }
	.gic-hero .gic-hero__title { font-size: 32px; line-height: 1.15; }
	.gic-hero__intro { font-size: 16px; margin-bottom: 22px; }
	/* La foto arriba y la banda verde debajo, igual que en el ordenador. La
	   foto es cuadrada para que escale sola con el ancho del teléfono. Los
	   controles «Dónde va la foto» y «Proporción de la foto» pueden más que
	   esto. */
	.gic-hero { flex-direction: column; }
	.gic-hero__media,
	.gic-hero__media .gic-slide { min-height: 0; height: auto; aspect-ratio: 1 / 1; }
	.gic-hero__watermark { width: min(240px, 62%); }
	/* Flechas: 44 px es el mínimo cómodo para el dedo. */
	.gic-hero__media .gic-slider__nav { width: 44px !important; height: 44px !important; }
	.gic-hero__media .gic-slider__nav svg { width: 16px; height: 16px; }
	.gic-hero__media .gic-slider__nav--prev { left: 14px; }
	.gic-hero__media .gic-slider__nav--next { right: 14px; }
	.gic-hero__media .gic-dots { bottom: 16px; }

	/* --- Equipo: los tres campos del buscador a ancho completo --- */
	.gic-team-search,
	.gic-team-area,
	.gic-team-sort { flex: 1 1 100%; width: 100%; min-width: 0; }
	.gic-team__count { margin-top: -12px; }

	/* --- Carrusel de proyectos --- */
	.gic-carousel { --gic-slides: 1; --gic-gap: 14px; --gic-peek: 0px; --gic-arrow-offset: 8px; --gic-arrow-btn: 48px; }
	/* Flechas de móvil DEBAJO, en su propia línea: los puntos a la izquierda y
	   las dos flechas juntas a la derecha, como el Figma de móvil. Sobre una
	   tarjeta única, unas flechas superpuestas taparían la foto y el texto.
	   Es una fila de verdad (flex), no posicionamiento absoluto: así funciona
	   igual con puntos o sin ellos, y no se monta sobre la tarjeta. */
	.gic-carousel--m-arrows-below {
		display: flex;
		flex-wrap: wrap;
		align-items: center;
		position: relative;
	}
	.gic-carousel--m-arrows-below .gic-carousel__viewport {
		flex: 0 0 100%;
		width: 100%;
		order: 1;
	}
	.gic-carousel--m-arrows-below .gic-dots {
		order: 2;
		flex: 0 1 auto;
		margin: var(--gic-nav-gap, 28px) 0 0;
		justify-content: flex-start;
		min-height: var(--gic-arrow-btn, 48px);
		align-items: center;
	}
	.gic-carousel--m-arrows-below .gic-carousel__nav {
		order: 3;
		flex: 0 0 auto;
		position: static !important;
		top: auto !important;
		bottom: auto !important;
		left: auto !important;
		right: auto !important;
		width: auto !important;
		transform: none !important;
		/* `margin-left:auto` empuja las flechas a la derecha aunque los puntos
		   estén apagados. */
		margin: var(--gic-nav-gap, 28px) 0 0 auto !important;
		padding: 0 !important;
		justify-content: flex-end !important;
		pointer-events: auto;
	}
	.gic-carousel--m-arrows-below .gic-carousel__btn { pointer-events: auto; }
	.gic-carousel--m-arrows-below .gic-carousel__nav { gap: 16px; }
	/* A los lados, superpuestas (opción alternativa en móvil). */
	.gic-carousel--m-arrows-edges .gic-carousel__nav {
		position: absolute !important;
		top: 50% !important;
		left: 0 !important;
		right: 0 !important;
		bottom: auto !important;
		transform: translateY(-50%) !important;
		margin: 0 !important;
		padding: 0 8px !important;
		justify-content: space-between !important;
		pointer-events: none;
	}
	.gic-carousel--m-arrows-edges .gic-carousel__btn { pointer-events: auto; }
	.gic-carousel--arrows-outside .gic-carousel__nav { left: 8px; right: 8px; }

	/* --- RED DE SEGURIDAD del carrusel de proyectos en el teléfono ---
	   En una página guardada hace tiempo, los ajustes de escritorio (flechas a
	   los lados, esconder la flecha deshabilitada…) se colaban en el móvil y
	   dejaban una flecha suelta ENCIMA de la foto y los puntos centrados. Aquí
	   se fuerza el diseño: la tarjeta arriba, y debajo, en su propia línea, los
	   puntos a la izquierda y las dos flechas a la derecha. Se apaga eligiendo
	   «A los lados, sobre la tarjeta» en el widget. */
	.gic-carousel--proj:not(.gic-carousel--m-arrows-edges) {
		display: flex !important;
		flex-wrap: wrap !important;
		align-items: center !important;
		position: relative;
	}
	.gic-carousel--proj:not(.gic-carousel--m-arrows-edges) .gic-carousel__viewport {
		flex: 0 0 100% !important;
		width: 100% !important;
		order: 1 !important;
	}
	.gic-carousel--proj:not(.gic-carousel--m-arrows-edges) .gic-dots {
		order: 2 !important;
		flex: 0 1 auto !important;
		position: static !important;
		margin: var(--gic-nav-gap, 28px) auto 0 0 !important;
		justify-content: flex-start !important;
		min-height: var(--gic-arrow-btn, 48px);
		align-items: center;
	}
	.gic-carousel--proj:not(.gic-carousel--m-arrows-edges) .gic-carousel__nav {
		order: 3 !important;
		flex: 0 0 auto !important;
		position: static !important;
		inset: auto !important;
		width: auto !important;
		transform: none !important;
		margin: var(--gic-nav-gap, 28px) 0 0 auto !important;
		padding: 0 !important;
		/* Sin !important a propósito (v1.34.0): la separación entre las dos
		   flechas es cosa del diseño, no de la estructura, y así el control
		   «Separación entre las dos flechas» del widget puede cambiarla.
		   De fábrica, los 16 px de la lámina de móvil. */
		gap: 16px;
		justify-content: flex-end !important;
		pointer-events: auto !important;
	}
	/* Las dos flechas siempre a la vista: en la primera tarjeta la de «anterior»
	   va atenuada, pero se ve (si desaparece, la fila queda coja). */
	.gic-carousel--proj .gic-carousel__btn { pointer-events: auto; }
	.gic-carousel--proj.gic-carousel--hide-disabled .gic-carousel__btn[disabled] {
		/* Se ve igual que en el resto del sitio (el control «Opacidad de las
		   flechas apagadas» sigue mandando): lo único que se anula es que
		   desaparezca, porque dejaría la fila coja. */
		visibility: visible !important;
	}

	/* El botón que baja debajo del carrusel, siempre a ancho completo. */
	.gic-carousel__btn-slot { display: block !important; width: 100% !important; text-align: left !important; }
	.gic-carousel__btn-slot > * { width: 100% !important; max-width: none !important; margin-left: 0 !important; margin-right: 0 !important; text-align: left !important; }
	.gic-carousel__btn-slot .gic-btn,
	.gic-carousel__btn-slot .elementor-button {
		width: 100% !important;
		max-width: none !important;
		justify-content: center !important;
	}
	/* (el tamaño del botón lo fija --gic-arrow-btn, arriba) */
	.gic-proj__inner { padding: 20px; }
	.gic-proj .gic-proj__title { font-size: 24px; }
	.gic-proj__subtitle { font-size: 15px; }
	.gic-proj .gic-chip { font-size: 14px; padding: 6px 12px; }
	.gic-proj__chips { gap: 8px; }
	.gic-proj__foot { margin-top: 16px; }

	/* --- Tarjetas de servicio --- */
	.gic-scards { gap: 16px; }
	.gic-scard__body { padding: 20px; }
	.gic-scard .gic-scard__title { font-size: 24px; }

	/* --- Single de proyecto: hero, cabecera, ficha y galería ---
	   Medido en la lámina de móvil (375 px): foto del hero cuadrada, titular de
	   31/38, ficha con filas de 62 (etiqueta 15, valor 14, chips de 25 de alto),
	   título de galería de 46 y dos fotos a la vista con asomo. */
	.gic-single-hero img { height: auto; aspect-ratio: 1 / 1; }
	.gic-single-hero__crumbs { top: 28px; }
	/* «Inicio / Nuestros proyectos / Nombre proyecto» es un rastro largo: a 15 px
	   se parte en dos líneas sobre la foto. A 13 entra en una, como el diseño. */
	.gic-single-hero__crumbs .gic-crumbs { font-size: 13px; gap: 6px; }
	.gic-single-title .elementor-heading-title { font-size: 31px; line-height: 1.22; }
	.gic-single-lead, .gic-single-lead p { font-size: 16px; line-height: 24px; }
	.gic-single-h3 .elementor-heading-title { font-size: 24px; line-height: 1.33; }
	.gic-single-body, .gic-single-body p, .gic-single-body li { font-size: 16px; line-height: 26px; }
	.gic-pdetails .gic-pdetails__row { padding: 18px 0; gap: 10px; }
	.gic-pdetails .gic-pdetails__label { font-size: 15px; }
	.gic-pdetails .gic-pdetails__val { font-size: 14px; }
	.gic-pdetails .gic-chip { font-size: 13px; padding: 5px 12px; }
	.gic-pgallery .gic-pgallery__title { font-size: 46px; line-height: 1.26; margin-bottom: 48px; }
	/* Dos fotos a la vista con un asomo de la tercera, y sin flechas: en el
	   teléfono el diseño deja solo los puntos. Los tres valores tienen control
	   en Elementor y el control siempre manda sobre esto. */
	/* Dos clases a propósito: el bloque de ≤479 vuelve a poner --gic-peek a 0
	   para el resto de carruseles y, con una sola clase, ganaría a esto. */
	.gic-pgallery .gic-pgallery__carousel { --gic-slides: 2; --gic-gap: 25px; --gic-peek: 12px; }
	.gic-pgallery .gic-pgallery__carousel .gic-carousel__nav { display: none; }
	.gic-pgallery .gic-dots { margin-top: 30px; }
	.gic-figcaption figcaption,
	.gic-figcaption .widget-image-caption { font-size: 15px; margin-top: 14px; }

	/* --- Categorías (medido sobre «4 Plantilla interna de servicio Diseño ·
	   Mobile», 375 px: fila de 55, número en negrita, hueco de 11 al nombre,
	   flecha de 18 visible en TODAS las categorías y lista cerrada al cargar) --- */
	.gic-cats .gic-cats__grid { grid-template-columns: minmax(0, 1fr); row-gap: 32px; }
	.gic-cats .gic-cats__title { font-size: 45px; line-height: 1.1; margin-bottom: 30px; }
	.gic-cats .gic-cats__item { padding: 15px 0; }
	.gic-cats .gic-cats__num { min-width: 0; font-size: 19px; font-weight: 700; line-height: 24px; }
	.gic-cats .gic-cats__btn { gap: 11px; }
	/* Flecha más pequeña y pegada al borde: en el Figma de móvil deja 27 px
	   libres desde el nombre, no los 46 de escritorio. */
	.gic-cats .gic-cats__grid { --gic-cats-arrow-w: 18px; }
	.gic-cats .gic-cats__btn { padding-right: calc(var(--gic-cats-arrow-w, 18px) + 6px); }
	.gic-cats .gic-cats__label { font-size: 18px; line-height: 24px; }
	/* En escritorio cada nombre reserva el ancho que ocupará en negrita, para que
	   la fila no cambie de alto al pasar el cursor. En el teléfono eso sobra —no
	   hay cursor— y además obligaba a partir en dos líneas nombres que en el
	   Figma van en una. Se quita la reserva y se gana ese ancho. */
	.gic-cats .gic-cats__label::before { content: none; }
	/* La flecha se ve en todas: en el teléfono la lista es un índice. */
	.gic-cats .gic-cats__item:not(.is-active) .gic-cats__arrow { opacity: 1; color: var(--gic-white); }
	.gic-cats .gic-cats__panel { gap: 20px; }
	.gic-cats .gic-cats__text { font-size: 16px; line-height: 24px; }

	/* --- Hero interior: titular grande, entradilla corta y botón a ancho
	   completo, como el diseño de móvil. --- */
	.gic-page-hero__text { padding: 28px 20px 64px; }
	.gic-page-hero .gic-page-hero__title .elementor-heading-title { font-size: 47px; }
	.gic-page-hero .gic-page-hero__intro,
	.gic-page-hero .gic-page-hero__intro p { font-size: 15px; line-height: 21px; }
	/* Red de seguridad: el botón del hero interior a ancho completo aunque el
	   widget no tenga su clase o Elementor aún no haya regenerado su CSS. Va a
	   propósito con poca especificidad (0,2,0): el control «Ancho del botón»
	   escribe con {{WRAPPER}} (0,3,0) y por tanto siempre puede más. */
	.gic-page-hero .gic-btn { width: 100%; justify-content: center; }

	/* --- Testimonios --- */
	/* En el teléfono las flechas van DEBAJO y a la DERECHA, con los puntos a la
	   izquierda (lámina de móvil). Sobre el borde taparían el texto. */
	.gic-tst { --gic-tst-arrow: 48px; }
	.gic-tst .gic-tst__slide {
		padding: 50px 20px 47px;
		border-radius: 24px;
	}
	.gic-tst .gic-tst__quote { font-size: 16.5px; line-height: 22px; }
	/* El cargo baja a su propia línea; el rombo se queda con el nombre. */
	.gic-tst .gic-tst__meta { flex-wrap: wrap; column-gap: 15px; row-gap: 6px; font-size: 16.5px; margin-bottom: 24px; }
	.gic-tst .gic-tst__meta > span:not(.gic-tst__sep) { flex: 0 0 100%; }
	.gic-tst .gic-tst__company { font-size: 16.5px; }
	.gic-tst--m-below { --gic-tst-inset: 0px; }
	.gic-tst--m-below .gic-tst__stage { position: static; }
	.gic-tst--m-below .gic-slider__nav { top: auto; bottom: 0; transform: none; }
	/* Las dos flechas juntas a la derecha. */
	.gic-tst--m-below .gic-slider__nav--prev {
		left: auto;
		right: calc(var(--gic-tst-nav-inset, 0px) + var(--gic-tst-arrow, 48px) + var(--gic-tst-arrow-gap, 16px));
	}
	.gic-tst--m-below .gic-slider__nav--next { right: var(--gic-tst-nav-inset, 0px); left: auto; }
	.gic-tst--m-below .gic-dots {
		margin-top: var(--gic-tst-nav-gap, 30px);
		min-height: var(--gic-tst-arrow, 48px);
		align-items: center;
		justify-content: flex-start;
		padding-left: var(--gic-tst-nav-inset, 0px);
	}
	/* Sin puntos, las flechas de abajo necesitan que el bloque reserve su alto. */
	.gic-tst--m-below.gic-tst--m-nodots { padding-bottom: calc(var(--gic-tst-arrow, 48px) + var(--gic-tst-nav-gap, 32px)); }
	.gic-tst--m-hidden .gic-slider__nav { display: none; }

	/* --- Logos de clientes --- */
	.gic-logos__carousel {
		--gic-slides: 2;
		--gic-gap: 8px;
		--gic-peek: 0px;
		--gic-arrow-btn: 48px;
		--gic-nav-gap: 28px;
	}
	.gic-logos { --gic-logos-ico: 24px; }
	.gic-logos .gic-logos__title { font-size: 21.5px; line-height: 31px; margin-bottom: 31px; }
	.gic-logos .gic-logos__ico { margin-right: 11px; }
	.gic-logos .gic-logos__col { gap: 8px; }
	.gic-logos .gic-logos__card { height: 84px; padding: 12px 34px; border-radius: 8px; }
	.gic-logos .gic-logos__img { max-width: 96px; max-height: 60px; }
	.gic-logos .gic-dots { margin-top: var(--gic-nav-gap, 28px); gap: 6px; }
	.gic-logos .gic-carousel__nav { gap: 16px; }

	/* --- Logos de clientes --- */
	.gic-logos__carousel {
		--gic-slides: 2;
		--gic-gap: 16px;
		--gic-peek: 14px;
		--gic-arrow-btn: 44px;
	}
	.gic-logos { --gic-logos-ico: 20px; }
	.gic-logos .gic-logos__title { font-size: 22px; gap: 12px; margin-bottom: 32px; }
	.gic-logos .gic-logos__col { gap: 16px; }
	.gic-logos .gic-logos__card { height: 120px; padding: 12px 16px; border-radius: 8px; }
	.gic-logos .gic-logos__img { max-width: 120px; max-height: 80px; }
	.gic-logos .gic-dots { margin-top: 24px; }

	/* --- CTA --- */
	/* column-reverse = la FOTO queda arriba y el texto debajo (lo pedido). */
	.gic-cta { flex-direction: column-reverse; }
	.gic-cta--m-img-bottom { flex-direction: column; }
	/* `flex: 1 1 380px` en una columna se convierte en ALTO mínimo: con
	   `justify-content: center` dejaba un hueco verde enorme arriba y abajo.
	   En el teléfono el bloque mide lo que mide su contenido. */
	.gic-cta__content { padding: 32px 20px; flex: 0 0 auto; }
	/* Botón a ancho completo, como el diseño. */
	.gic-cta__action { width: 100%; }
	.gic-cta__action .gic-btn { width: 100%; justify-content: center; }
	.gic-cta .gic-cta__title { font-size: 28px; line-height: 1.2; }
	.gic-cta__text { font-size: 16px; }
	.gic-cta__media { min-height: 250px; flex: 0 0 auto; max-width: 100%; width: 100%; }
	/* Con la foto arriba, el redondeo va arriba. */
	.gic-cta--rounded .gic-cta__media { border-radius: 15px 15px 0 0; }
	.gic-cta--m-img-bottom.gic-cta--rounded .gic-cta__media { border-radius: 0 0 15px 15px; }

	/* --- Certificaciones --- */
	.gic-cert__items { grid-template-columns: 1fr; gap: 16px; }
	/* El sello SIGUE arriba a la derecha (como el PDF); solo se hace más pequeño.
	   Con la clase gic-cert--m-stack se apila debajo del texto. */
	.gic-cert { --gic-badge-w: 76px; --gic-badge-h: 112px; }
	.gic-cert__card { padding: 20px; gap: 16px; }
	.gic-cert .gic-cert__title { font-size: 24px; }
	.gic-cert__code { font-size: 19px; }
	.gic-cert--m-stack .gic-cert__card { flex-direction: column; align-items: flex-start; }
	.gic-cert--m-stack .gic-cert__card--badge-left { flex-direction: column-reverse; }

	/* Slider de certificaciones: la MISMA rejilla se convierte en pista de
	   desplazamiento. Nada de duplicar el marcado: solo cambia el display. */
	.gic-cert--m-slider .gic-cert__items {
		display: flex;
		grid-template-columns: none;
		gap: var(--gic-gap, 14px);
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		scrollbar-width: none;
		-ms-overflow-style: none;
		scroll-behavior: smooth;
		padding-bottom: 4px;
	}
	.gic-cert--m-slider .gic-cert__items::-webkit-scrollbar { display: none; }
	.gic-cert--m-slider .gic-cert__card {
		flex: 0 0 calc(100% - var(--gic-peek, 34px));
		max-width: calc(100% - var(--gic-peek, 34px));
		scroll-snap-align: start;
	}
	/* Las tarjetas del slider igualan altura para que las flechas no salten. */
	.gic-cert--m-slider .gic-cert__items { align-items: stretch; }

	/* --- Blog --- */
	/* --- Blog --- */
	.gic-blog { grid-template-columns: 1fr; column-gap: 20px; row-gap: 20px; }
	.gic-blog .gic-post { flex-direction: column; min-height: 0; padding: 14px 16px 18px; gap: 16px; }
	.gic-blog .gic-post__img { flex: 0 0 auto; max-width: 100%; width: 100%; aspect-ratio: 16 / 9; align-self: stretch; }
	.gic-blog .gic-post--img-ratio .gic-post__img { aspect-ratio: 16 / 9; }
	.gic-blog .gic-post__title { font-size: 23px; line-height: 30px; margin-bottom: 14px; }
	.gic-blog .gic-post__excerpt { font-size: 15px; line-height: 22px; }
	.gic-blog .gic-post__meta { margin-bottom: 16px; }
	.gic-blogwrap .gic-grid__bar { margin-bottom: 32px; }
	.gic-blogwrap .gic-loadmore-wrap { margin-top: 32px; }
	.gic-bfeat { flex-direction: column; gap: 28px; --gic-bfeat-textw: 100%; }
	.gic-bfeat .gic-bfeat__body { flex: 0 0 100%; max-width: 100%; }
	.gic-bfeat .gic-bfeat__title { font-size: 25px; line-height: 31px; margin-bottom: 18px; }
	.gic-bfeat .gic-bfeat__meta { margin-bottom: 22px; }
	.gic-bfeat .gic-bfeat__excerpt { font-size: 16px; line-height: 24px; }
	.gic-bfeat .gic-bfeat__more { margin-top: 26px; }
	.gic-bfeat .gic-bfeat__img { width: 100%; aspect-ratio: 3 / 2; }
	/* La fila de pastillas se desliza: la última se desvanece contra el borde
	   para que se note que hay más categorías. Cuando caben todas, el
	   degradado cae sobre espacio vacío y no se ve. */
	.gic-blogwrap .gic-filters {
		-webkit-mask-image: linear-gradient(to right, #000 calc(100% - 34px), transparent 100%);
		mask-image: linear-gradient(to right, #000 calc(100% - 34px), transparent 100%);
	}
	/* Y un pelín de aire a la derecha para que la última pastilla no quede
	   pegada al borde de la pantalla al llegar al final del deslizamiento. */
	.gic-blogwrap .gic-filters > li:last-child { padding-right: 20px; }

	/* --- Marquesina --- */
	.gic-marquee { flex-direction: column; align-items: stretch; gap: 20px; }
	.gic-marquee__label { align-self: flex-start; }
	.gic-marquee__item { width: var(--gic-logo-w, 200px); height: var(--gic-logo-h, 136px); padding: 14px 20px; }
	.gic-marquee__item img { max-height: var(--gic-logo-img, 68px); }
	.gic-marquee__track { gap: 16px; padding-right: 16px; }

	/* --- Otros grids --- */
	.gic-scards { grid-template-columns: 1fr; }
	/* --- Proyectos: una tarjeta por fila, etiqueta encima de los chips y los
	   chips en una sola línea que se desliza (medido en el Figma de móvil:
	   tarjeta 335 × 474, hueco 30, chip de 40 de alto con 20 de separación). --- */
	.gic-grid__items { grid-template-columns: 1fr; gap: 30px; }
	.gic-grid__bar { --gic-bar-dir: column; --gic-bar-align: flex-start; --gic-bar-gap: 30px; }
	.gic-grid .gic-filters { --gic-filters-wrap: nowrap; --gic-chip-gap: 20px; }
	.gic-grid .gic-proj { --gic-ratio: 384 / 543; }
	.gic-tiles { grid-template-columns: 1fr 1fr; }
	.gic-tabs { grid-template-columns: 1fr; gap: 24px; }
	.gic-tabs__nav { flex-direction: row; flex-wrap: nowrap; overflow-x: auto; gap: 8px; padding-bottom: 4px; }
	.gic-tabs__tab { flex: 0 0 auto; padding: 14px 18px; }
	.gic-page-hero__text { padding: 28px 20px 64px; }
	.gic-page-hero .gic-page-hero__title .elementor-heading-title { font-size: 47px; }
	/* En el diseño de móvil la foto del hero es cuadrada (375 × 375): se ata al
	   ancho con aspect-ratio para que escale con el teléfono. */
	.gic-page-hero__media { min-height: 0; aspect-ratio: 1 / 1; }
	.gic-tst__head { margin-bottom: 22px; }

	/* --- Eyebrow («◆ PORTAFOLIO») --- */
	/* En las láminas de móvil el eyebrow es 14 px y su rombo 12 (en escritorio,
	   16 y 14). Los widgets GICA lo cambian además desde sus controles. */
	.gic-eyebrow,
	.elementor-widget.gic-eyebrow-wrap .elementor-heading-title { font-size: 14px; }
	.gic-eyebrow::before,
	.elementor-widget.gic-eyebrow-wrap .elementor-heading-title::before {
		width: var(--gic-ico-size, 12px);
		height: var(--gic-ico-size, 12px);
	}

	/* --- Cabeceras de sección (widget Heading dentro de gicb_section_head) --- */
	/* Los titulares de sección en el teléfono van casi tan grandes como el H1
	   del hero: medido en las láminas de móvil («Todos los proyectos» y
	   «Proyectos relacionados»), 45 px con interlínea de 53. */
	.gic-h2 .elementor-heading-title { font-size: clamp(38px, 12vw, 45px); line-height: 1.18; }
	.gic-section-intro, .gic-section-intro p { font-size: 17px; line-height: 24px; }
	.gic-section-intro { margin-top: 16px; }
	.gic-clients-title .elementor-heading-title { font-size: 22px; }
	.gic-clients-title .elementor-heading-title::before { width: var(--gic-ico-size, 20px); height: var(--gic-ico-size, 20px); margin-right: var(--gic-ico-gap, 12px); }

	/* --- Tarjetas de valores (El ADN) --- */
	.gic-feat--cards { gap: 14px; }
	.gic-feat--cards .gic-feat__item { padding: 24px 22px 26px; }
	.gic-feat--cards .gic-feat__title { font-size: 19px; }
	.gic-feat__icon { margin-bottom: 14px; }

	/* --- Cuerpo de texto --- */
	.gic-scard__text,
	.gic-post__excerpt,
	.gic-cert__text,
	.gic-feat__text,
	.gic-footer-desc,
	.gic-footer-links a { font-size: 16px; }
}

/* ============================================================
   CABECERA EN EL TELÉFONO  (≤ 767 px)
   REGLA DE ORO: el LOGO a la IZQUIERDA y el BOTÓN DE MENÚ a la
   DERECHA, en la misma línea, pase lo que pase.

   Por qué hace falta forzarlo
   ---------------------------
   La cabecera vive en la base de datos (Theme Builder). Ahí quedaron
   grabados unos anchos y unas alineaciones de ESCRITORIO —el menú al
   centro, la columna del logo al 60 %— que en el teléfono dejaban la
   hamburguesa a media pantalla o debajo del logo. Estas reglas mandan
   sobre lo que haya guardado.

   Cómo está montado (por si hay que tocarlo)
   -----------------------------------------
   1. Se localiza la FILA de la cabecera: cualquier contenedor que lleve
      dentro el botón de menú y tenga más de un hijo. No se depende de la
      profundidad del anidamiento, que cambia al editar a mano.
   2. Al bloque que contiene el LOGO se le da `order: -1` y `margin-right:
      auto`; al que contiene el MENÚ, `order: 9` y `margin-left: auto`.
      Con `order` da igual en qué orden estén en el HTML: el logo siempre
      sale primero y el menú siempre último.
   3. El panel desplegable se ancla al ancho completo de la cabecera.

   Interruptores (Avanzado → Clases CSS del contenedor de la cabecera)
   ------------------------------------------------------------------
     gic-header--m-invert   menú a la izquierda y logo a la derecha
     gic-header--m-tablet   aplica lo mismo también en tablet (≤ 1024 px)
     gic-header--m-native   desactiva TODO esto y manda Elementor

   Variables (Avanzado → CSS personalizado, o el kit del sitio)
   -----------------------------------------------------------
     --gic-mtoggle-size        lado del botón cuadrado          (44px)
     --gic-mtoggle-radius      redondeo del botón               (10px)
     --gic-mtoggle-icon        tamaño del icono                 (22px)
     --gic-mtoggle-bg          fondo del botón                  (verde)
     --gic-mtoggle-bg-hover    fondo al tocarlo / abierto       (verde claro)
     --gic-mtoggle-color       color del icono                  (amarillo)
     --gic-header-m-gap        aire entre logo y menú           (12px)
     --gic-header-m-pad        margen lateral de la cabecera    (16px)
   ============================================================ */
@media (max-width: 767px) {

	/* --- 1. La fila de la cabecera --- */
	.gic-header:not(.gic-header--m-native) .e-con:has(.elementor-menu-toggle):has(> :nth-child(2)),
	.gic-header:not(.gic-header--m-native) .e-con-inner:has(.elementor-menu-toggle):has(> :nth-child(2)),
	.gic-header:not(.gic-header--m-native) .elementor-container:has(.elementor-menu-toggle):has(> :nth-child(2)),
	.gic-header:not(.gic-header--m-native) .elementor-widget-wrap:has(.elementor-menu-toggle):has(> :nth-child(2)) {
		display: flex !important;
		flex-direction: row !important;
		flex-wrap: nowrap !important;
		align-items: center !important;
		justify-content: space-between !important;
		gap: var(--gic-header-m-gap, 12px) !important;
	}

	/* --- 2a. El bloque del MENÚ: a la derecha, ceñido a su ancho --- */
	.gic-header:not(.gic-header--m-native) .e-con:has(> .elementor-widget-nav-menu),
	.gic-header:not(.gic-header--m-native) .e-con:has(> .e-con-inner > .elementor-widget-nav-menu),
	.gic-header:not(.gic-header--m-native) .elementor-column:has(> .elementor-widget-wrap > .elementor-widget-nav-menu),
	.gic-header:not(.gic-header--m-native) > .e-con-inner > .elementor-widget-nav-menu,
	.gic-header:not(.gic-header--m-native) .e-con > .elementor-widget-nav-menu {
		order: 9 !important;
		width: auto !important;
		max-width: none !important;
		flex: 0 0 auto !important;
		margin-left: auto !important;
		margin-right: 0 !important;
		align-items: flex-end !important;
		justify-content: center !important;
	}

	/* --- 2b. El bloque del LOGO: a la izquierda y con el espacio sobrante ---
	   Se contempla el logo como HTML propio (.gic-logo), como widget Imagen y
	   como «Logotipo del sitio» de Elementor Pro, que es lo que suele usarse
	   si la cabecera se rehace a mano. */
	.gic-header:not(.gic-header--m-native) .e-con:has(> .elementor-widget-html .gic-logo),
	.gic-header:not(.gic-header--m-native) .e-con:has(> .e-con-inner > .elementor-widget-html .gic-logo),
	.gic-header:not(.gic-header--m-native) .e-con:has(> .elementor-widget-image),
	.gic-header:not(.gic-header--m-native) .e-con:has(> .e-con-inner > .elementor-widget-image),
	.gic-header:not(.gic-header--m-native) .e-con:has(> .elementor-widget-theme-site-logo),
	.gic-header:not(.gic-header--m-native) .elementor-column:has(.gic-logo),
	.gic-header:not(.gic-header--m-native) .e-con > .elementor-widget-html:has(.gic-logo) {
		order: -1 !important;
		flex: 1 1 auto !important;
		min-width: 0 !important;
		margin-right: auto !important;
		margin-left: 0 !important;
		align-items: flex-start !important;
		text-align: left !important;
	}

	/* Red de seguridad: cualquier otro bloque de la fila que no sea el menú
	   (una columna suelta, un botón oculto…) se alinea a la izquierda, para que
	   el contenedor no lo centre. */
	.gic-header:not(.gic-header--m-native) .e-con:not(:has(.elementor-menu-toggle)),
	.gic-header:not(.gic-header--m-native) .e-con-inner:not(:has(.elementor-menu-toggle)),
	.gic-header:not(.gic-header--m-native) .elementor-column:not(:has(.elementor-menu-toggle)),
	.gic-header:not(.gic-header--m-native) .elementor-widget-wrap:not(:has(.elementor-menu-toggle)) {
		align-items: flex-start !important;
	}

	/* --- 2c. Invertido: menú a la izquierda, logo a la derecha --- */
	.gic-header.gic-header--m-invert .e-con:has(> .elementor-widget-nav-menu),
	.gic-header.gic-header--m-invert .e-con:has(> .e-con-inner > .elementor-widget-nav-menu),
	.gic-header.gic-header--m-invert .elementor-column:has(> .elementor-widget-wrap > .elementor-widget-nav-menu) {
		order: -1 !important;
		margin-left: 0 !important;
		margin-right: var(--gic-header-m-gap, 12px) !important;
		align-items: flex-start !important;
	}
	.gic-header.gic-header--m-invert .e-con:has(> .elementor-widget-html .gic-logo),
	.gic-header.gic-header--m-invert .e-con:has(> .e-con-inner > .elementor-widget-html .gic-logo),
	.gic-header.gic-header--m-invert .elementor-column:has(.gic-logo) {
		order: 9 !important;
		margin-left: auto !important;
		margin-right: 0 !important;
		align-items: flex-end !important;
		text-align: right !important;
	}

	/* --- 3. El widget del menú no estira --- */
	.gic-header:not(.gic-header--m-native) .elementor-widget-nav-menu { width: auto; }
	.gic-header:not(.gic-header--m-native) .elementor-widget-nav-menu > .elementor-widget-container,
	.gic-header:not(.gic-header--m-native) .elementor-nav-menu--dropdown-mobile > .elementor-widget-container { width: auto; }
	/* El propio botón, pegado al borde derecho de su bloque. */
	.gic-header:not(.gic-header--m-native) .elementor-menu-toggle { margin-left: auto; margin-right: 0; }
	.gic-header.gic-header--m-invert .elementor-menu-toggle { margin-left: 0; margin-right: auto; }

	/* --- 4. Medidas de la cabecera y del logo --- */
	.gic-header { padding-inline: var(--gic-header-m-pad, 16px) !important; }
	.gic-header .gic-logo { justify-content: flex-start; }
	.gic-header .gic-logo img { height: 34px; width: auto; }
	.gic-header .gic-logo__text { font-size: 18px; }

	/* --- 5. El botón de menú: cuadrado de 44 px, verde de marca, icono
	   amarillo. 44 px es la medida cómoda para el dedo. --- */
	.gic-header .elementor-menu-toggle {
		width: var(--gic-mtoggle-size, 44px);
		height: var(--gic-mtoggle-size, 44px);
		min-width: var(--gic-mtoggle-size, 44px);
		padding: 0 !important;
		display: inline-flex !important;
		align-items: center;
		justify-content: center;
		background-color: var(--gic-mtoggle-bg, var(--gic-green)) !important;
		color: var(--gic-mtoggle-color, var(--gic-yellow)) !important;
		border: none !important;
		border-radius: var(--gic-mtoggle-radius, 10px) !important;
		box-shadow: none;
		transition: background-color .3s var(--gic-ease), color .3s var(--gic-ease);
	}
	.gic-header .elementor-menu-toggle i,
	.gic-header .elementor-menu-toggle svg,
	.gic-header .elementor-menu-toggle .e-font-icon-svg {
		color: var(--gic-mtoggle-color, var(--gic-yellow)) !important;
		fill: var(--gic-mtoggle-color, var(--gic-yellow)) !important;
		font-size: var(--gic-mtoggle-icon, 22px);
		width: var(--gic-mtoggle-icon, 22px);
		height: var(--gic-mtoggle-icon, 22px);
	}
	.gic-header .elementor-menu-toggle:hover,
	.gic-header .elementor-menu-toggle.elementor-active {
		background-color: var(--gic-mtoggle-bg-hover, var(--gic-accent)) !important;
	}
	.gic-header .elementor-menu-toggle:focus-visible {
		outline: 2px solid var(--gic-mtoggle-bg-hover, var(--gic-accent));
		outline-offset: 2px;
	}

	/* --- 6. El panel desplegable, al ancho completo de la cabecera ---
	   Si no, hereda el ancho de la columna del menú (que ahora es estrecha) y
	   el desplegable sale como una tira de 44 px pegada a la derecha. */
	.gic-header:not(.gic-header--m-native) { position: relative; }
	/* Elementor da `position: relative` a TODOS los contenedores. Si se deja,
	   el desplegable se ancla a la columna del menú —que ahora mide lo que el
	   botón— y sale como una tira de 44 px. Dentro de la cabecera, y solo en
	   el teléfono, los contenedores intermedios pasan a `static` para que el
	   ancla sea la cabecera entera. */
	.gic-header:not(.gic-header--m-native) .e-con,
	.gic-header:not(.gic-header--m-native) .e-con-inner,
	.gic-header:not(.gic-header--m-native) .elementor-container,
	.gic-header:not(.gic-header--m-native) .elementor-column,
	.gic-header:not(.gic-header--m-native) .elementor-widget-wrap,
	.gic-header:not(.gic-header--m-native) .elementor-widget-nav-menu,
	.gic-header:not(.gic-header--m-native) .elementor-widget-nav-menu > .elementor-widget-container { position: static !important; }
	.gic-header:not(.gic-header--m-native) .elementor-nav-menu--dropdown.elementor-nav-menu__container {
		position: absolute !important;
		top: 100% !important;
		left: 0 !important;
		right: 0 !important;
		width: 100% !important;
		max-width: 100% !important;
		margin: 0 !important;
	}
	.gic-header .elementor-nav-menu--dropdown {
		background-color: var(--gic-white) !important;
		border-radius: 0 0 14px 14px;
		box-shadow: 0 18px 40px -22px rgba(22, 61, 42, .45);
		overflow: hidden;
	}
	.gic-header .elementor-nav-menu--dropdown a {
		font-family: var(--gic-sans);
		font-weight: 600;
		color: var(--gic-green) !important;
		padding: 14px 20px !important;
	}
	.gic-header .elementor-nav-menu--dropdown a:hover,
	.gic-header .elementor-nav-menu--dropdown a.elementor-item-active {
		background-color: var(--gic-mint) !important;
		color: var(--gic-accent) !important;
	}
}

/* Misma cabecera de teléfono también en tablet, con la clase
   `gic-header--m-tablet`. Útil si el menú se convierte en hamburguesa desde
   1024 px: sin esto, entre 768 y 1024 manda lo que haya guardado. */
@media (min-width: 768px) and (max-width: 1024px) {
	.gic-header.gic-header--m-tablet .e-con:has(.elementor-menu-toggle):has(> :nth-child(2)),
	.gic-header.gic-header--m-tablet .e-con-inner:has(.elementor-menu-toggle):has(> :nth-child(2)),
	.gic-header.gic-header--m-tablet .elementor-container:has(.elementor-menu-toggle):has(> :nth-child(2)) {
		display: flex !important;
		flex-direction: row !important;
		flex-wrap: nowrap !important;
		align-items: center !important;
		justify-content: space-between !important;
	}
	.gic-header.gic-header--m-tablet .e-con:has(> .elementor-widget-nav-menu),
	.gic-header.gic-header--m-tablet .e-con:has(> .e-con-inner > .elementor-widget-nav-menu) {
		order: 9 !important;
		width: auto !important;
		flex: 0 0 auto !important;
		margin-left: auto !important;
		align-items: flex-end !important;
	}
	.gic-header.gic-header--m-tablet .e-con:has(> .elementor-widget-html .gic-logo),
	.gic-header.gic-header--m-tablet .e-con:has(> .e-con-inner > .elementor-widget-html .gic-logo) {
		order: -1 !important;
		flex: 1 1 auto !important;
		margin-right: auto !important;
		align-items: flex-start !important;
	}
}

/* ============================================================
   MÓVIL PEQUEÑO (≤479 px) — iPhone SE y similares
   ============================================================ */
@media (max-width: 479px) {
	/* El titular de sección lo fija el clamp del bloque de ≤767: escala solo
	   de 38 px (en 320) a 45 px (de 375 en adelante), como el Figma de móvil. */
	.gic-clients-title .elementor-heading-title { font-size: 20px; }
	.gic-hero__media,
	.gic-hero__media .gic-slide { min-height: 0; height: auto; aspect-ratio: 1 / 1; }
	.gic-hero__watermark { width: min(200px, 62%); }
	/* Sin asomo: en el Figma de móvil la tarjeta va a ancho completo y la
	   señal de «esto se desliza» son los puntos y las flechas de abajo. */
	.gic-carousel { --gic-peek: 0px; }
	.gic-proj .gic-proj__title { font-size: 22px; }
	.gic-tst { --gic-tst-arrow: 40px; }
	.gic-tst__slide { padding-block: 24px; padding-inline: max(22px, calc(var(--gic-tst-arrow, 40px) / 2 + 8px)); }
	.gic-tst .gic-tst__quote { font-size: 18px; }
	.gic-cta__content { padding: 28px 16px; }
	.gic-cta .gic-cta__title { font-size: 25px; }
	.gic-cert__card { padding: 16px; }
	.gic-cert { --gic-badge-w: 64px; --gic-badge-h: 94px; }
	.gic-cert .gic-cert__title { font-size: 22px; }
	.gic-blog .gic-post { padding: 12px 14px 16px; }
	.gic-blog .gic-post__title { font-size: 21px; line-height: 28px; }
	.gic-marquee__item { width: var(--gic-logo-w, 178px); height: var(--gic-logo-h, 122px); }
	.gic-tiles { grid-template-columns: 1fr; }

	/* Equipo en teléfonos estrechos. Elementor solo tiene un breakpoint "Móvil"
	   (≤767 px), así que este tramo se gobierna con el control «Columnas en
	   teléfonos estrechos» (variable --gic-cols-narrow, 1 por defecto).
	   El !important es necesario para ganarle al CSS por-elemento que Elementor
	   emite para el breakpoint móvil, que también alcanza a los 320 px. */
	.gic-team {
		grid-template-columns: repeat(var(--gic-cols-narrow, 1), minmax(0, 1fr)) !important;
	}
	.gic-team__reveal { padding: 18px; }
	.gic-team__rname { font-size: 18px; }
	.gic-team__bio { font-size: 13px; }
}

@media (prefers-reduced-motion: reduce) {
	.gic-marquee__track { animation: none; }
	.gic-dots button { transition: none; }
	.gic-slider__track { transition: none; }
	.gic-proj__img, .gic-team__img, .gic-post__img img, .gic-scard__img img,
	.gic-btn, .gic-scard, .gic-proj, .gic-post, .gic-tile, .gic-cert__card, .gic-marquee__item { transition: none; }
	.gic-tabs__panel.is-active { animation: none; }
	.gic-tabs__tab { transition: none; }
	.gic-cats .gic-cats__panel.is-active { animation: none; }
	.gic-cats .gic-cats__btn, .gic-cats .gic-cats__arrow,
	.gic-cats .gic-cats__label, .gic-cats .gic-cats__num,
	.gic-cats .gic-cats__item { transition: none; }
}
.gic-cert__card--flat { background-image: none; }
.gic-cert__badge img { transform-origin: center top; }
.gic-eyebrow--has-ico::before { display: none !important; content: none !important; }

/* ==================================================================
   Logos de clientes (widget GICA · Logos de clientes)
   Frame «7 Clientes y testimonios»: título centrado con su icono y, debajo,
   una rejilla de 4 columnas × 3 filas de tarjetas con borde menta que se
   desliza. Cada diapositiva del carrusel es una COLUMNA, así que los puntos
   salen uno por columna, como el diseño.
   Todo lo que aquí se declara tiene su control en Elementor; esto son los
   valores de fábrica, medidos sobre el PDF a 1440.
   ================================================================== */
.gic-logos { width: 100%; }

/* Título: flex para que el icono quede centrado con el texto pase lo que pase
   con el interlineado, y para que «Alineación» funcione con justify-content. */
/* En bloque (no flex): así el icono fluye con el texto y, cuando el título se
   parte en dos líneas en el teléfono, se queda en la PRIMERA, como el Figma. */
.gic-logos .gic-logos__title {
	display: block;
	font-family: var(--gic-sans);
	font-size: 28px;
	font-weight: 700;
	line-height: 1.35;
	letter-spacing: normal;
	text-transform: none;
	color: var(--gic-green);
	margin: 0 0 49px;
	padding: 0;
	text-align: center;
	overflow-wrap: break-word;
}
.gic-logos .gic-logos__titletext { display: inline; }
.gic-logos .gic-logos__ico {
	display: inline-block;
	vertical-align: -4px;
	margin-right: 19px;
	line-height: 0;
	color: var(--gic-accent);
}
.gic-logos .gic-logos__ico svg {
	width: var(--gic-logos-ico, 25px);
	height: var(--gic-logos-ico, 25px);
	display: block;
	stroke-width: 1.6;
}

/* El carrusel no recorta por los lados: así las flechas pueden montarse sobre
   el borde de la rejilla sin quedar cortadas. */
.gic-logos__carousel {
	overflow: visible;
	--gic-gap: 24px;
	--gic-arrow-btn: 48px;
	--gic-dot: 9px;
	/* Fuera del borde solo cuando la ventana deja aire (1280 + las dos flechas).
	   max() es el tope de seguridad: por debajo de 1380 px nunca sale del
	   contenido, así que no aparece barra horizontal. */
	--gic-arrow-offset: max(6px, var(--gic-arrow-offset-wide, -28px));
}
@media (min-width: 1380px) {
	.gic-logos__carousel { --gic-arrow-offset: var(--gic-arrow-offset-wide, -28px); }
}
.gic-logos__carousel.gic-carousel--arrows-edges .gic-carousel__nav {
	padding: 0 !important;
	left: var(--gic-arrow-offset, -28px);
	right: var(--gic-arrow-offset, -28px);
}

/* Una diapositiva = una columna de la rejilla. */
.gic-logos .gic-logos__col {
	display: flex;
	flex-direction: column;
	gap: 24px;
}

/* Tarjeta del logo. Es <a> cuando lleva enlace, así que hay que desarmar el
   estilo de enlace del tema (y el de <button>, por si acaso). */
.gic-logos .gic-logos__card {
	display: flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	height: 179px;
	width: 100%;
	padding: 16px 24px;
	background: var(--gic-white);
	border: 2px solid var(--gic-mint);
	border-radius: 8px;
	text-decoration: none;
	box-shadow: none;
	transition: border-color .3s var(--gic-ease);
}
.gic-logos a.gic-logos__card:hover { border-color: var(--gic-accent); text-decoration: none; }
.gic-logos .gic-logos__img {
	display: block;
	width: auto;
	height: auto;
	max-width: 180px;
	max-height: 118px;
	object-fit: contain;
	filter: grayscale(1);
	transition: filter .3s var(--gic-ease);
}
.gic-logos .gic-dots { margin-top: 34px; justify-content: center; gap: 8px; }
.gic-logos .gic-dots button { background: #D9D9D9; }
.gic-logos .gic-dots button.is-active { background: var(--gic-accent); }

/* Migas de pan de la banda del blog: van sobre menta, así que en verde. */
.gic-blog-hero .gic-blog-hero__crumbs { margin-bottom: 10px; }
@media (max-width: 767px) {
	.gic-blog-hero .gic-blog-hero__crumbs { margin-bottom: 26px; }
}

/* ==================================================================
   Contacto — encabezado de la izquierda
   Frame «10 Contacto • Desktop»: H1 de 62/72, entradilla 20/30 y la línea en
   negrita 21/29. Todo con sus controles en el widget Título / Editor de texto.
   ================================================================== */
.gic-contact-h1 .elementor-heading-title {
	font-family: var(--gic-display);
	font-weight: 700;
	font-size: clamp(38px, 4.3vw, 61px);
	line-height: 1.16;
	letter-spacing: normal;
	color: var(--gic-green);
	margin: 0;
	overflow-wrap: break-word;
}
.gic-contact-lead,
.gic-contact-lead p {
	font-family: var(--gic-sans);
	font-size: 20px;
	font-weight: 400;
	line-height: 30px;
	color: var(--gic-ink);
	margin: 0;
}
.gic-contact-note,
.gic-contact-note p {
	font-family: var(--gic-sans);
	font-size: 21px;
	font-weight: 700;
	line-height: 29px;
	color: var(--gic-ink);
	margin: 0;
}
.gic-contact-note strong { font-weight: 700; }
/* «Ver en Google Maps» y «Contáctanos» quedan alineados abajo aunque una
   columna tenga una línea más de texto que la otra. */
.gic-infoblock { display: flex; flex-direction: column; }
/* El texto absorbe el alto sobrante, así «Ver en Google Maps» y «Contáctanos»
   quedan a la misma altura aunque una columna tenga una línea más. */
.gic-infoblock .gic-infoblock-text { flex: 1 1 auto; }

@media (max-width: 1024px) {
	/* Red de seguridad por si el árbol de la página aún no se ha regenerado:
	   en tablet el titular y el formulario van uno debajo del otro. */
	.gic-contact-h1 { max-width: 100%; }
	.gic-contact-h1 .elementor-heading-title { font-size: clamp(34px, 5vw, 48px); }
	.gic-contact-lead, .gic-contact-lead p { font-size: 18px; line-height: 27px; }
	.gic-contact-note, .gic-contact-note p { font-size: 19px; line-height: 27px; }
	.gic-infoblock-text, .gic-infoblock-text p { font-size: 17px; line-height: 25px; }
}
@media (max-width: 767px) {
	/* 40 y no 45: a 45 el titular se parte en CUATRO líneas y empuja el
	   formulario fuera de la pantalla; a 40 se parte en las mismas tres que en
	   escritorio y el formulario entra antes. */
	.gic-contact-h1 .elementor-heading-title { font-size: 40px; line-height: 47px; }
	.gic-contact-lead, .gic-contact-lead p { font-size: 16px; line-height: 24px; }
	.gic-contact-note, .gic-contact-note p { font-size: 17px; line-height: 25px; }
	.gic-infoblock-h .elementor-heading-title { font-size: 30px; line-height: 36px; }
	.gic-infoblock-text, .gic-infoblock-text p { font-size: 16px; line-height: 24px; }
	.elementor-widget.gic-infoblock-link { margin-top: 0; }
	/* El formulario en el teléfono: una sola columna. Sin esto, los márgenes
	   negativos que Elementor usa para separar columnas sacan el formulario
	   fuera de la pantalla y aparece barra horizontal. */
	.gic-form .elementor-form-fields-wrapper { margin-left: 0; margin-right: 0; }
	.gic-form .elementor-field-group {
		padding-left: 0;
		padding-right: 0;
		width: 100%;
		max-width: 100%;
	}
	/* El formulario en el teléfono: campos algo más bajos y botón a ancho completo. */
	.gic-form--dark .elementor-field-group .elementor-field,
	.gic-form--dark .elementor-field-group .elementor-field-textual { font-size: 16px; min-height: 46px; }
	.gic-form--dark .elementor-field-group .elementor-field-label { font-size: 16px; padding-bottom: 8px; }
	.gic-form--dark .elementor-field-group textarea.elementor-field { height: 150px; min-height: 150px; }
	/* Los campos, algo más altos: en el teléfono se tocan con el dedo. */
	.gic-form--dark .elementor-field-group .elementor-field,
	.gic-form--dark .elementor-field-group .elementor-field-textual { min-height: 48px; padding: 11px 14px; }
	/* La casilla también: 22 px de lado y su texto a 15 para que quepa en una línea. */
	.gic-form--dark .elementor-field-type-acceptance input[type="checkbox"] { width: 22px; height: 22px; }
	.gic-form--dark .elementor-field-type-acceptance label { font-size: 15px; }
	.gic-form--dark .elementor-field-type-acceptance { margin-top: 2px; }
	.gic-form--dark .e-form__buttons { margin-top: 14px; }
	.elementor-widget.gic-form--dark .elementor-button { width: 100%; justify-content: center; font-size: 17px; }
	.gic-contact-method .gic-contact-method__title { font-size: 26px; }
	.gic-contact-method .gic-contact-method__text { font-size: 16px; line-height: 24px; }
	.gic-contact-method .gic-contact-method__value { font-size: 16px; }
}

/* ==================================================================
   v1.34.0 — El Inicio en el teléfono, medido sobre la lámina
   ==================================================================
   Todo lo de aquí abajo son VALORES DE FÁBRICA con especificidad baja:
   cualquier control del widget (que escribe con `{{WRAPPER}}`) manda
   sobre ellos, así que el diseño sigue siendo editable en Elementor.
   Lo único con `!important` es lo que pelea contra una regla de
   Elementor o del tema, y en ese caso el control del widget también
   lleva `!important`, de modo que sigue ganando él.

   Medidas tomadas de la lámina de móvil (pantalla de 375 px):
     cabecera 63 · logo 129×35 · hamburguesa 40 a 16 del borde
     foto del slider 16:9 (211) · flechas 24 a 16 del borde
     puntos de 6 con 3 de aire · banda 32/20/40
     titular 40/44,5 en tres líneas · entradilla 16/24
     botones del hero 48 · botón «Ver todos» 56 a ancho completo
     carrusel: flechas 48 con 16 de aire, puntos de 10 con 6
     pie con 20 de aire a los lados
   ================================================================== */

/* --- La foto del slider vuelve a llenar su caja (fallo de fondo) ---
   Elementor sirve `.elementor img { height: auto }` en su propia hoja,
   que carga DESPUÉS que esta. Con la misma especificidad (0,1,1) ganaba
   él: la foto se quedaba con su alto natural, sobraba un trozo de caja
   y los puntos y las flechas caían sobre la banda verde. Subiendo a
   (0,2,1) vuelve a mandar el plugin —y los controles del widget siguen
   mandando sobre el plugin—. */
.elementor .gic-slide img:not(.gic-hero__watermark),
.gic-hero__media .gic-slide img:not(.gic-hero__watermark) { height: 100%; }

@media (max-width: 767px) {

	/* --- Cabecera: 63 px de alto, hamburguesa de 40 pegada al margen --- */
	/* Colores del botón de menú (v1.37.1): caja AMARILLA e icono VERDE, como
	   en las láminas y como el resto de botones de la marca. Antes iba al
	   revés. La «X» de cuando está abierto conserva el mismo aspecto, que es
	   lo que muestra la lámina del menú abierto.
	   Se puede volver a dejar al revés (o poner cualquier otro par) desde
	   Avanzado → CSS personalizado de la cabecera, con estas tres variables. */
	.gic-header {
		--gic-mtoggle-size: 40px;
		--gic-mtoggle-icon: 20px;
		--gic-mtoggle-bg: var(--gic-yellow);
		--gic-mtoggle-bg-hover: var(--gic-yellow);
		--gic-mtoggle-color: var(--gic-green);
	}
	/* Logo de 129×35 (la lámina). Esto mide el logo HTML que monta el plugin;
	   si la cabecera usa un widget de imagen de Elementor, manda su control
	   «Ancho», que la migración de la v1.34.0 deja en 129 px. Se puede cambiar
	   con --gic-logo-m-w desde Avanzado → CSS personalizado de la cabecera. */
	.gic-header .gic-logo__img { width: var(--gic-logo-m-w, 129px); height: auto; }

	/* --- Hero: la foto --- */
	/* 16:9 es la proporción de la lámina (211 px de alto a 375 de ancho).
	   El control «Proporción de la foto» del widget puede más que esto. */
	.gic-hero__media,
	.gic-hero__media .gic-slide { min-height: 0; height: auto; aspect-ratio: 16 / 9; }

	/* Flechas de 24 a 16 px del borde (la lámina). El mínimo cómodo para el
	   dedo se mantiene con un área táctil invisible, no agrandando la caja:
	   así se ve como el diseño y se toca como una app. */
	.gic-hero__media .gic-slider__nav { width: 24px !important; height: 24px !important; min-width: 24px !important; border-radius: 6px !important; }
	.gic-hero__media .gic-slider__nav svg { width: 12px; height: 12px; }
	.gic-hero__media .gic-slider__nav--prev { left: 16px; }
	.gic-hero__media .gic-slider__nav--next { right: 16px; }
	.gic-hero__media .gic-slider__nav::after {
		content: "";
		position: absolute;
		top: 50%;
		left: 50%;
		width: 44px;
		height: 44px;
		transform: translate(-50%, -50%);
	}

	/* Puntos de 6 px con 3 de aire, en su píldora, a 16 del borde inferior. */
	.gic-hero__media .gic-dots { bottom: 16px; gap: 3px; padding: 5px 7px; }
	.gic-hero__media .gic-dots button { width: 6px !important; height: 6px !important; }

	/* --- Hero: la banda verde --- */
	/* El titular de la lámina va a tres líneas («Ingeniería / que construye /
	   futuro»). A ancho completo el navegador lo parte en dos, así que la
	   medida del titular se limita con el control «Ancho máximo del titular»,
	   que trae 280 px de fábrica en el teléfono. */
	.gic-hero .gic-hero__title { font-size: 40px; line-height: 1.11em; letter-spacing: -0.32px; }
	.gic-hero__intro { font-size: 16px; line-height: 1.5em; margin-bottom: 22px; }

	/* --- Botones --- */
	/* 48 px de alto: 12 de relleno arriba y abajo + 24 de caja de flecha.
	   `min-height` es solo un suelo: deja intactos los controles de relleno
	   y asegura que el botón sin flecha mida lo mismo que el que la lleva. */
	/* 48 px exactos: 11 de relleno + 24 de caja de flecha + 1 de borde arriba
	   y abajo (todos los botones llevan borde, transparente en el amarillo,
	   para que el de contorno no baile). El `line-height`
	   iguala la línea del texto a la caja de la flecha (si no, el interlineado
	   del kit —1,6— deja el botón en 50) y `display:block` en el svg quita el
	   hueco que deja la línea base. Los dos los puede cambiar el control de
	   tipografía del botón. */
	.gic-btn { font-size: 16px; line-height: 24px; padding: 11px 18px; gap: 18px; min-height: 48px; }
	.gic-btn svg { display: block; }
	.gic-btn.gic-btn--yellow svg,
	.gic-btn.gic-btn--outline svg,
	.gic-btn.gic-btn--ghost svg,
	.gic-btn.gic-btn--link svg { width: 24px; height: 24px; }

	/* --- Carrusel de proyectos --- */
	/* El botón «Ver todos los proyectos» va a ancho completo y con 56 de alto.
	   Antes se quedaba a 243 px: `width:100%` se calculaba sobre la caja del
	   widget de Elementor, que sí encogía. Ahora se estira también esa caja. */
	.gic-carousel__btn-slot,
	.gic-carousel__btn-slot > .elementor-widget,
	.gic-carousel__btn-slot .elementor-widget-container { width: 100%; }
	.gic-carousel__btn-slot .gic-btn { width: 100%; justify-content: center; padding: 15px 18px; }

	/* Puntos del carrusel: 10 px con 6 de aire (la lámina). */
	.gic-carousel .gic-dots { gap: 6px; }

	/* --- Pie --- */
	/* El aire lateral del teléfono (20 px) NO se pone aquí: es el relleno del
	   propio contenedor del pie, que la migración de la v1.34.0 escribe como
	   ajuste de Elementor y el importador ya trae en las instalaciones nuevas.
	   Así se cambia desde Avanzado → Relleno con el móvil seleccionado, y no
	   se suma dos veces (era lo que dejaba el pie con 40 px de margen). */
	.gic-footer .gic-footer-links .elementor-icon-list-item { padding-left: 0; }
}

/* ==================================================================
   v1.34.1 — Menú lateral del teléfono y franja legal
   ==================================================================
   (A) EL MENÚ SALE POR LA IZQUIERDA
   Elementor abre el desplegable hacia abajo, empujando la página. Aquí el
   mismo panel pasa a ser un cajón anclado a la izquierda de la pantalla que
   entra deslizando. No se toca el widget de menú: se sigue usando su marcado
   y sus enlaces, y el botón de la hamburguesa sigue siendo el que abre y
   cierra (al abrirse se convierte en la «X», como ya hacía).

   Interruptores (Avanzado → Clases CSS del contenedor de la cabecera)
   ------------------------------------------------------------------
     gic-header--m-native     desactiva TODO esto y manda Elementor
     gic-header--m-drawer-r   el cajón entra por la DERECHA

   Variables (Avanzado → CSS personalizado de la cabecera, o el kit)
   -----------------------------------------------------------------
     --gic-drawer-w           ancho del cajón                  (100%)
     --gic-drawer-bg          fondo                            (blanco)
     --gic-drawer-speed       duración de la entrada           (.35s)
     --gic-drawer-top         aire hasta el primer enlace      (157px)
     --gic-drawer-x           margen lateral de los enlaces    (46px)
     --gic-drawer-item-h      alto de cada enlace              (61px)
     --gic-drawer-item-size   tamaño del texto                 (22px)
     --gic-drawer-line        color de la raya separadora      (#808080)
     --gic-drawer-cta-bottom  altura del botón «Contacto»      (59px)

   (B) LA FRANJA LEGAL
   Las tres políticas van en un solo párrafo separadas por « · ». En el
   teléfono pasan a una por línea, subrayadas y encima de los derechos de
   autor, con una raya fina arriba. El texto no se toca: el « · » lo envuelve
   gica.js en un `span` que aquí se esconde solo en el teléfono.
   ================================================================== */

@media (max-width: 767px) {

	/* ---------- (A) El cajón ---------- */
	.gic-header:not(.gic-header--m-native) .elementor-menu-toggle + .elementor-nav-menu--dropdown {
		position: fixed !important;
		inset: 0 auto 0 0 !important;
		width: var(--gic-drawer-w, 100%);
		max-width: 100%;
		height: 100%;
		/* Elementor anima con `max-height` y `scaleY`: se anulan los dos para
		   que mande el deslizamiento lateral. */
		max-height: none !important;
		margin: 0 !important;
		border-radius: 0;
		overflow-y: auto;
		overscroll-behavior: contain;
		-webkit-overflow-scrolling: touch;
		z-index: var(--gic-drawer-z, 9998);
		background: var(--gic-drawer-bg, var(--gic-white, #FFFFFF));
		padding: var(--gic-drawer-top, 157px) var(--gic-drawer-x, 46px) 32px;
		transform: translateX(-101%) !important;
		transform-origin: left center !important;
		transition: transform var(--gic-drawer-speed, .35s) var(--gic-ease, cubic-bezier(.4, 0, .2, 1));
		visibility: visible;
	}
	/* Abierto: el cajón entra hasta el borde. */
	.gic-header:not(.gic-header--m-native) .elementor-menu-toggle.elementor-active + .elementor-nav-menu--dropdown {
		transform: translateX(0) !important;
	}
	/* Variante: entrando por la derecha. */
	.gic-header--m-drawer-r .elementor-menu-toggle + .elementor-nav-menu--dropdown {
		inset: 0 0 0 auto !important;
		transform: translateX(101%) !important;
		transform-origin: right center !important;
	}
	.gic-header--m-drawer-r .elementor-menu-toggle.elementor-active + .elementor-nav-menu--dropdown {
		transform: translateX(0) !important;
	}
	/* La hamburguesa (y su «X») siempre por encima del cajón. */
	.gic-header:not(.gic-header--m-native) .elementor-menu-toggle {
		position: relative;
		z-index: var(--gic-drawer-z-toggle, 9999);
	}
	/* El fondo no se desplaza mientras el cajón está abierto. */
	html.gic-menu-open,
	html.gic-menu-open body { overflow: hidden; }

	/* Los enlaces: uno por línea, con su raya, como la lámina. */
	.gic-header:not(.gic-header--m-native) .elementor-nav-menu--dropdown .elementor-nav-menu { width: 100%; }
	.gic-header:not(.gic-header--m-native) .elementor-nav-menu--dropdown a.elementor-item {
		display: flex;
		align-items: center;
		min-height: var(--gic-drawer-item-h, 62px);
		padding: 0;
		font-size: var(--gic-drawer-item-size, 22px);
		line-height: 1.25;
		color: var(--gic-green);
		border-bottom: 1px solid var(--gic-drawer-line, #808080);
		background: transparent;
	}
	/* El último no lleva raya (en la lámina, «Blog» va suelto). */
	.gic-header:not(.gic-header--m-native) .elementor-nav-menu--dropdown li:last-child > a.elementor-item {
		border-bottom: 0;
	}

	/* El botón «Contacto» al pie del cajón. Es el MISMO botón de la cabecera
	   —el que está escondido en el teléfono—, así que se edita donde siempre y
	   no hay un segundo botón que mantener. */
	html.gic-menu-open .gic-header:not(.gic-header--m-native) .gic-header-cta,
	html.gic-menu-open .gic-header:not(.gic-header--m-native) .elementor-hidden-mobile:has(> .elementor-widget .gic-btn),
	html.gic-menu-open .gic-header:not(.gic-header--m-native) .elementor-hidden-mobile:has(> .gic-btn),
	.gic-header:not(.gic-header--m-native):has(.elementor-menu-toggle.elementor-active) .gic-header-cta,
	.gic-header:not(.gic-header--m-native):has(.elementor-menu-toggle.elementor-active) .elementor-hidden-mobile:has(.gic-btn) {
		display: flex !important;
		/* `!important` porque la columna del botón trae el `position` de
		   Elementor; solo manda mientras el cajón está abierto. */
		position: fixed !important;
		left: var(--gic-drawer-cta-x, 20px) !important;
		right: var(--gic-drawer-cta-x, 20px) !important;
		bottom: var(--gic-drawer-cta-bottom, 59px) !important;
		top: auto !important;
		width: auto !important;
		max-width: none !important;
		padding: 0 !important;
		z-index: calc(var(--gic-drawer-z, 9998) + 1);
	}
	/* El botón, a ancho completo dentro del cajón: hay que estirar también la
	   caja del widget de Elementor, que si no encoge al ancho del texto. */
	html.gic-menu-open .gic-header .gic-header-cta > .elementor-widget,
	html.gic-menu-open .gic-header .gic-header-cta .elementor-widget-container,
	html.gic-menu-open .gic-header .elementor-hidden-mobile > .elementor-widget,
	html.gic-menu-open .gic-header .elementor-hidden-mobile .elementor-widget-container,
	.gic-header:has(.elementor-menu-toggle.elementor-active) .gic-header-cta > .elementor-widget,
	.gic-header:has(.elementor-menu-toggle.elementor-active) .gic-header-cta .elementor-widget-container,
	.gic-header:has(.elementor-menu-toggle.elementor-active) .elementor-hidden-mobile > .elementor-widget,
	.gic-header:has(.elementor-menu-toggle.elementor-active) .elementor-hidden-mobile .elementor-widget-container {
		width: 100% !important;
		max-width: 100% !important;
	}
	html.gic-menu-open .gic-header .gic-header-cta .gic-btn,
	html.gic-menu-open .gic-header .elementor-hidden-mobile .gic-btn,
	.gic-header:has(.elementor-menu-toggle.elementor-active) .gic-header-cta .gic-btn,
	.gic-header:has(.elementor-menu-toggle.elementor-active) .elementor-hidden-mobile .gic-btn {
		width: 100%;
		justify-content: center;
	}

	/* ---------- (B) La franja legal ---------- */
	/* Una política por línea, subrayada, contra el margen izquierdo. */
	.gic-footer .gic-footer-legal--links .gic-legal-sep { display: none; }
	.gic-footer .gic-footer-legal--links a {
		display: block;
		width: -moz-fit-content;
		width: fit-content;
		text-decoration: underline;
		text-underline-offset: 4px;
		margin-bottom: var(--gic-legal-gap, 7px);
	}
	.gic-footer .gic-footer-legal--links a:last-child { margin-bottom: 0; }
	/* Raya fina encima de la franja, del ancho de las columnas del pie. */
	.gic-footer .gic-footer-legal--links {
		border-top: 1px solid var(--gic-legal-rule, rgba(0, 0, 0, .12));
		margin-top: var(--gic-legal-rule-gap, 40px);
	}
	/* El aire entre la raya y el primer enlace va en el párrafo y no en el
	   relleno del widget: así no pelea con el relleno que tenga puesto el
	   bloque en Elementor, que sigue mandando. */
	.gic-footer .gic-footer-legal--links p {
		margin-top: var(--gic-legal-rule-pad, 26px);
		margin-bottom: var(--gic-legal-bottom-gap, 18px);
	}
	/* Las políticas van ENCIMA de los derechos de autor (la lámina). El -100000
	   es para poder ganarle al «Orden: primero» que Elementor escribe como
	   -99999 cuando se fija a mano desde el panel. */
	/* Se marcan TODOS los contenedores que llevan las políticas y no llevan los
	   derechos de autor: así se ordena el que de verdad hace de columna, esté a
	   la profundidad que esté, y nunca el que envuelve a los dos (que movería
	   la franja entera por encima de las columnas del pie). */
	.gic-footer .e-con:has(.gic-footer-legal--links):not(:has(.gic-footer-legal:not(.gic-footer-legal--links))),
	.gic-footer .elementor-column:has(.gic-footer-legal--links):not(:has(.gic-footer-legal:not(.gic-footer-legal--links))) {
		order: -100000 !important;
	}
}
