/* =====================================================================
   ERESMET · sistema de diseño (Fase 5)
   Dirección aprobada: Home C · ficha B · menús A/C · una tipografía (Archivo).
   Colores y tipografía vienen de theme.json (--wp--preset--*). Aquí solo se
   componen. Rangos: móvil < 700 px · tableta 700–1080 px · escritorio > 1080 px.
   ===================================================================== */

:root {
	--o: var(--wp--preset--color--naranja, #E8501A);
	--cta: var(--wp--preset--color--naranja-cta, #CF440E);
	--cta-h: var(--wp--preset--color--naranja-hover, #B23A0C);
	--o-l: var(--wp--preset--color--naranja-claro, #FF7A45);
	--navy: var(--wp--preset--color--azul-marino, #002145);
	--navy-2: var(--wp--preset--color--azul-marino-2, #0B2F57);
	--head: var(--wp--preset--color--titulo, #16202C);
	--ink: var(--wp--preset--color--tinta, #2E3640);
	--muted: var(--wp--preset--color--gris-texto, #5E6773);
	--line: var(--wp--preset--color--gris-linea, #DDE2E7);
	--line-2: #C5CCD4;
	--bg-2: var(--wp--preset--color--gris-fondo, #F1F3F5);
	--cut: #F4F5F7;
	--wrap: 1180px;
	--gut: clamp(1.125rem, 4vw, 2.5rem);
	--r: 2px;
	--shadow: 0 1px 2px rgb(16 24 40 / .06), 0 1px 3px rgb(16 24 40 / .08);
	--shadow-h: 0 12px 28px rgb(16 24 40 / .14);
	--ease: cubic-bezier(.2, .7, .2, 1);
	--t: .2s var(--ease);
	--eh-top: 42px;
	--eh-main: 84px;
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 90px; }
body { margin: 0; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
img { max-width: 100%; height: auto; display: block; }
a { text-underline-offset: .18em; }
:focus-visible { outline: 3px solid var(--o); outline-offset: 2px; }
.ico { width: 1em; height: 1em; flex: none; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); white-space: nowrap; }
.skip-link:focus { position: fixed !important; z-index: 1000; top: 8px; left: 8px; width: auto; height: auto; clip: auto; background: #fff; color: var(--head); padding: 10px 16px; box-shadow: var(--shadow-h); }
.es-main { overflow-x: clip; }
.wp-site-blocks > *, .wp-site-blocks > * + *, .es-main > * + * { margin-block-start: 0; }
.es-pending { display: block; font-size: .8125rem !important; background: #FFF6D6; color: #5A4500 !important; border: 1px solid #E8D48A; padding: .3rem .6rem; }
.es-wrap { width: 100%; max-width: calc(var(--wrap) + 2 * var(--gut)); margin-inline: auto; padding-inline: var(--gut); }
.es-narrow { max-width: calc(860px + 2 * var(--gut)); }
.es-notice { padding: 12px 16px; background: #FFF6D6; border: 1px solid #E8D48A; }
.tnum, .fs-tile__v { font-variant-numeric: tabular-nums; }

/* Las secciones de página (patrones) ocupan todo el ancho y controlan su propio aire. */
.es-main > .wp-block-post-content > * { margin-block: 0; }
.es-main > .wp-block-post-content > .alignfull { margin-inline: calc(-1 * var(--wp--style--root--padding-right, 0px)); }
.wp-block-post-content > .wp-block-eresmet-cotizacion.alignfull { margin-inline: 0; }

/* ---------- Tipografía y cabeceras de sección ---------- */
.es-sec-title, .wp-block-heading.is-style-con-raya { font-size: var(--wp--preset--font-size--xx-large); line-height: 1.15; color: var(--head); margin: 0 0 1.75rem; font-weight: 700; text-wrap: balance; }
.es-sec-title::before, .wp-block-heading.is-style-con-raya::before, .es-rule { content: ""; display: block; width: 56px; height: 5px; background: var(--o); margin-bottom: 1.1rem; }
.es-sec-title--s { font-size: var(--wp--preset--font-size--x-large); margin-bottom: 1.25rem; }
.es-sec--azul .es-sec-title, .is-style-seccion-azul .wp-block-heading { color: #fff; }
.es-sec-head { margin-bottom: 1.75rem; }
.es-sec-head .es-sec-title { margin-bottom: .6rem; }
.es-sec-text { color: var(--muted); font-size: 1.0625rem; max-width: 62ch; margin: 0 0 1rem; }
/* Dentro de secciones «constrained» de WordPress los párrafos ocupan el ancho del contenido (si no, se centrarían). */
.is-layout-constrained > .es-sec-text { max-width: var(--wp--style--global--content-size, 1180px); }
.es-sub { font-size: .8125rem; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); font-weight: 700; margin: 1.75rem 0 .75rem; }
.es-prose { max-width: 68ch; }
.es-prose p { margin: 0 0 1em; }
.es-more { margin: 1.5rem 0 0; font-weight: 700; }
.es-more a { color: var(--cta); text-decoration: none; }
.es-more a:hover { text-decoration: underline; }
.es-note { color: var(--muted); font-size: .9375rem; margin-top: 1.25rem; }
.es-empty { color: var(--muted); padding: 1.5rem 0; }
.es-empty-box { background: var(--bg-2); padding: 2rem; margin-top: 1.5rem; }

/* ---------- Secciones ---------- */
.es-sec, .is-style-seccion, .is-style-seccion-gris, .is-style-seccion-azul { padding-block: var(--wp--preset--spacing--60, 4rem); }
.es-sec--gris, .is-style-seccion-gris { background: var(--bg-2); }
.es-sec--azul, .is-style-seccion-azul { background: var(--navy); color: #D8DFE8; }
.is-style-seccion-azul a:not(.wp-element-button) { color: #fff; }
.es-anchor-target { scroll-margin-top: 100px; }

/* ---------- Botones ---------- */
.es-btn, .wp-element-button, .wp-block-button__link { display: inline-flex; align-items: center; justify-content: center; gap: .55em; min-height: 46px; padding: .7rem 1.5rem; font: 700 1rem/1.2 inherit; font-family: inherit; border-radius: var(--r); border: 1.5px solid transparent; text-decoration: none; cursor: pointer; transition: background var(--t), color var(--t), border-color var(--t), transform var(--t), box-shadow var(--t); }
.es-btn .ico { font-size: 1.05em; transition: transform var(--t); }
.es-btn:hover .ico:last-child { transform: translateX(3px); }
.es-btn--primario { background: var(--cta); color: #fff; }
.es-btn--primario:hover { background: var(--cta-h); color: #fff; }
.es-btn--contorno, .is-style-contorno .wp-block-button__link { background: transparent; color: var(--head); border-color: var(--line-2); }
.es-btn--contorno:hover, .is-style-contorno .wp-block-button__link:hover { border-color: var(--head); color: var(--head); background: transparent; }
.es-btn--contorno-claro, .is-style-contorno-claro .wp-block-button__link { background: transparent; color: #fff; border-color: rgb(255 255 255 / .75); }
.es-btn--contorno-claro:hover, .is-style-contorno-claro .wp-block-button__link:hover { background: #fff; color: var(--head); border-color: #fff; }
.es-btn--enlace, .es-btn--enlace-claro { padding-inline: 0; min-height: 40px; background: none; }
.es-btn--enlace { color: var(--cta); }
.es-btn--enlace-claro { color: #fff; }
.es-btn--enlace:hover, .es-btn--enlace-claro:hover { text-decoration: underline; }
.es-btn.is-sending { opacity: .7; pointer-events: none; }
.wp-block-buttons { gap: .75rem; }

/* ---------- Chips, listas, insignias ---------- */
.es-chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.es-chip { display: inline-flex; align-items: center; min-height: 34px; padding: .3rem .8rem; border: 1px solid var(--line-2); border-radius: var(--r); font-size: .875rem; color: var(--head); text-decoration: none; background: #fff; transition: border-color var(--t), background var(--t), color var(--t); }
a.es-chip:hover { border-color: var(--o); color: var(--cta); }
.es-chip.is-on { background: var(--navy); border-color: var(--navy); color: #fff; }
.es-chip.is-static { cursor: default; }
.es-badge { display: inline-block; font-size: .6875rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; padding: .2rem .5rem; border-radius: 99px; background: #FDE7DE; color: var(--cta-h); vertical-align: middle; margin-left: .4rem; }
.es-checks, .es-dots, .is-style-check { list-style: none; padding: 0; margin: 0; }
.es-checks li, .is-style-check li { position: relative; padding-left: 1.6rem; margin-bottom: .5rem; }
.es-checks li::before, .is-style-check li::before { content: ""; position: absolute; left: 0; top: .35em; width: 1rem; height: .55rem; border-left: 2px solid var(--o); border-bottom: 2px solid var(--o); transform: rotate(-45deg) scale(.8); transform-origin: 30% 60%; }
.es-dots li { position: relative; padding-left: 1.1rem; margin-bottom: .4rem; }
.es-dots li::before { content: ""; position: absolute; left: 0; top: .62em; width: 6px; height: 6px; background: var(--o); }

/* ---------- Rejillas y tarjetas ---------- */
.es-grid { list-style: none; margin: 0; padding: 0; display: grid; gap: clamp(1rem, 2.4vw, 1.75rem); }
.es-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.es-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.es-grid > li { display: flex; }
.es-grid > li > * { flex: 1; }
.es-card { position: relative; display: flex; flex-direction: column; background: #fff; border: 1px solid var(--line); text-decoration: none; color: inherit; height: 100%; transition: box-shadow var(--t), transform var(--t), border-color var(--t); }
.es-card:hover, .es-card:focus-within { box-shadow: var(--shadow-h); transform: translateY(-3px); border-color: transparent; }
.es-card__link { display: flex; flex-direction: column; height: 100%; color: inherit; text-decoration: none; }
.es-card__media { position: relative; aspect-ratio: 3 / 2; overflow: hidden; background: var(--cut); }
.es-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--ease); }
.es-card:hover .es-card__media img { transform: scale(1.04); }
.es-card__body { padding: 1.1rem 1.25rem 1.35rem; display: flex; flex-direction: column; gap: .35rem; flex: 1; }
.es-card__eyebrow { font-size: .75rem; letter-spacing: .07em; text-transform: uppercase; color: var(--muted); font-weight: 600; }
.es-card__title { margin: 0; font-size: 1.125rem; line-height: 1.3; color: var(--head); font-weight: 700; }
.es-card__text { margin: .2rem 0 0; font-size: .9375rem; color: var(--muted); }
.es-card__meta { font-size: .875rem; color: var(--muted); }
.es-card__count { font-size: .8125rem; color: var(--muted); white-space: nowrap; }
.es-card--familia { padding: 8px; }
.es-card--familia .es-card__media { aspect-ratio: 16 / 10; }
.es-card--familia .es-card__body { flex-direction: row; justify-content: space-between; align-items: flex-start; gap: 1rem; padding: 1rem .6rem .7rem; }
.es-card--familia .es-card__title { font-size: 1.0625rem; }
.es-card--producto .es-card__body::before { content: ""; width: 36px; height: 4px; background: var(--o); margin-bottom: .45rem; }
/* Tarjeta oscura (relacionados, ficha B) */
.es-card--oscuro { border: 0; background: var(--head); }
.es-card--oscuro .es-card__body { background: var(--head); padding: 1.35rem 1.5rem 1.75rem; }
.es-card--oscuro .es-card__eyebrow { color: #AEB8C4; }
.es-card--oscuro .es-card__title { color: #fff; font-size: 1.25rem; }
/* Proyecto: foto 5:4 con placa de cliente */
.es-card--proyecto .es-card__media { aspect-ratio: 5 / 4; }
.es-card__plate { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); background: #fff; padding: 12px 16px; min-width: 120px; max-width: 58%; min-height: 64px; display: grid; place-items: center; font-weight: 700; color: var(--head); box-shadow: 0 6px 18px rgb(0 0 0 / .18); }
.es-card__plate img { max-height: 44px; width: auto; object-fit: contain; }
.es-card__badge { position: absolute; right: 12px; top: 12px; width: 36px; height: 36px; border-radius: 50%; background: rgb(255 255 255 / .92); display: grid; place-items: center; color: var(--navy); }
.es-card__badge .ico { fill: currentColor; font-size: 14px; }
/* Imagen ausente: bloque neutro (regla de reserva aprobada) */
.es-ph { width: 100%; height: 100%; min-height: 100%; display: grid; place-content: center; text-align: center; gap: .2rem; background: repeating-linear-gradient(135deg, #EEF1F4 0 12px, #E7EBEF 12px 24px); color: var(--muted); padding: 1rem; }
.es-ph span { font-weight: 700; color: var(--head); }
.es-ph small { font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; }
.es-ph--hero { position: absolute; inset: 0; }

/* =====================================================================
   HEADER (base C, único en todo el sitio)
   ===================================================================== */
/* El envoltorio de la parte «header» es el que se queda fijo (el header vive dentro de él). */
.es-header-part { position: sticky; top: 0; z-index: 100; }
.admin-bar .es-header-part { top: 32px; }
.eh { position: relative; background: #fff; }
.eh-wrap { max-width: calc(var(--wrap) + 2 * var(--gut)); margin-inline: auto; padding-inline: var(--gut); display: flex; align-items: center; }
.eh-top { background: var(--navy); color: #fff; font-size: .8125rem; }
.eh-top .eh-wrap { justify-content: flex-end; gap: 1.1rem; min-height: var(--eh-top); }
.eh-top__it { display: inline-flex; align-items: center; gap: .45rem; color: #fff; text-decoration: none; white-space: nowrap; }
.eh-top__it:hover { color: var(--o-l); }
.eh-top__sep { width: 1px; height: 18px; background: rgb(255 255 255 / .3); }
.eh-search { display: inline-flex; align-items: center; border: 1px solid rgb(255 255 255 / .55); border-radius: 99px; padding: 0 .35rem 0 .85rem; min-width: 190px; transition: border-color var(--t), background var(--t); }
.eh-search:focus-within { border-color: #fff; background: rgb(255 255 255 / .08); }
.eh-search input { flex: 1; min-width: 0; border: 0; background: transparent; color: #fff; font: inherit; font-size: .8125rem; padding: .35rem 0; outline: 0; }
.eh-search input::placeholder { color: rgb(255 255 255 / .8); }
.eh-search button { border: 0; background: none; color: #fff; padding: .3rem; display: grid; cursor: pointer; }
.eh-cta { display: inline-flex; align-items: center; gap: .4rem; background: var(--cta); color: #fff; border-radius: 99px; padding: .4rem 1.1rem; font-weight: 700; font-size: .875rem; text-decoration: none; transition: background var(--t); }
.eh-cta:hover { background: var(--cta-h); color: #fff; }
.eh-main { border-bottom: 1px solid var(--line); position: relative; background: #fff; transition: box-shadow var(--t); }
.eh.is-scrolled .eh-main { box-shadow: 0 6px 18px rgb(16 24 40 / .07); }
.eh-main .eh-wrap { justify-content: space-between; min-height: var(--eh-main); gap: 2rem; }
.es-portada .eh-main { border-bottom-color: var(--o); border-bottom-width: 2px; }
.eh-logo { display: block; flex: none; }
.eh-logo-img { height: 46px; width: auto; }
.eh-nav { flex: 1; display: flex; justify-content: flex-end; }
.eh-menu { list-style: none; margin: 0; padding: 0; display: flex; gap: clamp(1rem, 2vw, 1.75rem); }
.eh-item { position: static; }
.eh-item.is-small { position: relative; }
.eh-link { position: relative; display: inline-flex; align-items: center; gap: .45rem; padding: 1.9rem 0; color: var(--head); text-decoration: none; font-weight: 500; font-size: 1rem; white-space: nowrap; }
.eh-link::after { content: ""; position: absolute; left: 0; bottom: 1.3rem; width: 0; height: 3px; background: var(--o); transition: width var(--t); }
.eh-item.is-current > .eh-link::after, .eh-item.is-open > .eh-link::after, .eh-link:hover::after { width: 28px; }
.eh-caret { width: 0; height: 0; border: 4.5px solid transparent; border-top: 5px solid var(--o); border-bottom: 0; transition: transform var(--t); }
.eh-item.is-open .eh-caret { transform: rotate(180deg); }
.eh-mob-actions { display: none; gap: .25rem; }
.eh-icon-btn { border: 0; background: none; color: var(--navy); width: 44px; height: 44px; display: grid; place-items: center; font-size: 1.5rem; cursor: pointer; border-radius: var(--r); }
.eh-icon-btn:hover { background: var(--bg-2); }

/* Paneles: fondo blanco sólido y línea naranja superior (común a todos). */
.eh-panel { position: absolute; left: 0; right: 0; top: 100%; background: #fff; border-top: 3px solid var(--o); box-shadow: 0 24px 44px rgb(0 0 0 / .22); opacity: 0; transform: translateY(-6px); transition: opacity var(--t), transform var(--t); z-index: 5; }
.eh-item.is-open > .eh-panel { opacity: 1; transform: none; }
.eh-panel__in { max-width: calc(var(--wrap) + 2 * var(--gut)); margin-inline: auto; padding: 1.4rem var(--gut) 1rem; max-height: calc(100vh - 150px); overflow: auto; }
.eh-panel.is-small { left: auto; right: -1rem; width: 340px; }
.eh-panel.is-small .eh-panel__in { padding: 1rem 0 .5rem; }
.eh-scrim { position: fixed; inset: 0; top: 0; z-index: -1; background: rgb(0 20 40 / .42); opacity: 0; transition: opacity var(--t); }
.eh-scrim.is-on { opacity: 1; }
.mm-h { font-size: 1.125rem; font-weight: 400; color: #6B7480; padding-bottom: .55rem; border-bottom: 1px solid var(--line); margin: 0 0 .6rem; }
.mm-crumb { font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); margin: 0 0 .2rem; }
.mm-sub { font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; font-weight: 700; color: var(--muted); margin: 1rem 0 .45rem; }
.mm-foot { display: flex; justify-content: space-between; gap: 1rem; margin-top: 1.25rem; padding-top: .9rem; border-top: 1px solid var(--line); font-weight: 600; font-size: .9rem; }
.mm-foot a { color: var(--head); text-decoration: none; }
.mm-foot a.is-cta { color: var(--cta); }
.mm-foot a:hover { text-decoration: underline; }

/* Mega menú Productos (A_escritorio_1280): 2 columnas + asesoría */
.mm--productos { display: grid; grid-template-columns: 1fr 1.05fr .85fr; }
.mm-col { padding: 0 1.75rem; border-left: 1px solid var(--line); }
.mm-col:first-child { padding-left: 0; border-left: 0; }
.mm-col:last-child { padding-right: 0; }
.mm-group { margin-bottom: .35rem; }
.mm-fam { display: inline-block; font-weight: 700; font-size: .9375rem; color: var(--head); text-decoration: none; margin: .5rem 0 .2rem; }
.mm-fam:hover { color: var(--cta); }
.mm-fam.is-direct::after { content: " ›"; color: var(--o); }
.mm-list { list-style: none; margin: 0; padding: 0; }
.mm-list li { line-height: 1.5; padding-block: .14rem; }
.mm-list a { font-size: .875rem; color: #4A5563; text-decoration: none; transition: color var(--t), padding var(--t); }
.mm-list a:hover { color: var(--cta); }
.mm-list li.is-a a { color: var(--head); font-weight: 600; }
.mm-promo { display: flex; flex-direction: column; gap: .5rem; }
.mm-promo__img { aspect-ratio: 16 / 10; overflow: hidden; background: var(--cut); margin: .35rem 0 .25rem; }
.mm-promo__img img { width: 100%; height: 100%; object-fit: cover; }
.mm-promo__t { font-weight: 700; font-size: 1.0625rem; color: var(--head); margin: 0; line-height: 1.3; }
.mm-promo__x { font-size: .875rem; color: #4A5563; margin: 0 0 .5rem; }
.mm-promo .es-btn { align-self: flex-start; min-height: 40px; font-size: .875rem; padding: .5rem 1rem; }
.mm-more { font-size: .875rem; font-weight: 600; color: var(--cta); text-decoration: none; }

/* Menú Servicios (A): lista + presentación / detalle */
.mm--servicios { display: grid; grid-template-columns: 320px 1fr; min-height: 340px; }
.sv-list { border-right: 1px solid var(--line); padding-right: 0; }
.sv-list ul, .sp-list ul { list-style: none; margin: 0; padding: 0; }
.sv-list a, .sp-list a { display: grid; grid-template-columns: 26px 1fr 14px; gap: .75rem; align-items: center; padding: .7rem .9rem .7rem .75rem; border-left: 3px solid transparent; color: var(--head); text-decoration: none; transition: background var(--t), border-color var(--t); }
.sv-list a strong, .sp-list a span { display: block; font-size: .9375rem; font-weight: 600; line-height: 1.3; }
.sv-list a small { display: none; font-size: .8125rem; color: var(--muted); line-height: 1.35; margin-top: .1rem; }
.sv-list a:hover, .sv-list a.is-on, .sp-list a:hover, .sp-list a.is-on { background: var(--bg-2); border-left-color: var(--o); }
.sv-ico { font-size: 1.5rem; color: var(--navy); }
.sv-go { font-size: .85rem; opacity: .45; }
.sv-list a.is-on .sv-go, .sp-list a.is-on .sv-go { opacity: 1; color: var(--o); }
.sv-other { font-size: .8125rem; color: var(--muted); padding: .75rem; margin: 0; }
.sv-panes { position: relative; padding-left: 2rem; }
.sv-pane { display: none; grid-template-columns: 1.2fr 1fr; gap: 1.75rem; animation: es-fade .2s var(--ease); }
.sv-pane.is-active { display: grid; }
.sv-pane__txt p { font-size: .9375rem; color: #4A5563; margin: 0 0 .75rem; }
.sv-pane__t { font-size: 1.5rem !important; font-weight: 700; color: var(--head) !important; margin: .1rem 0 .5rem !important; line-height: 1.2; }
.sv-pane__img { aspect-ratio: 4 / 3; overflow: hidden; background: var(--cut); align-self: start; }
.sv-pane__img img { width: 100%; height: 100%; object-fit: cover; }
.sv-pane__btns { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: 1rem; }
.sv-pane__btns .es-btn { min-height: 42px; font-size: .9375rem; padding: .55rem 1.1rem; }
.sv-pane .es-checks li { font-size: .875rem; margin-bottom: .3rem; }
.sv-pane .es-chip { min-height: 30px; font-size: .8125rem; }
.sv-chain { display: flex; flex-wrap: wrap; gap: .25rem .7rem; font-size: .75rem !important; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--head) !important; }
.sv-chain span + span::before { content: "›"; color: var(--o); margin-right: .7rem; }

/* Menú Empresa (C): desplegable compacto */
.emp { padding: 0 1.25rem; }
.emp ul { list-style: none; margin: 0 0 .35rem; padding: 0; }
.emp a { display: block; padding: .3rem 0; color: #4A5563; font-size: .9rem; text-decoration: none; }
.emp a:hover { color: var(--cta); }
.emp-g { font-size: .75rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--head); margin: .75rem 0 .3rem; padding-bottom: .4rem; border-bottom: 1px solid var(--line); }
.emp-g:first-child { margin-top: 0; }
.emp-foot { font-size: .75rem; color: var(--muted); border-top: 1px solid var(--line); margin: .6rem 0 0; padding: .6rem 0 .2rem; }
.dd-list { list-style: none; margin: 0; padding: 0 1.25rem; }
.dd-list a { display: block; padding: .4rem 0; color: var(--head); text-decoration: none; }

/* Menú Software (C) */
.mm--software .mm-h { display: flex; align-items: center; gap: .5rem; font-size: .8125rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--head); }
.sw-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; margin-top: .75rem; }
.sw-card { display: flex; flex-direction: column; gap: .4rem; padding: 1.1rem; border: 1px solid var(--line); color: var(--head); text-decoration: none; background: #fff; transition: border-color var(--t), box-shadow var(--t); }
a.sw-card:hover { border-color: var(--o); box-shadow: var(--shadow); }
.sw-card .es-badge { margin: 0; align-self: flex-start; }
.sw-card strong { font-size: 1rem; line-height: 1.3; }
.sw-card small { color: var(--muted); font-size: .8125rem; }
.sw-ico { font-size: 1.5rem; color: var(--navy); }
.sw-card--cta { background: var(--bg-2); border-color: var(--bg-2); }
.sw-card--cta .es-btn { margin-top: auto; min-height: 40px; font-size: .875rem; padding: .5rem 1rem; }
.sw-note { font-size: .8125rem; color: var(--muted); margin: 1rem 0 0; }

/* Menú móvil (panel lateral con acordeones) */
.eh-drawer { position: fixed; inset: 0; z-index: 200; background: #fff; overflow-y: auto; transform: translateX(100%); transition: transform .25s var(--ease); padding-bottom: 2rem; }
.eh-drawer.is-open { transform: none; }
.has-drawer { overflow: hidden; }
.eh-drawer__head { position: sticky; top: 0; z-index: 2; display: flex; justify-content: space-between; align-items: center; padding: .6rem var(--gut); background: #fff; border-bottom: 1px solid var(--line); }
.eh-drawer__head .eh-logo-img { height: 36px; }
.eh-drawer__search { padding: 1rem var(--gut) .5rem; }
.eh-drawer__search .eh-search { width: 100%; border-color: var(--line-2); }
.eh-drawer__search .eh-search input { color: var(--head); font-size: 1rem; padding: .6rem 0; }
.eh-drawer__search .eh-search input::placeholder { color: var(--muted); }
.eh-drawer__search .eh-search button { color: var(--navy); font-size: 1.2rem; }
.mob-nav, .mob-sub, .mob-nav ul { list-style: none; margin: 0; padding: 0; }
.mob-nav { padding: 0 var(--gut); }
.mob-nav > li { border-bottom: 1px solid var(--line); }
.mob-toggle, .mob-link { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding: 1rem 0; background: none; border: 0; font: inherit; font-size: 1.0625rem; font-weight: 600; color: var(--head); text-decoration: none; text-align: left; cursor: pointer; }
.mob-toggle .es-badge { margin-left: auto; }
.mob-toggle .ico { color: var(--o); transition: transform var(--t); }
.mob-toggle[aria-expanded="true"] .ico { transform: rotate(180deg); }
.mob-sub { padding: 0 0 .75rem .25rem; }
.mob-sub a { display: block; padding: .55rem 0; color: #4A5563; text-decoration: none; }
.mob-toggle--sub { font-size: .9375rem; padding: .6rem 0; }
.mob-sub .mob-sub { border-left: 2px solid var(--line); padding-left: .85rem; margin-bottom: .4rem; }
.mob-fam { font-weight: 600; color: var(--head) !important; }
.mob-all { color: var(--cta) !important; font-weight: 700; }
.mob-group > span { display: block; font-size: .75rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--head); margin: .6rem 0 .1rem; }
.mob-actions { display: grid; gap: .6rem; padding: 1.25rem var(--gut); }
.mob-actions .es-btn { width: 100%; }

/* Barra fija inferior (móvil) */
.es-mbar { display: none; }

/* =====================================================================
   FOOTER (azul marino)
   ===================================================================== */
.ef { background: var(--navy); color: #C9D3E0; font-size: .9375rem; }
.ef-wrap { max-width: calc(var(--wrap) + 2 * var(--gut)); margin-inline: auto; padding-inline: var(--gut); }
.ef-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr .8fr; gap: 2.5rem; padding-block: 3.5rem 2.5rem; }
.ef-plate { display: inline-block; background: #fff; padding: 10px 14px; margin-bottom: 1rem; }
.ef-logo-img { height: 40px; width: auto; }
.ef-brand p { margin: 0 0 1rem; max-width: 36ch; }
.ef-h { color: #fff; font-weight: 700; margin: 0 0 .9rem; font-size: 1rem; }
.ef-h a { color: #fff; text-decoration: none; }
.ef-list, .ef-contact { list-style: none; margin: 0; padding: 0; }
.ef-list li { margin-bottom: .45rem; }
.ef a { color: #C9D3E0; text-decoration: none; transition: color var(--t); }
.ef a:hover { color: #fff; text-decoration: underline; }
.ef-contact li { display: flex; gap: .55rem; align-items: center; margin-bottom: .45rem; }
.ef-contact a { display: inline-flex; gap: .55rem; align-items: center; }
.ef-contact .ico { color: var(--o-l); }
.ef-social { display: flex; gap: .75rem; margin-top: 1rem; font-size: 1.35rem; }
.ef-bottom { border-top: 1px solid rgb(255 255 255 / .12); font-size: .8125rem; color: #9FB0C4; }
.ef-bottom .ef-wrap { padding-block: 1.1rem; }

/* =====================================================================
   HOME (dirección C)
   ===================================================================== */
/* Portada: foto en sus colores originales; solo un degradado neutro inferior para leer el texto. */
.es-hero.wp-block-cover { min-height: clamp(460px, 72vh, 640px); padding: 0; align-items: stretch; }
.es-hero .wp-block-cover__background { background: linear-gradient(180deg, rgb(10 14 20 / .10) 0%, rgb(10 14 20 / .28) 45%, rgb(10 14 20 / .62) 100%) !important; opacity: 1 !important; }
.es-hero .wp-block-cover__inner-container { display: flex; flex-direction: column; justify-content: flex-end; width: 100%; max-width: calc(var(--wrap) + 2 * var(--gut)); margin-inline: auto; padding: 5rem var(--gut) 0; color: #fff; }
.es-hero h1 { color: #fff; font-weight: 400; font-size: clamp(2rem, 4vw, 3.25rem); max-width: 22ch; margin: 0 auto .9rem; text-align: center; text-shadow: 0 2px 18px rgb(0 0 0 / .35); line-height: 1.1; }
.es-hero h1 strong { font-weight: 800; }
.es-hero p { text-align: center; max-width: 58ch; margin: 0 auto 1.6rem; font-size: 1.125rem; text-shadow: 0 1px 10px rgb(0 0 0 / .4); }
.es-hero .wp-block-buttons { justify-content: center; margin-bottom: 2.75rem; }
.es-chain { display: flex !important; justify-content: center; flex-wrap: wrap; gap: .5rem 2.25rem; border-top: 1px solid rgb(255 255 255 / .35); padding: 1.1rem 0 1.35rem; margin: 0 !important; }
.es-chain p { position: relative; margin: 0 !important; display: inline-flex; align-items: center; gap: .6rem; font-size: .9375rem !important; font-weight: 600; text-shadow: none !important; max-width: none !important; }
.es-chain p::before { content: ""; width: 32px; height: 32px; border: 1px solid rgb(255 255 255 / .6); border-radius: var(--r); flex: none; }
.es-chain p::after { content: ""; position: absolute; left: 7px; top: 50%; width: 18px; height: 18px; margin-top: -9px; background: #fff; -webkit-mask: var(--i) center / contain no-repeat; mask: var(--i) center / contain no-repeat; }
.es-chain em { font-style: normal; color: var(--o-l); font-size: .8125rem; font-weight: 700; }
/* Iconos por clase (patrones hechos con bloques nativos: el texto se edita, el icono lo pone la clase). */
.has-icon-diseno { --i: url("../icons/diseno.svg"); }
.has-icon-fabricacion { --i: url("../icons/fabricacion.svg"); }
.has-icon-suministro { --i: url("../icons/suministro.svg"); }
.has-icon-instalacion { --i: url("../icons/instalacion.svg"); }
.has-icon-mantenimiento { --i: url("../icons/mantenimiento.svg"); }

/* Necesidades (C): lista en tarjetas finas, 3 columnas */
.es-needs { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; }
.es-need { display: flex; align-items: center; gap: .9rem; padding: 1rem 1.1rem; border: 1px solid var(--line); background: #fff; color: var(--head); text-decoration: none; font-weight: 500; font-size: .9375rem; line-height: 1.35; height: 100%; transition: border-color var(--t), box-shadow var(--t); }
.es-need:hover { border-color: var(--o); box-shadow: var(--shadow); }
.es-need__ico { font-size: 1.6rem; color: var(--navy); }
.es-need span { flex: 1; }
.es-need__go { color: var(--o); opacity: 0; transform: translateX(-4px); transition: opacity var(--t), transform var(--t); }
.es-need:hover .es-need__go { opacity: 1; transform: none; }
.es-needs--chips { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.5rem; }

/* «Fabricación propia, de principio a fin»: pasos numerados */
.es-steps { counter-reset: paso; }
.es-steps > .wp-block-group { counter-increment: paso; position: relative; padding: .95rem 0 .95rem 4.75rem !important; border-bottom: 1px solid var(--line); margin: 0 !important; min-height: 4.2rem; }
.es-steps > .wp-block-group::before { content: counter(paso); position: absolute; left: 0; top: .8rem; font-size: 1.5rem; font-weight: 700; color: var(--o); line-height: 1.2; }
.es-steps > .wp-block-group::after { content: ""; position: absolute; left: 2.2rem; top: 1rem; width: 26px; height: 26px; background: var(--navy); -webkit-mask: var(--i) center / contain no-repeat; mask: var(--i) center / contain no-repeat; }
.es-steps > .wp-block-group > * { margin: 0 !important; }
.es-steps h3, .es-steps h4 { font-size: 1.0625rem; margin: 0; }
.es-steps p { color: var(--muted); font-size: .9375rem; }
.es-steps a { color: inherit; text-decoration: none; }
.es-steps a:hover { color: var(--cta); }
.is-style-marco img { border: 1px solid var(--line); padding: 8px; background: #fff; }

/* Muro de logos a color: celdas iguales, aire generoso, se reorganiza al añadir o quitar */
.es-logos { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: clamp(1rem, 2vw, 1.5rem); }
.es-logos__item { display: grid; place-items: center; background: #fff; border: 1px solid var(--line); aspect-ratio: 16 / 9; padding: 1.1rem 1.4rem; transition: box-shadow var(--t), border-color var(--t); }
.es-logos__item:hover { box-shadow: var(--shadow); border-color: var(--line-2); }
.es-logos__item img { max-width: 100%; max-height: 76px; width: auto; height: auto; object-fit: contain; }
.es-logos__name { font-weight: 700; color: var(--head); text-align: center; }
.is-style-seccion-azul .es-logos__item { border-color: transparent; }

/* Recursos: filas de documento */
.es-res-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .75rem; }
.es-res { display: grid; grid-template-columns: 48px 1fr auto; gap: 1rem; align-items: center; background: #fff; border: 1px solid var(--line); padding: .9rem 1.1rem; transition: border-color var(--t), box-shadow var(--t); }
.es-res:hover { border-color: var(--line-2); box-shadow: var(--shadow); }
.es-res__ico { width: 48px; height: 48px; display: grid; place-items: center; font-size: 1.6rem; color: var(--navy); background: var(--bg-2); overflow: hidden; }
.es-res__ico img { width: 100%; height: 100%; object-fit: cover; }
.es-res__txt strong { display: block; color: var(--head); font-size: 1rem; line-height: 1.3; }
.es-res__txt small { color: var(--muted); font-size: .8125rem; }
.es-res__go { display: inline-flex; align-items: center; gap: .4rem; font-weight: 700; font-size: .9375rem; color: var(--cta); text-decoration: none; white-space: nowrap; }
.es-res__go:hover { text-decoration: underline; }

/* Cierre «Cuéntenos su proyecto»: fondo neutro claro (sin gran fondo naranja) */
.es-closing { background: var(--bg-2); padding-block: var(--wp--preset--spacing--60, 4rem); border-top: 1px solid var(--line); }
.es-closing__grid { display: grid; grid-template-columns: .85fr 1.15fr; gap: clamp(2rem, 5vw, 4.5rem); align-items: start; }
.es-closing__intro .es-sec-title { font-size: var(--wp--preset--font-size--xx-large); }
.es-channels { list-style: none; margin: 1.5rem 0 0; padding: 0; display: grid; gap: .6rem; }
.es-channels li, .es-channels a { display: flex; align-items: center; gap: .85rem; color: var(--head); text-decoration: none; }
.es-channels .ico { width: 42px; height: 42px; padding: 10px; background: #fff; border: 1px solid var(--line); color: var(--cta); }
.es-channels small { display: block; font-size: .75rem; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.es-channels span { font-weight: 600; }
.es-channels a:hover span { color: var(--cta); }

/* Banda corta de CTA (familia, proyecto) */
.es-band { background: var(--bg-2); border-top: 1px solid var(--line); padding-block: 2.25rem; }
.es-band__in { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; flex-wrap: wrap; }
.es-band__t { margin: 0; font-size: 1.25rem; font-weight: 600; color: var(--head); max-width: 48ch; }

/* =====================================================================
   FORMULARIO
   ===================================================================== */
.es-form { background: #fff; border: 1px solid var(--line); padding: clamp(1.25rem, 3vw, 2rem); }
.es-form__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem 1.25rem; }
.es-field { margin: 0; display: flex; flex-direction: column; gap: .35rem; }
.es-field--full { grid-column: 1 / -1; }
.es-field label { font-size: .875rem; font-weight: 600; color: var(--head); }
.es-field label span { font-weight: 400; color: var(--muted); }
.es-field abbr, .es-check abbr { color: var(--cta); text-decoration: none; }
.es-field input, .es-field textarea, .es-field select, .es-filters select, .es-search-big input { width: 100%; font: inherit; font-size: 1rem; color: var(--head); background: #fff; border: 1px solid var(--line-2); border-radius: var(--r); padding: .7rem .8rem; min-height: 46px; transition: border-color var(--t), box-shadow var(--t); }
.es-field input:focus, .es-field textarea:focus, .es-filters select:focus, .es-search-big input:focus { outline: 0; border-color: var(--navy); box-shadow: 0 0 0 3px rgb(0 33 69 / .12); }
.es-field input[type=file] { padding: .5rem; font-size: .875rem; }
.es-field.is-error input, .es-field.is-error textarea { border-color: #B42318; box-shadow: 0 0 0 3px rgb(180 35 24 / .1); }
.es-check { display: flex; gap: .6rem; align-items: flex-start; margin: 1.1rem 0 0; font-size: .875rem; color: var(--ink); }
.es-check input { width: 18px; height: 18px; margin-top: .15rem; accent-color: var(--navy); flex: none; }
.es-check.is-error label { color: #B42318; }
.es-form__send { margin: 1.25rem 0 0; }
.es-form__alert { background: #FEF3F2; color: #912018; border: 1px solid #FECDCA; padding: .75rem 1rem; margin: 0 0 1rem; }
.es-form__trap { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.es-quote { display: grid; grid-template-columns: 1.4fr .8fr; gap: 2rem; align-items: start; }
.es-quote__aside { background: var(--bg-2); padding: 1.5rem; }
.es-quote__h { font-weight: 700; color: var(--head); margin: 0; }
.es-quote__small { font-size: .875rem; color: var(--muted); margin: 1rem 0 0; }
.es-filters { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 1rem; margin-bottom: 1.75rem; }
.es-filters label { display: grid; gap: .3rem; font-size: .8125rem; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; min-width: 220px; }
.js .es-filters__go { display: none; }
.es-filters__clear { font-size: .875rem; color: var(--cta); padding-bottom: .75rem; }
.es-search-big { display: flex; gap: .6rem; margin-bottom: 2rem; }

/* =====================================================================
   PÁGINAS: cabecera de página, migas
   ===================================================================== */
.wp-block-eresmet-migas { background: #fff; }
.es-crumbs ol { list-style: none; margin: 0; padding: .85rem 0; display: flex; flex-wrap: wrap; gap: .25rem .5rem; font-size: .8125rem; color: var(--muted); }
.es-crumbs li + li::before { content: "›"; margin-right: .5rem; color: var(--o); }
.es-crumbs a { color: var(--muted); text-decoration: none; }
.es-crumbs a:hover { color: var(--cta); text-decoration: underline; }
.es-crumbs [aria-current] { color: var(--head); font-weight: 600; }
.pg-head { position: relative; background: var(--navy); color: #fff; padding-block: clamp(2.5rem, 6vw, 4.5rem); overflow: hidden; }
.pg-head__media { position: absolute; inset: 0; }
.pg-head__media img { width: 100%; height: 100%; object-fit: cover; }
.pg-head--img .pg-head__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgb(0 20 40 / .88) 0%, rgb(0 20 40 / .6) 55%, rgb(0 20 40 / .2) 100%); }
.pg-head__in { position: relative; }
.pg-head__eyebrow { font-size: .8125rem; letter-spacing: .09em; text-transform: uppercase; color: var(--o-l); font-weight: 700; margin: 0 0 .5rem; }
.pg-head__title { color: #fff; font-size: var(--wp--preset--font-size--hero); margin: 0 0 .75rem; max-width: 20ch; }
.pg-head__text { font-size: 1.125rem; max-width: 60ch; margin: 0 0 .5rem; color: #E3E9F0; }
.pg-head__meta { font-size: .875rem; color: #C9D3E0; margin: 0; }
.es-pghead { background: var(--bg-2); padding-block: clamp(2rem, 5vw, 3.5rem) !important; }
.es-pghead .wp-block-heading { margin: 0 0 .6rem; }
.es-pghead p { color: var(--muted); font-size: 1.0625rem; margin-block: 0; }
.pg-simple { padding-block: 2rem 4rem; }

/* =====================================================================
   FICHA DE PRODUCTO (dirección B)
   ===================================================================== */
.fh { position: relative; background: var(--navy); }
.fh-media { position: relative; height: clamp(300px, 38vw, 470px); overflow: hidden; background: var(--cut); }
.fh-media img { width: 100%; height: 100%; object-fit: cover; }
.fh-wrap { position: relative; margin-top: -170px; }
.fh-panel { position: relative; background: var(--navy); color: #fff; padding: 2.25rem 2.75rem 2rem; display: grid; grid-template-columns: 1fr auto; gap: .35rem 2rem; max-width: 1060px; margin-inline: auto; }
.fh-eyebrow { grid-column: 1; font-size: .8125rem; letter-spacing: .09em; text-transform: uppercase; font-weight: 700; color: var(--o-l); text-decoration: none; margin: 0; }
.fh-eyebrow:hover { text-decoration: underline; color: var(--o-l); }
.fh-title { grid-column: 1; margin: 0; color: #fff; font-size: clamp(1.9rem, 3.4vw, 2.6rem); line-height: 1.1; }
.fh-cta { grid-column: 2; grid-row: 1 / span 2; align-self: start; }
.fh-panel .es-rule { grid-column: 1 / -1; margin: .9rem 0 .5rem; }
.fh-summary { grid-column: 1 / -1; margin: 0; font-size: 1.125rem; color: #DCE3EC; max-width: 70ch; }
.fh-actions { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; align-items: center; margin-top: 1.1rem; }
.fh-actions .es-btn--contorno-claro { min-height: 42px; padding: .5rem 1.1rem; font-size: .9375rem; }
.fh-anchors { background: #1B2530; }
.fh-anchors .es-wrap { display: flex; justify-content: center; flex-wrap: wrap; gap: .25rem 2.25rem; min-height: 58px; align-items: center; }
.fh-anchors a, .fh-sticky__nav a { color: #D2D6DB; text-decoration: none; font-size: .8125rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; display: inline-flex; gap: .4rem; align-items: center; padding: .4rem 0; border-bottom: 2px solid transparent; transition: color var(--t), border-color var(--t); }
.fh-anchors a:hover { color: #fff; border-bottom-color: var(--o); }
.fh-sticky { position: fixed; left: 0; right: 0; top: calc(var(--eh-top) + var(--eh-main)); z-index: 90; background: #fff; border-bottom: 1px solid var(--line); box-shadow: 0 6px 18px rgb(16 24 40 / .08); transform: translateY(-110%); opacity: 0; pointer-events: none; transition: transform .25s var(--ease), opacity .25s var(--ease); }
.admin-bar .fh-sticky { top: calc(var(--eh-top) + var(--eh-main) + 32px); }
.fh-sticky.is-visible { transform: none; opacity: 1; pointer-events: auto; }
.fh-sticky .es-wrap { display: flex; align-items: center; gap: 1.5rem; min-height: 58px; }
.fh-sticky__name { font-weight: 700; color: var(--head); white-space: nowrap; }
.fh-sticky__nav { display: flex; gap: 1.5rem; flex: 1; overflow-x: auto; scrollbar-width: none; }
.fh-sticky__nav a { color: var(--muted); }
.fh-sticky__nav a:hover { color: var(--head); border-bottom-color: var(--o); }
.fh-sticky .es-btn { min-height: 40px; padding: .45rem 1.1rem; font-size: .9375rem; }
.fr-grid { display: grid; grid-template-columns: 1.35fr 1fr; gap: clamp(2rem, 5vw, 4.5rem); }
.fr-main .es-sub:first-of-type { margin-top: 1.5rem; }
.fr-aside .es-sub:first-child { margin-top: .5rem; }
.es-parts { list-style: none; margin: 0; padding: 0; }
.es-parts li { padding: .5rem 0 .5rem 1.1rem; border-bottom: 1px solid var(--line); position: relative; font-size: .9375rem; }
.es-parts li::before { content: ""; position: absolute; left: 0; top: 1.05em; width: 6px; height: 6px; background: var(--navy); }
.es-parts small { display: block; color: var(--muted); font-size: .8125rem; }
.fr-services { margin-top: 2rem; }

/* Galería: 1 grande + miniaturas; en móvil, carrusel táctil */
.es-gallery { display: grid; grid-template-columns: 2fr 1fr; grid-auto-rows: clamp(140px, 15vw, 220px); gap: 1rem; }
.es-gallery:has(.es-gallery__item:nth-child(4)) { grid-template-columns: 2fr 1fr 1fr; }
.es-gallery__item { position: relative; margin: 0; overflow: hidden; background: #fff; }
.es-gallery__item.is-main { grid-row: span 2; }
/* 2 o 4 imágenes: la última completa el hueco. */
.es-gallery__item:nth-child(2):last-child { grid-row: span 2; }
.es-gallery__item:nth-child(4):last-child { grid-column: span 2; }
.es-gallery:has(.es-gallery__item:only-child) { grid-template-columns: 1fr; grid-auto-rows: clamp(260px, 40vw, 520px); }
.es-gallery:has(.es-gallery__item:only-child) .es-gallery__item.is-main { grid-row: auto; }
.es-gallery__item a { display: block; width: 100%; height: 100%; }
.es-gallery__item img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--ease); }
.es-gallery__item.is-contain img { object-fit: contain; padding: 14px; background: #fff; }
.es-gallery__item:hover img { transform: scale(1.03); }
.es-gallery__item figcaption { position: absolute; left: 0; bottom: 0; background: rgb(18 20 23 / .78); color: #fff; font-size: .75rem; padding: .3rem .6rem; letter-spacing: .02em; max-width: 100%; }
.es-gallery__zoom { position: absolute; right: 12px; top: 12px; width: 38px; height: 38px; border-radius: 50%; background: rgb(255 255 255 / .92); color: var(--navy); display: grid; place-items: center; font-size: 1.1rem; opacity: 0; transform: scale(.9); transition: opacity var(--t), transform var(--t); }
.es-gallery__item:hover .es-gallery__zoom, .es-gallery__item a:focus-visible .es-gallery__zoom { opacity: 1; transform: none; }
.es-videos { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; margin-top: 1.5rem; }
.es-video { margin: 0; background: #000; }
.es-video video { width: 100%; display: block; aspect-ratio: 16 / 9; }
.es-video figcaption { background: #fff; padding: .5rem .75rem; font-size: .875rem; }

/* Visor */
.es-lightbox { border: 0; padding: 0; background: transparent; max-width: 100vw; max-height: 100vh; width: 100vw; height: 100vh; }
.es-lightbox::backdrop { background: rgb(8 12 18 / .9); }
.es-lightbox figure { margin: 0; height: 100%; display: grid; place-items: center; align-content: center; gap: .75rem; padding: 3.5rem 4.5rem; }
.es-lightbox img { max-width: 100%; max-height: calc(100vh - 9rem); object-fit: contain; background: #fff; }
.es-lightbox figcaption { color: #E3E9F0; font-size: .875rem; }
.es-lightbox__close, .es-lightbox__nav { position: fixed; border: 0; background: rgb(255 255 255 / .12); color: #fff; width: 48px; height: 48px; border-radius: 50%; display: grid; place-items: center; font-size: 1.4rem; cursor: pointer; }
.es-lightbox__close:hover, .es-lightbox__nav:hover { background: rgb(255 255 255 / .25); }
.es-lightbox__close { top: 16px; right: 16px; }
.es-lightbox__nav { top: 50%; transform: translateY(-50%); }
.es-lightbox__nav.is-prev { left: 16px; }
.es-lightbox__nav.is-next { right: 16px; }
.es-lightbox.is-single .es-lightbox__nav { display: none; }
.es-lightbox[open] figure { animation: es-fade .2s var(--ease); }

/* Variantes (B): tarjetas con borde naranja superior */
.fv-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 1rem; }
.fv-card { border: 1px solid var(--line); border-top: 3px solid var(--o); padding: 1.1rem 1.2rem 1.25rem; background: #fff; transition: box-shadow var(--t), transform var(--t); }
.fv-card:hover { box-shadow: var(--shadow-h); transform: translateY(-2px); }
.fv-card h3 { font-size: 1rem; margin: 0 0 .4rem; }
.fv-card p { margin: 0; font-size: .875rem; color: var(--muted); }
.fv-card__data { color: var(--head) !important; font-weight: 600; margin-top: .5rem !important; }
.fv-card__img { aspect-ratio: 3 / 2; margin: -1.1rem -1.2rem 1rem; background: var(--cut); overflow: hidden; }
.fv-card__img img { width: 100%; height: 100%; object-fit: contain; }

/* Especificaciones (B): cifras grandes + tabla */
.fs-tiles { list-style: none; margin: 0 0 2rem; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 0; }
.fs-tile { border-top: 3px solid var(--o); padding: 1.25rem 1.25rem 1.5rem; background: rgb(255 255 255 / .05); }
.fs-tile + .fs-tile { border-left: 1px solid rgb(255 255 255 / .12); }
.fs-tile__v { display: block; color: #fff; font-size: clamp(1.75rem, 3vw, 2.4rem); font-weight: 700; line-height: 1.1; }
.fs-tile__u { display: block; color: var(--o-l); font-size: .8125rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; margin-top: .35rem; }
.fs-tile__l { display: block; color: #C9D3E0; font-size: .875rem; margin-top: .6rem; }
.fs-table { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.fs-table table { width: 100%; border-collapse: collapse; min-width: 560px; font-size: .9375rem; }
.fs-table th, .fs-table td { text-align: left; padding: .85rem 1rem; border-bottom: 1px solid rgb(255 255 255 / .14); vertical-align: top; }
.fs-table thead th { font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; color: #9FB0C4; font-weight: 700; }
.fs-table tbody th { color: #DCE3EC; font-weight: 500; width: 42%; }
.fs-table td strong { color: #fff; font-size: 1.0625rem; }
.fs-table td span { color: var(--o-l); font-size: .8125rem; font-weight: 700; }
.fs-table td:last-child { color: #9FB0C4; font-size: .875rem; }
.fs-note { font-size: .875rem; color: #9FB0C4; margin: 1.25rem 0 0; }
.fd-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2rem, 5vw, 4rem); }
.fd-grid.is-single { grid-template-columns: minmax(0, 720px); }

/* =====================================================================
   SERVICIOS · PROYECTO
   ===================================================================== */
.es-services .es-service, a.es-service { display: flex; flex-direction: column; gap: .5rem; height: 100%; padding: 1.5rem; background: #fff; border: 1px solid var(--line); color: var(--ink); text-decoration: none; transition: box-shadow var(--t), transform var(--t), border-color var(--t); }
.es-service:hover { box-shadow: var(--shadow-h); transform: translateY(-3px); border-color: transparent; }
.es-service h3 { margin: .25rem 0 0; font-size: 1.125rem; }
.es-service p { margin: 0; color: var(--muted); font-size: .9375rem; flex: 1; }
.es-service__ico { font-size: 2rem; color: var(--navy); }
.es-service__go { display: inline-flex; gap: .4rem; align-items: center; font-weight: 700; color: var(--cta); font-size: .9375rem; }
.es-service:hover .es-service__go .ico { transform: translateX(3px); }
.es-service__go .ico { transition: transform var(--t); }
.sp-grid { display: grid; grid-template-columns: 280px minmax(0, 1fr) 320px; gap: 2.5rem; align-items: start; }
.sp-list { position: sticky; top: calc(var(--eh-top) + var(--eh-main) + 1rem); border: 1px solid var(--line); padding: 1rem 0 .5rem; }
.sp-list .mm-h { padding-inline: 1rem; }
.sp-title { font-size: var(--wp--preset--font-size--xx-large); margin: 0; }
.sp-main .es-rule { margin: 1rem 0; }
.sp-lead { font-size: 1.1875rem; color: var(--ink); margin: 0 0 1rem; }
.sp-btns { margin-top: 1.75rem; }
.sp-figure { margin: 0 0 1.25rem; aspect-ratio: 4 / 3; overflow: hidden; }
.sp-figure img { width: 100%; height: 100%; object-fit: cover; }
.sp-side .es-sub { margin-top: 0; }
.ph { position: relative; background: var(--navy); }
.ph-media { height: clamp(280px, 36vw, 460px); overflow: hidden; position: relative; background: var(--cut); }
.ph-media img { width: 100%; height: 100%; object-fit: cover; }
.ph-wrap { position: relative; margin-top: -140px; display: flex; align-items: flex-end; gap: 1.5rem; }
.ph-panel { flex: 1; background: var(--navy); color: #fff; padding: 2rem 2.5rem; max-width: 820px; }
.ph-panel .es-rule { margin: .9rem 0 .6rem; }
.ph-client { background: #fff; padding: 1rem 1.25rem; min-width: 180px; min-height: 96px; display: grid; place-items: center; box-shadow: var(--shadow-h); font-weight: 700; color: var(--head); margin-bottom: 1.5rem; }
.ph-client img { max-height: 60px; width: auto; }
.pj-grid { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: clamp(2rem, 5vw, 4rem); }
.pj-story { display: grid; gap: 1.25rem; }
.pj-step { border-left: 3px solid var(--o); padding-left: 1.25rem; }
.pj-step h3 { font-size: 1.0625rem; margin: 0 0 .3rem; }
.pj-step p { margin: 0 0 .5rem; color: var(--ink); }
.pj-aside { background: var(--bg-2); padding: 1.5rem; align-self: start; }
.pj-meta { margin: 0 0 1.5rem; display: grid; gap: .9rem; }
.pj-meta dt { font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); font-weight: 700; }
.pj-meta dd { margin: .15rem 0 0; color: var(--head); font-weight: 600; }
.pj-meta a { color: var(--head); }
.pj-meta a:hover { color: var(--cta); }
.pj-aside .es-btn { width: 100%; }

/* =====================================================================
   MOVIMIENTO (moderado)
   ===================================================================== */
@keyframes es-fade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
.js [data-reveal], .js .es-reveal { opacity: 0; transform: translateY(14px); transition: opacity .6s var(--ease), transform .6s var(--ease); }
.js [data-reveal].is-in, .js .es-reveal.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { transition-duration: 0s !important; animation-duration: 0s !important; }
	.js [data-reveal], .js .es-reveal { opacity: 1; transform: none; }
}

/* =====================================================================
   TABLETA (≤ 1080 px): menú lateral, 2 columnas
   ===================================================================== */
@media (max-width: 1080px) {
	:root { --eh-main: 68px; }
	.eh-nav, .eh-top__sep, .eh-top .eh-search { display: none; }
	.eh-mob-actions { display: flex; }
	.eh-main .eh-wrap { gap: 1rem; }
	.eh-logo-img { height: 38px; }
	.es-grid--3, .es-needs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ef-grid { grid-template-columns: 1fr 1fr; }
	.fr-grid, .fd-grid, .pj-grid, .es-closing__grid, .es-quote { grid-template-columns: 1fr; }
	.sp-grid { grid-template-columns: 240px minmax(0, 1fr); }
	.sp-side { grid-column: 2; }
	.sw-grid { grid-template-columns: repeat(2, 1fr); }
	.fh-sticky { top: calc(var(--eh-top) + var(--eh-main)); }
	.fh-sticky__name { display: none; }
}

/* =====================================================================
   MÓVIL (< 700 px)
   ===================================================================== */
@media (max-width: 699px) {
	:root { --eh-top: 38px; --eh-main: 60px; }
	body { font-size: 1rem; }
	.eh-top { font-size: .8125rem; }
	.eh-top .eh-wrap { justify-content: space-between; gap: .75rem; }
	.eh-top__it span { display: none; }
	.eh-top__it .ico { font-size: 1.1rem; }
	.eh-cta { padding: .3rem .9rem; font-size: .8125rem; }
	.eh-logo-img { height: 34px; }
	.admin-bar .es-header-part { top: 0; }
	.es-grid--2, .es-grid--3, .es-needs { grid-template-columns: 1fr; }
	.es-needs:not(.es-needs--chips) { gap: .5rem; }
	.es-fams { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; }
	.es-card--familia { padding: 5px; }
	.es-card--familia .es-card__body { flex-direction: column; gap: .15rem; padding: .6rem .35rem .4rem; }
	.es-card--familia .es-card__title { font-size: .9375rem; }
	.es-logos { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.es-logos__item img { max-height: 48px; }
	.es-sec, .is-style-seccion, .is-style-seccion-gris, .is-style-seccion-azul { padding-block: 2.75rem; }
	.es-sec-title, .wp-block-heading.is-style-con-raya { font-size: 1.625rem; }
	.ef-grid { grid-template-columns: 1fr; gap: 2rem; padding-block: 2.5rem 1.5rem; }
	.es-mbar { display: grid; grid-template-columns: 1.3fr 1fr 1fr; gap: .5rem; position: fixed; left: 0; right: 0; bottom: 0; z-index: 95; background: #fff; border-top: 1px solid var(--line); box-shadow: 0 -6px 18px rgb(0 0 0 / .08); padding: .5rem .6rem calc(.5rem + env(safe-area-inset-bottom, 0px)); transition: transform var(--t); }
	.es-mbar a { display: inline-flex; align-items: center; justify-content: center; gap: .4rem; min-height: 46px; border: 1px solid var(--line-2); border-radius: var(--r); color: var(--head); font-weight: 700; font-size: .9375rem; text-decoration: none; }
	.es-mbar a.is-primary { background: var(--cta); border-color: var(--cta); color: #fff; }
	.is-typing .es-mbar, .has-drawer .es-mbar { transform: translateY(110%); }
	.ef-bottom .ef-wrap { padding-bottom: calc(1.1rem + 70px + env(safe-area-inset-bottom, 0px)); }
	/* Portada */
	.es-hero.wp-block-cover { min-height: 540px; }
	.es-hero .wp-block-cover__inner-container { padding-top: 3rem; }
	.es-hero p { font-size: 1rem; }
	.es-hero .wp-block-buttons { flex-direction: column; align-items: stretch; margin-bottom: 1.75rem; }
	.es-hero .wp-block-buttons > .wp-block-button { width: 100% !important; }
	.es-hero .wp-block-button__link { width: 100%; }
	.es-chain { display: grid !important; grid-template-columns: 1fr 1fr; gap: .6rem 1rem; justify-items: start; }
	.es-chain p { font-size: .8125rem !important; }
	/* Ficha */
	.fh-media { height: 240px; }
	.fh-wrap { margin-top: 0; padding-inline: 0; }
	.fh-panel { grid-template-columns: 1fr; padding: 1.5rem var(--gut) 1.75rem; }
	.fh-cta { grid-column: 1; grid-row: auto; order: 10; margin-top: 1rem; }
	.fh-cta .es-btn { width: 100%; }
	.fh-summary { font-size: 1rem; }
	.fh-anchors .es-wrap { justify-content: flex-start; flex-wrap: nowrap; overflow-x: auto; gap: 1.5rem; scrollbar-width: none; }
	.fh-anchors a { white-space: nowrap; }
	.fh-sticky .es-wrap { gap: .75rem; }
	.fh-sticky__nav { display: none; }
	.fh-sticky__name { display: block; flex: 1; overflow: hidden; text-overflow: ellipsis; font-size: .9375rem; }
	.es-gallery { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: .6rem; margin-inline: calc(-1 * var(--gut)); padding-inline: var(--gut); scrollbar-width: none; }
	.es-gallery__item, .es-gallery__item.is-main, .es-gallery__item:nth-child(4):last-child { flex: 0 0 86%; aspect-ratio: 4 / 3; scroll-snap-align: center; min-height: 0; }
	.es-gallery__zoom { opacity: 1; transform: none; width: 32px; height: 32px; }
	.fs-tiles { grid-template-columns: 1fr 1fr; }
	.fs-tile + .fs-tile { border-left: 0; }
	.fs-tile:nth-child(even) { border-left: 1px solid rgb(255 255 255 / .12); }
	.fs-table table { min-width: 0; }
	.fs-table thead { display: none; }
	.fs-table tr { display: grid; grid-template-columns: 1fr; padding: .75rem 0; border-bottom: 1px solid rgb(255 255 255 / .14); }
	.fs-table th, .fs-table td { border: 0; padding: .1rem 0; width: auto !important; }
	.es-res { grid-template-columns: 40px 1fr; }
	.es-res__ico { width: 40px; height: 40px; }
	.es-res__go { grid-column: 2; }
	.es-form__grid { grid-template-columns: 1fr; }
	.es-band__in .es-btn { width: 100%; }
	.sp-grid { grid-template-columns: 1fr; }
	.sp-list { position: static; order: 3; }
	.sp-side { grid-column: auto; }
	.ph-media { height: 240px; }
	.ph-wrap { margin-top: 0; padding-inline: 0; flex-direction: column; align-items: stretch; }
	.ph-panel { padding: 1.5rem var(--gut); }
	.ph-client { margin: -2.5rem var(--gut) 0; align-self: flex-start; min-height: 72px; }
	.sw-grid { grid-template-columns: 1fr; }
	.es-filters label { min-width: 0; flex: 1 1 100%; }
	.es-search-big { flex-direction: column; }
	.es-lightbox figure { padding: 3.5rem .75rem; }
}

/* Editor: las vistas previas ocupan su ancho y no animan. */
.editor-styles-wrapper [data-reveal] { opacity: 1 !important; transform: none !important; }
.editor-styles-wrapper .es-header-part { position: relative; }
.editor-styles-wrapper .eh-panel { display: none; }
