/* =========================================================
   Bhumitva Elementor Widgets — plugin-level CSS overrides that
   the copied html/assets/css/style.css doesn't cover, because it
   predates real WooCommerce price/add-to-cart markup.
   ========================================================= */

/* ---------- MRP (regular/struck) vs sale price coloring ----------
   WooCommerce's get_price_html()/wc_price() output wraps the sale price in
   <ins> and the original/MRP price in <del>. Our widgets wrap that whole
   string in one colored+bold span (to style the sale price), which was
   incorrectly tinting the crossed-out MRP price the same color. This resets
   <del> back to a muted, smaller, struck-through style matching the
   original static HTML (text-ink/40 line-through text-xs). */
.bhumitva-price-html del {
	color: rgba(34, 34, 34, 0.4);
	text-decoration: line-through;
	font-weight: 400;
	font-size: 0.75em;
	margin-right: 0.4em;
}
.bhumitva-price-html ins {
	text-decoration: none;
}
/* Variant for price text sitting on a dark background (Bestsellers section). */
.bhumitva-price-html--on-dark del {
	color: rgba(255, 255, 255, 0.45);
}

/* ---------- Add-to-cart loading state ----------
   WooCommerce's core add-to-cart.js toggles its own .loading class for the
   duration of the actual AJAX request only, which on a fast site can be
   near-instant. cart-ux.js layers an independent .bhumitva-adding class on
   top, held for a fixed minimum duration (see MIN_LOADING_MS in
   cart-ux.js) regardless of how fast the request itself finishes, so the
   spinner always reads as an intentional loading state. Both classes get
   the same spinner treatment. */
.add_to_cart_button.loading,
.add_to_cart_button.bhumitva-adding {
	position: relative;
	color: transparent !important;
	pointer-events: none;
}
.add_to_cart_button.loading i,
.add_to_cart_button.bhumitva-adding i {
	visibility: hidden;
}
.add_to_cart_button.loading::after,
.add_to_cart_button.bhumitva-adding::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 16px;
	height: 16px;
	margin: -8px 0 0 -8px;
	border: 2px solid rgba(255, 255, 255, 0.45);
	border-top-color: #fff;
	border-radius: 999px;
	animation: bhumitva-spin 0.6s linear infinite;
}
@keyframes bhumitva-spin {
	to {
		transform: rotate(360deg);
	}
}

/* ---------- Hide WooCommerce's auto-inserted "View Cart" link ----------
   add-to-cart.js appends <a class="added_to_cart wc-forward">View cart</a>
   after the button once an item is added — not wanted since the drawer
   already opens automatically and shows the cart. */
.added_to_cart.wc-forward {
	display: none !important;
}

/* ---------- Mini-cart remove button + row loading overlay ---------- */
.woocommerce-mini-cart-item.blockUI {
	position: relative;
}

/* ---------- Hero Slider height fallback ----------
   The Hero Slider widget's height is normally controlled entirely by
   Elementor's own generated per-widget CSS (Layout & Effects > Slider
   Height). This is only a safety-net baseline — matching the original
   design's defaults — so the slider never collapses to 0 height (all its
   slide content is absolutely positioned) if that generated CSS is ever
   stale or missing; Elementor's more specific `.elementor-element-{id}
   .hero-swiper` rule overrides this whenever a custom height is set. */
.hero-swiper {
	height: 380px;
}
@media (min-width: 640px) {
	.hero-swiper {
		height: 460px;
	}
}
@media (min-width: 1024px) {
	.hero-swiper {
		height: 600px;
	}
}

/* ---------- Product Tabs: attributes table (from wc_display_product_attributes) ----------
   Reuses WooCommerce's own default markup/classes for correctness (handles
   taxonomy vs custom attributes, weight/dimensions, linked term values) —
   restyled here to match the brand rather than reimplemented. */
.bhumitva-attributes-tab table.woocommerce-product-attributes {
	width: 100%;
	font-size: 0.8rem;
	border: 1px solid rgba(43, 50, 16, 0.1);
	border-radius: 1.25rem;
	overflow: hidden;
	border-collapse: separate;
	border-spacing: 0;
}
@media (min-width: 640px) {
	.bhumitva-attributes-tab table.woocommerce-product-attributes {
		font-size: 0.875rem;
	}
}
.bhumitva-attributes-tab .woocommerce-product-attributes-item {
	border-bottom: 1px solid rgba(43, 50, 16, 0.1);
}
.bhumitva-attributes-tab .woocommerce-product-attributes-item:nth-child(even) {
	background: rgba(255, 214, 123, 0.1);
}
.bhumitva-attributes-tab .woocommerce-product-attributes-item:nth-child(odd) {
	background: #fff;
}
.bhumitva-attributes-tab .woocommerce-product-attributes-item__label,
.bhumitva-attributes-tab .woocommerce-product-attributes-item__value {
	padding: 0.75rem 1rem;
	text-align: left;
	vertical-align: top;
}
.bhumitva-attributes-tab .woocommerce-product-attributes-item__label {
	font-weight: 600;
	width: 33%;
	white-space: nowrap;
}
.bhumitva-attributes-tab .woocommerce-product-attributes-item__value {
	color: rgba(34, 34, 34, 0.7);
}
.bhumitva-attributes-tab .woocommerce-product-attributes-item__value p {
	margin: 0;
}

/* ---------- Product Tabs: reviews (from WooCommerce's own comments_template()) ----------
   Same reasoning as above — real, moderated WordPress comments + the native
   star-rating form (progressively enhanced by the wc-single-product script),
   restyled to match the brand instead of reimplemented. */
.bhumitva-reviews-tab .woocommerce-Reviews-title,
.bhumitva-reviews-tab #review_form h3 {
	font-family: 'TAN Tangkiwood', 'Fraunces', serif;
	font-size: 1.125rem;
	font-weight: 700;
	color: var(--color-olive);
	margin-bottom: 1rem;
}
.bhumitva-reviews-tab .commentlist {
	list-style: none;
	margin: 0 0 2rem;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 1rem;
}
.bhumitva-reviews-tab .comment_container {
	background: #fff;
	border-radius: 1.25rem;
	box-shadow: 0 8px 30px -10px rgba(34, 34, 34, 0.15);
	padding: 1rem 1.25rem;
}
@media (min-width: 640px) {
	.bhumitva-reviews-tab .comment_container {
		padding: 1.5rem;
	}
}
.bhumitva-reviews-tab .comment_container img.avatar {
	border-radius: 999px;
	width: 2.5rem;
	height: 2.5rem;
	float: left;
	margin-right: 0.75rem;
}
.bhumitva-reviews-tab .comment-text {
	overflow: hidden;
}
.bhumitva-reviews-tab .woocommerce-review__author {
	font-family: 'TAN Tangkiwood', 'Fraunces', serif;
	font-weight: 700;
	font-size: 0.875rem;
}
.bhumitva-reviews-tab .woocommerce-review__dash {
	display: none;
}
.bhumitva-reviews-tab .woocommerce-review__published-date {
	font-size: 0.75rem;
	color: rgba(34, 34, 34, 0.5);
}
.bhumitva-reviews-tab .star-rating {
	color: var(--color-sand);
	font-size: 0.875rem;
	margin: 0.25rem 0;
}
.bhumitva-reviews-tab .description p {
	margin: 0.5rem 0 0;
	color: rgba(34, 34, 34, 0.8);
	font-size: 0.875rem;
}
.bhumitva-reviews-tab .woocommerce-noreviews {
	color: rgba(34, 34, 34, 0.6);
	font-size: 0.875rem;
}
.bhumitva-reviews-tab #review_form_wrapper {
	background: #fff;
	border-radius: 1.25rem;
	box-shadow: 0 8px 30px -10px rgba(34, 34, 34, 0.15);
	padding: 1.25rem;
}
@media (min-width: 640px) {
	.bhumitva-reviews-tab #review_form_wrapper {
		padding: 2rem;
	}
}
.bhumitva-reviews-tab #commentform p {
	margin: 0 0 1rem;
}
.bhumitva-reviews-tab #commentform label {
	display: block;
	font-size: 0.875rem;
	font-weight: 500;
	margin-bottom: 0.5rem;
}
.bhumitva-reviews-tab #commentform input[type="text"],
.bhumitva-reviews-tab #commentform input[type="email"],
.bhumitva-reviews-tab #commentform textarea,
.bhumitva-reviews-tab #commentform select {
	width: 100%;
	border: 1px solid rgba(43, 50, 16, 0.2);
	border-radius: 0.5rem;
	padding: 0.625rem 1rem;
	outline: none;
	font-family: inherit;
	font-size: 0.875rem;
}
.bhumitva-reviews-tab #commentform input:focus,
.bhumitva-reviews-tab #commentform textarea:focus,
.bhumitva-reviews-tab #commentform select:focus {
	border-color: var(--color-maroon);
}
.bhumitva-reviews-tab #commentform #submit {
	background: var(--color-maroon);
	color: #fff;
	font-weight: 500;
	padding: 0.75rem 2rem;
	border-radius: 999px;
	border: none;
	cursor: pointer;
	transition: background-color 0.3s ease;
}
.bhumitva-reviews-tab #commentform #submit:hover {
	background: var(--color-olive);
}
.bhumitva-reviews-tab .comment-form-rating select {
	max-width: 200px;
}
.bhumitva-reviews-tab p.stars a {
	color: var(--color-sand);
}

/* =========================================================
   Cart & Checkout — reskins WooCommerce's own classic
   cart/checkout markup (form-billing.php, form-shipping.php,
   form-login.php, form-coupon.php, terms.php, notices) that we
   deliberately did NOT override with custom templates, since its
   default output is generic/stable enough to restyle directly and
   doing so keeps every WooCommerce hook, filter and validation rule
   completely untouched. Structural pieces (cart items, totals,
   review order, payment methods, shipping list) ARE custom
   templates — see wp-content/themes/bhumitva/woocommerce/.
   ========================================================= */

/* ---------- Quantity stepper (shared with cart/global/quantity-input.php) ---------- */
.quantity {
	display: inline-flex;
	align-items: center;
	border: 1px solid rgba(43, 50, 16, 0.2);
	border-radius: 999px;
	width: fit-content;
}
.quantity .qty {
	border: 0;
	background: transparent;
}
.quantity .qty:focus {
	outline: none;
}

/* ---------- Notices (coupon errors/success, login prompts, cart notices) ---------- */
.woocommerce-error,
.woocommerce-message,
.woocommerce-info {
	list-style: none;
	margin: 0 0 1rem;
	padding: 0.875rem 1.25rem;
	border-radius: 0.75rem;
	font-size: 0.875rem;
	background: rgba(255, 214, 123, 0.15);
	color: var(--color-ink);
	border: 1px solid rgba(43, 50, 16, 0.1);
}
.woocommerce-message {
	background: rgba(21, 58, 40, 0.08);
	border-color: rgba(21, 58, 40, 0.15);
}
.woocommerce-error {
	background: rgba(129, 25, 42, 0.08);
	border-color: rgba(129, 25, 42, 0.2);
	color: var(--color-maroon);
}
.woocommerce-error a,
.woocommerce-message a,
.woocommerce-info a {
	color: var(--color-maroon);
	font-weight: 600;
	text-decoration: underline;
}

/* ---------- Login / coupon accordion toggles (checkout) ----------
   WooCommerce's own checkout.js already handles the .showlogin/.showcoupon
   click-to-reveal behaviour — this only restyles the toggle bar + revealed
   form to match the site's accordion look. */
.woocommerce-form-login-toggle,
.woocommerce-form-coupon-toggle {
	background: rgba(255, 214, 123, 0.15);
	border: 1px solid rgba(43, 50, 16, 0.15);
	border-radius: 1.25rem;
	padding: 1rem 1.25rem;
	margin-bottom: 1rem;
	font-size: 0.8rem;
}
@media (min-width: 640px) {
	.woocommerce-form-login-toggle,
	.woocommerce-form-coupon-toggle {
		font-size: 0.875rem;
	}
}
.woocommerce-form-login-toggle .showlogin,
.woocommerce-form-coupon-toggle .showcoupon {
	color: var(--color-maroon);
	font-weight: 600;
}
.woocommerce-form-login,
.woocommerce-form-coupon {
	background: #fff;
	border: 1px solid rgba(43, 50, 16, 0.1);
	border-top: none;
	border-radius: 0 0 1.25rem 1.25rem;
	padding: 1.25rem;
	margin-top: -1rem;
	margin-bottom: 1.5rem;
}
.woocommerce-form-coupon {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem;
}
.woocommerce-form-coupon .form-row {
	margin: 0;
	flex: 1 1 200px;
}
.woocommerce-form-coupon .form-row-last {
	flex: 0 0 auto;
}
.woocommerce-form-coupon .form-row .input-text {
	border-radius: 9999px;
}

/* ---------- Generic WooCommerce buttons (apply coupon, login submit,
   update totals) — the theme dequeues WooCommerce's default stylesheet,
   so these need their own pill-button treatment to match the site. ---------- */
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: var(--color-olive);
	color: #fff;
	font-weight: 500;
	font-size: 0.875rem;
	border: none;
	border-radius: 9999px;
	padding: 0.625rem 1.5rem;
	white-space: nowrap;
	cursor: pointer;
	transition: background-color 0.2s ease;
}
@media (min-width: 640px) {
	.woocommerce button.button,
	.woocommerce input.button,
	.woocommerce #respond input#submit {
		font-size: 1rem;
		padding: 0.75rem 1.5rem;
	}
}
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce #respond input#submit:hover {
	background: var(--color-maroon);
}
.woocommerce button.button:disabled,
.woocommerce button.button.disabled {
	opacity: 0.5;
	cursor: not-allowed;
}

/* ---------- Billing / shipping / additional fields ---------- */
.woocommerce-billing-fields h3,
.woocommerce-shipping-fields h3,
.woocommerce-additional-fields h3 {
	font-family: 'TAN Tangkiwood', 'Fraunces', serif;
	font-size: 1.125rem;
	font-weight: 700;
	color: var(--color-olive);
	margin-bottom: 1rem;
}
@media (min-width: 640px) {
	.woocommerce-billing-fields h3,
	.woocommerce-shipping-fields h3,
	.woocommerce-additional-fields h3 {
		font-size: 1.375rem;
		margin-bottom: 1.5rem;
	}
}
.woocommerce-billing-fields__field-wrapper,
.woocommerce-shipping-fields .woocommerce-shipping-fields__field-wrapper,
.woocommerce-shipping-fields > .form-row,
.woocommerce-address-fields__field-wrapper {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1rem;
}
@media (min-width: 640px) {
	.woocommerce-billing-fields__field-wrapper,
	.woocommerce-shipping-fields .woocommerce-shipping-fields__field-wrapper,
	.woocommerce-address-fields__field-wrapper {
		grid-template-columns: 1fr 1fr;
		gap: 1.25rem;
	}
	.woocommerce-billing-fields__field-wrapper .form-row-wide,
	.woocommerce-shipping-fields__field-wrapper .form-row-wide,
	.woocommerce-billing-fields__field-wrapper #billing_address_1_field,
	.woocommerce-billing-fields__field-wrapper #billing_address_2_field,
	.woocommerce-billing-fields__field-wrapper #billing_country_field,
	.woocommerce-address-fields__field-wrapper .form-row-wide,
	.woocommerce-address-fields__field-wrapper #address_1_field,
	.woocommerce-address-fields__field-wrapper #address_2_field,
	.woocommerce-address-fields__field-wrapper #country_field {
		grid-column: 1 / -1;
	}
}
.form-row {
	margin: 0;
}
/* Rows outside the grid wrappers (create-account checkbox, order notes,
   shipping "different address" toggle) still stack vertically and need
   their own spacing; rows inside the grid wrappers get spacing purely
   from grid `gap` above — giving both would double the vertical gap. */
.woocommerce-account-fields .form-row,
.woocommerce-additional-fields__field-wrapper .form-row,
.woocommerce-shipping-fields > p.form-row {
	margin: 0 0 1rem;
}
.form-row label {
	display: block;
	font-size: 0.875rem;
	font-weight: 500;
	margin-bottom: 0.375rem;
}

/* ---------- Field-wise validation ----------
   WooCommerce's checkout.js already renders inline per-field errors
   (.checkout-inline-error-message, appended into each .form-row) alongside
   the top-of-page summary list — both fire from the same validation pass.
   Since every field-specific error also has a data-id-matched entry in the
   top list, hiding just those <li data-id="..."> entries there leaves the
   summary box for real page-level errors only (e.g. a declined payment)
   while the field-wise messages carry the per-field errors. */
.woocommerce-error li[data-id],
.woocommerce-NoticeGroup-checkout li[data-id] {
	display: none;
}
.woocommerce-error:not(:has(li:not([data-id]))) {
	display: none;
}
.checkout-inline-error-message {
	color: var(--color-maroon);
	font-size: 0.8125rem;
	font-weight: 500;
	margin: 0.375rem 0 0;
}
.form-row.woocommerce-invalid .input-text,
.form-row.woocommerce-invalid select,
.form-row.woocommerce-invalid textarea {
	border-color: var(--color-maroon);
}
.form-row.woocommerce-invalid .select2-container .select2-selection--single {
	border-color: var(--color-maroon);
}
.form-row label .required {
	color: var(--color-maroon);
	text-decoration: none;
}
.form-row label .optional {
	color: rgba(34, 34, 34, 0.4);
	font-weight: 400;
}
.form-row .input-text,
.form-row select,
.form-row textarea,
#order_comments {
	width: 100%;
	border: 1px solid rgba(43, 50, 16, 0.2);
	border-radius: 0.5rem;
	padding: 0.625rem 1rem;
	outline: none;
	font-family: inherit;
	font-size: 0.875rem;
	background: #fff;
}
@media (min-width: 640px) {
	.form-row .input-text,
	.form-row select,
	.form-row textarea,
	#order_comments {
		padding: 0.75rem 1rem;
		font-size: 1rem;
	}
}
.form-row .input-text:focus,
.form-row select:focus,
.form-row textarea:focus,
#order_comments:focus {
	border-color: var(--color-maroon);
}
.form-row .select2-container .select2-selection--single {
	height: auto;
	border: 1px solid rgba(43, 50, 16, 0.2);
	border-radius: 0.5rem;
	padding: 0.625rem 1rem;
}
.form-row .select2-container .select2-selection__arrow {
	height: 100%;
	top: 0;
	right: 0.5rem;
}
.form-row.woocommerce-validated .input-text {
	border-color: var(--color-forest);
}
.form-row.woocommerce-invalid .input-text,
.form-row.woocommerce-invalid select {
	border-color: var(--color-maroon);
}

/* Checkboxes (create account, ship to different address, terms). */
.form-row.create-account label,
.woocommerce-shipping-fields label.checkbox,
.woocommerce-terms-and-conditions-wrapper label.checkbox {
	display: flex;
	align-items: flex-start;
	gap: 0.5rem;
	font-size: 0.875rem;
	font-weight: 500;
	cursor: pointer;
}
.woocommerce-account-fields,
.woocommerce-shipping-fields {
	margin-top: 1.25rem;
}
.woocommerce-shipping-fields .shipping_address {
	margin-top: 1rem;
}
#ship-to-different-address {
	margin-top: 1.25rem;
	font-size: 0.875rem;
	font-weight: 500;
}
#ship-to-different-address label {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	cursor: pointer;
}

/* Order notes textarea section spacing. */
#order_comments_field {
	margin-top: 1.25rem;
}

/* Terms checkbox + place order area. */
.woocommerce-terms-and-conditions-wrapper {
	margin-top: 1rem;
}
.woocommerce-terms-and-conditions-wrapper .required {
	color: var(--color-maroon);
	text-decoration: none;
}
.place-order .input-checkbox,
.form-row .input-checkbox {
	accent-color: var(--color-maroon);
	width: 1rem;
	height: 1rem;
	margin-top: 0.125rem;
	flex-shrink: 0;
}

/* Coupon success notice inline after the desktop coupon field on the cart page. */
.woocommerce-cart-form .coupon .woocommerce-error,
.woocommerce-cart-form .coupon .woocommerce-message {
	flex-basis: 100%;
	margin: 0.75rem 0 0;
}

/* Shipping calculator (cart totals, when a package has no rates yet). */
.shipping-calculator-form {
	margin-top: 0.75rem;
}
.shipping-calculator-button {
	color: var(--color-maroon);
	font-size: 0.8125rem;
	font-weight: 600;
	text-decoration: underline;
}
.shipping-calculator-form .form-row {
	margin-bottom: 0.75rem;
}
.shipping-calculator-form button[name="calc_shipping"] {
	background: var(--color-olive);
	color: #fff;
	font-size: 0.8125rem;
	font-weight: 500;
	padding: 0.5rem 1.25rem;
	border-radius: 999px;
	border: none;
	cursor: pointer;
	transition: background-color 0.3s ease;
}
.shipping-calculator-form button[name="calc_shipping"]:hover {
	background: var(--color-maroon);
}

/* AJAX-blocking overlay (WooCommerce's own .processing/.blockUI classes). */
.woocommerce-cart-form.processing,
div.cart_totals.processing,
#order_review.processing {
	position: relative;
	opacity: 0.6;
	pointer-events: none;
}

/* ==========================================================
   My Account area (dashboard, orders, order detail, downloads,
   addresses, account details) — sidebar nav + responsive tables.
   ========================================================== */

/* Sidebar nav: horizontal scrolling pill row on mobile (reads like an
   app's tab bar) instead of a column, without a visible scrollbar. */
.woocommerce-MyAccount-navigation {
	scrollbar-width: none;
	-ms-overflow-style: none;
}
.woocommerce-MyAccount-navigation::-webkit-scrollbar {
	display: none;
}
.woocommerce-MyAccount-navigation ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

/* Account tables collapse to a stacked "card list" below sm — each row
   becomes a block with label:value lines (label read from data-title,
   the same attribute WooCommerce's own dequeued smallscreen.css used) so
   wide tables (orders, order items, downloads) stay usable on a phone
   instead of forcing horizontal scroll. */
@media (max-width: 639px) {
	.bhumitva-account-table table,
	.bhumitva-account-table thead,
	.bhumitva-account-table tbody,
	.bhumitva-account-table th,
	.bhumitva-account-table td,
	.bhumitva-account-table tr {
		display: block;
		width: 100%;
	}
	.bhumitva-account-table thead {
		display: none;
	}
	.bhumitva-account-table tr {
		padding: 1rem 0;
		border-bottom: 1px solid rgba(43, 50, 16, 0.1);
	}
	.bhumitva-account-table tr:first-child {
		border-top: 1px solid rgba(43, 50, 16, 0.1);
	}
	.bhumitva-account-table td,
	.bhumitva-account-table th {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 1rem;
		padding: 0.375rem 1.25rem;
		text-align: right;
		border: none;
	}
	.bhumitva-account-table td[data-title]::before,
	.bhumitva-account-table th[data-title]::before {
		content: attr(data-title);
		font-family: 'TAN Tangkiwood', 'Fraunces', serif;
		font-weight: 700;
		color: var(--color-olive);
		text-align: left;
	}
	.bhumitva-account-table .woocommerce-table__product-name {
		text-align: left;
	}
	.bhumitva-account-table .woocommerce-table__product-name::before {
		display: none;
	}
}

/* ---------- Header search: live suggestion dropdown ---------- */
[data-search-suggest] {
	max-height: 70vh;
	overflow-y: auto;
}
[data-search-suggest] [data-search-option].is-active {
	background: rgba(255, 214, 123, 0.2);
}

/* ---------- Cover-fill images vs. Elementor's own reset ----------
   Elementor's frontend.css ships a global `.elementor img { height: auto;
   max-width: 100% }` reset (specificity 0-1-1) — higher than a single
   Tailwind utility class like .h-full (0-1-0), so it can silently win and
   leave any absolutely-positioned "cover" image sized to its own intrinsic
   aspect ratio instead of stretching to fill its box, especially
   noticeable on narrow/mobile viewports where the two aspect ratios
   diverge most. Every image built with the absolute+inset-0+object-cover
   pattern (product cards, About page media, etc.) needs to win that fight
   outright rather than rely on browser-specific abspos-auto-height
   behaviour. */
img.absolute.inset-0.object-cover {
	height: 100% !important;
	max-width: none !important;
}

/* ---------- Contact page: map shortcode output ----------
   A maps plugin's shortcode renders its own <iframe>/<div> at whatever
   size it defaults to; force it to fill the aspect-ratio box exactly like
   the plain embed-URL <iframe> path does. */
.bhumitva-map-shortcode iframe,
.bhumitva-map-shortcode > div {
	width: 100%;
	height: 100%;
	border: 0;
}

/* ---------- Contact page: Forminator form theme ----------
   Real classes taken from Forminator's own rendered markup
   ([forminator_form id="…"]): .forminator-row > .forminator-col >
   .forminator-field > .forminator-label / input.forminator-input /
   textarea.forminator-textarea, plus .forminator-button-submit and
   .forminator-response-message. Scoped to .bhumitva-contact-form so it
   only themes the contact page's form, not other Forminator forms
   elsewhere on the site. Generic input[type] selectors intentionally
   removed — they matched nothing in Forminator's actual markup (every
   field carries .forminator-input regardless of type) and risked
   clashing with a different plugin's markup if the shortcode is ever
   swapped. */
.bhumitva-contact-form .forminator-row {
	margin: 0 0 1.25rem;
}
.bhumitva-contact-form .forminator-row:last-of-type {
	margin-bottom: 0;
}
.bhumitva-contact-form .forminator-label {
	display: block;
	font-size: 0.875rem;
	font-weight: 500;
	color: var(--color-ink, #222);
	margin-bottom: 0.5rem;
}
.bhumitva-contact-form .forminator-required {
	color: var(--color-maroon);
}
.bhumitva-contact-form .forminator-description {
	display: block;
	font-size: 0.75rem;
	color: rgba(34, 34, 34, 0.45);
	margin-top: 0.375rem;
}
.bhumitva-contact-form .forminator-input,
.bhumitva-contact-form .forminator-textarea,
.bhumitva-contact-form select.forminator-select {
	width: 100%;
	background: var(--color-bg, #f8f7f3);
	border: 1px solid rgba(43, 50, 16, 0.2);
	border-radius: 0.5rem;
	padding: 0.75rem 1rem;
	font-family: inherit;
	font-size: 0.9375rem;
	color: var(--color-ink, #222);
	outline: none;
	transition: border-color 0.2s ease;
}
.bhumitva-contact-form .forminator-textarea {
	resize: vertical;
	min-height: 140px;
}
.bhumitva-contact-form .forminator-input:focus,
.bhumitva-contact-form .forminator-textarea:focus,
.bhumitva-contact-form select.forminator-select:focus {
	border-color: var(--color-maroon);
}
.bhumitva-contact-form .forminator-input::placeholder,
.bhumitva-contact-form .forminator-textarea::placeholder {
	color: rgba(34, 34, 34, 0.4);
}

/* Submit button — same pill treatment as the rest of the site's primary
   buttons (bg-maroon hover:bg-orange, rounded-full). */
.bhumitva-contact-form .forminator-button-submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	background: var(--color-maroon);
	color: #fff;
	font-weight: 500;
	font-size: 0.9375rem;
	border: none;
	border-radius: 9999px;
	padding: 0.875rem 2rem;
	cursor: pointer;
	transition: background-color 0.25s ease, transform 0.15s ease;
}
@media (min-width: 640px) {
	.bhumitva-contact-form .forminator-button-submit {
		width: auto;
		padding: 1rem 2.5rem;
	}
}
.bhumitva-contact-form .forminator-button-submit:hover {
	background: var(--color-orange);
}
.bhumitva-contact-form .forminator-button-submit:disabled,
.bhumitva-contact-form .forminator-button-submit.forminator-button-disabled {
	opacity: 0.6;
	cursor: not-allowed;
}
.bhumitva-contact-form .forminator-button-loading-spinner {
	border-color: rgba(255, 255, 255, 0.5);
	border-top-color: #fff;
}

/* Success / error response banners — same visual language as the
   .woocommerce-message / .woocommerce-error notices used elsewhere. */
.bhumitva-contact-form .forminator-response-message {
	border-radius: 0.75rem;
	padding: 0.875rem 1.25rem;
	font-size: 0.875rem;
	margin-bottom: 1.25rem;
}
.bhumitva-contact-form .forminator-response-message.forminator-success {
	background: rgba(21, 58, 40, 0.08);
	border: 1px solid rgba(21, 58, 40, 0.15);
	color: var(--color-forest);
}
.bhumitva-contact-form .forminator-response-message.forminator-error {
	background: rgba(129, 25, 42, 0.06);
	border: 1px solid rgba(129, 25, 42, 0.2);
	color: var(--color-maroon);
}
.bhumitva-contact-form .forminator-error-message {
	color: var(--color-maroon);
	font-size: 0.75rem;
	margin-top: 0.375rem;
	display: block;
}
.bhumitva-contact-form .forminator-input.forminator-error-field,
.bhumitva-contact-form .forminator-textarea.forminator-error-field {
	border-color: var(--color-maroon);
}

/* Checkbox / radio rows (consent fields etc.) */
.bhumitva-contact-form .forminator-radio,
.bhumitva-contact-form .forminator-checkbox {
	display: flex;
	align-items: flex-start;
	gap: 0.5rem;
	font-size: 0.875rem;
}
.bhumitva-contact-form .forminator-radio input,
.bhumitva-contact-form .forminator-checkbox input {
	accent-color: var(--color-maroon);
	margin-top: 0.2em;
}

/* Legal pages — WYSIWYG body content (Legal_Content widget). Mirrors the
   hand-written paragraph/list utility classes from html/privacy-policy.html,
   terms.html, refund-policy.html, shipping-policy.html since this content
   comes from Elementor's WYSIWYG editor rather than hand-authored markup. */
.bhumitva-legal-content p {
	color: rgba(34, 34, 34, 0.8);
	line-height: 1.75;
	margin-bottom: 1rem;
}
.bhumitva-legal-content p:last-child {
	margin-bottom: 0;
}
.bhumitva-legal-content ul,
.bhumitva-legal-content ol {
	list-style: disc;
	padding-left: 1.5rem;
	color: rgba(34, 34, 34, 0.8);
	line-height: 1.75;
	margin-bottom: 1rem;
}
.bhumitva-legal-content ol {
	list-style: decimal;
}
.bhumitva-legal-content li + li {
	margin-top: 0.5rem;
}
.bhumitva-legal-content strong,
.bhumitva-legal-content b {
	color: var(--color-ink);
	font-weight: 600;
}
.bhumitva-legal-content a {
	color: var(--color-maroon);
	text-decoration: underline;
}
.bhumitva-legal-content a:hover {
	color: var(--color-orange);
}

/* Track Order — delivery progress stepper (order/tracking.php). Completed
   steps fill the dot with forest green; the Font Awesome icon inside needs
   an explicit white to stay legible against that fill (it otherwise
   inherits the page's dark ink text color). */
.tracker-step .tracker-dot {
	transition: background-color 0.4s ease, border-color 0.4s ease, color 0.4s ease;
}
.tracker-step.is-complete .tracker-dot {
	background: var( --color-forest );
	border-color: var( --color-forest );
	color: #fff;
}
.tracker-step.is-complete .tracker-line {
	background: var( --color-forest );
}

/* ---------- Newsletter section: Forminator form theme ----------
   Same idea as the contact page's Forminator theming above, but laid out
   as the single-line email + button pill from the built-in newsletter
   form (html/home.html) rather than the contact form's stacked fields —
   Forminator renders the email field and submit button as two sibling
   .forminator-row elements directly inside <form>, so the form itself
   becomes the flex row. Scoped to .bhumitva-newsletter-shortcode so it
   only themes the newsletter section's form. */
.bhumitva-newsletter-shortcode form.forminator-custom-form {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
}
@media (min-width: 640px) {
	.bhumitva-newsletter-shortcode form.forminator-custom-form {
		flex-direction: row;
		align-items: flex-start;
	}
}
.bhumitva-newsletter-shortcode .forminator-row {
	margin: 0;
	flex: 1;
	min-width: 0;
}
.bhumitva-newsletter-shortcode .forminator-row.forminator-row-last {
	flex: 0 0 auto;
}
.bhumitva-newsletter-shortcode .forminator-col {
	padding: 0;
}
.bhumitva-newsletter-shortcode .forminator-field {
	margin: 0;
}
.bhumitva-newsletter-shortcode .forminator-label,
.bhumitva-newsletter-shortcode .forminator-description {
	display: none;
}
.bhumitva-newsletter-shortcode .forminator-input {
	width: 100%;
	background: #fff;
	border: 1px solid rgba(43, 50, 16, 0.2);
	border-radius: 9999px;
	padding: 1rem 1.25rem;
	font-family: inherit;
	font-size: 0.9375rem;
	color: var(--color-ink, #222);
	outline: none;
	transition: border-color 0.2s ease;
}
.bhumitva-newsletter-shortcode .forminator-input:focus {
	border-color: var(--color-maroon);
}
.bhumitva-newsletter-shortcode .forminator-input::placeholder {
	color: rgba(34, 34, 34, 0.55);
	opacity: 1;
}
.bhumitva-newsletter-shortcode .forminator-input.forminator-error-field {
	border-color: var(--color-maroon);
}
.bhumitva-newsletter-shortcode .forminator-error-message {
	color: var(--color-maroon);
	font-size: 0.75rem;
	margin-top: 0.375rem;
	display: block;
}

/* Submit button — matches the built-in newsletter form's pill button
   (bg-maroon hover:bg-olive), not the contact form's maroon/orange pair. */
.bhumitva-newsletter-shortcode .forminator-button-submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	background: var(--color-maroon);
	color: #fff;
	font-weight: 500;
	font-size: 0.9375rem;
	border: none;
	border-radius: 9999px;
	padding: 1rem 2rem;
	cursor: pointer;
	white-space: nowrap;
	transition: background-color 0.25s ease, transform 0.15s ease;
}
@media (min-width: 640px) {
	.bhumitva-newsletter-shortcode .forminator-button-submit {
		width: auto;
	}
}
.bhumitva-newsletter-shortcode .forminator-button-submit:hover {
	background: var(--color-olive);
}
.bhumitva-newsletter-shortcode .forminator-button-submit:disabled,
.bhumitva-newsletter-shortcode .forminator-button-submit.forminator-button-disabled {
	opacity: 0.6;
	cursor: not-allowed;
}
.bhumitva-newsletter-shortcode .forminator-button-loading-spinner {
	border-color: rgba(255, 255, 255, 0.5);
	border-top-color: #fff;
}

.bhumitva-newsletter-shortcode .forminator-response-message {
	border-radius: 0.75rem;
	padding: 0.875rem 1.25rem;
	font-size: 0.875rem;
	margin-bottom: 1rem;
	text-align: left;
}
.bhumitva-newsletter-shortcode .forminator-response-message.forminator-success {
	background: rgba(21, 58, 40, 0.08);
	border: 1px solid rgba(21, 58, 40, 0.15);
	color: var(--color-forest);
}
.bhumitva-newsletter-shortcode .forminator-response-message.forminator-error {
	background: rgba(129, 25, 42, 0.06);
	border: 1px solid rgba(129, 25, 42, 0.2);
	color: var(--color-maroon);
}
