/* ============================================================
 * Little Blossom storefront
 * Refined, tactile editorial treatment over Astra + WooCommerce.
 * ============================================================ */

:root {
	--lb-pink: #FF66C4;        /* primary; section backgrounds */
	--lb-pink-pale: #FFC1D6;   /* tints, panels */
	--lb-lime: #E9EA87;        /* buttons and arrows only */
	--lb-violet: #D8B2E1;      /* section backgrounds only */
	--lb-cream: #FFE9DF;       /* page background; light text on ink */
	--lb-ink: #222222;
	--lb-focus: var(--lb-ink);       /* high-contrast focus ring */
	--lb-font: "Montserrat", sans-serif;
	/* Fixed commerce roles. Keep the hierarchy predictable on narrow screens and at zoom. */
	--lb-type-display: 83.2px;
	--lb-type-page-title: 56px;
	--lb-type-section-heading: 56px;
	--lb-type-product-name: 16px;
	--lb-type-price: 15px;
	--lb-type-body: 16px;
	--lb-type-metadata: 14px;
	--lb-type-label: 12px;
	--lb-radius-pill: 999px;
	--lb-content: 1200px;
	--lb-line: rgb(34 34 34 / 14%);
	--lb-space-section: clamp(3.5rem, 8vw, 7.5rem);
	--lb-space-card: clamp(1rem, 2vw, 1.5rem);
}

body {
	background: var(--lb-cream) !important;
	color: var(--lb-ink);
	font-family: var(--lb-font);
	font-size: var(--lb-type-body);
	font-weight: 300;
	line-height: 1.6;
}

h1, h2, h3, h4, h5, h6,
.entry-title,
.site-title {
	font-family: var(--lb-font) !important;
	font-weight: 300;
	letter-spacing: -0.035em;
	line-height: 1.1;
}

h1:not(.has-text-color),
h2:not(.has-text-color),
h3:not(.has-text-color),
h4:not(.has-text-color),
h5:not(.has-text-color),
h6:not(.has-text-color),
.entry-title:not(.has-text-color),
.site-title:not(.has-text-color) {
	color: var(--lb-ink) !important;
}

h1, .entry-title { font-size: var(--lb-type-page-title); }
h2, h3 { font-size: var(--lb-type-section-heading); }

p { margin-bottom: 1.25em; }

a {
	color: var(--lb-ink);
	text-decoration-thickness: 1px;
	text-decoration-color: var(--lb-pink);
	text-underline-offset: 0.18em;
}

a:hover,
a:focus { color: var(--lb-ink); }

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
	outline: 2px solid var(--lb-focus);
	outline-offset: 3px;
	box-shadow: 0 0 0 4px var(--lb-cream);
}


/* --- Shared controls --- */
.ast-button,
.wp-block-button__link,
.button,
button.wp-element-button,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
input.mailpoet_submit {
	align-items: center;
	background: var(--lb-lime) !important;
	border: 1px solid var(--lb-ink);
	border-radius: var(--lb-radius-pill);
	box-shadow: none;
	color: var(--lb-ink) !important;
	display: inline-flex;
	font-family: var(--lb-font);
	font-size: var(--lb-type-label);
	font-weight: 500;
	justify-content: center;
	letter-spacing: 0.12em;
	line-height: 1.2;
	min-height: 44px;
	padding: 0.9rem 1.5rem;
	text-decoration: none;
	text-transform: uppercase;
	transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease, transform 180ms ease;
}

.ast-button:hover,
.ast-button:focus,
.wp-block-button__link:hover,
.wp-block-button__link:focus,
.button:hover,
.button:focus,
button.wp-element-button:hover,
button.wp-element-button:focus,
.woocommerce a.button:hover,
.woocommerce a.button:focus,
.woocommerce button.button:hover,
.woocommerce button.button:focus,
.woocommerce input.button:hover,
.woocommerce input.button:focus,
.woocommerce #respond input#submit:hover,
.woocommerce #respond input#submit:focus,
input.mailpoet_submit:hover,
input.mailpoet_submit:focus {
	background: var(--lb-pink) !important;
	color: var(--lb-ink) !important;
	transform: translateY(-1px);
}

input[type="text"],
input[type="email"],
input[type="tel"],
input[type="password"],
input[type="search"],
input[type="number"],
textarea,
select {
	background: transparent;
	border: 1px solid var(--lb-line);
	border-radius: 0;
	box-shadow: none;
	color: var(--lb-ink);
	font-family: var(--lb-font);
	font-weight: 300;
}

input:focus,
textarea:focus,
select:focus {
	border-color: var(--lb-ink);
	outline: 0;
}

input:focus-visible,
textarea:focus-visible,
select:focus-visible {
	box-shadow: 0 0 0 2px var(--lb-ink), 0 0 0 4px var(--lb-cream);
}

/* Storefront controls use Ink because Blossom Pink cannot meet focus contrast on pastel bands. */
.site-content a:focus-visible,
.woocommerce ul.products li.product > a:first-child:focus-visible,
.woocommerce-page ul.products li.product > a:first-child:focus-visible,
.lb-product-categories__link:focus-visible,
.woocommerce nav.woocommerce-pagination ul li a:focus-visible,
.site-content .button:focus-visible,
.site-content button:focus-visible,
.site-content input:focus-visible,
.site-content select:focus-visible,
.site-content textarea:focus-visible,
.woocommerce .woocommerce-ordering select:focus-visible,
.lb-home__newsletter-form .mailpoet_text:focus-visible,
.lb-home__newsletter-form .mailpoet_checkbox:focus-visible,
.lb-home__newsletter-form .mailpoet_captcha:focus-visible,
.lb-home__newsletter-form input.mailpoet_submit:focus-visible,
.lb-home__newsletter-form .mailpoet_icon_button:focus-visible {
	box-shadow: 0 0 0 4px var(--lb-cream) !important;
	outline: 2px solid var(--lb-focus) !important;
	outline-offset: 3px !important;
}

/* --- Header and footer --- */
.site-header,
.site-primary-header-wrap,
.ast-primary-header-bar {
	background: var(--lb-violet);
}

.site-header,
.site-footer,
.site-footer > *,
.site-footer .ast-builder-grid-row {
	border: 0 !important;
}

.ast-primary-header-bar {
	min-height: 6.5rem;
}

/* The lockup is inlined by lb_header_logo(), so this sizes the SVG artwork directly.
 * 754:256 artwork, so 180px wide is 61px tall — inside the 180 x 84 budget. */
.site-header .custom-logo-link {
	display: inline-block;
	line-height: 0;
}

.site-header .custom-logo-link svg {
	display: block;
	height: auto;
	width: 180px;
}

.site-logo-img + .ast-site-title-wrap { display: none; }

.main-header-menu .menu-link,
.ast-mobile-menu-trigger-minimal.menu-toggle {
	color: var(--lb-ink);
	font-family: var(--lb-font);
	font-size: var(--lb-type-label);
	font-weight: 500;
	letter-spacing: 0.1em;
	text-decoration: none;
	text-transform: uppercase;
}

.ast-mobile-menu-trigger-minimal.menu-toggle {
	font-size: var(--lb-type-label);
}

/* --- Header icons ---
 * Catalog mode keeps search and removes account and cart controls on desktop and mobile.
 */
.site-header .ast-header-account,
.site-header .ast-header-woo-cart,
.ast-mobile-popup-content .ast-header-account,
.ast-mobile-popup-content .ast-header-woo-cart {
	display: none !important;
}

.ast-header-account-wrap .ast-header-account-link,
.ast-site-header-cart .cart-container,
.ast-search-menu-icon .astra-search-icon {
	align-items: center;
	background: none;
	border: 0;
	border-radius: var(--lb-radius-pill);
	box-shadow: none;
	color: var(--lb-ink);
	display: inline-flex;
	justify-content: center;
	min-height: 24px;
	min-width: 24px;
	text-decoration: none;
}

/* Astra's cart line sits above the search and account icons because its inline SVG
 * inherits the header line box. Re-centre the cart target without changing its size. */
.site-header .ast-site-header-cart .cart-container {
	transform: translateY(0.35rem);
}

/* Astra boxes the cart icon whenever an icon style is set, and colours it from its own
 * palette rather than ours. Both are the "decorative styling" F2 rejected. */
.ast-site-header-cart .ast-addon-cart-wrap,
.ast-site-header-cart.ast-menu-cart-outline .ast-addon-cart-wrap,
.ast-site-header-cart.ast-menu-cart-fill .ast-addon-cart-wrap {
	background: none;
	border: 0;
	color: var(--lb-ink);
	padding: 0;
}

/* Astra fills icon shapes from its own stylesheet, and CSS beats the fill="none" attribute
 * on ours — without this the line drawings render as solid blobs. The account rule has to
 * match Astra's own selector depth to win. */
.site-header .ast-header-account-wrap svg,
.site-header .ast-site-header-cart svg,
.site-header .ast-search-menu-icon svg {
	fill: none;
	height: 22px;
	stroke: currentColor;
	width: 22px;
}

.ast-header-account-wrap .ast-header-account-type-icon .ahfb-svg-iconset svg path,
.ast-header-account-wrap .ast-header-account-type-icon .ahfb-svg-iconset svg circle,
.site-header .ast-site-header-cart svg path,
.site-header .ast-search-menu-icon svg path {
	fill: none;
	stroke: currentColor;
}

/* The mobile menu toggle is Astra's own filled glyph and stays filled — it just has to be
 * ink rather than Astra's palette blue. */
.site-header [data-section="section-header-mobile-trigger"] .ast-button-wrap .ast-mobile-menu-trigger-minimal {
	background: none;
	color: var(--lb-ink);
}

.site-header [data-section="section-header-mobile-trigger"] .menu-toggle .ast-mobile-svg {
	fill: currentColor;
}

.ast-site-header-cart .ast-addon-cart-wrap .count {
	background: none;
	border: 0;
	color: var(--lb-ink);
	font-size: var(--lb-type-label);
	font-weight: 500;
}

/* Astra draws a border on the form *and* the field, both from its own palette. One
 * border, ours, on the field. */
.site-header .ast-search-menu-icon .search-form {
	border: 0 !important;
}

.site-header .ast-search-menu-icon .search-field {
	background: var(--lb-cream);
	border: 1px solid var(--lb-ink);
	border-radius: var(--lb-radius-pill);
	font-size: var(--lb-type-metadata);
	padding-inline: 0.9rem;
}

/* Astra prints an inline `a:focus-visible:focus-visible` rule for the search toggle that
 * outranks any sane selector here, and it draws a thin dotted ring. !important is the
 * cheapest way to keep one focus treatment across all five controls. */
.site-header .main-header-menu .menu-link:focus-visible,
.ast-mobile-popup-content .main-header-menu .menu-link:focus-visible,
.site-header .ast-header-account-wrap .ast-header-account-link:focus-visible,
.site-header .ast-site-header-cart .cart-container:focus-visible,
.site-header .ast-search-menu-icon .astra-search-icon:focus-visible,
.site-header .ast-search-menu-icon .search-field:focus-visible,
.site-header .custom-logo-link:focus-visible,
.site-header .ast-mobile-menu-trigger-minimal.menu-toggle:focus-visible {
	outline: 2px solid var(--lb-focus) !important;
	outline-offset: 3px;
	box-shadow: 0 0 0 4px var(--lb-cream);
}

.main-header-menu .menu-link {
	padding-inline: 0.8rem;
}

.site-header .main-header-menu .current-menu-item > .menu-link,
.site-header .main-header-menu .menu-link:hover,
.site-header .main-header-menu .menu-link:focus {
	color: var(--lb-ink);
	text-decoration: underline;
	text-decoration-color: var(--lb-pink);
	text-decoration-thickness: 2px;
	text-underline-offset: 0.35em;
}

.ast-builder-menu-mobile .main-header-menu,
.ast-builder-menu-mobile .main-navigation {
	background: var(--lb-violet);
}

.site-footer,
.footer-sml-section-1,
.ast-small-footer,
.site-below-footer-wrap,
.site-below-footer-wrap[data-section="section-below-footer-builder"],
.site-below-footer-wrap .ast-builder-grid-row {
	background: var(--lb-pink);
	color: var(--lb-ink);
}

.site-footer .ast-footer-copyright,
.site-footer .ast-footer-copyright p,
.site-footer .ast-footer-copyright a {
	color: var(--lb-ink);
}

.site-footer a {
	color: var(--lb-ink);
	text-decoration-color: var(--lb-pink);
}

.site-footer a:hover { color: var(--lb-ink); }

.ast-small-footer-section-2,
.ast-footer-copyright a[href*="wpastra"],
.ast-footer-copyright a[href*="brainstormforce"] { display: none; }

/* --- Shop archive --- */
.woocommerce .ast-woocommerce-container,
.woocommerce-page .ast-woocommerce-container {
	padding-top: clamp(2.5rem, 6vw, 5rem);
	padding-bottom: var(--lb-space-section);
}

.woocommerce .woocommerce-products-header,
.woocommerce-page .woocommerce-products-header {
	border-bottom: 1px solid var(--lb-line);
	margin-bottom: clamp(2rem, 4vw, 3.5rem);
	padding-bottom: clamp(1.5rem, 3vw, 2.5rem);
}

.woocommerce .page-title,
.woocommerce-page .page-title {
	margin: 0;
}

.lb-product-categories {
	border-bottom: 1px solid var(--lb-line);
	margin: -1rem 0 2rem;
	padding-bottom: 1.5rem;
}

.lb-product-categories__list {
	display: flex;
	flex-wrap: wrap;
	gap: 0.55rem;
	list-style: none;
	margin: 0;
	padding: 0;
}

.lb-product-categories__link {
	border: 1px solid var(--lb-line);
	border-radius: var(--lb-radius-pill);
	display: inline-block;
	font-size: var(--lb-type-label);
	font-weight: 500;
	letter-spacing: 0.08em;
	padding: 0.65rem 1rem;
	text-decoration: none;
	text-transform: uppercase;
}

.lb-product-categories__link:hover,
.lb-product-categories__link:focus {
	background: var(--lb-pink);
	border-color: var(--lb-pink);
	text-decoration: none;
}

.woocommerce .woocommerce-result-count,
.woocommerce .woocommerce-ordering {
	margin: 0 0 2rem;
}

.woocommerce .lb-catalog-empty {
	margin: 2rem 0 0;
}

.woocommerce .woocommerce-result-count { float: left; }
.woocommerce .woocommerce-ordering { float: right; }

.woocommerce .woocommerce-ordering select {
	appearance: auto;
	font-size: var(--lb-type-label);
	min-height: 2.75rem;
	min-width: 14rem;
	padding: 0.45rem 2.25rem 0.45rem 0.85rem;
	width: auto !important;
}

.woocommerce .woocommerce-result-count {
	color: var(--lb-ink);
	font-size: var(--lb-type-metadata);
	letter-spacing: 0.02em;
}

.woocommerce .ast-woocommerce-container ul.products,
.woocommerce-page .ast-woocommerce-container ul.products {
	clear: both;
	display: grid;
	gap: clamp(2.5rem, 4vw, 4rem) clamp(1rem, 2.5vw, 2rem);
	grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
	margin: 0;
}

.woocommerce ul.products::before,
.woocommerce ul.products::after,
.woocommerce-page ul.products::before,
.woocommerce-page ul.products::after { display: none; }

.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product {
	float: none;
	margin: 0;
	text-align: left;
	width: auto;
}

.woocommerce ul.products li.product a img,
.woocommerce-page ul.products li.product a img {
	aspect-ratio: 4 / 5;
	margin: 0 0 1rem;
	object-fit: cover;
	transition: opacity 180ms ease, transform 300ms ease;
}

.woocommerce ul.products li.product > a:first-child,
.woocommerce-page ul.products li.product > a:first-child {
	display: block;
	overflow: hidden;
}

.woocommerce ul.products li.product:hover a img,
.woocommerce-page ul.products li.product:hover a img {
	opacity: 0.94;
	transform: scale(1.015);
}

.woocommerce ul.products li.product .woocommerce-loop-category,
.woocommerce ul.products li.product .ast-woo-product-category,
.woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce-page ul.products li.product .woocommerce-loop-product__title {
	color: var(--lb-ink);
	font-family: var(--lb-font);
	font-weight: 300;
	line-height: 1.25;
	padding: 0;
}

.woocommerce ul.products li.product .woocommerce-loop-category {
	color: rgb(34 34 34 / 72%);
	font-size: var(--lb-type-label);
	letter-spacing: 0.05em;
	margin-bottom: 0.35rem;
	text-transform: uppercase;
}

.woocommerce ul.products li.product .ast-woo-product-category {
	color: rgb(34 34 34 / 78%);
	display: block;
	font-size: var(--lb-type-label);
	font-weight: 500;
	letter-spacing: 0.05em;
	margin-bottom: 0.3rem;
	text-transform: uppercase;
}

.woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce-page ul.products li.product .woocommerce-loop-product__title {
	font-size: var(--lb-type-product-name);
	letter-spacing: -0.02em;
	margin: 0 0 0.35rem;
}

.woocommerce ul.products li.product .price,
.woocommerce-page ul.products li.product .price,
.woocommerce div.product p.price,
.woocommerce div.product span.price {
	color: var(--lb-ink);
	font-size: var(--lb-type-price);
	font-weight: 500;
	margin: 0 0 1rem;
}

.woocommerce ul.products li.product .button,
.woocommerce-page ul.products li.product .button {
	display: inline-block;
	margin: 0;
}

.woocommerce span.onsale {
	background: var(--lb-pink);
	border: 0;
	border-radius: var(--lb-radius-pill);
	color: var(--lb-ink);
	font-size: var(--lb-type-label);
	font-weight: 500;
	letter-spacing: 0.08em;
	line-height: 1;
	min-height: 0;
	min-width: 0;
	padding: 0.6rem 0.75rem;
	text-transform: uppercase;
}

.woocommerce nav.woocommerce-pagination { margin-top: 4rem; }
.woocommerce nav.woocommerce-pagination ul { border: 0; }
.woocommerce nav.woocommerce-pagination ul li { border: 0; margin: 0 0.2rem; }
.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span {
	align-items: center;
	border: 1px solid var(--lb-line);
	border-radius: 50%;
	color: var(--lb-ink);
	display: inline-flex;
	height: 44px;
	justify-content: center;
	min-width: 44px;
	padding: 0;
}
.woocommerce nav.woocommerce-pagination ul li span.current,
.woocommerce nav.woocommerce-pagination ul li a:hover { background: var(--lb-pink); }

/* --- Enquiry-led catalogue --- */
.lb-catalog { max-width: var(--lb-content); margin: 0 auto; padding: clamp(2rem, 6vw, 5rem) clamp(1.25rem, 5vw, 5rem) var(--lb-space-section); }
.lb-catalog__notice { border-bottom: 1px solid var(--lb-line); max-width: 48rem; padding-bottom: clamp(2rem, 5vw, 4rem); }
.lb-catalog__notice h1, .lb-catalog__custom h2, .lb-enquiry h2 { font-size: clamp(2.5rem, 5vw, 5rem); margin: 0; }
.lb-catalog__notice p:last-child, .lb-catalog__custom p { max-width: 48ch; }
.lb-catalog__category-grid { display: grid; gap: clamp(2rem, 5vw, 5rem) 2rem; grid-template-columns: repeat(2, minmax(0, 1fr)); padding: var(--lb-space-section) 0; }
.lb-catalog__category a, .lb-catalog__cover { color: var(--lb-ink); display: block; text-decoration: none; }
.lb-catalog__category img, .lb-catalog__cover img { aspect-ratio: 4 / 5; display: block; object-fit: cover; width: 100%; }
.lb-catalog__category h2 { font-size: clamp(2rem, 3.5vw, 3.5rem); margin: 1rem 0 .35rem; }
.lb-catalog__category span, .lb-catalog__back { font-size: var(--lb-type-label); font-weight: 500; letter-spacing: .08em; text-transform: uppercase; }
.lb-catalog__category a:hover img, .lb-catalog__category a:focus img, .lb-catalog__cover:hover img, .lb-catalog__cover:focus img { opacity: .94; }
.lb-catalog__back { display: inline-block; margin-bottom: clamp(2rem, 5vw, 4rem); }
.lb-catalog__filters { display: flex; flex-wrap: wrap; gap: .55rem; padding-top: 1.5rem; }
.lb-catalog__filters a { border: 1px solid var(--lb-line); border-radius: var(--lb-radius-pill); font-size: var(--lb-type-label); font-weight: 500; letter-spacing: .08em; padding: .65rem 1rem; text-decoration: none; text-transform: uppercase; }
.lb-catalog__filters a[aria-current="page"], .lb-catalog__filters a:hover, .lb-catalog__filters a:focus { background: var(--lb-pink); border-color: var(--lb-pink); }
.lb-catalog__grid { display: grid; gap: clamp(2rem, 4vw, 4rem) 2rem; grid-template-columns: repeat(3, minmax(0, 1fr)); padding-top: var(--lb-space-section); }
.lb-catalog__product h2 { font-size: var(--lb-type-product-name); letter-spacing: -.02em; margin: .9rem 0 .7rem; }
.lb-catalog__product-link { align-items: center; background: var(--lb-lime); border: 1px solid var(--lb-ink); border-radius: var(--lb-radius-pill); color: var(--lb-ink); display: inline-flex; font-size: var(--lb-type-label); font-weight: 500; letter-spacing: .08em; margin-top: .25rem; min-height: 44px; padding: .75rem 1rem; text-decoration: none; text-transform: uppercase; }
.lb-catalog__product-link:hover, .lb-catalog__product-link:focus { background: var(--lb-pink); color: var(--lb-ink); }
.lb-catalog__custom { background: var(--lb-violet); margin: 0 calc(clamp(1.25rem, 5vw, 5rem) * -1); padding: clamp(2rem, 5vw, 4rem) clamp(1.25rem, 5vw, 5rem); }
.lb-enquiry { display: grid; gap: 2rem clamp(3rem, 8vw, 8rem); grid-template-columns: minmax(0, 1fr) minmax(18rem, 1fr); padding-top: var(--lb-space-section); scroll-margin-top: 2rem; }
.lb-enquiry__intro h2 { font-size: clamp(2rem, 3.5vw, 3.5rem); }
.lb-enquiry__form { display: grid; gap: .5rem; }
.lb-enquiry__form label { font-size: var(--lb-type-label); font-weight: 500; letter-spacing: .08em; margin-top: .5rem; text-transform: uppercase; }
.lb-enquiry__form input, .lb-enquiry__form textarea { min-height: 44px; padding: .75rem 1rem; width: 100%; }
.lb-enquiry__form textarea { resize: vertical; }
.lb-enquiry__feedback { border: 1px solid var(--lb-ink); grid-column: 1 / -1; margin: 0; padding: 1rem; }
.lb-enquiry__feedback--success { background: var(--lb-lime); }
.woocommerce-shop .woocommerce-products-header, .woocommerce-shop .woocommerce-result-count, .woocommerce-shop .woocommerce-ordering, .woocommerce-shop .products, .woocommerce-shop .woocommerce-pagination,
.post-type-archive-product .woocommerce-products-header, .post-type-archive-product .woocommerce-result-count, .post-type-archive-product .woocommerce-ordering, .post-type-archive-product ul.products, .post-type-archive-product .woocommerce-pagination, .post-type-archive-product .woocommerce-info,
.tax-product_cat .woocommerce-products-header, .tax-product_cat .woocommerce-result-count, .tax-product_cat .woocommerce-ordering, .tax-product_cat ul.products, .tax-product_cat .woocommerce-pagination, .tax-product_cat .woocommerce-info,
.single-product .price, .single-product .stock { display: none !important; }

/* --- Product page --- */
.single-product .site-content > .ast-container {
	max-width: var(--lb-content);
	padding-top: clamp(2rem, 5vw, 4.5rem);
	padding-bottom: var(--lb-space-section);
}

.single-product .woocommerce-breadcrumb,
.single-product .woocommerce-breadcrumb a {
	color: var(--lb-ink);
	font-size: var(--lb-type-metadata);
	margin-bottom: clamp(1.5rem, 3vw, 2.5rem);
}

.woocommerce div.product div.images,
.woocommerce div.product div.summary {
	margin-bottom: 4rem;
}

/* Keep product media visible if the optional gallery enhancer is delayed. */
.woocommerce div.product .woocommerce-product-gallery { opacity: 1 !important; }

.woocommerce div.product div.images .woocommerce-product-gallery__image > a {
	display: block;
	overflow: hidden;
}

.woocommerce div.product div.images .woocommerce-product-gallery__image img {
	aspect-ratio: 4 / 5;
	object-fit: cover;
}

.woocommerce div.product .flex-control-thumbs {
	display: flex;
	gap: 0.6rem;
	margin-top: 0.7rem;
}

.woocommerce div.product .flex-control-thumbs li {
	float: none;
	width: 20%;
}

.woocommerce div.product .flex-control-thumbs img {
	aspect-ratio: 1;
	object-fit: cover;
	opacity: 0.55;
}

.woocommerce div.product .flex-control-thumbs img.flex-active,
.woocommerce div.product .flex-control-thumbs img:hover { opacity: 1; }

.woocommerce div.product .product_title {
	font-family: var(--lb-font);
	font-size: var(--lb-type-page-title);
	font-weight: 300;
	letter-spacing: -0.045em;
	line-height: 1;
	margin-bottom: 1rem;
}

.woocommerce div.product .woocommerce-product-rating,
.woocommerce div.product .stock,
.woocommerce div.product .product_meta {
	font-size: var(--lb-type-metadata);
}

.woocommerce div.product form.cart {
	border-block: 1px solid var(--lb-line);
	margin: 2rem 0;
	padding: 1.5rem 0;
}

.woocommerce div.product .lb-product-contact {
	border-block: 1px solid var(--lb-line);
	margin: 2rem 0;
	padding: 1.5rem 0;
}

.woocommerce div.product .lb-product-contact p {
	margin: 0 0 1rem;
}

.woocommerce div.product form.cart .variations {
	margin-bottom: 1.25rem;
}

.woocommerce div.product form.cart .variations th,
.woocommerce div.product form.cart .variations td {
	display: block;
	padding: 0 0 0.55rem;
	text-align: left;
}

.woocommerce div.product form.cart .variations label {
	font-size: var(--lb-type-label);
	font-weight: 500;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.woocommerce div.product form.cart .variations select {
	min-height: 3.25rem;
	padding: 0.5rem 0.75rem;
	width: 100%;
}

.woocommerce .quantity .qty {
	background: transparent;
	border: 1px solid var(--lb-line);
	border-radius: var(--lb-radius-pill);
	min-height: 3rem;
	padding: 0.35rem;
	width: 4.5rem;
}

.woocommerce div.product form.cart .button {
	min-height: 3rem;
	padding-inline: 1.5rem;
}

.woocommerce div.product .woocommerce-tabs ul.tabs {
	border-bottom: 1px solid var(--lb-line);
	margin: 0 0 2rem;
	padding: 0;
}

.woocommerce div.product .woocommerce-tabs ul.tabs::before { border: 0; }
.woocommerce div.product .woocommerce-tabs ul.tabs li {
	background: transparent;
	border: 0;
	border-radius: 0;
	margin: 0 1.5rem 0 0;
	padding: 0 0 0.75rem;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after { display: none; }
.woocommerce div.product .woocommerce-tabs ul.tabs li a {
	font-size: var(--lb-type-label);
	font-weight: 500;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active { border-bottom: 2px solid var(--lb-pink); }

.woocommerce div.product .related,
.woocommerce div.product .upsells { clear: both; padding-top: 2rem; }
.woocommerce div.product .related > h2,
.woocommerce div.product .upsells > h2 { margin-bottom: 2rem; }

/* --- Cart and checkout blocks --- */
.woocommerce-cart .site-content > .ast-container,
.woocommerce-checkout .site-content > .ast-container {
	max-width: var(--lb-content);
	padding-bottom: var(--lb-space-section);
	padding-top: clamp(2.5rem, 6vw, 5rem);
}

.wc-block-cart,
.wc-block-checkout {
	--wp--preset--color--contrast: var(--lb-ink);
	--wp--preset--color--base: var(--lb-cream);
	--wp--preset--color--accent: var(--lb-pink);
}

.wc-block-cart .wc-block-components-sidebar,
.wc-block-checkout .wc-block-components-sidebar {
	background: var(--lb-pink-pale);
	border: 0;
	border-radius: 0;
	box-shadow: none;
	padding: clamp(1.25rem, 3vw, 2rem);
}

.wc-block-components-title,
.wc-block-components-checkout-step__title,
.wc-block-components-order-summary__button-text {
	font-family: var(--lb-font);
	font-size: var(--lb-type-section-heading);
	font-weight: 300;
	letter-spacing: -0.02em;
}

.wc-block-cart-items .wc-block-cart-items__row {
	border-color: var(--lb-line);
}

.wc-block-components-product-name {
	font-family: var(--lb-font);
	font-size: var(--lb-type-product-name);
	font-weight: 300;
	text-decoration: none;
}

.wc-block-components-product-price,
.wc-block-components-totals-item__value,
.wc-block-components-totals-footer-item .wc-block-formatted-money-amount {
	font-size: var(--lb-type-price);
	font-weight: 500;
}

.wc-block-components-text-input input,
.wc-block-components-combobox .wc-block-components-combobox-control input.components-combobox-control__input,
.wc-block-components-select .wc-block-components-select__select,
.wc-block-components-textarea textarea {
	background: transparent;
	border: 1px solid var(--lb-line);
	border-radius: 0;
	box-shadow: none;
	color: var(--lb-ink);
	min-height: 3.2rem;
}

.wc-block-components-text-input.is-active input,
.wc-block-components-text-input input:focus,
.wc-block-components-combobox .wc-block-components-combobox-control input.components-combobox-control__input:focus,
.wc-block-components-select .wc-block-components-select__select:focus,
.wc-block-components-textarea textarea:focus {
	border-color: var(--lb-ink);
	box-shadow: 0 0 0 2px var(--lb-focus);
}

.wc-block-components-button,
.wc-block-cart__submit-button,
.wc-block-components-checkout-place-order-button {
	background: var(--lb-lime) !important;
	border: 1px solid var(--lb-ink) !important;
	border-radius: var(--lb-radius-pill) !important;
	box-shadow: none !important;
	color: var(--lb-ink) !important;
	font-family: var(--lb-font) !important;
	font-size: var(--lb-type-label) !important;
	font-weight: 500 !important;
	letter-spacing: 0.1em;
	min-height: 44px !important;
	padding: 0.95rem 1.5rem !important;
	text-transform: uppercase;
}

.wc-block-components-button:hover,
.wc-block-components-button:focus,
.wc-block-cart__submit-button:hover,
.wc-block-cart__submit-button:focus,
.wc-block-components-checkout-place-order-button:hover,
.wc-block-components-checkout-place-order-button:focus {
	background: var(--lb-pink) !important;
	color: var(--lb-ink) !important;
}

.wc-block-components-button:focus-visible,
.wc-block-cart__submit-button:focus-visible,
.wc-block-components-checkout-place-order-button:focus-visible {
	box-shadow: 0 0 0 2px var(--lb-ink), 0 0 0 4px var(--lb-cream) !important;
	outline: 0;
}

.wc-block-components-checkout-step,
.wc-block-components-order-summary,
.wc-block-components-totals-wrapper {
	border-color: var(--lb-line);
}

.wc-block-cart__empty-cart__title,
.wc-block-cart__empty-cart__title.with-empty-cart-icon {
	font-size: var(--lb-type-section-heading);
	font-weight: 300;
}

/* --- Homepage native Gutenberg sections --- */
body.home .entry-title,
body.home .entry-header,
body.page-template-default.home .entry-header { display: none !important; }

body.home .entry-content > .wp-block-cover {
	margin-top: 0;
}

body.home .wp-block-cover__inner-container {
	max-width: 48rem;
	padding-inline: 1.5rem;
}

body.home .wp-block-cover h1 {
	font-size: var(--lb-type-display);
	letter-spacing: -0.06em;
}

body.home .entry-content > .wp-block-group {
	padding-bottom: var(--lb-space-section);
	padding-top: var(--lb-space-section);
}

body.home .entry-content > .wp-block-group > * {
	margin-inline: auto;
	max-width: var(--lb-content);
}

body.home .wp-block-group.has-blush-background-color { background: var(--lb-pink) !important; }
body.home .wp-block-group.has-lavender-background-color { background: var(--lb-violet) !important; }
body.home .wp-block-group.has-mint-background-color { background: var(--lb-pink-pale) !important; }

body.home .wp-block-columns {
	gap: clamp(1.5rem, 4vw, 4rem);
}

body.home .wp-block-column > h3:first-child {
	margin-bottom: 0.6rem;
}

body.home .wp-block-woocommerce-product-collection .wc-block-product-template {
	gap: clamp(1.5rem, 3vw, 2.5rem);
}

body.home .wp-block-woocommerce-product-collection .wc-block-product {
	margin: 0;
}

body.home .wp-block-woocommerce-product-collection .wc-block-components-product-image img {
	aspect-ratio: 4 / 5;
	object-fit: cover;
}

body.home .wp-block-quote {
	border: 0;
	font-size: var(--lb-type-body);
	margin: 0;
	padding: 0;
}

body.home .wp-block-quote cite {
	font-size: var(--lb-type-label);
	font-style: normal;
	font-weight: 500;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

@media (min-width: 922px) {
	:root { --lb-type-body: 17px; }
}

@media (max-width: 921px) {
	.ast-primary-header-bar { min-height: 5.4rem; }
	.lb-catalog__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.lb-enquiry { grid-template-columns: 1fr; }
	.lb-enquiry__feedback { grid-column: auto; }

	.site-header .custom-logo-link svg {
		width: 132px;
	}

	.woocommerce .ast-woocommerce-container ul.products,
	.woocommerce-page .ast-woocommerce-container ul.products { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }

	.woocommerce div.product div.images,
	.woocommerce div.product div.summary { margin-bottom: 2.5rem; }

	.wc-block-cart .wc-block-components-sidebar,
	.wc-block-checkout .wc-block-components-sidebar { margin-top: 2rem; }
}

@media (max-width: 544px) {
	:root {
		--lb-type-display: 52px;
		--lb-type-page-title: 40px;
		--lb-type-section-heading: 36px;
	}

	.woocommerce .ast-woocommerce-container,
	.woocommerce-page .ast-woocommerce-container,
	.woocommerce-cart .site-content > .ast-container,
	.woocommerce-checkout .site-content > .ast-container {
		padding-inline: 1.25rem;
	}

	.woocommerce .woocommerce-result-count,
	.woocommerce .woocommerce-ordering { float: none; width: 100%; }
	.lb-catalog { padding-inline: 1.25rem; }
	.lb-catalog__grid { grid-template-columns: 1fr; }
	.lb-catalog__custom { margin-inline: -1.25rem; padding-inline: 1.25rem; }
	.lb-enquiry { display: block; }
	.lb-enquiry__form { margin-top: 2rem; }
	.woocommerce .woocommerce-ordering select { width: 100% !important; }

	.woocommerce ul.products,
	.woocommerce-page ul.products { gap: 2.5rem 1rem; }

	.woocommerce ul.products li.product .button,
	.woocommerce-page ul.products li.product .button {
		font-size: var(--lb-type-label);
		min-height: 44px;
		padding: 0.8rem 1rem;
	}

	.woocommerce div.product .product_title { font-size: var(--lb-type-page-title); }

	.woocommerce div.product form.cart .button {
		margin-top: 0.8rem;
		width: 100%;
	}

	.woocommerce div.product .woocommerce-tabs ul.tabs li { margin-right: 1rem; }

	body.home .wp-block-cover { min-height: 70vh !important; }
	body.home .entry-content > .wp-block-group { padding-inline: 1.25rem; }
}

/* --- Homepage campaign ---
 * Dark, editorial fields let the family photography lead without competing with it.
 */
.lb-home {
	background: var(--lb-cream);
	overflow: hidden;
}

/* A band carries one wave, at its bottom edge (#150). The svg is flipped so the scallops hang
   down out of the band. */
.lb-wave { color: var(--lb-pink); display: block; line-height: 0; }
.lb-wave svg { display: block; height: clamp(28px, 4vw, 60px); transform: scaleY(-1); width: 100%; }
/* A wave is filled with the colour of the section next to it, so the pink about band scallops
   down into whichever band actually follows it: pale pink for testimonials, violet for the
   newsletter, and the pink footer when neither renders — which is the default above. The
   `:not()` keeps the two rules from depending on their order in this file. The brand band is
   followed by the pink edits section, so it takes the default too. */
body.lb-has-testimonials .lb-home__band--about .lb-wave { color: var(--lb-pink-pale); }
body.lb-has-newsletter:not(.lb-has-testimonials) .lb-home__band--about .lb-wave { color: var(--lb-violet); }

.lb-home img { display: block; height: auto; max-width: 100%; width: 100%; }

.lb-home__eyebrow {
	font-size: var(--lb-type-label);
	font-weight: 500;
	letter-spacing: 0.14em;
	margin: 0 0 1.25rem;
	text-transform: uppercase;
}

.lb-home__hero {
	background: var(--lb-cream);
	color: var(--lb-ink);
	isolation: isolate;
	min-height: min(47rem, calc(100vh - 6.5rem));
	overflow: hidden;
	position: relative;
}

.lb-home__hero-slides,
.lb-home__hero-slide,
.lb-home__hero-slide picture,
.lb-home__hero-slide img { min-height: inherit; }

.lb-home__hero-slide {
	display: grid;
	isolation: isolate;
	place-items: stretch;
	position: relative;
}

.lb-home__hero-slide:not(:first-child) { display: none; }

.lb-home__hero.is-ready .lb-home__hero-slide {
	display: grid;
	pointer-events: none;
	position: absolute;
	inset: 0;
	transform: translateX(100%);
	transition: transform 1000ms cubic-bezier(.16, 1, .3, 1);
	visibility: hidden;
}

.lb-home__hero.is-ready .lb-home__hero-slide.is-active {
	pointer-events: auto;
	transform: translateX(0);
	visibility: visible;
	z-index: 1;
}

.lb-home__hero.is-ready .lb-home__hero-slide.is-leaving {
	transform: translateX(-100%);
	visibility: visible;
	z-index: 2;
}

.lb-home__hero.is-ready.is-reversing .lb-home__hero-slide { transform: translateX(-100%); }
.lb-home__hero.is-ready.is-reversing .lb-home__hero-slide.is-active { transform: translateX(0); }
.lb-home__hero.is-ready.is-reversing .lb-home__hero-slide.is-leaving { transform: translateX(100%); }

.lb-home__hero-slide picture,
.lb-home__hero-copy { grid-area: 1 / 1; }

.lb-home__hero-slide picture,
.lb-home__hero-slide img {
	display: block;
	width: 100%;
}

.lb-home__hero-slide img {
	height: 100%;
	object-fit: cover;
	object-position: center;
}

.lb-home__hero-copy {
	align-self: center;
	justify-self: start;
	max-width: 36rem;
	padding: clamp(2.5rem, 7vw, 7rem);
	position: relative;
	z-index: 1;
}

.lb-home__hero-category {
	font-size: var(--lb-type-label);
	font-weight: 500;
	letter-spacing: 0.14em;
	margin: 0 0 1rem;
	text-transform: uppercase;
}

.lb-home .lb-home__hero h2 {
	color: var(--lb-ink) !important;
	font-size: var(--lb-type-display);
	letter-spacing: -0.06em;
	line-height: 0.92;
	margin: 0;
}

.lb-home__hero-copy .lb-home__button { margin-top: 2rem; }

.lb-home__button {
	align-items: center;
	background: var(--lb-lime);
	border: 1px solid var(--lb-ink);
	border-radius: var(--lb-radius-pill);
	color: var(--lb-ink);
	display: inline-flex;
	font-size: var(--lb-type-label);
	font-weight: 500;
	gap: 0.75rem;
	letter-spacing: 0.12em;
	line-height: 1;
	padding: 1rem 1.3rem;
	text-decoration: none;
	text-transform: uppercase;
	transition: background-color 180ms ease, color 180ms ease, transform 180ms ease;
	white-space: nowrap;
}

.lb-home__button:hover,
.lb-home__button:focus {
	background: var(--lb-pink);
	color: var(--lb-ink);
	transform: translateY(-2px);
}

.lb-home__button span { font-size: 1rem; line-height: 0.7; }

.lb-home__hero-controls {
	inset: 0;
	pointer-events: none;
	position: absolute;
	z-index: 3;
}

.lb-home__hero-controls button { pointer-events: auto; }

.lb-home__hero-controls .lb-testimonials__arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
}

.lb-home__hero-controls [data-lb-home-hero-prev] { left: 1.5rem; }
.lb-home__hero-controls [data-lb-home-hero-next] { right: 1.5rem; }

.lb-home__hero-controls .lb-testimonials__pause {
	bottom: 1.5rem;
	grid-column: auto;
	left: 50%;
	position: absolute;
	transform: translateX(-50%);
}

.lb-home__hero.is-ready .lb-home__hero-controls .lb-testimonials__pause { display: inline-flex; }

.lb-home__hero-controls .lb-testimonials__pause {
	min-width: 44px;
	padding: 0;
	width: 44px;
}

.lb-home__hero-controls .lb-testimonials__pause svg {
	display: block;
	height: 20px;
	width: 20px;
}

/* Keep the hero at the photographs' 3:2 ratio. A viewport-height hero must either crop the
   photo or leave empty side panels on a short screen. The source ratio does neither. */
@media (min-width: 545px) {
	.lb-home__hero {
		aspect-ratio: 3 / 2;
		min-height: 0;
	}
	.lb-home__hero-slides,
	.lb-home__hero-slide,
	.lb-home__hero-slide picture,
	.lb-home__hero-slide img {
		height: 100%;
		min-height: 0;
	}
	.lb-home__hero-copy { max-width: 18rem; }
	.lb-home .lb-home__hero h2 { font-size: var(--lb-type-section-heading); }
}

.lb-home__ribbon {
	align-items: center;
	background: var(--lb-pink);
	color: var(--lb-ink);
	display: flex;
	font-size: var(--lb-type-label);
	font-weight: 500;
	gap: clamp(1rem, 3.5vw, 4rem);
	justify-content: center;
	letter-spacing: 0.12em;
	overflow: hidden;
	padding: 1rem 1.5rem;
	text-align: center;
	text-transform: uppercase;
	white-space: nowrap;
}

.lb-home__ribbon i { font-size: var(--lb-type-label); font-style: normal; }

.lb-home__new {
	margin-inline: auto;
	max-width: 1320px;
	padding: var(--lb-space-section) clamp(1.5rem, 5vw, 5rem);
}

.lb-home h2 {
	font-size: var(--lb-type-section-heading);
	letter-spacing: -0.065em;
	line-height: 0.96;
	margin: 0;
}

.lb-home__edits {
	background: var(--lb-pink);
	padding: var(--lb-space-section) clamp(1.5rem, 5vw, 5rem);
}

.lb-home__section-heading {
	margin: 0 auto clamp(2.75rem, 5vw, 5rem);
	max-width: 1320px;
}

.lb-home__edit-grid {
	display: grid;
	gap: clamp(1rem, 2.5vw, 2.75rem);
	grid-template-columns: repeat(3, minmax(0, 1fr));
	margin: 0 auto;
	max-width: 1320px;
}
.lb-home__edit-card img {
	aspect-ratio: 0.83;
	object-fit: cover;
	transition: transform 350ms ease;
}
.lb-home__edit-card:hover img { transform: scale(1.02); }

.lb-home__edit-card h3 {
	font-size: var(--lb-type-product-name);
	font-weight: 300;
	letter-spacing: -0.04em;
	margin: 0.85rem 0 0;
}
.lb-home__edit-card--offset { padding-top: clamp(2rem, 6vw, 6rem); }
.lb-home__edit-card p {
	font-size: var(--lb-type-body);
	line-height: 1.5;
	margin: 0.7rem 0 0;
	max-width: 24ch;
}


.lb-home__center-link { margin-top: clamp(2.5rem, 5vw, 5rem); text-align: center; }
.lb-home__button--light { background: var(--lb-ink); color: var(--lb-cream); }

.lb-home__section-heading--split {
	align-items: end;
	display: flex;
	gap: 2rem;
	justify-content: space-between;
}
.lb-home__section-heading--split > p {
	font-size: var(--lb-type-body);
	line-height: 1.5;
	margin: 0;
	max-width: 21rem;
}
.lb-home__category-nav {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	margin: clamp(2rem, 4vw, 3.5rem) 0 clamp(3rem, 6vw, 5rem);
}
.lb-home__category-nav a {
	align-items: center;
	border: 1px solid var(--lb-line);
	border-radius: var(--lb-radius-pill);
	color: var(--lb-ink);
	display: inline-flex;
	font-size: var(--lb-type-label);
	font-weight: 500;
	gap: 0.6rem;
	letter-spacing: 0.1em;
	min-height: 44px;
	padding: 0.65rem 1rem;
	text-decoration: none;
	text-transform: uppercase;
}
.lb-home__category-nav a:hover {
	background: var(--lb-pink);
	border-color: var(--lb-pink);
}
.lb-home__selection-grid {
	display: grid;
	gap: clamp(1rem, 2.5vw, 2.75rem);
	grid-template-columns: repeat(4, minmax(0, 1fr));
	margin: 0 auto clamp(3rem, 6vw, 5rem);
	max-width: 1320px;
}
.lb-home__selection-card {
	color: var(--lb-ink);
	display: block;
	min-width: 0;
	text-decoration: none;
}
.lb-home__selection-card img {
	aspect-ratio: 0.8;
	object-fit: cover;
	transition: transform 350ms ease;
}
.lb-home__selection-card:hover img { transform: scale(1.02); }
.lb-home__selection-card h3 {
	font-size: var(--lb-type-product-name);
	font-weight: 300;
	letter-spacing: -0.04em;
	margin: 0.85rem 0 0.35rem;
}
.lb-home__selection-link {
	font-size: var(--lb-type-label);
	font-weight: 500;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}



.lb-home-products .products {
	display: grid;
	gap: clamp(1.5rem, 3vw, 3rem);
	grid-template-columns: repeat(4, minmax(0, 1fr));
	list-style: none;
	margin: 0;
	padding: 0;
}
.lb-home-products .product {
	background: transparent;
	border: 0;
	box-shadow: none;
	margin: 0;
	min-width: 0;
	padding: 0;
}
.lb-home-products .product > a:first-child { display: block; overflow: hidden; text-decoration: none; }
.lb-home-products .product img {
	aspect-ratio: 0.8;
	object-fit: cover;
	transition: transform 350ms ease;
}
.lb-home-products .product:hover img { transform: scale(1.02); }
.lb-catalog-empty {
	border-block: 1px solid var(--lb-line);
	margin: 0;
	max-width: 42rem;
	padding: clamp(2rem, 5vw, 4rem) 0;
}
.lb-catalog-empty h3 { font-size: var(--lb-type-section-heading); margin: 0; }
.lb-catalog-empty p { margin: 1rem 0 1.5rem; max-width: 55ch; }
.lb-home-products .woocommerce-loop-product__title {
	color: var(--lb-ink);
	font-family: var(--lb-font);
	font-size: var(--lb-type-product-name);
	font-weight: 300;
	letter-spacing: -0.025em;
	line-height: 1.25;
	margin: 0.9rem 0 0.35rem;
	padding: 0;
	text-wrap: balance;
}
.lb-home-products .price { color: var(--lb-ink); font-size: var(--lb-type-price); font-weight: 500; }
/* !important: beats the higher-specificity `.woocommerce ul.products li.product …`
   shop-loop rules earlier in this file that otherwise show these on the homepage. */
.lb-home-products .ast-woo-product-category,
.lb-home-products .woocommerce-loop-category,
.lb-home-products .star-rating,
.lb-home-products .woocommerce-product-rating,
.lb-home-products .onsale,
.lb-home-products .ast-shop-product-out-of-stock,
.lb-home-products .button { display: none !important; }

.lb-home__band--brand { background: var(--lb-violet); }
.lb-home__band--about { background: var(--lb-pink); }
.lb-home__band--testimonials {
	background: var(--lb-pink-pale);
	padding-bottom: var(--lb-space-section);
}
.lb-home__band--newsletter { background: var(--lb-violet); }

/* --- Newsletter (#107) --- MailPoet renders the form, this file styles it. The form's own
   style sheet is kept near-empty on purpose (see docs/runbooks/newsletter.md): left blank,
   MailPoet falls back to #id-scoped defaults that would beat every rule below. A few
   declarations still need !important because MailPoet writes them inline on the element. */
.lb-home__band--newsletter .lb-home__band-copy { padding-top: var(--lb-space-section); }

.lb-home__newsletter-form { margin: 2.25rem auto 0; max-width: 26rem; }
.lb-home__newsletter-form fieldset { border: 0; margin: 0; padding: 0; }
.lb-home__newsletter-form .mailpoet_paragraph { margin: 0 0 1rem; }
.lb-home__newsletter-form .mailpoet_paragraph:last-child { margin-bottom: 0; }

.lb-home__newsletter-form .mailpoet_text {
	background: var(--lb-cream);
	border-color: var(--lb-ink);
	min-height: 44px;
	padding: 0.75rem 1rem;
}

.lb-home__newsletter-form .mailpoet_text::placeholder { color: var(--lb-ink); opacity: 0.75; }

/* Astra's `input[type="email"]:focus { box-shadow: none }` outranks the base `input:focus`
   rule in this file, so the focus ring needs a selector that beats it (WCAG 2.4.7). */
.lb-home__newsletter-form input.mailpoet_text:focus {
	border-color: var(--lb-ink);
	outline: 0;
}

.lb-home__newsletter-form input.mailpoet_text:focus-visible {
	box-shadow: 0 0 0 2px var(--lb-ink), 0 0 0 4px var(--lb-cream);
}

/* Block, not flex: the label holds a text node and a link, and flex would break them into
   separate columns. The checkbox is lifted out of the flow so the text wraps under itself. */
.lb-home__newsletter-form .mailpoet_checkbox_label {
	display: block;
	font-size: var(--lb-type-metadata);
	font-weight: 300;
	line-height: 1.45;
	min-height: 24px;
	padding-left: 1.75rem;
	position: relative;
	text-align: left;
}

.lb-home__newsletter-form .mailpoet_checkbox {
	left: 0;
	margin: 0;
	position: absolute;
	top: 0.2rem;
}
.lb-home__newsletter-form .mailpoet_checkbox_label a { color: var(--lb-ink); }

/* Inline `border-color: transparent` ships on the element itself. */
.lb-home__newsletter-form input.mailpoet_submit { border-color: var(--lb-ink) !important; }

.lb-home__newsletter-form .parsley-errors-list {
	font-size: var(--lb-type-label);
	font-weight: 500;
	list-style: none;
	margin: 0.4rem 0 0;
	padding: 0;
	text-align: left;
}

/* !important beats the #id-scoped rules MailPoet prints inline for each form. */
.lb-home__newsletter-form .mailpoet_message,
.lb-home__newsletter-form .mailpoet_validate_success,
.lb-home__newsletter-form .mailpoet_validate_error {
	font-size: var(--lb-type-metadata);
	font-weight: 500;
	padding: 0 !important;
}

/* On success MailPoet absolutely centres the message inside the form box and leaves the fields
   as `visibility: hidden` to reserve the space under it. That suits its popups; in a band it
   cramps the message into a narrow column above an empty gap. Put the message back in flow and
   collapse the spent fields. */
.lb-home__band--newsletter .lb-home__newsletter-form .mailpoet_form_successfully_send .mailpoet_validate_success {
	left: auto;
	position: static;
	top: auto;
	transform: none;
	width: 100%;
}

.lb-home__band--newsletter .mailpoet_form_successfully_send .mailpoet_paragraph { display: none; }

/* MailPoet keeps a behavioural anti-bot baseline even with its CAPTCHA switched off, and
   escalates a suspicious submission to this inline challenge. Rare, but a real visitor can
   land here, so it gets the same centred treatment as the rest of the band. */
.lb-home__newsletter-form .mailpoet_captcha_container { text-align: center; }
.lb-home__newsletter-form .mailpoet_captcha_image_wrapper { display: inline-block; }
.lb-home__newsletter-form .mailpoet_captcha { border: 1px solid var(--lb-ink); display: block; }
.lb-home__newsletter-form .mailpoet_icon_button {
	background: none;
	border: 0;
	cursor: pointer;
	min-height: 44px;
	min-width: 44px;
	padding: 0.5rem;
}
.lb-home__newsletter-form .mailpoet_captcha_label { display: block; margin: 0.75rem 0 0; }
.lb-home__newsletter-form .mailpoet_captcha_label .mailpoet_text_label {
	display: block;
	font-size: var(--lb-type-metadata);
	font-weight: 300;
	margin-bottom: 0.5rem;
}
.lb-home__newsletter-form .mailpoet_captcha_submit { margin-top: 1rem; }

/* --- Testimonials (#106, #144) ---
 * The client asked for one plain rectangle, no shadows, lime arrows, and — the defect she
 * named in Fika — arrows that do not change position when the quote changes.
 *
 * That last one is a layout problem, not a positioning one. Fika centres its arrows against a
 * box that resizes to fit each quote, so they move on every press. Here every quote is placed
 * in the SAME grid cell, which makes the box as tall as the longest quote at every width. The
 * box never resizes, so the arrows never move, and no hand-tuned min-height has to be kept up
 * to date as the quotes change. The pause control occupies its own full-width row below it.
 *
 * The single cell only applies under `.is-ready`, which the script adds. Without JavaScript the
 * stage is an ordinary one-column grid and all the quotes stack, readable — never a stack of
 * overlapping text behind arrows that cannot work.
 *
 * No box-shadow appears anywhere below. That is the literal reading of "bez tych takich
 * różowych i brązowych cieni". */
.lb-home__band--testimonials .lb-home__band-copy { padding-bottom: 2.5rem; padding-top: var(--lb-space-section); }

.lb-testimonials {
	align-items: center;
	display: grid;
	gap: clamp(0.75rem, 3vw, 2rem);
	grid-template-areas: "prev stage next";
	grid-template-columns: auto minmax(0, 1fr) auto;
	margin: 0 auto;
	max-width: 58rem;
	padding-inline: clamp(1.5rem, 5vw, 5rem);
}

.lb-testimonials__stage { display: grid; gap: 1.25rem; grid-area: stage; }

/* The box is sized by the longest quote, so a short one has room to spare. Centre the content
   in it: stranded at the top the leftover space reads as a bug, centred it reads as a margin. */
.lb-testimonials__quote {
	align-content: center;
	background: var(--lb-cream);
	border: 1px solid var(--lb-ink);
	display: grid;
	margin: 0;
	padding: clamp(1.75rem, 4vw, 2.75rem);
	text-align: center;
}

/* One cell, so the box is always as tall as the longest quote. Inactive quotes stay
   `visibility: hidden` rather than `display: none` precisely so they keep holding that height,
   and `inert` (set by the script) keeps them out of the tab order and the accessibility tree. */
.lb-testimonials.is-ready .lb-testimonials__stage { gap: 0; }
.lb-testimonials.is-ready .lb-testimonials__quote { grid-area: 1 / 1; visibility: hidden; }
.lb-testimonials.is-ready .lb-testimonials__quote.is-active { visibility: visible; }

.lb-testimonials blockquote { border: 0; margin: 0; padding: 0; }
.lb-testimonials blockquote p { font-size: var(--lb-type-body); line-height: 1.65; margin: 0; }

.lb-testimonials figcaption {
	font-size: var(--lb-type-label);
	font-weight: 500;
	letter-spacing: 0.14em;
	margin-top: 1.5rem;
	text-transform: uppercase;
}

/* Lime, as asked. The ink border is what separates lime from the pale pink band — both are
   light, so the shape needs an outline to read at all.
   The box-shadow reset is not redundant: Astra prints a global rule for every `button` that
   drops a shadow on exactly the element the client asked to have none. */
.lb-testimonials__arrow {
	align-items: center;
	background: var(--lb-lime);
	border: 1px solid var(--lb-ink);
	border-radius: var(--lb-radius-pill);
	box-shadow: none;
	color: var(--lb-ink);
	cursor: pointer;
	display: flex;
	height: 44px;
	justify-content: center;
	padding: 0;
	transition: background-color 180ms ease;
	width: 44px;
}

.lb-testimonials__arrow:hover { background: var(--lb-pink); }

.lb-testimonials__pause {
	align-items: center;
	background: var(--lb-lime);
	border: 1px solid var(--lb-ink);
	border-radius: var(--lb-radius-pill);
	box-shadow: none;
	color: var(--lb-ink);
	cursor: pointer;
	display: none;
	height: 44px;
	justify-content: center;
	justify-self: center;
	min-height: 44px;
	min-width: 44px;
	padding: 0;
	transition: background-color 180ms ease;
	width: 44px;
	grid-column: 1 / -1;
}
.lb-testimonials.is-ready .lb-testimonials__pause { display: inline-flex; }
.lb-testimonials__pause:hover { background: var(--lb-pink); }

/* Ink, not the pink --lb-focus used elsewhere: this ring has to read against lime inside and
   pale pink outside, and pink on pale pink is close to invisible (WCAG 2.4.11). */
.lb-testimonials__arrow:focus-visible,
.lb-testimonials__pause:focus-visible {
	box-shadow: 0 0 0 2px var(--lb-cream), 0 0 0 4px var(--lb-ink);
	outline: 0;
}

.lb-testimonials__arrow svg,
.lb-testimonials__pause svg { display: block; height: 20px; width: 20px; }
.lb-testimonials__arrow[data-lb-testimonials-prev] { grid-area: prev; }
.lb-testimonials__arrow[data-lb-testimonials-next] { grid-area: next; }

/* Narrow screens: the arrows move under the box as a centred pair, because side arrows would
   leave the quote a column too thin to read. Position is still fixed — the box above them
   keeps one height. */
@media (max-width: 544px) {
	.lb-testimonials {
		grid-template-areas: "stage stage" "prev next";
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		padding-inline: 1.25rem;
		row-gap: 1.75rem;
	}
	.lb-testimonials__arrow[data-lb-testimonials-prev] { justify-self: end; }
	.lb-testimonials__arrow[data-lb-testimonials-next] { justify-self: start; }
}

.lb-home__band-copy {
	margin-inline: auto;
	max-width: 40rem;
	padding: 0 clamp(1.5rem, 5vw, 5rem) var(--lb-space-section);
	text-align: center;
}

.lb-home__band--brand .lb-home__band-copy { padding-top: var(--lb-space-section); }

.lb-home__band-copy p:not(.lb-home__eyebrow) { font-size: var(--lb-type-body); margin: 2rem 0 0; max-width: 65ch; }

.lb-home__band-grid {
	align-items: center;
	display: grid;
	gap: clamp(2.5rem, 6vw, 6rem);
	grid-template-columns: minmax(18rem, 0.85fr) minmax(18rem, 1fr);
	margin-inline: auto;
	max-width: 1320px;
	padding: var(--lb-space-section) clamp(1.5rem, 5vw, 5rem);
}

.lb-home__band--about .lb-home__band-copy {
	max-width: none;
	padding: 0;
	text-align: left;
}

.lb-home__band--about .lb-home__button { margin-top: 2rem; }

.lb-home__about-photo { aspect-ratio: 0.8; margin: 0; overflow: hidden; }
.lb-home__about-photo img { height: 100%; object-fit: cover; }
.lb-home__band-grid--no-photo { grid-template-columns: minmax(0, 40rem); justify-content: center; }
.lb-home__band-grid--no-photo .lb-home__band-copy { text-align: center; }

@media (max-width: 921px) {
	.lb-home__hero { min-height: 75svh; }
	.lb-home-products .products { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.lb-home__selection-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.lb-home__band-grid { grid-template-columns: 1fr; }
}

@media (max-width: 544px) {
	body.home .site-content > .ast-container {
		max-width: none;
		padding-inline: 0;
	}
	.lb-home__hero {
		height: max(42rem, 75svh);
		min-height: 0;
	}
	.lb-home__hero-slide { grid-template-rows: minmax(0, 1fr) auto; }
	.lb-home__hero-slide picture,
	.lb-home__hero-slide img { min-height: 0; }
	.lb-home__hero-slide img { object-position: 55% center; }
	.lb-home__hero-slide picture {
		grid-column: 1;
		grid-row: 1;
	}
	.lb-home__hero-copy {
		align-self: auto;
		background: var(--lb-cream);
		grid-column: 1;
		grid-row: 2;
		margin: 0;
		max-width: none;
		padding: 1.25rem;
	}
	.lb-home .lb-home__hero h2 { font-size: clamp(2.25rem, 10vw, 3.25rem); }
	.lb-home__hero-copy .lb-home__button { margin-top: 1.25rem; }
	.lb-home__hero-controls [data-lb-home-hero-prev] { left: 1rem; top: 30%; }
	.lb-home__hero-controls [data-lb-home-hero-next] { right: 1rem; top: 30%; }
	.lb-home__hero-controls .lb-testimonials__pause { bottom: auto; left: auto; right: 1rem; top: 1rem; transform: none; }
	.lb-home__ribbon {
		gap: 0.75rem;
		justify-content: flex-start;
		padding-inline: 1.25rem;
	}
	.lb-home__ribbon i:nth-of-type(2),
	.lb-home__ribbon span:last-child { display: none; }
	.lb-home__band-grid { padding-inline: 1.25rem; }
	.lb-home__edits { padding-inline: 1.25rem; }
	.lb-home__edit-grid { gap: 2rem 1rem; grid-template-columns: 1fr; }
	.lb-home__edit-card--offset { padding-top: 0; }
	.lb-home__edit-card h3 { font-size: var(--lb-type-product-name); }
	.lb-home__section-heading--split { align-items: start; flex-direction: column; }
	.lb-home__new { padding-inline: 1.25rem; }
}

.lb-footer {
	background: var(--lb-pink);
	color: var(--lb-ink);
}

.lb-footer__columns {
	display: grid;
	gap: clamp(2rem, 5vw, 4rem);
	grid-template-columns: repeat(4, minmax(0, 1fr));
	margin-inline: auto;
	max-width: var(--lb-content);
	padding: clamp(2.5rem, 6vw, 4.5rem) clamp(1.5rem, 5vw, 5rem);
}

.lb-footer__column h3 {
	font-size: var(--lb-type-label);
	font-weight: 500;
	letter-spacing: 0.14em;
	margin: 0 0 1.25rem;
	text-transform: uppercase;
}

.lb-footer__column ul { list-style: none; margin: 0; padding: 0; }
.lb-footer__column li { margin-bottom: 0.6rem; }
.lb-footer__column a { color: var(--lb-ink); text-decoration-color: var(--lb-ink); }

.lb-footer__note {
	font-size: var(--lb-type-metadata);
	font-weight: 300;
	line-height: 1.45;
	margin: -0.5rem 0 0.9rem;
	max-width: 18rem;
}

@media (max-width: 921px) {
	.lb-footer__columns { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 544px) {
	.lb-footer__columns { grid-template-columns: 1fr; }
}

/* --- Target size (WCAG 2.2 AA 2.5.8) — standalone links get a 24px floor --- */
.lb-footer__column a,
.single-product .woocommerce-breadcrumb a,
.wc-block-components-product-name {
	align-items: center;
	display: inline-flex;
	min-height: 24px;
}

/* Reduced motion removes movement, but keeps immediate colour, opacity, border, and focus
   feedback so visitors can still understand interactive state changes. */
@media (prefers-reduced-motion: reduce) {
	.lb-home *, .lb-home *::before, .lb-home *::after {
		animation: none !important;
		scroll-behavior: auto;
		transition: none !important;
	}
	.lb-home__button:hover,
	.lb-home__button:focus,
	.lb-home__edit-card:hover img,
	.lb-home-products .product:hover img,
	.woocommerce ul.products li.product:hover a img,
	.woocommerce-page ul.products li.product:hover a img {
		transform: none;
	}
	.lb-testimonials.is-ready .lb-testimonials__pause,
	.lb-home__hero.is-ready .lb-home__hero-pause { display: none; }
}
