/*
Theme Name: Themify Ultra Child
Description: A child theme of Themify Ultra
Template: themify-ultra
Author: Hara Partners
*/

/* === Homepage hero banner (Themify slider row) ===
   Images are 2400×445 — display as full-bleed banner, not a boxed image. */
.home #layout.pagewidth {
	/* allow banner row to span the viewport */
	max-width: none;
	width: 100%;
}

/* Keep the rest of the page content readable width */
.home #content .themify_builder_content > .module_row:not(.tb_first) .row_inner,
.home #content .themify_builder_content > .module_row:not(:first-child) .row_inner {
	max-width: 1160px;
	margin-left: auto;
	margin-right: auto;
	width: 100%;
}

@media (max-width: 1260px) {
	.home #content .themify_builder_content > .module_row:not(.tb_first) .row_inner,
	.home #content .themify_builder_content > .module_row:not(:first-child) .row_inner {
		max-width: 94%;
	}
}

@media (max-width: 760px) {
	.home #content .themify_builder_content > .module_row:not(.tb_first) .row_inner,
	.home #content .themify_builder_content > .module_row:not(:first-child) .row_inner {
		max-width: 90%;
	}
}

/* First builder row = banner strip edge-to-edge */
.home .themify_builder_content > .module_row.tb_first,
.home .themify_builder_content > .module_row:first-child {
	width: 100vw;
	max-width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	padding: 0 !important;
	overflow: hidden;
}

.home .themify_builder_content > .module_row.tb_first .row_inner,
.home .themify_builder_content > .module_row:first-child .row_inner,
.home .themify_builder_content > .module_row.tb_first .module_column,
.home .themify_builder_content > .module_row:first-child .module_column {
	max-width: none !important;
	width: 100% !important;
	padding: 0 !important;
	margin: 0 !important;
}

.home .module-slider.tb_980v353,
.home .module_row.tb_first .module-slider,
.home .module_row:first-child .module-slider {
	margin: 0 !important;
	padding: 0 !important;
	width: 100%;
}

.home .module_row.tb_first .themify_builder_slider,
.home .module_row:first-child .themify_builder_slider,
.home .module-slider.tb_980v353 .themify_builder_slider {
	width: 100%;
}

/* Banner image: preserve 2400:445 aspect, fill width */
.home .module_row.tb_first .slide-image,
.home .module_row:first-child .slide-image,
.home .module-slider.tb_980v353 .slide-image {
	width: 100%;
	line-height: 0;
	overflow: hidden;
	/* ~2400/445 */
	aspect-ratio: 2400 / 445;
	background: #111;
}

.home .module_row.tb_first .slide-image a,
.home .module_row:first-child .slide-image a,
.home .module-slider.tb_980v353 .slide-image a {
	display: block;
	width: 100%;
	height: 100%;
}

.home .module_row.tb_first .slide-image img,
.home .module_row:first-child .slide-image img,
.home .module-slider.tb_980v353 .slide-image img {
	display: block;
	width: 100% !important;
	height: 100% !important;
	max-width: none !important;
	object-fit: cover;
	object-position: center center;
	margin: 0;
	border-radius: 0 !important;
}

/* Tighter banner on very small screens so it still reads as a strip */
@media (max-width: 680px) {
	.home .module_row.tb_first .slide-image,
	.home .module_row:first-child .slide-image,
	.home .module-slider.tb_980v353 .slide-image {
		aspect-ratio: 16 / 6;
		min-height: 140px;
	}
}

/* Slider nav over the banner, not below in empty space */
.home .module_row.tb_first .carousel-nav-wrap,
.home .module_row:first-child .carousel-nav-wrap,
.home .module-slider.tb_980v353 .tf_swiper-pagination,
.home .module_row.tb_first .tf_swiper-pagination {
	bottom: 12px;
}

/* === Carousel a11y: labels are set via JS; enlarge touch targets === */
.tf_carousel_nav_wrap,
.carousel-nav-wrap {
	align-items: center;
	gap: 8px;
	flex-wrap: wrap;
	justify-content: center;
}

/* Prev / next — min 44x44 touch target */
a.carousel-prev,
a.carousel-next {
	position: relative;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	width: 44px;
	height: 44px;
	box-sizing: border-box;
	margin: 4px;
	text-decoration: none;
}

/* Bullets — expand hit area while keeping visible dot size */
a.tf_carousel_bullet,
.carousel-pager a.tf_carousel_bullet {
	position: relative;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	width: 44px;
	height: 44px;
	box-sizing: border-box;
	margin: 0 !important;
	padding: 0 !important;
	text-decoration: none;
	/* visual dot via pseudo so clickable box stays large */
	background: transparent !important;
	border: 0 !important;
	opacity: 1 !important;
}

a.tf_carousel_bullet::before,
.carousel-pager a.tf_carousel_bullet::before {
	content: "";
	display: block;
	width: 12px;
	height: 12px;
	border-radius: 50%;
	background: currentColor;
	opacity: 0.35;
	box-sizing: border-box;
}

a.tf_carousel_bullet.selected::before,
a.tf_carousel_bullet.tf_swiper-pagination-bullet-active::before,
.carousel-pager a.tf_carousel_bullet.selected::before {
	opacity: 1;
	transform: scale(1.15);
}

/* Screen-reader-only text (if injected) */
.screen-reader-text,
.sr-only {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	padding: 0 !important;
	margin: -1px !important;
	overflow: hidden !important;
	clip: rect(0, 0, 0, 0) !important;
	white-space: nowrap !important;
	border: 0 !important;
}

/* Mobile: skip layout work for below-fold builder rows until near viewport */
@media (max-width: 768px) {
	.home .themify_builder_content > .module_row:not(.tb_first):not(:first-child) {
		content-visibility: auto;
		contain-intrinsic-size: 1px 600px;
	}
}
