/*
Theme Name: EFICEREX GeneratePress Child
Description: Tema hijo de GeneratePress para el proyecto web corporativo de EFICEREX.
Template: generatepress
Version: 1.4.2
Text Domain: eficerex-generatepress-child
*/

/*
 * Corrección mínima de la cascada de GeneratePress.
 * Los valores proceden de theme.json; aquí solo se restablecen los estilos
 * raíz que el CSS del Personalizador del tema padre sobrescribe en el frontal.
 */
body {
	color: var(--wp--preset--color--text-default) !important;
	font-family: var(--wp--preset--font-family--body) !important;
	font-size: 1rem !important;
	line-height: 1.65 !important;
}

a {
	color: #1D5FA7;
	text-decoration: none;
}

a:hover {
	color: #153F70;
}

a:hover,
a:focus-visible {
	text-decoration: underline;
}

.wp-block-button__link:hover,
.wp-block-button__link:focus-visible,
.main-navigation a:hover,
.main-navigation a:focus-visible,
.wp-block-social-links a:hover,
.wp-block-social-links a:focus-visible {
	text-decoration: none;
}

body h1,
body h2,
body h3,
body h4,
body h5,
body h6 {
	color: var(--wp--preset--color--text-default) !important;
	font-family: var(--wp--preset--font-family--heading) !important;
	font-weight: 700 !important;
}

body h1 {
	font-size: clamp(2.25rem, 5vw, 4rem) !important;
	line-height: 1.08 !important;
}

body h2 {
	font-size: clamp(1.875rem, 3.5vw, 3rem) !important;
	line-height: 1.15 !important;
}

body h3 {
	font-size: clamp(1.5rem, 2.5vw, 2rem) !important;
	line-height: 1.2 !important;
}

body h4 {
	font-size: 1.375rem !important;
	line-height: 1.3 !important;
}

body h5 {
	font-size: 1.125rem !important;
	line-height: 1.4 !important;
}

body h6 {
	font-size: 1rem !important;
	line-height: 1.4 !important;
}

body .wp-block-button:not(.is-style-outline) > .wp-block-button__link,
body .wp-block-search__button {
	background-color: var(--wp--preset--color--action-primary) !important;
	border: 1px solid var(--wp--preset--color--action-primary) !important;
	border-radius: var(--wp--custom--radius--md) !important;
	color: var(--wp--preset--color--surface-card) !important;
	font-family: var(--wp--preset--font-family--body) !important;
	font-size: 1rem !important;
	font-weight: 700 !important;
	letter-spacing: 0.01em !important;
	line-height: 1.2 !important;
	padding: 12px 24px !important;
}

body .wp-block-button:not(.is-style-outline) > .wp-block-button__link:hover,
body .wp-block-search__button:hover {
	background-color: var(--wp--preset--color--action-primary-hover) !important;
	border-color: var(--wp--preset--color--action-primary-hover) !important;
}

/*
 * Fase 08: variación «contorno» del botón (botón secundario).
 * El CSS del Personalizador de GeneratePress declara el color de fondo y de
 * texto para el selector genérico `button, input[type="submit"], a.button,
 * a.wp-block-button__link:not(.has-background)`, y esa declaración gana a la
 * variación `outline` de theme.json, que solo aporta `border: 2px solid
 * currentColor` y fondo transparente. El resultado era un botón gris #55555E
 * con texto blanco, fuera de la paleta aprobada.
 *
 * Se restablece aquí el botón secundario de `05-botones.md` sin tocar el
 * Personalizador y sin CSS por bloque ni en línea: la regla es global y
 * reutilizable, y los bloques `core/button` solo necesitan la variación
 * `is-style-outline`, sin `backgroundColor` ni `textColor` propios.
 */
body .wp-block-button.is-style-outline > .wp-block-button__link {
	background-color: var(--wp--preset--color--surface-card) !important;
	border: 2px solid var(--wp--preset--color--action-primary) !important;
	border-radius: var(--wp--custom--radius--md) !important;
	color: var(--wp--preset--color--action-primary) !important;
	font-family: var(--wp--preset--font-family--body) !important;
	font-size: 1rem !important;
	font-weight: 700 !important;
	letter-spacing: 0.01em !important;
	line-height: 1.2 !important;
	padding: 12px 24px !important;
}

body .wp-block-button.is-style-outline > .wp-block-button__link:hover,
body .wp-block-button.is-style-outline > .wp-block-button__link:focus {
	background-color: var(--wp--preset--color--surface-soft-blue) !important;
	border-color: var(--wp--preset--color--action-primary-hover) !important;
	color: var(--wp--preset--color--action-primary-hover) !important;
}

/* Fase 05: estructura global de cabecera, navegación y pie. */
.eficerex-global-container,
.site-header .inside-header,
.main-navigation .inside-navigation,
.footer-widgets .inside-footer-widgets,
.site-info .inside-site-info {
	box-sizing: border-box;
	margin-inline: auto;
	max-width: 1200px;
	padding-inline: clamp(16px, 3vw, 32px);
	width: 100%;
}

.eficerex-utility-bar {
	background: var(--wp--preset--color--brand-tertiary);
	color: #fff;
	font-size: 0.875rem;
}

.eficerex-utility-bar a,
.eficerex-utility-bar a:hover {
	color: #fff;
}

.eficerex-utility-bar .widget,
.eficerex-utility-bar p {
	margin: 0;
}

.eficerex-utility-bar .wp-block-group,
.eficerex-utility-bar .wp-block-navigation__container {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: 4px 24px;
	justify-content: flex-end;
	min-height: 44px;
}

.eficerex-utility-bar a {
	align-items: center;
	display: inline-flex;
	min-height: 44px;
}

.site-header,
.main-navigation {
	background: #fff;
}

.site-header .inside-header {
	min-height: 80px;
}

.site-logo img,
.site-header .header-image {
	height: 72px;
	max-height: 72px;
	max-width: 141px;
	object-fit: contain;
	width: 141px;
}

.main-navigation .main-nav ul li a,
.menu-toggle {
	color: var(--wp--preset--color--text-default);
	font-size: 1rem;
	font-weight: 600;
	min-height: 44px;
}

.main-navigation .main-nav ul li:hover > a,
.main-navigation .main-nav ul li:focus-within > a,
.main-navigation .main-nav ul li[class*="current-menu-"] > a {
	background: var(--wp--preset--color--surface-soft-blue);
	color: var(--wp--preset--color--action-primary);
}

.main-navigation .main-nav ul ul {
	background: #fff;
	border: 1px solid var(--wp--preset--color--border-default);
	border-radius: var(--wp--custom--radius--md);
	box-shadow: var(--wp--preset--shadow--md);
	padding-block: 8px;
	width: min(320px, calc(100vw - 32px));
}

.main-navigation .main-nav ul ul li a {
	line-height: 1.35;
	padding: 12px 16px;
}

/*
 * Botón del menú principal (1.3.9).
 *
 * La especificidad es deliberada. GeneratePress imprime en línea
 * `.main-navigation .main-nav ul li:not([class*="current-menu-"]):hover > a`
 * (0,4,3) y `.main-navigation .main-nav ul li[class*="current-menu-"] > a`
 * (0,3,3). Con los selectores anteriores —(0,3,1) y (0,4,1)— ganaba el tema
 * padre y el botón perdía el texto blanco al pasar el ratón, y perdía además
 * el fondo azul en la propia página de presupuesto. Estos selectores suben a
 * (0,4,3) y (0,5,3) y ganan sin recurrir a `!important`.
 */
.main-navigation .main-nav ul li.menu-item.menu-item-cta > a {
	background: var(--wp--preset--color--action-primary);
	border-radius: var(--wp--custom--radius--md);
	color: #fff;
	margin: 6px 0 6px 12px;
	padding-inline: 20px;
}

.main-navigation .main-nav ul li.menu-item.menu-item-cta:hover > a,
.main-navigation .main-nav ul li.menu-item.menu-item-cta:focus-within > a,
.main-navigation .main-nav ul li.menu-item.menu-item-cta.sfHover > a {
	background: var(--wp--preset--color--action-primary-hover);
	color: #fff;
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
summary:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
	outline: 3px solid #1F6FEB !important;
	outline-offset: 3px !important;
}

.site-footer,
.footer-widgets,
.site-info {
	background: #102A43;
	color: #fff;
}

.footer-widgets {
	padding-block: clamp(32px, 4vw, 48px) 24px;
}

.footer-widgets .widget-title {
	color: #fff !important;
	font-size: 1.125rem !important;
}

.site-footer a,
.site-footer a:hover {
	color: #DDEBFA;
}

.site-footer a {
	min-height: 24px;
	padding-block: 2px;
}

.footer-widgets .widget,
.footer-widgets p {
	margin-bottom: 8px;
}

.footer-widgets .widget-title {
	margin-bottom: 12px;
}

.footer-widgets li {
	margin-bottom: 4px;
}

.footer-widgets ul {
	margin: 0;
}

.footer-widgets li {
	margin: 0;
}

.footer-widgets li a {
	align-items: center;
	display: inline-flex;
}

.site-info {
	border-top: 1px solid rgb(255 255 255 / 0.2);
	font-size: 0.875rem;
}

.eficerex-institutional-strip {
	background: #fff;
	color: var(--wp--preset--color--text-default);
	padding-block: 24px;
	width: 100%;
}

.eficerex-institutional-inner {
	margin-inline: auto;
	max-width: 869px;
	padding-inline: clamp(16px, 3vw, 32px);
}

.eficerex-institutional-strip .widget,
.eficerex-institutional-strip figure {
	margin: 0;
}

.eficerex-institutional-strip img {
	display: block;
	height: auto;
	margin-inline: auto;
	max-width: min(869px, 100%);
	width: auto;
}

@media (max-width: 768px) {
	.eficerex-utility-bar .wp-block-group,
	.eficerex-utility-bar .wp-block-navigation__container {
		gap: 0 16px;
		justify-content: center;
	}

	.main-navigation .main-nav .menu-item-cta > a {
		margin: 8px 16px 16px;
	}

	.main-navigation.toggled .main-nav ul ul {
		border: 0;
		border-radius: 0;
		box-shadow: none;
		width: 100%;
	}
}

@media (min-width: 1025px) {
	.site-header .inside-header {
		align-items: center;
		column-gap: clamp(16px, 2vw, 28px);
		flex-wrap: nowrap;
	}

	.site-header .site-logo,
	.site-header .site-branding-container {
		flex: 0 0 141px;
	}

	.site-header .main-navigation {
		flex: 1 1 auto;
		min-width: 0;
	}

	.site-header .main-navigation .inside-navigation {
		max-width: none;
		padding-inline: 0;
	}

	.main-navigation .main-nav,
	.main-navigation .main-nav > ul {
		width: 100%;
	}

	.main-navigation .main-nav > ul {
		align-items: center;
		flex-wrap: nowrap;
		justify-content: flex-end;
	}

	.main-navigation .main-nav > ul > li > a {
		font-size: 0.9375rem;
		padding-inline: clamp(8px, 0.8vw, 12px);
		white-space: nowrap;
	}

	.main-navigation .main-nav .menu-item-cta > a {
		margin-left: 6px;
		padding-inline: 16px;
	}
}

@media (max-width: 480px) {
	.eficerex-utility-bar .wp-block-group,
	.eficerex-utility-bar .wp-block-navigation__container {
		align-items: stretch;
		flex-direction: column;
		gap: 0;
		padding-block: 4px;
	}

	.eficerex-utility-bar a {
		justify-content: center;
	}
}

/*
 * ============================================================================
 * Fase 10 (1.3.4): formularios — sección global y reutilizable.
 * ============================================================================
 *
 * Motivo. Contact Form 7 no aporta estilo propio de campos y GeneratePress
 * impone su hoja del Personalizador a `input`, `select`, `textarea` y
 * `input[type="submit"]`. Medido en el frontal sobre los dos formularios de la
 * Fase 10 (28 comprobaciones sobre `/contacto/` y `/solicitar-presupuesto/`):
 *
 *   - borde `1px solid #F0F0F0`      -> `06-formularios.md` exige `#8796A6`;
 *   - `border-radius: 0`             -> exige `8px`;
 *   - fondo `#F7F8F9`                -> exige blanco;
 *   - relleno `10px 15px`            -> exige `12px 14px`;
 *   - tipografía `-apple-system 17px`-> exige Inter 16 px, línea 1.5;
 *   - color de texto `#222222`       -> exige `text-default` `#17212B`;
 *   - anchura fija de 388 px         -> impide la columna única fluida;
 *   - `select` de 46 px de alto      -> exige 48 px como el resto de campos;
 *   - casilla y radio de 13 x 13 px  -> exige control de 20 x 20 px dentro de
 *                                       un objetivo táctil de 44 x 44 px;
 *   - `input[type="submit"]` con fondo `#55555E` (gris de GeneratePress),
 *     tipografía del sistema y radio 0 -> exige el botón principal de
 *     `05-botones.md` (`action-primary`, Inter 700, radio `md`);
 *   - `.wpcf7-not-valid-tip` en `#DC3232`: 4,21:1 sobre `surface-soft-green`
 *     (`#EDF7EE`), por debajo de 4,5:1. Con `state-error` `#B3261E` sube a
 *     5,96:1.
 *
 * Alcance. Reglas globales por selector, sin CSS en la página, en el bloque,
 * en el formulario ni en WPCode, y sin ningún estilo en línea. Valen para
 * cualquier formulario que se añada después.
 *
 * Colores. Se usan los tokens de `theme.json` siempre que existen. Tres
 * valores de `01-paleta-colores.md` no están en la paleta del tema hijo y se
 * escriben en HEX con su nombre de token en el comentario: `border-strong`
 * (#8796A6), `surface-error` (#FCEDEA) y `state-disabled-bg` (#E4E9EE) con
 * `state-disabled-text` (#6E7C89).
 *
 * No se toca el anillo de foco: la regla de `:focus-visible` de 1.3.3 ya
 * aplica el foco de 3 px `#1F6FEB` a `input`, `select` y `textarea`.
 */

/* Etiqueta: bloque propio y separación de 8 px respecto al campo. */
body .wpcf7-form label {
	display: block;
	font-weight: 600;
	margin-bottom: 8px;
	max-width: 65ch;
}

/* La etiqueta de una casilla o de un botón de selección va en línea. */
body .wpcf7-form .wpcf7-list-item label,
body .wpcf7-form .wpcf7-acceptance label {
	display: inline-flex;
	font-weight: 400;
	margin-bottom: 0;
	max-width: none;
}

/* Contenedor de control: bloque, para que el campo ocupe el ancho disponible. */
body .wpcf7-form .wpcf7-form-control-wrap {
	display: block;
}

/* Campo base de `06-formularios.md`. */
body .wpcf7-form input[type="text"],
body .wpcf7-form input[type="email"],
body .wpcf7-form input[type="tel"],
body .wpcf7-form input[type="url"],
body .wpcf7-form input[type="number"],
body .wpcf7-form input[type="date"],
body .wpcf7-form select,
body .wpcf7-form textarea {
	background-color: var(--wp--preset--color--surface-card) !important;
	border: 1px solid #8796A6 !important; /* border-strong */
	border-radius: var(--wp--custom--radius--md) !important;
	box-sizing: border-box;
	color: var(--wp--preset--color--text-default) !important;
	font-family: var(--wp--preset--font-family--body) !important;
	font-size: 1rem !important;
	line-height: 1.5 !important;
	max-width: 100%;
	min-height: 48px;
	padding: 12px 14px !important;
	width: 100%;
}

/* Anchura útil: una sola columna, sin estirar el campo más allá de lo legible. */
body .wpcf7-form input[type="text"],
body .wpcf7-form input[type="email"],
body .wpcf7-form input[type="tel"],
body .wpcf7-form input[type="url"],
body .wpcf7-form select {
	max-width: 32rem;
}

body .wpcf7-form textarea {
	max-width: 48rem;
	min-height: 144px;
	resize: vertical;
}

body .wpcf7-form ::placeholder {
	color: #6E7C89; /* state-disabled-text */
	opacity: 1;
}

body .wpcf7-form input[type="text"]:hover,
body .wpcf7-form input[type="email"]:hover,
body .wpcf7-form input[type="tel"]:hover,
body .wpcf7-form input[type="url"]:hover,
body .wpcf7-form select:hover,
body .wpcf7-form textarea:hover {
	border-color: var(--wp--preset--color--text-muted) !important;
}

body .wpcf7-form input:focus,
body .wpcf7-form select:focus,
body .wpcf7-form textarea:focus {
	border-color: var(--wp--preset--color--action-primary) !important;
}

body .wpcf7-form input[disabled],
body .wpcf7-form select[disabled],
body .wpcf7-form textarea[disabled] {
	background-color: #E4E9EE !important; /* state-disabled-bg */
	color: #6E7C89 !important; /* state-disabled-text */
}

body .wpcf7-form input[readonly],
body .wpcf7-form textarea[readonly] {
	background-color: var(--wp--preset--color--surface-page) !important;
	border-color: var(--wp--preset--color--border-default) !important;
}

/* Estado de error: borde de 2 px, fondo suave y marca no dependiente del color. */
body .wpcf7-form input.wpcf7-not-valid,
body .wpcf7-form select.wpcf7-not-valid,
body .wpcf7-form textarea.wpcf7-not-valid,
body .wpcf7-form [aria-invalid="true"] {
	background-color: #FCEDEA !important; /* surface-error */
	border-color: var(--wp--preset--color--state-error) !important;
	border-width: 2px !important;
}

/* Texto del error: color accesible y símbolo previo, para no depender del color. */
body .wpcf7-form .wpcf7-not-valid-tip {
	color: var(--wp--preset--color--state-error);
	display: block;
	font-size: 0.9375rem;
	font-weight: 600;
	line-height: 1.5;
	margin-top: 8px;
	max-width: 65ch;
}

body .wpcf7-form .wpcf7-not-valid-tip::before {
	content: "\26A0\FE0E";
	font-weight: 700;
	margin-right: 6px;
}

/* Casilla y botón de selección: control de 20 px en objetivo de 44 px. */
body .wpcf7-form .wpcf7-list-item {
	display: block;
	margin: 0 0 8px;
}

body .wpcf7-form .wpcf7-list-item.first,
body .wpcf7-form .wpcf7-acceptance .wpcf7-list-item {
	margin-left: 0;
}

body .wpcf7-form .wpcf7-list-item label {
	align-items: center;
	column-gap: 10px;
	min-height: 44px;
	padding-block: 10px;
}

body .wpcf7-form input[type="checkbox"],
body .wpcf7-form input[type="radio"] {
	accent-color: var(--wp--preset--color--action-primary);
	block-size: 20px;
	border: 1px solid #8796A6; /* border-strong */
	flex: 0 0 auto;
	inline-size: 20px;
	margin: 0;
}

/* El texto de la casilla mantiene la línea de cuerpo del sistema. */
body .wpcf7-form .wpcf7-list-item-label,
body .wpcf7-form .wpcf7-acceptance label > span {
	line-height: 1.5;
}

/* Agrupación de opciones: sin marco impuesto por el navegador. */
body .wpcf7-form fieldset {
	border: 0;
	margin: 0 0 24px;
	min-inline-size: 0;
	padding: 0;
}

body .wpcf7-form legend {
	font-weight: 600;
	margin-bottom: 8px;
	padding: 0;
}

/* Separación entre campos: 24 px, como el resto del sistema. */
body .wpcf7-form p {
	margin-bottom: 24px;
}

/* Botón de envío: botón principal de `05-botones.md`. */
body .wpcf7-form input[type="submit"],
body .wpcf7-form button[type="submit"] {
	background-color: var(--wp--preset--color--action-primary) !important;
	border: 2px solid var(--wp--preset--color--action-primary) !important;
	border-radius: var(--wp--custom--radius--md) !important;
	color: #fff !important;
	font-family: var(--wp--preset--font-family--body) !important;
	font-size: 1rem !important;
	font-weight: 700 !important;
	letter-spacing: 0.01em !important;
	line-height: 1.2 !important;
	min-height: 48px;
	padding: 12px 24px !important;
}

body .wpcf7-form input[type="submit"]:hover,
body .wpcf7-form button[type="submit"]:hover,
body .wpcf7-form input[type="submit"]:focus,
body .wpcf7-form button[type="submit"]:focus {
	background-color: var(--wp--preset--color--action-primary-hover) !important;
	border-color: var(--wp--preset--color--action-primary-hover) !important;
}

/* Mensaje de respuesta: colores de `06-formularios.md`. */
body .wpcf7 form .wpcf7-response-output {
	border-radius: var(--wp--custom--radius--md);
	border-width: 2px;
	font-weight: 600;
	margin: 24px 0 0;
	max-width: 65ch;
	padding: 16px;
}

body .wpcf7 form.sent .wpcf7-response-output {
	background-color: var(--wp--preset--color--surface-soft-green);
	border-color: var(--wp--preset--color--state-success);
	color: var(--wp--preset--color--state-success);
}

body .wpcf7 form.invalid .wpcf7-response-output,
body .wpcf7 form.unaccepted .wpcf7-response-output,
body .wpcf7 form.payment-required .wpcf7-response-output {
	background-color: #FCEDEA; /* surface-error */
	border-color: var(--wp--preset--color--state-error);
	color: var(--wp--preset--color--state-error);
}

body .wpcf7 form.failed .wpcf7-response-output,
body .wpcf7 form.aborted .wpcf7-response-output,
body .wpcf7 form.spam .wpcf7-response-output {
	background-color: #FCEDEA; /* surface-error */
	border-color: var(--wp--preset--color--state-error);
	color: var(--wp--preset--color--state-error);
}

/* Texto de apoyo del formulario: mismo tratamiento que el texto secundario. */
body .wpcf7-form .eficerex-form-intro,
body .wpcf7-form .eficerex-form-privacidad {
	color: var(--wp--preset--color--text-default);
	max-width: 65ch;
}

body .wpcf7-form .eficerex-form-privacidad {
	font-size: 0.9375rem;
}

/* El aviso de administración de WP Armour no debe romper la columna. */
body .wpcf7-form .wpa_note {
	max-width: 65ch;
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		scroll-behavior: auto !important;
		transition-duration: 0.01ms !important;
	}
}

/*
 * Fase 12: migas de pan de Rank Math en páginas interiores.
 * Solo tokens ya existentes en theme.json; sin colores ni medidas nuevas.
 */
.eficerex-breadcrumbs {
	background: var(--wp--preset--color--surface-page);
	border-bottom: 1px solid var(--wp--preset--color--border-default);
	font-size: 0.9375rem;
	padding-block: var(--wp--preset--spacing--30);
}

.eficerex-breadcrumbs p {
	margin: 0;
}

.eficerex-breadcrumbs a {
	color: var(--wp--preset--color--action-primary);
}

.eficerex-breadcrumbs a:hover {
	color: var(--wp--preset--color--action-primary-hover);
}

/* Elemento actual y separador: jerarquía sin depender solo del color. */
.eficerex-breadcrumbs .last {
	color: var(--wp--preset--color--text-muted);
}

.eficerex-breadcrumbs .separator {
	color: var(--wp--preset--color--text-muted);
	padding-inline: 0.5ch;
}


/*
 * 1.3.6 — Pie de página: iconos de contacto y redes sociales.
 * Iconos monocromos en blanco mediante máscara CSS sobre currentColor,
 * sin imágenes externas y reutilizables mediante clase en el bloque.
 */
.eficerex-icon-tel > a::before,
.eficerex-icon-whatsapp > a::before {
	background-color: currentColor;
	content: "";
	display: inline-block;
	flex: 0 0 auto;
	height: 20px;
	margin-right: 10px;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-size: contain;
	mask-size: contain;
	width: 20px;
}

.eficerex-icon-tel > a::before {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.62 10.79a15.05 15.05 0 0 0 6.59 6.59l2.2-2.2a1 1 0 0 1 1.02-.24 11.36 11.36 0 0 0 3.57.57 1 1 0 0 1 1 1V20a1 1 0 0 1-1 1A17 17 0 0 1 3 4a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1 11.36 11.36 0 0 0 .57 3.57 1 1 0 0 1-.25 1.02Z'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.62 10.79a15.05 15.05 0 0 0 6.59 6.59l2.2-2.2a1 1 0 0 1 1.02-.24 11.36 11.36 0 0 0 3.57.57 1 1 0 0 1 1 1V20a1 1 0 0 1-1 1A17 17 0 0 1 3 4a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1 11.36 11.36 0 0 0 .57 3.57 1 1 0 0 1-.25 1.02Z'/%3E%3C/svg%3E");
}

.eficerex-icon-whatsapp > a::before {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12.04 2a9.9 9.9 0 0 0-8.51 14.9L2 22l5.25-1.49A9.9 9.9 0 1 0 12.04 2Zm0 18.1a8.2 8.2 0 0 1-4.18-1.15l-.3-.18-3.12.88.89-3.04-.2-.31a8.2 8.2 0 1 1 6.91 3.8Zm4.52-6.13c-.25-.12-1.47-.72-1.69-.8-.23-.09-.39-.13-.56.12-.16.25-.64.8-.78.97-.14.16-.29.18-.54.06a6.7 6.7 0 0 1-1.96-1.21 7.4 7.4 0 0 1-1.36-1.69c-.14-.25 0-.38.11-.5.11-.12.25-.29.37-.44.12-.14.16-.25.25-.41.08-.17.04-.31-.02-.44-.06-.12-.56-1.34-.76-1.84-.2-.48-.4-.42-.56-.43h-.48c-.16 0-.43.06-.66.31-.22.25-.86.84-.86 2.05s.88 2.38 1 2.55c.13.16 1.74 2.65 4.2 3.72.59.25 1.05.4 1.4.52.6.19 1.13.16 1.56.1.48-.07 1.47-.6 1.67-1.18.21-.58.21-1.07.15-1.18-.06-.1-.23-.16-.48-.28Z'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12.04 2a9.9 9.9 0 0 0-8.51 14.9L2 22l5.25-1.49A9.9 9.9 0 1 0 12.04 2Zm0 18.1a8.2 8.2 0 0 1-4.18-1.15l-.3-.18-3.12.88.89-3.04-.2-.31a8.2 8.2 0 1 1 6.91 3.8Zm4.52-6.13c-.25-.12-1.47-.72-1.69-.8-.23-.09-.39-.13-.56.12-.16.25-.64.8-.78.97-.14.16-.29.18-.54.06a6.7 6.7 0 0 1-1.96-1.21 7.4 7.4 0 0 1-1.36-1.69c-.14-.25 0-.38.11-.5.11-.12.25-.29.37-.44.12-.14.16-.25.25-.41.08-.17.04-.31-.02-.44-.06-.12-.56-1.34-.76-1.84-.2-.48-.4-.42-.56-.43h-.48c-.16 0-.43.06-.66.31-.22.25-.86.84-.86 2.05s.88 2.38 1 2.55c.13.16 1.74 2.65 4.2 3.72.59.25 1.05.4 1.4.52.6.19 1.13.16 1.56.1.48-.07 1.47-.6 1.67-1.18.21-.58.21-1.07.15-1.18-.06-.1-.23-.16-.48-.28Z'/%3E%3C/svg%3E");
}

/* Redes sociales del pie: bloque nativo de iconos sociales, en fila, logotipo blanco sobre fondo transparente. */
.site-footer .wp-block-social-links {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
	margin: 8px 0 0;
}

.site-footer .wp-block-social-links .wp-social-link {
	background: transparent;
	margin: 0;
}

.site-footer .wp-block-social-links .wp-social-link,
.site-footer .wp-block-social-links .wp-social-link a {
	color: #fff !important;
}

.site-footer .wp-block-social-links .wp-social-link a {
	min-height: 24px;
	padding: 2px;
}

.site-footer .wp-block-social-links .wp-social-link svg {
	fill: currentColor;
	height: 24px;
	width: 24px;
}


/*
 * ============================================================================
 * 1.3.9: cabecera anclada al desplazar.
 * ============================================================================
 * La cabecera —logotipo y menú principal— queda fija en la parte superior al
 * desplazar la página. La barra de utilidad no se ancla: se desplaza con el
 * contenido, para que la franja fija ocupe lo menos posible.
 *
 * Se aplica solo cuando la ventana tiene al menos 500 px de alto. En pantallas
 * cortas, y con zoom al 200 % —que reduce la altura disponible en píxeles CSS—,
 * la cabecera vuelve a comportarse como un bloque normal y no consume una parte
 * excesiva del área de lectura (WCAG 2.2, criterio 1.4.10 Reajuste).
 *
 * `position: sticky` no necesita JavaScript, no altera el flujo del documento y
 * no requiere reservar altura, de modo que no hay salto al empezar a desplazar.
 */
@media (min-height: 500px) {
	.site-header {
		box-shadow: var(--wp--preset--shadow--sm);
		position: sticky;
		top: 0;
		z-index: 100;
	}

	/* La barra de administración de WordPress es fija por encima de 782 px. */
	body.admin-bar .site-header {
		top: 32px;
	}

	/*
	 * Los destinos de ancla se separan de la cabecera anclada, para que el
	 * título al que se salta no quede oculto debajo. Afecta a las anclas de
	 * `/soluciones-profesionales/` y al enlace «Saltar al contenido».
	 */
	:target {
		scroll-margin-top: 104px;
	}
}

@media (min-height: 500px) and (max-width: 782px) {
	body.admin-bar .site-header {
		top: 0;
	}
}

/*
 * ============================================================================
 * 1.4.0: tarjeta de servicio.
 * ============================================================================
 * `design-system/10-componentes.md` define la tarjeta de servicio con fondo
 * blanco, borde `border-subtle`, radio de 12 px, relleno de 24–32 px y una
 * separación interna de 16 px. Hasta ahora esa especificación no estaba
 * implantada en ninguna parte: las rejillas eran columnas transparentes sin
 * borde, sin relleno y sin radio.
 *
 * Se implanta como una sola clase aplicada al bloque `Columnas`. Cada columna
 * hija pasa a ser una tarjeta. No se escribe ningún color, radio ni espaciado
 * dentro del bloque: todos los valores salen de `theme.json`, de modo que la
 * exigencia de «ningún estilo en línea que no pueda reutilizarse» se mantiene.
 */
.eficerex-tarjetas > .wp-block-column {
	background: var(--wp--preset--color--surface-card);
	border: 1px solid var(--wp--preset--color--border-default);
	border-radius: var(--wp--custom--radius--lg);
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--40);
	padding: clamp(1.5rem, 3vw, 2rem);
}

.eficerex-tarjetas > .wp-block-column > * {
	margin-block: 0;
}

/*
 * El bloque de botones o el enlace final se empujan al fondo, para que las
 * tarjetas de una misma fila terminen alineadas aunque su texto sea desigual.
 */
.eficerex-tarjetas > .wp-block-column > .wp-block-buttons:last-child {
	margin-top: auto;
}

/*
 * Variante elevada, solo para tarjetas que llevan enlace. Nivel 2 de
 * `04-bordes-sombras.md`: de `shadow-sm` a `shadow-md` y desplazamiento de
 * 2 px, con la transición de 160 ms del sistema.
 */
.eficerex-tarjetas--elevadas > .wp-block-column {
	box-shadow: var(--wp--preset--shadow--sm);
	transition: box-shadow 160ms ease, transform 160ms ease;
}

.eficerex-tarjetas--elevadas > .wp-block-column:hover,
.eficerex-tarjetas--elevadas > .wp-block-column:focus-within {
	box-shadow: var(--wp--preset--shadow--md);
	transform: translateY(-2px);
}

@media (prefers-reduced-motion: reduce) {
	.eficerex-tarjetas--elevadas > .wp-block-column {
		transition: none;
	}

	.eficerex-tarjetas--elevadas > .wp-block-column:hover,
	.eficerex-tarjetas--elevadas > .wp-block-column:focus-within {
		transform: none;
	}
}

/* A partir de tableta las columnas nativas ya se apilan; solo se ajusta el aire. */
@media (max-width: 768px) {
	.eficerex-tarjetas > .wp-block-column {
		padding: var(--wp--preset--spacing--50);
	}
}


/*
 * ============================================================================
 * 1.4.0: lista de ventajas.
 * ============================================================================
 * `10-componentes.md`: icono `Check` verde y separación vertical de 12 px.
 * La lista conserva su marcado semántico `<ul>`; el icono es decorativo y se
 * pinta con `::before`, de modo que no añade ruido a los lectores de pantalla.
 */
.eficerex-lista-ventajas {
	list-style: none;
	padding-left: 0;
}

.eficerex-lista-ventajas > li {
	display: flex;
	gap: var(--wp--preset--spacing--20);
	margin-block: 0 var(--wp--preset--spacing--30);
}

.eficerex-lista-ventajas > li::before {
	background-color: var(--wp--preset--color--action-secondary);
	content: "";
	flex: 0 0 auto;
	height: 20px;
	margin-top: 5px;
	-webkit-mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M20 6 9 17l-5-5%22 /> </svg>");
	mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M20 6 9 17l-5-5%22 /> </svg>");
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-size: contain;
	mask-size: contain;
	width: 20px;
}


/*
 * ============================================================================
 * 1.4.0: iconografía Lucide.
 * ============================================================================
 * Iconos lineales de Lucide (licencia ISC), servidos como máscara CSS sobre
 * `currentColor`, con el SVG embebido en el propio archivo. Misma técnica que
 * los iconos de contacto de 1.3.6: sin peticiones externas, sin archivos
 * sueltos y con el color heredado del contexto, de modo que el mismo icono
 * sirve sobre fondo claro y sobre el pie oscuro.
 *
 * Correspondencia con `design-system/07-iconografia.md`.
 */

.eficerex-icono::before,
[class*="eficerex-icono-"]::before {
	background-color: currentColor;
	content: "";
	display: block;
	height: var(--eficerex-icono-tam, 32px);
	margin-bottom: var(--wp--preset--spacing--40);
	-webkit-mask-position: left center;
	mask-position: left center;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-size: contain;
	mask-size: contain;
	width: var(--eficerex-icono-tam, 32px);
}

/* Color por defecto del icono informativo (`icon-default`, 8,27:1 sobre blanco). */
[class*="eficerex-icono-"] {
	--eficerex-icono-color: #35516B;
}

[class*="eficerex-icono-"]::before {
	background-color: var(--eficerex-icono-color);
}

/* Servicios energéticos: verde de marca sobre fondo claro (`07-iconografia.md`). */
.eficerex-icono-renovables,
.eficerex-icono-solar,
.eficerex-icono-termica {
	--eficerex-icono-color: var(--wp--preset--color--brand-secondary);
}

/* Reparación y mantenimiento — Lucide `wrench`. */
.eficerex-icono-reparacion::before {
	-webkit-mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z%22 /> </svg>");
	mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z%22 /> </svg>");
}

/* Fontanería y desatascos — Lucide `wrench`. */
.eficerex-icono-fontaneria::before {
	-webkit-mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z%22 /> </svg>");
	mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z%22 /> </svg>");
}

/* Electricidad — Lucide `zap`. */
.eficerex-icono-electricidad::before {
	-webkit-mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z%22 /> </svg>");
	mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z%22 /> </svg>");
}

/* Cerrajería — Lucide `key-round`. */
.eficerex-icono-cerrajeria::before {
	-webkit-mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z%22 /> <circle cx=%2216.5%22 cy=%227.5%22 r=%22.5%22 fill=%22currentColor%22 /> </svg>");
	mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z%22 /> <circle cx=%2216.5%22 cy=%227.5%22 r=%22.5%22 fill=%22currentColor%22 /> </svg>");
}

/* Mantenimiento integral — Lucide `settings`. */
.eficerex-icono-mantenimiento::before {
	-webkit-mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915%22 /> <circle cx=%2212%22 cy=%2212%22 r=%223%22 /> </svg>");
	mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915%22 /> <circle cx=%2212%22 cy=%2212%22 r=%223%22 /> </svg>");
}

/* Reformas e instalaciones — Lucide `hammer`. */
.eficerex-icono-reformas::before {
	-webkit-mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9%22 /> <path d=%22m18 15 4-4%22 /> <path d=%22m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5%22 /> </svg>");
	mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9%22 /> <path d=%22m18 15 4-4%22 /> <path d=%22m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5%22 /> </svg>");
}

/* Albañilería y pintura — Lucide `paintbrush`. */
.eficerex-icono-pintura::before {
	-webkit-mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22m14.622 17.897-10.68-2.913%22 /> <path d=%22M18.376 2.622a1 1 0 1 1 3.002 3.002L17.36 9.643a.5.5 0 0 0 0 .707l.944.944a2.41 2.41 0 0 1 0 3.408l-.944.944a.5.5 0 0 1-.707 0L8.354 7.348a.5.5 0 0 1 0-.707l.944-.944a2.41 2.41 0 0 1 3.408 0l.944.944a.5.5 0 0 0 .707 0z%22 /> <path d=%22M9 8c-1.804 2.71-3.97 3.46-6.583 3.948a.507.507 0 0 0-.302.819l7.32 8.883a1 1 0 0 0 1.185.204C12.735 20.405 16 16.792 16 15%22 /> </svg>");
	mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22m14.622 17.897-10.68-2.913%22 /> <path d=%22M18.376 2.622a1 1 0 1 1 3.002 3.002L17.36 9.643a.5.5 0 0 0 0 .707l.944.944a2.41 2.41 0 0 1 0 3.408l-.944.944a.5.5 0 0 1-.707 0L8.354 7.348a.5.5 0 0 1 0-.707l.944-.944a2.41 2.41 0 0 1 3.408 0l.944.944a.5.5 0 0 0 .707 0z%22 /> <path d=%22M9 8c-1.804 2.71-3.97 3.46-6.583 3.948a.507.507 0 0 0-.302.819l7.32 8.883a1 1 0 0 0 1.185.204C12.735 20.405 16 16.792 16 15%22 /> </svg>");
}

/* Climatización — Lucide `snowflake`. */
.eficerex-icono-climatizacion::before {
	-webkit-mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22m10 20-1.25-2.5L6 18%22 /> <path d=%22M10 4 8.75 6.5 6 6%22 /> <path d=%22m14 20 1.25-2.5L18 18%22 /> <path d=%22m14 4 1.25 2.5L18 6%22 /> <path d=%22m17 21-3-6h-4%22 /> <path d=%22m17 3-3 6 1.5 3%22 /> <path d=%22M2 12h6.5L10 9%22 /> <path d=%22m20 10-1.5 2 1.5 2%22 /> <path d=%22M22 12h-6.5L14 15%22 /> <path d=%22m4 10 1.5 2L4 14%22 /> <path d=%22m7 21 3-6-1.5-3%22 /> <path d=%22m7 3 3 6h4%22 /> </svg>");
	mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22m10 20-1.25-2.5L6 18%22 /> <path d=%22M10 4 8.75 6.5 6 6%22 /> <path d=%22m14 20 1.25-2.5L18 18%22 /> <path d=%22m14 4 1.25 2.5L18 6%22 /> <path d=%22m17 21-3-6h-4%22 /> <path d=%22m17 3-3 6 1.5 3%22 /> <path d=%22M2 12h6.5L10 9%22 /> <path d=%22m20 10-1.5 2 1.5 2%22 /> <path d=%22M22 12h-6.5L14 15%22 /> <path d=%22m4 10 1.5 2L4 14%22 /> <path d=%22m7 21 3-6-1.5-3%22 /> <path d=%22m7 3 3 6h4%22 /> </svg>");
}

/* Calefacción — Lucide `flame`. */
.eficerex-icono-calefaccion::before {
	-webkit-mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4%22 /> </svg>");
	mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4%22 /> </svg>");
}

/* Climatización y calefacción — Lucide `thermometer-sun`. */
.eficerex-icono-termica::before {
	-webkit-mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M12 2v2%22 /> <path d=%22M12 8a4 4 0 0 0-1.645 7.647%22 /> <path d=%22M2 12h2%22 /> <path d=%22M20 14.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0z%22 /> <path d=%22m4.93 4.93 1.41 1.41%22 /> <path d=%22m6.34 17.66-1.41 1.41%22 /> </svg>");
	mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M12 2v2%22 /> <path d=%22M12 8a4 4 0 0 0-1.645 7.647%22 /> <path d=%22M2 12h2%22 /> <path d=%22M20 14.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0z%22 /> <path d=%22m4.93 4.93 1.41 1.41%22 /> <path d=%22m6.34 17.66-1.41 1.41%22 /> </svg>");
}

/* Energías renovables y eficiencia — Lucide `leaf`. */
.eficerex-icono-renovables::before {
	-webkit-mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z%22 /> <path d=%22M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12%22 /> </svg>");
	mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z%22 /> <path d=%22M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12%22 /> </svg>");
}

/* Energía solar fotovoltaica — Lucide `sun-medium`. */
.eficerex-icono-solar::before {
	-webkit-mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <circle cx=%2212%22 cy=%2212%22 r=%224%22 /> <path d=%22M12 3v1%22 /> <path d=%22M12 20v1%22 /> <path d=%22M3 12h1%22 /> <path d=%22M20 12h1%22 /> <path d=%22m18.364 5.636-.707.707%22 /> <path d=%22m6.343 17.657-.707.707%22 /> <path d=%22m5.636 5.636.707.707%22 /> <path d=%22m17.657 17.657.707.707%22 /> </svg>");
	mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <circle cx=%2212%22 cy=%2212%22 r=%224%22 /> <path d=%22M12 3v1%22 /> <path d=%22M12 20v1%22 /> <path d=%22M3 12h1%22 /> <path d=%22M20 12h1%22 /> <path d=%22m18.364 5.636-.707.707%22 /> <path d=%22m6.343 17.657-.707.707%22 /> <path d=%22m5.636 5.636.707.707%22 /> <path d=%22m17.657 17.657.707.707%22 /> </svg>");
}

/* Equipo y personas — Lucide `users`. */
.eficerex-icono-equipo::before {
	-webkit-mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2%22 /> <path d=%22M16 3.128a4 4 0 0 1 0 7.744%22 /> <path d=%22M22 21v-2a4 4 0 0 0-3-3.87%22 /> <circle cx=%229%22 cy=%227%22 r=%224%22 /> </svg>");
	mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2%22 /> <path d=%22M16 3.128a4 4 0 0 1 0 7.744%22 /> <path d=%22M22 21v-2a4 4 0 0 0-3-3.87%22 /> <circle cx=%229%22 cy=%227%22 r=%224%22 /> </svg>");
}

/* Compromiso y responsabilidad — Lucide `shield-check`. */
.eficerex-icono-garantia::before {
	-webkit-mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z%22 /> <path d=%22m9 12 2 2 4-4%22 /> </svg>");
	mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z%22 /> <path d=%22m9 12 2 2 4-4%22 /> </svg>");
}

/* Zona de servicio — Lucide `map-pin`. */
.eficerex-icono-ubicacion::before {
	-webkit-mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0%22 /> <circle cx=%2212%22 cy=%2210%22 r=%223%22 /> </svg>");
	mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0%22 /> <circle cx=%2212%22 cy=%2210%22 r=%223%22 /> </svg>");
}

/* Horario y disponibilidad — Lucide `clock`. */
.eficerex-icono-horario::before {
	-webkit-mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <circle cx=%2212%22 cy=%2212%22 r=%2210%22 /> <path d=%22M12 6v6l4 2%22 /> </svg>");
	mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <circle cx=%2212%22 cy=%2212%22 r=%2210%22 /> <path d=%22M12 6v6l4 2%22 /> </svg>");
}

/* Elemento de lista de ventajas — Lucide `check`. */
.eficerex-icono-ventaja::before {
	-webkit-mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M20 6 9 17l-5-5%22 /> </svg>");
	mask-image: url("data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M20 6 9 17l-5-5%22 /> </svg>");
}

/* Icono destacado de sección (`icon-feature`, 48 px). */
.eficerex-icono--grande {
	--eficerex-icono-tam: 48px;
}


/*
 * ============================================================================
 * 1.4.1: fichas con icono superior.
 * ============================================================================
 * La ficha (fondo blanco, borde `border-default`, radio de 12 px y relleno de
 * 24–32 px) ya existía desde 1.4.0, pero no estaba aplicada a ninguna rejilla:
 * las columnas seguían siendo transparentes y sin borde. Esta variante añade
 * el icono sobre el título, centrado.
 *
 * El icono se declara sobre el propio encabezado y su tamaño se expresa en
 * `em`, de modo que queda atado al tamaño del título: si el título crece, el
 * icono crece con él. 1,75 em sobre un título de 1,375 rem son 38,5 px, dentro
 * del rango de 32 a 40 px que fija `design-system/07-iconografia.md`.
 */
.eficerex-tarjetas--icono > .wp-block-column {
	align-items: center;
	text-align: center;
}

.eficerex-tarjetas--icono > .wp-block-column > * {
	width: 100%;
}

.eficerex-tarjetas--icono [class*="eficerex-icono-"] {
	--eficerex-icono-tam: 1.75em;
}

.eficerex-tarjetas--icono [class*="eficerex-icono-"]::before {
	margin-inline: auto;
	-webkit-mask-position: center;
	mask-position: center;
}


/*
 * ============================================================================
 * 1.4.1: dos iconos más en la familia Lucide.
 * ============================================================================
 * `telefono` y `whatsapp` existían desde 1.3.6 pero solo en la variante del
 * pie, que los pinta en línea delante del enlace. Se incorporan a la familia
 * `eficerex-icono-*` para poder usarlos también como icono de bloque.
 */
.eficerex-icono-telefono::before {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.62 10.79a15.05 15.05 0 0 0 6.59 6.59l2.2-2.2a1 1 0 0 1 1.02-.24 11.36 11.36 0 0 0 3.57.57 1 1 0 0 1 1 1V20a1 1 0 0 1-1 1A17 17 0 0 1 3 4a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1 11.36 11.36 0 0 0 .57 3.57 1 1 0 0 1-.25 1.02Z'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.62 10.79a15.05 15.05 0 0 0 6.59 6.59l2.2-2.2a1 1 0 0 1 1.02-.24 11.36 11.36 0 0 0 3.57.57 1 1 0 0 1 1 1V20a1 1 0 0 1-1 1A17 17 0 0 1 3 4a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1 11.36 11.36 0 0 0 .57 3.57 1 1 0 0 1-.25 1.02Z'/%3E%3C/svg%3E");
}

.eficerex-icono-whatsapp::before {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12.04 2a9.9 9.9 0 0 0-8.51 14.9L2 22l5.25-1.49A9.9 9.9 0 1 0 12.04 2Zm0 18.1a8.2 8.2 0 0 1-4.18-1.15l-.3-.18-3.12.88.89-3.04-.2-.31a8.2 8.2 0 1 1 6.91 3.8Zm4.52-6.13c-.25-.12-1.47-.72-1.69-.8-.23-.09-.39-.13-.56.12-.16.25-.64.8-.78.97-.14.16-.29.18-.54.06a6.7 6.7 0 0 1-1.96-1.21 7.4 7.4 0 0 1-1.36-1.69c-.14-.25 0-.38.11-.5.11-.12.25-.29.37-.44.12-.14.16-.25.25-.41.08-.17.04-.31-.02-.44-.06-.12-.56-1.34-.76-1.84-.2-.48-.4-.42-.56-.43h-.48c-.16 0-.43.06-.66.31-.22.25-.86.84-.86 2.05s.88 2.38 1 2.55c.13.16 1.74 2.65 4.2 3.72.59.25 1.05.4 1.4.52.6.19 1.13.16 1.56.1.48-.07 1.47-.6 1.67-1.18.21-.58.21-1.07.15-1.18-.06-.1-.23-.16-.48-.28Z'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12.04 2a9.9 9.9 0 0 0-8.51 14.9L2 22l5.25-1.49A9.9 9.9 0 1 0 12.04 2Zm0 18.1a8.2 8.2 0 0 1-4.18-1.15l-.3-.18-3.12.88.89-3.04-.2-.31a8.2 8.2 0 1 1 6.91 3.8Zm4.52-6.13c-.25-.12-1.47-.72-1.69-.8-.23-.09-.39-.13-.56.12-.16.25-.64.8-.78.97-.14.16-.29.18-.54.06a6.7 6.7 0 0 1-1.96-1.21 7.4 7.4 0 0 1-1.36-1.69c-.14-.25 0-.38.11-.5.11-.12.25-.29.37-.44.12-.14.16-.25.25-.41.08-.17.04-.31-.02-.44-.06-.12-.56-1.34-.76-1.84-.2-.48-.4-.42-.56-.43h-.48c-.16 0-.43.06-.66.31-.22.25-.86.84-.86 2.05s.88 2.38 1 2.55c.13.16 1.74 2.65 4.2 3.72.59.25 1.05.4 1.4.52.6.19 1.13.16 1.56.1.48-.07 1.47-.6 1.67-1.18.21-.58.21-1.07.15-1.18-.06-.1-.23-.16-.48-.28Z'/%3E%3C/svg%3E");
}


/*
 * ============================================================================
 * 1.4.1: bloque de contacto destacado.
 * ============================================================================
 * Sustituye el rótulo escrito («Teléfono», «WhatsApp», «Dirección») por su
 * icono, y sube el dato a tamaño de titular. El rótulo no se borra: se oculta
 * visualmente y se mantiene en el árbol de accesibilidad, porque un icono por
 * sí solo no identifica el dato (`design-system/12-accesibilidad.md`).
 */
.eficerex-contacto-destacado {
	text-align: center;
}

.eficerex-contacto-destacado > .wp-block-heading {
	border: 0;
	clip-path: inset(50%);
	height: 1px;
	margin: 0;
	overflow: hidden;
	padding: 0;
	position: absolute;
	white-space: nowrap;
	width: 1px;
}

.eficerex-contacto-destacado[class*="eficerex-icono-"] {
	--eficerex-icono-tam: 40px;
	--eficerex-icono-color: var(--wp--preset--color--brand-primary);
}

.eficerex-contacto-destacado[class*="eficerex-icono-"]::before {
	margin: 0 auto var(--wp--preset--spacing--30);
	-webkit-mask-position: center;
	mask-position: center;
}

.eficerex-contacto-destacado p {
	font-size: var(--wp--preset--font-size--2-xl);
	font-weight: 600;
	line-height: 1.25;
	margin-block: 0;
}

.eficerex-contacto-destacado a {
	text-decoration: none;
}

.eficerex-contacto-destacado a:hover,
.eficerex-contacto-destacado a:focus-visible {
	text-decoration: underline;
}

/*
 * La dirección es texto de dos líneas, no un dato de una: baja un escalón para
 * no competir con el teléfono, que es la acción que interesa.
 */
.eficerex-contacto-destacado--texto p {
	font-size: var(--wp--preset--font-size--lg);
	font-weight: 400;
	line-height: 1.5;
}


/*
 * ============================================================================
 * 1.4.1: blog en rejilla de fichas.
 * ============================================================================
 * El listado pasa de una columna con barra lateral a una rejilla de fichas con
 * imagen destacada, encabezado, extracto y pie. La barra lateral se retira en
 * `functions.php` mediante el filtro `generate_sidebar_layout`, no ocultándola
 * con CSS: así el contenido principal ocupa el ancho completo de verdad.
 *
 * Las fichas se sostienen con imagen destacada y sin ella: cuando la entrada no
 * tiene imagen, no queda hueco reservado, la ficha simplemente empieza por el
 * título.
 */
.blog .site-main,
.archive .site-main,
.search-results .site-main {
	display: grid;
	gap: var(--wp--preset--spacing--60);
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

/* Cabecera del archivo, paginación y avisos ocupan la fila entera. */
.blog .site-main > :not(article),
.archive .site-main > :not(article),
.search-results .site-main > :not(article) {
	grid-column: 1 / -1;
}

.blog .site-main > article,
.archive .site-main > article,
.search-results .site-main > article {
	border-bottom: 0;
	margin-bottom: 0;
	padding-bottom: 0;
}

.blog .inside-article,
.archive .inside-article,
.search-results .inside-article {
	background: var(--wp--preset--color--surface-card);
	border: 1px solid var(--wp--preset--color--border-default);
	border-radius: var(--wp--custom--radius--lg);
	display: flex;
	flex-direction: column;
	height: 100%;
	overflow: hidden;
	padding: 0;
}

.blog .inside-article > *,
.archive .inside-article > *,
.search-results .inside-article > * {
	padding-inline: var(--wp--preset--spacing--50);
}

.blog .inside-article > .post-image,
.archive .inside-article > .post-image,
.search-results .inside-article > .post-image {
	margin: 0;
	padding-inline: 0;
}

.blog .post-image img,
.archive .post-image img,
.search-results .post-image img {
	aspect-ratio: 16 / 10;
	display: block;
	height: auto;
	object-fit: cover;
	width: 100%;
}

.blog .inside-article > .entry-header,
.archive .inside-article > .entry-header,
.search-results .inside-article > .entry-header {
	padding-top: var(--wp--preset--spacing--50);
}

.blog .entry-title,
.archive .entry-title,
.search-results .entry-title {
	font-size: var(--wp--preset--font-size--xl);
	line-height: 1.3;
	margin-bottom: var(--wp--preset--spacing--20);
}

.blog .entry-summary,
.archive .entry-summary,
.search-results .entry-summary {
	margin-block: var(--wp--preset--spacing--30) 0;
}

/* El pie se empuja al fondo para que las fichas de una fila queden alineadas. */
.blog .inside-article > footer.entry-meta,
.archive .inside-article > footer.entry-meta,
.search-results .inside-article > footer.entry-meta {
	margin-top: auto;
	padding-bottom: var(--wp--preset--spacing--50);
	padding-top: var(--wp--preset--spacing--40);
}

@media (max-width: 1024px) {
	.blog .site-main,
	.archive .site-main,
	.search-results .site-main {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 768px) {
	.blog .site-main,
	.archive .site-main,
	.search-results .site-main {
		grid-template-columns: minmax(0, 1fr);
	}
}


/*
 * ============================================================================
 * 1.4.2: tamaño del título dentro de la ficha.
 * ============================================================================
 * Medido sobre la portada: con cuatro columnas, el ancho útil de una ficha es
 * de 232 px. El título heredaba 32 px, y a ese cuerpo «Profesionalidad» ocupa
 * unos 264 px y «mantenimiento» unos 200 px: ambos desbordan y la palabra se
 * parte dejando una letra suelta en la línea siguiente («Profesionalid/ad»).
 *
 * El título de ficha baja al escalón `xl` (1,375 rem = 22 px), con el que la
 * palabra más larga del sitio, «mantenimiento», ocupa 157 px y entra holgada.
 * No es una excepción: `03-tipografia.md` reserva los escalones grandes para
 * los titulares de sección, y el título de una ficha es un tercer nivel.
 *
 * `overflow-wrap: break-word` queda como red de seguridad para palabras muy
 * largas en pantallas estrechas; `hyphens: auto` parte por sílabas en lugar de
 * por cualquier letra, que es lo que se veía.
 */
.eficerex-tarjetas > .wp-block-column > :is(h2, h3, h4, h5) {
	font-size: var(--wp--preset--font-size--xl);
	hyphens: auto;
	line-height: 1.25;
	overflow-wrap: break-word;
}


/*
 * ============================================================================
 * 1.4.2: variante de ficha con icono a la izquierda.
 * ============================================================================
 * `--icono` centra icono, título y texto. Esta variante deja lo mismo alineado
 * a la izquierda, para cuando el texto de la ficha sea largo: centrar párrafos
 * de más de dos líneas penaliza la lectura. Se cambia una palabra en la clase
 * del bloque y no hace falta tocar nada más.
 */
.eficerex-tarjetas--icono-izq > .wp-block-column {
	align-items: flex-start;
	text-align: left;
}

.eficerex-tarjetas--icono-izq [class*="eficerex-icono-"] {
	--eficerex-icono-tam: 1.75em;
}

.eficerex-tarjetas--icono-izq [class*="eficerex-icono-"]::before {
	margin-inline: 0;
	-webkit-mask-position: left center;
	mask-position: left center;
}

