/* Contact variant of the existing full-bleed Products Intro grid. */
.elementor-widget-blumi-contact-intro {
	width: 100%;
}

/* Follow the Elementor parent container's configured min-height on desktop. */
.elementor-widget-blumi-contact-map-intro {
	align-self: stretch;
	width: 100%;
	height: 100%;
	min-height: var(--min-height, var(--blumi-products-section-height, 800px));
}

.blumi-products-intro--contact {
	height: auto;
	min-height: var(--blumi-products-section-height, 800px);
	grid-template-columns: 50% 50%;
}

.blumi-contact-intro__content {
	align-items: center;
	padding-top: 70px;
	padding-bottom: 70px;
}

.blumi-contact-intro__content-inner {
	max-width: 650px;
}

.blumi-products-intro--contact .blumi-products-intro__title {
	margin-bottom: 16px;
	color: var(--blumi-lavender, #A5ADD8);
}

.blumi-products-intro--contact .blumi-products-intro__text {
	margin-bottom: 42px;
}

.blumi-contact-intro__form {
	width: 100%;
}

.blumi-contact-intro__image {
	min-height: 100%;
	height: auto;
}

.blumi-contact-map-intro {
	height: 100%;
	min-height: var(--min-height, var(--blumi-products-section-height, 800px));
}

.blumi-contact-intro__image img {
	display: block;
	width: 100%;
	height: 100%;
	min-height: var(--blumi-products-section-height, 800px);
	object-fit: cover;
}

.blumi-contact-intro__map iframe {
	display: block;
	width: 100%;
	height: 100%;
	min-height: var(--blumi-products-section-height, 800px);
	border: 0;
}

.blumi-contact-intro__placeholder {
	padding: 20px;
	border: 1px dashed currentColor;
}

/* Desktop: both contact rows occupy exactly one viewport. Keep this scoped
 * to contact widgets; the shared Products Intro and stacked mobile layout
 * retain their own sizing. */
@media (min-width: 991px) {
	.elementor .e-con:has(> .e-con-inner > :is(.elementor-widget-blumi-contact-map-intro, .elementor-widget-blumi-contact-intro)) {
		--min-height: 100vh;
		height: 100vh;
		min-height: 100vh;
	}

	.elementor .e-con-inner:has(> :is(.elementor-widget-blumi-contact-map-intro, .elementor-widget-blumi-contact-intro)),
	.elementor-widget-blumi-contact-map-intro,
	.elementor-widget-blumi-contact-intro,
	.elementor-widget-blumi-contact-map-intro > .elementor-widget-container,
	.elementor-widget-blumi-contact-intro > .elementor-widget-container {
		height: 100%;
		min-height: 0;
	}

	.blumi-products-intro--contact {
		height: 100vh;
		min-height: 0;
		grid-template-rows: minmax(0, 1fr);
	}

	/* Let short viewports scroll the copy/form without clipping its top or
	 * letting the form's intrinsic height stretch the entire contact row. */
	.blumi-contact-intro__content {
		min-height: 0;
		padding-block: clamp(32px, 5vh, 70px);
		align-items: flex-start;
		overflow-y: auto;
	}

	.blumi-contact-intro__content-inner {
		flex: 0 0 auto;
		margin-block: auto;
	}

	.blumi-contact-intro__image {
		height: 100%;
		min-height: 0;
	}

	.blumi-contact-intro__image > img,
	.blumi-contact-intro__map > iframe {
		position: absolute;
		inset: 0;
		width: 100%;
		height: 100%;
		min-height: 0;
	}
}

@media (max-width: 1024px) {
	.blumi-products-intro--contact {
		grid-template-columns: 48% 52%;
	}
	.blumi-contact-intro__content {
		padding-right: 40px;
	}
}

@media (max-width: 990px) {
	.elementor-widget-blumi-contact-map-intro,
	.blumi-contact-map-intro {
		height: auto;
		min-height: 0;
	}
	.blumi-products-intro--contact {
		display: flex;
		flex-direction: column;
		width: 100%;
		height: auto;
		min-height: 0;
		margin-left: 0;
		overflow: visible;
	}
	.blumi-contact-intro__content {
		order: 1;
		width: 100%;
		padding: 70px 10px;
	}
	.blumi-contact-intro__content-inner {
		width: 100%;
		max-width: none;
		margin: 0;
		padding: 0 clamp(30px, 7vw, 70px);
	}
	.blumi-contact-intro__image {
		order: 2;
		width: 100%;
		height: clamp(520px, 70svh, 720px);
		min-height: 0;
		flex: none;
		overflow: hidden;
	}
	.blumi-contact-intro__image img {
		min-height: 100%;
	}
	.blumi-contact-intro__map iframe {
		min-height: 100%;
	}
}

@media (max-width: 767px) {
	.blumi-contact-intro__content {
		display: block;
		padding: 70px 10px 65px;
	}
	.blumi-contact-intro__content-inner {
		padding: 0;
	}
	.blumi-products-intro--contact .blumi-products-intro__title {
		margin-bottom: 32px;
		font-size: 38px;
		line-height: 44px;
	}
	.blumi-products-intro--contact .blumi-products-intro__text {
		margin-bottom: 38px;
		font-size: 18px;
		line-height: 1.15;
	}
	.blumi-contact-intro__image {
		height: 62svh;
		min-height: 420px;
		max-height: 680px;
	}
}

@media (max-width: 660px) {
	.blumi-contact-intro__content-inner {
		padding-bottom: 30px;
	}
}
