/* =========================================================
   Impacta+ · componentes de marca
   Tokens portados del "Impacta+ Design System" (fuente de verdad);
   color/tipografía/espaciado base también en theme.json.
   ========================================================= */

:root {
	/* Paleta canónica (Brandbook) */
	--impacta-crema: #fff5e1;
	--impacta-amarillo: #f7bc3a;
	--impacta-naranjo: #f99557;
	--impacta-azul: #85b1d5;
	--impacta-carbon: #333333;
	/* Complementarios */
	--impacta-marfil: #fffdf7;
	--impacta-azul-suave: #e9f2fa;
	--impacta-naranjo-oscuro: #c25e1f;
	--impacta-tinta: #292f38;
	--impacta-borde: #f2e9d6;
	--impacta-blanco: #ffffff;
	/* Tints suaves */
	--impacta-azul-tinte: #cfe2f1;
	--impacta-naranjo-tinte: #fcd0b3;
	--impacta-amarillo-tinte: #fbe3a6;
	/* Texto atenuado */
	--impacta-texto-suave: #6c6a63;
	--impacta-texto-card: #544f45;
	/* Radios y bordes */
	--radius-sm: 8px;
	--radius-md: 14px;
	--radius-lg: 18px;
	--radius-pill: 999px;
	--border-accent-width: 4px;
	/* Sombras (carbón cálido, baja opacidad) */
	--shadow-xs: 0 1px 2px rgba(51, 51, 51, 0.04);
	--shadow-sm: 0 3px 10px rgba(51, 51, 51, 0.10);
	--shadow-md: 0 12px 30px rgba(51, 51, 51, 0.08);
	--shadow-lg: 0 20px 50px rgba(41, 47, 56, 0.14);
	/* Header sticky */
	--header-bg: rgba(255, 253, 247, 0.92);
	--header-blur: 8px;
	/* Motion: calmado y corto — sin bounces ni loops */
	--ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
	--ease-out: cubic-bezier(0.16, 1, 0.3, 1);
	--duration-fast: 0.12s;
	--duration-base: 0.18s;
	--duration-slow: 0.32s;
	--hover-lift: -3px;
	/* Tipografía */
	--tracking-kicker: 0.09em;
	/* Realce de marca */
	--highlight-marca: linear-gradient(120deg, rgba(247, 188, 58, .45), rgba(249, 149, 87, .45));
}

body {
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

html { scroll-behavior: smooth; }

/* Anclas: compensar header fijo (~74px) al saltar con el menú */
:target { scroll-margin-top: 90px; }

/* ---- Franja tricolor que evoca el isotipo (cortes duros, no degradado) ---- */
.impacta-franja,
.wp-block-group.is-style-franja-tricolor {
	height: 6px;
	min-height: 6px;
	padding: 0;
	border: 0;
	background: linear-gradient(90deg,
		var(--impacta-azul) 0, var(--impacta-azul) 33.333%,
		var(--impacta-naranjo) 33.333%, var(--impacta-naranjo) 66.666%,
		var(--impacta-amarillo) 66.666%, var(--impacta-amarillo) 100%);
}
/* Utilitario inline (dentro de tarjetas, etc.): sí ocupa el 100% de su caja. */
.impacta-franja { width: 100%; }
/* La franja como SEPARADOR alignfull NO lleva width fijo: con width:100% (=ancho
   de contenido, menor que el viewport) los márgenes negativos alignfull solo la
   corrían a la izquierda y dejaban un hueco a la derecha (2× el global-padding).
   Con width:auto se expande sola hasta ambos bordes, igual que las secciones. */
.wp-block-group.is-style-franja-tricolor { width: auto; }
.impacta-franja--thick,
.wp-block-group.is-style-franja-tricolor.is-thick {
	height: 10px;
	min-height: 10px;
	border-radius: 2px;
}

/* ---- Kicker / antetítulo (lo único en mayúsculas de la marca) ---- */
.impacta-kicker {
	font-family: 'Clash Display', 'Satoshi', sans-serif;
	font-weight: 600;
	letter-spacing: var(--tracking-kicker);
	text-transform: uppercase;
	font-size: 0.82rem;
	color: var(--impacta-naranjo-oscuro);
	margin-bottom: 0.6rem;
}

/* ---- Rol de persona (equipo) — pariente del kicker, tracking propio ---- */
.impacta-role {
	font-family: 'Clash Display', 'Satoshi', sans-serif;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	font-size: 0.8rem;
	color: var(--impacta-naranjo-oscuro);
}

/* ---- Tarjetas (componente firma: marfil + hairline + lift) ---- */
.is-style-impacta-card {
	background: var(--impacta-marfil);
	border: 1px solid var(--impacta-borde);
	border-radius: var(--radius-lg);
	box-shadow: var(--shadow-xs);
	transition: transform var(--duration-base) var(--ease-standard),
		box-shadow var(--duration-base) var(--ease-standard);
}
.is-style-impacta-card:hover {
	transform: translateY(var(--hover-lift));
	box-shadow: var(--shadow-md);
}
/* Tipografía dentro de tarjetas: título balanceado, cuerpo en texto-card */
.is-style-impacta-card h3 {
	line-height: 1.2;
	letter-spacing: -0.01em;
	text-wrap: balance;
}
.is-style-impacta-card p.has-small-font-size {
	line-height: 1.55;
	color: var(--impacta-texto-card);
}
/* Regla superior de color (modificadores genéricos del DS) */
.impacta-card--regla-azul { border-top: var(--border-accent-width) solid var(--impacta-azul); }
.impacta-card--regla-naranjo { border-top: var(--border-accent-width) solid var(--impacta-naranjo); }
.impacta-card--regla-amarillo { border-top: var(--border-accent-width) solid var(--impacta-amarillo); }

/* ---- Marca de agua del isotipo (~6%, sangrando por la esquina) ---- */
.is-style-impacta-watermark { position: relative; overflow: hidden; }
.is-style-impacta-watermark::after {
	content: "";
	position: absolute;
	right: -60px;
	bottom: -60px;
	width: 460px;
	height: 460px;
	background: url(img/isotipo.png) no-repeat center / contain;
	opacity: .06;
	pointer-events: none;
	z-index: 0;
}
.is-style-impacta-watermark > * { position: relative; z-index: 1; }

/* ---- Botones: transición tokenizada; el primario vive en theme.json ---- */
.wp-element-button,
.wp-block-button__link {
	transition: background-color var(--duration-base) var(--ease-standard),
		color var(--duration-base) var(--ease-standard),
		border-color var(--duration-base) var(--ease-standard);
}

/* Secundario (contorno azul que se llena al hover) */
.wp-block-button.is-style-outline .wp-block-button__link {
	border: 2px solid var(--impacta-azul);
	color: var(--impacta-carbon);
	background: transparent;
}
.wp-block-button.is-style-outline .wp-block-button__link:hover,
.wp-block-button.is-style-outline .wp-block-button__link:focus {
	background: var(--impacta-azul);
	color: var(--impacta-blanco);
}

/* Ghost (solo texto, naranjo oscuro) */
.wp-block-button.is-style-impacta-ghost .wp-block-button__link {
	background: transparent;
	color: var(--impacta-naranjo-oscuro);
	border: 2px solid transparent;
	padding-left: 0.6rem;
	padding-right: 0.6rem;
}
.wp-block-button.is-style-impacta-ghost .wp-block-button__link:hover,
.wp-block-button.is-style-impacta-ghost .wp-block-button__link:focus {
	color: var(--impacta-naranjo);
	background: transparent;
}

/* ---- Chips (métricas / proof points) ---- */
.impacta-chips { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.impacta-chip {
	display: inline-flex;
	align-items: center;
	border-radius: var(--radius-pill);
	padding: 0.25rem 0.8rem;
	font-family: 'Satoshi', sans-serif;
	font-size: 0.9375rem;
	font-weight: 600;
	line-height: 1.3;
	white-space: nowrap;
	background: var(--impacta-azul-suave);
	color: var(--impacta-carbon);
}
.impacta-chip--crema { background: var(--impacta-crema); }
.impacta-chip--naranjo { background: var(--impacta-naranjo-tinte); color: var(--impacta-naranjo-oscuro); }
.impacta-chip--amarillo { background: var(--impacta-amarillo-tinte); }
.impacta-chip--ink { background: rgba(255, 255, 255, 0.12); color: var(--impacta-crema); }

/* ---- Badge (etiqueta pequeña, usar con moderación) ---- */
.impacta-badge {
	display: inline-flex;
	align-items: center;
	border-radius: var(--radius-sm);
	padding: 0.2rem 0.55rem;
	font-family: 'Clash Display', sans-serif;
	font-size: 0.7rem;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	line-height: 1.2;
	background: var(--impacta-borde);
	color: var(--impacta-carbon);
}
.impacta-badge--azul { background: var(--impacta-azul); color: var(--impacta-blanco); }
.impacta-badge--naranjo { background: var(--impacta-naranjo); color: var(--impacta-blanco); }
.impacta-badge--amarillo { background: var(--impacta-amarillo); color: var(--impacta-carbon); }

/* ---- Números de paso del método (01–05) ---- */
.impacta-step-num {
	font-family: 'Clash Display', sans-serif;
	font-weight: 700;
	line-height: 1;
	color: var(--impacta-naranjo);
	margin-bottom: 0.2rem;
}

/* ---- Realce de marca para texto destacado ---- */
.has-impacta-underline {
	background-image: var(--highlight-marca);
	background-repeat: no-repeat;
	background-size: 100% 0.35em;
	background-position: 0 88%;
}

/* ---- Encabezado de sección canónico (kicker → título → lead) ---- */
.impacta-section-header { text-align: center; max-width: 46em; margin-inline: auto; }
.impacta-section-header h2 { margin: 0 0 0.3em; text-wrap: balance; }
.impacta-lead {
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.5;
	color: var(--impacta-texto-suave);
	margin: 0;
}
.has-tinta-background-color .impacta-lead { color: var(--impacta-crema); }

/* ---- Formulario (Input del DS): foco azul con anillo suave ---- */
.impacta-field label {
	display: block;
	font-family: 'Clash Display', 'Satoshi', sans-serif;
	font-weight: 500;
	font-size: 0.9375rem;
	color: var(--impacta-carbon);
	margin-bottom: 0.4rem;
}
.impacta-field input,
.impacta-field textarea,
.impacta-form input[type="text"],
.impacta-form input[type="email"],
.impacta-form textarea {
	width: 100%;
	box-sizing: border-box;
	font-family: 'Satoshi', sans-serif;
	font-size: var(--wp--preset--font-size--medium);
	color: var(--impacta-carbon);
	background: var(--impacta-blanco);
	border: 1px solid var(--impacta-borde);
	border-radius: var(--radius-sm);
	padding: 0.7rem 0.9rem;
	outline: none;
	transition: border-color var(--duration-base) var(--ease-standard),
		box-shadow var(--duration-base) var(--ease-standard);
}
.impacta-field input:focus,
.impacta-field textarea:focus,
.impacta-form input:focus,
.impacta-form textarea:focus {
	border-color: var(--impacta-azul);
	box-shadow: 0 0 0 3px var(--impacta-azul-suave);
}
.impacta-field textarea,
.impacta-form textarea { resize: vertical; }
.impacta-hint { font-size: 0.9375rem; color: var(--impacta-texto-suave); margin-top: 0.35rem; }

/* Iconos Lucide en círculo de tinte (trazo 1.5px carbón, tinte de los Elementos gráficos) */
.impacta-icono {
	width: 54px;
	height: 54px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0 auto 0.2rem;
}
.impacta-icono svg {
	width: 26px;
	height: 26px;
	stroke: var(--impacta-carbon);
	stroke-width: 1.5;
}
.impacta-icono.tinte-azul { background: var(--impacta-azul-tinte, #cfe2f1); }
.impacta-icono.tinte-naranjo { background: var(--impacta-naranjo-tinte, #fcd0b3); }
.impacta-icono.tinte-amarillo { background: var(--impacta-amarillo-tinte, #fbe3a6); }

/* Formulario de contacto (CF7 con la estructura del DS) */
.impacta-form-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1rem;
}
@media (max-width: 600px) {
	.impacta-form-row { grid-template-columns: 1fr; }
}
.impacta-form .impacta-field { margin-bottom: 1rem; }
.has-tinta-background-color .impacta-field label { color: var(--impacta-crema); }
.has-tinta-background-color .impacta-hint { color: var(--impacta-crema); opacity: .65; }
.impacta-form input[type="submit"] {
	font-family: 'Clash Display', 'Satoshi', sans-serif;
	font-weight: 600;
	font-size: var(--wp--preset--font-size--medium);
	color: var(--impacta-blanco);
	background: var(--impacta-naranjo);
	border: 0;
	border-radius: var(--radius-pill);
	padding: 0.85rem 1.85rem;
	cursor: pointer;
	transition: background-color var(--duration-base) var(--ease-standard);
}
.impacta-form input[type="submit"]:hover,
.impacta-form input[type="submit"]:focus { background: var(--impacta-naranjo-oscuro); }
.impacta-form .wpcf7-spinner { background-color: var(--impacta-amarillo); }
.impacta-form .wpcf7-not-valid-tip { color: var(--impacta-amarillo); font-size: 0.9375rem; margin-top: 0.3rem; }
.impacta-form .wpcf7-response-output {
	border: 1px solid var(--impacta-amarillo) !important;
	border-radius: var(--radius-sm);
	color: var(--impacta-crema);
	font-size: 0.9375rem;
	padding: 0.6rem 0.9rem;
	margin: 1rem 0 0;
}

/* ---- Fotos: equipo (avatar 120px) y proyectos (16:10, radio 14px) ---- */
.impacta-avatar { max-width: 120px; margin-inline: auto; }
.impacta-avatar img {
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	border-radius: 50%;
	border: 3px solid var(--impacta-crema);
	box-shadow: var(--shadow-sm);
}
.impacta-photo img { display: block; width: 100%; height: auto; border-radius: var(--radius-md); }
.impacta-photo.is-wide img { aspect-ratio: 16 / 10; object-fit: cover; }

/* ---- Header sticky de marca (única superficie con blur) ----
   El sticky vive en el WRAPPER del template part: si se aplica a .impacta-header,
   su contenedor tiene su misma altura y el efecto se anula. */
.wp-site-blocks > header.wp-block-template-part {
	position: sticky;
	top: 0;
	z-index: 1000;
}
.impacta-header {
	background: var(--header-bg);
	-webkit-backdrop-filter: blur(var(--header-blur));
	backdrop-filter: blur(var(--header-blur));
	border-bottom: 1px solid var(--impacta-borde);
}
/* que las anclas no queden ocultas bajo la barra fija */
html { scroll-padding-top: 80px; }
.impacta-header .wp-block-navigation { font-family: 'Clash Display', 'Satoshi', sans-serif; font-weight: 500; }
.impacta-header .wp-block-navigation a {
	color: var(--impacta-carbon);
	transition: color var(--duration-base) var(--ease-standard);
}
.impacta-header .wp-block-navigation a:hover,
.impacta-header .wp-block-navigation a:focus { color: var(--impacta-naranjo-oscuro); }
.impacta-header .wp-block-site-logo img { max-height: 44px; width: auto; }

/* ---- Listas dentro de tarjetas (módulos de contenidos) ---- */
.impacta-card-list {
	margin: 0;
	padding-left: 1.3em;
	color: var(--impacta-texto-card, #544f45);
}
.impacta-card-list li { margin: 0.25em 0; }
.impacta-card-list li::marker { color: var(--impacta-naranjo-oscuro); font-weight: 600; }

/* ---- Kicker en secciones oscuras ---- */
.has-tinta-background-color .impacta-kicker,
.has-tinta-background-color .impacta-role { color: var(--impacta-amarillo); }

/* ---- Tarjetas centradas y armónicas (qué hacemos, método, servicios, sectores, equipo) ---- */
.impacta-cards-3 > *,
.impacta-cards-4 > *,
.impacta-cards-5 > * { text-align: center; }
.impacta-cards-3 > * { flex: 0 1 300px; }
.impacta-cards-4 > * { flex: 0 1 230px; }
.impacta-cards-5 > * { flex: 0 1 205px; }
.impacta-sector { border-top-style: solid; }

/* ---- Subtítulo de grupo dentro de una sección (formas/dimensiones, proyectos/iniciativas) ---- */
.impacta-subkicker {
	font-family: 'Clash Display', 'Satoshi', sans-serif;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	font-size: 0.92rem;
	color: var(--impacta-carbon);
	opacity: .55;
	margin-bottom: 0;
}

/* ---- Footer de marca (sobre tinta; cierra la página con la franja) ---- */
.impacta-footer { color: var(--impacta-crema); }
.impacta-footer a { color: var(--impacta-crema); text-decoration: none; }
.impacta-footer a:hover,
.impacta-footer a:focus { color: var(--impacta-amarillo); }
.impacta-footer h3 {
	letter-spacing: .06em;
	text-transform: uppercase;
	margin-bottom: .6rem;
	font-size: 0.85rem;
	color: var(--impacta-crema);
	opacity: .85;
}
.impacta-footer .impacta-footer-nav { list-style: none; margin: 0; padding: 0; }
.impacta-footer .impacta-footer-nav li { margin: .4rem 0; }

/* ---- Ajustes responsive del menú ---- */
@media (max-width: 1000px) {
	.impacta-header .wp-block-navigation { font-size: 0.9rem; }
	.impacta-header .wp-block-navigation ul { gap: 0.75rem; }
}
@media (max-width: 600px) {
	.impacta-header .wp-block-site-logo img { max-height: 40px; }
}

/* ---- Continuidad de fondos: cada sección a tope SE SOLAPA 1px con la anterior.
   Un solape nunca deja hueco (a ningún zoom), así que el crema del body no asoma
   como hilo entre secciones ni junto a las franjas.
   (Antes forzábamos margin-top:0 y el solape de las franjas dependía del colapso
   de márgenes; esta misma regla anulaba ese colapso en la junta oscuro/oscuro del
   tope del footer, y por eso el hilo reaparecía. Ahora el solape es explícito.) */
.wp-block-group.alignfull,
.wp-block-template-part,
.wp-block-post-content > *,
.wp-site-blocks > main { margin-bottom: 0 !important; }

.wp-block-post-content > .wp-block-group.alignfull,
.wp-block-template-part { margin-top: -1px !important; }

/* La franja se solapa con AMBAS vecinas y pinta encima en el solape:
   nunca depende del colapso de márgenes. */
.wp-block-group.is-style-franja-tricolor {
	height: 7px;
	min-height: 7px;
	position: relative;
	z-index: 2;
	margin-top: -1px !important;
	margin-bottom: -1px !important;
}

/* ---- Regla de color rotando azul → naranjo → amarillo (Servicios e Iniciativas) ---- */
#servicios .impacta-cards-3 > *,
#experiencia .impacta-cards-3 > * { border-top: var(--border-accent-width) solid var(--impacta-azul); }
#servicios .impacta-cards-3 > *:nth-child(3n+2),
#experiencia .impacta-cards-3 > *:nth-child(3n+2) { border-top-color: var(--impacta-naranjo); }
#servicios .impacta-cards-3 > *:nth-child(3n+3),
#experiencia .impacta-cards-3 > *:nth-child(3n+3) { border-top-color: var(--impacta-amarillo); }

/* ---- Subtítulos de subsección (Experiencia) con jerarquía de encabezado ---- */
.impacta-subhead {
	font-size: clamp(1.4rem, 2.4vw, 1.8rem);
	color: var(--impacta-carbon);
	margin-bottom: 0.2em;
}

/* ---- Accesibilidad: respetar la preferencia de menos movimiento ---- */
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	.is-style-impacta-card,
	.wp-element-button,
	.wp-block-button__link,
	.impacta-header .wp-block-navigation a,
	.impacta-field input,
	.impacta-field textarea { transition: none; }
	.is-style-impacta-card:hover { transform: none; }
}
