﻿/* Keep one predictable closing gap between the last content and the footer.
 * The last builder section gives its bottom space to the main wrapper so
 * page-specific section rules cannot create different footer distances. */
.site-main {
	padding-block-end: var(--kiddee-content-padding) ;
}

#page > .site-main--builder > .elementor > :is(.e-con, .elementor-section):last-child,
#page > .site-main--commerce > .elementor > :is(.e-con, .elementor-section):last-child {
	padding-block-end: 0 ;
}

/* Elementor canvas pages render their document directly under #page rather
 * than through a .site-main wrapper. Cover that real structure as well. */
#page > .elementor:not([data-elementor-type="archive"]):not([data-elementor-type="product-archive"]) {
	box-sizing: border-box;
	padding-block-end: 0 ;
}

#page > .elementor:not([data-elementor-type="archive"]):not([data-elementor-type="product-archive"]) > .e-con {
	margin-block-start: 0 ;
	margin-block-end: 0 ;
	padding-block-start: var(--kiddee-content-padding) ;
	padding-block-end: var(--kiddee-content-padding) ;
}

#page > .elementor:not([data-elementor-type="archive"]):not([data-elementor-type="product-archive"]) > :is(.e-con, .elementor-section):last-child {
	padding-block-end: var(--kiddee-content-padding) ;
}

/* Product/category Elementor archives still receive one closing gap, while
 * their hero background and internal section spacing remain untouched. */
#page > .elementor:is([data-elementor-type="archive"], [data-elementor-type="product-archive"]) {
	box-sizing: border-box;
	padding-block-end: 0 ;
}

#page > .elementor:is([data-elementor-type="archive"], [data-elementor-type="product-archive"]) > :is(.e-con, .elementor-section):last-child {
	padding-block-end: var(--kiddee-content-padding) ;
}

/* WooCommerce Elementor archives can also render inside an unclassed main
 * wrapper. Keep their closing gap aligned with the single-product wrapper;
 * the archive's existing 10px inner closing padding is preserved. */
#page > main > .elementor:is([data-elementor-type="archive"], [data-elementor-type="product-archive"]) > :is(.e-con, .elementor-section):last-child {
	padding-block-end: max(0px, calc(var(--kiddee-content-padding) - 10px)) ;
}

/* Design 3D gallery is an inner portfolio wrapper, so it is not always the
 * last direct Elementor child. Keep its closing space on the same rhythm. */
body.kiddee-page-design-3d #page .kiddee-bind-a60165d {
	padding-block-end: var(--kiddee-content-padding) ;
}

.site-main > :where(section, .wp-block-group, .elementor-section, .e-con),
.site-main--builder > .elementor > .e-con,
.site-main--commerce > .elementor > .e-con {
	min-width: 0;
}

.site-main--builder > .elementor:not([data-elementor-type="archive"]):not([data-elementor-type="product-archive"]) > .e-con,
.site-main--commerce > .elementor:not([data-elementor-type="archive"]):not([data-elementor-type="product-archive"]) > .e-con {
	margin-block-start: 0 ;
	margin-block-end: 0 ;
	padding-block-start: var(--kiddee-content-padding) ;
	padding-block-end: var(--kiddee-content-padding) ;
}

.site-main:not(.site-main--builder):not(.site-main--commerce) > :where(
	section,
	.wp-block-group,
	.elementor-section,
	.e-con
) {
	margin-block-start: 0 ;
	margin-block-end: 0 ;
	padding-block-start: var(--kiddee-content-padding) ;
	padding-block-end: var(--kiddee-content-padding) ;
}

/* Equalize the custom outer sections that live outside the Elementor tree,
 * plus page-specific outer sections whose legacy rules use uneven spacing. */
.kiddee-services-intro,
.kiddee-installation-stats-intro,
body.kiddee-page-about #page :is(
	.kiddee-bind-6d054a8f,
	.kiddee-bind-ced1c47,
	.kiddee-bind-e51d98a
),
body.kiddee-page-installation-works #page :is(
	.kiddee-bind-c3e0549,
	.kiddee-bind-32485e67
),
body.kiddee-page-contact #page :is(
	.kiddee-bind-2373627
) {
	box-sizing: border-box;
	margin-block-start: 0 ;
	margin-block-end: 0 ;
	padding-block-start: clamp(40px, 5vw, 64px) ;
	padding-block-end: clamp(40px, 5vw, 64px) ;
}

/* Standardize the handoff from every cover to the first content block. */
:is(
	.kiddee-about-cover,
	.kiddee-promotions-cover,
	.kiddee-contact-cover
) + #page {
	margin-block-start: 0 ;
	padding-block-start: 0 ;
}

.kiddee-home-cover + #page {
	margin-block-start: 0 ;
	padding-block-start: 0 ;
}

:is(
	.kiddee-home-cover,
	.kiddee-about-cover,
	.kiddee-promotions-cover,
	.kiddee-contact-cover
) + :where(#page > :is(#primary, .site-main)) {
	margin-block-start: 0 ;
	padding-block-start: 0 ;
}

:is(
	.kiddee-about-cover,
	.kiddee-contact-cover
) + :where(#page > #primary.elementor) > :is(.e-con, .elementor-section):first-child,
:is(
	.kiddee-about-cover,
	.kiddee-contact-cover
) + :where(#page > :is(#primary, .site-main)) > .elementor > :is(.e-con, .elementor-section):first-child {
	margin-block-start: 0 ;
	padding-block-start: 0 ;
}

.kiddee-services-cover + .kiddee-services-intro,
.kiddee-installation-cover + .kiddee-installation-stats-intro {
	margin-block-start: 0 ;
	padding-block-start: clamp(40px, 5vw, 64px) ;
}

body.home :where(#page > #primary) {
	padding-top: 0 ;
}

/* Home used an extra pseudo-element as a second spacer; the #page handoff is
 * now the single source of truth. */
body.home :where(#page > #primary)::before {
	display: none ;
	height: 0 ;
	content: none ;
}

body.home #page .kiddee-bind-7e728d66 {
	margin-block: 0 ;
}

/* About page: keep one compact transition from the intro copy to the cards. */
body.kiddee-page-about #page .kiddee-bind-ced1c47 {
	padding-block-end: 16px ;
}

body.kiddee-page-about #page .kiddee-bind-e51d98a {
	padding-block-start: 16px ;
}

/* Contact page: let each card follow its content height. */
body.kiddee-page-contact #page .kiddee-bind-d3b9bf1 > .e-con-inner {
	align-items: start ;
}

body.kiddee-page-contact #page :is(
	.kiddee-bind-4bc6863,
	.kiddee-bind-3f4eab4
) {
	align-self: start ;
	height: auto ;
}

/* Footer palette: keep the light canvas and make all footer copy black. */
.site-footer {
	border-top-color: var(--kv2-airbnb-hairline) ;
	color: var(--kv2-airbnb-ink) ;
	background: var(--kv2-airbnb-surface-soft) ;
}

.site-footer :is(.footer-column-content, .footer-column-content a, .footer-menu a) {
	color: var(--kv2-airbnb-ink) ;
}

:where(html:not([data-kiddee-input="touch"])) .site-footer :is(.footer-heading, .footer-column-content a:hover, .footer-menu a:hover){
	color: var(--kv2-airbnb-ink) ;
}

:where(html:not([data-kiddee-input="touch"])) .site-footer .footer-menu a:hover{
	background: var(--kv2-airbnb-canvas) ;
}

.site-footer .footer-social__link {
	border-color: var(--kv2-airbnb-hairline) ;
	color: var(--kv2-airbnb-ink) ;
	background: var(--kv2-airbnb-canvas) ;
}

.site-footer__copyright {
	color: var(--kv2-airbnb-ink) ;
}

/* The current footer-menu item inherits an active-link treatment from the
 * global navigation styles. Keep it the same charcoal tone as every other
 * footer link,
:where(html:not([data-kiddee-input="touch"])) including its visited and active states. */
.site-footer .footer-menu :is(a, a:visited, a:hover, a:focus, a:active),
.site-footer .footer-menu :is(.current-menu-item, .current_page_item, .current-menu-ancestor, .current-menu-parent) > a{
	color: var(--kv2-airbnb-ink) ;
	text-decoration: none ;
}

.site-footer .footer-menu :is(.current-menu-item, .current_page_item, .current-menu-ancestor, .current-menu-parent) > a::after {
	content: none ;
}

/* Desktop header: the selected menu item uses charcoal rather than the
 * inherited blue brand treatment, including its small active underline. */
@media (min-width: 75rem) {
	.site-header .primary-menu > li > a:hover,
	.site-header .primary-menu > li > a:focus-visible {
		color: var(--kv2-airbnb-ink) ;
		background: transparent ;
	}

	.site-header .primary-menu > li:is(.current-menu-item, .current_page_item, .current-menu-ancestor, .current-menu-parent, .current_page_parent, .current_page_ancestor) > a {
		color: var(--kv2-airbnb-ink) ;
	}

	.site-header .primary-menu > li:is(.current-menu-item, .current_page_item, .current-menu-ancestor, .current-menu-parent, .current_page_parent, .current_page_ancestor) > a::after {
		background: var(--kv2-airbnb-ink) ;
	}
}

/* Button interaction: do not add a blue focus fill over the button color. */
:where(
	button,
	input[type="button"],
	input[type="submit"],
	.wp-element-button,
	.elementor-button,
	.woocommerce a.button,
	.woocommerce button.button,
	.woocommerce input.button
):focus:not(:focus-visible) {
	outline: 0 ;
	box-shadow: none ;
}

:where(
	button,
	input[type="button"],
	input[type="submit"],
	.wp-element-button,
	.elementor-button,
	.woocommerce a.button,
	.woocommerce button.button,
	.woocommerce input.button
):focus-visible {
	outline: 3px solid var(--kv2-color-accent-yellow) ;
	outline-offset: 3px;
}

.primary-menu a:focus,
.primary-menu a:focus-visible {
	background: transparent ;
}

@media (max-width: 47.99rem) {
	body.kiddee-page-installation-works #page .kiddee-bind-c3e0549 > .e-con-inner {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		width: calc(100% - 52px) ;
		max-width: none ;
		margin-inline: auto ;
		gap: 10px ;
	}

	body.kiddee-page-installation-works #page .kiddee-bind-c3e0549 > .e-con-inner > :is(
		.kiddee-bind-b8fab97,
		.kiddee-bind-3d5a8a6,
		.kiddee-bind-af70b8a,
		.kiddee-bind-15687ab
	) {
		box-sizing: border-box;
		width: calc(100% - 24px) ;
		margin-inline: auto ;
		min-height: 98px ;
		border: 1px solid var(--kv2-airbnb-hairline);
		border-radius: 16px;
		padding: 10px 7px 12px ;
		background: var(--kv2-airbnb-canvas) ;
		box-shadow: 0 5px 14px rgba(34, 34, 34, 0.05);
	}

	body.kiddee-page-installation-works #page :is(
		.kiddee-bind-b15434b,
		.kiddee-bind-59169f5,
		.kiddee-bind-526617a,
		.kiddee-bind-6b88804
	) .elementor-heading-title {
		font-size: var(--kv2-type-title-md-size);
		line-height: var(--kv2-type-title-md-line);
		white-space: nowrap ;
	}

	body.kiddee-page-installation-works #page :is(
		.kiddee-bind-0721ce4,
		.kiddee-bind-9ac0573,
		.kiddee-bind-4e19adc,
		.kiddee-bind-6601824
	) :is(p, .elementor-heading-title) {
		font-size: var(--kv2-type-title-md-size);
		line-height: var(--kv2-type-title-md-line);
		white-space: nowrap;
	}
}

@media (max-width: 22.49rem) {
	body.kiddee-page-installation-works #page .kiddee-bind-c3e0549 > .e-con-inner {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* About has a hidden legacy lead section before the visible first section, so
 * the visible section is addressed explicitly rather than by :first-child. */
body.kiddee-page-about #page .kiddee-bind-6d054a8f,
body.kiddee-page-contact #page .kiddee-bind-2373627,
body.kiddee-page-design-3d #page .kiddee-bind-54e3834c {
	margin-block-start: 0 ;
	padding-block-start: 0 ;
}

body.kiddee-page-contact #page .kiddee-bind-d3b9bf1 {
	padding-block-end: 0 ;
}

/* New-item has no catalogue content yet. Remove its entire Dream Big block
 * after the shared archive rules so no breakpoint can re-enable it. */
body.kiddee-v2-new-item
#page > .elementor.kiddee-document-new-item-archive > .kiddee-bind-5b89ba45 {
	display: none ;
}

/* The compact header is sticky and already contributes its measured height to
 * document flow. Do not retain the former fixed-header reservation. */
@media (min-width: 48rem) and (max-width: 63.99rem) {
	body:not(.tax-product_cat):not(.post-type-archive-product) .site-header + :is(
		#page,
		.kiddee-home-cover,
		.kiddee-about-cover,
		.kiddee-services-cover,
		.kiddee-installation-cover,
		.kiddee-promotions-cover,
		.kiddee-contact-cover
	) {
		margin-top: 0 ;
	}
}
