/* Pymetech Home Scroll Zoom: START */
/* First paint must not depend on the deferred scroll motor. Elementor's page
 * wrapper has a negative header overlap; before the stage exists that overlap
 * shortens the visible hero and exposes the next white section. These rules
 * apply only to the classic hero roots that the motor accepts, and stop as soon
 * as its stage takes ownership. No saved Elementor values or scroll states change. */
body.home-scroll-zoom-enabled:not(.page-id-5446):not(.page-id-463):not(.page-id-148):not(:has(.home-scroll-zoom-stage)):has(:is([data-elementor-type="wp-page"], .elementor-location-archive) > :is(.elementor-section, .e-con):first-child) .elementor-location-header {
	position: absolute;
	top: 0;
	width: 100%;
	z-index: 40;
}
body.home-scroll-zoom-enabled:not(.page-id-5446):not(.page-id-463):not(.page-id-148):not(:has(.home-scroll-zoom-stage)) :is([data-elementor-type="wp-page"], .elementor-location-archive):has(> :is(.elementor-section, .e-con):first-child) {
	margin-top: 0 !important;
}
body.home-scroll-zoom-enabled:not(.page-id-5446):not(.page-id-463):not(.page-id-148):not(:has(.home-scroll-zoom-stage)) :is([data-elementor-type="wp-page"], .elementor-location-archive) > :is(.elementor-section, .e-con):first-child {
	min-height: 100vh;
	min-height: 100dvh;
}
body.home-scroll-zoom-enabled:not(.page-id-5446):not(.page-id-463):not(.page-id-148):not(:has(.home-scroll-zoom-stage)) :is([data-elementor-type="wp-page"], .elementor-location-archive) > :is(.elementor-section, .e-con):first-child + .elementor-element {
	margin-top: 0 !important;
}
/* The first-paint helper used main.elementor-84, but this installation renders
 * a div as the Elementor root. Target the existing hero regardless of tag. */
body.page-id-84.home-scroll-zoom-enabled.pym-home-first-paint .elementor.elementor-84 > .elementor-section.elementor-element.home-scroll-zoom.elementor-element-373e55c1 {
	--home-hero-menu-height: 84px;
	padding-left: 24px !important;
	padding-right: 24px !important;
}
@media (min-width: 768px) and (max-width: 1024px) {
	body.page-id-84.home-scroll-zoom-enabled.pym-home-first-paint .elementor.elementor-84 > .elementor-section.elementor-element.home-scroll-zoom.elementor-element-373e55c1 {
		--home-hero-menu-height: 88px;
	}
}
@media (max-width: 767px) {
	body.page-id-84.home-scroll-zoom-enabled.pym-home-first-paint .elementor.elementor-84 > .elementor-section.elementor-element.home-scroll-zoom.elementor-element-373e55c1 {
		--home-hero-menu-height: 81px;
		padding-left: 0 !important;
		padding-right: 0 !important;
	}
}
html:has(body.home-scroll-zoom-enabled) {
	overflow-x: clip;
}

body.home-scroll-zoom-enabled {
	overflow-x: hidden;
	overflow-x: clip;
	overscroll-behavior-x: none;
}

html.home-scroll-zoom-smooth-page {
	scroll-behavior: smooth;
}

/* Menú de Inicio: transparente sobre el hero y superficie oscura al cubrirlo. */
body.home-scroll-zoom-enabled .home-scroll-zoom-menu {
	position: sticky !important;
	top: 0 !important;
	z-index: 40 !important;
	width: 100%;
	min-height: var(--home-scroll-zoom-menu-height, 1px);
	margin-bottom: var(--home-scroll-zoom-menu-flow-offset, 0px) !important;
	isolation: isolate;
	background-color: rgba(5, 26, 43, var(--home-scroll-zoom-menu-bg-alpha, 0));
	border-bottom: 1px solid rgba(255, 255, 255, var(--home-scroll-zoom-menu-border-alpha, 0));
	box-shadow: 0 10px 30px rgba(0, 0, 0, var(--home-scroll-zoom-menu-shadow-alpha, 0));
	-webkit-backdrop-filter: blur(var(--home-scroll-zoom-menu-blur, 0px)) saturate(var(--home-scroll-zoom-menu-saturation, 1));
	backdrop-filter: blur(var(--home-scroll-zoom-menu-blur, 0px)) saturate(var(--home-scroll-zoom-menu-saturation, 1));
	backface-visibility: hidden;
}

body.admin-bar.home-scroll-zoom-enabled .home-scroll-zoom-menu {
	top: var(--wp-admin--admin-bar--height, 32px) !important;
}

body.home-scroll-zoom-enabled .home-scroll-zoom-menu::after {
	position: absolute;
	inset: auto 0 0;
	height: 1px;
	content: '';
	pointer-events: none;
	background: linear-gradient(90deg, transparent 8%, rgba(28, 173, 229, var(--home-scroll-zoom-menu-accent-alpha, 0)) 50%, transparent 92%);
}

body.home-scroll-zoom-enabled .home-scroll-zoom-stage {
	position: relative;
	width: 100%;
	max-width: 100%;
	margin-top: var(--home-scroll-zoom-initial-offset, 0px);
	margin-bottom: calc(0px - var(--home-scroll-zoom-sticky-extension, 0px) - var(--home-scroll-zoom-initial-offset, 0px));
	overflow: hidden;
	overflow: clip;
	/* End the hero's paint at the cover's bottom; later transparent sections
	 * must reveal their original page background instead of the sticky hero. */
	clip-path: inset(0 0 var(--home-scroll-zoom-paint-inset, 0px) 0);
	overflow-anchor: none;
	isolation: isolate;
}

body.home-scroll-zoom-enabled .home-scroll-zoom-sticky-spacer {
	position: relative;
	z-index: 2;
	height: var(--home-scroll-zoom-sticky-extension, 0px);
	/* The cover paints its own background in its original Elementor parent.
	 * This spacer only extends sticky travel; an opaque fill masks its corners. */
	background-color: transparent;
	pointer-events: none;
}

body.home-scroll-zoom-enabled .home-scroll-zoom-sticky-shell {
	position: sticky !important;
	top: 0 !important;
	z-index: 0;
	width: 100%;
	min-height: var(--home-scroll-zoom-hero-height, 1px);
	background-color: var(--home-scroll-zoom-hero-background-color, #0a578c);
	background-image: var(--home-scroll-zoom-hero-background-image, none);
	background-position: center top;
	background-repeat: no-repeat;
	background-size: cover;
	backface-visibility: hidden;
}

body.home-scroll-zoom-enabled.home-scroll-zoom-sticky-off .home-scroll-zoom-sticky-shell {
	position: relative !important;
	top: auto !important;
}

body.home-scroll-zoom-enabled .home-scroll-zoom {
	position: relative !important;
	top: auto !important;
	width: 100%;
	max-width: 100%;
	margin: 0;
	backface-visibility: hidden;
	filter: blur(var(--home-scroll-zoom-blur, 0px));
	opacity: var(--home-scroll-zoom-opacity, 1);
	transform: translateZ(0) scale(var(--home-scroll-zoom-scale, 1));
	transform-origin: 50% 0;
	will-change: auto;
}

/* Scale the existing composition, not its viewport-sized background/wrappers.
 * Origin is measured once relative to the original hero; no layout is changed. */
body.home-scroll-zoom-enabled .home-scroll-zoom-effect-layer:not(.home-scroll-zoom) {
	transform: translate3d(0, 0, 0) scale(var(--home-scroll-zoom-scale, 1));
	transform-origin: var(--home-scroll-zoom-origin, 50% 0);
	opacity: var(--home-scroll-zoom-opacity, 1);
	will-change: auto;
}
body.home-scroll-zoom-enabled .home-scroll-zoom.home-scroll-zoom-delegated {
	transform: none;
	filter: none;
	opacity: 1;
	will-change: auto;
}
body.home-scroll-zoom-enabled .home-scroll-zoom.home-scroll-zoom-direct {
	filter: none;
}

body.home-scroll-zoom-enabled .home-scroll-zoom-cover {
	position: relative;
	z-index: var(--home-scroll-zoom-cover-z, 2);
	background-color: var(--home-scroll-zoom-cover-background, #fff);
	transform: translate3d(0, var(--home-scroll-zoom-cover-offset, 0px), 0);
	will-change: auto;
}

/* No expensive live backdrop capture across the full page in lightweight mode.
 * This changes paint only. Saved blur values remain available in full mode. */
body.home-scroll-zoom-lightweight .home-scroll-zoom {
	filter: none;
}
body.home-scroll-zoom-lightweight .home-scroll-zoom-menu {
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
}
body.home-scroll-zoom-enabled .home-scroll-zoom-cover.home-scroll-zoom-cover-static {
	transform: none;
	will-change: auto;
}

/* Pymetech service cover radius fix: START
 * Elementor already defines the rounded top edge. Clip only service covers so
 * inner backgrounds cannot paint over that radius on narrower viewports. */
body.home-scroll-zoom-enabled.home-scroll-zoom-profile-service .home-scroll-zoom-cover {
	overflow: hidden;
	overflow: clip;
	background-clip: padding-box;
}
/* Pymetech service cover radius fix: END */

/* Graphic Design pilot: a fractional device pixel at the cover's lower edge
 * can expose the blue compositor layer. End that layer 1 CSS pixel underneath
 * the opaque cover; this changes paint only, never section size or position. */
body.page-id-116.home-scroll-zoom-enabled .home-scroll-zoom-stage {
	clip-path: inset(0 0 calc(var(--home-scroll-zoom-paint-inset, 0px) + 1px) 0);
}

/* Pymetech category cover radius fix: START
 * Preserve Elementor's authored radius; keep nested mobile backgrounds inside it. */
body.category.home-scroll-zoom-enabled .home-scroll-zoom-cover {
	overflow: hidden;
	overflow: clip;
	background-clip: padding-box;
}
/* Pymetech category cover radius fix: END */

body.home-scroll-zoom-enabled.home-scroll-zoom-section-normal .home-scroll-zoom-cover {
	transform: none;
}

body.home-scroll-zoom-enabled.home-scroll-zoom-section-border .home-scroll-zoom-cover {
	border-top: var(--home-scroll-zoom-cover-border-width, 1px) solid var(--home-scroll-zoom-cover-border-color, #fff);
	border-radius: var(--home-scroll-zoom-cover-radius, 0px) var(--home-scroll-zoom-cover-radius, 0px) 0 0;
	overflow: hidden;
}

body.home-scroll-zoom-enabled .home-scroll-zoom-visual {
	backface-visibility: hidden;
	transform: translate3d(0, var(--home-scroll-zoom-parallax, 0px), 0);
	will-change: auto;
}

body.home-scroll-zoom-enabled .home-scroll-zoom-content {
	backface-visibility: hidden;
	transform: translate3d(0, var(--home-scroll-zoom-content-parallax, 0px), 0);
	will-change: auto;
}

/* The scroll scheduler owns these transforms/opacity/filter values. Elementor's
 * default transform .4s transition otherwise chases each new rAF value, adding
 * a second interpolation and a visible lag. Retain its decorative transitions. */
body.home-scroll-zoom-enabled .home-scroll-zoom,
body.home-scroll-zoom-enabled .home-scroll-zoom-content,
body.home-scroll-zoom-enabled .home-scroll-zoom-visual,
body.home-scroll-zoom-enabled .home-scroll-zoom-effect-layer,
body.home-scroll-zoom-enabled .home-scroll-zoom-cover {
	transition-property: background, background-color, border, border-radius !important;
}

/* Promote only the visible animated subtree, not every hero for the whole visit.
 * Keep the authored blur: removing it would change the selected visual preset. */
body.home-scroll-zoom-enabled .home-scroll-zoom-animating .home-scroll-zoom {
	will-change: transform, filter, opacity;
}
body.home-scroll-zoom-lightweight .home-scroll-zoom-animating .home-scroll-zoom {
	will-change: transform, opacity;
}
body.home-scroll-zoom-enabled .home-scroll-zoom-animating .home-scroll-zoom-direct.home-scroll-zoom-effect-layer,
body.home-scroll-zoom-enabled .home-scroll-zoom-animating .home-scroll-zoom-effect-layer:not(.home-scroll-zoom) {
	will-change: transform, opacity;
}
body.home-scroll-zoom-enabled .home-scroll-zoom-animating .home-scroll-zoom.home-scroll-zoom-delegated {
	will-change: auto;
}
body.home-scroll-zoom-enabled .home-scroll-zoom-animating .home-scroll-zoom-visual,
body.home-scroll-zoom-enabled .home-scroll-zoom-animating .home-scroll-zoom-content,
body.home-scroll-zoom-enabled .home-scroll-zoom-animating + .home-scroll-zoom-cover {
	will-change: transform;
}

/* Inicio: one viewport-sized hero, with its composition centered as a group. */
body.page-id-84.home-scroll-zoom-enabled .home-scroll-zoom-stage {
	/* The initial offset corrects the header, not the next section's position. */
	margin-bottom: calc(0px - var(--home-scroll-zoom-sticky-extension, 0px));
}

body.page-id-84.home-scroll-zoom-enabled .elementor-element-373e55c1 {
	--home-hero-space: clamp(90px, 8vh, 140px);
	display: flex;
	align-items: center;
	justify-content: center;
	height: auto;
	min-height: 100vh;
	min-height: 100dvh;
	/* Equal visible space below the menu and below the composition. */
	padding: calc(var(--home-hero-space) + var(--home-hero-menu-height, 76px) / 2) 24px
		calc(var(--home-hero-space) - var(--home-hero-menu-height, 76px) / 2);
}

body.page-id-84.home-scroll-zoom-enabled .elementor-element-373e55c1 > .elementor-container {
	width: 100%;
	/* Match the existing header container instead of widening on ultrawide. */
	max-width: 1280px;
	height: auto;
	min-height: 0;
}

body.page-id-84.home-scroll-zoom-enabled .home-scroll-zoom-frame,
body.page-id-84.home-scroll-zoom-enabled .home-scroll-zoom-frame > .elementor-container {
	width: 100%;
	max-width: 100%;
	height: auto;
	min-height: 0;
	padding: 0;
}

@media (min-width: 768px) {
	body.page-id-84.home-scroll-zoom-enabled .home-scroll-zoom-frame > .elementor-container {
		align-items: center;
		flex-wrap: nowrap;
		gap: clamp(32px, 3vw, 64px);
	}

	body.page-id-84.home-scroll-zoom-enabled .home-scroll-zoom-frame > .elementor-container > .elementor-column {
		display: flex !important;
		flex: 1 1 0;
		min-width: 0;
	}

	body.page-id-84.home-scroll-zoom-enabled .home-scroll-zoom-frame > .elementor-container > .elementor-column > .elementor-widget-wrap {
		padding: 0;
	}

	body.page-id-84.home-scroll-zoom-enabled .elementor-element-9c9117a {
		display: none !important;
	}

	body.page-id-84.home-scroll-zoom-enabled .elementor-element-42b1d022 {
		width: 100%;
		max-width: 100%;
		margin: 0;
		/* The mockup's visible center is 56% down its transparent canvas.
		 * Offset the widget, keeping the image's scroll parallax independent. */
		translate: 0 -6.05%;
	}

	body.page-id-84.home-scroll-zoom-enabled .elementor-element-42b1d022 img {
		width: 100%;
		height: auto;
		max-height: calc(100dvh - 180px);
		object-fit: contain;
	}
}

@media (min-width: 768px) and (max-width: 1024px) {
	body.page-id-84.home-scroll-zoom-enabled .home-scroll-zoom-content .elementor-element-2ec1f7bd .elementor-heading-title {
		font-size: 28px;
		line-height: 1.2;
	}
}

@media (max-width: 767px) {
	body.page-id-84.home-scroll-zoom-enabled .elementor-element-373e55c1 {
		padding: calc(60px + var(--home-hero-menu-height, 81px) / 2) 0
			calc(60px - var(--home-hero-menu-height, 81px) / 2);
	}
}

/* Shared viewport and menu alignment for every other public page hero. */
body.home-scroll-zoom-enabled .home-scroll-zoom-stage {
	margin-bottom: calc(0px - var(--home-scroll-zoom-sticky-extension, 0px));
}

body.home-scroll-zoom-enabled:not(.page-id-84) .home-scroll-zoom {
	--home-hero-space: clamp(90px, 8vh, 140px);
	display: flex;
	align-items: center;
	justify-content: center;
	flex-direction: column;
	height: auto !important;
	min-height: calc(100vh - var(--home-hero-flow-menu-height, 0px));
	min-height: calc(100dvh - var(--home-hero-flow-menu-height, 0px));
	padding: calc(var(--home-hero-space) + var(--home-hero-menu-height, 76px) / 2) 24px
		calc(var(--home-hero-space) - var(--home-hero-menu-height, 76px) / 2);
	border-radius: 0;
}

body.home-scroll-zoom-enabled:not(.page-id-84) .home-scroll-zoom > .elementor-container,
body.home-scroll-zoom-enabled:not(.page-id-84) .home-scroll-zoom > .e-con-inner {
	width: 100%;
	max-width: 1280px;
	height: auto !important;
	min-height: 0;
	margin-inline: auto;
}

body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-layout-shell,
body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-uniform-frame,
body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-uniform-frame > .elementor-container,
body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-column > .elementor-widget-wrap {
	width: 100%;
	height: auto !important;
	min-height: 0;
	padding: 0;
	margin-block: 0;
}

body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-uniform-frame {
	max-width: 1280px;
}

body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-column {
	height: auto !important;
	min-height: 0;
}

body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-empty-column {
	display: none !important;
}

body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-centered-frame > .elementor-container {
	max-width: 840px;
	margin-inline: auto;
}

body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-centered-frame .elementor-widget-heading {
	text-align: center;
}

body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-illustration .elementor-widget-image,
body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-mobile-visual {
	width: 100%;
	max-width: 100%;
	margin: 0;
	padding: 0;
}

body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-illustration img,
body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-mobile-visual img {
	width: 100%;
	height: auto;
	object-fit: contain;
}

body.home-scroll-zoom-enabled:not(.page-id-84) .home-scroll-zoom > .elementor-shape-bottom {
	display: none;
}

/* The native Soluciones page contains its title only. */
body.home-scroll-zoom-profile-native .home-scroll-zoom {
	background: radial-gradient(at 50% 0%, #1cade5 0%, #0a578c 93%);
	color: #fff;
}

body.home-scroll-zoom-profile-native .home-scroll-zoom .entry-title {
	max-width: 100%;
	margin: 0;
	color: inherit;
	text-align: center;
}

/* Remove only the first-section overlaps inherited by these title pages. */
body.home-scroll-zoom-enabled:is(.page-id-148, .page-id-397, .blog, .category, .search) .home-scroll-zoom-cover > .elementor-container > .elementor-column > .elementor-widget-wrap {
    margin-top: 0;
}

/* Landing keeps its own header in document flow. */
body.page-id-5446.home-scroll-zoom-enabled .home-scroll-zoom {
    border: 0;
}

body.page-id-5446.home-scroll-zoom-enabled .home-scroll-zoom-menu.elementor-element {
	padding-inline: 24px;
	background: #fff;
	backdrop-filter: none;
	-webkit-backdrop-filter: none;
}

body.page-id-5446.home-scroll-zoom-enabled .home-scroll-zoom-menu > .e-con-inner {
	width: 100%;
	max-width: 1280px;
}

body.page-id-5446.home-scroll-zoom-enabled .home-scroll-zoom-uniform-frame {
	display: grid;
	flex: 0 0 auto;
	align-content: start;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 24px;
}

body.page-id-5446.home-scroll-zoom-enabled .home-scroll-zoom-uniform-frame > .elementor-widget-heading {
	grid-column: 1 / -1;
	text-align: center;
}

body.page-id-5446.home-scroll-zoom-enabled .home-scroll-zoom-uniform-frame > .e-con {
	display: contents;
}

@media (min-width: 768px) {
	body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-uniform-frame:not(.home-scroll-zoom-authored-columns) > .elementor-container {
		align-items: center;
		flex-wrap: nowrap;
		gap: clamp(32px, 3vw, 64px);
	}

	body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-column:not(.home-scroll-zoom-empty-column) {
		display: flex !important;
		flex: 1 1 0;
		min-width: 0;
	}

	body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-mobile-visual {
		display: none !important;
	}

	body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-illustration .elementor-widget-image {
		translate: 0 var(--home-hero-optical-shift, 0%);
	}

	body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-illustration img {
		max-height: calc(100dvh - 180px);
	}
}

@media (min-width: 768px) and (max-width: 1024px) {
	body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-uniform-frame:not(.home-scroll-zoom-authored-columns) h1 {
		font-size: 28px;
		line-height: 1.2;
	}

	body.page-id-5446.home-scroll-zoom-enabled .home-scroll-zoom .elementor-counter-number-wrapper {
		font-size: 42px;
	}
}

@media (max-width: 767px) {
	body.home-scroll-zoom-enabled:not(.page-id-84) .home-scroll-zoom {
		--home-hero-space: 64px;
		padding-inline: 24px;
	}

	body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-column {
		width: 100%;
	}

	body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-mobile-visual img {
		max-height: 280px;
	}

	body.page-id-5446.home-scroll-zoom-enabled .home-scroll-zoom-uniform-frame {
		grid-template-columns: minmax(0, 1fr);
		gap: 20px;
	}

	body.page-id-5446.home-scroll-zoom-enabled .home-scroll-zoom .elementor-counter-number-wrapper {
		font-size: 42px;
	}
}

/* Contacto inherits the shared full-height hero and scroll effects.
 * Only the central card paints the rising surface; keep Elementor's columns. */
body.page-id-148.home-scroll-zoom-enabled {
	--pym-contact-radius: clamp(24px, 4vw, 56px);
}
body.page-id-148.home-scroll-zoom-enabled .home-scroll-zoom-cover {
	background: transparent;
	border: 0;
	border-radius: 0;
	overflow: visible;
	padding: 0 clamp(16px, 3vw, 40px) clamp(40px, 6vw, 80px);
	padding-inline: clamp(16px, 3vw, 40px) !important;
}
body.page-id-148.home-scroll-zoom-enabled .elementor-element-4ffd5dc3 {
	height: auto;
	max-height: none;
	border-radius: var(--pym-contact-radius);
	box-shadow: 0 18px 50px rgba(9, 39, 60, .10);
}
body.page-id-148.home-scroll-zoom-enabled .elementor-element-4ffd5dc3 > .elementor-container > .elementor-column > .elementor-widget-wrap {
	padding: clamp(24px, 4vw, 64px);
	min-width: 0;
	border-radius: 0;
}
body.page-id-148.home-scroll-zoom-enabled .elementor-element-4ffd5dc3 > .elementor-container > .elementor-column {
	border-radius: 0;
}
body.page-id-148.home-scroll-zoom-enabled .elementor-element-4ffd5dc3 img {
	max-width: 100%;
	height: auto;
	object-fit: contain;
}
body.page-id-148.home-scroll-zoom-enabled .elementor-element-4ffd5dc3 :is(.fadeInLeft, .fadeInRight) {
	animation-name: fadeIn;
}
/* Contacto card: END */

/* Contacto: show the information on arrival, not after an empty viewport.
 * Keep Elementor's columns and all content in its original document flow. */
body.page-id-148.home-scroll-zoom-enabled [data-elementor-id="148"] {
	background: radial-gradient(at 50% 0%, #1cade5 0%, #0a578c 93%);
}
body.page-id-148.home-scroll-zoom-enabled .home-scroll-zoom-stage {
	margin-bottom: 0;
	clip-path: none;
}
body.page-id-148.home-scroll-zoom-enabled .home-scroll-zoom-sticky-spacer {
	display: none;
}
body.page-id-148.home-scroll-zoom-enabled .home-scroll-zoom-sticky-shell {
	position: relative !important;
	background: transparent;
}
body.page-id-148.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .pym-hsz-initial-root) .home-scroll-zoom {
	min-height: 0;
	padding: calc(var(--home-hero-menu-height, 84px) + 20px) 24px 24px;
	background: transparent;
}
body.page-id-148.home-scroll-zoom-enabled .home-scroll-zoom .elementor-heading-title {
	font-size: clamp(28px, 3vw, 40px);
}
body.page-id-148.home-scroll-zoom-enabled .elementor-element-4ffd5dc3 {
	animation: pym-contact-enter 650ms cubic-bezier(.22, 1, .36, 1) both;
}
body.page-id-148.home-scroll-zoom-enabled .elementor-element-4ffd5dc3 .elementor-invisible,
body.page-id-148.home-scroll-zoom-enabled .elementor-element-4ffd5dc3 .animated {
	visibility: visible !important;
	animation: none !important;
}
body.page-id-148.home-scroll-zoom-enabled .elementor-element-1f5c3179 {
	visibility: visible !important;
	animation: none !important;
	background: transparent;
	margin-bottom: 0;
}
body.page-id-148.home-scroll-zoom-enabled .elementor-element-35cdfcfb iframe {
	display: block;
}
@keyframes pym-contact-enter {
	from { opacity: 0; transform: translate3d(0, 64px, 0); }
	to { opacity: 1; transform: translate3d(0, 0, 0); }
}
@media (prefers-reduced-motion: reduce) {
	body.page-id-148.home-scroll-zoom-enabled .elementor-element-4ffd5dc3 {
		animation: none;
	}
}

/* Pymetech Blog hero alignment: START
 * The archive template has fixed-height image widgets and negative offsets.
 * Reset only that first hero so it uses the same centered composition as services. */
body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-layout-shell,
body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns,
body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns > .elementor-container,
body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns > .elementor-container > .elementor-column,
body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns > .elementor-container > .elementor-column > .elementor-widget-wrap {
	height: auto !important;
	min-height: 0 !important;
}

body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns > .elementor-container,
body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns > .elementor-container > .elementor-column > .elementor-widget-wrap {
	align-items: center;
	align-content: center;
}

body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns .elementor-widget-image {
	width: 100% !important;
	max-width: 100% !important;
	height: auto !important;
	margin: 0 auto !important;
	padding: 0 !important;
}

body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns .elementor-widget-image > .elementor-widget-container {
	height: auto !important;
}

body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns .elementor-widget-image img {
	display: block;
	width: 100% !important;
	height: auto !important;
	max-height: min(58dvh, 560px);
	margin-inline: auto;
	object-fit: contain;
}

@media (min-width: 1025px) {
	body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns > .elementor-container {
		gap: clamp(32px, 3vw, 64px);
	}

	body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns > .elementor-container > .elementor-column {
		flex: 1 1 0;
		width: auto !important;
		min-width: 0;
	}

	/* Use the artwork's own proportions and the same viewport limit as services.
	 * Do not enlarge an already rasterized image using a second CSS scale. */
	body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns .elementor-widget-image img {
		height: auto !important;
		max-height: calc(100dvh - 180px);
	}
}

/* Blog: draw at native layout resolution before scroll, not into a scaled
 * compositor texture. The existing scroll pipeline resumes after its start. */
body.blog.home-scroll-zoom-enabled .home-scroll-zoom-at-rest,
body.blog.home-scroll-zoom-enabled .home-scroll-zoom-at-rest .home-scroll-zoom-visual,
body.blog.home-scroll-zoom-enabled .home-scroll-zoom-at-rest .home-scroll-zoom-content {
	transform: none;
	filter: none;
	will-change: auto;
	backface-visibility: visible;
}
body.blog.home-scroll-zoom-enabled .home-scroll-zoom .elementor-widget-image.animated.zoomIn {
	animation-name: fadeIn;
}

@media (min-width: 768px) and (max-width: 1024px) {
	body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns > .elementor-container {
		gap: clamp(28px, 4vw, 42px);
	}

	body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns > .elementor-container > .elementor-column {
		display: flex !important;
		flex: 1 1 0;
		width: auto !important;
		min-width: 0;
	}

	body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns .elementor-hidden-desktop {
		display: none !important;
	}

	body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns .elementor-widget-image img {
		max-height: min(46dvh, 520px);
	}
}

@media (max-width: 767px) {
	body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns > .elementor-container > .elementor-column:not(.elementor-hidden-mobile) {
		width: 100% !important;
	}

	body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns .elementor-widget-heading {
		text-align: center;
	}

	body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns .elementor-widget-image img {
		max-height: min(40dvh, 300px);
	}
}
/* Pymetech Blog hero alignment: END */

/* Nuestra Empresa vertical centering: START
 * Elementor gives the editorial artwork a fixed 700/500px height. Constrain
 * only that artwork to the usable viewport so the authored columns can remain
 * vertically centered without cropping or making the hero taller than screen. */
@media (min-width: 1025px) {
	body.page-id-260.home-scroll-zoom-enabled .home-scroll-zoom .elementor-element-4657016 {
		height: auto !important;
		align-self: center;
		translate: 0 40px;
	}

	body.page-id-260.home-scroll-zoom-enabled .home-scroll-zoom .elementor-element-4657016 img {
		display: block;
		width: 100% !important;
		height: min(700px, calc(100dvh - 231px)) !important;
		max-height: min(700px, calc(100dvh - 231px)) !important;
		object-fit: contain;
	}
}

@media (min-width: 768px) and (max-width: 1024px) {
	body.page-id-260.home-scroll-zoom-enabled .home-scroll-zoom .elementor-element-5b5c292 {
		height: auto !important;
	}

	body.page-id-260.home-scroll-zoom-enabled .home-scroll-zoom .elementor-element-5b5c292 img {
		display: block;
		width: 100% !important;
		height: min(55dvh, 500px, calc(100dvh - 390px)) !important;
		max-height: min(55dvh, 500px, calc(100dvh - 390px)) !important;
		object-fit: contain;
	}
}
/* Nuestra Empresa vertical centering: END */

@media (prefers-reduced-motion: reduce) {
	html.home-scroll-zoom-smooth-page {
		scroll-behavior: auto !important;
	}

	body.home-scroll-zoom-enabled .home-scroll-zoom,
	body.home-scroll-zoom-enabled .home-scroll-zoom-effect-layer {
		filter: none !important;
		opacity: 1 !important;
		transform: none !important;
		will-change: auto;
	}

	body.home-scroll-zoom-enabled .home-scroll-zoom-visual,
	body.home-scroll-zoom-enabled .home-scroll-zoom-content {
		transform: none !important;
		will-change: auto;
	}

	body.home-scroll-zoom-enabled .home-scroll-zoom-cover {
		transform: none !important;
		will-change: auto;
	}
}
/* Tablet hero centering: START
 * Keep the existing Elementor tablet boundary. Stack only the hero's main
 * columns; nested buttons, counters and cards retain their authored layout.
 * Respect tablet visibility so alternate artwork is never duplicated. */
@media (min-width: 768px) and (max-width: 1024px) {
	body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .elementor-84, .pym-hsz-initial-root) .home-scroll-zoom {
		--home-hero-space: clamp(48px, 6vh, 80px);
	}
	body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .elementor-84, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-frame > .elementor-container {
		flex-direction: column;
		flex-wrap: nowrap;
		align-items: center;
		gap: 24px;
	}
	body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .elementor-84, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-frame > .elementor-container > .elementor-column {
		flex: 0 0 auto;
		width: 100% !important;
		min-width: 0;
		margin-inline: auto;
	}
	body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .elementor-84, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-frame > .elementor-container > .elementor-hidden-tablet {
		display: none !important;
	}
	body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .elementor-84, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-content > .elementor-widget-wrap {
		justify-content: center;
		text-align: center;
	}
	body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .elementor-84, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-content .e-con-inner:has(> .elementor-widget-button) {
		justify-content: center;
	}
	body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .elementor-84, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-content > .elementor-widget-wrap > :is(.elementor-widget-heading, .elementor-widget-text-editor, .elementor-widget-button) {
		text-align: center;
	}
	body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .elementor-84, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-content > .elementor-widget-wrap > :is(.elementor-widget-heading, .elementor-widget-text-editor) {
		width: 100%;
		max-width: 100%;
		margin-inline: auto;
	}
	body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .elementor-84, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-frame .elementor-widget-image {
		max-width: 100% !important;
		margin-inline: auto !important;
		text-align: center;
	}
	body.home-scroll-zoom-enabled :is(.home-scroll-zoom-stage, .elementor-84, .pym-hsz-initial-root) .home-scroll-zoom .home-scroll-zoom-frame .elementor-widget-image img {
		display: block;
		max-width: 100% !important;
		margin-inline: auto !important;
		object-fit: contain;
	}
	body.page-id-84.home-scroll-zoom-enabled .home-scroll-zoom .elementor-element-9c9117a,
	body.blog.home-scroll-zoom-enabled .home-scroll-zoom .home-scroll-zoom-authored-columns .elementor-widget-image.elementor-hidden-desktop:not(.elementor-hidden-tablet) {
		display: block !important;
	}
}
/* Tablet hero centering: END */
/* Server-rendered composition, before the deferred motor creates its stage.
 * The same header heights already used by Home; JS retains measured ownership
 * once active. Service tablet/mobile retain their authored columns throughout. */
body.home-scroll-zoom-enabled .pym-hsz-initial-root {
	--home-hero-menu-height: 84px;
}
body.page-id-148.home-scroll-zoom-enabled:not(:has(.home-scroll-zoom-stage)) .elementor-location-header {
	position: absolute; top: 0; width: 100%; z-index: 40;
}
body.page-id-148.home-scroll-zoom-enabled:not(:has(.home-scroll-zoom-stage)) .pym-hsz-initial-root,
body.page-id-148.home-scroll-zoom-enabled:not(:has(.home-scroll-zoom-stage)) .pym-hsz-initial-root > .home-scroll-zoom-cover {
	margin-top: 0 !important;
}
/* The global top-level-section gutter stops matching after the motor wraps the
 * hero. Match its final 24px gutter now, without changing any lower section. */
body.home-scroll-zoom-enabled .elementor.pym-hsz-initial-root > .elementor-element.home-scroll-zoom.pym-hsz-initial-hero {
	padding-left: 24px !important;
	padding-right: 24px !important;
}
@media (min-width: 768px) and (max-width: 1024px) {
	body.home-scroll-zoom-enabled .pym-hsz-initial-root { --home-hero-menu-height: 88px; }
}
@media (max-width: 767px) {
	body.home-scroll-zoom-enabled .pym-hsz-initial-root { --home-hero-menu-height: 81px; }
	/* ERP's existing mobile logo is 48px, giving its header a 97px height. */
	body.page-id-105.home-scroll-zoom-enabled .pym-hsz-initial-root { --home-hero-menu-height: 97px; }
}
/* These are the existing managed-column declarations, restricted to the
 * service desktop prepaint. No viewport-dependent classes are guessed in PHP. */
@media (min-width: 1025px) {
	body.home-scroll-zoom-enabled:where(:not(:has(.home-scroll-zoom-stage))) .pym-hsz-initial-root .home-scroll-zoom .pym-hsz-initial-column > .elementor-widget-wrap {
		width: 100%; height: auto !important; min-height: 0; padding: 0; margin-block: 0;
	}
	body.home-scroll-zoom-enabled:where(:not(:has(.home-scroll-zoom-stage))) .pym-hsz-initial-root .home-scroll-zoom .pym-hsz-initial-column {
		height: auto !important; min-height: 0;
	}
	body.home-scroll-zoom-enabled:where(:not(:has(.home-scroll-zoom-stage))) .pym-hsz-initial-root .home-scroll-zoom .pym-hsz-initial-empty-column { display: none !important; }
	body.home-scroll-zoom-enabled:where(:not(:has(.home-scroll-zoom-stage))) .pym-hsz-initial-root .home-scroll-zoom .pym-hsz-initial-centered-frame > .elementor-container {
		max-width: 840px; margin-inline: auto;
	}
	body.home-scroll-zoom-enabled:where(:not(:has(.home-scroll-zoom-stage))) .pym-hsz-initial-root .home-scroll-zoom .pym-hsz-initial-centered-frame .elementor-widget-heading { text-align: center; }
	body.home-scroll-zoom-enabled:where(:not(:has(.home-scroll-zoom-stage))) .pym-hsz-initial-root .home-scroll-zoom .pym-hsz-initial-illustration .elementor-widget-image,
	body.home-scroll-zoom-enabled:where(:not(:has(.home-scroll-zoom-stage))) .pym-hsz-initial-root .home-scroll-zoom .pym-hsz-initial-mobile-visual {
		width: 100%; max-width: 100%; margin: 0; padding: 0;
	}
	body.home-scroll-zoom-enabled:where(:not(:has(.home-scroll-zoom-stage))) .pym-hsz-initial-root .home-scroll-zoom .pym-hsz-initial-illustration img,
	body.home-scroll-zoom-enabled:where(:not(:has(.home-scroll-zoom-stage))) .pym-hsz-initial-root .home-scroll-zoom .pym-hsz-initial-mobile-visual img {
		width: 100%; height: auto; object-fit: contain;
	}
	body.home-scroll-zoom-enabled:where(:not(:has(.home-scroll-zoom-stage))) .pym-hsz-initial-root .home-scroll-zoom .pym-hsz-initial-service-frame.home-scroll-zoom-uniform-frame > .elementor-container {
		align-items: center; flex-wrap: nowrap; gap: clamp(32px, 3vw, 64px);
	}
	body.home-scroll-zoom-enabled:where(:not(:has(.home-scroll-zoom-stage))) .pym-hsz-initial-root .home-scroll-zoom .pym-hsz-initial-column:not(.pym-hsz-initial-empty-column) {
		display: flex !important; flex: 1 1 0; min-width: 0;
	}
	body.home-scroll-zoom-enabled:where(:not(:has(.home-scroll-zoom-stage))) .pym-hsz-initial-root .home-scroll-zoom .pym-hsz-initial-mobile-visual { display: none !important; }
	body.home-scroll-zoom-enabled:where(:not(:has(.home-scroll-zoom-stage))) .pym-hsz-initial-root .home-scroll-zoom .pym-hsz-initial-illustration .elementor-widget-image { translate: 0 var(--home-hero-optical-shift, 0%); }
	body.home-scroll-zoom-enabled:where(:not(:has(.home-scroll-zoom-stage))) .pym-hsz-initial-root .home-scroll-zoom .pym-hsz-initial-illustration img { max-height: calc(100dvh - 180px); }
}
/* Pymetech Home Scroll Zoom: END */
