/*
Theme Name:   Smart Plot Uganda (Astra Child)
Theme URI:    https://plot.stedwardsbukuumi.stedwardsbukuumi.sc.ug
Description:  Child theme for Smart Plot Uganda. Carries the "Secure Land Marketplace" design tokens, topographic surface pattern and component primitives. Layout is built in Elementor; this file only owns global tokens.
Author:       Smart Plot Uganda
Template:     astra
Version:      1.0.0
Text Domain:  smartplot-child
*/

/* =========================================================================
   1. DESIGN TOKENS  —  single source of truth
   Reconciled from DESIGN.md "Secure Land Marketplace" + sampled renders.
   ========================================================================= */
:root {
	/* --- Brand: Forest Green (land, growth, action) --- */
	--sp-green-900: #00450d;
	--sp-green-700: #1b5e20;
	--sp-green-500: #2a6b2c;
	--sp-green-100: #90d689;
	--sp-green-050: #e8efe8;

	/* --- Brand: Professional Navy (law, security) --- */
	--sp-navy-900: #001945;
	--sp-navy-700: #003683;
	--sp-navy-500: #184da7;
	--sp-navy-050: #d9e2ff;

	/* --- Ink --- */
	--sp-ink: #071e27;
	--sp-ink-muted: #41493e;
	--sp-ink-invert: #ffffff;

	/* --- Surfaces (tonal layering, no heavy shadows) --- */
	--sp-surface: #f3faff;
	--sp-surface-2: #e6f6ff;
	--sp-surface-3: #dbf1fe;
	--sp-card: #ffffff;

	/* --- Lines --- */
	--sp-line: #cfd8dc;
	--sp-line-soft: #c0c9bb;

	/* --- Status --- */
	--sp-error: #ba1a1a;
	--sp-error-bg: #fff8f7;
	--sp-warn: #e08a00;
	--sp-warn-bg: #fffbeb;
	--sp-verified: #1b5e20;

	/* --- Shape (4px base = ROUND_FOUR) --- */
	--sp-r-sm: 4px;
	--sp-r-md: 8px;
	--sp-r-lg: 12px;

	/* --- Spacing (4px baseline, 8px rhythm) --- */
	--sp-1: 4px;
	--sp-2: 8px;
	--sp-3: 16px;
	--sp-4: 24px;
	--sp-5: 32px;
	--sp-6: 48px;
	--sp-7: 80px;

	/* --- Elevation: ambient only, never floaty --- */
	--sp-elev-1: 0 1px 2px rgba(7, 30, 39, .04);
	--sp-elev-2: 0 4px 12px rgba(7, 30, 39, .05);
	--sp-elev-3: 0 8px 30px rgba(7, 30, 39, .12);

	/* --- Layout --- */
	--sp-container: 1280px;
	--sp-gutter: 24px;

	/* --- Type --- */
	--sp-font: 'Outfit', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

/* =========================================================================
   2. GLOBAL BASE
   ========================================================================= */
body,
button,
input,
select,
textarea {
	font-family: var(--sp-font);
	color: var(--sp-ink);
}

body {
	background-color: var(--sp-surface);
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

h1, h2, h3, h4, h5, h6,
.elementor-heading-title {
	font-family: var(--sp-font);
	color: var(--sp-ink);
	letter-spacing: -.01em;
}

h1, .sp-display {
	letter-spacing: -.02em;
}

/* =========================================================================
   3. TOPOGRAPHIC SURFACE PATTERN
   Max 5% opacity so it reads as texture, never as content.
   Apply .sp-topo to any Elementor Section via Advanced > CSS Classes.
   ========================================================================= */
.sp-topo {
	background-image: url("data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 18c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm48 25c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm-43-7c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm63 31c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM34 90c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm56-76c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM12 86c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm28-65c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm23-11c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-6 60c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm29 22c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zM32 63c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm57-13c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-9-21c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM60 91c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM35 41c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM12 60c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2z' fill='%23000000' fill-opacity='0.03' fill-rule='evenodd'/%3E%3C/svg%3E");
	background-repeat: repeat;
	background-size: 100px 100px;
}

/* Inverted variant for the deep-green registration / footer panels */
.sp-topo--invert {
	background-image: url("data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 18c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm48 25c3.866 0 7-3.134 7-7s-3.134-7-7-7-7 3.134-7 7 3.134 7 7 7zm-43-7c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm63 31c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM34 90c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zm56-76c1.657 0 3-1.343 3-3s-1.343-3-3-3-3 1.343-3 3 1.343 3 3 3zM12 86c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm28-65c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm23-11c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-6 60c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm29 22c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zM32 63c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm57-13c2.76 0 5-2.24 5-5s-2.24-5-5-5-5 2.24-5 5 2.24 5 5 5zm-9-21c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM60 91c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM35 41c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zM12 60c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2z' fill='%23ffffff' fill-opacity='0.05' fill-rule='evenodd'/%3E%3C/svg%3E");
	background-repeat: repeat;
	background-size: 100px 100px;
}

/* =========================================================================
   4. BUTTON PRIMITIVES  — 40px height for institutional density
   ========================================================================= */
.elementor-button,
.wp-block-button__link,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.um-button {
	font-family: var(--sp-font) !important;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: .01em;
	line-height: 20px;
	min-height: 40px;
	padding: 10px 20px;
	border-radius: var(--sp-r-sm) !important;
	transition: background-color .18s ease, border-color .18s ease, color .18s ease;
	box-shadow: none;
}

/* Primary — solid forest green */
.elementor-button:not(.sp-plot-card__cta .elementor-button),
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.um-button {
	background-color: var(--sp-green-700);
	color: var(--sp-ink-invert);
	border: 1px solid var(--sp-green-700);
}

.elementor-button:not(.sp-plot-card__cta .elementor-button):hover,
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.um-button:hover {
	background-color: var(--sp-green-900);
	border-color: var(--sp-green-900);
	color: var(--sp-ink-invert);
}

/* Secondary — outlined. Add .sp-btn-secondary in Elementor CSS Classes. */
.sp-btn-secondary .elementor-button,
.elementor-button.sp-btn-secondary {
	background-color: transparent !important;
	color: var(--sp-green-700) !important;
	border: 1px solid var(--sp-green-700) !important;
}

.sp-btn-secondary .elementor-button:hover,
.elementor-button.sp-btn-secondary:hover {
	background-color: var(--sp-green-050) !important;
}

/* Navy variant — legal / document actions */
.sp-btn-navy .elementor-button,
.elementor-button.sp-btn-navy {
	background-color: transparent !important;
	color: var(--sp-navy-700) !important;
	border: 2px solid var(--sp-navy-700) !important;
}

/* =========================================================================
   5. FORM PRIMITIVES  (CF7, Ultimate Member, WooCommerce, Forminator)
   1px border, 12px horizontal padding, navy 2px focus ring.
   ========================================================================= */
input[type="text"],
input[type="email"],
input[type="url"],
input[type="password"],
input[type="search"],
input[type="number"],
input[type="tel"],
input[type="date"],
select,
textarea,
.um input[type="text"],
.um input[type="email"],
.um input[type="password"],
.um select,
.um textarea,
.forminator-input,
.forminator-textarea {
	font-family: var(--sp-font);
	font-size: 16px;
	line-height: 24px;
	color: var(--sp-ink);
	background-color: var(--sp-card);
	border: 1px solid var(--sp-line);
	border-radius: var(--sp-r-sm);
	padding: 8px 12px;
	min-height: 44px;
	box-shadow: none;
	transition: border-color .15s ease;
}

input:focus,
select:focus,
textarea:focus {
	outline: none;
	border: 2px solid var(--sp-navy-700);
	box-shadow: none;
}

label,
.um-field-label label,
.forminator-label {
	font-size: 14px;
	font-weight: 600;
	line-height: 20px;
	letter-spacing: .01em;
	color: var(--sp-ink);
	margin-bottom: var(--sp-2);
	display: block;
}

.wpcf7-not-valid,
.um-field-error input,
.woocommerce-invalid input,
.forminator-has_error .forminator-input {
	border-color: var(--sp-error) !important;
}

.wpcf7-not-valid-tip,
.um-field-error,
.forminator-error-message {
	color: var(--sp-error);
	font-size: 14px;
	font-weight: 500;
}

/* =========================================================================
   6. COMPONENT PRIMITIVES
   ========================================================================= */
.sp-card {
	background-color: var(--sp-card);
	border: 1px solid var(--sp-line);
	border-radius: var(--sp-r-md);
	padding: var(--sp-4);
	box-shadow: var(--sp-elev-2);
}

.sp-badge {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 12px;
	font-weight: 700;
	line-height: 16px;
	letter-spacing: .05em;
	text-transform: uppercase;
	padding: 4px 10px;
	border-radius: var(--sp-r-sm);
}

.sp-badge--verified {
	background-color: var(--sp-verified);
	color: var(--sp-ink-invert);
}

.sp-badge--tenure {
	background-color: var(--sp-navy-900);
	color: var(--sp-ink-invert);
}

.sp-badge--pending {
	background-color: var(--sp-warn-bg);
	color: var(--sp-warn);
	border: 1px solid var(--sp-warn);
}

/* Spec chip: the "12.5 Decimals" / "Flat Terrain" boxes */
.sp-spec {
	display: flex;
	align-items: center;
	gap: var(--sp-2);
	background-color: var(--sp-surface-2);
	border-radius: var(--sp-r-sm);
	padding: 10px 12px;
	font-size: 14px;
	line-height: 20px;
	color: var(--sp-ink);
}

/* Alert panels: crisis (red) / solution (green) / checklist (amber) */
.sp-panel {
	border-radius: var(--sp-r-md);
	padding: var(--sp-4);
	border: 1px solid transparent;
}

.sp-panel--risk {
	background-color: var(--sp-error-bg);
	border-color: #f4d7d5;
}

.sp-panel--solution {
	background-color: var(--sp-green-050);
	border-color: #cfe0cf;
}

.sp-panel--checklist {
	background-color: var(--sp-warn-bg);
	border: 1px solid #EADFC0;
	border-radius: var(--sp-r-card);
}

/* Data list: alternating rows for scanability */
.sp-datalist > * {
	padding: 12px var(--sp-3);
}

.sp-datalist > *:nth-child(odd) {
	background-color: var(--sp-surface-2);
}

/* =========================================================================
   7. LAYOUT HELPERS
   ========================================================================= */
.sp-container {
	max-width: var(--sp-container);
	margin-inline: auto;
	padding-inline: var(--sp-6);
}

.sp-section {
	padding-block: var(--sp-7);
}

.sp-band-alt {
	background-color: var(--sp-surface-2);
}

/* =========================================================================
   8. MOTION — restrained by design constraint (low latency, no jank)
   Transform/opacity only. Never animate layout properties.
   ========================================================================= */
.sp-card,
.sp-lift {
	transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

.sp-lift:hover {
	transform: translateY(-2px);
	box-shadow: var(--sp-elev-3);
	border-color: var(--sp-green-500);
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: .01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .01ms !important;
		scroll-behavior: auto !important;
	}
}

/* =========================================================================
   9. RESPONSIVE — 1:1 translation of the mobile comps
   Mobile: 4-col fluid, 16px side margins, full-width actions.
   ========================================================================= */
@media (max-width: 1024px) {
	:root {
		--sp-gutter: 20px;
		--sp-7: 56px;
	}

	.sp-container {
		padding-inline: var(--sp-5);
	}
}

@media (max-width: 767px) {
	:root {
		--sp-7: 40px;
	}

	.sp-container {
		padding-inline: var(--sp-3);
	}

	.sp-card {
		padding: var(--sp-3);
	}

	/* Full-width primary actions for thumb ergonomics */
	.sp-action-mobile-full .elementor-button,
	.woocommerce .single_add_to_cart_button,
	.um-button {
		width: 100%;
		justify-content: center;
	}

	/* Never let the topo pattern cost paint time on small screens */
	.sp-topo {
		background-size: 80px 80px;
	}
}

/* =========================================================================
   10. ACCESSIBILITY
   ========================================================================= */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
.elementor-button:focus-visible {
	outline: 3px solid var(--sp-navy-700);
	outline-offset: 2px;
}

.sp-skip-link:focus {
	position: fixed;
	top: var(--sp-3);
	left: var(--sp-3);
	z-index: 99999;
	background: var(--sp-green-700);
	color: #fff;
	padding: 12px 20px;
	border-radius: var(--sp-r-sm);
}

.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}

/* =========================================================================
   11. LAND SHOP — archive chrome
   ========================================================================= */
.sp-shop-header {
	margin-bottom: var(--sp-2);
}

.sp-shop-header__title {
	font-size: 40px;
	font-weight: 700;
	line-height: 48px;
	letter-spacing: -.02em;
	margin: 0;
}

.sp-result-count {
	font-size: 16px;
	color: var(--sp-ink-muted);
	margin: 0 0 var(--sp-4);
	float: none;
}

.woocommerce-ordering {
	float: right;
	margin-bottom: var(--sp-4);
}

.woocommerce-ordering select {
	min-height: 40px;
	border-radius: var(--sp-r-sm);
	border: 1px solid var(--sp-line);
	background-color: var(--sp-card);
	font-size: 14px;
	font-weight: 600;
}

/* =========================================================================
   12. LAND SHOP — plot card grid
   ========================================================================= */
.woocommerce ul.products {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--sp-4);
	margin: 0 0 var(--sp-5);
	padding: 0;
	list-style: none;
}

.woocommerce ul.products::before,
.woocommerce ul.products::after {
	content: none;
}

.woocommerce ul.products li.product.sp-plot-card {
	width: 100%;
	margin: 0;
	padding: 0;
	float: none;
	clear: none;
	display: flex;
	flex-direction: column;
	background-color: var(--sp-card);
	border: 1px solid var(--sp-line);
	border-radius: var(--sp-r-md);
	overflow: hidden;
	box-shadow: var(--sp-elev-2);
}

/* --- Media --- */
.sp-plot-card__media {
	position: relative;
	aspect-ratio: 16 / 10;
	overflow: hidden;
	background-color: var(--sp-surface-2);
}

.sp-plot-card__media img,
.woocommerce ul.products li.product .sp-plot-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	margin: 0;
	border-radius: 0;
	transition: transform .4s ease;
}

.sp-plot-card:hover .sp-plot-card__media img {
	transform: scale(1.04);
}

.sp-plot-card__badges {
	position: absolute;
	top: var(--sp-2);
	left: var(--sp-2);
	display: flex;
	gap: 6px;
	flex-wrap: wrap;
	max-width: calc(100% - var(--sp-3));
}

/* --- Card body --- */
.sp-plot-card__body {
	display: flex;
	flex-direction: column;
	gap: var(--sp-2);
	padding: var(--sp-3);
	flex: 1 1 auto;
}

.sp-plot-card__head {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--sp-2);
}

.woocommerce ul.products li.product .sp-plot-card__title {
	font-size: 18px;
	font-weight: 600;
	line-height: 24px;
	letter-spacing: -.01em;
	margin: 0;
	padding: 0;
}

.sp-plot-card__title a {
	color: var(--sp-ink);
	text-decoration: none;
}

.sp-plot-card__title a:hover {
	color: var(--sp-green-700);
}

.sp-plot-card__price {
	flex: 0 0 auto;
	font-size: 18px;
	font-weight: 700;
	line-height: 24px;
	color: var(--sp-green-700);
	white-space: nowrap;
}

.sp-plot-card__location {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 14px;
	line-height: 20px;
	color: var(--sp-ink-muted);
	margin: 0;
}

.sp-icon {
	flex: 0 0 auto;
	color: var(--sp-green-500);
}

.sp-plot-card__specs {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--sp-2);
	margin-top: var(--sp-1);
}

.sp-plot-card__lr {
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .05em;
	text-transform: uppercase;
	color: var(--sp-ink-muted);
	margin: 0;
}

/* CTA pinned to the card foot so buttons align across a ragged row */
.sp-plot-card__cta {
	margin-top: auto;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 40px;
	padding: 10px 16px;
	border: 1px solid var(--sp-line);
	border-radius: var(--sp-r-sm);
	background-color: var(--sp-card);
	color: var(--sp-ink);
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
	transition: background-color .18s ease, border-color .18s ease, color .18s ease;
}

.sp-plot-card__cta:hover,
.sp-plot-card__cta:focus {
	background-color: var(--sp-green-700);
	border-color: var(--sp-green-700);
	color: var(--sp-ink-invert);
}

/* Woo injects its own add-to-cart link into the loop; the card owns its CTA */
.woocommerce ul.products li.product .button:not(.sp-plot-card__cta),
.woocommerce ul.products li.product .added_to_cart {
	display: none;
}

/* =========================================================================
   13. LAND SHOP — filter sidebar
   ========================================================================= */
.sp-filter-widget {
	margin-bottom: var(--sp-4);
	padding-bottom: var(--sp-4);
	border-bottom: 1px solid var(--sp-line);
}

.sp-filter-widget:last-child {
	border-bottom: 0;
	margin-bottom: 0;
	padding-bottom: 0;
}

.sp-filter-widget__title {
	font-size: 16px;
	font-weight: 600;
	line-height: 24px;
	color: var(--sp-ink);
	margin: 0 0 var(--sp-2);
}

.sp-filter-widget ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.sp-filter-widget li {
	margin: 0;
	padding: 0;
}

/* Layered nav rows — generous tap target, count muted to the right */
.woocommerce-widget-layered-nav-list__item {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--sp-2);
	padding: 6px 0;
}

.woocommerce-widget-layered-nav-list__item a {
	flex: 1 1 auto;
	font-size: 15px;
	line-height: 22px;
	color: var(--sp-ink);
	text-decoration: none;
}

.woocommerce-widget-layered-nav-list__item a:hover {
	color: var(--sp-green-700);
}

.woocommerce-widget-layered-nav-list__item .count {
	flex: 0 0 auto;
	font-size: 13px;
	color: var(--sp-ink-muted);
}

.woocommerce-widget-layered-nav-list__item--chosen a {
	font-weight: 700;
	color: var(--sp-green-700);
}

.woocommerce-widget-layered-nav-list__item--chosen a::before {
	content: "\2715";
	margin-right: 6px;
	font-size: 12px;
}

/* Price slider */
.price_slider_wrapper {
	margin-top: var(--sp-2);
}

.woocommerce .price_slider_wrapper .ui-widget-content {
	background-color: var(--sp-surface-3);
	border-radius: var(--sp-r-sm);
	height: 4px;
}

.woocommerce .ui-slider .ui-slider-range {
	background-color: var(--sp-green-700);
}

.woocommerce .ui-slider .ui-slider-handle {
	background-color: var(--sp-green-700);
	border: 2px solid var(--sp-card);
	box-shadow: var(--sp-elev-2);
	width: 16px;
	height: 16px;
	top: -6px;
}

.woocommerce .price_slider_amount .price_label {
	font-size: 14px;
	color: var(--sp-ink-muted);
}

.woocommerce .price_slider_amount .button {
	float: left;
	margin-top: var(--sp-2);
}

/* Active filter chips */
.woocommerce-widget-layered-nav-dropdown,
.widget_layered_nav_filters ul li a {
	font-size: 14px;
	color: var(--sp-green-700);
}

/* =========================================================================
   14. LAND SHOP — pagination
   ========================================================================= */
.woocommerce nav.woocommerce-pagination ul {
	display: flex;
	justify-content: center;
	gap: var(--sp-2);
	border: 0;
	margin: var(--sp-5) 0;
}

.woocommerce nav.woocommerce-pagination ul li {
	border: 0;
	margin: 0;
	overflow: visible;
}

.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span {
	display: flex;
	align-items: center;
	justify-content: center;
	min-width: 40px;
	height: 40px;
	padding: 0 10px;
	border: 1px solid var(--sp-line);
	border-radius: var(--sp-r-sm);
	background-color: var(--sp-card);
	color: var(--sp-ink);
	font-size: 14px;
	font-weight: 600;
}

.woocommerce nav.woocommerce-pagination ul li span.current,
.woocommerce nav.woocommerce-pagination ul li a:hover {
	background-color: var(--sp-green-700);
	border-color: var(--sp-green-700);
	color: var(--sp-ink-invert);
}

/* =========================================================================
   15. LAND SHOP — responsive
   Comp calls for 3-up desktop, 2-up tablet, 1-up mobile.
   ========================================================================= */
@media (max-width: 1024px) {
	.woocommerce ul.products {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: var(--sp-3);
	}

	.sp-shop-header__title {
		font-size: 32px;
		line-height: 40px;
	}
}

@media (max-width: 767px) {
	.woocommerce ul.products {
		grid-template-columns: minmax(0, 1fr);
	}

	.sp-shop-header__title {
		font-size: 28px;
		line-height: 36px;
	}

	.woocommerce-ordering {
		float: none;
		width: 100%;
	}

	.woocommerce-ordering select {
		width: 100%;
	}

	/* Title and price stack rather than squeezing on a narrow card */
	.sp-plot-card__head {
		flex-direction: column;
		gap: var(--sp-1);
	}

	.sp-plot-card__price {
		font-size: 20px;
	}

	/* Image loses height on mobile so more cards fit a scroll */
	.sp-plot-card__media {
		aspect-ratio: 16 / 9;
	}

	.sp-plot-card:hover .sp-plot-card__media img {
		transform: none;
	}

	.woocommerce nav.woocommerce-pagination ul {
		flex-wrap: wrap;
	}
}

/* =========================================================================
   11. E-LAND AGREEMENT FORM
   ========================================================================= */
.sp-agreement-wrap .forminator-ui {
	background-color: var(--sp-card);
	border: 1px solid var(--sp-line);
	border-radius: var(--sp-r-lg);
	padding: var(--sp-5);
	box-shadow: var(--sp-elev-2);
}

.sp-form-heading {
	font-size: 17px;
	font-weight: 600;
	line-height: 24px;
	color: var(--sp-ink);
	margin: 0 0 var(--sp-1);
	padding-bottom: var(--sp-2);
	border-bottom: 2px solid var(--sp-green-700);
}

.sp-form-note {
	font-size: 15px;
	line-height: 20px;
	color: var(--sp-ink-muted);
	margin: 0;
}

.sp-party-label {
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--sp-green-700);
	margin: 0;
	padding: var(--sp-2) 0;
	border-bottom: 1px solid var(--sp-line);
}

/* Checklist panel inside the form */
.sp-panel--checklist h4 {
	font-size: 16px;
	font-weight: 600;
	color: var(--sp-ink);
	margin: 0 0 var(--sp-2);
}

.sp-panel--checklist ul {
	margin: 0;
	padding-left: 20px;
}

.sp-panel--checklist li {
	font-size: 14px;
	line-height: 22px;
	color: var(--sp-ink-muted);
	margin-bottom: 6px;
}

/* Upload dropzones — dashed, document-like */
.forminator-ui .forminator-field-upload,
.forminator-ui .forminator-multi-upload {
	border: 1px dashed var(--sp-line) !important;
	border-radius: var(--sp-r-sm) !important;
	background-color: var(--sp-surface) !important;
	padding: var(--sp-4) !important;
	text-align: center;
}

.forminator-ui .forminator-multi-upload:hover {
	border-color: var(--sp-green-700) !important;
	background-color: var(--sp-green-050) !important;
}

/* Step navigation */
.forminator-ui .forminator-pagination-steps .forminator-step-label {
	font-family: var(--sp-font);
	font-size: 13px;
	font-weight: 600;
}

.forminator-ui .forminator-button-back {
	background-color: transparent !important;
	color: var(--sp-navy-700) !important;
	border: 1px solid var(--sp-navy-700) !important;
}

@media (max-width: 767px) {
	.sp-agreement-wrap .forminator-ui {
		padding: var(--sp-3);
	}
}

/* =========================================================================
   12. MEMBER DASHBOARD
   ========================================================================= */
.woocommerce-account .woocommerce-MyAccount-navigation {
	width: 26%;
	background-color: var(--sp-card);
	border: 1px solid var(--sp-line);
	border-radius: var(--sp-r-md);
	padding: var(--sp-2);
}

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

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

.woocommerce-account .woocommerce-MyAccount-navigation li a {
	display: block;
	padding: 12px 16px;
	font-size: 15px;
	font-weight: 500;
	color: var(--sp-ink);
	border-radius: var(--sp-r-sm);
	text-decoration: none;
	transition: background-color .15s ease, color .15s ease;
}

.woocommerce-account .woocommerce-MyAccount-navigation li a:hover {
	background-color: var(--sp-surface-2);
}

.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a {
	background-color: var(--sp-green-700);
	color: var(--sp-ink-invert);
	font-weight: 600;
}

.woocommerce-account .woocommerce-MyAccount-navigation li.woocommerce-MyAccount-navigation-link--customer-logout a {
	color: var(--sp-error);
	border-top: 1px solid var(--sp-line);
	margin-top: var(--sp-2);
	border-radius: 0;
}

.woocommerce-account .woocommerce-MyAccount-content {
	width: 70%;
	background-color: var(--sp-card);
	border: 1px solid var(--sp-line);
	border-radius: var(--sp-r-md);
	padding: var(--sp-5);
}

/* --- Agreements table --- */
.sp-agreements__table {
	width: 100%;
	border-collapse: collapse;
	margin-bottom: var(--sp-3);
}

.sp-agreements__table th {
	text-align: left;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .05em;
	text-transform: uppercase;
	color: var(--sp-ink-muted);
	padding: 10px 12px;
	border-bottom: 2px solid var(--sp-line);
}

.sp-agreements__table td {
	padding: 14px 12px;
	font-size: 15px;
	color: var(--sp-ink);
	border-bottom: 1px solid var(--sp-line);
}

.sp-agreements__table tbody tr:nth-child(odd) {
	background-color: var(--sp-surface);
}

.sp-agreements__note {
	font-size: 13px;
	color: var(--sp-ink-muted);
}

/* --- Empty state --- */
.sp-empty {
	text-align: center;
	padding: var(--sp-6) var(--sp-3);
	background-color: var(--sp-surface);
	border: 1px dashed var(--sp-line);
	border-radius: var(--sp-r-md);
}

.sp-empty h3 {
	font-size: 20px;
	font-weight: 600;
	margin: 0 0 var(--sp-2);
}

.sp-empty p {
	color: var(--sp-ink-muted);
	margin: 0 auto var(--sp-4);
	max-width: 420px;
}

.sp-empty__cta {
	display: inline-block;
	background-color: var(--sp-green-700);
	color: var(--sp-ink-invert);
	padding: 10px 20px;
	border-radius: var(--sp-r-sm);
	font-weight: 600;
	font-size: 14px;
	text-decoration: none;
}

.sp-empty__cta:hover {
	background-color: var(--sp-green-900);
	color: var(--sp-ink-invert);
}

@media (max-width: 767px) {
	.woocommerce-account .woocommerce-MyAccount-navigation,
	.woocommerce-account .woocommerce-MyAccount-content {
		width: 100%;
		float: none;
		margin-bottom: var(--sp-3);
		padding: var(--sp-3);
	}

	/* Stacked rows with inline labels */
	.sp-agreements__table thead {
		display: none;
	}

	.sp-agreements__table,
	.sp-agreements__table tbody,
	.sp-agreements__table tr,
	.sp-agreements__table td {
		display: block;
		width: 100%;
	}

	.sp-agreements__table tr {
		margin-bottom: var(--sp-3);
		border: 1px solid var(--sp-line);
		border-radius: var(--sp-r-sm);
	}

	.sp-agreements__table td {
		display: flex;
		justify-content: space-between;
		gap: var(--sp-3);
		border-bottom: 1px solid var(--sp-line);
	}

	.sp-agreements__table td::before {
		content: attr(data-label);
		font-size: 12px;
		font-weight: 700;
		text-transform: uppercase;
		color: var(--sp-ink-muted);
	}
}

/* =========================================================================
   13. HEADER + FOOTER CHROME
   ========================================================================= */
.ast-primary-header-bar,
.site-header {
	background-color: var(--sp-surface);
}

/* Compact nav to match the comp's thin header band */
.ast-builder-menu-1 .main-header-menu > .menu-item > .menu-link {
	font-size: 14px;
	font-weight: 500;
	color: var(--sp-ink);
	padding-inline: 14px;
}

.ast-builder-menu-1 .main-header-menu > .menu-item.current-menu-item > .menu-link,
.ast-builder-menu-1 .main-header-menu > .menu-item.current_page_item > .menu-link {
	color: var(--sp-ink);
	font-weight: 600;
	box-shadow: inset 0 -2px 0 0 var(--sp-green-700);
}

.ast-builder-menu-1 .main-header-menu > .menu-item > .menu-link:hover {
	color: var(--sp-green-700);
}

/* --- Footer --- */
.site-footer,
.ast-footer-copyright,
.footer-widget-area {
	color: var(--sp-ink-muted);
}

.sp-foot-brand {
	display: flex;
	align-items: flex-start;
	gap: var(--sp-3);
}

.sp-foot-brand img {
	width: 40px;
	height: 40px;
	border-radius: 50%;
	flex: 0 0 auto;
}

.sp-foot-brand p {
	margin: 0;
	font-size: 13px;
	line-height: 20px;
	color: var(--sp-ink-muted);
}

.footer-widget-area .widget-title,
.footer-widget-area h2 {
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--sp-ink-muted);
	margin-bottom: var(--sp-2);
}

.sp-foot-links {
	list-style: none;
	margin: 0;
	padding: 0;
}

.sp-foot-links li {
	margin-bottom: 8px;
}

.sp-foot-links a {
	font-size: 13px;
	line-height: 20px;
	color: var(--sp-ink);
	text-decoration: none;
}

.sp-foot-links a:hover {
	color: var(--sp-green-700);
	text-decoration: underline;
}

/* Inline text link with arrow ("View All Listings") */
.sp-textlink .elementor-button {
	background-color: transparent !important;
	border: 0 !important;
	min-height: 0;
	padding: 0 !important;
	color: var(--sp-green-900) !important;
}

.sp-textlink .elementor-button:hover {
	background-color: transparent !important;
	color: var(--sp-green-700) !important;
	text-decoration: underline;
}

/* Icon-box headings inside the crisis / solution panels */
.sp-panel .elementor-widget-icon-box .elementor-icon-box-wrapper {
	display: flex;
	align-items: center;
	gap: 12px;
}

.sp-panel .elementor-widget-icon-box .elementor-icon-box-description {
	display: none;
}

.sp-panel .elementor-icon-box-title {
	margin: 0;
}

@media (max-width: 767px) {
	.sp-foot-brand {
		margin-bottom: var(--sp-4);
	}
}

/* =========================================================================
   14. PLOT DETAIL PAGE
   ========================================================================= */
.sp-plot-single {
	max-width: var(--sp-container);
	margin-inline: auto;
	padding: var(--sp-5) var(--sp-6) var(--sp-7);
}

.sp-plot-single__grid {
	display: grid;
	grid-template-columns: 1.05fr 1fr;
	gap: var(--sp-6);
	align-items: start;
}

/* --- Media --- */
.sp-plot-single__media {
	border: 1px solid var(--sp-line);
	border-radius: var(--sp-r-md);
	overflow: hidden;
	background: var(--sp-card);
}

.sp-plot-single__media .woocommerce-product-gallery {
	margin: 0;
	width: 100% !important;
	float: none !important;
}

.sp-plot-single__media img {
	display: block;
	width: 100%;
	height: auto;
}

/* --- Summary --- */
.sp-plot-single__badges {
	display: flex;
	flex-wrap: wrap;
	gap: var(--sp-2);
	margin-bottom: var(--sp-3);
}

.sp-plot-single__title {
	font-size: 32px;
	line-height: 40px;
	font-weight: 700;
	letter-spacing: -.01em;
	color: var(--sp-ink);
	margin: 0 0 var(--sp-2);
}

.sp-plot-single__location {
	display: flex;
	align-items: center;
	gap: 7px;
	font-size: 15px;
	color: var(--sp-ink-muted);
	margin: 0 0 var(--sp-3);
}

.sp-plot-single__price {
	display: flex;
	align-items: baseline;
	gap: var(--sp-3);
	flex-wrap: wrap;
	font-size: 30px;
	font-weight: 700;
	color: var(--sp-green-700);
	margin: 0 0 var(--sp-4);
	padding-bottom: var(--sp-3);
	border-bottom: 1px solid var(--sp-line);
}

.sp-plot-single__price-full,
.sp-plot-single__price-full .amount {
	font-size: 14px;
	font-weight: 400;
	color: var(--sp-ink-muted);
}

.sp-plot-single__price-full del {
	display: none;
}

/* --- Spec table: the registry-document look --- */
.sp-plot-specs {
	margin: 0 0 var(--sp-4);
	border: 1px solid var(--sp-line);
	border-radius: var(--sp-r-sm);
	overflow: hidden;
}

.sp-plot-specs__row {
	display: flex;
	justify-content: space-between;
	gap: var(--sp-3);
	padding: 11px 14px;
	border-bottom: 1px solid var(--sp-line);
}

.sp-plot-specs__row:last-child {
	border-bottom: 0;
}

.sp-plot-specs__row:nth-child(odd) {
	background-color: var(--sp-surface);
}

.sp-plot-specs dt {
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--sp-ink-muted);
	margin: 0;
}

.sp-plot-specs dd {
	font-size: 15px;
	font-weight: 500;
	color: var(--sp-ink);
	margin: 0;
	text-align: right;
}

/* --- Actions --- */
.sp-plot-single__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--sp-2);
	align-items: center;
	margin-bottom: var(--sp-4);
}

.sp-plot-single__actions .quantity {
	display: none;
}

.sp-plot-single__actions .single_add_to_cart_button {
	flex: 1 1 auto;
	justify-content: center;
}

.sp-plot-single__agreement {
	flex: 1 1 auto;
	text-align: center;
	font-size: 14px;
	font-weight: 600;
	padding: 11px 20px;
	border: 2px solid var(--sp-navy-700);
	border-radius: var(--sp-r-sm);
	color: var(--sp-navy-700);
	text-decoration: none;
	transition: background-color .15s ease;
}

.sp-plot-single__agreement:hover {
	background-color: var(--sp-navy-050);
	color: var(--sp-navy-900);
}

/* --- Trust panel --- */
.sp-plot-trust h3 {
	font-size: 16px;
	font-weight: 600;
	margin: 0 0 var(--sp-2);
	color: var(--sp-ink);
}

.sp-plot-trust ul {
	margin: 0;
	padding-left: 18px;
}

.sp-plot-trust li,
.sp-plot-trust p {
	font-size: 14px;
	line-height: 22px;
	color: var(--sp-ink-muted);
	margin-bottom: 5px;
}

.sp-plot-trust__date {
	margin-top: var(--sp-2);
	font-size: 13px;
	font-style: italic;
}

/* --- Lower detail area --- */
.sp-plot-single__detail {
	margin-top: var(--sp-6);
	padding-top: var(--sp-5);
	border-top: 1px solid var(--sp-line);
}

.sp-plot-single__detail .woocommerce-tabs ul.tabs {
	padding-left: 0;
}

.sp-plot-single__detail h2 {
	font-size: 22px;
	font-weight: 600;
	color: var(--sp-ink);
}

@media (max-width: 1024px) {
	.sp-plot-single {
		padding: var(--sp-4) var(--sp-5) var(--sp-6);
	}

	.sp-plot-single__grid {
		gap: var(--sp-4);
	}
}

@media (max-width: 767px) {
	.sp-plot-single {
		padding: var(--sp-3) var(--sp-3) var(--sp-5);
	}

	.sp-plot-single__grid {
		grid-template-columns: 1fr;
	}

	.sp-plot-single__title {
		font-size: 24px;
		line-height: 32px;
	}

	.sp-plot-single__price {
		font-size: 24px;
	}

	.sp-plot-single__actions .single_add_to_cart_button,
	.sp-plot-single__agreement {
		flex: 1 1 100%;
	}
}

/* =========================================================================
   15. PLOT CARD — exact comp match (overrides section 6 card rules)
   ========================================================================= */
ul.products {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--sp-4);
	list-style: none;
	margin: 0;
	padding: 0;
}

ul.products::before,
ul.products::after {
	content: none;
}

li.sp-plot-card {
	display: flex;
	flex-direction: column;
	background: var(--sp-card);
	border: 1px solid #E4EEF4;
	border-radius: var(--sp-r-md);
	overflow: hidden;
	box-shadow: 0 1px 3px rgba(7, 30, 39, .05);
	transition: transform .18s ease, box-shadow .18s ease;
	width: auto !important;
	margin: 0 !important;
	float: none !important;
}

li.sp-plot-card:hover {
	transform: translateY(-2px);
	box-shadow: 0 8px 24px rgba(7, 30, 39, .10);
}

/* --- Media --- */
.sp-plot-card__media {
	position: relative;
	line-height: 0;
	background: var(--sp-surface-2);
}

.sp-plot-card__media img {
	width: 100%;
	height: 190px;
	object-fit: cover;
	display: block;
}

/* Verified pill, top-left over the image */
.sp-plot-card__verified {
	position: absolute;
	top: 12px;
	left: 12px;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	background: var(--sp-green-700);
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	line-height: 1;
	letter-spacing: .01em;
	padding: 7px 12px;
	border-radius: 999px;
	box-shadow: 0 2px 6px rgba(0, 0, 0, .18);
}

/* Price plate, bottom-right over the image */
.sp-plot-card__price {
	position: absolute;
	right: 0;
	bottom: 12px;
	background: #0B1A10;
	color: #fff;
	font-size: 17px;
	font-weight: 700;
	line-height: 1;
	letter-spacing: .01em;
	padding: 10px 14px;
	border-radius: 4px 0 0 4px;
}

/* --- Body --- */
.sp-plot-card__body {
	display: flex;
	flex-direction: column;
	padding: 18px;
	flex: 1 1 auto;
}

.sp-plot-card__title {
	font-size: 18px;
	line-height: 25px;
	font-weight: 700;
	letter-spacing: -.01em;
	margin: 0 0 6px;
}

.sp-plot-card__title a {
	color: var(--sp-ink);
	text-decoration: none;
}

.sp-plot-card__title a:hover {
	color: var(--sp-green-700);
}

.sp-plot-card__location {
	display: flex;
	align-items: center;
	gap: 7px;
	font-size: 14px;
	line-height: 20px;
	color: var(--sp-ink-muted);
	margin: 0 0 16px;
}

/* --- Tenure / Size strip between hairlines --- */
.sp-plot-card__meta {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--sp-3);
	padding: 14px 0;
	border-top: 1px solid #E8EDEF;
	border-bottom: 1px solid #E8EDEF;
	margin-bottom: 16px;
}

.sp-plot-card__meta-col {
	display: flex;
	flex-direction: column;
	gap: 3px;
	min-width: 0;
}

.sp-plot-card__meta-label {
	font-size: 12px;
	line-height: 16px;
	font-weight: 400;
	color: #8A9499;
}

.sp-plot-card__meta-value {
	font-size: 15px;
	line-height: 21px;
	font-weight: 600;
	color: var(--sp-ink);
}

/* --- Full-width tinted action --- */
.sp-plot-card__cta {
	display: block;
	margin-top: auto;
	text-align: center;
	background: #DCF3FF;
	color: var(--sp-ink);
	font-size: 14px;
	font-weight: 600;
	letter-spacing: .02em;
	padding: 12px 16px;
	border-radius: var(--sp-r-sm);
	text-decoration: none;
	transition: background-color .15s ease, color .15s ease;
}

.sp-plot-card__cta:hover {
	background: var(--sp-green-700);
	color: #fff;
}

/* Suppress default Woo loop furniture we replaced */
li.sp-plot-card .woocommerce-loop-product__title,
li.sp-plot-card .price,
li.sp-plot-card .button.add_to_cart_button,
li.sp-plot-card .onsale,
li.sp-plot-card .star-rating {
	display: none !important;
}

@media (max-width: 1024px) {
	ul.products {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 767px) {
	ul.products {
		grid-template-columns: 1fr;
		gap: var(--sp-3);
	}

	.sp-plot-card__media img {
		height: 200px;
	}
}

/* =========================================================================
   16. EXACT SPEC CORRECTIONS — values taken from the reference build
   Tokens: rounded 2px | rounded-xl 8px | rounded-full 12px
           primary #00450d | primary-container #1b5e20
           section-padding 80px | gutter 24px | container 1280px
   ========================================================================= */
:root {
	--sp-r-btn: 2px;   /* Tailwind "rounded"     = 0.125rem */
	--sp-r-card: 8px;  /* Tailwind "rounded-xl"  = 0.5rem   */
	--sp-r-pill: 12px; /* Tailwind "rounded-full"= 0.75rem  */
	--sp-outline: #c7c9c2;
	--sp-outline-variant: #c0c9bb;
	--sp-container-high: #d5ecf8;
	--sp-container-highest: #cfe6f2;
}

/* --- Card shell --- */
li.sp-plot-card {
	border: 1px solid var(--sp-outline-variant);
	border-radius: var(--sp-r-card);
	box-shadow: 0 1px 2px rgba(7, 30, 39, .05);
}

li.sp-plot-card:hover {
	box-shadow: 0 4px 6px rgba(7, 30, 39, .07);
	transform: none;
}

/* Image is h-64 = 256px, with the group-hover zoom from the reference */
.sp-plot-card__media {
	height: 256px;
	overflow: hidden;
}

.sp-plot-card__media img {
	height: 256px;
	transition: transform .5s ease;
}

li.sp-plot-card:hover .sp-plot-card__media img {
	transform: scale(1.05);
}

/* Verified pill: bg primary, inset 16px, radius 12px, label-caps */
.sp-plot-card__verified {
	top: 16px;
	left: 16px;
	background: #00450d;
	font-size: 12px;
	line-height: 16px;
	font-weight: 700;
	letter-spacing: .05em;
	padding: 4px 12px;
	border-radius: var(--sp-r-pill);
	box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
}

/* Price plate: on-surface at 80% with blur, inset 16px, radius 2px, title-sm */
.sp-plot-card__price {
	right: 16px;
	bottom: 16px;
	background: rgba(7, 30, 39, .8);
	-webkit-backdrop-filter: blur(4px);
	backdrop-filter: blur(4px);
	color: #fff;
	font-size: 20px;
	line-height: 28px;
	font-weight: 600;
	letter-spacing: 0;
	padding: 4px 12px;
	border-radius: var(--sp-r-btn);
}

/* --- Card body: p-6 = 24px --- */
.sp-plot-card__body {
	padding: 24px;
}

.sp-plot-card__title {
	font-size: 20px;
	line-height: 28px;
	font-weight: 600;
	letter-spacing: 0;
	margin: 0 0 4px;
}

.sp-plot-card__location {
	font-size: 14px;
	line-height: 20px;
	font-weight: 400;
	gap: 4px;
	margin: 0;
}

/* Meta strip: border-y, py-4, my-2 */
.sp-plot-card__meta {
	grid-template-columns: 1fr 1fr;
	gap: 16px;
	padding: 16px 0;
	margin: 8px 0;
	border-top: 1px solid var(--sp-outline-variant);
	border-bottom: 1px solid var(--sp-outline-variant);
}

.sp-plot-card__meta-col {
	gap: 0;
}

.sp-plot-card__meta-label {
	font-size: 12px;
	line-height: 16px;
	font-weight: 700;
	letter-spacing: .05em;
	color: #717a6d;
}

.sp-plot-card__meta-value {
	font-size: 14px;
	line-height: 20px;
	font-weight: 600;
	color: var(--sp-ink);
}

/* View Details: surface-container-high + outline-variant border, radius 2px */
.sp-plot-card__cta {
	background: var(--sp-container-high);
	border: 1px solid var(--sp-outline-variant);
	color: var(--sp-ink);
	font-size: 12px;
	line-height: 16px;
	font-weight: 700;
	letter-spacing: .05em;
	padding: 12px 16px;
	border-radius: var(--sp-r-btn);
	margin-top: 8px;
}

.sp-plot-card__cta:hover {
	background: var(--sp-container-highest);
	color: var(--sp-ink);
}

/* --- Buttons site-wide: radius 2px, primary #00450d --- */
.elementor-button,
.woocommerce a.button,
.woocommerce button.button,
.um-button,
.sp-plot-card__cta,
.header-main-layout-1 .ast-button {
	border-radius: var(--sp-r-btn) !important;
}

/* --- Chrome to spec --- */
.site-footer,
.ast-hfb-above-footer-wrap {
	background-color: #e6f6ff !important;
	border-top: 1px solid var(--sp-outline-variant);
}

.sp-foot-brand img {
	width: 48px;
	height: 48px;
}

.sp-foot-brand p,
.sp-foot-links a {
	font-size: 14px;
	line-height: 20px;
}

.footer-widget-area .widget-title,
.footer-widget-area h2 {
	font-size: 12px;
	line-height: 16px;
	font-weight: 700;
	letter-spacing: .05em;
	text-transform: none;
	color: var(--sp-ink);
	opacity: .5;
	margin-bottom: 8px;
}

.sp-foot-links li {
	margin-bottom: 12px;
}

/* Nav: label-caps, active underlined in primary */
.ast-builder-menu-1 .main-header-menu > .menu-item > .menu-link {
	font-size: 12px;
	line-height: 16px;
	font-weight: 500;
	letter-spacing: .05em;
	color: #41493e;
	padding-inline: 12px;
}

.ast-builder-menu-1 .main-header-menu > .menu-item.current-menu-item > .menu-link,
.ast-builder-menu-1 .main-header-menu > .menu-item.current_page_item > .menu-link {
	color: #00450d;
	font-weight: 700;
	box-shadow: inset 0 -2px 0 0 #00450d;
}

/* =========================================================================
   17. DESIGN.md RECONCILIATION (authoritative over the HTML reference)
   The reference build overrode Tailwind's radius scale (rounded = 2px) and
   introduced a label-caps token at 700/.05em. DESIGN.md defines neither:
   its DEFAULT radius is 0.25rem (4px) and its small label is label-sm at
   500/.02em. DESIGN.md wins, and it agrees with the original brief
   ("standard 4px border-radius, ROUND_FOUR").
   ========================================================================= */
:root {
	--sp-r-btn: 4px;    /* DESIGN.md rounded.DEFAULT = 0.25rem */
	--sp-r-card: 8px;   /* DESIGN.md rounded.lg      = 0.5rem  */
	--sp-r-section: 12px; /* DESIGN.md rounded.xl    = 0.75rem */
	--sp-r-pill: 9999px;  /* DESIGN.md rounded.full            */
}

/* Buttons: label-lg (14/20, 600, .01em), 40px height, 4px radius */
/* Scoped off .sp-textlink so per-widget Elementor typography can win. */
.wp-block-button__link,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.um-button,
.sp-plot-card__cta,
.sp-plot-single__agreement,
.elementor-button:not(.sp-textlink .elementor-button) {
	font-size: 14px;
	line-height: 20px;
	font-weight: 600;
	letter-spacing: .01em;
	border-radius: var(--sp-r-btn);
	min-height: 40px;
}

.sp-plot-card__cta {
	padding: 10px 16px;
}

/* Chips: Verified stays a solid issued mark, pill radius per rounded.full */
.sp-plot-card__verified,
.sp-badge {
	border-radius: var(--sp-r-pill);
}

.sp-plot-card__verified {
	font-size: 12px;
	line-height: 16px;
	font-weight: 600;
	letter-spacing: .02em;
	padding: 5px 12px;
}

/* Small labels: label-sm (12/16, 500, .02em) */
.sp-plot-card__meta-label,
.sp-plot-specs dt,
.footer-widget-area .widget-title,
.footer-widget-area h2 {
	font-size: 12px;
	line-height: 16px;
	font-weight: 500;
	letter-spacing: .02em;
	text-transform: none;
}

/* Nav uses label-lg rather than the reference's caps treatment */
.ast-builder-menu-1 .main-header-menu > .menu-item > .menu-link {
	font-size: 14px;
	line-height: 20px;
	font-weight: 600;
	letter-spacing: .01em;
}

/* Price plate: title-sm is not in DESIGN.md; nearest is headline-md at 24/32.
   Held at 20px so it does not outweigh the card title. */
.sp-plot-card__price {
	border-radius: var(--sp-r-btn);
}

/* Cards + inputs to DESIGN.md radii */
li.sp-plot-card,
.sp-card,
.sp-panel {
	border-radius: var(--sp-r-card);
}

input[type="text"],
input[type="email"],
input[type="password"],
input[type="tel"],
input[type="number"],
input[type="date"],
select,
textarea {
	border-radius: var(--sp-r-btn);
	border-color: var(--sp-outline-variant);
}

/* Hero container: large component radius does not apply to full-bleed */
.sp-plot-single__media {
	border-radius: var(--sp-r-card);
}

/* =========================================================================
   18. SITE HEADER — final
   Logo mark + wordmark left, nav centre, search + action right.
   Wordmark hides below 544px so the mark and the action button keep the row.
   ========================================================================= */
.site-header .ast-site-identity {
	padding: 0;
}

.site-header .site-logo-img {
	padding-right: 12px;
}

.site-header .custom-logo-link img,
.site-header .site-logo-img img {
	border-radius: 50%;
}

.site-title,
.site-title a {
	font-family: var(--sp-font);
	font-size: 24px;
	line-height: 32px;
	font-weight: 600;
	letter-spacing: -.01em;
	color: #00450d;
	text-decoration: none;
}

.site-title a:hover {
	color: #1b5e20;
}

/* Keep the wordmark to two words per line at narrow desktop widths */
.ast-site-title-wrap .site-title {
	max-width: 190px;
}

/* Search icon sits at label weight, not Astra's default sizing */
.ast-header-search .astra-search-icon {
	font-size: 18px;
	color: #41493e;
}

.ast-header-search .astra-search-icon:hover {
	color: #00450d;
}

/* Action button: primary, 4px radius per DESIGN.md */
.ast-header-button-1 .ast-custom-button {
	font-family: var(--sp-font);
	font-size: 14px;
	line-height: 20px;
	font-weight: 600;
	letter-spacing: .01em;
	background-color: #00450d;
	color: #fff;
	padding: 10px 24px;
	border-radius: 4px;
	box-shadow: 0 1px 2px rgba(7, 30, 39, .05);
}

.ast-header-button-1 .ast-custom-button:hover {
	background-color: #1b5e20;
	color: #fff;
}

/* =========================================================================
   19. ACTIVE NAV UNDERLINE
   Astra's menu link fills the full header bar height, so a bottom border or
   inset shadow lands either flush against the text or all the way down at
   the bar edge. Positioning from the link's vertical centre puts a fixed
   gap under the text regardless of header height.
   ========================================================================= */
.ast-builder-menu-1 .main-header-menu > .menu-item > .menu-link {
	position: relative;
	box-shadow: none;
}

.ast-builder-menu-1 .main-header-menu > .menu-item.current-menu-item > .menu-link,
.ast-builder-menu-1 .main-header-menu > .menu-item.current_page_item > .menu-link,
.ast-builder-menu-1 .main-header-menu > .menu-item.current-menu-ancestor > .menu-link {
	box-shadow: none;
}

.ast-builder-menu-1 .main-header-menu > .menu-item.current-menu-item > .menu-link::after,
.ast-builder-menu-1 .main-header-menu > .menu-item.current_page_item > .menu-link::after,
.ast-builder-menu-1 .main-header-menu > .menu-item.current-menu-ancestor > .menu-link::after {
	content: "";
	position: absolute;
	left: 12px;
	right: 12px;
	top: calc(50% + 16px);
	height: 2px;
	background-color: #00450d;
	border-radius: 1px;
}

/* Text link ("View All Listings"): no chrome, so the Elementor widget's own
   typography and icon settings govern appearance. */
.sp-textlink .elementor-button {
	background-color: transparent;
	border: 0;
	box-shadow: none;
	min-height: 0;
}

.sp-textlink .elementor-button:hover,
.sp-textlink .elementor-button:focus {
	background-color: transparent;
	box-shadow: none;
}

.sp-textlink .elementor-button-icon svg,
.sp-textlink .elementor-button-icon i {
	vertical-align: middle;
}

/* Notice panels: heading carries the semantic colour, the panel itself stays
   a plain tinted card with a hairline. No accent bars. */
.sp-panel--checklist h3,
.sp-panel--checklist h4 {
	color: #7A4E00;
	font-size: 16px;
	line-height: 24px;
	font-weight: 600;
	margin: 0 0 8px;
}

.sp-panel--risk {
	border: 1px solid #F0D6D4;
}

.sp-panel--solution {
	border: 1px solid #CFE0CF;
}

/* =========================================================================
   20. PLOT DETAIL ACTIONS — equal-height, baseline-aligned pair
   WooCommerce wraps Add to Cart in a <form>, so the form (not the button)
   becomes the flex item. Without this the two actions size and sit
   independently, which is why one rode higher than the other.
   ========================================================================= */
.sp-plot-single__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: 12px;
}

.sp-plot-single__actions form.cart {
	display: flex;
	align-items: stretch;
	flex: 1 1 200px;
	margin: 0;
	padding: 0;
}

.sp-plot-single__actions .single_add_to_cart_button,
.sp-plot-single__agreement {
	flex: 1 1 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	height: 48px;
	padding: 0 24px;
	margin: 0;
	font-size: 14px;
	line-height: 20px;
	font-weight: 600;
	letter-spacing: .01em;
	border-radius: var(--sp-r-btn);
	box-sizing: border-box;
	text-align: center;
	white-space: nowrap;
}

.sp-plot-single__agreement {
	flex: 1 1 200px;
	border: 1px solid var(--sp-navy-700);
	background-color: transparent;
	color: var(--sp-navy-700);
	text-decoration: none;
}

.sp-plot-single__agreement:hover {
	background-color: var(--sp-navy-050);
	color: var(--sp-navy-900);
}

.sp-plot-single__actions .single_add_to_cart_button {
	border: 1px solid #00450d !important;
}

/* Gallery: remove the empty strip Woo leaves under the image */
.sp-plot-single__media .woocommerce-product-gallery,
.sp-plot-single__media .woocommerce-product-gallery__wrapper,
.sp-plot-single__media figure {
	margin: 0;
	padding: 0;
	line-height: 0;
}

.sp-plot-single__media .flex-control-thumbs {
	margin: 0;
	padding: 8px;
	line-height: normal;
}

.sp-plot-single__media .woocommerce-product-gallery__trigger {
	top: 12px;
	right: 12px;
}

@media (max-width: 767px) {
	.sp-plot-single__actions .single_add_to_cart_button,
	.sp-plot-single__agreement,
	.sp-plot-single__actions form.cart {
		flex: 1 1 100%;
		white-space: normal;
	}
}

/* =========================================================================
   21. NOTICES — verification status
   Reads as a notification rather than a tinted block: white card, hairline,
   and a filled icon disc carrying the semantic colour. No accent bars.
   ========================================================================= */
.sp-notice {
	display: flex;
	align-items: flex-start;
	gap: 14px;
	background: var(--sp-card);
	border: 1px solid var(--sp-line);
	border-radius: var(--sp-r-card);
	padding: 18px 20px;
	box-shadow: 0 1px 2px rgba(7, 30, 39, .04);
}

.sp-notice__icon {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border-radius: 50%;
}

.sp-notice__body {
	flex: 1 1 auto;
	min-width: 0;
}

.sp-notice__title {
	font-size: 15px;
	line-height: 22px;
	font-weight: 600;
	color: var(--sp-ink);
	margin: 0 0 4px;
}

.sp-notice__text {
	font-size: 14px;
	line-height: 21px;
	color: var(--sp-ink-muted);
	margin: 0;
}

.sp-notice__list {
	margin: 6px 0 0;
	padding: 0;
	list-style: none;
}

.sp-notice__list li {
	position: relative;
	font-size: 14px;
	line-height: 21px;
	color: var(--sp-ink-muted);
	padding-left: 18px;
	margin-bottom: 3px;
}

.sp-notice__list li::before {
	content: "";
	position: absolute;
	left: 2px;
	top: 9px;
	width: 5px;
	height: 5px;
	border-radius: 50%;
	background: var(--sp-green-700);
}

.sp-notice__meta {
	font-size: 13px;
	line-height: 19px;
	color: #6B7570;
	margin: 10px 0 0;
	padding-top: 10px;
	border-top: 1px solid var(--sp-line);
}

/* Verified */
.sp-notice--ok {
	border-color: #C3DCC5;
	background: #F6FBF6;
}

.sp-notice--ok .sp-notice__icon {
	background: var(--sp-green-700);
	color: #fff;
}

/* Not verified — deliberately the louder of the two */
.sp-notice--warn {
	border-color: #E2C48A;
	background: #FFFDF7;
}

.sp-notice--warn .sp-notice__icon {
	background: #8A4006;
	color: #fff;
}

.sp-notice--warn .sp-notice__title {
	color: #7A3E06;
}

@media (max-width: 767px) {
	.sp-notice {
		padding: 16px;
		gap: 12px;
	}

	.sp-notice__icon {
		width: 32px;
		height: 32px;
	}
}

/* =========================================================================
   22. ELEMENTOR HEADER — keep the bar on one row
   The nav's <ul> wraps by default, so a squeezed column stacks every item
   vertically. Locking nowrap on the bar, the brand and the menu keeps the
   three regions on one line at any desktop width.
   ========================================================================= */
.sp-header-bar > .e-con-inner {
	flex-wrap: nowrap;
	align-items: center;
	gap: 24px;
}

.sp-header-bar .elementor-nav-menu {
	flex-wrap: nowrap;
	justify-content: center;
}

.sp-header-bar .elementor-nav-menu > li > a {
	white-space: nowrap;
}

/* Brand block: never break the wordmark across lines */
.sp-header-bar .elementor-widget-theme-site-title .elementor-heading-title {
	white-space: nowrap;
	margin: 0;
}

.sp-header-bar .elementor-widget-theme-site-logo img {
	border-radius: 50%;
	display: block;
}

/* Right cluster stays tight to the edge */
.sp-header-bar .elementor-widget-search-form .elementor-search-form__toggle {
	background: transparent;
}

@media (max-width: 1024px) {
	.sp-header-bar .elementor-nav-menu > li > a {
		padding-inline: 8px;
	}
}

/* Section 22 hardening: target the Elementor element ID as well as the class,
   so the header layout does not depend on a CSS class being present. */
.elementor-element-hdrBar > .e-con-inner {
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
}

.elementor-element-hdrLeft,
.elementor-element-hdrRight {
	flex: 0 0 auto;
}

.elementor-element-hdrNav {
	flex: 1 1 auto;
	min-width: 0;
	max-width: none !important;
	width: auto !important;
}

.elementor-element-hdrNav .elementor-nav-menu {
	flex-wrap: nowrap !important;
	justify-content: center;
}

.elementor-element-hdrNav .elementor-nav-menu > li > a {
	white-space: nowrap;
}

.elementor-element-hdrTitle .elementor-heading-title {
	white-space: nowrap;
	margin: 0;
}

@media (max-width: 1024px) {
	.elementor-element-hdrBar > .e-con-inner {
		gap: 12px;
	}

	.elementor-element-hdrNav {
		flex: 0 0 auto;
	}

	.elementor-element-hdrNav .elementor-nav-menu {
		flex-wrap: wrap !important;
	}
}

/* =========================================================================
   23. ELEMENTOR FOOTER — brand left, link columns right
   Elementor's per-child width control does not apply reliably to nested
   containers written outside the editor, so the three regions are sized
   with flex against their element IDs instead.
   ========================================================================= */
.elementor-element-ftBar > .e-con-inner {
	display: flex;
	flex-wrap: nowrap;
	align-items: flex-start;
	justify-content: space-between;
	gap: 48px;
}

.elementor-element-ftBrand {
	flex: 1 1 34%;
	max-width: 360px;
	min-width: 0;
}

.elementor-element-ftLegal,
.elementor-element-ftRes {
	flex: 0 0 auto;
	min-width: 150px;
}

/* Push the two link columns together at the right edge */
.elementor-element-ftLegal {
	margin-left: auto;
}

.elementor-element-ftBar .elementor-icon-list-items {
	margin: 0;
	padding: 0;
}

.elementor-element-ftBar .elementor-icon-list-item > a {
	font-size: 14px;
	line-height: 20px;
	color: var(--sp-ink);
	text-decoration: none;
}

.elementor-element-ftBar .elementor-icon-list-item > a:hover {
	color: var(--sp-green-700);
	text-decoration: underline;
}

/* Column headings sit quieter than the links they label */
.elementor-element-ftLegal h4,
.elementor-element-ftRes h4 {
	margin: 0 0 4px;
	opacity: .55;
	text-transform: none;
}

.elementor-element-ftBrand p {
	margin: 0;
}

@media (max-width: 1024px) {
	.elementor-element-ftBar > .e-con-inner {
		flex-wrap: wrap;
		gap: 32px;
	}

	.elementor-element-ftBrand {
		flex: 1 1 100%;
		max-width: none;
	}

	.elementor-element-ftLegal {
		margin-left: 0;
	}

	.elementor-element-ftLegal,
	.elementor-element-ftRes {
		flex: 1 1 40%;
	}
}

/* =========================================================================
   24. LAND SHOP ARCHIVE (Elementor template 1035)
   Elementor's per-child width control does not apply to containers created
   outside the editor, so the two columns are sized with flex against their
   element IDs. Same pattern as the header and footer.
   ========================================================================= */
.elementor-element-433c61b > .e-con-inner {
	display: flex;
	flex-wrap: nowrap;
	align-items: flex-start;
	gap: 32px;
}

.elementor-element-117ec77 {
	flex: 0 0 264px;
	max-width: 264px;
	min-width: 0;
	position: sticky;
	top: 24px;
}

.elementor-element-7dd8854 {
	flex: 1 1 auto;
	min-width: 0;
}

/* --- Filter groups: left aligned, tight, scannable --- */
.elementor-element-117ec77 .e-filter {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 2px;
	margin: 0 0 20px;
}

.elementor-element-117ec77 .e-filter-item {
	display: block;
	width: 100%;
	text-align: left;
	background: transparent;
	border: 0;
	border-radius: var(--sp-r-btn);
	padding: 7px 10px;
	margin: 0;
	font-family: var(--sp-font);
	font-size: 14px;
	line-height: 20px;
	font-weight: 400;
	color: var(--sp-ink);
	cursor: pointer;
	transition: background-color .15s ease, color .15s ease;
}

.elementor-element-117ec77 .e-filter-item:hover {
	background: var(--sp-surface-2);
	color: var(--sp-green-700);
}

.elementor-element-117ec77 .e-filter-item[aria-pressed="true"] {
	background: var(--sp-green-700);
	color: #fff;
	font-weight: 600;
}

/* Group labels sit above each filter block */
.elementor-element-117ec77 .elementor-widget-taxonomy-filter {
	margin-bottom: 4px;
}

.elementor-element-117ec77 .elementor-widget-heading {
	margin-bottom: 8px;
}

@media (max-width: 1024px) {
	.elementor-element-117ec77 {
		flex: 0 0 220px;
		max-width: 220px;
	}
}

@media (max-width: 767px) {
	.elementor-element-433c61b > .e-con-inner {
		flex-wrap: wrap;
		gap: 24px;
	}

	.elementor-element-117ec77 {
		flex: 1 1 100%;
		max-width: none;
		position: static;
	}

	.elementor-element-117ec77 .e-filter {
		flex-direction: row;
		flex-wrap: wrap;
		gap: 6px;
	}

	.elementor-element-117ec77 .e-filter-item {
		width: auto;
		border: 1px solid var(--sp-line);
	}
}

/* =========================================================================
   25. OUTFIT EVERYWHERE
   Astra, Elementor and the plugins each set their own stacks. This is the
   single catch-all so nothing falls back to a system font.
   ========================================================================= */
html body,
body h1, body h2, body h3, body h4, body h5, body h6,
body p, body a, body span, body li, body dt, body dd, body label, body th, body td,
body input, body select, body textarea, body button,
.elementor-widget-container,
.elementor-heading-title,
.elementor-button,
.elementor-nav-menu,
.elementor-icon-list-item,
.woocommerce,
.woocommerce-page,
.um, .um-form,
.forminator-ui,
.wpcf7,
.site-title,
.widget,
.e-filter,
.e-filter-item {
	font-family: 'Outfit', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;
}

/* Icon fonts must keep their own family or glyphs render as letters */
.material-symbols-outlined,
[class^="eicon-"], [class*=" eicon-"],
[class^="fa-"], [class*=" fa-"],
.fa, .fas, .far, .fab,
.ast-icon, .ast-icon *,
i[class*="icon"],
.dashicons, .dashicons-before::before,
.woocommerce .star-rating,
.woocommerce .star-rating span,
.um-faicon-times, [class*="um-faicon"],
[class*="forminator-icon"] {
	font-family: inherit;
}

.material-symbols-outlined {
	font-family: 'Material Symbols Outlined' !important;
}

.dashicons, .dashicons-before::before {
	font-family: dashicons !important;
}

.fa, .fas, [class*=" fa-"]:not(.e-font-icon-svg) {
	font-family: 'Font Awesome 5 Free' !important;
}

.fab {
	font-family: 'Font Awesome 5 Brands' !important;
}

.woocommerce .star-rating,
.woocommerce .star-rating span {
	font-family: star !important;
}

[class*="um-faicon"] {
	font-family: FontAwesome !important;
}

/* =========================================================================
   26. LAND SHOP GRID — two per row
   The archive sits beside a filter sidebar, so two wider cards read better
   than three cramped ones. The home page listings row stays at three.
   ========================================================================= */
.woocommerce ul.products,
.woocommerce-page ul.products,
body.post-type-archive-product ul.products,
body.tax-product_cat ul.products,
body.tax-pa_tenure ul.products,
body.tax-pa_district ul.products {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

/* Wider cards can carry a taller image without looking letterboxed */
body.post-type-archive-product .sp-plot-card__media,
body.tax-product_cat .sp-plot-card__media {
	height: 280px;
}

body.post-type-archive-product .sp-plot-card__media img,
body.tax-product_cat .sp-plot-card__media img {
	height: 280px;
}

@media (max-width: 1024px) {

}

@media (max-width: 767px) {
	.woocommerce ul.products,
	.woocommerce-page ul.products,
	body.post-type-archive-product ul.products,
	body.tax-product_cat ul.products {
		grid-template-columns: minmax(0, 1fr);
	}

	body.post-type-archive-product .sp-plot-card__media,
	body.post-type-archive-product .sp-plot-card__media img {
		height: 220px;
	}
}

/* =========================================================================
   27. LAND SHOP FILTER SIDEBAR — bordered panel
   Astra renders the shop sidebar as #secondary .sidebar-main with each
   filter as .ast-woo-sidebar-widget. Give the panel a card treatment and
   separate the groups so it reads as a control surface, not loose links.
   ========================================================================= */
.woocommerce #secondary .sidebar-main,
.woocommerce-page #secondary .sidebar-main {
	background: var(--sp-card);
	border: 1px solid var(--sp-line);
	border-radius: var(--sp-r-card);
	padding: 20px;
	box-shadow: 0 1px 2px rgba(7, 30, 39, .04);
}

.woocommerce #secondary .ast-woo-sidebar-widget,
.woocommerce-page #secondary .ast-woo-sidebar-widget {
	padding: 0 0 16px;
	margin: 0 0 16px;
	border-bottom: 1px solid var(--sp-line);
}

.woocommerce #secondary .ast-woo-sidebar-widget:last-child,
.woocommerce-page #secondary .ast-woo-sidebar-widget:last-child {
	border-bottom: 0;
	padding-bottom: 0;
	margin-bottom: 0;
}

/* Group headings */
.woocommerce #secondary .widget-title,
.woocommerce-page #secondary .widget-title {
	font-family: var(--sp-font);
	font-size: 14px;
	line-height: 20px;
	font-weight: 600;
	letter-spacing: .01em;
	color: var(--sp-ink-muted);
	margin: 0 0 10px;
	text-transform: none;
}

/* Term rows */
.woocommerce #secondary .woocommerce-widget-layered-nav-list {
	margin: 0;
	padding: 0;
	list-style: none;
	border: 0;
}

.woocommerce #secondary .woocommerce-widget-layered-nav-list__item {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	padding: 7px 10px;
	margin: 0 0 2px;
	border: 1px solid transparent;
	border-radius: var(--sp-r-btn);
	transition: background-color .15s ease, border-color .15s ease;
}

.woocommerce #secondary .woocommerce-widget-layered-nav-list__item:hover {
	background: var(--sp-surface);
	border-color: var(--sp-line);
}

.woocommerce #secondary .woocommerce-widget-layered-nav-list__item a {
	flex: 1 1 auto;
	font-size: 14px;
	line-height: 20px;
	color: var(--sp-ink);
	text-decoration: none;
}

.woocommerce #secondary .woocommerce-widget-layered-nav-list__item .count {
	flex: 0 0 auto;
	font-size: 12px;
	color: var(--sp-ink-muted);
}

/* Selected term reads as an applied filter */
.woocommerce #secondary .woocommerce-widget-layered-nav-list__item--chosen {
	background: var(--sp-green-050);
	border-color: #CFE0CF;
}

.woocommerce #secondary .woocommerce-widget-layered-nav-list__item--chosen a {
	color: var(--sp-green-900);
	font-weight: 600;
}

/* Price slider */
.woocommerce #secondary .price_slider_wrapper {
	padding-top: 4px;
}

.woocommerce #secondary .price_slider_amount .button {
	font-size: 13px;
	padding: 8px 16px;
	min-height: 36px;
	border-radius: var(--sp-r-btn);
}

.woocommerce #secondary .price_label {
	font-size: 13px;
	color: var(--sp-ink-muted);
}

@media (max-width: 1024px) {
	.woocommerce #secondary .sidebar-main,
	.woocommerce-page #secondary .sidebar-main {
		padding: 16px;
		margin-bottom: 24px;
	}
}

/* Tokens introduced for the Land Shop card and filter controls. */
:root {
	--sp-green-950: #002204;
	--sp-card-border: #E3EBEF;
	--sp-control-border: #C3CDD2;
}
/* =========================================================================
   28. PLOT CARD — Land Shop reference
   Pills over the image, title and price on one row, two icon chips,
   outlined action. Supersedes the price-plate treatment in sections 15-16.
   ========================================================================= */
li.sp-plot-card {
	display: flex;
	flex-direction: column;
	background: var(--sp-card);
	border: 1px solid var(--sp-card-border);
	border-radius: 12px;
	overflow: hidden;
	box-shadow: 0 1px 3px rgba(7, 30, 39, .05);
}

/* --- Media --- */
.sp-plot-card__media {
	position: relative;
	line-height: 0;
	height: 200px;
	overflow: hidden;
}

.sp-plot-card__media img {
	width: 100%;
	height: 200px;
	object-fit: cover;
	display: block;
	transition: transform .5s ease;
}

li.sp-plot-card:hover .sp-plot-card__media img {
	transform: scale(1.04);
}

/* Pills, top-left, side by side */
.sp-plot-card__pills {
	position: absolute;
	top: 12px;
	left: 12px;
	display: flex;
	gap: 6px;
	line-height: 1;
}

.sp-pill {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	font-size: 12px;
	line-height: 14px;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--sp-card);
	padding: 6px 10px;
	border-radius: 4px;
	box-shadow: 0 1px 3px rgba(0, 0, 0, .18);
}

.sp-pill--verified {
	background: var(--sp-green-900);
}

.sp-pill--tenure {
	background: var(--sp-green-950);
}

/* Save control, top-right */
.sp-plot-card__save {
	position: absolute;
	top: 12px;
	right: 12px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, .88);
	color: var(--sp-ink-muted);
	cursor: pointer;
	box-shadow: 0 1px 3px rgba(0, 0, 0, .12);
	transition: color .15s ease, background-color .15s ease;
}

.sp-plot-card__save:hover {
	background: var(--sp-card);
	color: var(--sp-error);
}

/* --- Body --- */
.sp-plot-card__body {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	padding: 18px;
}

.sp-plot-card__head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 6px;
}

.sp-plot-card__title {
	font-size: 17px;
	line-height: 24px;
	font-weight: 700;
	letter-spacing: -.01em;
	margin: 0;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.sp-plot-card__title a {
	color: var(--sp-ink);
	text-decoration: none;
}

.sp-plot-card__title a:hover {
	color: var(--sp-green-700);
}

.sp-plot-card__price {
	flex: 0 0 auto;
	font-size: 17px;
	line-height: 24px;
	font-weight: 700;
	color: var(--sp-green-700);
	white-space: nowrap;
}

.sp-plot-card__location {
	display: flex;
	align-items: center;
	gap: 5px;
	font-size: 14px;
	line-height: 20px;
	color: var(--sp-ink-muted);
	margin: 0 0 16px;
}

/* --- Spec chips --- */
.sp-plot-card__chips {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 10px;
	margin-bottom: 18px;
}

.sp-chip {
	display: flex;
	align-items: center;
	gap: 8px;
	background: var(--sp-surface-2);
	border-radius: 6px;
	padding: 10px 12px;
	font-size: 14px;
	line-height: 19px;
	color: var(--sp-ink);
	min-width: 0;
}

.sp-chip svg {
	flex: 0 0 auto;
	color: var(--sp-green-700);
}

/* --- Action --- */
.sp-plot-card__cta {
	display: block;
	margin-top: auto;
	text-align: center;
	background: transparent;
	border: 1px solid var(--sp-green-900);
	color: var(--sp-ink);
	font-size: 14px;
	line-height: 20px;
	font-weight: 600;
	padding: 11px 16px;
	border-radius: 6px;
	text-decoration: none;
	transition: background-color .15s ease, color .15s ease;
}

.sp-plot-card__cta:hover {
	background: var(--sp-green-900);
	color: var(--sp-card);
}

/* Retire the old price plate and meta strip */
.sp-plot-card__meta,
.sp-plot-card__lr {
	display: none !important;
}

/* =========================================================================
   29. FILTER SIDEBAR — Land Shop reference
   WooCommerce renders layered nav as links, not checkboxes. The square is
   drawn with a pseudo-element so the control looks like the reference
   while keeping Woo's own filter behaviour intact.
   ========================================================================= */
.woocommerce #secondary .sidebar-main,
.woocommerce-page #secondary .sidebar-main {
	background: var(--sp-card);
	border: 1px solid var(--sp-card-border);
	border-radius: 12px;
	padding: 22px;
}

.woocommerce #secondary .ast-woo-sidebar-widget,
.woocommerce-page #secondary .ast-woo-sidebar-widget {
	border: 0;
	padding: 0;
	margin: 0 0 22px;
}

.woocommerce #secondary .widget-title,
.woocommerce-page #secondary .widget-title {
	font-size: 14px;
	line-height: 20px;
	font-weight: 700;
	color: var(--sp-ink);
	margin: 0 0 10px;
	text-transform: none;
	letter-spacing: 0;
}

/* Term rows as checkbox controls */
.woocommerce #secondary .woocommerce-widget-layered-nav-list__item {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 5px 0;
	margin: 0;
	border: 0;
	background: none;
}

.woocommerce #secondary .woocommerce-widget-layered-nav-list__item a {
	display: flex;
	align-items: center;
	gap: 10px;
	flex: 1 1 auto;
	font-size: 15px;
	line-height: 22px;
	color: var(--sp-ink);
	text-decoration: none;
}

.woocommerce #secondary .woocommerce-widget-layered-nav-list__item a::before {
	content: "";
	flex: 0 0 auto;
	width: 17px;
	height: 17px;
	border: 1.5px solid var(--sp-control-border);
	border-radius: 3px;
	background: var(--sp-card);
	transition: background-color .15s ease, border-color .15s ease;
}

.woocommerce #secondary .woocommerce-widget-layered-nav-list__item a:hover::before {
	border-color: var(--sp-green-700);
}

.woocommerce #secondary .woocommerce-widget-layered-nav-list__item--chosen a::before {
	background: var(--sp-green-900) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23ffffff' d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E") center / 13px no-repeat;
	border-color: var(--sp-green-900);
}

.woocommerce #secondary .woocommerce-widget-layered-nav-list__item--chosen a {
	font-weight: 600;
	color: var(--sp-ink);
}

.woocommerce #secondary .woocommerce-widget-layered-nav-list__item--chosen a::after {
	content: none;
}

.woocommerce #secondary .woocommerce-widget-layered-nav-list__item .count {
	display: none;
}

/* Counts read inline with the label, as in the reference */
.woocommerce #secondary .woocommerce-widget-layered-nav-list__item a .count,
.woocommerce #secondary .woocommerce-widget-layered-nav-list__item > .count {
	display: inline;
	font-size: 15px;
	color: var(--sp-ink);
}

/* --- Price filter --- */
.woocommerce #secondary .widget_price_filter .price_slider_wrapper {
	margin-top: 4px;
}

.woocommerce #secondary .widget_price_filter .price_slider_amount {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	align-items: center;
}

.woocommerce #secondary .widget_price_filter .price_slider_amount .button {
	flex: 1 1 100%;
	order: 3;
	background: var(--sp-green-900);
	color: var(--sp-card);
	border: 0;
	font-size: 15px;
	font-weight: 600;
	padding: 12px 16px;
	border-radius: 6px;
	min-height: 46px;
}

.woocommerce #secondary .widget_price_filter .price_slider_amount .button:hover {
	background: var(--sp-green-700);
}

.woocommerce #secondary .widget_price_filter .price_label {
	order: 2;
	flex: 1 1 auto;
	text-align: left;
	font-size: 14px;
	color: var(--sp-ink-muted);
}

.woocommerce #secondary .widget_price_filter .ui-slider {
	margin-bottom: 14px;
	background: var(--sp-card-border);
	height: 4px;
	border-radius: 2px;
}

.woocommerce #secondary .widget_price_filter .ui-slider-range {
	background: var(--sp-green-900);
}

.woocommerce #secondary .widget_price_filter .ui-slider-handle {
	background: var(--sp-green-900);
	border: 2px solid var(--sp-card);
	box-shadow: 0 1px 3px rgba(0, 0, 0, .2);
	width: 16px;
	height: 16px;
	top: -6px;
}

/* --- Pagination --- */
.woocommerce nav.woocommerce-pagination ul {
	display: flex;
	justify-content: center;
	gap: 8px;
	border: 0;
	margin: 32px 0 0;
}

.woocommerce nav.woocommerce-pagination ul li {
	border: 0;
	margin: 0;
	overflow: visible;
}

.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span {
	display: flex;
	align-items: center;
	justify-content: center;
	min-width: 40px;
	height: 40px;
	padding: 0 10px;
	border: 1px solid var(--sp-control-border);
	border-radius: 6px;
	background: var(--sp-card);
	color: var(--sp-ink);
	font-size: 15px;
	font-weight: 600;
}

.woocommerce nav.woocommerce-pagination ul li span.current {
	background: var(--sp-green-900);
	border-color: var(--sp-green-900);
	color: var(--sp-card);
}

.woocommerce nav.woocommerce-pagination ul li a:hover {
	border-color: var(--sp-green-900);
	color: var(--sp-green-900);
	background: var(--sp-card);
}

/* --- Sort control --- */
.woocommerce .woocommerce-ordering select {
	border: 1px solid var(--sp-control-border);
	border-radius: 6px;
	padding: 9px 12px;
	font-size: 14px;
	min-height: 42px;
	background-color: var(--sp-card);
}

/* =========================================================================
   30. PLOT CARD — corrections
   The price was still inheriting position:absolute from the earlier
   price-plate design, so it floated over the View Details button. Reset
   explicitly, return to three across, and tighten the scale.
   ========================================================================= */
.sp-plot-card__price {
	position: static !important;
	inset: auto !important;
	background: none !important;
	-webkit-backdrop-filter: none !important;
	backdrop-filter: none !important;
	padding: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	color: var(--sp-green-700) !important;
	font-size: 15px !important;
	line-height: 22px !important;
	font-weight: 700 !important;
}

/* Three across on the archive */
.woocommerce ul.products,
.woocommerce-page ul.products,
body.post-type-archive-product ul.products,
body.tax-product_cat ul.products,
body.tax-pa_tenure ul.products,
body.tax-pa_district ul.products {
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 20px;
}

/* --- Tighter, more professional scale --- */
.sp-plot-card__media,
.sp-plot-card__media img,
body.post-type-archive-product .sp-plot-card__media,
body.post-type-archive-product .sp-plot-card__media img,
body.tax-product_cat .sp-plot-card__media,
body.tax-product_cat .sp-plot-card__media img {
	height: 168px;
}

.sp-plot-card__body {
	padding: 14px;
}

.sp-plot-card__head {
	margin-bottom: 4px;
	gap: 10px;
}

.sp-plot-card__title {
	font-size: 15px;
	line-height: 21px;
	font-weight: 600;
}

.sp-plot-card__location {
	font-size: 13px;
	line-height: 18px;
	margin-bottom: 12px;
	gap: 4px;
}

.sp-plot-card__location svg {
	width: 13px;
	height: 13px;
}

.sp-plot-card__chips {
	gap: 8px;
	margin-bottom: 14px;
}

.sp-chip {
	gap: 6px;
	padding: 8px 9px;
	font-size: 12.5px;
	line-height: 17px;
	border-radius: 5px;
}

.sp-chip svg {
	width: 15px;
	height: 15px;
}

.sp-plot-card__cta {
	font-size: 13px;
	line-height: 18px;
	padding: 9px 14px;
	border-radius: 5px;
}

/* Pills scale down with the card */
.sp-pill {
	font-size: 12px;
	line-height: 1.3;
	padding: 5px 8px;
	gap: 4px;
}

.sp-pill svg {
	width: 11px;
	height: 11px;
}

.sp-plot-card__pills {
	top: 10px;
	left: 10px;
	gap: 5px;
}

.sp-plot-card__save {
	top: 10px;
	right: 10px;
	width: 28px;
	height: 28px;
}

.sp-plot-card__save svg {
	width: 15px;
	height: 15px;
}

@media (max-width: 1024px) {
	.woocommerce ul.products,
	.woocommerce-page ul.products,
	body.post-type-archive-product ul.products,
	body.tax-product_cat ul.products {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 767px) {
	.woocommerce ul.products,
	.woocommerce-page ul.products,
	body.post-type-archive-product ul.products,
	body.tax-product_cat ul.products {
		grid-template-columns: minmax(0, 1fr);
	}

	.sp-plot-card__media,
	.sp-plot-card__media img,
	body.post-type-archive-product .sp-plot-card__media,
	body.post-type-archive-product .sp-plot-card__media img {
		height: 200px;
	}
}

/* =========================================================================
   31. ELEMENTOR LOOP CARD
   The card is now Elementor widgets bound to dynamic tags, so the pills,
   price, location and chips arrive as .elementor-heading-title spans
   rather than the old template markup. Style the inner span, and hide any
   widget whose tag resolved to nothing.
   ========================================================================= */
.e-loop-item .sp-plot-card {
	background: var(--sp-card);
	border: 1px solid var(--sp-card-border);
	border-radius: 12px;
	overflow: hidden;
	box-shadow: 0 1px 3px rgba(7, 30, 39, .05);
	height: 100%;
}

/* Media */
.e-loop-item .sp-plot-card__media {
	position: relative;
	height: 168px;
	overflow: hidden;
	line-height: 0;
}

.e-loop-item .sp-plot-card__media .elementor-widget-theme-post-featured-image,
.e-loop-item .sp-plot-card__media figure,
.e-loop-item .sp-plot-card__media a {
	display: block;
	height: 100%;
	margin: 0;
}

.e-loop-item .sp-plot-card__media img {
	width: 100%;
	height: 168px;
	object-fit: cover;
	display: block;
}

/* Pills sit over the image */
.e-loop-item .sp-plot-card__pills {
	position: absolute;
	top: 10px;
	left: 10px;
	width: auto;
	z-index: 2;
}

.sp-pill .elementor-heading-title {
	display: inline-flex;
	align-items: center;
	font-size: 12px;
	line-height: 1.3;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--sp-card);
	padding: 5px 8px;
	border-radius: 4px;
	box-shadow: 0 1px 3px rgba(0, 0, 0, .18);
}

.sp-pill--verified .elementor-heading-title {
	background: var(--sp-green-900);
}

.sp-pill--tenure .elementor-heading-title {
	background: var(--sp-green-950);
}

/* A tag that resolved to nothing must not leave an empty chip behind */
.elementor-heading-title:empty {
	display: none;
}

.sp-pill:has(.elementor-heading-title:empty) {
	display: none;
}

/* Body */
.e-loop-item .sp-plot-card__body {
	padding: 14px;
}

.e-loop-item .sp-plot-card__head {
	margin-bottom: 4px;
	width: 100%;
}

.e-loop-item .sp-plot-card__title .elementor-heading-title {
	font-size: 15px;
	line-height: 21px;
	font-weight: 600;
	letter-spacing: -.01em;
	margin: 0;
}

.e-loop-item .sp-plot-card__title a {
	color: var(--sp-ink);
	text-decoration: none;
}

.e-loop-item .sp-plot-card__title a:hover {
	color: var(--sp-green-700);
}

.e-loop-item .sp-plot-card__price .elementor-heading-title {
	font-size: 15px;
	line-height: 21px;
	font-weight: 700;
	color: var(--sp-green-700);
	white-space: nowrap;
}

.e-loop-item .sp-plot-card__location .elementor-heading-title {
	font-size: 13px;
	line-height: 18px;
	color: var(--sp-ink-muted);
}

.e-loop-item .sp-plot-card__location {
	margin-bottom: 12px;
}

/* Chips */
.e-loop-item .sp-plot-card__chips {
	margin-bottom: 14px;
	width: 100%;
}

.e-loop-item .sp-chip {
	flex: 1 1 0;
	min-width: 0;
}

.e-loop-item .sp-chip .elementor-heading-title {
	display: block;
	background: var(--sp-surface-2);
	border-radius: 5px;
	padding: 8px 9px;
	font-size: 12.5px;
	line-height: 17px;
	font-weight: 400;
	color: var(--sp-ink);
}

/* Action */
.e-loop-item .sp-plot-card__cta .elementor-button {
	display: block;
	width: 100%;
	text-align: center;
	background: transparent;
	border: 1px solid var(--sp-green-900);
	color: var(--sp-ink);
	font-size: 13px;
	line-height: 18px;
	font-weight: 600;
	padding: 9px 14px;
	border-radius: 5px;
}

.e-loop-item .sp-plot-card__cta .elementor-button:hover {
	background: var(--sp-green-900);
	color: var(--sp-card);
}

/* Grid spacing */

/* =========================================================================
   32. ARCHIVE LAYOUT + FILTER CORRECTIONS
   Grid was overflowing the container to the right, the Filters heading was
   rendering at Elementor's default h3 scale, and an active filter gave no
   visible way to clear it.
   ========================================================================= */

/* Stop the grid pushing past the container edge */
.elementor-element-433c61b > .e-con-inner {
	display: flex;
	flex-wrap: nowrap;
	align-items: flex-start;
	gap: 28px;
	max-width: 100%;
}

.elementor-element-7dd8854 {
	flex: 1 1 auto;
	min-width: 0;
	max-width: 100%;
	overflow: visible;
}

/* Width only. Column count is Elementor's Loop Grid control, not ours. */
.elementor-element-7dd8854 .elementor-loop-container {
	width: 100%;
	max-width: 100%;
}

.elementor-element-7dd8854 .e-loop-item {
	min-width: 0;
	max-width: 100%;
}

/* Filters panel */
.elementor-element-117ec77 {
	flex: 0 0 250px;
	max-width: 250px;
	min-width: 0;
}

/* Spacing only. Size and weight are Elementor widget controls. */
.sp-filter-title .elementor-heading-title {
	margin: 0 0 4px;
}

/* Group labels above each filter block */
.elementor-element-117ec77 .elementor-widget-taxonomy-filter .e-filter-heading,
.elementor-element-117ec77 .elementor-widget-taxonomy-filter > .elementor-widget-container > h1,
.elementor-element-117ec77 .elementor-widget-taxonomy-filter > .elementor-widget-container > h2,
.elementor-element-117ec77 .elementor-widget-taxonomy-filter > .elementor-widget-container > h3 {
	font-size: 13px;
	line-height: 18px;
	font-weight: 700;
	color: var(--sp-ink-muted);
	margin: 0 0 6px;
}

/* Filter buttons */
.elementor-element-117ec77 .e-filter {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 1px;
	margin: 0 0 16px;
}

.elementor-element-117ec77 .e-filter-item {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	width: 100%;
	text-align: left;
	background: transparent;
	border: 1px solid transparent;
	border-radius: 5px;
	padding: 7px 10px;
	margin: 0;
	font-size: 13.5px;
	line-height: 19px;
	font-weight: 400;
	color: var(--sp-ink);
	cursor: pointer;
}

.elementor-element-117ec77 .e-filter-item:hover {
	background: var(--sp-surface);
	border-color: var(--sp-card-border);
}

/* Active filter: green, with a clear affordance on the right */
.elementor-element-117ec77 .e-filter-item[aria-pressed="true"] {
	background: var(--sp-green-900);
	border-color: var(--sp-green-900);
	color: var(--sp-card);
	font-weight: 600;
	padding-right: 8px;
}

.elementor-element-117ec77 .e-filter-item[aria-pressed="true"]::after {
	content: "";
	flex: 0 0 auto;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: rgba(255, 255, 255, .22) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23ffffff' d='M19 6.4 17.6 5 12 10.6 6.4 5 5 6.4 10.6 12 5 17.6 6.4 19 12 13.4 17.6 19 19 17.6 13.4 12z'/%3E%3C/svg%3E") center / 10px no-repeat;
}

.elementor-element-117ec77 .e-filter-item[aria-pressed="true"]:hover::after {
	background-color: rgba(255, 255, 255, .38);
}

@media (max-width: 1024px) {
	.elementor-element-117ec77 {
		flex: 0 0 210px;
		max-width: 210px;
	}
}

@media (max-width: 767px) {
	.elementor-element-433c61b > .e-con-inner {
		flex-wrap: wrap;
		gap: 20px;
	}

	.elementor-element-117ec77 {
		flex: 1 1 100%;
		max-width: none;
	}

	.elementor-element-117ec77 .e-filter {
		flex-direction: row;
		flex-wrap: wrap;
		gap: 6px;
	}

	.elementor-element-117ec77 .e-filter-item {
		width: auto;
		border-color: var(--sp-card-border);
	}
}

/* =========================================================================
   33. BUTTON SYSTEM — final
   One place governing every button state. Earlier sections forced a solid
   green background on all .elementor-button with !important, which meant
   outlined variants rendered as a filled button inside a bordered box.
   ========================================================================= */

/* Shared mechanics: consistent metrics, motion and focus ring. */
.elementor-button,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.um-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-family: var(--sp-font);
	font-weight: 600;
	letter-spacing: .01em;
	border-radius: 6px;
	cursor: pointer;
	text-decoration: none;
	transition: background-color .18s ease, border-color .18s ease, color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.elementor-button:focus-visible,
.woocommerce a.button:focus-visible,
.woocommerce button.button:focus-visible,
.um-button:focus-visible {
	outline: none;
	box-shadow: 0 0 0 3px var(--sp-surface-2), 0 0 0 5px var(--sp-green-700);
}

.elementor-button:active,
.woocommerce a.button:active,
.woocommerce button.button:active {
	transform: translateY(1px);
}

/* --- Card action: outlined, fills on hover --- */
.e-loop-item .sp-plot-card__cta .elementor-button,
a.sp-plot-card__cta {
	background-color: transparent !important;
	border: 1px solid var(--sp-green-900) !important;
	color: var(--sp-ink) !important;
	font-size: 13px !important;
	line-height: 18px !important;
	padding: 10px 14px !important;
	width: 100%;
	box-shadow: none !important;
}

.e-loop-item .sp-plot-card__cta .elementor-button:hover,
a.sp-plot-card__cta:hover {
	background-color: var(--sp-green-900) !important;
	border-color: var(--sp-green-900) !important;
	color: var(--sp-ink-invert) !important;
	box-shadow: 0 2px 8px rgba(0, 69, 13, .22) !important;
}

/* --- Primary: solid, lifts slightly on hover --- */
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.um-button,
.single_add_to_cart_button {
	background-color: var(--sp-green-900);
	border: 1px solid var(--sp-green-900);
	color: var(--sp-ink-invert);
}

.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.um-button:hover,
.single_add_to_cart_button:hover {
	background-color: var(--sp-green-700);
	border-color: var(--sp-green-700);
	color: var(--sp-ink-invert);
	box-shadow: 0 3px 10px rgba(0, 69, 13, .24);
}

/* --- Filter buttons: quiet until active --- */
.elementor-element-117ec77 .e-filter-item {
	transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}

.elementor-element-117ec77 .e-filter-item:hover {
	background: var(--sp-surface-2);
	border-color: transparent;
	color: var(--sp-green-900);
}

.elementor-element-117ec77 .e-filter-item[aria-pressed="true"]:hover {
	background: var(--sp-green-700);
	border-color: var(--sp-green-700);
	color: var(--sp-ink-invert);
}

/* --- Header action --- */
.elementor-element-hdrBtn .elementor-button:hover {
	box-shadow: 0 3px 10px rgba(0, 69, 13, .24);
}

/* Save control on the card */
.sp-plot-card__save:hover {
	transform: scale(1.06);
}

/* =========================================================================
   34. LOOP CARD — wrapper reset and equal heights
   .sp-plot-card__cta sits on the Elementor widget, so styling it as a
   button drew a second border around the real one. The wrapper carries no
   chrome; only .elementor-button inside it does.
   ========================================================================= */
.e-loop-item .sp-plot-card__cta,
.e-loop-item .elementor-widget-button.sp-plot-card__cta {
	background: none !important;
	border: 0 !important;
	box-shadow: none !important;
	padding: 0 !important;
	margin-top: auto;
	width: 100%;
}

.e-loop-item .sp-plot-card__cta .elementor-button-wrapper {
	width: 100%;
}

/* Equal card heights regardless of how the chips wrap */
.e-loop-item,
.e-loop-item > .elementor-element {
	height: 100%;
}

.e-loop-item .sp-plot-card {
	display: flex;
	flex-direction: column;
	height: 100%;
}

.e-loop-item .sp-plot-card__body {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
}

/* Chips share the row evenly and wrap text inside their own box */
.e-loop-item .sp-plot-card__chips {
	align-items: stretch;
}

.e-loop-item .sp-chip .elementor-heading-title {
	display: flex;
	align-items: center;
	height: 100%;
	min-height: 36px;
}

/* Title truncates rather than pushing the price out of the card */
.e-loop-item .sp-plot-card__title {
	min-width: 0;
	overflow: hidden;
}

.e-loop-item .sp-plot-card__title .elementor-heading-title {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.e-loop-item .sp-plot-card__price {
	flex: 0 0 auto;
}

/* =========================================================================
   35. RESPONSIVE — aligned to Elementor's breakpoints
   Only Elementor's three active breakpoints are used here: laptop 1366,
   tablet 1024, mobile 767. Anything sized per-device belongs in the
   Elementor editor's device controls, not in this file. What remains are
   overflow guards and rules for markup Elementor does not own (the
   WooCommerce product grid rendered by the [products] shortcode).
   ========================================================================= */

/* Never scroll sideways on a phone. Not breakpoint-specific. */
html,
body {
	max-width: 100%;
	overflow-x: hidden;
}

img,
video,
iframe,
table {
	max-width: 100%;
}

/* Long plot titles may wrap once the card is no longer in a tight 3-up row. */
@media (max-width: 1024px) {
	.sp-plot-card__title,
	.e-loop-item .sp-plot-card__title .elementor-heading-title {
		white-space: normal;
	}
}

@media (max-width: 767px) {
	/* Two chips side by side get too narrow to read on a phone. */
	.sp-plot-card__chips,
	.e-loop-item .sp-plot-card__chips {
		grid-template-columns: minmax(0, 1fr);
	}

	/* Title and price share a row; on a narrow card let the price drop. */
	.sp-plot-card__head,
	.e-loop-item .sp-plot-card__head {
		flex-wrap: wrap;
		gap: 2px;
	}

	/* Burger dropdown: Elementor sets when it appears, this sets how it looks. */
	.elementor-element-hdrNav .elementor-nav-menu--dropdown {
		border: 1px solid var(--sp-card-border);
		border-radius: 0 0 10px 10px;
		box-shadow: 0 8px 24px rgba(7, 30, 39, .12);
	}
}

/* =========================================================================
   36. SINGLE PLOT — Elementor template 1032
   Gallery left, summary right. Every value arrives through a dynamic tag,
   so a spec row whose tag resolves to nothing must disappear rather than
   print an empty row.
   ========================================================================= */
.sp-single-top > .e-con-inner {
	display: flex;
	flex-wrap: nowrap;
	align-items: flex-start;
	gap: 40px;
}

.sp-single-media {
	flex: 0 0 50%;
	max-width: 50%;
	min-width: 0;
	position: sticky;
	top: 24px;
}

.sp-single-summary {
	flex: 1 1 auto;
	min-width: 0;
}

/* Gallery */
.sp-single-media .woocommerce-product-gallery {
	width: 100% !important;
	margin: 0;
	float: none;
}

.sp-single-media .woocommerce-product-gallery__image img {
	border-radius: 10px;
	display: block;
}

.sp-single-media .flex-control-thumbs {
	display: flex;
	gap: 8px;
	margin: 8px 0 0;
	padding: 0;
	list-style: none;
}

.sp-single-media .flex-control-thumbs li {
	flex: 0 0 auto;
	width: 72px;
	margin: 0;
}

.sp-single-media .flex-control-thumbs img {
	border-radius: 6px;
	border: 1px solid var(--sp-card-border);
}

/* Summary head */
.sp-single-pills .elementor-widget {
	width: auto;
}

/* Size and weight come from the global H1. Spacing only here. */
.sp-single-title .elementor-heading-title {
	margin: 0;
}

.sp-single-location .elementor-heading-title {
	font-size: 15px;
	line-height: 22px;
}

.sp-single-price .elementor-heading-title {
	font-size: 22px;
	line-height: 29px;
	font-weight: 700;
}

/* Spec table: alternating rows inside a single bordered block */
.sp-spec-table {
	border: 1px solid var(--sp-card-border);
	border-radius: 10px;
	overflow: hidden;
}

.sp-spec-row {
	width: 100%;
	border-bottom: 1px solid var(--sp-card-border);
	background: var(--sp-card);
}

.sp-spec-row:nth-child(odd) {
	background: var(--sp-surface);
}

.sp-spec-row:last-child {
	border-bottom: 0;
}

.sp-spec-label .elementor-heading-title {
	font-size: 13.5px;
	line-height: 20px;
	font-weight: 400;
}

.sp-spec-value .elementor-heading-title {
	font-size: 14px;
	line-height: 20px;
	font-weight: 600;
	text-align: right;
}

/* A row whose dynamic tag returned nothing collapses entirely */
.sp-spec-row:has(.sp-spec-value .elementor-heading-title:empty) {
	display: none;
}

/* Actions */
.sp-single-actions {
	width: 100%;
}

.sp-single-actions .elementor-widget-woocommerce-product-add-to-cart {
	flex: 1 1 200px;
	min-width: 0;
}

.sp-single-actions form.cart {
	display: flex;
	margin: 0;
	padding: 0;
	width: 100%;
}

.sp-single-actions .single_add_to_cart_button {
	width: 100%;
	min-height: 48px;
	font-size: 14px;
}

.sp-btn-agreement {
	flex: 1 1 200px;
	min-width: 0;
}

.sp-btn-agreement .elementor-button {
	width: 100%;
	min-height: 48px;
	background: transparent;
	border: 1px solid var(--sp-navy-700);
	color: var(--sp-navy-700);
	font-size: 14px;
}

.sp-btn-agreement .elementor-button:hover {
	background: var(--sp-navy-700);
	color: var(--sp-ink-invert);
}

.sp-single-notice {
	width: 100%;
}

@media (max-width: 1024px) {
	.sp-single-top > .e-con-inner {
		gap: 28px;
	}

	.sp-single-price .elementor-heading-title {
		font-size: 23px;
	}
}

@media (max-width: 767px) {
	.sp-single-top > .e-con-inner {
		flex-wrap: wrap;
		gap: 20px;
	}

	.sp-single-media {
		flex: 1 1 100%;
		max-width: 100%;
		position: static;
	}

	.sp-single-actions .elementor-widget-woocommerce-product-add-to-cart,
	.sp-btn-agreement {
		flex: 1 1 100%;
	}
}

/* =========================================================================
   37. SINGLE PLOT — polish
   Pills are now styled globally (section 31), so they render correctly
   outside the loop too. These are the remaining single-page refinements.
   ========================================================================= */

/* Pills: same size wherever they appear, never inherit a heading scale */
.sp-single-pills {
	width: auto;
	margin-bottom: 2px;
}

.sp-single-pills .elementor-widget {
	width: auto;
	max-width: none;
}

/* Summary rhythm: tighten the stack so it reads as one block */
.sp-single-summary > .e-con-inner,
.sp-single-summary {
	gap: 10px;
}

.sp-single-location .elementor-heading-title {
	color: var(--sp-ink-muted);
	font-weight: 400;
}

/* Price sits close under the location, with air before the table */
.sp-single-price {
	margin-bottom: 6px;
}

.sp-single-price .elementor-heading-title {
	letter-spacing: -.01em;
}

/* Spec table: quieter labels, aligned values, comfortable rows */
.sp-spec-table {
	margin-top: 2px;
}

.sp-spec-row {
	min-height: 44px;
}

.sp-spec-label .elementor-heading-title,
.sp-spec-value .elementor-heading-title {
	margin: 0;
}

/* Gallery: match the card radius and stop Woo's float layout */
.sp-single-media .woocommerce-product-gallery__wrapper,
.sp-single-media figure {
	margin: 0;
}

.sp-single-media .woocommerce-product-gallery__trigger {
	top: 14px;
	right: 14px;
	z-index: 3;
}

/* Actions sit clear of the table */
.sp-single-actions {
	margin-top: 6px;
}

/* Tabs and related below the fold */
.sp-single-below .woocommerce-tabs ul.tabs {
	border-bottom: 1px solid var(--sp-card-border);
	padding: 0;
	margin: 0 0 20px;
}

.sp-single-below .woocommerce-tabs ul.tabs li {
	border: 0;
	background: none;
	margin: 0 18px 0 0;
	padding: 0;
}

.sp-single-below .woocommerce-tabs ul.tabs li a {
	padding: 10px 0;
	font-size: 14px;
	font-weight: 600;
	color: var(--sp-ink-muted);
}

.sp-single-below .woocommerce-tabs ul.tabs li.active a {
	color: var(--sp-green-900);
	box-shadow: inset 0 -2px 0 0 var(--sp-green-900);
}

.sp-single-below .related > h2,
.sp-single-below .upsells > h2 {
	margin: 0 0 18px;
}

/* =========================================================================
   38. HEADING SCALE — catch WooCommerce's own headings
   Woo prints "Related products", "Description" and tab panel headings
   through its templates, outside Elementor's global typography. Bring them
   onto the same scale so nothing shouts.
   ========================================================================= */
.woocommerce .related > h2,
.woocommerce .upsells > h2,
.woocommerce .cross-sells > h2,
.woocommerce-tabs .panel > h2,
.woocommerce #reviews h2,
.sp-single-below .related > h2 {
	font-family: var(--sp-font);
	font-size: 16px;
	line-height: 23px;
	font-weight: 600;
	letter-spacing: 0;
	color: var(--sp-ink);
	margin: 0 0 18px;
}

/* Related product card titles follow the loop card, not the page scale */
.woocommerce .related ul.products li.product .woocommerce-loop-product__title,
.woocommerce .related ul.products li.product h2 {
	font-size: 15px;
	line-height: 21px;
	font-weight: 600;
}

/* Cart, checkout and account headings sit on the same scale */
.woocommerce-cart h1,
.woocommerce-checkout h1,
.woocommerce-account h1,
.woocommerce h2,
.woocommerce h3 {
	font-family: var(--sp-font);
}

.woocommerce-checkout h3,
.woocommerce-cart h2,
.woocommerce-account h2 {
	font-size: 16px;
	line-height: 23px;
	font-weight: 600;
}

@media (max-width: 767px) {
	.woocommerce .related > h2,
	.woocommerce-tabs .panel > h2,
	.sp-single-below .related > h2 {
		font-size: 16px;
		line-height: 23px;
	}
}

/* =========================================================================
   39. E-LAND AGREEMENT PAGE
   Hero, four-step explainer, then the form beside a sticky helper column.
   The Forminator form is third-party markup, so it needs restyling to sit
   inside the design rather than beside it.
   ========================================================================= */

/* --- Hero --- */
.ela-hero {
	position: relative;
	overflow: hidden;
}

.ela-eyebrow .elementor-heading-title {
	display: inline-block;
	font-size: 12px;
	line-height: 14px;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--sp-green-050, #d9f0d6);
	background: rgba(255, 255, 255, .12);
	padding: 6px 12px;
	border-radius: 999px;
}

.ela-h1 .elementor-heading-title {
	font-size: 34px;
	line-height: 42px;
	font-weight: 700;
	letter-spacing: -.02em;
	color: #fff;
	margin: 0;
}

.ela-sub {
	max-width: 620px;
	margin: 0 auto;
}

.ela-sub p {
	font-size: 15.5px;
	line-height: 1.6;
	color: var(--sp-ink-muted);
	margin: 0;
}

/* --- Steps --- */
.ela-h2 .elementor-heading-title {
	font-size: 20px;
	line-height: 28px;
	font-weight: 600;
	color: var(--sp-ink);
	margin: 0;
}

.ela-steps {
	align-items: stretch;
}

/* --- Form / aside row --- */
.ela-row > .e-con-inner {
	display: flex;
	flex-wrap: nowrap;
	align-items: flex-start;
	gap: 28px;
}

.ela-formcol {
	flex: 1 1 auto;
	min-width: 0;
}

.ela-aside {
	flex: 0 0 300px;
	max-width: 300px;
	min-width: 0;
	position: sticky;
	top: 24px;
}

.ela-cardh .elementor-heading-title {
	font-size: 15px;
	line-height: 22px;
	font-weight: 600;
	color: var(--sp-ink);
	margin: 0;
}

.ela-checklist .elementor-icon-list-item {
	align-items: flex-start;
	font-size: 13.5px;
	line-height: 20px;
	color: var(--sp-ink-muted);
}

.ela-checklist .elementor-icon-list-icon {
	display: none;
}

.ela-checklist .elementor-icon-list-text {
	position: relative;
	padding-left: 22px;
}

.ela-checklist .elementor-icon-list-text::before {
	content: "";
	position: absolute;
	left: 0;
	top: 3px;
	width: 14px;
	height: 14px;
	border-radius: 3px;
	background: var(--sp-green-900) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23ffffff' d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E") center / 10px no-repeat;
}

.ela-helpcard p {
	font-size: 13.5px;
	line-height: 20px;
	color: var(--sp-ink-muted);
	margin: 0;
}

.ela-helpbtn .elementor-button {
	width: 100%;
	background: transparent;
	border: 1px solid var(--sp-green-900);
	color: var(--sp-green-900);
	font-size: 13px;
	padding: 9px 14px;
}

.ela-helpbtn .elementor-button:hover {
	background: var(--sp-green-900);
	color: #fff;
}

@media (max-width: 1024px) {
	.ela-aside {
		flex: 0 0 260px;
		max-width: 260px;
	}

	.ela-h1 .elementor-heading-title {
		font-size: 28px;
		line-height: 36px;
	}
}

@media (max-width: 767px) {
	.ela-row > .e-con-inner {
		flex-wrap: wrap;
		gap: 20px;
	}

	.ela-aside {
		flex: 1 1 100%;
		max-width: none;
		position: static;
	}

	.ela-h1 .elementor-heading-title {
		font-size: 24px;
		line-height: 31px;
	}
}

/* =========================================================================
   40. FORMINATOR — E-Land Agreement form
   Forminator ships its own opinionated styles. These bring the four-step
   form onto the design system without touching plugin files.
   ========================================================================= */
.ela-form .forminator-ui {
	font-family: var(--sp-font) !important;
}

/* Step indicator */
.ela-form .forminator-pagination-steps {
	display: flex;
	gap: 6px;
	margin: 0 0 24px;
	padding: 0 0 20px;
	border-bottom: 1px solid var(--sp-card-border);
}

.ela-form .forminator-step {
	flex: 1 1 0;
	min-width: 0;
	text-align: left;
}

.ela-form .forminator-step .forminator-step-label {
	font-size: 12.5px !important;
	line-height: 18px;
	font-weight: 600;
	color: var(--sp-ink-muted) !important;
}

.ela-form .forminator-step.forminator-step-active .forminator-step-label {
	color: var(--sp-green-900) !important;
}

.ela-form .forminator-step .forminator-step-dot,
.ela-form .forminator-step-bar {
	background: var(--sp-card-border) !important;
}

.ela-form .forminator-step.forminator-step-active .forminator-step-dot,
.ela-form .forminator-step.forminator-step-complete .forminator-step-dot {
	background: var(--sp-green-900) !important;
}

/* Field labels */
.ela-form .forminator-label {
	font-size: 15px !important;
	line-height: 1.4 !important;
	font-weight: 600 !important;
	color: var(--sp-ink) !important;
	margin-bottom: 6px !important;
}

.ela-form .forminator-required {
	color: var(--sp-error) !important;
}

/* Inputs, selects, textareas */
.ela-form .forminator-input,
.ela-form .forminator-textarea,
.ela-form select.forminator-select2,
.ela-form .forminator-select .select2-selection {
	font-family: var(--sp-font) !important;
	font-size: 16px !important;
	line-height: 1.5 !important;
	color: var(--sp-ink) !important;
	background: var(--sp-card) !important;
	border: 1px solid var(--sp-control-border) !important;
	border-radius: 6px !important;
	min-height: 44px !important;
	padding: 11px 13px !important;
	box-shadow: none !important;
	transition: border-color .15s ease, box-shadow .15s ease;
}

.ela-form .forminator-textarea {
	min-height: 96px !important;
}

.ela-form .forminator-input:focus,
.ela-form .forminator-textarea:focus,
.ela-form .forminator-select .select2-selection:focus {
	border-color: var(--sp-green-700) !important;
	box-shadow: 0 0 0 3px rgba(27, 94, 32, .12) !important;
	outline: none !important;
}

.ela-form .forminator-input::placeholder,
.ela-form .forminator-textarea::placeholder {
	color: #667069 !important;
}

/* Description text under fields */
.ela-form .forminator-description {
	font-size: 14px !important;
	line-height: 1.5 !important;
	color: var(--sp-ink-muted) !important;
	margin-top: 5px !important;
}

/* Section headings inside the form */
.ela-form .forminator-title,
.ela-form h3,
.ela-form h4 {
	font-size: 18px !important;
	line-height: 23px !important;
	font-weight: 600 !important;
	color: var(--sp-ink) !important;
	margin: 4px 0 2px !important;
}

.ela-form .forminator-subtitle {
	font-size: 15px !important;
	line-height: 1.55 !important;
	color: var(--sp-ink-muted) !important;
}

/* Upload fields read as drop zones */
.ela-form .forminator-file-upload,
.ela-form .forminator-multi-upload {
	border: 1px dashed var(--sp-control-border) !important;
	border-radius: 8px !important;
	background: var(--sp-surface) !important;
	padding: 18px !important;
}

.ela-form .forminator-button-upload {
	background: var(--sp-surface-2) !important;
	border: 1px solid var(--sp-card-border) !important;
	color: var(--sp-ink) !important;
	font-size: 15px !important;
	font-weight: 600 !important;
	border-radius: 6px !important;
	padding: 9px 14px !important;
}

/* Checkboxes and radios */
.ela-form .forminator-checkbox,
.ela-form .forminator-radio {
	font-size: 15px !important;
	line-height: 1.5 !important;
	color: var(--sp-ink) !important;
	align-items: flex-start !important;
}

.ela-form .forminator-checkbox-box,
.ela-form .forminator-radio-bullet {
	border-color: var(--sp-control-border) !important;
}

.ela-form input:checked + .forminator-checkbox-box,
.ela-form input:checked + .forminator-radio-bullet {
	background: var(--sp-green-900) !important;
	border-color: var(--sp-green-900) !important;
}

/* Navigation buttons */
.ela-form .forminator-button {
	font-family: var(--sp-font) !important;
	font-size: 14px !important;
	font-weight: 600 !important;
	border-radius: 6px !important;
	min-height: 46px !important;
	padding: 12px 22px !important;
	transition: background-color .18s ease, color .18s ease;
}

.ela-form .forminator-button-submit,
.ela-form .forminator-button-next {
	background: var(--sp-green-900) !important;
	border: 1px solid var(--sp-green-900) !important;
	color: #fff !important;
}

.ela-form .forminator-button-submit:hover,
.ela-form .forminator-button-next:hover {
	background: var(--sp-green-700) !important;
	border-color: var(--sp-green-700) !important;
}

.ela-form .forminator-button-back,
.ela-form .forminator-button-prev {
	background: transparent !important;
	border: 1px solid var(--sp-control-border) !important;
	color: var(--sp-ink) !important;
}

.ela-form .forminator-button-back:hover,
.ela-form .forminator-button-prev:hover {
	background: var(--sp-surface) !important;
}

/* Validation and response messages */
.ela-form .forminator-error-message {
	font-size: 14px !important;
	color: var(--sp-error) !important;
	margin-top: 5px !important;
}

.ela-form .forminator-input.forminator-has_error,
.ela-form .forminator-textarea.forminator-has_error {
	border-color: var(--sp-error) !important;
}

.ela-form .forminator-response-message {
	font-size: 14px !important;
	line-height: 21px !important;
	border-radius: 8px !important;
	padding: 14px 16px !important;
}

/* Row rhythm */
.ela-form .forminator-row {
	margin-bottom: 16px !important;
}

@media (max-width: 767px) {
	.ela-form .forminator-pagination-steps {
		flex-wrap: wrap;
		gap: 4px;
	}

	.ela-form .forminator-button {
		width: 100%;
	}
}

/* =========================================================================
   41. FORMINATOR — corrections
   The step indicator and navigation buttons are injected by Forminator's
   JavaScript after load, so the server-rendered markup gives no classes to
   target. These selectors match what actually ends up in the DOM.
   ========================================================================= */

/* --- Buttons: every Forminator button is readable by default --- */
.ela-form .forminator-button,
.ela-form button.forminator-button {
	font-family: var(--sp-font) !important;
	font-size: 16px !important;
	font-weight: 600 !important;
	border-radius: 6px !important;
	min-height: 46px !important;
	padding: 12px 26px !important;
	background-color: var(--sp-green-900) !important;
	border: 1px solid var(--sp-green-900) !important;
	color: #ffffff !important;
	text-shadow: none !important;
	opacity: 1 !important;
	transition: background-color .18s ease, border-color .18s ease;
}

.ela-form .forminator-button:hover,
.ela-form button.forminator-button:hover {
	background-color: var(--sp-green-700) !important;
	border-color: var(--sp-green-700) !important;
	color: #ffffff !important;
}

/* Any nested label inherits the white, whatever wrapper Forminator adds */
.ela-form .forminator-button * {
	color: #ffffff !important;
}

/* Back / previous is the quiet one */
.ela-form .forminator-button-back,
.ela-form .forminator-button-prev,
.ela-form [class*="forminator-button"][class*="back"],
.ela-form [class*="forminator-button"][class*="prev"] {
	background-color: transparent !important;
	border: 1px solid var(--sp-control-border) !important;
	color: var(--sp-ink) !important;
}

.ela-form .forminator-button-back *,
.ela-form .forminator-button-prev *,
.ela-form [class*="forminator-button"][class*="back"] *,
.ela-form [class*="forminator-button"][class*="prev"] * {
	color: var(--sp-ink) !important;
}

.ela-form .forminator-button-back:hover,
.ela-form .forminator-button-prev:hover {
	background-color: var(--sp-surface) !important;
	border-color: var(--sp-green-900) !important;
}

/* --- Section headings inside the form --- */
.ela-form .forminator-field-html h1,
.ela-form .forminator-field-html h2,
.ela-form .forminator-field-html h3,
.ela-form .forminator-field-html h4,
.ela-form .forminator-field-html h5,
.ela-form .forminator-field-html strong {
	color: var(--sp-ink) !important;
}

.ela-form .forminator-field-html p {
	font-size: 13.5px;
	line-height: 20px;
	color: var(--sp-ink-muted);
}

/* Currency suffix and date fields align with the inputs */
.ela-form .forminator-input-with-suffix .forminator-suffix {
	font-size: 13px !important;
	color: var(--sp-ink-muted) !important;
}

/* Select2 needs its own height to match text inputs */
.ela-form .select2-container .select2-selection--single,
.ela-form .select2-container .select2-selection--multiple {
	min-height: 44px !important;
	border: 1px solid var(--sp-control-border) !important;
	border-radius: 6px !important;
	padding: 6px 10px !important;
}

.ela-form .select2-container .select2-selection__rendered {
	font-size: 14px !important;
	color: var(--sp-ink) !important;
	line-height: 30px !important;
}

/* Upload zone */
.ela-form .forminator-multi-upload {
	border: 1px dashed var(--sp-control-border) !important;
	border-radius: 8px !important;
	background: var(--sp-surface) !important;
	padding: 20px !important;
	text-align: center;
}

.ela-form .forminator-multi-upload-message {
	font-size: 15px !important;
	color: var(--sp-ink-muted) !important;
}

.ela-form .forminator-icon-upload {
	color: var(--sp-green-700) !important;
}

/* =========================================================================
   42. E-LAND AGREEMENT — refined layout
   Supersedes section 39. Hero with trust row, numbered step cards, form
   beside a sticky three-card sidebar.
   ========================================================================= */

/* --- Hero --- */
.ela-hero {
	position: relative;
	overflow: hidden;
}

.ela-hero > .e-con-inner {
	position: relative;
	z-index: 1;
}

.ela-eyebrow .elementor-heading-title {
	display: inline-block;
	font-size: 12px;
	line-height: 1.3;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--sp-green-700);
	background: var(--sp-surface-2);
	border: 1px solid #CFE0CF;
	padding: 6px 13px;
	border-radius: 999px;
	margin: 0;
}

.ela-h1 .elementor-heading-title {
	margin: 0;
}

.ela-sub {
	max-width: 620px;
	margin: 0;
}

.ela-sub p {
	font-size: 15.5px;
	line-height: 1.6;
	color: var(--sp-ink-muted);
	margin: 0;
}

/* Trust row sits inline under the intro */
.ela-trust {
	margin-top: 6px;
}

.ela-trust .elementor-icon-list-items {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-start;
	gap: 8px 24px;
	margin: 0;
	padding: 0;
}

.ela-trust .elementor-icon-list-icon {
	display: none;
}

.ela-trust .elementor-icon-list-item {
	margin: 0;
}

.ela-trust .elementor-icon-list-text {
	position: relative;
	padding-left: 22px;
	font-size: 13px;
	line-height: 1.5;
	color: var(--sp-ink-muted);
}

.ela-trust .elementor-icon-list-text::before {
	content: "";
	position: absolute;
	left: 0;
	top: 2px;
	width: 15px;
	height: 15px;
	border-radius: 50%;
	background: var(--sp-green-900) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23ffffff' d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E") center / 10px no-repeat;
}

/* --- Steps --- */
.ela-h2 .elementor-heading-title {
	font-size: 21px;
	line-height: 29px;
	font-weight: 600;
	color: var(--sp-ink);
	margin: 0;
}

.ela-secsub p {
	font-size: 14px;
	line-height: 21px;
	color: var(--sp-ink-muted);
	margin: 0 0 10px;
}

.ela-steps {
	align-items: stretch;
}

.ela-step {
	flex: 1 1 0 !important;
	width: auto !important;
	max-width: none !important;
	min-width: 180px;
	transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}

.ela-step:hover {
	border-color: var(--sp-green-700);
	box-shadow: 0 4px 14px rgba(7, 30, 39, .07);
	transform: translateY(-2px);
}

.ela-stepnum .elementor-heading-title {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	border-radius: 50%;
	background: var(--sp-green-900);
	color: #ffffff;
	font-size: 13px;
	font-weight: 700;
	line-height: 1;
}

.ela-steph .elementor-heading-title {
	font-size: 15px;
	line-height: 21px;
	font-weight: 600;
	color: var(--sp-ink);
	margin: 0;
}

.ela-stept p {
	font-size: 13.5px;
	line-height: 20px;
	color: var(--sp-ink-muted);
	margin: 0;
}

/* --- Form row --- */
.ela-row > .e-con-inner {
	display: flex;
	flex-wrap: nowrap;
	align-items: flex-start;
	gap: 28px;
}

.ela-formcol {
	flex: 1 1 auto;
	min-width: 0;
	box-shadow: 0 1px 3px rgba(7, 30, 39, .05);
}

.ela-aside {
	flex: 0 0 300px;
	max-width: 300px;
	min-width: 0;
	position: sticky;
	top: 24px;
}

.ela-cardh .elementor-heading-title {
	font-size: 14px;
	line-height: 20px;
	font-weight: 700;
	color: var(--sp-ink);
	margin: 0;
}

.ela-cardt p {
	font-size: 13px;
	line-height: 19px;
	color: var(--sp-ink-muted);
	margin: 0;
}

.ela-checklist .elementor-icon-list-icon {
	display: none;
}

.ela-checklist .elementor-icon-list-item {
	margin: 0;
	align-items: flex-start;
}

.ela-checklist .elementor-icon-list-text {
	position: relative;
	padding-left: 24px;
	font-size: 13px;
	line-height: 19px;
	color: var(--sp-ink-muted);
}

.ela-checklist .elementor-icon-list-text::before {
	content: "";
	position: absolute;
	left: 0;
	top: 2px;
	width: 15px;
	height: 15px;
	border-radius: 4px;
	background: var(--sp-green-900) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23ffffff' d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E") center / 10px no-repeat;
}

.ela-helpbtn .elementor-button {
	width: 100%;
	background: transparent !important;
	border: 1px solid var(--sp-green-900) !important;
	color: var(--sp-green-900) !important;
	font-size: 13px !important;
	min-height: 40px !important;
	padding: 9px 14px !important;
}

.ela-helpbtn .elementor-button:hover {
	background: var(--sp-green-900) !important;
	color: #ffffff !important;
}

@media (max-width: 1024px) {
	.ela-aside {
		flex: 0 0 264px;
		max-width: 264px;
	}

	.ela-h1 .elementor-heading-title {
		font-size: 27px;
		line-height: 35px;
	}
}

@media (max-width: 767px) {
	.ela-row > .e-con-inner {
		flex-wrap: wrap;
		gap: 20px;
	}

	.ela-aside {
		flex: 1 1 100%;
		max-width: none;
		position: static;
	}

	.ela-h1 .elementor-heading-title {
		font-size: 23px;
		line-height: 30px;
	}

	.ela-trust .elementor-icon-list-items {
		justify-content: flex-start;
		gap: 6px 16px;
	}
}@media (max-width: 767px) {.ela-next {
		min-width: 0;
	}
}

/* =========================================================================
   44. FORM STEP INDICATOR
   Forminator renders a row of <button.forminator-step> holding
   .forminator-step-label and .forminator-step-dot, separated by
   .forminator-break rules, with .forminator-current on the active step.

   The break elements are hidden: Forminator emits one before the first and
   after the last step as well as between them, which consumed most of the
   row width and forced the descriptions to wrap raggedly. A single rule is
   drawn behind the markers instead.

   Descriptions are generated content keyed by position — there is no markup
   to hold them. If the steps change, update these to match.
   ========================================================================= */
.ela-form .forminator-pagination-steps {
	display: flex !important;
	align-items: stretch;
	gap: 0;
	margin: 0 0 28px !important;
	padding: 6px 0 22px !important;
	border-bottom: 1px solid var(--sp-card-border);
	position: relative;
}

/* Forminator's own connectors sit outside the steps and unbalance the row */
.ela-form .forminator-break {
	display: none !important;
}

/* Each step: marker on top, name, then description */
.ela-form .forminator-step {
	flex: 1 1 0;
	min-width: 0;
	display: flex !important;
	flex-direction: column;
	align-items: center;
	gap: 0;
	background: none !important;
	border: 0 !important;
	padding: 0 10px !important;
	margin: 0 !important;
	position: relative;
	cursor: pointer;
	text-align: center;
}

/* One continuous rule behind the markers */
.ela-form .forminator-step::before {
	content: "";
	position: absolute;
	top: 8px;
	left: 0;
	right: 0;
	height: 2px;
	background: var(--sp-card-border);
	z-index: 0;
}

.ela-form .forminator-step:first-of-type::before {
	left: 50%;
}

.ela-form .forminator-step:last-of-type::before {
	right: 50%;
}

/* Marker */
.ela-form .forminator-step-dot {
	order: 1;
	position: relative;
	z-index: 1;
	display: block !important;
	width: 18px !important;
	height: 18px !important;
	margin: 0 0 10px !important;
	border-radius: 50% !important;
	background: var(--sp-card) !important;
	border: 2px solid var(--sp-card-border) !important;
	box-shadow: 0 0 0 4px var(--sp-card) !important;
	transition: background-color .2s ease, border-color .2s ease;
}

/* Name */
.ela-form .forminator-step-label {
	order: 2;
	font-family: var(--sp-font) !important;
	font-size: 13px !important;
	line-height: 18px !important;
	font-weight: 600 !important;
	color: var(--sp-ink-muted) !important;
	transition: color .2s ease;
}

/* Description, one line where it fits */
.ela-form .forminator-step::after {
	order: 3;
	margin-top: 4px;
	font-family: var(--sp-font);
	font-size: 13px;
	line-height: 1.4;
	font-weight: 400;
	color: var(--sp-ink-muted);
	opacity: .8;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	max-width: 100%;
}

.ela-form .forminator-step:nth-of-type(1)::after { content: "Names and IDs"; }
.ela-form .forminator-step:nth-of-type(2)::after { content: "Location and size"; }
.ela-form .forminator-step:nth-of-type(3)::after { content: "Price and dates"; }
.ela-form .forminator-step:nth-of-type(4)::after { content: "Uploads"; }

/* Current step */
.ela-form .forminator-step.forminator-current .forminator-step-label {
	color: var(--sp-green-900) !important;
	font-weight: 700 !important;
}

.ela-form .forminator-step.forminator-current .forminator-step-dot {
	background: var(--sp-green-900) !important;
	border-color: var(--sp-green-900) !important;
}

/* Completed steps precede the current one */
.ela-form .forminator-step:has(~ .forminator-current) .forminator-step-label {
	color: var(--sp-ink) !important;
}

.ela-form .forminator-step:has(~ .forminator-current) .forminator-step-dot {
	background: var(--sp-green-700) !important;
	border-color: var(--sp-green-700) !important;
}

.ela-form .forminator-step:has(~ .forminator-current)::before {
	background: var(--sp-green-700);
}

@media (max-width: 767px) {
	.ela-form .forminator-step::after {
		display: none;
	}

	.ela-form .forminator-step {
		padding: 0 4px !important;
	}

	.ela-form .forminator-step-label {
		font-size: 13px !important;
		line-height: 1.4 !important;
	}

	.ela-form .forminator-step-dot {
		width: 15px !important;
		height: 15px !important;
		margin-bottom: 8px !important;
	}

	.ela-form .forminator-step::before {
		top: 6px;
	}
}

/* -------------------------------------------------------------------------
   44b. Specificity overrides for the step indicator
   Forminator ships these at
     .forminator-ui.forminator-custom-form[data-design=default]
       .forminator-pagination-steps .forminator-step
   which sets height:15px and a row layout. That fixed height is what made
   the buttons collapse and the labels overlap. Matching that specificity
   here rather than escalating !important across the whole block.
   ------------------------------------------------------------------------- */
.ela-form .forminator-ui.forminator-custom-form .forminator-pagination-steps {
	display: flex !important;
	width: 100% !important;
	align-items: stretch !important;
	margin: 0 0 28px !important;
}

.ela-form .forminator-ui.forminator-custom-form .forminator-pagination-steps .forminator-step {
	height: auto !important;
	min-height: 0 !important;
	flex: 1 1 0 !important;
	width: auto !important;
	max-width: none !important;
	min-width: 0 !important;
	display: flex !important;
	flex-direction: column !important;
	align-items: center !important;
	justify-content: flex-start !important;
	padding: 0 10px !important;
	margin: 0 !important;
	overflow: visible !important;
}

.ela-form .forminator-ui.forminator-custom-form .forminator-pagination-steps .forminator-step-label {
	flex: 0 0 auto !important;
	order: 2 !important;
	width: 100% !important;
	overflow: visible !important;
	white-space: nowrap !important;
	text-overflow: ellipsis !important;
	margin: 0 !important;
}

.ela-form .forminator-ui.forminator-custom-form .forminator-pagination-steps .forminator-step-dot {
	order: 1 !important;
	flex: 0 0 auto !important;
	width: 18px !important;
	height: 18px !important;
	margin: 0 0 10px !important;
}

.ela-form .forminator-ui.forminator-custom-form .forminator-pagination-steps .forminator-break {
	display: none !important;
}

/* =========================================================================
   45. E-LAND AGREEMENT — process section

   Spacing follows an 8px grid, with gaps set by how closely related two
   elements are rather than uniformly: the timing pill sits tight to its
   heading because it labels it, while the icon is separated more because
   it belongs to the card as a whole.

     card padding      24px
     icon → pill       20px
     pill → heading     8px
     heading → body     8px
     card → card       24px

   Line heights are ratios, not fixed pixels, so they hold if a size is
   changed: 1.35 for headings (tight enough to read as one unit) and 1.6
   for body copy (open enough for multi-line reading).
   ========================================================================= */
.ela-nxeyebrow .elementor-heading-title {
	font-size: 12px;
	line-height: 1.3;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--sp-green-700);
	margin: 0;
}

.ela-nxrow {
	width: 100%;
	align-items: stretch;
}

.ela-nx {
	flex: 1 1 0 !important;
	width: auto !important;
	max-width: none !important;
	min-width: 0;
	box-shadow: 0 1px 3px rgba(7, 30, 39, .05);
	transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease;
}

.ela-nx:hover {
	transform: translateY(-3px);
	border-color: var(--sp-green-700);
	box-shadow: 0 10px 24px rgba(7, 30, 39, .09);
}

/* Icon: belongs to the card, so it sits apart from the text block */
.ela-nxicon {
	width: auto !important;
	margin: 0 0 20px !important;
}

.ela-nxicon .elementor-widget-container,
.ela-nxicon .elementor-icon-wrapper {
	text-align: left !important;
	line-height: 0;
}

.ela-nxicon .elementor-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	border-radius: 12px;
	background: var(--sp-surface-2);
	transition: background-color .22s ease;
}

.ela-nx:hover .ela-nxicon .elementor-icon {
	background: var(--sp-green-900);
}

.ela-nx:hover .ela-nxicon .elementor-icon svg,
.ela-nx:hover .ela-nxicon .elementor-icon i {
	color: var(--sp-card) !important;
	fill: var(--sp-card) !important;
}

/* Timing pill labels the heading, so it sits close to it */
.ela-nxwhen {
	width: auto !important;
	margin: 0 0 8px !important;
}

.ela-nxwhen .elementor-heading-title {
	display: inline-block;
	font-size: 12px;
	line-height: 1.3;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--sp-green-700);
	background: var(--sp-surface-2);
	padding: 5px 10px;
	border-radius: 999px;
	margin: 0;
}

.ela-nxh {
	margin: 0 0 8px !important;
}

.ela-nxh .elementor-heading-title {
	font-size: 16px;
	line-height: 1.35;
	font-weight: 600;
	letter-spacing: -.005em;
	color: var(--sp-ink);
	margin: 0;
}

.ela-nxt {
	margin: 0 !important;
}

.ela-nxt p {
	font-size: 14px;
	line-height: 1.6;
	color: var(--sp-ink-muted);
	margin: 0;
}

/* Section heading block: subtitle sits close to the heading it explains */
.ela-nxsec .ela-h2 {
	margin: 4px 0 0 !important;
}

.ela-nxsec .ela-secsub {
	margin: 0 !important;
	max-width: 620px;
}

.ela-nxsec .ela-secsub p {
	font-size: 14px;
	line-height: 1.6;
	color: var(--sp-ink-muted);
	margin: 0;
}

@media (max-width: 1024px) {
	.ela-nxt p,
	.ela-nxsec .ela-secsub p {
		font-size: 13.5px;
	}

	.ela-nxh .elementor-heading-title {
		font-size: 15px;
	}
}

@media (max-width: 767px) {
	.ela-nx {
		flex: 1 1 100% !important;
	}

	.ela-nxicon {
		margin-bottom: 16px !important;
	}

	.ela-nxicon .elementor-icon {
		width: 40px;
		height: 40px;
		border-radius: 10px;
	}
}

/* =========================================================================
   46. E-LAND AGREEMENT - legal notice card

   A bordered card rather than a bare strip of text. The icon anchors the
   left edge and the copy is capped at a comfortable reading measure, so
   the paragraph does not run the full width of a 1280px container.

     card padding      26px
     icon -> copy      18px
     heading -> body    8px
     paragraph gap     10px
   ========================================================================= */
.ela-ntsec {
	border-top: 1px solid var(--sp-card-border);
}

.ela-ntcard {
	width: 100%;
	box-shadow: 0 1px 3px rgba(7, 30, 39, .04);
}

/* Icon: fixed disc, never shrinks as the copy reflows */
.ela-nticon {
	flex: 0 0 auto !important;
	width: auto !important;
	margin: 0 !important;
}

.ela-nticon .elementor-widget-container,
.ela-nticon .elementor-icon-wrapper {
	text-align: left !important;
	line-height: 0;
}

.ela-nticon .elementor-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border-radius: 10px;
	background: var(--sp-surface);
	border: 1px solid var(--sp-card-border);
}

.ela-ntbody {
	flex: 1 1 auto !important;
	min-width: 0;
}

.ela-nth .elementor-heading-title {
	font-size: 14px;
	line-height: 1.4;
	font-weight: 700;
	color: var(--sp-ink);
	margin: 0;
}

.ela-ntt p {
	font-size: 13.5px;
	line-height: 1.65;
	color: var(--sp-ink-muted);
	margin: 0 0 10px;
	max-width: 78ch;
}

.ela-ntt p:last-child {
	margin-bottom: 0;
}

/* Statute names carry weight without shouting */
.ela-ntt strong {
	font-weight: 600;
	color: var(--sp-ink);
}

@media (max-width: 767px) {
	.ela-ntcard {
		flex-wrap: wrap;
	}

	.ela-nticon .elementor-icon {
		width: 36px;
		height: 36px;
	}

	.ela-ntt p {
		font-size: 13px;
	}
}

/* =========================================================================
   47. CONTACT PAGE
   Split card: green panel of contact routes on the left, form on the right.
   Contact Form 7 markup is styled here since CF7 exposes no design panel.
   ========================================================================= */
.ct-card {
	width: 100%;
	overflow: hidden;
	box-shadow: 0 2px 8px rgba(7, 30, 39, .06);
}

.ct-left {
	flex: 0 0 42% !important;
	width: auto !important;
	max-width: 42% !important;
	min-width: 0;
}

.ct-right {
	flex: 1 1 auto !important;
	min-width: 0;
}

/* --- Left panel --- */
.ct-left .ct-eyebrow .elementor-heading-title {
	display: inline-block;
	color: #CDEBC9;
	background: rgba(255, 255, 255, .14);
	border: 1px solid rgba(255, 255, 255, .18);
	padding: 6px 13px;
	border-radius: 999px;
	text-transform: uppercase;
}

.ct-lefth .elementor-heading-title {
	color: #ffffff;
	margin: 0;
}

.ct-leftt p {
	color: rgba(255, 255, 255, .82);
	margin: 0;
}

/* Contact routes */
.ct-way {
	width: 100%;
}

.ct-wayicon {
	flex: 0 0 auto !important;
	width: auto !important;
}

.ct-wayicon .elementor-widget-container,
.ct-wayicon .elementor-icon-wrapper {
	text-align: left !important;
	line-height: 0;
}

.ct-wayicon .elementor-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	border-radius: 10px;
	background: rgba(255, 255, 255, .12);
}

.ct-waytext {
	flex: 1 1 auto !important;
	min-width: 0;
}

.ct-wayh .elementor-heading-title {
	color: #ffffff;
	margin: 0;
}

.ct-wayval .elementor-heading-title {
	color: #CDEBC9;
	word-break: break-word;
}

.ct-waynote .elementor-heading-title {
	color: rgba(255, 255, 255, .62);
}

/* --- Right panel --- */
.ct-righth .elementor-heading-title {
	color: var(--sp-ink);
	margin: 0;
}

.ct-rightt p {
	color: var(--sp-ink-muted);
	margin: 0 0 18px;
}

/* --- Contact Form 7 --- */
.ct-form .wpcf7 {
	margin: 0;
}

.ct-form .sp-cf-row {
	display: flex;
	flex-wrap: wrap;
	gap: 0 16px;
}

.ct-form .sp-cf-row .sp-cf-field {
	flex: 1 1 200px;
	min-width: 0;
}

.ct-form .sp-cf-field {
	margin: 0 0 16px;
}

.ct-form label {
	display: block;
	font-family: var(--sp-font);
	font-size: 15px;
	line-height: 1.4;
	font-weight: 600;
	color: var(--sp-ink);
	margin-bottom: 6px;
}

.ct-form .sp-req {
	color: var(--sp-error);
}

.ct-form input[type="text"],
.ct-form input[type="email"],
.ct-form input[type="tel"],
.ct-form select,
.ct-form textarea {
	width: 100%;
	font-family: var(--sp-font);
	font-size: 16px;
	line-height: 1.5;
	color: var(--sp-ink);
	background: var(--sp-card);
	border: 1px solid var(--sp-control-border);
	border-radius: 6px;
	padding: 12px 14px;
	min-height: 48px;
	box-shadow: none;
	transition: border-color .15s ease, box-shadow .15s ease;
}

.ct-form textarea {
	min-height: 130px;
	resize: vertical;
}

.ct-form input:focus,
.ct-form select:focus,
.ct-form textarea:focus {
	border-color: var(--sp-green-700);
	box-shadow: 0 0 0 3px rgba(27, 94, 32, .12);
	outline: none;
}

.ct-form ::placeholder {
	color: #667069;
}

.ct-form .sp-cf-note {
	font-size: 14px;
	line-height: 1.55;
	color: var(--sp-ink-muted);
	margin: 0 0 18px;
}

.ct-form .sp-cf-submit {
	margin: 0;
}

.ct-form input[type="submit"] {
	width: 100%;
	font-family: var(--sp-font);
	font-size: 16px;
	font-weight: 600;
	color: #ffffff;
	background: var(--sp-green-900);
	border: 1px solid var(--sp-green-900);
	border-radius: 6px;
	padding: 14px 24px;
	min-height: 50px;
	cursor: pointer;
	transition: background-color .18s ease, box-shadow .18s ease;
}

.ct-form input[type="submit"]:hover {
	background: var(--sp-green-700);
	border-color: var(--sp-green-700);
	box-shadow: 0 3px 10px rgba(0, 69, 13, .22);
}

/* CF7 response and validation messages */
.ct-form .wpcf7-not-valid-tip {
	font-size: 14px;
	color: var(--sp-error);
	margin-top: 5px;
}

.ct-form .wpcf7-not-valid {
	border-color: var(--sp-error);
}

.ct-form .wpcf7-response-output {
	font-size: 15px;
	line-height: 1.55;
	border-radius: 8px;
	border-width: 1px;
	padding: 14px 16px;
	margin: 18px 0 0;
}

.ct-form .wpcf7-spinner {
	margin: 0 0 0 10px;
}

@media (max-width: 1024px) {
	.ct-left {
		flex: 0 0 46% !important;
		max-width: 46% !important;
	}
}

@media (max-width: 767px) {
	.ct-left,
	.ct-right {
		flex: 1 1 100% !important;
		max-width: 100% !important;
	}

	.ct-form .sp-cf-row {
		gap: 0;
	}

	.ct-form .sp-cf-row .sp-cf-field {
		flex: 1 1 100%;
	}
}

49. LAND SHOP — mobile gutters
   The shop archive is rendered by Astra's plain container rather than an
   Elementor template, so it uses Astra's default padding. Every Elementor
   page drops to a 16px gutter on mobile; this brings the archive into
   line so the left and right edges match across the site.
   ========================================================================= */
@media (max-width: 767px) {
	body.post-type-archive-product .ast-container,
	body.tax-product_cat .ast-container,
	body.tax-product_tag .ast-container,
	body.tax-pa_tenure .ast-container,
	body.tax-pa_district .ast-container,
	body.woocommerce-page .ast-container,
	body.single-product .ast-container {
		padding-left: 16px;
		padding-right: 16px;
	}

	/* The inner content wrapper adds its own gutter on top of the container */
	body.post-type-archive-product #primary,
	body.tax-product_cat #primary,
	body.post-type-archive-product #content .ast-container > .site-content,
	body.woocommerce-page #primary {
		padding-left: 0;
		padding-right: 0;
	}

	/* Filter panel sits flush with the grid below it */
	body.post-type-archive-product #secondary,
	body.tax-product_cat #secondary {
		padding-left: 0;
		padding-right: 0;
	}

	.woocommerce #secondary .sidebar-main,
	.woocommerce-page #secondary .sidebar-main {
		padding: 16px;
	}
}

@media (max-width: 480px) {
	body.post-type-archive-product .ast-container,
	body.tax-product_cat .ast-container,
	body.woocommerce-page .ast-container {
		padding-left: 14px;
		padding-right: 14px;
	}
}

/* -------------------------------------------------------------------------
   
51b. Checkout reassurance, placed at the point of hesitation
   The notice sits immediately above Confirm Reservation rather than in a
   sidebar the buyer has already scrolled past.
   ------------------------------------------------------------------------- */
.sp-checkout-notice {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	background: var(--sp-surface-2);
	border: 1px solid #CFE0CF;
	border-radius: 10px;
	padding: 16px;
	margin: 0 0 16px;
}

.sp-checkout-notice__icon {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	border-radius: 8px;
	background: var(--sp-green-900);
}

.sp-checkout-notice__icon svg {
	width: 15px;
	height: 15px;
	fill: #ffffff;
}

.sp-checkout-notice__body {
	flex: 1 1 auto;
	min-width: 0;
}

.sp-checkout-notice__title {
	font-size: 15px;
	line-height: 1.4;
	font-weight: 700;
	color: var(--sp-ink);
	margin: 0 0 4px;
}

.sp-checkout-notice__text {
	font-size: 14px;
	line-height: 1.55;
	color: var(--sp-ink-muted);
	margin: 0;
}

/* What happens straight after the button */
.sp-checkout-after {
	font-size: 13.5px;
	line-height: 1.5;
	color: var(--sp-ink-muted);
	text-align: center;
	margin: 12px 0 0;
}

@media (max-width: 767px) {
	.sp-checkout-notice {
		padding: 14px;
		gap: 10px;
	}

	.sp-checkout-notice__icon {
		width: 28px;
		height: 28px;
	}
}


/* -------------------------------------------------------------------------
   

/* =========================================================================
   52. CART AND CHECKOUT

   Single source for both pages. Everything the Elementor Cart and Checkout
   widgets can style — cards, typography, fields, buttons, totals — is set
   through their own controls and is deliberately absent here.

   What remains is the three things Elementor cannot reach:
     1. the checkout column ratio (the widget hard-codes 56% auto)
     2. table column widths (WooCommerce declares none)
     3. the land particulars, which live inside WooCommerce line markup
   ========================================================================= */

/* ---- Page layout ---- */
.cr-row > .e-con-inner {
	display: flex;
	flex-wrap: nowrap;
	align-items: flex-start;
	gap: 28px;
}

.cr-main {
	flex: 1 1 auto;
	min-width: 0;
}

.cr-aside {
	flex: 0 0 300px;
	max-width: 300px;
	min-width: 0;
	position: sticky;
	top: 24px;
}

.ck-row,
.ck-band {
	width: 100%;
}

/* ---- Sidebar cards ---- */
.cr-step,
.ck-reassure {
	width: 100%;
}

.ck-reassure {
	flex: 1 1 0;
	min-width: 0;
}

.cr-stepicon {
	flex: 0 0 auto;
	width: auto;
}

.cr-stepicon .elementor-widget-container,
.cr-stepicon .elementor-icon-wrapper {
	text-align: left;
	line-height: 0;
}

.cr-stepicon .elementor-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	border-radius: 9px;
	background: var(--sp-surface-2);
}

.cr-steph .elementor-heading-title,
.cr-safeh .elementor-heading-title,
.cr-helph .elementor-heading-title,
.cr-howh .elementor-heading-title {
	color: var(--sp-ink);
	margin: 0;
}

.cr-stepd .elementor-heading-title,
.cr-safet p,
.cr-helpt p {
	color: var(--sp-ink-muted);
	margin: 0;
}

.cr-helpbtn .elementor-button {
	width: 100%;
	background: transparent;
	border: 1px solid var(--sp-green-900);
	color: var(--sp-green-900);
	font-size: 15px;
	min-height: 44px;
}

.cr-helpbtn .elementor-button:hover {
	background: var(--sp-green-900);
	color: #fff;
}

/* ---- Checkout column ratio (no Elementor control exists) ---- */
.cr-checkout .e-checkout__container {
	display: grid;
	grid-template-columns: 38% auto;
	grid-column-gap: 32px;
	align-items: start;
}

.cr-checkout .e-checkout__column-start,
.cr-checkout .e-checkout__column-end {
	width: 100%;
	min-width: 0;
}

/* ---- Table column widths (WooCommerce declares none) ---- */
.cr-cart .woocommerce table.shop_table,
.cr-checkout table.shop_table {
	width: 100%;
	table-layout: fixed;
}

.cr-cart .woocommerce table.shop_table th.product-remove,
.cr-cart .woocommerce table.shop_table td.product-remove {
	width: 60px;
	text-align: center;
	vertical-align: middle;
}

.cr-cart .woocommerce table.shop_table th.product-thumbnail,
.cr-cart .woocommerce table.shop_table td.product-thumbnail {
	width: 116px;
	vertical-align: middle;
}

.cr-cart .woocommerce table.shop_table th.product-price,
.cr-cart .woocommerce table.shop_table td.product-price {
	width: 180px;
	text-align: right;
	vertical-align: top;
	white-space: nowrap;
}

.cr-checkout table.shop_table th.product-total,
.cr-checkout table.shop_table td.product-total {
	width: 32%;
	text-align: right;
	vertical-align: top;
	white-space: nowrap;
}

/* Elementor caps this cell at 150px:
     .elementor-widget-woocommerce-checkout-page .woocommerce
       .woocommerce-checkout-review-order-table .cart_item td.product-name
       { max-width: 150px; padding-inline-end: 40px }
   A max-width cannot be beaten by setting width, so it is lifted here at
   matching specificity. */
.cr-cart .woocommerce table.shop_table td.product-name,
.cr-checkout table.shop_table td.product-name,
.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name {
	width: auto;
	min-width: 0;
	max-width: none !important;
	padding-inline-end: 20px;
	text-align: left;
	vertical-align: top;
}

/* Quantity and subtotal are meaningless when a plot sells individually */
.cr-cart .woocommerce .product-quantity,
.cr-cart .woocommerce .product-subtotal,
.cr-checkout .product-quantity,
.cr-cart .woocommerce .coupon {
	display: none !important;
}

.cr-cart .woocommerce td.product-thumbnail img,
.cr-checkout td.product-thumbnail img {
	width: 92px;
	height: 92px;
	object-fit: cover;
	border-radius: 10px;
	display: block;
}

/* ---- Land particulars (inside WooCommerce line markup) ---- */
.cr-cart table.shop_table td.product-name > a,
.cr-checkout table.shop_table td.product-name > a {
	display: block;
	font-size: 16px;
	line-height: 1.4;
	font-weight: 600;
	color: var(--sp-ink) !important;
	text-decoration: none;
	margin-bottom: 2px;
}

.sp-line-meta {
	display: block;
	width: 100%;
	margin-top: 8px;
	padding-top: 8px;
	border-top: 1px solid var(--sp-card-border);
}

.sp-line-place {
	display: flex;
	align-items: center;
	gap: 5px;
	width: 100%;
	margin: 0 0 8px;
	font-size: 14px;
	line-height: 1.5;
	color: var(--sp-ink-muted) !important;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.sp-line-place svg {
	flex: 0 0 auto;
	width: 13px;
	height: 13px;
	fill: currentColor;
}

.sp-line-chips {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
	width: 100%;
	margin: 0 0 8px;
}

.sp-line-chip {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	font-size: 13px;
	line-height: 1.4;
	font-weight: 500;
	color: var(--sp-ink) !important;
	background: var(--sp-surface-2);
	border-radius: 5px;
	padding: 5px 10px;
	white-space: nowrap;
}

.sp-line-status {
	gap: 6px;
	border: 0;
	font-weight: 700;
	color: #ffffff !important;
	padding: 6px 12px;
}

.sp-line-status svg {
	width: 13px;
	height: 13px;
	flex: 0 0 auto;
	fill: #ffffff !important;
}

.sp-line-status.is-verified {
	background: var(--sp-green-900);
}

.sp-line-status.is-pending {
	background: #8A4006;
}

.sp-line-ref {
	display: block;
	width: 100%;
	margin: 0;
	font-size: 13px;
	line-height: 1.5;
	color: var(--sp-ink-muted) !important;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.sp-line-ref strong {
	font-weight: 600;
	color: var(--sp-ink) !important;
}

/* ---- Totals hierarchy (one-column layout falls back to Woo's table) ---- */
.cr-cart .cart_totals .cart-subtotal th,
.cr-cart .cart_totals .cart-subtotal td {
	font-size: 15px;
	font-weight: 400;
	color: var(--sp-ink-muted);
}

.cr-cart .cart_totals .order-total th {
	font-size: 17px;
	font-weight: 600;
	color: var(--sp-ink);
}

.cr-cart .cart_totals .order-total td,
.cr-cart .cart_totals .order-total .amount {
	font-size: 20px;
	font-weight: 700;
	color: var(--sp-ink);
}

/* ---- Responsive ---- */
@media (max-width: 1366px) {
	.cr-row > .e-con-inner {
		gap: 24px;
	}

	.cr-aside {
		flex: 0 0 280px;
		max-width: 280px;
	}

	.cr-checkout .e-checkout__container {
		grid-template-columns: 39% auto;
		grid-column-gap: 24px;
	}
}

@media (max-width: 1024px) {
	.cr-aside {
		flex: 0 0 250px;
		max-width: 250px;
	}

	.cr-checkout .e-checkout__container {
		grid-template-columns: 42% auto;
		grid-column-gap: 20px;
	}

	.cr-cart .woocommerce table.shop_table th.product-price,
	.cr-cart .woocommerce table.shop_table td.product-price {
		width: 150px;
	}

	.cr-cart .woocommerce table.shop_table th.product-thumbnail,
	.cr-cart .woocommerce table.shop_table td.product-thumbnail {
		width: 100px;
	}

	.cr-cart .woocommerce td.product-thumbnail img,
	.cr-checkout td.product-thumbnail img {
		width: 80px;
		height: 80px;
	}
}

@media (max-width: 767px) {
	.cr-row > .e-con-inner {
		flex-wrap: wrap;
		gap: 20px;
	}

	.cr-aside {
		flex: 1 1 100%;
		max-width: none;
		position: static;
	}

	.ck-reassure {
		flex: 1 1 100%;
	}

	.cr-checkout .e-checkout__container {
		grid-template-columns: 1fr;
		grid-row-gap: 20px;
	}

	/* Rows become stacked cards; fixed tracks would fight that */
	.cr-cart .woocommerce table.shop_table {
		table-layout: auto;
	}

	.cr-cart .woocommerce table.shop_table thead {
		display: none;
	}

	.cr-cart .woocommerce table.shop_table,
	.cr-cart .woocommerce table.shop_table tbody,
	.cr-cart .woocommerce table.shop_table tr,
	.cr-cart .woocommerce table.shop_table td {
		display: block;
		width: 100% !important;
	}

	.cr-cart .woocommerce table.shop_table tr.cart_item {
		position: relative;
		padding: 16px 16px 16px 108px;
		min-height: 108px;
		border-top: 1px solid var(--sp-card-border);
	}

	.cr-cart .woocommerce table.shop_table tr.cart_item td {
		padding: 0;
		border: 0;
		text-align: left !important;
	}

	.cr-cart .woocommerce table.shop_table td.product-thumbnail {
		position: absolute;
		left: 16px;
		top: 16px;
		width: 80px !important;
	}

	.cr-cart .woocommerce table.shop_table td.product-remove {
		position: absolute;
		right: 12px;
		top: 14px;
		width: auto !important;
	}

	.cr-cart .woocommerce table.shop_table td.product-price {
		margin-top: 10px;
		font-size: 16px;
		font-weight: 700;
		color: var(--sp-ink);
	}

	.cr-cart .woocommerce table.shop_table td.product-price::before {
		content: "Price ";
		font-size: 13px;
		font-weight: 400;
		color: var(--sp-ink-muted);
	}

	.cr-cart .woocommerce table.shop_table td.actions {
		padding: 16px;
		border-top: 1px solid var(--sp-card-border);
	}

	.sp-line-place,
	.sp-line-ref {
		white-space: normal;
	}
}

/* ---- Remove control ---- */
.cr-cart .woocommerce a.remove {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	padding: 0;
	margin: 0;
	font-size: 22px;
	line-height: 1;
	font-weight: 300;
	border-radius: 50%;
	border: 1px solid var(--sp-card-border);
	background: transparent;
	color: var(--sp-ink-muted) !important;
	transition: background-color .18s ease, border-color .18s ease, color .18s ease;
}

.cr-cart .woocommerce a.remove:hover,
.cr-cart .woocommerce a.remove:focus {
	color: var(--sp-green-900) !important;
	background: var(--sp-surface-2);
	border-color: var(--sp-green-700);
}

/* -------------------------------------------------------------------------
   52b. Cart table sizing
   With table-layout: fixed the column widths are taken from the first row,
   so they have to be declared on the th cells, not only the td cells. The
   form wrapper was also holding the table short of its container.
   ------------------------------------------------------------------------- */
.cr-cart .woocommerce,
.cr-cart .woocommerce-cart-form,
.cr-cart form.woocommerce-cart-form {
	width: 100%;
	max-width: none;
}

.cr-cart .woocommerce table.shop_table {
	width: 100% !important;
	max-width: none !important;
	table-layout: fixed;
}

/* Header row drives the tracks */
.cr-cart .woocommerce table.shop_table th.product-remove {
	width: 60px;
}

.cr-cart .woocommerce table.shop_table th.product-thumbnail {
	width: 116px;
}

.cr-cart .woocommerce table.shop_table th.product-name {
	width: auto;
	min-width: 0;
	text-align: left;
}

.cr-cart .woocommerce table.shop_table th.product-price {
	width: 180px;
	text-align: right;
}

/* The plot cell fills whatever track it is given */
.cr-cart .woocommerce table.shop_table td.product-name {
	width: auto;
	max-width: none !important;
	min-width: 0;
	padding-inline-end: 20px;
}

.cr-cart .woocommerce table.shop_table td.product-name > a,
.cr-cart .sp-line-meta,
.cr-cart .sp-line-place,
.cr-cart .sp-line-chips,
.cr-cart .sp-line-ref {
	width: 100%;
	max-width: 100%;
}

@media (max-width: 1024px) {
	.cr-cart .woocommerce table.shop_table th.product-price {
		width: 150px;
	}

	.cr-cart .woocommerce table.shop_table th.product-thumbnail {
		width: 100px;
	}
}

@media (max-width: 767px) {
	.cr-cart .woocommerce table.shop_table th.product-remove,
	.cr-cart .woocommerce table.shop_table th.product-thumbnail,
	.cr-cart .woocommerce table.shop_table th.product-name,
	.cr-cart .woocommerce table.shop_table th.product-price {
		width: auto;
	}
}

/* -------------------------------------------------------------------------
   52c. Cart table — explicit tracks
   Relying on a single auto column to absorb the remaining width was not
   holding. Every column now carries an explicit percentage summing to 100,
   which table-layout: fixed must honour, and the one-column grid is made
   block-level so the table has a full-width containing block.
   ------------------------------------------------------------------------- */
.cr-cart .e-cart__container,
.cr-cart.e-cart-layout-one-column .e-cart__container {
	display: block !important;
}

.cr-cart .e-cart-section,
.cr-cart .e-cart__column-start,
.cr-cart .e-cart__column-end {
	width: 100% !important;
	max-width: none !important;
	min-width: 0 !important;
}

.cr-cart .woocommerce,
.cr-cart .woocommerce-cart-form,
.cr-cart form.woocommerce-cart-form,
.cr-cart .woocommerce-cart-form__contents {
	display: block !important;
	width: 100% !important;
	max-width: none !important;
}

.cr-cart .woocommerce table.shop_table.cart,
.cr-cart .woocommerce table.shop_table {
	display: table !important;
	width: 100% !important;
	max-width: none !important;
	table-layout: fixed !important;
}

/* Explicit tracks, summing to 100 */
.cr-cart .woocommerce table.shop_table th.product-remove,
.cr-cart .woocommerce table.shop_table td.product-remove {
	width: 6% !important;
	min-width: 52px;
}

.cr-cart .woocommerce table.shop_table th.product-thumbnail,
.cr-cart .woocommerce table.shop_table td.product-thumbnail {
	width: 12% !important;
	min-width: 96px;
}

.cr-cart .woocommerce table.shop_table th.product-name,
.cr-cart .woocommerce table.shop_table td.product-name {
	width: 64% !important;
	max-width: none !important;
	min-width: 0 !important;
}

.cr-cart .woocommerce table.shop_table th.product-price,
.cr-cart .woocommerce table.shop_table td.product-price {
	width: 18% !important;
	min-width: 130px;
	text-align: right;
}

@media (max-width: 1024px) {
	.cr-cart .woocommerce table.shop_table th.product-name,
	.cr-cart .woocommerce table.shop_table td.product-name {
		width: 58% !important;
	}

	.cr-cart .woocommerce table.shop_table th.product-price,
	.cr-cart .woocommerce table.shop_table td.product-price {
		width: 22% !important;
	}
}

@media (max-width: 767px) {
	/* Stacked cards — tracks no longer apply */
	.cr-cart .woocommerce table.shop_table {
		table-layout: auto !important;
	}

	.cr-cart .woocommerce table.shop_table th.product-remove,
	.cr-cart .woocommerce table.shop_table td.product-remove,
	.cr-cart .woocommerce table.shop_table th.product-thumbnail,
	.cr-cart .woocommerce table.shop_table td.product-thumbnail,
	.cr-cart .woocommerce table.shop_table th.product-name,
	.cr-cart .woocommerce table.shop_table td.product-name,
	.cr-cart .woocommerce table.shop_table th.product-price,
	.cr-cart .woocommerce table.shop_table td.product-price {
		width: 100% !important;
		min-width: 0;
	}
}

/* =========================================================================
   53. LOGIN PAGE
   Split card: green panel explaining what an account is for, form on the
   right. Ultimate Member renders its own markup, so the form itself is
   restyled here to match the rest of the site.
   ========================================================================= */
.lg-sec {
	min-height: 70vh;
}

.lg-card {
	width: 100%;
	overflow: hidden;
	box-shadow: 0 2px 10px rgba(7, 30, 39, .07);
}

.lg-left {
	flex: 0 0 44% !important;
	max-width: 44% !important;
	min-width: 0;
}

.lg-right {
	flex: 1 1 auto !important;
	min-width: 0;
}

/* --- Left panel --- */
.lg-eyebrow .elementor-heading-title {
	display: inline-block;
	color: #CDEBC9;
	background: rgba(255, 255, 255, .14);
	border: 1px solid rgba(255, 255, 255, .18);
	padding: 6px 13px;
	border-radius: 999px;
	text-transform: uppercase;
}

.lg-h .elementor-heading-title {
	color: #ffffff;
	margin: 0;
}

.lg-t p {
	color: rgba(255, 255, 255, .84);
	margin: 0;
}

.lg-benefit {
	width: 100%;
}

.lg-bicon {
	flex: 0 0 auto !important;
	width: auto !important;
}

.lg-bicon .elementor-widget-container,
.lg-bicon .elementor-icon-wrapper {
	text-align: left !important;
	line-height: 0;
}

.lg-bicon .elementor-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border-radius: 9px;
	background: rgba(255, 255, 255, .12);
}

.lg-bh .elementor-heading-title {
	color: #ffffff;
	margin: 0;
}

.lg-bd .elementor-heading-title {
	color: rgba(255, 255, 255, .7);
}

/* --- Right panel --- */
.lg-rh .elementor-heading-title {
	color: var(--sp-ink);
	margin: 0;
}

.lg-rt p {
	color: var(--sp-ink-muted);
	margin: 0 0 20px;
}

.lg-rt a {
	color: var(--sp-green-900);
	font-weight: 600;
	text-decoration: none;
	border-bottom: 1px solid currentColor;
}

.lg-rt a:hover {
	color: var(--sp-green-700);
}

.lg-note p {
	margin: 16px 0 0;
	padding-top: 16px;
	border-top: 1px solid var(--sp-card-border);
	color: var(--sp-ink-muted);
}

/* --- Ultimate Member form --- */
.lg-form .um {
	margin: 0 !important;
	max-width: none !important;
}

.lg-form .um-form {
	padding: 0 !important;
}

.lg-form .um-field {
	padding: 0 0 16px !important;
}

.lg-form .um-field-label label,
.lg-form .um-field label {
	font-family: var(--sp-font) !important;
	font-size: 15px !important;
	line-height: 1.4 !important;
	font-weight: 600 !important;
	color: var(--sp-ink) !important;
	margin-bottom: 6px !important;
}

.lg-form .um-field-area input[type="text"],
.lg-form .um-field-area input[type="password"],
.lg-form .um-field-area input[type="email"],
.lg-form input.um-form-field {
	width: 100% !important;
	font-family: var(--sp-font) !important;
	font-size: 16px !important;
	line-height: 1.5 !important;
	color: var(--sp-ink) !important;
	background: var(--sp-card) !important;
	border: 1px solid var(--sp-control-border) !important;
	border-radius: 6px !important;
	padding: 12px 14px !important;
	min-height: 48px !important;
	box-shadow: none !important;
	transition: border-color .15s ease, box-shadow .15s ease;
}

.lg-form input.um-form-field:focus {
	border-color: var(--sp-green-700) !important;
	box-shadow: 0 0 0 3px rgba(27, 94, 32, .12) !important;
	outline: none !important;
}

.lg-form ::placeholder {
	color: #667069 !important;
}

/* Submit */
.lg-form input[type="submit"].um-button,
.lg-form .um-button {
	width: 100% !important;
	font-family: var(--sp-font) !important;
	font-size: 16px !important;
	font-weight: 600 !important;
	color: #ffffff !important;
	background: var(--sp-green-900) !important;
	border: 1px solid var(--sp-green-900) !important;
	border-radius: 6px !important;
	padding: 14px 24px !important;
	min-height: 50px !important;
	line-height: 1.4 !important;
	box-shadow: none !important;
	transition: background-color .18s ease;
}

.lg-form input[type="submit"].um-button:hover,
.lg-form .um-button:hover {
	background: var(--sp-green-700) !important;
	border-color: var(--sp-green-700) !important;
}

/* Remember me and forgot link */
.lg-form .um-field-checkbox-option,
.lg-form .um-field-checkbox {
	font-size: 14px !important;
	color: var(--sp-ink) !important;
}

.lg-form .um-field-checkbox i {
	color: var(--sp-green-900) !important;
}

.lg-form .um-col-alt,
.lg-form .um-col-alt-b {
	padding: 0 !important;
}

.lg-form .um-request-button,
.lg-form a {
	font-size: 14px !important;
	color: var(--sp-green-900) !important;
	text-decoration: none;
}

.lg-form .um-request-button:hover,
.lg-form a:hover {
	color: var(--sp-green-700) !important;
	text-decoration: underline;
}

/* Notices */
.lg-form .um-field-error,
.lg-form .um-error-block {
	font-size: 14px !important;
	color: var(--sp-error) !important;
	background: transparent !important;
	border: 0 !important;
	padding: 5px 0 0 !important;
}

.lg-form .um-notice {
	font-size: 14px !important;
	border-radius: 8px !important;
	padding: 13px 15px !important;
}

@media (max-width: 1024px) {
	.lg-left {
		flex: 0 0 46% !important;
		max-width: 46% !important;
	}
}

@media (max-width: 767px) {
	.lg-sec {
		min-height: 0;
	}

	.lg-left,
	.lg-right {
		flex: 1 1 100% !important;
		max-width: 100% !important;
	}
}

/* =========================================================================
   54. HEADER SEARCH OVERLAY
   The full-screen skin's overlay colour, input typography and text colour
   are set on the widget in Elementor. Two things it exposes no control
   for — the placeholder colour and the close control's hit area — are set
   here.
   ========================================================================= */

/* Placeholder: Elementor has no control for this, and the browser default
   is far too faint against a dark overlay. */
.elementor-search-form--skin-full_screen input[type="search"]::placeholder,
.elementor-search-form--skin-full_screen .elementor-search-form__input::placeholder {
	color: rgba(255, 255, 255, .72) !important;
	opacity: 1 !important;
}

/* Underline needs to be visible in its own right, not just implied */
.elementor-search-form--skin-full_screen .elementor-search-form__container {
	border-bottom-width: 2px !important;
	border-bottom-color: rgba(255, 255, 255, .55) !important;
	max-width: 760px;
	margin: 0 auto;
	width: 90%;
}

.elementor-search-form--skin-full_screen .elementor-search-form__container:focus-within {
	border-bottom-color: #ffffff !important;
}

/* Caret was inheriting a dark colour and vanishing while typing */
.elementor-search-form--skin-full_screen input[type="search"] {
	caret-color: #ffffff;
	-webkit-text-fill-color: #ffffff;
}

/* Clear any inherited autofill styling, which paints its own background */
.elementor-search-form--skin-full_screen input:-webkit-autofill,
.elementor-search-form--skin-full_screen input:-webkit-autofill:focus {
	-webkit-text-fill-color: #ffffff;
	-webkit-box-shadow: 0 0 0 1000px rgba(4, 20, 27, .96) inset;
	caret-color: #ffffff;
}

/* Close control: give it a real target and keep it clear of the header */
.elementor-search-form--skin-full_screen .dialog-lightbox-close-button {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	top: 24px;
	right: 24px;
	font-size: 26px;
	color: #ffffff !important;
	opacity: 1 !important;
	border-radius: 50%;
	border: 1px solid rgba(255, 255, 255, .28);
	transition: background-color .18s ease, border-color .18s ease;
}

.elementor-search-form--skin-full_screen .dialog-lightbox-close-button:hover,
.elementor-search-form--skin-full_screen .dialog-lightbox-close-button:focus {
	background: rgba(255, 255, 255, .12);
	border-color: #ffffff;
}

/* Submit icon inside the overlay */
.elementor-search-form--skin-full_screen .elementor-search-form__submit {
	color: #ffffff !important;
	background: transparent !important;
}

@media (max-width: 767px) {
	.elementor-search-form--skin-full_screen .elementor-search-form__container {
		width: 84%;
	}

	.elementor-search-form--skin-full_screen .dialog-lightbox-close-button {
		top: 16px;
		right: 16px;
		width: 40px;
		height: 40px;
	}
}

/* =========================================================================
   55. ACCOUNT PAGE
   The My Account widget is styled through its own Elementor controls.
   What remains here is the safety panel beneath it and the responsive
   behaviour of the vertical tab column, which has no Elementor control.
   ========================================================================= */
.ac-help {
	width: 100%;
}

.ac-helpicon {
	flex: 0 0 auto !important;
	width: auto !important;
}

.ac-helpicon .elementor-widget-container,
.ac-helpicon .elementor-icon-wrapper {
	text-align: left !important;
	line-height: 0;
}

.ac-helpicon .elementor-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	border-radius: 10px;
	background: var(--sp-surface-2);
}

.ac-helptext {
	flex: 1 1 auto !important;
	min-width: 0;
}

.ac-helph .elementor-heading-title {
	color: var(--sp-ink);
	margin: 0;
}

.ac-helpd p {
	color: var(--sp-ink-muted);
	margin: 0;
	max-width: 78ch;
}

/* Logout reads as a quiet exit, not a primary action */
.ac-panel .woocommerce-MyAccount-navigation-link--customer-logout a {
	color: var(--sp-error) !important;
}

.ac-panel .woocommerce-MyAccount-navigation-link--customer-logout.is-active a,
.ac-panel .woocommerce-MyAccount-navigation-link--customer-logout a:hover {
	color: #ffffff !important;
	background: var(--sp-error) !important;
}

/* Order tables inherit the same treatment as cart and checkout */
.ac-panel .woocommerce-orders-table,
.ac-panel table.shop_table {
	border: 1px solid var(--sp-card-border);
	border-radius: 12px;
	border-collapse: separate;
	border-spacing: 0;
	overflow: hidden;
}

.ac-panel table.shop_table th {
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--sp-ink-muted);
	background: var(--sp-surface);
	padding: 13px 16px;
}

.ac-panel table.shop_table td {
	padding: 16px;
	border-top: 1px solid var(--sp-card-border);
}

/* Empty states read as guidance rather than an error */
.ac-panel .woocommerce-info,
.ac-panel .woocommerce-Message {
	background: var(--sp-surface);
	border: 1px solid var(--sp-card-border);
	border-radius: 10px;
	font-size: 15px;
	line-height: 1.55;
	color: var(--sp-ink);
	padding: 18px 20px;
}

.ac-panel .woocommerce-info::before,
.ac-panel .woocommerce-Message::before {
	color: var(--sp-green-700);
}

@media (max-width: 1024px) {
	/* The 240px tab column leaves too little for the panel at this width */
	.ac-panel .e-my-account-tab__vertical-align .woocommerce-MyAccount-navigation {
		width: 200px;
	}
}

@media (max-width: 767px) {
	/* Tabs stack above the panel rather than squeezing beside it */
	.ac-panel .woocommerce-MyAccount-navigation,
	.ac-panel .woocommerce-MyAccount-content {
		width: 100% !important;
		float: none !important;
	}

	.ac-panel .woocommerce-MyAccount-navigation {
		margin-bottom: 20px;
	}

	.ac-panel .woocommerce-MyAccount-navigation ul {
		display: flex;
		flex-wrap: wrap;
		gap: 6px;
	}

	.ac-help {
		flex-wrap: wrap;
	}
}

/* -------------------------------------------------------------------------
   56. Header wordmark
   The site title is now a link, so it needs a hover state — otherwise
   there is no cue that it is clickable.
   ------------------------------------------------------------------------- */
.elementor-element-hdrTitle .elementor-heading-title a {
	color: inherit;
	text-decoration: none;
	transition: color .18s ease;
}

.elementor-element-hdrTitle .elementor-heading-title a:hover,
.elementor-element-hdrTitle .elementor-heading-title a:focus-visible {
	color: var(--sp-green-700);
}

.elementor-element-hdrTitle .elementor-heading-title a:focus-visible,
.elementor-element-hdrLogo a:focus-visible {
	outline: 2px solid var(--sp-green-700);
	outline-offset: 3px;
	border-radius: 4px;
}

/* =========================================================================
   57. RESERVATION CONFIRMATION (order-received)
   The checkout hero and reassurance band belong to the form, not to the
   confirmation, so they are hidden once the reservation exists.
   ========================================================================= */
body.woocommerce-order-received .ct-hero,
body.woocommerce-order-received .ck-band {
	display: none;
}

body.woocommerce-order-received .ck-row {
	padding-top: 48px;
}

body.woocommerce-order-received .cr-checkout .e-checkout__container {
	display: block;
}

/* ---- Success banner ---- */
.sp-conf-banner {
	display: flex;
	align-items: flex-start;
	gap: 16px;
	background: var(--sp-card);
	border: 1px solid #CFE0CF;
	border-radius: 14px;
	padding: 24px;
	margin: 0 0 28px;
}

.sp-conf-banner__icon {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 46px;
	height: 46px;
	border-radius: 12px;
	background: var(--sp-green-900);
}

.sp-conf-banner__icon svg {
	width: 20px;
	height: 20px;
	fill: #ffffff;
}

.sp-conf-banner__body {
	flex: 1 1 auto;
	min-width: 0;
}

.sp-conf-banner__title {
	font-size: 22px;
	line-height: 1.3;
	font-weight: 700;
	color: var(--sp-ink);
	margin: 0 0 4px;
}

.sp-conf-banner__ref {
	font-size: 15px;
	line-height: 1.5;
	color: var(--sp-ink-muted);
	margin: 0 0 8px;
}

.sp-conf-banner__ref strong {
	font-size: 17px;
	font-weight: 700;
	color: var(--sp-green-900);
}

.sp-conf-banner__text {
	font-size: 14px;
	line-height: 1.55;
	color: var(--sp-ink-muted);
	margin: 0;
	max-width: 70ch;
}

/* ---- Order overview strip ---- */
.woocommerce-order .woocommerce-thankyou-order-received {
	font-size: 16px;
	line-height: 1.6;
	color: var(--sp-ink-muted);
	margin: 0 0 20px;
}

.woocommerce-order ul.woocommerce-order-overview {
	display: flex;
	flex-wrap: wrap;
	gap: 0;
	list-style: none;
	background: var(--sp-surface);
	border: 1px solid var(--sp-card-border);
	border-radius: 12px;
	padding: 4px;
	margin: 0 0 24px;
}

.woocommerce-order ul.woocommerce-order-overview li {
	flex: 1 1 180px;
	border: 0;
	padding: 14px 18px;
	font-size: 12px;
	font-weight: 400;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--sp-ink-muted);
}

.woocommerce-order ul.woocommerce-order-overview li strong {
	display: block;
	margin-top: 4px;
	font-size: 16px;
	font-weight: 700;
	letter-spacing: 0;
	text-transform: none;
	color: var(--sp-ink);
}

/* ---- Order tables ---- */
.woocommerce-order section.woocommerce-order-details,
.woocommerce-order section.woocommerce-customer-details {
	background: var(--sp-card);
	border: 1px solid var(--sp-card-border);
	border-radius: 14px;
	padding: 24px;
	margin: 0 0 24px;
}

.woocommerce-order section h2 {
	font-size: 19px;
	line-height: 1.4;
	font-weight: 600;
	color: var(--sp-ink);
	margin: 0 0 16px;
}

.woocommerce-order table.order_details {
	width: 100%;
	border: 0;
	table-layout: fixed;
}

.woocommerce-order table.order_details th.product-name,
.woocommerce-order table.order_details td.product-name {
	width: auto;
	text-align: left;
	vertical-align: top;
}

.woocommerce-order table.order_details th.product-total,
.woocommerce-order table.order_details td.product-total {
	width: 190px;
	text-align: right;
	vertical-align: top;
	white-space: nowrap;
}

.woocommerce-order table.order_details thead th {
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--sp-ink-muted);
	border-bottom: 1px solid var(--sp-card-border);
	padding: 0 0 12px;
}

.woocommerce-order table.order_details tbody td {
	padding: 18px 0;
	border-top: 1px solid var(--sp-card-border);
	font-size: 15px;
	color: var(--sp-ink);
}

.woocommerce-order table.order_details td.product-name a {
	font-size: 16px;
	font-weight: 600;
	color: var(--sp-ink);
	text-decoration: none;
}

/* Land particulars recorded on the order line */
.woocommerce-order table.order_details .wc-item-meta {
	list-style: none;
	margin: 10px 0 0;
	padding: 10px 0 0;
	border-top: 1px solid var(--sp-card-border);
	display: grid;
	grid-template-columns: max-content 1fr;
	gap: 4px 14px;
	font-size: 14px;
	line-height: 1.5;
}

.woocommerce-order table.order_details .wc-item-meta li {
	display: contents;
}

.woocommerce-order table.order_details .wc-item-meta strong {
	font-weight: 400;
	color: var(--sp-ink-muted);
}

.woocommerce-order table.order_details .wc-item-meta p {
	margin: 0;
	font-weight: 600;
	color: var(--sp-ink);
}

.woocommerce-order table.order_details tfoot th {
	text-align: left;
	font-weight: 400;
	color: var(--sp-ink-muted);
	padding: 12px 0;
	border-top: 1px solid var(--sp-card-border);
}

.woocommerce-order table.order_details tfoot td {
	text-align: right;
	font-weight: 600;
	color: var(--sp-ink);
	padding: 12px 0;
	border-top: 1px solid var(--sp-card-border);
}

.woocommerce-order table.order_details tfoot tr:last-child th,
.woocommerce-order table.order_details tfoot tr:last-child td {
	font-size: 18px;
	font-weight: 700;
	color: var(--sp-ink);
}

.woocommerce-order address {
	font-style: normal;
	font-size: 15px;
	line-height: 1.7;
	color: var(--sp-ink);
}

/* ---- What happens next ---- */
.sp-conf-next {
	margin: 8px 0 0;
}

.sp-conf-next__title {
	font-size: 19px;
	line-height: 1.4;
	font-weight: 600;
	color: var(--sp-ink);
	margin: 0 0 16px;
}

.sp-conf-next__grid {
	display: flex;
	flex-wrap: wrap;
	gap: 20px;
	margin-bottom: 24px;
}

.sp-conf-step {
	flex: 1 1 220px;
	min-width: 0;
	background: var(--sp-card);
	border: 1px solid var(--sp-card-border);
	border-radius: 14px;
	padding: 22px;
}

.sp-conf-step__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border-radius: 10px;
	background: var(--sp-surface-2);
	margin-bottom: 14px;
}

.sp-conf-step__icon svg {
	width: 16px;
	height: 16px;
	fill: var(--sp-green-900);
}

.sp-conf-step__title {
	font-size: 16px;
	line-height: 1.4;
	font-weight: 600;
	color: var(--sp-ink);
	margin: 0 0 6px;
}

.sp-conf-step__text {
	font-size: 14px;
	line-height: 1.6;
	color: var(--sp-ink-muted);
	margin: 0;
}

/* ---- Fraud warning ---- */
.sp-conf-warn {
	display: flex;
	align-items: flex-start;
	gap: 14px;
	background: #FFF8EE;
	border: 1px solid #E8D5A8;
	border-radius: 14px;
	padding: 20px 22px;
}

.sp-conf-warn__icon {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	border-radius: 10px;
	background: #8A4006;
}

.sp-conf-warn__icon svg {
	width: 16px;
	height: 16px;
	fill: #ffffff;
}

.sp-conf-warn__body {
	flex: 1 1 auto;
	min-width: 0;
}

.sp-conf-warn__title {
	font-size: 15px;
	line-height: 1.4;
	font-weight: 700;
	color: #7A3906;
	margin: 0 0 4px;
}

.sp-conf-warn__text {
	font-size: 14px;
	line-height: 1.6;
	color: var(--sp-ink);
	margin: 0;
	max-width: 76ch;
}

@media (max-width: 767px) {
	.sp-conf-banner,
	.sp-conf-warn {
		flex-wrap: wrap;
		padding: 18px;
	}

	.sp-conf-banner__title {
		font-size: 19px;
	}

	.woocommerce-order ul.woocommerce-order-overview li {
		flex: 1 1 100%;
	}

	.woocommerce-order section.woocommerce-order-details,
	.woocommerce-order section.woocommerce-customer-details {
		padding: 18px;
	}

	.woocommerce-order table.order_details th.product-total,
	.woocommerce-order table.order_details td.product-total {
		width: 120px;
	}

	.woocommerce-order table.order_details .wc-item-meta {
		grid-template-columns: 1fr;
		gap: 0;
	}

	.woocommerce-order table.order_details .wc-item-meta li {
		display: block;
		margin-bottom: 6px;
	}

	.sp-conf-step {
		flex: 1 1 100%;
	}
}
