/*
Theme Name: Kensington Laboratories
Theme URI: https://www.kensingtonlaboratories.com/
Author: SIZH IT SOLUTIONS PVT LTD
Description: Lightweight custom WordPress + WooCommerce theme for Kensington Laboratories, built from the in-house HTML design system. No page builder required.
Version: 1.0.0
Requires at least: 6.4
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: kensington
Tags: e-commerce, custom-menu, custom-logo, translation-ready, accessibility-ready
WC requires at least: 8.0
WC tested up to: 11.0
*/

/*
 * The design system itself lives in assets/css/theme.css, enqueued separately
 * and unchanged from the source HTML build.
 *
 * This file carries only the bridging rules that map WooCommerce's own markup
 * onto the design's classes -- the alternative would have been overriding more
 * WooCommerce templates purely for class names.
 */

/* ---------------------------------------------------------------------------
   Quantity stepper
   WooCommerce prints <div class="quantity">; the design styles .qty-wrapper.
   --------------------------------------------------------------------------- */
.quantity {
	display: inline-flex;
	align-items: center;
	border: 1px solid var(--brand-border);
	border-radius: 6px;
	overflow: hidden;
	background: #ffffff;
}

.quantity .qty-input {
	width: 54px;
	border: 0;
	text-align: center;
	font-weight: 600;
	padding: 8px 0;
	-moz-appearance: textfield;
	appearance: textfield;
}

.quantity .qty-input::-webkit-outer-spin-button,
.quantity .qty-input::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

.quantity .qty-input:focus-visible {
	outline: 2px solid var(--brand-gold);
	outline-offset: -2px;
}

/* ---------------------------------------------------------------------------
   Notices
   --------------------------------------------------------------------------- */
.woocommerce-notices-wrapper .woocommerce-message,
.woocommerce-notices-wrapper .woocommerce-info,
.woocommerce-notices-wrapper .woocommerce-error {
	list-style: none;
	border: 1px solid var(--brand-border);
	border-left: 3px solid var(--brand-gold);
	background: var(--brand-gold-light);
	border-radius: 6px;
	padding: 14px 18px;
	margin: 0 0 20px;
	font-size: 0.88rem;
}

.woocommerce-notices-wrapper .woocommerce-error {
	border-left-color: #c0392b;
	background: #fdf3f2;
}

.woocommerce-notices-wrapper .button {
	float: right;
}

/* Notices also appear outside the wrapper on authentication, checkout and
   account endpoints. Keep every state in the same compact card language. */
.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
	position: relative;
	list-style: none;
	border: 1px solid #eadfce;
	border-left: 4px solid var(--brand-gold);
	background: #fdfaf3;
	border-radius: 7px;
	padding: 14px 18px;
	margin: 0 0 20px;
	color: var(--brand-dark);
	font-size: .88rem;
}

.woocommerce-error {
	border-left-color: #b74338;
	background: #fff5f4;
}

.woocommerce-message a,
.woocommerce-info a,
.woocommerce-error a {
	color: inherit;
	font-weight: 700;
}

/* ---------------------------------------------------------------------------
   Shared product cards: fixed content regions keep every carousel/grid row
   aligned while allowing long names to wrap naturally.
   --------------------------------------------------------------------------- */
.product-carousel .owl-stage,
.product-carousel .owl-item,
.product-carousel .item,
.products .col {
	display: flex;
}

.product-card {
	width: 100%;
}

.product-card > div:first-of-type {
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
}

.product-card .product-img-wrapper {
	height: 205px;
	flex: 0 0 205px;
	background: #fafaf9;
	overflow: hidden;
}

.product-card .product-img-wrapper a,
.product-card .product-img-wrapper img {
	display: flex;
	width: 100%;
	height: 100%;
	align-items: center;
	justify-content: center;
	object-fit: contain;
}

.product-card .product-title {
	min-height: 3.1em;
	line-height: 1.45;
	overflow-wrap: anywhere;
}

.product-card .product-price {
	margin-top: auto;
	min-height: 1.6em;
}

/* Size / strength shortcuts on a variable product's card.
 *
 * Deliberately shaped like the .size-pill swatches on the product page, so the
 * control the shopper taps in the grid is the control they land on. */
.product-card-sizes {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 8px 0 4px;
}

.product-card-size {
	padding: 4px 12px;
	border: 1px solid var(--brand-border, #e6e1d8);
	border-radius: 6px;
	background: #fff;
	color: #3b362e;
	font-size: .75rem;
	font-weight: 600;
	line-height: 1.5;
	text-decoration: none;
	transition: all .2s ease;
}

.product-card-size:hover,
.product-card-size:focus-visible {
	border-color: var(--brand-gold, #b6893e);
	background: var(--brand-gold-light, #fdf7ea);
	color: var(--brand-gold-hover, #926312);
}

@media (max-width: 575.98px) {
	.product-card-sizes {
		gap: 4px;
		margin: 6px 0 2px;
	}

	.product-card-size {
		padding: 3px 9px;
		font-size: .7rem;
	}
}

/* Keep catalogue and recommendation products in deliberate horizontal rows;
 * these rules also provide a stable pre-JavaScript fallback. */
.kensington-product-grid > .col {
	display: flex;
	/* Four across, matching row-cols-lg-4 on the archive template and the four
	 * the homepage rows show. This rule outranks the Bootstrap class -- it is
	 * later in the cascade -- so the column count lives here, not in the
	 * template's class list. */
	width: 25%;
	flex: 0 0 25%;
}

/* The pre-JavaScript fallback for the related-products slider. Kept at the same
 * count owl settles on, so the row does not render five and then reflow to four
 * the moment the carousel initialises. */
.single-product .related-product-carousel:not(.owl-loaded),
.single-product .related-product-carousel.owl-loading {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 15px;
}

.single-product .related-product-carousel:not(.owl-loaded) > .item,
.single-product .related-product-carousel.owl-loading > .item {
	display: flex;
	min-width: 0;
}

@media (max-width: 991.98px) {
	.kensington-product-grid > .col {
		width: 33.333333%;
		flex-basis: 33.333333%;
	}

	.single-product .related-product-carousel:not(.owl-loaded),
	.single-product .related-product-carousel.owl-loading {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (max-width: 767.98px) {
	.kensington-product-grid > .col {
		width: 50%;
		flex-basis: 50%;
	}

	.single-product .related-product-carousel:not(.owl-loaded),
	.single-product .related-product-carousel.owl-loading {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
	
}

.commerce-empty-cart {
	max-width: 650px;
	padding: clamp(2rem, 6vw, 4rem);
	border: 1px solid #e6dccb;
	border-radius: 14px;
	background: linear-gradient(145deg, #fff, #fdf9f1);
	box-shadow: 0 12px 38px rgba(78, 58, 24, .08);
}

.commerce-empty-icon {
	display: grid;
	width: 76px;
	height: 76px;
	margin: 0 auto 1.25rem;
	place-items: center;
	border: 1px solid #ead9b9;
	border-radius: 50%;
	background: #fff6df;
	color: var(--brand-gold, #c28d2b);
	font-size: 2rem;
}

/* Final checkout typography and component normalization. Plugin checkout
 * fields/gateways often ship with tiny inherited font sizes, so keep the
 * complete native checkout visually consistent with the theme. */
body.woocommerce-checkout .site-main.woocommerce {
	color: var(--brand-dark, #211e1a);
	font-size: 15px;
	line-height: 1.5;
}

body.woocommerce-checkout .commerce-hero h1 {
	font-size: clamp(1.35rem, 2vw, 1.7rem);
	line-height: 1.2;
}

body.woocommerce-checkout .commerce-hero p {
	font-size: .88rem;
}

body.woocommerce-checkout .checkout-step-card,
body.woocommerce-checkout .checkout-summary-card {
	font-size: .9rem;
}

body.woocommerce-checkout .woocommerce-billing-fields > h3,
body.woocommerce-checkout .woocommerce-shipping-fields > h3,
body.woocommerce-checkout .woocommerce-additional-fields > h3,
body.woocommerce-checkout #order_review_heading {
	color: var(--brand-dark, #211e1a);
	font-size: clamp(1.12rem, 1.8vw, 1.3rem);
	line-height: 1.3;
}

body.woocommerce-checkout #customer_details .form-row {
	margin-bottom: 1rem !important;
}

body.woocommerce-checkout #customer_details .form-row label {
	color: #37322b;
	font-size: .8rem !important;
	font-weight: 700;
}

body.woocommerce-checkout #customer_details .form-row .optional {
	color: #777066;
	font-size: .74rem;
	font-weight: 500;
}

body.woocommerce-checkout #customer_details .form-row abbr.required,
body.woocommerce-checkout #customer_details .form-row .required {
	color: #a44336;
	text-decoration: none;
	visibility: visible;
}

body.woocommerce-checkout #customer_details .form-row .input-text,
body.woocommerce-checkout #customer_details .form-row select,
body.woocommerce-checkout #customer_details .select2-selection--single {
	min-height: 38px;
	padding: .4rem .7rem !important;
	color: #27231f;
	font-family: inherit;
	font-size: .875rem !important;
	line-height: 1.4;
}

body.woocommerce-checkout #customer_details textarea.input-text {
	min-height: 120px;
	resize: vertical;
}

body.woocommerce-checkout #ship-to-different-address {
	margin: 0 0 1.1rem;
	font-size: .92rem;
}

body.woocommerce-checkout #ship-to-different-address label,
body.woocommerce-checkout .woocommerce-form__label-for-checkbox,
body.woocommerce-checkout .woocommerce-terms-and-conditions-checkbox-text {
	display: inline-flex;
	align-items: flex-start;
	gap: .5rem;
	font-size: .8rem;
	line-height: 1.45;
}

body.woocommerce-checkout input[type="checkbox"],
body.woocommerce-checkout input[type="radio"] {
	flex: 0 0 auto;
	accent-color: var(--brand-gold, #b6893e);
}

body.woocommerce-checkout .checkout-summary-card .shop_table {
	font-size: .82rem;
	line-height: 1.45;
}

body.woocommerce-checkout .checkout-summary-card .shop_table thead th {
	padding-top: 0;
	color: #736b61;
	font-size: .68rem;
	font-weight: 800;
	letter-spacing: .07em;
	text-transform: uppercase;
}

body.woocommerce-checkout .checkout-summary-card .shop_table th:last-child,
body.woocommerce-checkout .checkout-summary-card .shop_table td:last-child {
	text-align: right;
}

body.woocommerce-checkout .checkout-summary-card .shop_table .product-name {
	padding-right: .75rem;
	font-weight: 600;
}

body.woocommerce-checkout .checkout-summary-card .order-total th,
body.woocommerce-checkout .checkout-summary-card .order-total td {
	padding-top: 1rem;
	color: var(--brand-gold-hover, #9c7330) !important;
	font-size: 1rem !important;
}

body.woocommerce-checkout #shipping_method {
	margin: 0;
	padding: 0;
	list-style: none;
}

body.woocommerce-checkout #shipping_method li {
	display: flex;
	align-items: flex-start;
	gap: .45rem;
	justify-content: flex-end;
}

body.woocommerce-checkout #payment .payment_methods > li {
	font-size: .84rem !important;
}

body.woocommerce-checkout #payment .payment_methods > li > label {
	display: inline;
	color: #302b25;
	font-weight: 700;
	line-height: 1.4;
}

body.woocommerce-checkout #payment .payment_methods img {
	width: auto;
	max-width: 72px;
	max-height: 30px;
	margin-left: .35rem;
}

body.woocommerce-checkout #payment .payment_box {
	margin: .8rem 0 0;
	padding: .85rem;
	border-radius: 6px;
	background: #f7f2e8;
	color: #5c554b;
	font-size: .77rem;
	line-height: 1.5;
}

body.woocommerce-checkout #payment .payment_box::before {
	display: none;
}

body.woocommerce-checkout .woocommerce-privacy-policy-text,
body.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper,
body.woocommerce-checkout #research_peptides_consent_field {
	color: #696258;
	font-size: .74rem;
	line-height: 1.5;
}

body.woocommerce-checkout .woocommerce-terms-and-conditions {
	max-height: 220px;
	margin: .8rem 0;
	padding: 1rem;
	border: 1px solid #e2d8c8;
	border-radius: 6px;
	background: #fffdf9;
	font-size: .74rem;
}

body.woocommerce-checkout .site-main.woocommerce a,
body.woocommerce-checkout .site-main.woocommerce .woocommerce-info a,
body.woocommerce-checkout .site-main.woocommerce .woocommerce-form-coupon-toggle a,
body.woocommerce-checkout .site-main.woocommerce .woocommerce-privacy-policy-link,
body.woocommerce-checkout .site-main.woocommerce .woocommerce-terms-and-conditions-link {
	color: var(--brand-gold-hover, #9c7330) !important;
	font-weight: 650;
	text-decoration-color: rgba(156, 115, 48, .45);
	text-underline-offset: 2px;
}

body.woocommerce-checkout .site-main.woocommerce a:hover,
body.woocommerce-checkout .site-main.woocommerce a:focus-visible {
	color: var(--brand-gold, #b6893e) !important;
}

body.woocommerce-checkout .woocommerce-info,
body.woocommerce-checkout .woocommerce-message,
body.woocommerce-checkout .woocommerce-error {
	margin: 1rem auto;
	border-color: var(--brand-gold, #b6893e);
	border-radius: 8px;
	background: #fffaf0;
	font-size: .82rem;
}

body.woocommerce-checkout .checkout_coupon {
	margin: 0 0 1.25rem;
	padding: 1rem;
	border: 1px solid #e4dac9;
	border-radius: 8px;
	background: #fffdf9;
}

body.woocommerce-checkout .checkout_coupon .input-text {
	min-height: 43px;
	border: 1px solid #dcd2c3;
	border-radius: 5px;
}

body.woocommerce-checkout .checkout_coupon button,
body.woocommerce-checkout .checkout_coupon .button {
	min-height: 43px;
	border-color: var(--brand-gold, #b6893e) !important;
	background: var(--brand-gold, #b6893e) !important;
	color: #fff !important;
}

@media (max-width: 575.98px) {
	body.woocommerce-checkout .checkout-step-card,
	body.woocommerce-checkout .checkout-summary-card {
		padding: 1rem;
	}

	body.woocommerce-checkout .commerce-hero {
		text-align: center;
	}

	body.woocommerce-checkout .checkout-summary-card .shop_table {
		font-size: .82rem;
	}
}

@media (max-width: 479.98px) {
	.kensington-product-grid > .col {
		width: 100%;
		flex-basis: 100%;
	}

	.single-product .related-product-carousel:not(.owl-loaded),
	.single-product .related-product-carousel.owl-loading {
		grid-template-columns: 1fr;
	}
}

/* Stable AJAX affordance shared by homepage, archive and recommendation cards. */
.ajax_add_to_cart {
	position: relative;
	min-height: 42px;
}

.ajax_add_to_cart.is-adding,
.ajax_add_to_cart.loading {
	pointer-events: none;
	cursor: wait;
	opacity: .86;
	padding-right: 42px !important;
}

.ajax_add_to_cart.is-adding i,
.ajax_add_to_cart.loading i {
	display: none;
}

.ajax_add_to_cart.is-adding::before,
.ajax_add_to_cart.loading::before {
	display: none !important;
}

body .woocommerce .ajax_add_to_cart.is-adding::after,
body .woocommerce .ajax_add_to_cart.loading::after,
body .ajax_add_to_cart.is-adding::after,
body .ajax_add_to_cart.loading::after {
	position: absolute !important;
	top: 50% !important;
	right: 16px !important;
	display: block !important;
	visibility: visible !important;
	width: 15px !important;
	height: 15px !important;
	margin: -7.5px 0 0 !important;
	transform: none;
	border: 2px solid rgba(255,255,255,.48) !important;
	border-top-color: #fff !important;
	border-radius: 50% !important;
	background: transparent !important;
	content: "" !important;
	opacity: 1 !important;
	animation: kensington-spin .65s linear infinite !important;
}

.ajax_add_to_cart.is-added::after {
	content: "\2713";
	margin-left: 8px;
	font-weight: 800;
}

.ajax_add_to_cart.is-error {
	box-shadow: 0 0 0 2px rgba(183,67,56,.2);
}

@keyframes kensington-spin { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
	.ajax_add_to_cart.is-adding::before,
	.ajax_add_to_cart.loading::before { animation-duration: 1.4s; }
}

/* ---------------------------------------------------------------------------
   WooCommerce customer journey fallbacks. Dedicated cart/checkout/account
   templates use the same tokens; these rules cover endpoint-generated forms,
   order tables, authentication, password reset and empty states.
   --------------------------------------------------------------------------- */
.woocommerce form .form-row { margin: 0 0 16px; }
.woocommerce form .form-row label { display: block; margin-bottom: 6px; font-size: .82rem; font-weight: 700; }
.woocommerce form .input-text,
.woocommerce form select,
.woocommerce form textarea,
.woocommerce .select2-container .select2-selection--single {
	width: 100%;
	min-height: 44px;
	border: 1px solid var(--brand-border);
	border-radius: 6px;
	background: #fff;
	padding: 10px 12px;
	color: var(--brand-dark);
}
.woocommerce form textarea { min-height: 110px; resize: vertical; }
.woocommerce form .input-text:focus,
.woocommerce form select:focus,
.woocommerce form textarea:focus { border-color: var(--brand-gold); box-shadow: 0 0 0 3px rgba(182,137,62,.12); outline: 0; }
.woocommerce .required { color: #a64b42; text-decoration: none; }

.woocommerce form.login,
.woocommerce form.register,
.woocommerce form.lost_reset_password {
	max-width: 580px;
	margin: 30px auto;
	padding: 30px;
	border: 1px solid var(--brand-border);
	border-top: 3px solid var(--brand-gold);
	border-radius: 8px;
	background: #fff;
	box-shadow: 0 15px 35px rgba(0,0,0,.05);
}

.woocommerce button.button,
.woocommerce a.button,
.woocommerce input.button {
	border: 1px solid var(--brand-gold);
	border-radius: 5px;
	background: var(--brand-gold);
	color: #fff;
	font-weight: 700;
	padding: 11px 20px;
}
.woocommerce button.button:hover,
.woocommerce a.button:hover,
.woocommerce input.button:hover { background: var(--brand-gold-hover); border-color: var(--brand-gold-hover); color: #fff; }

.woocommerce table.shop_table,
.woocommerce table.woocommerce-table {
	width: 100%;
	border: 1px solid var(--brand-border);
	border-collapse: separate;
	border-spacing: 0;
	border-radius: 7px;
	overflow: hidden;
	background: #fff;
}
.woocommerce table.shop_table th,
.woocommerce table.woocommerce-table th { background: #faf7f1; color: var(--brand-dark); font-size: .78rem; text-transform: uppercase; letter-spacing: .35px; }
.woocommerce table.shop_table th,
.woocommerce table.shop_table td,
.woocommerce table.woocommerce-table th,
.woocommerce table.woocommerce-table td { padding: 13px 12px; border: 0; border-bottom: 1px solid #f0ece6; overflow-wrap: anywhere; }
.woocommerce address { padding: 18px; border: 1px solid var(--brand-border); border-radius: 7px; background: #fff; line-height: 1.75; }
.woocommerce .woocommerce-customer-details,
.woocommerce .woocommerce-order-details { margin-top: 28px; }
.woocommerce .woocommerce-order-overview { display: grid; grid-template-columns: repeat(auto-fit,minmax(150px,1fr)); gap: 10px; padding: 0; list-style: none; }
.woocommerce .woocommerce-order-overview li { margin: 0; padding: 14px; border: 1px solid var(--brand-border); border-radius: 6px; background: #fafaf9; font-size: .78rem; }

@media (max-width: 767.98px) {
	.product-card .product-img-wrapper { height: 170px; flex-basis: 170px; }
	.woocommerce form.login,
	.woocommerce form.register,
	.woocommerce form.lost_reset_password { margin: 15px 0; padding: 22px 18px; }
	.woocommerce table.shop_table_responsive thead { display: none; }
	.woocommerce table.shop_table_responsive tr { display: block; padding: 10px; border-bottom: 1px solid var(--brand-border); }
	.woocommerce table.shop_table_responsive td { display: flex; justify-content: space-between; gap: 16px; width: 100%; text-align: right !important; border: 0; }
	.woocommerce table.shop_table_responsive td::before { content: attr(data-title); flex: 0 0 42%; text-align: left; font-weight: 700; }
	.woocommerce-MyAccount-navigation ul { display: flex; overflow-x: auto; scrollbar-width: thin; }
	.woocommerce-MyAccount-navigation li { flex: 0 0 auto; }
	.woocommerce-MyAccount-navigation .account-nav-link { white-space: nowrap; border-left: 0; border-bottom: 3px solid transparent; }
	.woocommerce-MyAccount-navigation .account-nav-link.is-active { border-bottom-color: var(--brand-gold); }
}

/* Blog detail/listing sidebars and editorial links. */
.blog-sidebar-inner {
	position: sticky;
	top: 155px;
}

.blog-sidebar .widget {
	margin-bottom: 1.25rem;
	padding: 1.35rem;
	border: 1px solid #e8dece;
	border-radius: 10px;
	background: linear-gradient(145deg, #fff, #fdf9f1);
	box-shadow: 0 7px 22px rgba(77, 57, 21, .07);
}

.blog-sidebar .widget-title,
.blog-sidebar .wp-block-heading {
	margin-bottom: 1rem;
	padding-bottom: .7rem;
	border-bottom: 2px solid var(--brand-gold, #c28d2b);
	font-family: var(--font-serif, Georgia, serif);
	font-size: 1.2rem;
	font-weight: 700;
}

.blog-sidebar ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.blog-sidebar li + li {
	margin-top: .65rem;
	padding-top: .65rem;
	border-top: 1px solid #eee7dc;
}

.blog-sidebar a,
.single-post .kensington-rte a,
.archive .blog-article-card a:not(.blog-badge) {
	color: var(--brand-gold-hover, #946516);
}

.blog-sidebar a:hover,
.blog-sidebar a:focus-visible,
.single-post .kensington-rte a:hover,
.single-post .kensington-rte a:focus-visible {
	color: var(--brand-gold, #c28d2b);
}

.blog-sidebar input[type="search"] {
	width: 100%;
	padding: .7rem .8rem;
	border: 1px solid #ddd2bf;
	border-radius: 5px;
}

/* Taxonomy CTA artwork, shown in place of the heading band.

   The artwork carries its own wording, so the section is the picture and
   nothing else: no padding, no gradient, no minimum height. Letting the image
   set its own height is what keeps a wide banner uncropped on a phone -- a
   fixed-height box with `cover` would cut the wording off at both sides. */
.shop-banner--image {
	display: block;
	padding: 0;
	min-height: 0;
	background: none;
	border-bottom: 0;
	line-height: 0;
}

.shop-banner__image {
	display: block;
	width: 100%;
	height: auto;
	max-width: 100%;
}

/* ACF-driven reconstitution calculator. */
.calculator-hero {
	padding: clamp(3rem, 7vw, 5rem) 0;
	border-bottom: 1px solid #eadfcf;
	background: radial-gradient(circle at 85% 15%, #f5dfaa 0, transparent 28%), linear-gradient(135deg, #fff 45%, #fbf4e7);
}

.calculator-intro {
	max-width: 700px;
	color: #655f56;
}

.calculator-shell,
.calculator-content {
	max-width: 980px;
}

.calculator-card,
.calculator-result-card {
	height: 100%;
	padding: clamp(1.4rem, 3vw, 2.25rem);
	border: 1px solid #e7dac4;
	border-radius: 14px;
	background: #fff;
	box-shadow: 0 12px 35px rgba(91, 67, 24, .09);
}

.calculator-card-heading {
	display: flex;
	align-items: center;
	gap: .85rem;
	margin-bottom: 1.75rem;
}

.calculator-card-heading > div > span {
	color: #8a8072;
	font-size: .74rem;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.calculator-step {
	display: inline-grid;
	flex: 0 0 2.65rem;
	height: 2.65rem;
	place-items: center;
	border-radius: 50%;
	background: #fbf2df;
	color: var(--brand-gold-hover, #946516);
	font-weight: 800;
}

.calculator-field + .calculator-field {
	margin-top: 1.15rem;
}

.calculator-field label {
	display: block;
	margin-bottom: .45rem;
	font-weight: 700;
}

.calculator-field input,
.calculator-field select {
	width: 100%;
	min-height: 48px;
	padding: .65rem .85rem;
	border: 1px solid #dcd2c3;
	border-radius: 6px;
	font-size: 1rem;
}

.calculator-field input:focus,
.calculator-field select:focus {
	border-color: var(--brand-gold, #c28d2b);
	box-shadow: 0 0 0 3px rgba(194, 141, 43, .15);
	outline: 0;
}

.calculator-presets {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(75px, 1fr));
	gap: .5rem;
	margin-bottom: .65rem;
}

.calculator-presets button {
	min-height: 42px;
	padding: .5rem .65rem;
	border: 1px solid #ddd2c2;
	border-radius: 7px;
	background: #fff;
	color: #514a41;
	font-size: .86rem;
	font-weight: 700;
	transition: .2s ease;
}

.calculator-presets button:hover,
.calculator-presets button:focus-visible,
.calculator-presets button.is-active {
	border-color: var(--brand-gold, #c28d2b);
	background: #fbf2df;
	color: #815914;
}

.calculator-input-wrap {
	position: relative;
}

.calculator-input-wrap input {
	padding-right: 3.5rem;
}

.calculator-input-wrap > span {
	position: absolute;
	top: 50%;
	right: 1rem;
	color: #7b7266;
	font-size: .85rem;
	font-weight: 700;
	transform: translateY(-50%);
}

.calculator-result-card {
	position: sticky;
	top: 2rem;
	overflow: hidden;
	background: linear-gradient(145deg, #b98225, #d8a844);
	color: #fff;
}

.calculator-result-icon {
	display: inline-grid;
	width: 3.25rem;
	height: 3.25rem;
	margin-bottom: 1.5rem;
	place-items: center;
	border: 1px solid rgba(255, 255, 255, .35);
	border-radius: 50%;
	background: rgba(255, 255, 255, .12);
	font-size: 1.45rem;
}

.calculator-result-label {
	display: block;
	font-size: .8rem;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
}

.calculator-result-card > strong {
	display: block;
	margin: .6rem 0;
	font-size: clamp(2.7rem, 7vw, 4.5rem);
	line-height: 1;
}

.calculator-result-card > strong small {
	font-size: 1rem;
}

.calculator-result-card dl > div {
	display: flex;
	justify-content: space-between;
	gap: 1rem;
	padding: .5rem 0;
}

.calculator-result-card dd {
	margin: 0;
	font-weight: 700;
}

.calculator-gauge {
	overflow: hidden;
	height: 9px;
	margin: 1.4rem 0;
	border-radius: 20px;
	background: rgba(255, 255, 255, .25);
}

.calculator-gauge > span {
	display: block;
	width: 0;
	height: 100%;
	border-radius: inherit;
	background: #fff;
	transition: width .3s ease;
}

.calculator-disclaimer {
	display: flex;
	align-items: center;
	gap: .8rem;
	padding: 1rem 1.2rem;
	border: 1px solid #e7d3a5;
	border-radius: 8px;
	background: #fff8e6;
}

.calculator-disclaimer i {
	color: var(--brand-gold-hover, #946516);
	font-size: 1.4rem;
}

@media (max-width: 991.98px) {
	.calculator-result-card {
		position: static;
	}

	.blog-sidebar-inner {
		position: static;
	}
}

@media (max-width: 575.98px) {
	.calculator-presets {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* ---------------------------------------------------------------------------
   Breadcrumbs and My Account

   Yoast's breadcrumb markup does not use Bootstrap's .breadcrumb-item class,
   so its links previously fell back to the browser/plugin blue. The account
   auth columns also use WooCommerce's historic .col-1/.col-2 names, which
   collide with Bootstrap's 1/12 and 2/12 grid utilities.
   --------------------------------------------------------------------------- */
.shop-banner nav[aria-label="Breadcrumb"] a,
.shop-banner nav[aria-label="Breadcrumb"] a:visited,
.woocommerce-breadcrumb a,
.woocommerce-breadcrumb a:visited {
	color: var(--brand-gold) !important;
	font-weight: 600;
	text-decoration: none;
}

.shop-banner nav[aria-label="Breadcrumb"] a:hover,
.shop-banner nav[aria-label="Breadcrumb"] a:focus-visible,
.woocommerce-breadcrumb a:hover,
.woocommerce-breadcrumb a:focus-visible {
	color: var(--brand-gold-hover) !important;
	text-decoration: underline;
	text-underline-offset: 3px;
}

body.woocommerce-account .legal-content-card {
	padding: clamp(20px, 3vw, 38px);
	background: linear-gradient(135deg, #fff 55%, #fdf9f1 100%);
}

body.woocommerce-account #customer_login.u-columns.col2-set {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: clamp(22px, 4vw, 48px);
	width: 100%;
}

.account-auth-switcher {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	width: 100%;
	max-width: 760px;
	margin: 0 auto 30px;
	padding: 5px;
	border: 1px solid #e5d8c2;
	border-radius: 8px;
	background: #f8f3e9;
}

.account-auth-switcher a,
.account-auth-switcher button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 45px;
	border: 0;
	border-radius: 5px;
	background: transparent;
	color: #5f5547;
	font-weight: 700;
	cursor: pointer;
	text-decoration: none;
}

.account-auth-switcher a.is-active,
.account-auth-switcher button.is-active {
	background: var(--brand-gold);
	color: #fff;
	box-shadow: 0 4px 12px rgba(128, 91, 29, .18);
}

body.kensington-auth-login #customer_login > .u-column2,
body.kensington-auth-register #customer_login > .u-column1 {
	display: none !important;
}

body.kensington-auth-login #customer_login,
body.kensington-auth-register #customer_login {
	display: block !important;
	width: 100%;
	max-width: 860px;
	margin: 0 auto;
}

body.woocommerce-account #customer_login.has-auth-switch,
body.woocommerce-account #customer_login.has-auth-switch.u-columns.col2-set {
	display: block !important;
	width: 100%;
	max-width: 860px;
	margin: 0 auto;
}

body.woocommerce-account #customer_login.has-auth-switch > .u-column1.col-1,
body.woocommerce-account #customer_login.has-auth-switch > .u-column2.col-2 {
	width: 100%;
}

body.woocommerce-account #customer_login.has-auth-switch > [hidden] {
	display: none !important;
}

body.woocommerce-account #customer_login > .u-column1.col-1,
body.woocommerce-account #customer_login > .u-column2.col-2 {
	display: block;
	flex: 0 0 100% !important;
	float: none;
	width: 100% !important;
	max-width: 100% !important;
	min-width: 0;
	padding: 0;
}

body.woocommerce-account #customer_login > div > h2 {
	position: relative;
	margin: 0 0 18px;
	padding-bottom: 12px;
	font-family: var(--font-serif);
	font-size: clamp(1.5rem, 2.5vw, 1.9rem);
	font-weight: 700;
	color: var(--brand-dark);
}

body.woocommerce-account #customer_login > div > h2::after {
	position: absolute;
	bottom: 0;
	left: 0;
	width: 48px;
	height: 2px;
	background: var(--brand-gold);
	content: "";
}

body.woocommerce-account #customer_login form.login,
body.woocommerce-account #customer_login form.register {
	display: block;
	width: 100% !important;
	max-width: 100% !important;
	min-width: 0;
	height: auto;
	margin: 0;
	padding: clamp(28px, 4vw, 42px);
	border: 1px solid #e7dcc9;
	border-top: 3px solid var(--brand-gold);
	box-shadow: 0 12px 34px rgba(49, 39, 22, .06);
}

body.woocommerce-account #customer_login form.login .input-text,
body.woocommerce-account #customer_login form.register .input-text {
	min-height: 48px;
	font-size: .96rem;
}

body.woocommerce-account #customer_login form.login .button,
body.woocommerce-account #customer_login form.register .button {
	min-height: 46px;
	font-size: .95rem;
}

/* Some account customiser plugins retain WooCommerce's float widths with
   selectors loaded after the base theme. These explicit auth-only rules keep
   the active card comfortably wide without affecting checkout columns. */
body.woocommerce-account .woocommerce #customer_login .u-column1,
body.woocommerce-account .woocommerce #customer_login .u-column2,
body.woocommerce-account .woocommerce #customer_login form.woocommerce-form-login,
body.woocommerce-account .woocommerce #customer_login form.woocommerce-form-register {
	box-sizing: border-box !important;
	width: 100% !important;
	min-width: 0 !important;
	max-width: 100% !important;
}

body.woocommerce-account #customer_login .form-row {
	width: 100%;
	padding: 0;
}

body.woocommerce-account #customer_login .woocommerce-form-login__rememberme {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin: 4px 16px 12px 0;
	font-weight: 500;
}

body.woocommerce-account #customer_login input[type="checkbox"] {
	width: 17px;
	height: 17px;
	accent-color: var(--brand-gold);
}

body.woocommerce-account #customer_login .woocommerce-form-login__submit,
body.woocommerce-account #customer_login .woocommerce-form-register__submit {
	min-width: 125px;
	margin: 2px 0 10px;
}

body.woocommerce-account .lost_password,
body.woocommerce-account .woocommerce-privacy-policy-text {
	font-size: .86rem;
	line-height: 1.65;
}

body.woocommerce-account .woocommerce a:not(.button),
body.woocommerce-account .woocommerce a:not(.button):visited {
	color: var(--brand-gold);
}

body.woocommerce-account .woocommerce a:not(.button):hover,
body.woocommerce-account .woocommerce a:not(.button):focus-visible {
	color: var(--brand-gold-hover);
}

/* Logged-in dashboard and every endpoint: orders, downloads, addresses and
   account details all retain the same navigation/content card structure. */
body.woocommerce-account .woocommerce-MyAccount-navigation {
	width: 100%;
}

body.woocommerce-account .woocommerce-MyAccount-navigation ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

body.woocommerce-account .woocommerce-MyAccount-navigation li {
	margin: 0;
}

body.woocommerce-account .woocommerce-MyAccount-content {
	float: none;
	width: 100%;
	min-width: 0;
}

body.woocommerce-account .woocommerce-MyAccount-content > h2,
body.woocommerce-account .woocommerce-MyAccount-content > h3,
body.woocommerce-account .woocommerce-MyAccount-content .woocommerce-order-details__title,
body.woocommerce-account .woocommerce-MyAccount-content .woocommerce-column__title {
	font-family: var(--font-serif);
	color: var(--brand-dark);
}

body.woocommerce-account .woocommerce-Addresses {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 20px;
}

body.woocommerce-account .woocommerce-Addresses::before,
body.woocommerce-account .woocommerce-Addresses::after {
	display: none;
}

body.woocommerce-account .woocommerce-Address {
	float: none;
	width: 100%;
	padding: 20px;
	border: 1px solid var(--brand-border);
	border-radius: 7px;
	background: #fafaf9;
}

body.woocommerce-account .woocommerce-Address-title {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
}

body.woocommerce-account .woocommerce-Address-title h2 {
	font-family: var(--font-serif);
	font-size: 1.15rem;
}

body.woocommerce-account fieldset {
	margin: 24px 0;
	padding: 20px;
	border: 1px solid var(--brand-border);
	border-radius: 7px;
}

body.woocommerce-account fieldset legend {
	float: none;
	width: auto;
	padding: 0 8px;
	font-family: var(--font-serif);
	font-size: 1rem;
	font-weight: 700;
	color: var(--brand-dark);
}

/* Password visibility control used on login/reset and edit-account. */
.woocommerce .kensington-password-field {
	position: relative;
	display: block;
}

.woocommerce .kensington-password-field > input.input-text {
	padding-right: 48px !important;
}

.woocommerce .password-input__toggle {
	position: absolute;
	top: 50%;
	right: 5px;
	display: inline-grid;
	width: 38px;
	height: 36px;
	padding: 0;
	place-items: center;
	transform: translateY(-50%);
	border: 0;
	border-radius: 5px;
	background: transparent;
	color: #6f675d;
	font-size: 1rem;
	line-height: 1;
	cursor: pointer;
}

.woocommerce .password-input__toggle:hover,
.woocommerce .password-input__toggle:focus-visible {
	background: var(--brand-gold-light);
	color: var(--brand-gold-hover);
}

.account-nav-toggle {
	display: none;
}

body.woocommerce-account .woocommerce-pagination ul.page-numbers {
	display: flex;
	gap: 7px;
	border: 0;
}

body.woocommerce-account .woocommerce-pagination .page-numbers li {
	border: 0;
}

body.woocommerce-account .woocommerce-pagination .page-numbers a,
body.woocommerce-account .woocommerce-pagination .page-numbers span {
	display: grid;
	min-width: 38px;
	height: 38px;
	place-items: center;
	border: 1px solid var(--brand-border);
	border-radius: 5px;
	background: #fff;
}

body.woocommerce-account .woocommerce-pagination .page-numbers .current {
	border-color: var(--brand-gold);
	background: var(--brand-gold);
	color: #fff;
}

@media (max-width: 767.98px) {
	body.woocommerce-account #customer_login.u-columns.col2-set,
	body.woocommerce-account .woocommerce-Addresses {
		grid-template-columns: 1fr;
	}

	body.woocommerce-account #customer_login form.login,
	body.woocommerce-account #customer_login form.register {
		height: auto;
		width: 100%;
	}

	body.woocommerce-account #customer_login,
	body.woocommerce-account #customer_login *,
	body.woocommerce-account .woocommerce-MyAccount-content,
	body.woocommerce-account .woocommerce-MyAccount-content * {
		max-width: 100%;
		box-sizing: border-box;
	}

	body.woocommerce-account #customer_login p,
	body.woocommerce-account .woocommerce-MyAccount-content p,
	body.woocommerce-account .woocommerce-MyAccount-content address {
		overflow-wrap: anywhere;
	}

	body.woocommerce-account .account-panel-card {
		padding: 20px 16px;
	}

	body.woocommerce-account .woocommerce-MyAccount-navigation ul,
	body.woocommerce-account .account-nav-items {
		display: block !important;
		overflow: visible;
	}

	body.woocommerce-account nav.woocommerce-MyAccount-navigation {
		display: block !important;
		width: 100% !important;
		margin-bottom: 18px;
	}

	body.woocommerce-account .account-nav-card.is-open .account-nav-items {
		display: block;
	}

	.account-nav-toggle {
		display: none;
	}

	.account-nav-toggle-icon {
		transition: transform .2s ease;
	}

	.account-nav-toggle[aria-expanded="true"] .account-nav-toggle-icon {
		transform: rotate(180deg);
	}

	body.woocommerce-account .woocommerce-MyAccount-navigation .account-nav-link {
		white-space: normal;
		border-bottom: 1px solid #f1ece4;
	}
}

/* ---------------------------------------------------------------------------
   Product gallery

   The design puts a vertical, scrollable thumbnail rail to the left of a tall
   image stage. WooCommerce's gallery (flexslider) renders the thumbnails as a
   horizontal list underneath, so the layout is rebuilt here with flexbox
   instead of replacing the gallery template -- that keeps variation image
   switching, zoom and the lightbox working.
   --------------------------------------------------------------------------- */
.woocommerce-product-gallery {
	position: relative;
	display: flex;
	align-items: flex-start;
	gap: 12px;
}

/*
 * The image stage.
 *
 * .flex-viewport is flexslider's clipping window and .__wrapper is the sliding
 * track it sets inline widths and transforms on -- neither may be turned into a
 * flex container or the slider stops working. Only the slide itself is centred.
 */
.woocommerce-product-gallery .flex-viewport,
.woocommerce-product-gallery > .woocommerce-product-gallery__wrapper {
	order: 2;
	flex: 1 1 auto;
	min-width: 0;
	background: #fafafa;
	border: 1px solid var(--brand-border);
	border-radius: 8px;
	padding: 25px;
	overflow: hidden;
	position: relative;
}

/* Each slide is a fixed-height box so portrait and square images both fit. */
.woocommerce-product-gallery .woocommerce-product-gallery__image {
	height: 370px;
	display: flex;
	align-items: center;
	justify-content: center;
}

.woocommerce-product-gallery .woocommerce-product-gallery__image a {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
}

.woocommerce-product-gallery .woocommerce-product-gallery__image img {
	max-width: 100%;
	max-height: 100%;
	width: auto;
	height: auto;
	margin: 0 auto;
	object-fit: contain;
}

/* Thumbnail column: up arrow, rail, down arrow. */
.woocommerce-product-gallery .gallery-thumbs-wrapper {
	order: 1;
	flex: 0 0 76px;
	width: 76px;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 4px;
}

.woocommerce-product-gallery .flex-control-thumbs {
	display: flex;
	flex-direction: column;
	gap: 8px;
	width: 100%;
	max-height: 340px;
	overflow-y: auto;
	scroll-behavior: smooth;
	padding: 6px 4px;
	margin: 0;
	list-style: none;
	-ms-overflow-style: none;
	scrollbar-width: none;
}

/* Before the wrapper exists (no JS), the rail still needs its own column. */
.woocommerce-product-gallery > .flex-control-thumbs {
	order: 1;
	flex: 0 0 76px;
}

.woocommerce-product-gallery .flex-control-thumbs::-webkit-scrollbar {
	display: none;
}

.woocommerce-product-gallery .flex-control-thumbs li {
	width: 68px;
	height: 68px;
	min-height: 68px;
	flex: 0 0 68px;
	margin: 0 auto;
	list-style: none;
}

.woocommerce-product-gallery .flex-control-thumbs img {
	width: 100%;
	height: 100%;
	border: 1.5px solid var(--brand-border);
	border-radius: 6px;
	padding: 4px;
	background: #fafafa;
	object-fit: contain;
	cursor: pointer;
	opacity: 1;
	transition: var(--transition-smooth);
}

.woocommerce-product-gallery .flex-control-thumbs img.flex-active,
.woocommerce-product-gallery .flex-control-thumbs img:hover {
	border-color: var(--brand-gold);
	box-shadow: 0 4px 10px rgba(182, 137, 62, 0.15);
}

/* Scroll arrows, shown only when the rail actually overflows. */
.gallery-thumbs-wrapper .thumb-scroll-btn {
	width: 28px;
	height: 28px;
	background: #ffffff;
	border: 1px solid #e0e0e0;
	border-radius: 50%;
	display: none;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	font-size: 0.75rem;
	color: #444;
	box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
	transition: var(--transition-smooth);
	flex: 0 0 auto;
	padding: 0;
}

.gallery-thumbs-wrapper.has-overflow .thumb-scroll-btn {
	display: flex;
}

.gallery-thumbs-wrapper .thumb-scroll-btn:hover {
	background: var(--brand-gold);
	border-color: var(--brand-gold);
	color: #ffffff;
}

/* Gold third-party stamp over the stage. */
.woocommerce-product-gallery .stamp-badge {
	position: absolute;
	bottom: 25px;
	right: 25px;
	z-index: 4;
	pointer-events: none;
}

/* WooCommerce's zoom/lightbox trigger sits top-right of the stage. */
.woocommerce-product-gallery__trigger {
	position: absolute;
	top: 16px;
	right: 16px;
	z-index: 5;
	background: #ffffff;
	border: 1px solid var(--brand-border);
	border-radius: 50%;
	width: 36px;
	height: 36px;
	display: flex;
	align-items: center;
	justify-content: center;
	text-decoration: none;
	font-size: 1rem;
	color: var(--brand-dark);
	box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}

.woocommerce-product-gallery__trigger:hover {
	background: var(--brand-gold);
	border-color: var(--brand-gold);
	color: #ffffff;
}

/* Stack the rail under the stage on small screens, as the design does. */
@media (max-width: 575.98px) {
	.woocommerce-product-gallery {
		flex-direction: column;
	}

	.woocommerce-product-gallery .gallery-thumbs-wrapper,
	.woocommerce-product-gallery > .flex-control-thumbs {
		order: 2;
		flex-direction: row;
		align-items: center;
		width: 100%;
		flex-basis: auto;
	}

	.woocommerce-product-gallery .flex-control-thumbs {
		flex-direction: row;
		max-height: none;
		overflow-x: auto;
		overflow-y: hidden;
	}

	.woocommerce-product-gallery .flex-viewport,
	.woocommerce-product-gallery > .woocommerce-product-gallery__wrapper {
		order: 1;
		width: 100%;
		min-height: 320px;
	}
}

/* ---------------------------------------------------------------------------
   Variation "size" pills

   product.js mirrors each single-attribute variation <select> into the design's
   pill row and keeps the two in sync, so WooCommerce's variation logic stays
   authoritative.
   --------------------------------------------------------------------------- */
.kensington-swatches {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-bottom: 6px;
}

.kensington-swatches .size-pill {
	padding: 8px 18px;
	border: 1px solid #ddd7cd !important;
	border-radius: 6px;
	font-size: 0.85rem;
	font-weight: 600;
	cursor: pointer;
	background: #fff;
	color: var(--brand-dark);
	transition: var(--transition-smooth);
}

.kensington-swatches .size-pill.active,
.kensington-swatches .size-pill:hover {
	border-color: var(--brand-gold) !important;
	color: var(--brand-gold-hover) !important;
	background: #fdf8ed;
	transform: translateY(-2px);
	box-shadow: 0 4px 10px rgba(182, 137, 62, 0.15);
}

.kensington-swatches .size-pill.active {
	box-shadow: 0 5px 14px rgba(182, 137, 62, .2);
}

.kensington-swatches .size-pill:focus-visible {
	border-color: var(--brand-gold) !important;
	outline: 2px solid rgba(182, 137, 62, .24);
	outline-offset: 2px;
}

.kensington-swatches .size-pill:disabled {
	opacity: 0.4;
	cursor: not-allowed;
	transform: none;
	box-shadow: none;
}

/* The native select stays for no-JS and assistive tech. */
.summary .variations tr.kensington-has-swatches td.value select {
	display: none;
}

/* ---------------------------------------------------------------------------
   Single product summary: map WooCommerce classes onto the design's type scale
   --------------------------------------------------------------------------- */
.summary .product_title {
	font-family: var(--font-serif);
	font-weight: 700;
	font-size: 1.85rem;
	margin: 4px 0 8px;
}

.summary .price {
	font-family: var(--font-sans);
	font-weight: 700;
	font-size: 1.6rem;
	color: var(--brand-dark);
	margin-bottom: 16px;
}

.summary .price del {
	color: var(--brand-text-muted);
	font-size: 1rem;
	font-weight: 500;
	margin-right: 8px;
}

.summary .price ins {
	text-decoration: none;
}

.summary .stock.in-stock {
	color: #1e7e34;
	font-size: 0.85rem;
	font-weight: 600;
}

.summary .stock.out-of-stock {
	color: #c0392b;
	font-size: 0.85rem;
	font-weight: 600;
}

.summary .woocommerce-product-details__short-description {
	color: var(--brand-text-muted);
	font-size: 0.9rem;
	line-height: 1.6;
	margin-bottom: 20px;
}

.summary form.cart {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	margin: 20px 0;
}

.summary form.cart .single_add_to_cart_button {
	flex: 1 1 200px;
}

/* Variation selects use the design's pill styling. */
.summary .variations {
	width: 100%;
	border-collapse: collapse;
}

.summary .variations th,
.summary .variations td {
	padding: 6px 0;
	text-align: left;
	vertical-align: middle;
}

.summary .variations label {
	font-size: 0.85rem;
	font-weight: 700;
	color: var(--brand-dark);
}

.summary .variations select {
	width: 100%;
	border: 1px solid var(--brand-border);
	border-radius: 6px;
	padding: 8px 10px;
	font-size: 0.88rem;
	background: #ffffff;
}

/* Attribute groups follow the reference hierarchy: name above, options below. */
body.single-product .summary table.variations tbody,
body.single-product .summary table.variations tr,
body.single-product .summary table.variations th.label,
body.single-product .summary table.variations td.value {
	display: block;
	width: 100%;
}

body.single-product .summary table.variations tr {
	margin-bottom: 16px;
}

body.single-product .summary table.variations th.label {
	padding: 0 0 9px;
}

body.single-product .summary table.variations td.value {
	padding: 0;
}

body.single-product .summary .kensington-swatches {
	margin: 0 0 6px;
}

body.single-product .summary .woocommerce-variation-price {
	display: none;
}

/* ---------------------------------------------------------------------------
   Related products / upsells sit inside the design's section rhythm
   --------------------------------------------------------------------------- */
.related.products,
.upsells.products,
.cross-sells {
	margin-top: 48px;
}

.related.products > h2,
.upsells.products > h2,
.cross-sells > h2 {
	font-family: var(--font-serif);
	font-weight: 700;
	font-size: 1.5rem;
	text-align: center;
	margin-bottom: 28px;
}

.related.products ul.products,
.upsells.products ul.products,
.cross-sells ul.products {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
	gap: 16px;
	list-style: none;
	margin: 0;
	padding: 0;
}

/* ---------------------------------------------------------------------------
   Cart & checkout: WooCommerce form fields inside the design's cards
   --------------------------------------------------------------------------- */
.checkout-step-card .form-row {
	margin-bottom: 16px;
}

.checkout-step-card label {
	font-size: 0.82rem;
	font-weight: 600;
	color: var(--brand-dark);
	margin-bottom: 6px;
	display: block;
}

.checkout-step-card .select2-container--default .select2-selection--single,
.checkout-step-card select {
	width: 100%;
	border: 1px solid var(--brand-border);
	border-radius: 6px;
	height: auto;
	min-height: 42px;
	padding: 8px 10px;
	font-size: 0.9rem;
	background: #ffffff;
}

.checkout-summary-card .shop_table {
	width: 100%;
	font-size: 0.88rem;
	border-collapse: collapse;
}

.checkout-summary-card .shop_table th,
.checkout-summary-card .shop_table td {
	padding: 10px 0;
	border-bottom: 1px solid #f6f6f6;
	text-align: left;
}

.checkout-summary-card .shop_table tfoot .order-total th,
.checkout-summary-card .shop_table tfoot .order-total td {
	font-weight: 700;
	font-size: 1rem;
	color: var(--brand-gold);
	border-bottom: 0;
}

.checkout-summary-card #payment ul.payment_methods {
	list-style: none;
	margin: 16px 0 0;
	padding: 0;
}

.checkout-summary-card #payment ul.payment_methods li {
	border: 1px solid var(--brand-border);
	border-radius: 6px;
	padding: 12px 14px;
	margin-bottom: 10px;
	font-size: 0.88rem;
}

.checkout-summary-card #payment .payment_box {
	font-size: 0.82rem;
	color: var(--brand-text-muted);
	margin-top: 8px;
}

.checkout-summary-card #place_order {
	width: 100%;
	margin-top: 8px;
}

/* ---------------------------------------------------------------------------
   Modern cart and checkout flow
   --------------------------------------------------------------------------- */
.commerce-hero {
	padding: clamp(1.25rem, 2.6vw, 1.9rem) 0;
	background: radial-gradient(circle at 88% 15%, rgba(218, 174, 79, .2), transparent 28%), linear-gradient(135deg, #fff 45%, #fbf4e7);
}

.commerce-eyebrow {
	display: block;
	margin-bottom: .45rem;
	color: var(--brand-gold-hover, #936415);
	font-size: .76rem;
	font-weight: 800;
	letter-spacing: .12em;
	text-transform: uppercase;
}

.commerce-page-shell {
	padding-top: clamp(1rem, 1.6vw, 1.4rem);
}

.commerce-steps {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	margin: 0;
	padding: 0;
	list-style: none;
}

.commerce-steps li {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: .4rem;
	color: #958e84;
	font-size: .75rem;
	font-weight: 700;
}

.commerce-steps li:not(:last-child)::after {
	position: absolute;
	top: 16px;
	left: calc(50% + 22px);
	width: calc(100% - 44px);
	height: 1px;
	background: #ddd4c5;
	content: "";
}

.commerce-steps li > span {
	position: relative;
	z-index: 1;
	display: grid;
	width: 33px;
	height: 33px;
	place-items: center;
	border: 1px solid #d9d0c2;
	border-radius: 50%;
	background: #fff;
}

.commerce-steps li.is-active,
.commerce-steps li.is-complete {
	color: var(--brand-gold-hover, #936415);
}

.commerce-steps li.is-active > span,
.commerce-steps li.is-complete > span {
	border-color: var(--brand-gold, #c28d2b);
	background: var(--brand-gold, #c28d2b);
	color: #fff;
}

.commerce-section-heading {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 1rem;
}

.commerce-section-heading > div {
	display: flex;
	align-items: center;
	gap: .65rem;
}

.commerce-section-heading h2 {
	margin: 0;
	font-family: var(--font-serif, Georgia, serif);
	font-size: 1.25rem;
	font-weight: 700;
}

.woocommerce-cart .cart-table-card,
.woocommerce-cart .order-summary-card,
.woocommerce-checkout .checkout-step-card,
.woocommerce-checkout .checkout-summary-card {
	border-color: #e5dac8;
	border-radius: 12px;
	box-shadow: 0 10px 32px rgba(78, 58, 24, .07);
}

.woocommerce-cart .cart-item-row {
	padding: 1.25rem;
}

.woocommerce-cart .cart-item-row:not(:last-child):hover {
	background: #fffdf8;
}

.woocommerce-cart .cart-item-title a {
	font-weight: 700;
}

.woocommerce-cart .cart-item-remove {
	display: grid;
	width: 36px;
	height: 36px;
	place-items: center;
	border: 1px solid #eadfd4;
	border-radius: 50%;
	background: #fff;
	color: #9a5e55;
}

.woocommerce-cart .cart-item-remove:hover,
.woocommerce-cart .cart-item-remove:focus-visible {
	border-color: #b56c61;
	background: #fff5f3;
	color: #8b3e33;
}

.woocommerce-cart .coupon .form-control {
	min-height: 42px;
	border-color: #ddd2c1;
}

.woocommerce-cart .order-summary-card,
.woocommerce-checkout .checkout-summary-card {
	top: 150px;
	padding: 1.5rem;
}

.order-summary-card .panel-heading,
.checkout-summary-card .checkout-step-title {
	margin: 0 0 1rem;
	padding-bottom: 1rem;
	border-bottom: 1px solid #ece5da;
	font-family: var(--font-serif, Georgia, serif);
	font-size: 1.3rem;
	font-weight: 700;
}

.woocommerce-cart .checkout-button,
.woocommerce-checkout #place_order {
	min-height: 50px;
	border: 0;
	border-radius: 6px;
	background: linear-gradient(135deg, #b77d1d, #d9a641);
	box-shadow: 0 8px 18px rgba(170, 113, 21, .22);
	color: #fff;
	font-size: .95rem;
	font-weight: 800;
	text-transform: uppercase;
}

.woocommerce-checkout #customer_details,
.woocommerce-checkout #customer_details > .col-1,
.woocommerce-checkout #customer_details > .col-2 {
	float: none;
	width: 100%;
}

.woocommerce-checkout .checkout-step-card {
	padding: clamp(1.25rem, 3vw, 2rem);
}

.woocommerce-checkout .woocommerce-billing-fields > h3,
.woocommerce-checkout .woocommerce-additional-fields > h3,
.woocommerce-checkout .woocommerce-shipping-fields > h3 {
	margin-bottom: 1.25rem;
	padding-bottom: .8rem;
	border-bottom: 1px solid #eee7dc;
	font-family: var(--font-serif, Georgia, serif);
	font-size: 1.2rem;
	font-weight: 700;
}

.woocommerce-checkout .form-row-first,
.woocommerce-checkout .form-row-last {
	width: calc(50% - .5rem);
}

.woocommerce-checkout .form-row-first {
	float: left;
}

.woocommerce-checkout .form-row-last {
	float: right;
}

.woocommerce-checkout .input-text,
.woocommerce-checkout input[type="text"],
.woocommerce-checkout input[type="email"],
.woocommerce-checkout input[type="tel"],
.woocommerce-checkout textarea,
.woocommerce-checkout .select2-selection--single {
	min-height: 47px;
	padding: .68rem .8rem;
	border: 1px solid #dcd2c3;
	border-radius: 6px;
	background: #fff;
}

/* WooCommerce wraps controls in an inline span. Without making that wrapper
 * block-level, percentage-width inputs collapse to the width of their value. */
body.woocommerce-checkout #customer_details .woocommerce-input-wrapper,
body.woocommerce-checkout #customer_details .password-input,
body.woocommerce-checkout #customer_details .select2-container {
	display: block !important;
	width: 100% !important;
	max-width: none !important;
}

body.woocommerce-checkout #customer_details .form-row {
	display: block !important;
	box-sizing: border-box;
	min-width: 0;
	padding: 0 !important;
}

body.woocommerce-checkout #customer_details .form-row label {
	display: block !important;
	width: 100%;
	margin: 0 0 .4rem;
	line-height: 1.4;
}

body.woocommerce-checkout #customer_details .form-row .input-text,
body.woocommerce-checkout #customer_details .form-row select,
body.woocommerce-checkout #customer_details .select2-selection--single {
	display: block !important;
	box-sizing: border-box !important;
	width: 100% !important;
	max-width: none !important;
	margin: 0 !important;
}

body.woocommerce-checkout #customer_details .select2-selection--single .select2-selection__rendered {
	padding: 0;
	line-height: 25px;
}

body.woocommerce-checkout #customer_details .select2-selection--single .select2-selection__arrow {
	top: 10px;
	right: 8px;
}

/* Beat WooCommerce's purple --wc-primary button defaults on every cart state. */
body.woocommerce-cart a.checkout-button,
body.woocommerce-cart a.checkout-button.button,
body.woocommerce-cart a.checkout-button.button.alt,
body.woocommerce-cart .woocommerce-cart-form button.button,
body.woocommerce-cart .woocommerce-cart-form input.button,
body.woocommerce-checkout #payment #place_order,
body.woocommerce-checkout #payment #place_order.button,
body.woocommerce-checkout #payment #place_order.button.alt {
	border-color: var(--brand-gold, #b6893e) !important;
	background: var(--brand-gold, #b6893e) !important;
	color: #fff !important;
	box-shadow: 0 8px 18px rgba(156, 115, 48, .22);
}

body.woocommerce-cart a.checkout-button:hover,
body.woocommerce-cart a.checkout-button:focus-visible,
body.woocommerce-cart .woocommerce-cart-form button.button:hover,
body.woocommerce-cart .woocommerce-cart-form button.button:focus-visible,
body.woocommerce-checkout #payment #place_order:hover,
body.woocommerce-checkout #payment #place_order:focus-visible {
	border-color: var(--brand-gold-hover, #9c7330) !important;
	background: var(--brand-gold-hover, #9c7330) !important;
	color: #fff !important;
}

body.woocommerce-cart .woocommerce-cart-form button[name="apply_coupon"],
body.woocommerce-cart .woocommerce-cart-form button[name="update_cart"] {
	min-height: 42px;
}

.woocommerce-checkout textarea {
	min-height: 110px;
}

.woocommerce-checkout .input-text:focus,
.woocommerce-checkout textarea:focus,
.woocommerce-checkout .select2-container--focus .select2-selection--single {
	border-color: var(--brand-gold, #c28d2b);
	box-shadow: 0 0 0 3px rgba(194, 141, 43, .13);
	outline: 0;
}

.checkout-summary-card #payment {
	margin-top: 1rem;
	padding-top: .25rem;
	background: transparent;
}

.checkout-summary-card #payment ul.payment_methods li {
	position: relative;
	padding: .9rem;
	border-color: #e3d8c6;
	background: #fffdf8;
}

.checkout-summary-card #payment ul.payment_methods li:has(input:checked) {
	border-color: var(--brand-gold, #c28d2b);
	box-shadow: 0 0 0 1px var(--brand-gold, #c28d2b);
}

.checkout-summary-card #payment .place-order {
	padding: 0;
}

.commerce-trust-row {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	border: 1px solid #e6dccb;
	border-radius: 10px;
	background: #fffdf9;
}

.commerce-trust-row > div {
	display: flex;
	align-items: center;
	gap: .8rem;
	padding: 1rem 1.2rem;
}

.commerce-trust-row > div + div {
	border-left: 1px solid #e9e0d3;
}

.commerce-trust-row i {
	color: var(--brand-gold, #c28d2b);
	font-size: 1.35rem;
}

.commerce-trust-row span,
.commerce-trust-row small {
	display: block;
}

.commerce-trust-row strong {
	font-size: .85rem;
}

.commerce-trust-row small {
	color: #777065;
	font-size: .72rem;
}

@media (max-width: 991.98px) {
	.woocommerce-cart .order-summary-card,
	.woocommerce-checkout .checkout-summary-card {
		position: static;
	}
}

@media (max-width: 767.98px) {
	.commerce-steps {
		margin-top: 1rem;
	}

	.commerce-trust-row {
		grid-template-columns: 1fr;
	}

	.commerce-trust-row > div + div {
		border-top: 1px solid #e9e0d3;
		border-left: 0;
	}

	.woocommerce-checkout .form-row-first,
	.woocommerce-checkout .form-row-last {
		float: none;
		width: 100%;
	}

	.woocommerce-cart .coupon {
		max-width: none !important;
		flex-basis: 100%;
	}
}

/* Shipping method rows inside the cart totals card. */
.kensington-shipping-rows ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.kensington-shipping-rows li {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 4px 0;
}

/* ---------------------------------------------------------------------------
   My Account panels
   --------------------------------------------------------------------------- */
.account-nav-link.is-active {
	background: var(--brand-gold-light);
	border-left-color: var(--brand-gold);
	color: var(--brand-gold);
}

.account-panel-card .shop_table,
.account-panel-card table {
	width: 100%;
	font-size: 0.88rem;
	border-collapse: collapse;
}

.account-panel-card .shop_table th,
.account-panel-card .shop_table td {
	padding: 12px 8px;
	border-bottom: 1px solid #f2f2f2;
	text-align: left;
}

.account-panel-card .button {
	display: inline-block;
	background: var(--brand-gold);
	color: #ffffff;
	border: 0;
	border-radius: 6px;
	padding: 9px 18px;
	font-size: 0.85rem;
	font-weight: 600;
	text-decoration: none;
	cursor: pointer;
}

.account-panel-card .button:hover {
	background: var(--brand-gold-hover);
	color: #ffffff;
}

/* ---------------------------------------------------------------------------
   Search typeahead results in the header popup
   --------------------------------------------------------------------------- */
.kensington-search-results:empty {
	display: none;
}

.kensington-search-results {
	max-height: 280px;
	overflow-y: auto;
	margin-top: 6px;
}

.kensington-search-result {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 8px 4px;
	border-bottom: 1px solid #f6f6f6;
	text-decoration: none;
	color: var(--brand-dark);
	font-size: 0.82rem;
}

.kensington-search-result:hover,
.kensington-search-result:focus-visible {
	background: var(--brand-gold-light);
}

.kensington-search-result img {
	width: 38px;
	height: 38px;
	object-fit: contain;
	border: 1px solid var(--brand-border);
	border-radius: 4px;
	background: #fafaf9;
}

/* ---------------------------------------------------------------------------
   Editor content inside ACF WYSIWYG sections
   --------------------------------------------------------------------------- */
.kensington-rte > :last-child {
	margin-bottom: 0;
}

/* ---------------------------------------------------------------------------
   Accessibility: a visible focus ring everywhere, which Bootstrap resets away
   in a few places the design relies on.
   --------------------------------------------------------------------------- */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
	outline: 2px solid var(--brand-gold);
	outline-offset: 2px;
}

/* ---------------------------------------------------------------------------
   Modern image formats for the design's CSS backgrounds.

   assets/css/theme.css is kept byte-identical to the HTML build, so the WebP
   sources are layered on here instead. Browsers without image-set() support
   fall back to the PNG rule in theme.css, so the design is unchanged either way.
   The research-card artwork drops from ~1.5MB to ~20KB per card.
   --------------------------------------------------------------------------- */
.research-card1 {
	background-image: image-set(
		url("assets/images/pro-icon1.webp") type("image/webp"),
		url("assets/images/pro-icon1.png") type("image/png")
	);
}

.research-card2 {
	background-image: image-set(
		url("assets/images/pro-icon2.webp") type("image/webp"),
		url("assets/images/pro-icon2.png") type("image/png")
	);
}

.research-card3 {
	background-image: image-set(
		url("assets/images/pro-icon3.webp") type("image/webp"),
		url("assets/images/pro-icon3.png") type("image/png")
	);
}

.research-card4 {
	background-image: image-set(
		url("assets/images/pro-icon4.webp") type("image/webp"),
		url("assets/images/pro-icon4.png") type("image/png")
	);
}

.research-card5 {
	background-image: image-set(
		url("assets/images/pro-icon5.webp") type("image/webp"),
		url("assets/images/pro-icon5.png") type("image/png")
	);
}

/* ---------------------------------------------------------------------------
   Shop toolbar
   WooCommerce prints the result count and ordering form as separate blocks;
   the design shows them on one row, count left and sort right.
   --------------------------------------------------------------------------- */
.shop-toolbar .woocommerce-result-count {
	margin: 0;
	font-size: 0.85rem;
	color: var(--brand-text-muted);
}

.shop-toolbar .woocommerce-ordering {
	margin: 0;
}

/* Filter sidebar sticks alongside a long product grid. */
@media (min-width: 992px) {
	.filter-sidebar {
		position: sticky;
		top: 90px;
	}
}

/* ---------------------------------------------------------------------------
   Single product: action row
   The design puts Add To Cart and Buy It Now side by side beneath quantity.
   --------------------------------------------------------------------------- */
.summary form.cart .single_add_to_cart_button,
.summary form.cart .btn-brand-outline {
	flex: 1 1 190px;
}

.summary .woocommerce-product-rating {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 0.85rem;
	margin-bottom: 14px;
}

.summary .woocommerce-product-rating .star-rating {
	color: #f0a500;
}

.summary .woocommerce-product-rating a {
	color: var(--brand-text-muted);
	text-decoration: none;
}

.kensington-product-rating {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin: 2px 0 16px;
	font-size: .84rem;
	line-height: 1;
}

.kensington-rating-stars {
	position: relative;
	display: inline-block;
	font-size: 1.08rem;
	letter-spacing: 2px;
	line-height: 1;
	white-space: nowrap;
}

.kensington-rating-stars-base {
	color: #ded8cf;
}

.kensington-rating-stars-fill {
	position: absolute;
	top: 0;
	left: 0;
	display: block;
	overflow: hidden;
	color: #c58c20;
	white-space: nowrap;
}

.kensington-review-count {
	color: var(--brand-text-muted) !important;
	text-decoration: none;
}

a.kensington-review-count:hover,
a.kensington-review-count:focus-visible {
	color: var(--brand-gold-hover) !important;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.kensington-rating-divider {
	width: 1px;
	height: 17px;
	margin: 0 3px;
	background: var(--brand-border);
}

.kensington-trustpilot-link,
.kensington-trustpilot-link:visited {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	color: var(--brand-dark);
	font-weight: 600;
	text-decoration: none;
}

.kensington-trustpilot-link i {
	color: #00b67a;
}

.kensington-trustpilot-link:hover,
.kensington-trustpilot-link:focus-visible {
	color: var(--brand-gold-hover);
}

/* ---------------------------------------------------------------------------
   Single add-to-cart button

   WooCommerce hardcodes this button's classes in its own templates for every
   product type, and escapes its label, so the design's .btn-brand-gold styling
   (and cart icon) are reproduced here rather than filtered on.
   --------------------------------------------------------------------------- */
.summary .single_add_to_cart_button {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	background-color: var(--brand-gold);
	border: 1px solid var(--brand-gold);
	color: #ffffff;
	font-weight: 600;
	text-transform: uppercase;
	font-size: 0.82rem;
	letter-spacing: 0.8px;
	padding: 10px 22px;
	border-radius: 4px;
	cursor: pointer;
	transition: var(--transition-smooth);
}

.summary .single_add_to_cart_button::before {
	font-family: "bootstrap-icons";
	content: "\f23f";
	font-size: 1rem;
	line-height: 1;
	font-weight: normal;
	letter-spacing: 0;
}

.summary .single_add_to_cart_button:hover,
.summary .single_add_to_cart_button:focus-visible {
	background-color: var(--brand-gold-hover);
	border-color: var(--brand-gold-hover);
	color: #ffffff;
	transform: translateY(-2px);
	box-shadow: 0 4px 14px rgba(182, 137, 62, 0.25);
}

.summary .single_add_to_cart_button.disabled,
.summary .single_add_to_cart_button:disabled {
	opacity: 0.45;
	cursor: not-allowed;
	transform: none;
	box-shadow: none;
}

/* Buy It Now already carries the design's .btn-brand-outline class. */
.summary form.cart .btn-brand-outline {
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

/* ---------------------------------------------------------------------------
   Product tabs -- matches the design's .product-tabs treatment.
   --------------------------------------------------------------------------- */
.woocommerce-tabs .wc-tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 0;
	list-style: none;
	margin: 0 0 28px;
	padding: 0;
	border-bottom: 1px solid var(--brand-border);
}

.woocommerce-tabs .wc-tabs li {
	margin: 0;
	border: 0;
	background: transparent;
}

.woocommerce-tabs .wc-tabs li a {
	display: block;
	border: none;
	border-bottom: 2px solid transparent;
	color: #666;
	font-weight: 700;
	font-size: 0.88rem;
	letter-spacing: 0.5px;
	text-transform: uppercase;
	padding: 12px 24px;
	text-decoration: none;
	transition: var(--transition-smooth);
}

.woocommerce-tabs .wc-tabs li.active a,
.woocommerce-tabs .wc-tabs li a:hover,
.woocommerce-tabs .wc-tabs li a:focus-visible {
	color: var(--brand-gold);
	border-bottom-color: var(--brand-gold);
	background: transparent;
}

.woocommerce-tabs .panel {
	font-size: 0.9rem;
	line-height: 1.7;
	color: var(--brand-text-muted);
}

.woocommerce-tabs .panel > h2:first-child,
.woocommerce-tabs .panel h2 {
	font-family: var(--font-serif);
	font-weight: 700;
	font-size: 1.3rem;
	color: var(--brand-dark);
	margin-bottom: 14px;
}

/* ---------------------------------------------------------------------------
   Single product visual lockup

   Several commerce extensions ship broad button/tab rules after WooCommerce.
   These selectors intentionally stay inside the product view so the reference
   design remains authoritative without changing cart, checkout or account UI.
   --------------------------------------------------------------------------- */
.single-product #main-content {
	padding-bottom: 0;
}

.single-product #main-content > .container.pt-4 {
	padding-top: 28px !important;
	margin-bottom: 18px !important;
}

body.single-product div.product .summary .product_title {
	font-size: clamp(2rem, 2.6vw, 2.65rem);
	line-height: 1.12;
	font-weight: 600;
	margin: 8px 0 12px;
}

body.single-product div.product .summary .woocommerce-product-details__short-description {
	line-height: 1.7;
	margin-bottom: 18px;
}

body.single-product div.product .summary form.cart {
	margin-top: 22px;
	padding-top: 2px;
	gap: 12px;
}

body.single-product div.product .summary form.cart .single_add_to_cart_button {
	background: linear-gradient(100deg, #b98731, #d4a33e) !important;
	border: 1px solid #bd8c35 !important;
	color: #fff !important;
	min-height: 48px;
	box-shadow: none !important;
}

body.single-product div.product .summary form.cart .single_add_to_cart_button:hover,
body.single-product div.product .summary form.cart .single_add_to_cart_button:focus-visible {
	background: var(--brand-gold-hover) !important;
	border-color: var(--brand-gold-hover) !important;
}

body.single-product div.product .summary form.cart .btn-brand-outline {
	min-height: 48px;
	background: #fff !important;
	border: 1px solid var(--brand-gold) !important;
	color: var(--brand-dark) !important;
}

body.single-product div.product .summary form.cart .btn-brand-outline:hover,
body.single-product div.product .summary form.cart .btn-brand-outline:focus-visible {
	background: var(--brand-gold) !important;
	color: #fff !important;
}

.single-product .product-trust-row {
	background: #fff;
	border: 1px solid #eadfce;
	border-radius: 7px;
	padding: 22px 18px;
}

.single-product .product-trust-item {
	padding: 4px 22px;
}

@media (min-width: 992px) {
	.single-product .product-trust-item + .product-trust-item {
		border-left: 1px solid var(--brand-border);
	}
}

body.single-product div.product .woocommerce-tabs ul.tabs {
	display: flex !important;
	justify-content: space-between;
	gap: 8px;
	margin: 0 0 24px !important;
	padding: 0 !important;
	border: 0 !important;
	border-bottom: 1px solid var(--brand-border) !important;
	background: transparent !important;
}

body.single-product div.product .woocommerce-tabs ul.tabs::before,
body.single-product div.product .woocommerce-tabs ul.tabs::after,
body.single-product div.product .woocommerce-tabs ul.tabs li::before,
body.single-product div.product .woocommerce-tabs ul.tabs li::after {
	display: none !important;
}

body.single-product div.product .woocommerce-tabs ul.tabs li {
	flex: 1 1 auto;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	text-align: center;
}

body.single-product div.product .woocommerce-tabs ul.tabs li a {
	display: block !important;
	padding: 14px 10px !important;
	border: 0 !important;
	border-bottom: 2px solid transparent !important;
	background: transparent !important;
	color: #292929 !important;
	font-size: 0.79rem;
	font-weight: 700;
	letter-spacing: .25px;
	text-transform: uppercase;
}

body.single-product div.product .woocommerce-tabs ul.tabs li.active a,
body.single-product div.product .woocommerce-tabs ul.tabs li a:hover,
body.single-product div.product .woocommerce-tabs ul.tabs li a:focus-visible {
	color: var(--brand-gold) !important;
	border-bottom-color: var(--brand-gold) !important;
}

body.single-product div.product .woocommerce-tabs .panel {
	margin: 0 !important;
	padding: 0 12px 8px !important;
	background: #fff !important;
	box-shadow: none !important;
}

@media (max-width: 767.98px) {
	.single-product .product-trust-item {
		padding: 14px 16px;
	}

	body.single-product div.product .woocommerce-tabs ul.tabs {
		overflow-x: auto;
		justify-content: flex-start;
	}

	body.single-product div.product .woocommerce-tabs ul.tabs li {
		flex: 0 0 auto;
	}

	body.single-product div.product .woocommerce-tabs ul.tabs li a {
		white-space: nowrap;
		padding-inline: 16px !important;
	}
}

/* Multi-image product gallery: keep square and portrait assets in one stable
   stage, and prevent WooCommerce's generic image rules stretching each slide. */
body.single-product div.product div.images.woocommerce-product-gallery {
	width: 100% !important;
	margin: 0 !important;
}

body.single-product div.images.woocommerce-product-gallery {
	opacity: 1 !important;
}

/* Before FlexSlider initialises, WooCommerce outputs every gallery image as a
   direct child of the main wrapper. Show only the lead image in that brief
   state so secondary images do not flash underneath it. After initialisation
   the wrapper moves inside .flex-viewport, so this rule no longer applies. */
body.single-product div.images.woocommerce-product-gallery
	> .woocommerce-product-gallery__wrapper
	> .woocommerce-product-gallery__image:nth-child(n+2) {
	display: none !important;
}

body.single-product div.product div.images .flex-viewport,
body.single-product div.product div.images > .woocommerce-product-gallery__wrapper {
	flex: 1 1 0;
	width: calc(100% - 88px);
	padding: 22px !important;
	background: #fbfbfb;
}

body.single-product div.product div.images .woocommerce-product-gallery__image {
	height: auto !important;
	aspect-ratio: 1 / 1;
	min-height: 0 !important;
}

body.single-product div.product div.images .woocommerce-product-gallery__image a {
	width: 100%;
	height: 100%;
}

body.single-product div.product div.images .woocommerce-product-gallery__image img {
	display: block;
	width: 100% !important;
	height: 100% !important;
	max-width: 100% !important;
	max-height: 100% !important;
	object-fit: contain !important;
}

body.single-product div.product div.images .flex-control-thumbs li {
	float: none !important;
	width: 68px !important;
	margin: 0 auto !important;
}

body.single-product div.product div.images .flex-control-thumbs img {
	box-sizing: border-box;
	opacity: .72;
}

body.single-product div.product div.images .flex-control-thumbs img.flex-active,
body.single-product div.product div.images .flex-control-thumbs img:hover {
	opacity: 1;
	border-color: var(--brand-gold);
}

/* Gold product labels/tags and purchase actions from the supplied design. */
.single-product .summary > a.text-gold,
.single-product .summary .product_meta a,
.single-product .summary .kensington-swatches .size-pill.active,
.single-product .summary .kensington-swatches .size-pill:hover {
	color: #bd861f !important;
}

body.single-product div.product form.cart button.single_add_to_cart_button,
body.single-product div.product form.cart button.single_add_to_cart_button.alt {
	background: linear-gradient(100deg, #b98220 0%, #d7a33a 100%) !important;
	border-color: #bd861f !important;
	color: #fff !important;
}

body.single-product div.product form.cart button.btn-brand-outline {
	background: #fff !important;
	border-color: #bd861f !important;
	color: #171717 !important;
}

body.single-product div.product form.cart button.btn-brand-outline:hover {
	background: #bd861f !important;
	color: #fff !important;
}

/* The whole tab control and its underline live inside the content container. */
.single-product .product-tabs-container {
	padding-top: 4px;
}

.single-product .product-tabs-container .woocommerce-tabs {
	width: 100%;
}

/* Five equal cards on one desktop carousel line. Owl adds inline widths after
   initialisation; this fallback keeps the uninitialised state tidy as well. */
@media (min-width: 1200px) {
	.single-product .related-product-carousel:not(.owl-loaded) {
		display: grid;
		grid-template-columns: repeat(5, minmax(0, 1fr));
		gap: 15px;
		overflow: hidden;
	}

	.single-product .related-product-carousel:not(.owl-loaded) > .item:nth-child(n+6) {
		display: none;
	}
}

@media (max-width: 575.98px) {
	body.single-product div.product div.images .flex-viewport,
	body.single-product div.product div.images > .woocommerce-product-gallery__wrapper {
		width: 100%;
		padding: 14px !important;
	}
}

/* ---------------------------------------------------------------------------
   Variable product purchase controls

   WooCommerce nests quantity/actions inside .variations_button. Bootstrap's
   shrinkable .w-100 spacer previously collapsed, leaving Add To Cart beside
   the running total and Buy It Now on a separate row. Keep the reference
   hierarchy explicit: label, quantity + total, then two equal actions.
   --------------------------------------------------------------------------- */
body.single-product div.product form.variations_form .single_variation_wrap,
body.single-product div.product form.variations_form .woocommerce-variation-add-to-cart {
	width: 100%;
}

body.single-product div.product .summary form.variations_form {
	gap: 8px;
	margin-top: 10px;
}

body.single-product div.product form.variations_form table.variations {
	margin: 0 !important;
}

body.single-product div.product form.variations_form table.variations tr {
	margin-bottom: 8px;
}

body.single-product div.product form.variations_form .reset_variations,
body.single-product div.product form.variations_form .reset_variations_alert {
	display: none !important;
}

body.single-product div.product form.variations_form .single_variation_wrap,
body.single-product div.product form.variations_form .single_variation {
	min-height: 0 !important;
	margin: 0 !important;
	padding: 0 !important;
}

body.single-product div.product form.variations_form .woocommerce-variation-add-to-cart {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	column-gap: 12px;
	row-gap: 12px;
}

body.single-product div.product form.variations_form .woocommerce-variation-add-to-cart > .form-label {
	display: block !important;
	flex: 0 0 100%;
	width: 100%;
	min-height: 20px;
	margin: 4px 0 0 !important;
	line-height: 1.4;
}

body.single-product div.product form.variations_form .woocommerce-variation-add-to-cart > .quantity {
	flex: 0 0 auto;
}

body.single-product div.product .summary .kensington-running-total,
body.single-product div.product form.variations_form .kensington-running-total {
	display: none !important;
}

/* Compact quantity stepper from the supplied product-page reference. */
body.single-product div.product .summary form.cart .quantity {
	display: inline-grid;
	grid-template-columns: 34px 48px 34px;
	height: 36px;
	flex: 0 0 auto;
	border: 1px solid #e8e2d8;
	border-radius: 5px;
	background: #fff;
	overflow: hidden;
}

body.single-product div.product .summary form.cart .quantity .qty-btn {
	display: grid;
	width: 34px;
	height: 34px;
	padding: 0;
	place-items: center;
	border: 0;
	border-radius: 0;
	background: #fcfbf8;
	color: #4b463f;
	font-size: 1rem;
	line-height: 1;
}

body.single-product div.product .summary form.cart .quantity .qty-btn:first-child {
	border-right: 1px solid #eee9e1;
}

body.single-product div.product .summary form.cart .quantity .qty-btn:last-child {
	border-left: 1px solid #eee9e1;
}

body.single-product div.product .summary form.cart .quantity .qty-btn:hover,
body.single-product div.product .summary form.cart .quantity .qty-btn:focus-visible {
	background: var(--brand-gold-light);
	color: var(--brand-gold-hover);
}

body.single-product div.product .summary form.cart .quantity .qty-input {
	width: 48px;
	height: 34px;
	min-height: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: #fff;
	font-size: .88rem;
	font-weight: 700;
	line-height: 34px;
}

body.single-product div.product form.variations_form .woocommerce-variation-add-to-cart > .w-100 {
	flex: 0 0 100% !important;
	width: 100% !important;
	height: 0;
	margin: -4px 0;
}

body.single-product div.product form.variations_form .single_add_to_cart_button,
body.single-product div.product form.variations_form .btn-brand-outline {
	box-sizing: border-box;
	flex: 1 1 calc(50% - 6px) !important;
	width: calc(50% - 6px);
	min-width: 0;
	min-height: 48px;
	margin: 0 !important;
}

body.single-product div.product form.variations_form input[type="hidden"] {
	display: none;
}

@media (max-width: 420px) {
	body.single-product div.product form.variations_form .single_add_to_cart_button,
	body.single-product div.product form.variations_form .btn-brand-outline {
		flex-basis: 100% !important;
		width: 100%;
	}
}

/* Structured ACF content shown in the product Description tab. */
.product-content-template {
	max-width: 980px;
	margin: 0 auto;
}

.product-content-toc {
	margin: 0 0 2rem;
	border: 1px solid #dfc77f;
	border-radius: 14px;
	background: #fff6d8;
	box-shadow: 0 8px 24px rgba(111, 82, 24, .14);
}

.product-content-toc summary {
	position: relative;
	padding: 1.25rem 3.5rem 1.25rem 1.5rem;
	border-bottom: 1px solid transparent;
	cursor: pointer;
	font-size: clamp(1.25rem, 2vw, 1.55rem);
	font-weight: 700;
	list-style: none;
}

.product-content-toc[open] summary {
	border-bottom-color: #dfc77f;
}

.product-content-toc summary::-webkit-details-marker {
	display: none;
}

.product-content-toc summary::after {
	position: absolute;
	top: 50%;
	right: 1.4rem;
	width: 22px;
	height: 22px;
	border: 2px solid #3e3a32;
	border-radius: 3px;
	color: #bd861f;
	content: "+";
	font-size: 1.3rem;
	line-height: 17px;
	text-align: center;
	transform: translateY(-50%);
}

.product-content-toc[open] summary::after {
	content: "−";
}

.product-content-toc nav {
	padding: 1.25rem 1.5rem 1.4rem;
}

.product-content-toc ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.product-content-toc li + li {
	margin-top: .45rem;
}

.product-content-toc a {
	position: relative;
	display: inline-block;
	padding-left: 1.35rem;
	color: #555b65;
	text-decoration: none;
}

.product-content-toc a::before {
	position: absolute;
	left: .15rem;
	color: var(--brand-gold, #c28d2b);
	content: "›";
	font-size: 1.5rem;
	font-weight: 700;
	line-height: .8;
}

.product-content-toc a:hover,
.product-content-toc a:focus-visible {
	color: var(--brand-gold-hover, #926312);
	text-decoration: underline;
}

.product-content-template [id] {
	scroll-margin-top: 120px;
}

.kensington-review-summary {
	display: flex;
	width: 100%;
	flex-wrap: wrap;
	align-items: center;
	gap: .4rem;
	margin: .85rem 0 1.15rem;
	padding: .75rem 1.15rem;
	border: 1px solid #edcf7a;
	border-radius: 9px;
	background: #fff8e5;
	color: #342f28;
	font-size: .92rem;
}

/* The source the rating is attributed to, e.g. REVIEWS.io. */
.kensington-review-source {
	font-weight: 700;
	letter-spacing: .2px;
	color: #342f28;
}

.kensington-review-source::after {
	content: "";
	display: inline-block;
	width: 1px;
	height: .85em;
	margin-left: .5rem;
	vertical-align: -.1em;
	background: #e3cd93;
}

.kensington-review-stars {
	display: inline-flex;
	gap: .1rem;
	color: #e8a800;
	font-size: .95rem;
	line-height: 1;
}

.kensington-review-average {
	color: var(--brand-gold-hover, #a56f12);
	font-size: 1.05rem;
}

.kensington-review-text strong {
	color: #342f28;
}

/* Delivery reassurance under the two product action buttons. */
.ken-delivery-note {
	display: flex;
	flex: 0 0 100%;
	width: 100%;
	align-items: center;
	justify-content: center;
	gap: .45rem;
	margin: .35rem 0 0;
	color: #2f7d4f;
	font-size: .9rem;
	font-weight: 700;
	letter-spacing: .2px;
}

.ken-delivery-note i {
	font-size: 1rem;
}

/* Optional review strip directly beneath the primary navigation. */
.header-rating-strip {
	padding: .55rem 0 .7rem;
	border-top: 1px solid #f2eee6;
	background: #fff;
	font-size: .9rem;
}

.header-rating-provider {
	display: inline-flex;
	align-items: center;
	color: #171717;
	font-size: 1.08rem;
	text-decoration: none;
}

.header-rating-provider-mark {
	display: inline-grid;
	width: 18px;
	height: 18px;
	margin-right: 2px;
	place-items: center;
	border-radius: 50%;
	background: #050505;
	color: #fff;
	font-size: .65rem;
}

.header-rating-stars {
	color: var(--brand-gold, #c28d2b);
	font-size: 1.15rem;
	letter-spacing: 1px;
}

.header-rating-copy {
	color: #161616;
}

.contact-page .woocommerce-breadcrumb {
	justify-content: center;
}

.contact-email-link {
	display: inline-block;
	color: var(--brand-gold-hover, #936415);
	font-size: clamp(1rem, 2vw, 1.25rem);
	font-weight: 700;
	word-break: break-word;
}

.contact-support-panel {
	position: relative;
	overflow: hidden;
	padding: clamp(1.75rem, 4vw, 2.75rem);
	border-radius: 12px;
	background: linear-gradient(145deg, #211e1a 0%, #353027 100%);
	box-shadow: 0 18px 45px rgba(32, 28, 24, .14);
	color: #fff;
}

.contact-support-panel::after {
	position: absolute;
	right: -4.5rem;
	bottom: -5rem;
	width: 13rem;
	height: 13rem;
	border: 1px solid rgba(194, 141, 43, .28);
	border-radius: 50%;
	box-shadow: 0 0 0 2.25rem rgba(194, 141, 43, .06);
	content: "";
	pointer-events: none;
}

.contact-support-panel > * {
	position: relative;
	z-index: 1;
}

.contact-support-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: .55rem;
	margin-bottom: 1rem;
	color: #e5bd70;
	font-size: .75rem;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.contact-support-panel h2 {
	margin: 0 0 .85rem;
	color: #fff;
	font-size: clamp(1.9rem, 4vw, 2.65rem);
}

.contact-support-intro {
	margin-bottom: 1.6rem;
	color: rgba(255, 255, 255, .74);
	line-height: 1.7;
}

.contact-email-action {
	display: flex;
	align-items: center;
	gap: .8rem;
	margin-bottom: 1rem;
	padding: .9rem 1rem;
	border: 1px solid rgba(229, 189, 112, .35);
	border-radius: 8px;
	background: rgba(255, 255, 255, .06);
	color: #fff;
	text-decoration: none;
	transition: border-color .2s ease, background .2s ease, transform .2s ease;
}

.contact-email-action:hover,
.contact-email-action:focus-visible {
	border-color: #e5bd70;
	background: rgba(255, 255, 255, .1);
	color: #fff;
	transform: translateY(-2px);
}

.contact-email-action-icon {
	display: inline-grid;
	flex: 0 0 2.5rem;
	height: 2.5rem;
	place-items: center;
	border-radius: 50%;
	background: #c28d2b;
}

.contact-email-action > span:nth-child(2) {
	display: grid;
	min-width: 0;
	margin-right: auto;
}

.contact-email-action small {
	color: rgba(255, 255, 255, .62);
}

.contact-email-action strong {
	overflow-wrap: anywhere;
	font-size: .92rem;
}

.contact-support-panel .response-sla-pill {
	display: flex;
	align-items: flex-start;
	gap: .8rem;
	margin-top: 1rem;
	padding: 1rem;
	border: 0;
	border-left: 3px solid #e5bd70;
	background: rgba(255, 255, 255, .07);
	color: #fff;
}

.contact-support-panel .response-sla-pill > .bi {
	margin-top: .1rem;
	color: #e5bd70;
	font-size: 1.15rem;
}

.contact-support-panel .response-sla-pill span {
	display: grid;
	gap: .25rem;
}

.contact-support-panel .response-sla-pill small {
	color: rgba(255, 255, 255, .68);
	line-height: 1.55;
}

.contact-form-card .wpforms-container {
	margin: 0;
}

.contact-form-card .wpforms-field {
	padding: 0 0 1rem;
}

.contact-form-card .wpforms-field-label {
	display: block;
	margin-bottom: .4rem;
	color: var(--brand-dark, #201c18);
	font-weight: 700;
}

.contact-form-card input:not([type="checkbox"]):not([type="radio"]),
.contact-form-card select,
.contact-form-card textarea {
	width: 100%;
	padding: .75rem .9rem;
	border: 1px solid #ddd4c7;
	border-radius: 5px;
}

.contact-form-card button[type="submit"],
.contact-form-card input[type="submit"] {
	padding: .75rem 1.6rem;
	border: 1px solid var(--brand-gold, #c28d2b);
	border-radius: 5px;
	background: var(--brand-gold, #c28d2b);
	color: #fff;
	font-weight: 700;
}

.contact-form-card button[type="submit"]:hover,
.contact-form-card button[type="submit"]:focus-visible,
.contact-form-card input[type="submit"]:hover,
.contact-form-card input[type="submit"]:focus-visible {
	border-color: var(--brand-gold-hover, #936415);
	background: var(--brand-gold-hover, #936415);
}

.contact-form-card .wpforms-error {
	color: #a12622;
}

.contact-form-fallback {
	display: grid;
	min-height: 18rem;
	place-content: center;
	justify-items: center;
	padding: 1rem;
}

.contact-form-fallback > .bi {
	margin-bottom: 1rem;
	color: var(--brand-gold, #c28d2b);
	font-size: 2.75rem;
	line-height: 1;
}

@media (max-width: 767.98px) {
	.header-rating-strip {
		font-size: .78rem;
	}

	.header-rating-provider {
		font-size: .92rem;
	}

	.contact-hero-banner {
		padding: 2rem 0 1.75rem;
	}

	.contact-info-card,
	.contact-form-card {
		padding: 1.5rem 1.25rem;
	}
}

.product-content-summary,
.product-content-section h2 {
	font-family: var(--font-heading, Georgia, serif);
	color: var(--brand-dark, #201c18);
}

.product-content-section {
	padding: 1.5rem 0;
	border-bottom: 1px solid #eee7db;
}

/* The complete Side Effects WYSIWYG (through its final safety evidence
 * heading) is intentionally presented as one continuous reference panel. */
.product-content-section.product-content-safety-box {
	margin: 1.75rem 0;
	padding: clamp(1.25rem, 3vw, 2rem);
	border: 1px solid #e3d2af;
	border-left: 4px solid var(--brand-gold, #c28d2b);
	border-radius: 12px;
	background: linear-gradient(135deg, #fffdf8, #fbf4e7);
	box-shadow: 0 8px 24px rgba(100, 74, 27, .08);
}

.product-content-safety-box > h2 {
	margin-top: 0;
	padding-bottom: .85rem;
	border-bottom: 1px solid #e7dac2;
}

.product-content-safety-box .product-content-copy > :last-child {
	margin-bottom: 0;
}

.product-content-table-wrap {
	overflow-x: auto;
	border: 1px solid #e7dcc9;
	border-radius: 8px;
}

.product-content-table {
	width: 100%;
	min-width: 620px;
	border-collapse: collapse;
}

.product-content-table th,
.product-content-table td {
	padding: .85rem 1rem;
	border-bottom: 1px solid #eee7db;
	text-align: left;
	vertical-align: top;
}

.product-content-table th {
	background: #fbf6ec;
	color: var(--brand-gold-hover, #9b6815);
}

.product-reference-list li {
	margin-bottom: .75rem;
}

.product-content-faq-section {
	margin-top: 2rem;
	padding: clamp(1.25rem, 3vw, 2rem);
	border: 1px solid #e3d2af;
	border-radius: 12px;
	background: #fff;
	box-shadow: 0 8px 24px rgba(100, 74, 27, .08);
}

.product-content-faq-section > h2 {
	margin: 0 0 1.25rem;
	text-align: center;
}

.product-faq-list {
	display: grid;
	gap: .75rem;
}

.product-faq-list details {
	margin: 0;
	border: 1px solid #e7dcc9;
	border-radius: 8px;
	background: #fffdf8;
	overflow: hidden;
}

.product-faq-list summary {
	position: relative;
	padding: 1rem 3rem 1rem 1rem;
	cursor: pointer;
	font-weight: 700;
	list-style: none;
}

.product-faq-list summary::-webkit-details-marker {
	display: none;
}

.product-faq-list summary::after {
	position: absolute;
	top: 50%;
	right: 1rem;
	color: var(--brand-gold, #c28d2b);
	content: "+";
	font-size: 1.35rem;
	transform: translateY(-50%);
}

.product-faq-list details[open] summary::after {
	content: "−";
}

.product-faq-list details[open] summary {
	border-bottom: 1px solid #e7dcc9;
	background: #fbf4e7;
}

.product-faq-list details > div {
	padding: 1rem;
}

.product-faq-list details > div > :last-child {
	margin-bottom: 0;
}

.product-content-gallery {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 1rem;
}

.product-content-gallery img {
	width: 100%;
	height: auto;
	border-radius: 8px;
}

.product-related-card {
	display: flex;
	height: 100%;
	align-items: center;
	gap: 1rem;
	padding: .75rem;
	border: 1px solid #e7dcc9;
	border-radius: 8px;
	color: inherit;
	font-weight: 700;
	text-decoration: none;
}

.product-related-card img {
	width: 72px;
	height: 72px;
	border-radius: 6px;
	object-fit: cover;
}










/* ========================================================================= */
/* ðŸ“± MOBILE HEADER & SEARCH ICON FIX                                        */
/* ========================================================================= */
@media (max-width: 991.98px) {
  
  /* Header icons spacing on mobile */
  .navbar .d-flex.align-items-center.gap-3 {
    gap: 12px !important;margin-right: 70px;
  }

  /* Search Popup Screen ke center mein full-width show hoga */
  .search-popup {
    position: fixed !important;
    top: 116px !important;
    left: 12px !important;
    right: 12px !important;
    width: calc(100vw - 24px) !important;
    min-width: unset !important;
    max-width: 100% !important;
    transform: none !important;
    margin: 0 !important;
    border-radius: 8px !important;
    border: 1px solid var(--brand-border, #e5e0d4) !important;
    box-shadow: 0 15px 35px rgba(0, 0, 0, 0.25) !important;
    z-index: 1090 !important;
    padding: 14px !important;
    background: #ffffff !important;
  }

  /* Dropdown arrow hide */
  .no-arrow::after {
    display: none !important;
  }
  .hero-section:before{ display:none!important;}
}



/* --- HAMBURGER OPEN / CLOSE ICON TOGGLER --- */
.custom-nav-toggler {
  outline: none !important;
    box-shadow: none !important;
    font-size: 1.8rem;
    color: #1a1a1a;
    line-height: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    position: absolute;
    top: 16px;
    right: 21px;
}

/* Jab Menu CLOSED ho -> 'â˜°' dikhega aur 'âœ•' chhipega */
.custom-nav-toggler.collapsed .nav-open-icon {
  display: inline-block;
}
.custom-nav-toggler.collapsed .nav-close-icon {
  display: none;
}

/* Jab Menu OPEN ho -> 'âœ•' dikhega aur 'â˜°' chhipega */
.custom-nav-toggler:not(.collapsed) .nav-open-icon {
  display: none;
}
.custom-nav-toggler:not(.collapsed) .nav-close-icon {
  display: inline-block;
  color: var(--brand-gold, #b6893e); /* Close icon gold color mein */
}


/* ========================================================================= */
/* ðŸ›‘ FIX MOBILE HORIZONTAL OVERFLOW / BOTTOM SCROLL                        */
/* ========================================================================= */
html, body {
  overflow-x: hidden !important;
  max-width: 100% !important;
  width: 100% !important;
}

main, header, footer, section, .container, .container-fluid {
  overflow-x: clip !important; /* Screen se bahar nikalne wale elements ko cut karta hai */
}

/* Bootstrap Row Margin Overflow Fix */
.row {
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* Sabhi Images & Videos Screen ke andar rahengi */
img, svg, video, iframe {
  max-width: 100% !important;
  height: auto;
}

/* Owl Carousel & Slider Overflow Fix */
.owl-carousel, .product-carousel {
  overflow: hidden !important;
  width: 100% !important;
}







/* ========================================================================= */
/* 📱 MOBILE POPUPS FIX (Search, Account & Cart - All Full Width)            */
/* ========================================================================= */
@media (max-width: 991.98px) {
  
  .search-popup,
  .account-popup,
  .cart-popup {
    position: fixed !important;
    top: 116px !important;       
    left: 10px !important;              
    right: 10px !important;            
    width: calc(100vw - 20px) !important; 
    min-width: unset !important;
    max-width: 100% !important;
    transform: none !important;       
    margin: 0 !important;
    border-radius: 8px !important;
    box-shadow: 0 15px 35px rgba(0, 0, 0, 0.2) !important;
    z-index: 1085 !important;
    background: #ffffff !important;
  }

}















/* ---------------------------------------------------------------------------
   Cart and checkout: compact headings, sleeker fields, login modal
   These sit at the end because style.css loads after theme.css and carries the
   body.woocommerce-* scoped rules that would otherwise win.
   --------------------------------------------------------------------------- */
body.woocommerce-cart .commerce-hero h1 {
	font-size: clamp(1.35rem, 2vw, 1.7rem);
	line-height: 1.2;
}

body.woocommerce-cart .commerce-hero p {
	font-size: .88rem;
}

/* The .py-2 utility on the button sets padding with !important. */
body.woocommerce-cart .wc-proceed-to-checkout .checkout-button {
	padding: 11px 18px !important;
	font-size: .78rem;
	letter-spacing: .06em;
	line-height: 1.3;
}

body.woocommerce-checkout .ken-login-modal form .input-text {
	min-height: 38px;
	padding: 8px 40px 8px 12px;
	font-size: .875rem;
}

body.woocommerce-checkout .checkout-coupon-slot .checkout_coupon .input-text {
	min-height: 38px;
	padding: 8px 12px;
	font-size: .875rem;
}

/* Terms and conditions consent row.
   The checkbox text span is inline-flex further up this file, which turns the
   sentence and its link into two separate flex items sitting side by side.
   Keep it inline and hang the checkbox off the label instead, so the sentence,
   the link and the required marker read as one wrapped paragraph. */
body.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper .form-row {
	margin: .9rem 0 0;
	padding: 0;
}

body.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper label.checkbox {
	position: relative;
	display: block;
	margin: 0;
	padding-left: 26px;
	color: #3f3f3f;
	font-size: .82rem;
	font-weight: 600;
	line-height: 1.55;
	cursor: pointer;
}

body.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper label.checkbox .input-checkbox {
	position: absolute;
	top: 3px;
	left: 0;
	width: 15px;
	height: 15px;
	margin: 0;
}

body.woocommerce-checkout .woocommerce-terms-and-conditions-checkbox-text {
	display: inline;
	gap: 0;
	font-size: inherit;
	line-height: inherit;
}

body.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper label.checkbox abbr.required,
body.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper label.checkbox .required {
	display: inline;
	border: 0;
	color: #a64b42;
	text-decoration: none;
}

/* Terms page content is rendered inside the scroll box, so its page heading
   arrives at full article size. Scale it to the panel. */
body.woocommerce-checkout .woocommerce-terms-and-conditions h1,
body.woocommerce-checkout .woocommerce-terms-and-conditions h2,
body.woocommerce-checkout .woocommerce-terms-and-conditions h3,
body.woocommerce-checkout .woocommerce-terms-and-conditions h4 {
	margin: 0 0 .5rem;
	font-size: .95rem;
	font-weight: 700;
	line-height: 1.35;
}

body.woocommerce-checkout .woocommerce-terms-and-conditions h2,
body.woocommerce-checkout .woocommerce-terms-and-conditions h3,
body.woocommerce-checkout .woocommerce-terms-and-conditions h4 {
	margin-top: .9rem;
	font-size: .86rem;
}

body.woocommerce-checkout .woocommerce-terms-and-conditions p,
body.woocommerce-checkout .woocommerce-terms-and-conditions li {
	margin-bottom: .55rem;
	font-size: .74rem;
	line-height: 1.6;
}

/* Order summary table.
   One quiet panel: transparent rows on the cream card, hairline separators
   instead of alternating fills, and amounts that never wrap. */
body.woocommerce-checkout .checkout-summary-card .shop_table,
body.woocommerce-checkout .checkout-summary-card .shop_table tbody,
body.woocommerce-checkout .checkout-summary-card .shop_table tfoot,
body.woocommerce-checkout .checkout-summary-card .shop_table tr,
body.woocommerce-checkout .checkout-summary-card .shop_table th,
body.woocommerce-checkout .checkout-summary-card .shop_table td {
	background: transparent;
	border: 0;
}

body.woocommerce-checkout .checkout-summary-card .shop_table th,
body.woocommerce-checkout .checkout-summary-card .shop_table td {
	padding: .7rem 0;
	vertical-align: top;
}

body.woocommerce-checkout .checkout-summary-card .shop_table thead th {
	padding-bottom: .55rem;
	border-bottom: 1px solid #e7d5b8;
}

body.woocommerce-checkout .checkout-summary-card .shop_table .cart_item td {
	border-bottom: 1px solid rgba(199, 172, 128, .28);
}

body.woocommerce-checkout .checkout-summary-card .shop_table .cart_item .product-name {
	color: #4a423a;
	font-size: .8rem;
	font-weight: 600;
	line-height: 1.45;
}

body.woocommerce-checkout .checkout-summary-card .shop_table .product-quantity,
body.woocommerce-checkout .checkout-summary-card .shop_table .product-name .quantity {
	color: #8a7a5f;
	font-weight: 700;
	white-space: nowrap;
}

body.woocommerce-checkout .checkout-summary-card .shop_table .product-total,
body.woocommerce-checkout .checkout-summary-card .shop_table .cart-subtotal td,
body.woocommerce-checkout .checkout-summary-card .shop_table .woocommerce-shipping-totals td,
body.woocommerce-checkout .checkout-summary-card .shop_table .fee td,
body.woocommerce-checkout .checkout-summary-card .shop_table .order-total td {
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}

/* Totals block: labels quiet, values dark, separated from the line items. */
body.woocommerce-checkout .checkout-summary-card .shop_table .cart-subtotal th,
body.woocommerce-checkout .checkout-summary-card .shop_table .woocommerce-shipping-totals th,
body.woocommerce-checkout .checkout-summary-card .shop_table .fee th {
	color: #6f6146;
	font-size: .72rem;
	font-weight: 800;
	letter-spacing: .06em;
	text-transform: uppercase;
}

body.woocommerce-checkout .checkout-summary-card .shop_table .cart-subtotal td,
body.woocommerce-checkout .checkout-summary-card .shop_table .woocommerce-shipping-totals td,
body.woocommerce-checkout .checkout-summary-card .shop_table .fee td {
	color: #2b2b2b;
	font-size: .85rem;
	font-weight: 700;
}

body.woocommerce-checkout .checkout-summary-card .shop_table .cart-subtotal th,
body.woocommerce-checkout .checkout-summary-card .shop_table .cart-subtotal td {
	padding-top: .95rem;
}

/* The total was wrapping mid-amount in the narrow column. */
body.woocommerce-checkout .checkout-summary-card .order-total th,
body.woocommerce-checkout .checkout-summary-card .order-total td {
	padding-top: .85rem;
	border-top: 1px solid #e7d5b8;
	color: var(--brand-gold-hover, #9c7330) !important;
	font-size: .95rem !important;
	vertical-align: middle;
}

body.woocommerce-checkout .checkout-summary-card .order-total th {
	font-weight: 800;
	letter-spacing: .04em;
	text-transform: uppercase;
}

body.woocommerce-checkout .checkout-summary-card .order-total td .woocommerce-Price-amount,
body.woocommerce-checkout .checkout-summary-card .order-total td .amount {
	display: inline-block;
	font-size: 1.15rem;
	font-weight: 800;
	white-space: nowrap;
}

body.woocommerce-checkout .checkout-summary-card .shop_table .includes_tax,
body.woocommerce-checkout .checkout-summary-card .shop_table small {
	display: block;
	color: #8a7a5f;
	font-size: .68rem;
	font-weight: 600;
	white-space: normal;
}

/* Login modal.
   form.login carries the standalone account-page card styling (max width,
   gold top border, shadow, 30px padding). Inside the modal that reads as a
   second card in a card, so it is reset back to a plain block here. */
body.woocommerce-checkout .ken-login-modal .modal-dialog {
	max-width: 430px;
}

body.woocommerce-checkout .ken-login-modal .modal-content {
	border: 0;
	border-radius: 12px;
	box-shadow: 0 30px 70px rgba(0, 0, 0, .22);
	overflow: hidden;
}

body.woocommerce-checkout .ken-login-modal .modal-header {
	align-items: center;
	padding: 18px 24px;
	border-bottom: 1px solid var(--brand-border);
	background: linear-gradient(135deg, #fffdf9 40%, #faf3e6);
}

body.woocommerce-checkout .ken-login-modal .modal-title {
	font-size: 1.15rem;
	letter-spacing: .01em;
}

body.woocommerce-checkout .ken-login-modal .modal-body {
	padding: 22px 24px 24px;
}

body.woocommerce-checkout .ken-login-modal form.login {
	max-width: none;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: none;
	box-shadow: none;
}

body.woocommerce-checkout .ken-login-modal form.login > p:first-of-type {
	margin: 0 0 18px;
	color: #6f675d;
	font-size: .84rem;
	line-height: 1.6;
}

body.woocommerce-checkout .ken-login-modal form.login .form-row {
	margin: 0 0 14px;
}

body.woocommerce-checkout .ken-login-modal form.login .woocommerce-form-login__rememberme {
	display: flex;
	align-items: center;
	gap: .5rem;
	margin: 2px 0 16px;
	font-size: .82rem;
	font-weight: 600;
}

body.woocommerce-checkout .ken-login-modal form.login .woocommerce-form-login__submit {
	width: 100%;
	min-height: 44px;
	margin: 0;
	border-radius: 6px;
	font-size: .82rem;
	letter-spacing: .06em;
	text-transform: uppercase;
}

body.woocommerce-checkout .ken-login-modal form.login .lost_password {
	margin: 14px 0 0;
	text-align: center;
	font-size: .8rem;
}

/* Order summary: white card on the page's default background.
   Warmth comes from the header and total bands rather than a tinted panel. */
body.woocommerce-checkout .checkout-summary-card {
	background: #fff;
	border: 1px solid var(--brand-border);
	box-shadow: 0 10px 30px rgba(18, 18, 18, .05);
}

body.woocommerce-checkout .checkout-summary-card #order_review_heading {
	border-bottom-color: var(--brand-border);
}

body.woocommerce-checkout .checkout-summary-card .shop_table thead th {
	border-bottom-color: var(--brand-border);
}

body.woocommerce-checkout .checkout-summary-card .shop_table .cart_item td {
	border-bottom-color: #f1efeb;
}

body.woocommerce-checkout .checkout-summary-card .shop_table .cart_item .product-name {
	color: #3f3a34;
}

body.woocommerce-checkout .checkout-summary-card .shop_table .cart-subtotal th,
body.woocommerce-checkout .checkout-summary-card .shop_table .woocommerce-shipping-totals th,
body.woocommerce-checkout .checkout-summary-card .shop_table .fee th {
	color: #837a6d;
}

/* Totals band: one tinted block that reads as the summary's conclusion. */
body.woocommerce-checkout .checkout-summary-card .shop_table .cart-subtotal th,
body.woocommerce-checkout .checkout-summary-card .shop_table .cart-subtotal td,
body.woocommerce-checkout .checkout-summary-card .shop_table .woocommerce-shipping-totals th,
body.woocommerce-checkout .checkout-summary-card .shop_table .fee th,
body.woocommerce-checkout .checkout-summary-card .shop_table .woocommerce-shipping-totals td,
body.woocommerce-checkout .checkout-summary-card .shop_table .fee td,
body.woocommerce-checkout .checkout-summary-card .shop_table .order-total th,
body.woocommerce-checkout .checkout-summary-card .shop_table .order-total td {
	background: #f7edda;
}

body.woocommerce-checkout .checkout-summary-card .shop_table .cart-subtotal th,
body.woocommerce-checkout .checkout-summary-card .shop_table .woocommerce-shipping-totals th,
body.woocommerce-checkout .checkout-summary-card .shop_table .fee th,
body.woocommerce-checkout .checkout-summary-card .shop_table .order-total th {
	padding-left: 14px;
	border-radius: 6px 0 0 6px;
}

body.woocommerce-checkout .checkout-summary-card .shop_table .cart-subtotal td,
body.woocommerce-checkout .checkout-summary-card .shop_table .woocommerce-shipping-totals td,
body.woocommerce-checkout .checkout-summary-card .shop_table .fee td,
body.woocommerce-checkout .checkout-summary-card .shop_table .order-total td {
	padding-right: 14px;
	border-radius: 0 6px 6px 0;
}

body.woocommerce-checkout .checkout-summary-card .shop_table .order-total th,
body.woocommerce-checkout .checkout-summary-card .shop_table .order-total td {
	border-top: 1px solid #efe4cd;
	padding-bottom: .9rem;
}

/* Totals band: deeper gold tint with a brand edge, so it separates clearly
   from the white line items above it. */
body.woocommerce-checkout .checkout-summary-card .shop_table .cart-subtotal th,
body.woocommerce-checkout .checkout-summary-card .shop_table .woocommerce-shipping-totals th,
body.woocommerce-checkout .checkout-summary-card .shop_table .fee th,
body.woocommerce-checkout .checkout-summary-card .shop_table .order-total th {
	padding-left: 16px;
	border-left: 3px solid var(--brand-gold, #b6893e);
	border-radius: 0;
	color: #7a6a4d;
}

body.woocommerce-checkout .checkout-summary-card .shop_table .cart-subtotal td,
body.woocommerce-checkout .checkout-summary-card .shop_table .woocommerce-shipping-totals td,
body.woocommerce-checkout .checkout-summary-card .shop_table .fee td,
body.woocommerce-checkout .checkout-summary-card .shop_table .order-total td {
	padding-right: 16px;
	border-radius: 0 6px 6px 0;
	color: #2b2b2b;
}

body.woocommerce-checkout .checkout-summary-card .shop_table .cart-subtotal th {
	border-top-left-radius: 6px;
}

body.woocommerce-checkout .checkout-summary-card .shop_table .cart-subtotal td {
	border-top-right-radius: 6px;
}

body.woocommerce-checkout .checkout-summary-card .shop_table .order-total th {
	border-bottom-left-radius: 6px;
	border-top: 1px solid #e8d6b4;
}

body.woocommerce-checkout .checkout-summary-card .shop_table .order-total td {
	border-bottom-right-radius: 6px;
	border-top: 1px solid #e8d6b4;
	color: var(--brand-gold-hover, #9c7330) !important;
}

/* Checkout contact step: verified summary for logged-in customers.
   A soft confirmation panel rather than a bare line of text, so the collapsed
   step still reads as a completed one. */
body.woocommerce-checkout .contact-verified {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 14px 16px;
	border: 1px solid #dcece1;
	border-radius: 8px;
	background: linear-gradient(135deg, #f6fbf8 0%, #eef7f1 100%);
}

body.woocommerce-checkout .contact-verified__info {
	display: flex;
	align-items: flex-start;
	gap: .65rem;
	min-width: 0;
}

body.woocommerce-checkout .contact-verified__badge {
	display: block;
	color: #17794a;
	font-size: .82rem;
	font-weight: 700;
	letter-spacing: .01em;
}

body.woocommerce-checkout .contact-verified__badge i {
	display: none;
}

body.woocommerce-checkout .contact-verified__info::before {
	content: "\f26a";
	flex: 0 0 auto;
	width: 30px;
	height: 30px;
	display: inline-grid;
	place-items: center;
	border-radius: 50%;
	background: #17794a;
	color: #fff;
	font-family: "bootstrap-icons";
	font-size: .82rem;
	line-height: 1;
}

body.woocommerce-checkout .contact-verified__value {
	margin: .2rem 0 0;
	color: #5f6b63;
	font-size: .78rem;
	line-height: 1.5;
	overflow-wrap: anywhere;
}

body.woocommerce-checkout .contact-verified__toggle {
	flex: 0 0 auto;
	min-height: 34px;
	padding: 7px 18px !important;
	border: 1px solid var(--brand-gold, #b6893e) !important;
	border-radius: 6px;
	background: transparent !important;
	color: var(--brand-gold-hover, #9c7330) !important;
	font-size: .72rem;
	letter-spacing: .06em;
}

body.woocommerce-checkout .contact-verified__toggle:hover,
body.woocommerce-checkout .contact-verified__toggle:focus-visible {
	background: var(--brand-gold, #b6893e) !important;
	color: #fff !important;
}

@media (max-width: 575.98px) {
	body.woocommerce-checkout .contact-verified {
		flex-direction: column;
		align-items: stretch;
	}

	body.woocommerce-checkout .contact-verified__toggle {
		width: 100%;
	}
}

body.woocommerce-checkout [data-contact-fields][hidden] {
	display: none;
}

body.woocommerce-checkout [data-contact-fields]:not([hidden]) {
	padding-top: .9rem;
}

/* Mini-cart: removing a line item.
   The panel stays open (data-bs-auto-close="outside" on the toggle), so the
   button shows its own progress instead of the menu vanishing. */
.cart-item.is-removing {
	opacity: .55;
	pointer-events: none;
	transition: opacity .2s ease;
}

.kensington-remove-item {
	position: relative;
	width: 26px;
	height: 26px;
	display: inline-grid;
	place-items: center;
	border-radius: 50%;
	color: #9a938a;
	transition: color .2s ease, background-color .2s ease;
}

.kensington-remove-item:hover:not(.is-busy) {
	background: #faf1f0;
	color: #a64b42;
}

.kensington-remove-item.is-busy {
	pointer-events: none;
}

.kensington-remove-item.is-busy .bi {
	visibility: hidden;
}

.kensington-remove-item.is-busy::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 14px;
	height: 14px;
	margin: -7px 0 0 -7px;
	border: 2px solid rgba(182, 137, 62, .3);
	border-top-color: var(--brand-gold, #b6893e);
	border-radius: 50%;
	animation: kensington-spin .6s linear infinite;
}

@keyframes kensington-spin {
	to { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
	.kensington-remove-item.is-busy::after {
		animation-duration: 2s;
	}
}

/* ---------------------------------------------------------------------------
   Checkout order bump (Checkout Upsell & Order Bumps).
   The plugin's templates carry heavy inline styles -- absolute badge, 24px
   padding, 20px gaps -- which are built for a full-width column and crowd the
   narrow checkout summary. Overrides need !important to beat the style
   attributes; nothing here changes the plugin's markup or behaviour.
   --------------------------------------------------------------------------- */
body.woocommerce-checkout .cuw-offer .cuw-container {
	margin: 0 !important;
	padding: 0 !important;
	border: 1px solid var(--brand-border) !important;
	border-radius: 10px !important;
	background: #fff !important;
	box-shadow: 0 6px 18px rgba(18, 18, 18, .05);
}

/* Badge back into the flow, as a caption strip across the top. */
body.woocommerce-checkout .cuw-offer .cuw-badge {
	position: static !important;
	display: block !important;
	padding: 0 !important;
}

body.woocommerce-checkout .cuw-offer .cuw-badge .cuw-offer-title {
	display: block !important;
	padding: 7px 14px !important;
	border-radius: 9px 9px 0 0 !important;
	background: var(--brand-gold, #b6893e) !important;
	color: #fff !important;
	font-size: .68rem !important;
	font-weight: 800 !important;
	letter-spacing: .08em;
	text-transform: uppercase;
}

body.woocommerce-checkout .cuw-offer .cuw-product-section {
	display: block !important;
	gap: 0 !important;
	padding: 14px !important;
}

body.woocommerce-checkout .cuw-offer .cuw-product-section > div:first-child {
	display: flex !important;
	gap: 12px !important;
	align-items: flex-start;
}

body.woocommerce-checkout .cuw-offer .cuw-product-image {
	flex: 0 0 auto;
	width: 56px;
	height: 56px !important;
	border: 1px solid #f0ede8;
	border-radius: 8px !important;
	background: #fbfaf8;
}

body.woocommerce-checkout .cuw-offer .cuw-product-image img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	mix-blend-mode: multiply;
}

body.woocommerce-checkout .cuw-offer .cuw-product-title {
	color: #2b2b2b !important;
	font-size: .82rem !important;
	font-weight: 700 !important;
	line-height: 1.35 !important;
}

body.woocommerce-checkout .cuw-offer .cuw-product-price {
	display: flex;
	align-items: baseline;
	gap: .4rem;
	flex-wrap: wrap;
	font-size: .82rem;
}

body.woocommerce-checkout .cuw-offer .cuw-product-price del,
body.woocommerce-checkout .cuw-offer .cuw-product-price del .woocommerce-Price-amount {
	color: #a49c92 !important;
	font-size: .76rem;
	font-weight: 500;
}

body.woocommerce-checkout .cuw-offer .cuw-product-price ins,
body.woocommerce-checkout .cuw-offer .cuw-product-price ins .woocommerce-Price-amount {
	color: var(--brand-gold-hover, #9c7330) !important;
	font-weight: 800;
	text-decoration: none;
}

body.woocommerce-checkout .cuw-offer .cuw-product-quantity {
	color: #837a6d;
	font-size: .72rem;
}

/* Offer note: a quiet aside, not a grey slab. */
body.woocommerce-checkout .cuw-offer .cuw-offer-description {
	margin: 12px 0 0 !important;
	padding: 9px 12px !important;
	border-left: 3px solid var(--brand-gold, #b6893e) !important;
	border-radius: 0 6px 6px 0 !important;
	background: #fdfaf3 !important;
	color: #6f675d !important;
	font-size: .76rem !important;
	line-height: 1.5 !important;
	text-align: left !important;
}

body.woocommerce-checkout .cuw-offer .cuw-offer-cta-section {
	display: block !important;
	width: 100%;
	margin: 12px 0 0 !important;
	border-radius: 6px !important;
	background: var(--brand-gold, #b6893e) !important;
	transition: background-color .2s ease;
}

body.woocommerce-checkout .cuw-offer .cuw-offer-cta-section:hover {
	background: var(--brand-gold-hover, #9c7330) !important;
}

body.woocommerce-checkout .cuw-offer .cuw-button {
	padding: 11px 14px !important;
	color: #fff !important;
	cursor: pointer;
}

body.woocommerce-checkout .cuw-offer .cuw-offer-cta-text {
	font-size: .75rem !important;
	letter-spacing: .05em;
	text-transform: uppercase;
}

/* Added state: the CTA becomes a remove control, so drop the sales colour. */
body.woocommerce-checkout .cuw-offer.cuw-offer-added .cuw-container {
	border-color: #dcece1 !important;
	background: #f8fcfa !important;
}

body.woocommerce-checkout .cuw-offer.cuw-offer-added .cuw-offer-cta-section {
	background: #e9e5df !important;
}

body.woocommerce-checkout .cuw-offer.cuw-offer-added .cuw-offer-added-text {
	color: #5c554b !important;
	font-size: .95rem !important;
}

/* Order bump: make the offer read as an offer.
   Warm tinted card with a gold frame, a gift-marked banner, the saving pulled
   out of the plugin's own data-discount attribute, and a CTA that carries a
   little motion. Still pure CSS over the plugin's inline styles. */
body.woocommerce-checkout .cuw-offer {
	position: relative;
}

body.woocommerce-checkout .cuw-offer .cuw-container {
	border: 2px solid #e7cfa3 !important;
	background: linear-gradient(165deg, #fffdf8 0%, #fdf5e8 100%) !important;
	box-shadow: 0 10px 26px rgba(182, 137, 62, .16) !important;
}

body.woocommerce-checkout .cuw-offer .cuw-badge .cuw-offer-title {
	display: flex !important;
	align-items: center;
	gap: .45rem;
	padding: 9px 14px !important;
	border-radius: 8px 8px 0 0 !important;
	background: linear-gradient(100deg, #b6893e 0%, #d0a659 55%, #b6893e 100%) !important;
	font-size: .7rem !important;
}

body.woocommerce-checkout .cuw-offer .cuw-badge .cuw-offer-title::before {
	content: "\f3eb";
	font-family: "bootstrap-icons";
	font-size: .85rem;
	font-weight: 400;
	line-height: 1;
}

/* The plugin already stores the discount on the wrapper; surface it. */
body.woocommerce-checkout .cuw-offer[data-discount]:not([data-discount=""])::before {
	content: attr(data-discount);
	position: absolute;
	top: 6px;
	right: 10px;
	z-index: 2;
	padding: 3px 10px;
	border-radius: 999px;
	background: #fff;
	color: #9c7330;
	font-size: .64rem;
	font-weight: 800;
	letter-spacing: .04em;
	text-transform: uppercase;
	box-shadow: 0 2px 6px rgba(0, 0, 0, .12);
}

body.woocommerce-checkout .cuw-offer .cuw-product-image {
	width: 62px;
	height: 62px !important;
	border-color: #eadfc9;
	background: #fff;
}

body.woocommerce-checkout .cuw-offer .cuw-product-title {
	font-size: .85rem !important;
}

body.woocommerce-checkout .cuw-offer .cuw-product-price ins,
body.woocommerce-checkout .cuw-offer .cuw-product-price ins .woocommerce-Price-amount {
	font-size: 1.02rem;
}

body.woocommerce-checkout .cuw-offer .cuw-offer-description {
	background: #fff !important;
	border-left-width: 4px !important;
	color: #5c554b !important;
	font-weight: 600;
}

body.woocommerce-checkout .cuw-offer .cuw-offer-cta-section {
	background: linear-gradient(100deg, #b6893e 0%, #c99b49 100%) !important;
	box-shadow: 0 8px 18px rgba(182, 137, 62, .32);
	animation: kensington-bump-pulse 2.6s ease-in-out infinite;
}

body.woocommerce-checkout .cuw-offer .cuw-offer-cta-section:hover {
	background: var(--brand-gold-hover, #9c7330) !important;
	animation: none;
}

body.woocommerce-checkout .cuw-offer .cuw-offer-cta-text::after {
	content: "\f138";
	margin-left: .45rem;
	font-family: "bootstrap-icons";
	font-weight: 400;
}

@keyframes kensington-bump-pulse {
	0%, 100% { box-shadow: 0 8px 18px rgba(182, 137, 62, .32); }
	50% { box-shadow: 0 8px 26px rgba(182, 137, 62, .55); }
}

@media (prefers-reduced-motion: reduce) {
	body.woocommerce-checkout .cuw-offer .cuw-offer-cta-section {
		animation: none;
	}
}

/* Added state stays calm: no pulse, no sales frame. */
body.woocommerce-checkout .cuw-offer.cuw-offer-added .cuw-container {
	border-color: #cfe6d8 !important;
	box-shadow: none !important;
}

body.woocommerce-checkout .cuw-offer.cuw-offer-added .cuw-offer-cta-section {
	background: #e9e5df !important;
	box-shadow: none;
	animation: none;
}

body.woocommerce-checkout .cuw-offer.cuw-offer-added::before {
	display: none;
}

/* ---------------------------------------------------------------------------
   Single product: density pass
   ---------------------------------------------------------------------------
   The product page had grown to a scale that reads as heavy rather than
   generous: a 370px image stage inside 25px of padding, a 2.65rem title, a
   1.15rem-padded viewer notice and 100px bundle thumbnails all stacked above the
   fold. Nothing here changes what is on the page or the order it appears in --
   every element keeps its role, at a size proportionate to the one beside it.

   Appended rather than edited in place so the reference-design blocks above stay
   readable as the record of the original design, and so this pass can be lifted
   out in one piece.
   --------------------------------------------------------------------------- */

/* --- Image stage ---------------------------------------------------------- */

.woocommerce-product-gallery .flex-viewport,
.woocommerce-product-gallery > .woocommerce-product-gallery__wrapper {
	padding: 16px;
}

.woocommerce-product-gallery .woocommerce-product-gallery__image {
	height: 320px;
}

/* --- Summary type --------------------------------------------------------- */

body.single-product div.product .summary .product_title {
	font-size: clamp(1.55rem, 1.9vw, 2rem);
	line-height: 1.18;
	margin: 4px 0 10px;
}

body.single-product div.product .summary .price {
	font-size: 1.4rem;
	margin-bottom: 12px;
}

body.single-product div.product .summary .price del {
	font-size: 0.9rem;
}

body.single-product div.product .summary .woocommerce-product-details__short-description {
	font-size: 0.92rem;
	line-height: 1.6;
	margin-bottom: 14px;
}

/* --- Overall review summary ----------------------------------------------- */

body.single-product .kensington-review-summary {
	gap: 0.35rem;
	margin: 0.5rem 0 0.85rem;
	padding: 0.55rem 0.85rem;
	border-radius: 8px;
	font-size: 0.85rem;
}

body.single-product .kensington-review-average {
	font-size: 0.95rem;
}

/* --- Trust badge row ------------------------------------------------------ */

body.single-product .summary .d-flex.flex-wrap.gap-4 {
	gap: 1.25rem !important;
}

body.single-product .summary .d-flex.flex-wrap.gap-4 .bi.fs-5 {
	font-size: 1.05rem !important;
}

/* --- Bundle tiles --------------------------------------------------------- */

/*
 * One row, always.
 *
 * The shortcode's own rule pairs flex-basis:33.333% with min-width:180px, so as
 * soon as the summary column is narrower than about 590px the third tile has
 * nowhere to go and drops to a line of its own. Basis 0 with min-width 0 lets
 * all three share whatever width there is instead of each demanding a floor.
 */
.bmsm-container {
	flex-wrap: nowrap;
	gap: 10px;
	margin-bottom: 14px;
}

.bmsm-card {
	flex: 1 1 0;
	min-width: 0;
	max-width: none;
	padding: 10px 8px;
	border-width: 1px;
	border-radius: 9px;
}

.bmsm-card img {
	height: 72px;
	margin-bottom: 6px;
}

.bmsm-card.set-qty-button p {
	margin: 4px 0 0 !important;
	line-height: 1.25;
}

/* The tile reads top to bottom: unit price, saving, bundle total -- so the
   three lines are deliberately not the same size. */
.bmsm-card .bmsm-deal {
	font-size: 0.88rem;
}

.bmsm-card .bmsm-save {
	font-size: 0.66rem;
}

.bmsm-card .bmsm-total {
	font-size: 0.72rem;
}

/* --- Mobile ---------------------------------------------------------------
   The same pass, taken further: at 360px the stage and the bundle tiles are what
   decide whether the price and the buy button are reachable without scrolling.
   -------------------------------------------------------------------------- */

@media (max-width: 767.98px) {
	.woocommerce-product-gallery .flex-viewport,
	.woocommerce-product-gallery > .woocommerce-product-gallery__wrapper {
		padding: 10px;
	}

	.woocommerce-product-gallery .woocommerce-product-gallery__image {
		height: 260px;
	}

	body.single-product div.product .summary .product_title {
		font-size: 1.35rem;
		margin: 2px 0 8px;
	}

	body.single-product div.product .summary .price {
		font-size: 1.25rem;
		margin-bottom: 10px;
	}

	body.single-product .kensington-review-summary {
		margin: 0.4rem 0 0.7rem;
		padding: 0.5rem 0.7rem;
		font-size: 0.8rem;
	}

	.bmsm-container {
		gap: 6px;
	}

	.bmsm-card {
		padding: 8px 5px;
	}

	.bmsm-card img {
		height: 58px;
	}

	.bmsm-card .bmsm-deal {
		font-size: 0.75rem;
	}

	.bmsm-card .bmsm-save {
		padding: 1px 5px;
		font-size: 0.58rem;
	}

	.bmsm-card .bmsm-total {
		font-size: 0.62rem;
	}

	/* The badge is hung outside the card; at this width that clips against the
	   viewport edge. */
	.bmsm-card .badge {
		top: -8px;
		right: -4px;
		padding: 3px 7px;
		font-size: 9px;
	}
}

/* ---------------------------------------------------------------------------
   Single product: mobile-only adjustments
   ---------------------------------------------------------------------------
   Two changes, both confined to phones. Desktop and tablet are untouched: every
   rule below is inside the max-width query, and the CTA is hidden by default so
   it can only ever appear inside it.
   --------------------------------------------------------------------------- */

/*
 * The top call to action is mobile-only, so it is hidden everywhere first and
 * revealed in the query below. Doing it in this order means a page cached for a
 * desktop visitor and served to a phone still behaves correctly -- the markup is
 * identical either way and only the viewport decides.
 */
.ken-top-cta {
	display: none;
}

@media (max-width: 767.98px) {

	/* --- 1. Hidden on mobile ---------------------------------------------
	   The four-up "Batch Tested / Transparent COA / Consistent Purity /
	   Worldwide Shipping" band. On a phone it stacks one item per row into a
	   tall panel that repeats what the summary has already said -- purity and
	   third-party testing are in the trust badges beside the price, shipping is
	   in the guarantees under the buy button. It stays in the DOM and stays on
	   desktop, where four across is a single compact row that earns its place.
	   --------------------------------------------------------------------- */
	/* The whole section, not just the band inside it -- hiding only the band
	   would leave its container's bottom margin behind as an unexplained gap.
	   Targeted by class rather than :has() so the rule does not depend on
	   selector support the older phones in the target range may not have. */
	.single-product .product-trust-row-section {
		display: none;
	}

	/* Trust badges (purity / third-party tested / research use only) and the
	   guarantees row (packaging / shipping / payments) are hidden for the same
	   reason as the band above: on a phone each wraps into a tall stack of
	   reassurance sitting between the customer and the buy button, and both
	   repeat what the page says elsewhere. Both stay in the DOM and both stay on
	   desktop, where they are single compact rows. */
	/* !important is required, not defensive: the badges row carries Bootstrap's
	   .d-flex, which is declared as `display:flex!important`. No amount of
	   specificity beats an important declaration, so hiding it needs one of its
	   own. The guarantees row uses .row, which is not important, but it is
	   grouped here so the two cannot drift apart. */
	.single-product .summary .product-trust-badges,
	.single-product .summary .product-guarantees {
		display: none !important;
	}

	/* The REVIEWS.io strip under the navigation. It is a full-width band of
	   marketing between the header and the product on the smallest screens, and
	   the same rating is available from the reviews themselves. Product pages
	   only -- the strip is untouched everywhere else on the site, and on every
	   viewport above 768px. */
	.single-product .header-rating-strip {
		display: none;
	}

	/* --- 2. One add-to-cart button ----------------------------------------
	   The real one, in the form, is the button that keeps its place. This proxy
	   sat directly above it and read as a second, competing control. It is
	   hidden rather than removed: the markup, its variation handling and the tap
	   forwarding in product.js all stay intact, so bringing it back is a single
	   declaration.
	   --------------------------------------------------------------------- */

	.ken-top-cta {
		display: none;
	}

	/* --- 3. Quantity, Add To Cart and Buy It Now, each full width ----------
	   form.cart is a wrapping flex row: quantity and the two buttons share a
	   line and fall back to 190-200px basis values written for a desktop
	   column. On a phone that leaves a half-width quantity box beside a
	   half-width button and a stray Buy It Now underneath. Turning the form into
	   a single column makes each control the full measure, in the order the DOM
	   already has them.
	   --------------------------------------------------------------------- */

	.single-product .summary form.cart {
		flex-direction: column;
		align-items: stretch;
		gap: 10px;
	}

	/*
	 * flex-basis, not width.
	 *
	 * These are flex items, and on a flex item the basis wins over width. The
	 * buttons carry `flex: 1 1 190px` from the desktop action-row rule, so a
	 * plain `width: 100%` was simply ignored and they kept sharing a line --
	 * while .quantity, which has no flex declaration of its own, went full width
	 * and made the change look half-applied. Setting the basis is what actually
	 * moves them.
	 *
	 * !important is needed for the Buy It Now button specifically: it carries
	 * Bootstrap's .flex-grow-1, declared as `flex-grow: 1 !important`.
	 *
	 * Basis 100% also means the row wraps one control per line on its own, so
	 * this holds whether or not the column direction above takes effect.
	 */
	/*
	 * Selectors here carry the same `body ... div.product` prefix as the
	 * desktop "compact stepper" block above. Without it that block is the more
	 * specific rule, so the stepper stayed `inline-grid` with fixed 34/48/34
	 * columns while this rule stretched the box to the full measure -- leaving
	 * the three controls bunched on the left and a long empty strip inside the
	 * same border.
	 */
	body.single-product div.product .summary form.cart .quantity {
		display: flex;
		flex: 0 0 100% !important;
		width: 100%;
		max-width: 100%;
		height: auto;
		grid-template-columns: none;
	}

	/* The stepper buttons keep their tap size; the field takes the rest. */
	body.single-product div.product .summary form.cart .quantity .qty,
	body.single-product div.product .summary form.cart .quantity .qty-input {
		flex: 1 1 auto;
		width: auto;
		height: auto;
		min-width: 0;
		min-height: 48px;
		line-height: normal;
		/* 16px minimum, or iOS zooms the page on focus. */
		font-size: 1rem;
	}

	body.single-product div.product .summary form.cart .quantity .qty-btn {
		flex: 0 0 48px;
		width: 48px;
		height: auto;
		min-height: 48px;
	}

	.single-product .summary form.cart .single_add_to_cart_button,
	.single-product .summary form.cart .btn-brand-outline {
		flex: 0 0 100% !important;
		width: 100%;
		max-width: 100%;
		min-height: 50px;
	}

	/* The w-100 spacer that breaks the desktop row has nothing to break here. */
	.single-product .summary form.cart > .w-100 {
		display: none;
	}

	/* --- 4. No gap between the summary and the tabs ------------------------
	   Both sections carry mb-5 (48px). Stacked on a phone that is nearly a
	   hundred pixels of nothing between the buy button and the description.
	   --------------------------------------------------------------------- */

	.single-product div.product > .container.mb-5 {
		margin-bottom: 0 !important;
	}

	.single-product .product-tabs-container {
		margin-top: 0 !important;
	}

	.ken-top-cta__button {
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 9px;
		width: 100%;
		min-height: 54px;
		padding: 0 18px;
		border: 1px solid #bd8c35;
		border-radius: 10px;
		background: linear-gradient(100deg, #b98731, #d4a33e);
		color: #fff;
		font-family: inherit;
		font-size: 1rem;
		font-weight: 800;
		letter-spacing: 0.02em;
		line-height: 1.2;
		box-shadow: 0 6px 18px rgba(182, 137, 62, 0.28);
		transition: transform 0.15s ease, box-shadow 0.15s ease;
	}

	.ken-top-cta__button:active {
		transform: translateY(1px);
		box-shadow: 0 3px 10px rgba(182, 137, 62, 0.26);
	}

	.ken-top-cta__button i {
		font-size: 1.05rem;
	}

	/* A long variation label must wrap inside the button rather than widening
	   it past the column, which is what would put the page into sideways
	   scroll at 360px. */
	.ken-top-cta__button span {
		min-width: 0;
		overflow-wrap: anywhere;
	}

	@media (prefers-reduced-motion: reduce) {
		.ken-top-cta__button {
			transition: none;
		}

		.ken-top-cta__button:active {
			transform: none;
		}
	}
}

/* ---------------------------------------------------------------------------
   Shop and category archives: mobile
   ---------------------------------------------------------------------------
   Confined to phones; every rule is inside the max-width query, so the desktop
   archive is untouched. The goal is that the first screen is the category name
   and products -- not chrome.
   --------------------------------------------------------------------------- */

@media (max-width: 767.98px) {

	/* --- Chrome removed -------------------------------------------------- */

	/* The REVIEWS.io band under the navigation, as on the product page. */
	.woocommerce-shop .header-rating-strip,
	.tax-product_cat .header-rating-strip,
	.tax-product_tag .header-rating-strip {
		display: none;
	}

	/* The breadcrumb. On a phone it wraps to two lines of small grey text
	   directly above a heading that says the same thing as its last crumb. */
	.shop-banner .woocommerce-breadcrumb,
	.shop-banner nav[aria-label] {
		display: none;
	}

	/* --- Category header -------------------------------------------------- */

	.shop-banner {
		margin-bottom: 0.875rem !important;
		padding: 1rem 0;
		background: linear-gradient(180deg, #ffffff 0%, #faf9f7 100%);
		border-bottom: 1px solid #ececE8;
	}

	/* The artwork variant keeps its own rules on a phone: the block above would
	   otherwise repaint the section with a flat gradient and put padding back
	   around the picture. */
	.shop-banner--image {
		padding: 0;
		background: none;
		border-bottom: 0;
	}

	.shop-banner h1 {
		margin-bottom: 0.35rem !important;
		font-size: 1.5rem;
		line-height: 1.2;
		letter-spacing: -0.015em;
	}

	/* Category copy is context, not the point of the visit: three lines, then
	   the products start. */
	.shop-banner .kensington-rte {
		font-size: 0.8125rem;
		line-height: 1.5;
	}

	.shop-banner .kensington-rte p {
		display: -webkit-box;
		-webkit-line-clamp: 3;
		-webkit-box-orient: vertical;
		overflow: hidden;
		margin-bottom: 0;
	}

	/* --- Filter / sort bar ------------------------------------------------
	   The toolbar is the archive's only filter control. As a wrapping flex row
	   it put a line of grey count text above a browser-default select that was
	   both hard to see and hard to hit. Rebuilt as one bar: the count on the
	   left, a real 46px control on the right, with the select filling the bar's
	   own box so the whole thing is the tap target.
	   --------------------------------------------------------------------- */

	.shop-toolbar {
		display: flex !important;
		flex-wrap: nowrap !important;
		align-items: center;
		justify-content: space-between;
		gap: 0.625rem;
		margin-bottom: 0.875rem;
		padding: 0;
	}

	.shop-toolbar .woocommerce-result-count {
		flex: 0 1 auto;
		min-width: 0;
		margin: 0;
		overflow: hidden;
		font-size: 0.75rem;
		line-height: 1.3;
		color: #6c6862;
		text-overflow: ellipsis;
		white-space: nowrap;
	}

	.shop-toolbar .woocommerce-ordering {
		flex: 0 1 auto;
		max-width: 62%;
		min-width: 0;
		margin: 0;
	}

	/* "Sort by:" wrapped to its own line and took the room the control needed.
	   The select's own options say what it sorts, so the label is kept for
	   screen readers and dropped from the layout. */
	.shop-toolbar .woocommerce-ordering label {
		position: absolute;
		width: 1px;
		height: 1px;
		padding: 0;
		margin: -1px;
		overflow: hidden;
		clip: rect(0, 0, 0, 0);
		white-space: nowrap;
		border: 0;
	}

	.shop-toolbar .woocommerce-ordering select,
	.shop-toolbar .orderby {
		width: 100%;
		max-width: 100%;
		min-width: 0;
		text-overflow: ellipsis;
		min-height: 46px;
		padding: 0 2.25rem 0 0.875rem;
		border: 1px solid #e3ddd0;
		border-radius: 10px;
		background-color: #ffffff;
		/* The native arrow is inconsistent across mobile browsers and sits too
		   close to the edge; drawn here so the control reads as ours. */
		background-image:
			linear-gradient(45deg, transparent 50%, #b6893e 50%),
			linear-gradient(135deg, #b6893e 50%, transparent 50%);
		background-position: calc(100% - 20px) 21px, calc(100% - 15px) 21px;
		background-size: 5px 5px;
		background-repeat: no-repeat;
		-webkit-appearance: none;
		-moz-appearance: none;
		appearance: none;
		/* 16px minimum, or iOS zooms the page when the select is focused. */
		font-size: 1rem;
		font-weight: 600;
		color: #1c1b19;
		box-shadow: 0 1px 2px rgba(18, 18, 18, 0.04);
	}

	.shop-toolbar .woocommerce-ordering select:focus {
		border-color: #b6893e;
		box-shadow: 0 0 0 3px rgba(182, 137, 62, 0.12);
		outline: none;
	}

	/* --- Pagination ------------------------------------------------------- */

	.woocommerce-pagination .page-numbers li a,
	.woocommerce-pagination .page-numbers li span {
		min-width: 44px;
		min-height: 44px;
		display: inline-flex;
		align-items: center;
		justify-content: center;
		border-radius: 10px;
	}
}
