/*
Theme Name: Mulerider Farmstead
Theme URI: https://www.saumag.edu/farmstead/
Description: Storefront theme for the Mulerider Farmstead — SAU Agriculture's school-based enterprise. Child of Hello Elementor.
Author: SAU Web
Template: hello-elementor
Version: 2.5.4
Text Domain: sau-farmstead
*/

/* ==========================================================================
   Tokens — derived from the Mulerider Farmstead mark (EST. 2026)
   sky / field / forest / sun, plus warm paper for the butcher-paper motif.
   ========================================================================== */

:root {
	/* SAU brand — the anchor. Chrome, navigation and emphasis are university
	   colours; the Farmstead's own greens carry the produce. The logo's sun is
	   already SAU Gold, which is what lets the two sit together. */
	--sau-blue:      #003da5;
	--sau-blue-deep: #002a73;
	--sau-gold:      #fad200;

	/* Sky, pulled toward SAU Blue's hue rather than a generic cyan, so the
	   page reads as a tint of the university colour. */
	--fs-sky:        #cfe0f5;
	--fs-sky-deep:   #a8c6ea;
	--fs-sky-wash:   #eaf1fb;

	--fs-field:      #8cc63f;
	--fs-field-deep: #6ba32b;

	--fs-forest:     #1b7a43;
	--fs-forest-ink: #14532d;

	--fs-sun:        var(--sau-gold);
	--fs-sun-deep:   #c9a800;

	--fs-ink:        #142d3d;
	--fs-ink-soft:   #4a5f70;

	--fs-paper:      #faf7ef;
	--fs-card:       #ffffff;
	--fs-border:     #d3e0ec;

	--fs-alert:      #b3261e;

	/* Type */
	--fs-display: "Calistoga", Georgia, "Times New Roman", serif;
	--fs-body:    "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;

	/* Spacing — standard density */
	--fs-s1: 8px;
	--fs-s2: 16px;
	--fs-s3: 24px;
	--fs-s4: 40px;
	--fs-s5: 64px;
	--fs-s6: 96px;

	--fs-radius:    16px;
	--fs-radius-sm: 10px;
	--fs-shadow:    0 1px 2px rgba(20, 61, 40, .06), 0 8px 24px rgba(20, 61, 40, .07);
	--fs-shadow-lg: 0 2px 4px rgba(20, 61, 40, .08), 0 16px 40px rgba(20, 61, 40, .12);
}

/* ==========================================================================
   Base
   ========================================================================== */

body.fs-site {
	font-family: var(--fs-body);
	font-size: 17px;
	line-height: 1.6;
	color: var(--fs-ink);
	background: var(--fs-sky-wash);
	-webkit-font-smoothing: antialiased;
}

.fs-site h1, .fs-site h2, .fs-site h3, .fs-site .fs-display {
	font-family: var(--fs-display);
	font-weight: 400;
	line-height: 1.12;
	letter-spacing: -0.01em;
	color: var(--fs-forest-ink);
}

.fs-site h1 { font-size: clamp(2.25rem, 1.6rem + 2.8vw, 3.75rem); }
.fs-site h2 { font-size: clamp(1.75rem, 1.4rem + 1.6vw, 2.5rem); }
.fs-site h3 { font-size: clamp(1.25rem, 1.1rem + .7vw, 1.5rem); }

.fs-site a { color: var(--fs-forest); }
.fs-site a:hover { color: var(--fs-field-deep); }

.fs-wrap {
	width: min(1160px, 100% - 2rem);
	margin-inline: auto;
}

/* Accessible focus — never removed, always visible on the sky background */
.fs-site :focus-visible {
	outline: 3px solid var(--fs-forest);
	outline-offset: 2px;
	border-radius: 4px;
}

/* Utility label — the stamped small-caps used for data labels */
.fs-label {
	font-family: var(--fs-body);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--fs-ink-soft);
}

/* ==========================================================================
   Signature: the stamp
   Butcher-paper overprint. One ink, slightly rotated, never straight.
   ========================================================================== */

.fs-stamp {
	display: inline-block;
	font-family: var(--fs-body);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .18em;
	text-transform: uppercase;
	padding: .45em .8em;
	border: 2.5px solid currentColor;
	border-radius: 3px;
	color: var(--fs-alert);
	transform: rotate(-4deg);
	opacity: .82;
}

.fs-stamp--sun    { color: var(--fs-sun-deep); }
.fs-stamp--forest { color: var(--fs-forest); }

/* Sold-out overprint across a product card */
.fs-soldout-overprint {
	position: absolute;
	inset: 0;
	display: grid;
	place-items: center;
	pointer-events: none;
	z-index: 3;
}
.fs-soldout-overprint .fs-stamp {
	font-size: 17px;
	transform: rotate(-9deg);
	background: rgba(255, 255, 255, .78);
}

/* ==========================================================================
   Hero — the batch board
   ========================================================================== */

.fs-hero {
	background:
		radial-gradient(circle at 78% 18%, rgba(245, 197, 24, .28) 0 14%, transparent 42%),
		linear-gradient(180deg, var(--fs-sky) 0%, var(--fs-sky-wash) 100%);
	padding: var(--fs-s5) 0 var(--fs-s6);
	position: relative;
	overflow: hidden;
}


.fs-hero__inner { position: relative; z-index: 2; }

.fs-hero__eyebrow {
	display: flex;
	align-items: center;
	gap: var(--fs-s2);
	flex-wrap: wrap;
	margin-bottom: var(--fs-s2);
}

.fs-hero__title { margin: 0 0 var(--fs-s2); }

.fs-hero__sub {
	font-size: 1.15rem;
	max-width: 46ch;
	color: var(--fs-ink-soft);
	margin: 0 0 var(--fs-s3);
}

/* Closes-in countdown */
.fs-countdown {
	display: inline-flex;
	align-items: baseline;
	gap: .5ch;
	font-family: var(--fs-display);
	font-size: 1.5rem;
	color: var(--fs-forest-ink);
}
.fs-countdown strong { font-size: 2rem; }

/* Pickup / delivery facts, set as a stamped data block */
.fs-facts {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
	gap: var(--fs-s2);
	background: var(--fs-card);
	border: 1px solid var(--fs-border);
	border-radius: var(--fs-radius);
	padding: var(--fs-s3);
	box-shadow: var(--fs-shadow);
	margin-top: var(--fs-s3);
}
.fs-facts dt { margin-bottom: 4px; }
.fs-facts dd { margin: 0; font-weight: 500; }

/* ==========================================================================
   Product grid
   ========================================================================== */

.fs-site ul.products {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
	gap: var(--fs-s3);
	margin: 0;
	padding: 0;
	list-style: none;
}
.fs-site ul.products::before,
.fs-site ul.products::after { content: none; }

.fs-site ul.products li.product {
	position: relative;
	background: var(--fs-card);
	border: 1px solid var(--fs-border);
	border-radius: var(--fs-radius);
	padding: 0 0 var(--fs-s3);
	overflow: hidden;
	width: auto !important;
	margin: 0 !important;
	float: none !important;
	transition: transform .2s ease, box-shadow .2s ease;
}
.fs-site ul.products li.product:hover {
	transform: translateY(-3px);
	box-shadow: var(--fs-shadow-lg);
}

.fs-site ul.products li.product img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	margin: 0 0 var(--fs-s2);
	display: block;
}

.fs-site ul.products li.product .woocommerce-loop-product__title {
	font-family: var(--fs-display);
	font-size: 1.2rem !important;
	padding: 0 var(--fs-s3);
	margin: 0 0 4px;
	color: var(--fs-forest-ink);
}

.fs-site ul.products li.product .price {
	display: block;
	padding: 0 var(--fs-s3);
	color: var(--fs-ink);
	font-size: 1.05rem;
	font-weight: 600;
}
.fs-site ul.products li.product .price .fs-unit {
	font-weight: 400;
	color: var(--fs-ink-soft);
	font-size: .9rem;
}

.fs-site ul.products li.product.outofstock { opacity: .72; }
.fs-site ul.products li.product.outofstock img { filter: grayscale(.85); }

/* ==========================================================================
   Stock state — the countable remainder
   Under 24 it reads as marks you can count; above that, a depleting row.
   ========================================================================== */

.fs-stock {
	padding: var(--fs-s2) var(--fs-s3) 0;
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.fs-tally {
	display: flex;
	gap: 3px;
	flex-wrap: wrap;
	align-items: flex-end;
	height: 20px;
}
.fs-tally i {
	display: block;
	width: 3px;
	height: 18px;
	background: var(--fs-field-deep);
	border-radius: 1px;
}
/* every fifth mark lies across the previous four, like a real tally */
.fs-tally i:nth-child(5n) {
	transform: rotate(-64deg) translateY(-2px);
	margin-left: -14px;
	background: var(--fs-forest);
}

.fs-bar {
	height: 8px;
	background: var(--fs-sky-deep);
	border-radius: 99px;
	overflow: hidden;
}
.fs-bar span {
	display: block;
	height: 100%;
	background: var(--fs-field-deep);
	border-radius: 99px;
}

.fs-stock__text { font-size: 13px; font-weight: 600; color: var(--fs-ink-soft); }
.fs-stock--low  .fs-stock__text { color: var(--fs-alert); }
.fs-stock--low  .fs-tally i { background: var(--fs-alert); }
.fs-stock--low  .fs-bar span { background: var(--fs-alert); }

/* ==========================================================================
   Buttons
   ========================================================================== */

.fs-site .button,
.fs-site button.button,
.fs-site a.button,
.fs-site .woocommerce-button,
.fs-site input[type="submit"] {
	font-family: var(--fs-body);
	font-weight: 600;
	font-size: 15px;
	letter-spacing: .01em;
	background: var(--fs-forest);
	color: #fff;
	border: none;
	border-radius: 99px;
	padding: 13px 26px;
	min-height: 44px;
	cursor: pointer;
	transition: background .18s ease, transform .18s ease;
}
.fs-site .button:hover,
.fs-site button.button:hover,
.fs-site a.button:hover,
.fs-site input[type="submit"]:hover {
	background: var(--fs-forest-ink);
	color: #fff;
	transform: translateY(-1px);
}
.fs-site .button:disabled,
.fs-site .button.disabled {
	background: var(--fs-border);
	color: var(--fs-ink-soft);
	cursor: not-allowed;
	transform: none;
}

.fs-site ul.products li.product .button {
	margin: var(--fs-s2) var(--fs-s3) 0;
	display: inline-block;
}

.fs-btn--sun {
	background: var(--fs-sun) !important;
	color: var(--fs-ink) !important;
}
.fs-btn--sun:hover { background: var(--fs-sun-deep) !important; color: var(--fs-ink) !important; }

/* ==========================================================================
   How it works — used once, on the home page, because ordering genuinely is a
   sequence. The badge carries a matching stroke icon rather than a numeral.
   ========================================================================== */

.fs-steps {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: var(--fs-s3);
}
.fs-step {
	background: var(--fs-card);
	border: 1px solid var(--fs-border);
	border-radius: var(--fs-radius);
	padding: var(--fs-s3);
	text-align: center;
}
.fs-step__icon {
	display: grid;
	place-items: center;
	width: 52px;
	height: 52px;
	border-radius: 50%;
	background: var(--fs-sun);
	color: var(--fs-ink);
	margin: 0 auto var(--fs-s2);
}
.fs-step__icon svg {
	width: 26px;
	height: 26px;
	display: block;
	stroke: currentColor;
	fill: none;
	stroke-width: 1.9;
	stroke-linecap: round;
	stroke-linejoin: round;
}
.fs-step h3 { margin: 0 0 6px; font-size: 1.15rem; }
.fs-step p  { margin: 0; color: var(--fs-ink-soft); font-size: .96rem; }

/* Plain facts block for the About page — a set, not a sequence */
.fs-factlist {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: var(--fs-s3) var(--fs-s4);
	margin: 0;
	padding: var(--fs-s3) 0 0;
	border-top: 2px solid var(--fs-border);
}
.fs-factlist dt { font-family: var(--fs-display); font-size: 1.2rem; color: var(--fs-forest-ink); margin: 0 0 6px; }
.fs-factlist dd { margin: 0; color: var(--fs-ink-soft); font-size: .97rem; }

/* ==========================================================================
   Closed state — no batch open
   ========================================================================== */

.fs-closed {
	background: var(--fs-card);
	border: 1px solid var(--fs-border);
	border-radius: var(--fs-radius);
	padding: var(--fs-s5) var(--fs-s3);
	text-align: center;
	box-shadow: var(--fs-shadow);
}
.fs-closed h2 { margin: 0 0 var(--fs-s2); }
.fs-upcoming { margin: var(--fs-s3) auto 0; max-width: 520px; text-align: left; background: var(--fs-card); border: 1px solid var(--fs-border); border-radius: var(--fs-radius); padding: var(--fs-s2) var(--fs-s3); }
.fs-upcoming ul { list-style: none; margin: 8px 0 0; padding: 0; }
.fs-upcoming li { display: flex; flex-direction: column; gap: 2px; padding: 10px 0; border-top: 1px solid var(--fs-border); }
.fs-upcoming li:first-child { border-top: 0; padding-top: 4px; }
.fs-upcoming li span { color: var(--fs-ink-soft); font-size: 14px; }
.fs-lookup__cancel { margin-top: var(--fs-s2); padding-top: var(--fs-s2); border-top: 1px solid var(--fs-border); }
.fs-lookup__cancel .button { background: transparent; color: var(--fs-alert, #b42318); border: 1.5px solid currentColor; }
.fs-lookup__cancel .button:hover { background: var(--fs-alert, #b42318); color: #fff; }
.fs-closed p  { color: var(--fs-ink-soft); max-width: 50ch; margin: 0 auto var(--fs-s3); }

/* ==========================================================================
   Checkout / cart — keep Woo legible, drop its default chrome
   ========================================================================== */

.fs-site .woocommerce-info,
.fs-site .woocommerce-message {
	background: var(--fs-card);
	border-top: 3px solid var(--fs-forest);
	border-radius: var(--fs-radius-sm);
	color: var(--fs-ink);
}
.fs-site .woocommerce-error {
	background: #fdf2f1;
	border-top: 3px solid var(--fs-alert);
	border-radius: var(--fs-radius-sm);
	color: #6b1a15;
}

.fs-site .woocommerce table.shop_table {
	border-radius: var(--fs-radius);
	border-color: var(--fs-border);
	background: var(--fs-card);
}

/* Labels always visible — never placeholder-only */
.fs-site .woocommerce form .form-row label {
	display: block;
	font-size: 14px;
	font-weight: 600;
	margin-bottom: 5px;
	color: var(--fs-ink);
}
.fs-site .woocommerce form .form-row input.input-text,
.fs-site .woocommerce form .form-row textarea,
.fs-site .woocommerce form .form-row select {
	border: 1px solid var(--fs-border);
	border-radius: var(--fs-radius-sm);
	padding: 12px 14px;
	min-height: 44px;
	font-size: 16px; /* never below 16px — stops iOS zoom-on-focus */
	background: #fff;
	color: var(--fs-ink);
}

/* Cart: Woo's default purple checkout button, in Farmstead green */
body.fs-site .wc-proceed-to-checkout a.checkout-button,
body.fs-site .wc-proceed-to-checkout a.checkout-button.button,
body.fs-site .woocommerce a.button.checkout-button { background: var(--fs-forest) !important; color: #fff !important; border-color: var(--fs-forest) !important; border-radius: 999px; font-weight: 600; text-decoration: none; }
body.fs-site .wc-proceed-to-checkout a.checkout-button:hover { background: var(--fs-forest-ink) !important; border-color: var(--fs-forest-ink) !important; }

/* The payment notice at checkout — says plainly what the card does */
.fs-reserve-note {
	background: var(--fs-sky-wash);
	border: 1px solid var(--fs-sky-deep);
	border-radius: var(--fs-radius-sm);
	padding: var(--fs-s2) var(--fs-s3);
	margin-bottom: var(--fs-s3);
	font-size: .95rem;
}
.fs-reserve-note strong { color: var(--fs-forest-ink); }
body.fs-site .fs-reserve-note { margin-top: 0; }

/* Cart / checkout page titles and breathing room under the header */
.fs-site .fs-page-title { margin: var(--fs-s4) 0 var(--fs-s3); }
.fs-site.woocommerce-checkout .site-main { padding-top: var(--fs-s4); }

/* WooCommerce's own .button.alt (purple) outranks the theme's button colour;
   say it again with the same weight for the primary actions. */
.fs-site .woocommerce a.button.alt, .fs-site a.button.alt, .fs-site button.button.alt, .fs-site input.button.alt,
.fs-site .woocommerce button.button.alt, .fs-site #place_order, .fs-site .checkout-button {
	background: var(--fs-forest) !important; color: #fff !important; border-color: var(--fs-forest) !important;
	border-radius: 999px; font-weight: 600; text-decoration: none;
}
.fs-site a.button.alt:hover, .fs-site button.button.alt:hover, .fs-site #place_order:hover, .fs-site .checkout-button:hover {
	background: var(--fs-forest-ink) !important; border-color: var(--fs-forest-ink) !important;
}

/* ==========================================================================
   Responsive + motion
   ========================================================================== */

@media (max-width: 640px) {
	body.fs-site { font-size: 16px; }
	.fs-hero { padding: var(--fs-s4) 0 var(--fs-s5); }
		.fs-site ul.products { grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: var(--fs-s2); }
	.fs-site ul.products li.product .woocommerce-loop-product__title { font-size: 1.05rem !important; }
}

@media (prefers-reduced-motion: reduce) {
	.fs-site *,
	.fs-site *::before,
	.fs-site *::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
		scroll-behavior: auto !important;
	}
	.fs-site ul.products li.product:hover { transform: none; }
}

/* Print — the pickup sheet is printed and carried into the lobby */
@media print {
	.fs-site header, .fs-site footer, .fs-hero { display: none !important; }
}

/* Muted detail line inside the facts block */
.fs-site .fs-muted { color: var(--fs-ink-soft); font-weight: 400; font-size: .92rem; }

/* The shop's own heading is redundant once the batch board is above it */
.fs-site.post-type-archive-product .woocommerce-products-header { display: none; }

/* Give the grid room to breathe under the board */
.fs-site.post-type-archive-product .woocommerce { padding-top: var(--fs-s4); }

/* ==========================================================================
   SAU chrome
   The Farmstead is a university enterprise, so the frame is SAU's even where
   the storefront inside it is the farm's. Blue bar above, blue footer below,
   gold as the accent that both brands already share.
   ========================================================================== */

.fs-topbar {
	background: var(--sau-blue);
	color: #fff;
	font-size: 13px;
	letter-spacing: .02em;
}
.fs-topbar__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--fs-s2);
	flex-wrap: wrap;
	min-height: 40px;
	padding: 6px 0;
}
.fs-topbar a { color: #fff; text-decoration: none; font-weight: 600; }
.fs-topbar a:hover { color: var(--sau-gold); text-decoration: underline; }
.fs-topbar__tag { color: #c3d4ef; }

/* A gold hairline under the bar — SAU's rule, one of the cheapest brand cues */
.fs-topbar { border-bottom: 3px solid var(--sau-gold); }

.fs-site .site-header {
	background: #fff;
	border-bottom: 1px solid var(--fs-border);
}

.fs-footer {
	background: var(--sau-blue);
	color: #fff;
	padding: var(--fs-s3) 0;
	margin-top: var(--fs-s5);
	border-top: 3px solid var(--sau-gold);
}
.fs-footer__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--fs-s2) var(--fs-s4);
	flex-wrap: wrap;
}
.fs-footer__brand strong { display: block; font-family: var(--fs-display); font-weight: 400; font-size: 1.15rem; }
.fs-footer__brand span   { font-size: .85rem; color: #c3d4ef; }
.fs-footer__links { display: flex; gap: var(--fs-s3); list-style: none; margin: 0; padding: 0; flex-wrap: wrap; }
.fs-footer__links a { color: #fff; text-decoration: none; font-weight: 600; font-size: .95rem; }
.fs-footer__links a:hover { color: var(--sau-gold); }
.fs-footer__fine { margin: 0; font-size: .82rem; color: #aec4e6; flex-basis: 100%; }

/* Emphasis uses SAU Gold, which is the same yellow as the sun in the mark */
.fs-site mark,
.fs-site .fs-emphasis {
	background: linear-gradient(transparent 62%, var(--sau-gold) 62%);
	padding: 0 2px;
	color: inherit;
}


/* The countdown carries SAU Gold underneath — urgency without shouting */
.fs-countdown {
	background: linear-gradient(transparent 68%, rgba(250, 210, 0, .55) 68%);
	padding: 0 4px;
}

/* ==========================================================================
   Home & About
   Photo-led sections. The farm has real photographs of real students, so the
   pages lean on those rather than on illustration or iconography.
   ========================================================================== */

/* --- Photo hero ------------------------------------------------------- */

.fs-phero {
	position: relative;
	min-height: clamp(380px, 52vh, 560px);
	display: grid;
	align-items: end;
	overflow: hidden;
	background: var(--fs-sky);
}
.fs-phero__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 40%;
}
/* Legibility scrim — deep SAU blue rather than neutral black, so the photo
   sits inside the brand instead of under a grey wash. */
.fs-phero::after {
	content: "";
	position: absolute;
	inset: 0;
	/* Two layers: a strong bottom-up wash so the text block is always on
	   dark ground regardless of crop or screen shape, and a left-weighted
	   diagonal so desktop keeps some photo showing on the right. */
	background:
		linear-gradient( 180deg, rgba(0, 22, 60, .38) 0%, rgba(0, 22, 60, .62) 42%, rgba(0, 22, 60, .90) 78%, rgba(0, 22, 60, .96) 100% ),
		linear-gradient( 100deg, rgba(0, 22, 60, .55) 0%, rgba(0, 22, 60, .25) 55%, transparent 100% );
}
.fs-phero__inner {
	position: relative;
	z-index: 2;
	padding: var(--fs-s5) 0 var(--fs-s4);
	color: #fff;
}
.fs-phero__inner h1,
.fs-phero__inner h2 { color: #fff; margin: 0 0 var(--fs-s2); max-width: 18ch; }
.fs-phero__lede {
	font-size: 1.15rem;
	color: #e3ecfa;
	max-width: 52ch;
	margin: 0 0 var(--fs-s3);
}
.fs-phero .fs-label { color: var(--sau-gold); }

/* --- Live batch status strip ------------------------------------------ */

.fs-status {
	display: flex;
	align-items: center;
	gap: var(--fs-s3);
	flex-wrap: wrap;
	background: rgba(255, 255, 255, .95);
	border-radius: var(--fs-radius);
	padding: var(--fs-s2) var(--fs-s3);
	box-shadow: var(--fs-shadow-lg);
	max-width: 640px;
}
.fs-status__text { flex: 1 1 240px; }
.fs-status__text strong { display: block; font-size: 1.1rem; color: var(--fs-forest-ink); }
.fs-status__text span { font-size: .93rem; color: var(--fs-ink-soft); }

/* --- Generic section -------------------------------------------------- */

.fs-section { padding: var(--fs-s5) 0; }
.fs-section--tint { background: #fff; }
.fs-section__head { max-width: 58ch; margin: 0 0 var(--fs-s4); }
.fs-section__head h2 { margin: 0 0 var(--fs-s2); }
.fs-section__head p  { margin: 0; color: var(--fs-ink-soft); font-size: 1.08rem; }

/* --- Raise cards ------------------------------------------------------ */

.fs-cards {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: var(--fs-s3);
}
.fs-rcard {
	background: var(--fs-card);
	border: 1px solid var(--fs-border);
	border-radius: var(--fs-radius);
	overflow: hidden;
	display: flex;
	flex-direction: column;
}
.fs-rcard img {
	width: 100%;
	aspect-ratio: 5 / 4;
	object-fit: cover;
	display: block;
}
.fs-rcard__body { padding: var(--fs-s3); }
.fs-rcard__body h3 { margin: 0 0 6px; }
.fs-rcard__body p  { margin: 0; color: var(--fs-ink-soft); font-size: .97rem; }

/* --- Split (text beside a photo) -------------------------------------- */

.fs-split {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
	gap: var(--fs-s4);
	align-items: center;
}
.fs-split img {
	width: 100%;
	border-radius: var(--fs-radius);
	aspect-ratio: 4 / 3;
	object-fit: cover;
	box-shadow: var(--fs-shadow);
}
.fs-split__text h2 { margin: 0 0 var(--fs-s2); }
.fs-split__text p  { color: var(--fs-ink-soft); }
.fs-split--flip img { order: 2; }

/* --- Pull quote — gold rule, the one SAU flourish on a text page ------- */

.fs-pull {
	border-left: 5px solid var(--sau-gold);
	padding: var(--fs-s1) 0 var(--fs-s1) var(--fs-s3);
	margin: var(--fs-s4) 0;
	max-width: 60ch;
}
.fs-pull p {
	font-family: var(--fs-display);
	font-size: clamp(1.3rem, 1.1rem + .8vw, 1.7rem);
	line-height: 1.32;
	color: var(--fs-forest-ink);
	margin: 0 0 var(--fs-s1);
}
.fs-pull cite { font-style: normal; font-size: .93rem; color: var(--fs-ink-soft); }

/* --- Navigation ------------------------------------------------------- */

.fs-nav { background: #fff; border-bottom: 1px solid var(--fs-border); }
.fs-nav__inner {
	display: flex;
	align-items: center;
	gap: var(--fs-s3);
	padding: 14px 0;
}
.fs-nav__brand { display: block; line-height: 0; margin-right: auto; }

/* Links: an inline row on wide screens, a disclosure on narrow ones */
.fs-nav__check { display: none; }
.fs-nav__toggle { display: none; }
.fs-nav__links {
	display: flex;
	align-items: center;
	gap: var(--fs-s3);
	list-style: none;
	margin: 0;
	padding: 0;
}
.fs-nav__links a {
	text-decoration: none;
	font-weight: 600;
	font-size: .97rem;
	color: var(--fs-ink);
	padding: 8px 2px;
	display: inline-block;
	border-bottom: 3px solid transparent;
}
.fs-nav__links a:hover,
.fs-nav__links .current-menu-item > a { color: var(--fs-forest); border-bottom-color: var(--sau-gold); }

.fs-nav__cart {
	background: var(--fs-forest);
	color: #fff !important;
	border-radius: 999px;
	padding: 9px 18px;
	min-height: 44px;
	display: inline-flex;
	align-items: center;
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
}
.fs-nav__cart:hover { background: var(--fs-forest-ink); }

@media (max-width: 900px) {
	.fs-nav__inner { flex-wrap: wrap; gap: var(--fs-s2); }
	.fs-nav__brand { margin-right: auto; }
	.fs-nav__links { order: 3; flex-basis: 100%; display: none; }
	.fs-nav__check:checked ~ .fs-nav__links { display: flex; }

	.fs-nav__toggle {
		display: inline-flex;
		align-items: center;
		gap: 10px;
		list-style: none;
		cursor: pointer;
		min-height: 44px;
		padding: 8px 14px;
		border: 1.5px solid var(--fs-border);
		border-radius: 999px;
		font-weight: 600;
		font-size: .95rem;
		color: var(--fs-ink);
		user-select: none;
		width: max-content;
		margin-left: auto;
	}
	.fs-nav__toggle::-webkit-details-marker { display: none; }
	.fs-nav__toggle::marker { content: ""; }
	.fs-nav__check:checked ~ .fs-nav__toggle { border-color: var(--fs-forest); color: var(--fs-forest-ink); }
	.fs-nav__bars { display: inline-flex; flex-direction: column; gap: 4px; }
	.fs-nav__bars i { display: block; width: 18px; height: 2px; background: currentColor; border-radius: 2px; }

	.fs-nav__links {
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		margin-top: var(--fs-s2);
		border-top: 1px solid var(--fs-border);
	}
	.fs-nav__links li { border-bottom: 1px solid var(--fs-border); }
	.fs-nav__links a {
		display: block;
		padding: 14px 4px;
		border-bottom: none;
		font-size: 1.05rem;
	}
	.fs-nav__links a:hover { background: var(--fs-sky-wash); border-bottom: none; }

	.fs-phero__inner h1 { max-width: none; }
	.fs-split--flip img { order: 0; }
}
}

/* ==========================================================================
   Full-bleed sections
   Hello Elementor constrains .site-main, but the hero and the coloured bands
   need the whole viewport. Breaking out beats fighting the page template.
   ========================================================================== */

/* 100vw counts the scrollbar, so a naive breakout overflows by ~15px and the
   whole page scrolls sideways. Clipping on the body absorbs that; `clip` is
   used ahead of `hidden` because it does not create a scroll container and so
   leaves position:sticky working. */
html:has(body.fs-site),
.fs-site { overflow-x: hidden; overflow-x: clip; }

.fs-site .fs-phero,
.fs-site .fs-section,
.fs-site .fs-hero {
	width: 100vw;
	max-width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
}

/* We supply our own header and navigation, so the theme's are duplicates. */
.fs-site .site-header { display: none; }

/* The hero states the page's name far better than a stacked <h1> above it. */
.fs-site.page .site-main > .entry-header,
.fs-site.page .page-header,
.fs-site.page > .site-main > h1.entry-title { display: none; }

.fs-site .site-main {
	padding-top: 0;
	padding-bottom: 0;
}

/* Woo pages keep a normal reading measure */
.fs-site.woocommerce-page .site-main,
.fs-site.woocommerce-cart .site-main,
.fs-site.woocommerce-checkout .site-main { padding-bottom: var(--fs-s5); }

/* ==========================================================================
   Woo-rendered pages (shop, product, cart, checkout, account)
   Hello Elementor caps .site-main at 600px — fine for a blog post, useless
   for a product grid. Give these pages the same measure as .fs-wrap.
   ========================================================================== */

.fs-site.woocommerce-page .site-main,
.fs-site.woocommerce .site-main,
.fs-site.single-product .site-main {
	max-width: 1160px;
	width: min(1160px, 100% - 2rem);
	padding-left: 0;
	padding-right: 0;
	margin-left: auto;
	margin-right: auto;
}

/* The parent theme's footer duplicates ours */
.fs-site .site-footer { display: none; }

/* --- Single product ------------------------------------------------------ */

.fs-site.single-product .woocommerce-breadcrumb,
.fs-site.single-product .product_meta,
.fs-site.single-product p.stock { display: none; }

.fs-site.single-product div.product { padding-top: var(--fs-s4); }
.fs-site.single-product div.product .product_title { margin-bottom: var(--fs-s1); }
.fs-site.single-product div.product .price { font-size: 1.35rem; font-weight: 600; color: var(--fs-ink); }
.fs-site.single-product div.product .woocommerce-product-gallery img {
	border-radius: var(--fs-radius);
}
.fs-site.single-product form.cart {
	display: flex;
	align-items: center;
	gap: var(--fs-s2);
	margin: var(--fs-s3) 0;
}
.fs-site.single-product form.cart .quantity input.qty {
	min-height: 44px;
	width: 72px;
	border: 1px solid var(--fs-border);
	border-radius: var(--fs-radius-sm);
	font-size: 16px;
	text-align: center;
}
.fs-site.single-product .related.products > h2 {
	font-size: 1.5rem;
	margin: var(--fs-s5) 0 var(--fs-s3);
}
.fs-site.single-product .summary .fs-stock { padding-left: 0; padding-right: 0; }

/* Woo's own button colours (single product + blocks) → theme green */
.fs-site .single_add_to_cart_button,
.fs-site .wc-block-components-button,
.fs-site .wp-block-button__link,
.fs-site .wc-block-cart__submit-button,
.fs-site .wc-block-components-checkout-place-order-button {
	background: var(--fs-forest) !important;
	color: #fff !important;
	border: none !important;
	border-radius: 999px !important;
	font-family: var(--fs-body) !important;
	font-weight: 600 !important;
	min-height: 44px;
	padding: 12px 26px !important;
}
.fs-site .single_add_to_cart_button:hover,
.fs-site .wc-block-components-button:hover,
.fs-site .wp-block-button__link:hover { background: var(--fs-forest-ink) !important; }

/* --- Cart / checkout blocks --------------------------------------------- */

.fs-site .wc-block-cart__empty-cart__title,
.fs-site .wp-block-woocommerce-empty-cart-block h2 { font-family: var(--fs-display); color: var(--fs-forest-ink); }
.fs-site .wp-block-woocommerce-empty-cart-block > .wp-block-image,
.fs-site .wc-block-cart__empty-cart__icon,
.fs-site .wp-block-woocommerce-empty-cart-block svg { display: none !important; }
.fs-site .wp-block-woocommerce-empty-cart-block { padding-top: var(--fs-s5); }

/* "New in store" grid inside the empty cart → same card language as the shop */
.fs-site .wc-block-grid__products {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: var(--fs-s3);
	margin-top: var(--fs-s3);
}
.fs-site .wc-block-grid__product {
	background: var(--fs-card);
	border: 1px solid var(--fs-border);
	border-radius: var(--fs-radius);
	padding: 0 0 var(--fs-s2);
	max-width: none;
	flex: none;
	overflow: hidden;
}
.fs-site .wc-block-grid__product-image img { aspect-ratio: 4 / 3; object-fit: cover; width: 100%; }
.fs-site .wc-block-grid__product-title { font-family: var(--fs-display); font-size: 1.05rem; color: var(--fs-forest-ink); padding: var(--fs-s2) var(--fs-s2) 0; text-decoration: none; }
.fs-site .wc-block-grid__product-price { padding: 0 var(--fs-s2); }
.fs-site .wc-block-grid__product-add-to-cart { padding: var(--fs-s1) var(--fs-s2) 0; }
.fs-site .wc-block-grid__product-onsale { display: none; }

.fs-site .wc-block-components-sidebar .wc-block-components-panel,
.fs-site .wc-block-components-order-summary,
.fs-site .wc-block-components-totals-wrapper,
.fs-site .wc-block-components-main { font-family: var(--fs-body); }
.fs-site .wc-block-components-checkout-step__heading,
.fs-site .wc-block-components-title { font-family: var(--fs-display); color: var(--fs-forest-ink); }

/* Empty cart: keep the reassurance line to a reading measure, and give the
   block some air above the footer. */
.fs-site .wp-block-woocommerce-empty-cart-block {
	padding: var(--fs-s5) var(--fs-s2) var(--fs-s6);
	text-align: center;
}
.fs-site .fs-empty-cart__text {
	max-width: 52ch;
	margin: 0 auto var(--fs-s3);
	color: var(--fs-ink-soft);
}
.fs-site .wc-block-cart__empty-cart__title { font-size: clamp(1.6rem, 1.3rem + 1vw, 2.2rem); margin-bottom: var(--fs-s2); }

/* ==========================================================================
   Drawn product placeholders
   ========================================================================== */

.fs-ph {
	width: 100%;
	aspect-ratio: 4 / 3;
	display: grid;
	place-items: center;
	background: linear-gradient(160deg, var(--fs-sky-wash) 0%, var(--fs-sky) 100%);
	margin: 0 0 var(--fs-s2);
}
.fs-ph svg {
	width: 38%;
	max-width: 96px;
	height: auto;
	fill: none;
	stroke: var(--fs-forest);
	stroke-width: 2.2;
	stroke-linecap: round;
	stroke-linejoin: round;
	opacity: .85;
}
.fs-ph--pork svg, .fs-ph--beef svg, .fs-ph--lamb svg { stroke: var(--fs-forest-ink); }
.fs-ph--plant svg, .fs-ph--produce svg { stroke: var(--fs-field-deep); }
.fs-ph--generic svg { stroke: var(--fs-sun-deep); }

.fs-ph--large { aspect-ratio: 1 / 1; border-radius: var(--fs-radius); }
.fs-ph--thumb { width: 64px; aspect-ratio: 1 / 1; border-radius: 8px; margin: 0; }
.fs-ph--thumb svg { width: 60%; }

.fs-site ul.products li.product.outofstock .fs-ph svg { opacity: .35; }

/* Shop cards without a real photo: the drawn tile is a short band, not a
   4:3 hero. With 17 beef cuts and no photos the grid was mostly empty sky
   (Josh, Oct 2026). Real product photos keep their 4:3 / 16:9 frame. */
.fs-site ul.products li.product .fs-ph { aspect-ratio: auto !important; height: 88px; }
.fs-site ul.products li.product .fs-ph svg { width: auto; height: 46px; }
.fs-site ul.products li.product:has(.fs-ph) .fs-soldout-overprint { aspect-ratio: auto; height: 88px; }

/* ==========================================================================
   Find my order
   ========================================================================== */

.fs-lookup { max-width: 560px; margin: 0 auto; }
.fs-lookup__form { background: var(--fs-card); border: 1px solid var(--fs-border); border-radius: var(--fs-radius); padding: var(--fs-s3); }
.fs-lookup__form .form-row { margin: 0 0 var(--fs-s2); }
.fs-lookup__form label { display: block; font-weight: 600; font-size: 14px; margin-bottom: 5px; }
.fs-lookup__form .input-text { width: 100%; border: 1px solid var(--fs-border); border-radius: var(--fs-radius-sm); padding: 12px 14px; min-height: 44px; font-size: 16px; }
.fs-lookup__result { background: var(--fs-card); border: 1px solid var(--fs-border); border-top: 5px solid var(--fs-forest); border-radius: var(--fs-radius); padding: var(--fs-s3); }
.fs-lookup__result h2 { margin: 4px 0 var(--fs-s2); }
.fs-lookup__result .fs-facts { margin: 0 0 var(--fs-s3); box-shadow: none; background: var(--fs-sky-wash); }
.fs-lookup__items { list-style: none; margin: 0 0 var(--fs-s1); padding: 0; }
.fs-lookup__items li { padding: 4px 0; border-bottom: 1px solid var(--fs-border); }
.fs-lookup__qty { font-weight: 700; color: var(--fs-forest); display: inline-block; min-width: 2.2ch; }
.fs-lookup__total { font-size: 1.3rem; font-weight: 600; margin: var(--fs-s1) 0 var(--fs-s2); }
.fs-lookup__again { font-weight: 600; }
.fs-site.page-find-my-order .site-main { max-width: 1160px; width: min(1160px, 100% - 2rem); margin-inline: auto; padding: var(--fs-s5) 0; }

/* ==========================================================================
   Contact
   ========================================================================== */

.fs-contact {
	display: grid;
	grid-template-columns: minmax(0, 1.4fr) minmax(280px, 1fr);
	gap: var(--fs-s4);
	align-items: start;
}
@media (max-width: 800px) { .fs-contact { grid-template-columns: 1fr; } }

.fs-contact__form {
	background: var(--fs-card);
	border: 1px solid var(--fs-border);
	border-radius: var(--fs-radius);
	padding: var(--fs-s3);
}
.fs-contact__side { padding-top: 4px; }
.fs-contact__note { color: var(--fs-ink-soft); font-size: .97rem; margin: 6px 0 0; }
.fs-site.page-contact .site-main { max-width: 1160px; width: min(1160px, 100% - 2rem); margin-inline: auto; padding: var(--fs-s5) 0; }

/* Gravity Forms, in the house style */
.fs-site .gform_wrapper.gravity-theme .gfield_label,
.fs-site .gform_wrapper .gfield_label { font-family: var(--fs-body); font-size: 14px; font-weight: 600; color: var(--fs-ink); margin-bottom: 6px; }
.fs-site .gform_wrapper.gravity-theme input:not([type="submit"]):not([type="button"]),
.fs-site .gform_wrapper.gravity-theme select,
.fs-site .gform_wrapper.gravity-theme textarea {
	border: 1px solid var(--fs-border);
	border-radius: var(--fs-radius-sm);
	padding: 12px 14px;
	min-height: 44px;
	font-size: 16px;
	font-family: var(--fs-body);
	background: #fff;
	color: var(--fs-ink);
	width: 100%;
}
.fs-site .gform_wrapper.gravity-theme textarea { min-height: 150px; }
.fs-site .gform_wrapper.gravity-theme input:focus,
.fs-site .gform_wrapper.gravity-theme select:focus,
.fs-site .gform_wrapper.gravity-theme textarea:focus { border-color: var(--fs-forest); outline: 3px solid var(--fs-forest); outline-offset: 1px; }
.fs-site .gform_wrapper.gravity-theme .gfield_description { font-size: 13px; color: var(--fs-ink-soft); padding-top: 4px; }
.fs-site .gform_wrapper.gravity-theme .gform_footer input[type="submit"],
.fs-site .gform_wrapper.gravity-theme .gform_button {
	background: var(--fs-forest);
	color: #fff;
	border: none;
	border-radius: 999px;
	padding: 13px 28px;
	font-weight: 600;
	font-size: 15px;
	min-height: 44px;
	cursor: pointer;
}
.fs-site .gform_wrapper.gravity-theme .gform_footer input[type="submit"]:hover { background: var(--fs-forest-ink); }
.fs-site .gform_wrapper.gravity-theme .gform_validation_errors,
.fs-site .gform_wrapper.gravity-theme .gfield_validation_message { border-radius: var(--fs-radius-sm); }
.fs-site .gform_confirmation_message {
	background: var(--fs-card);
	border-top: 5px solid var(--fs-forest);
	border-radius: var(--fs-radius);
	padding: var(--fs-s3);
	font-size: 1.05rem;
}

/* Directory card from [dirswitch], sat quietly beside the form */
.fs-site .dirswitch,
.fs-site .dirswitch-card,
.fs-site .directory-card {
	background: var(--fs-card);
	border: 1px solid var(--fs-border);
	border-radius: var(--fs-radius);
	padding: var(--fs-s3);
	margin-top: 8px;
}
.fs-site .dirswitch a, .fs-site .dirswitch-card a { color: var(--fs-forest); }
.fs-site .dirswitch img, .fs-site .dirswitch-card img { border-radius: 50%; }

/* Gravity Forms is on its Orbital theme here, which is driven by CSS
   variables. Setting those beats overriding its selectors. */
.fs-site .gform_wrapper.gform-theme,
.fs-site .gform_wrapper.gform-theme--orbital {
	--gf-color-primary: var(--fs-forest);
	--gf-color-primary-darker: var(--fs-forest-ink);
	--gf-color-primary-contrast: #fff;
	--gf-color-in-error: var(--fs-alert);
	--gf-font-size-primary: 16px;
	--gf-font-family: var(--fs-body);
	--gf-label-font-weight: 600;
	--gf-label-color-primary: var(--fs-ink);
	--gf-desc-color: var(--fs-ink-soft);
	--gf-ctrl-border-color: var(--fs-border);
	--gf-ctrl-border-color-hover: var(--fs-forest);
	--gf-ctrl-border-color-focus: var(--fs-forest);
	--gf-ctrl-radius: 10px;
	--gf-ctrl-size: 44px;
	--gf-ctrl-padding-x: 14px;
	--gf-ctrl-btn-bg-color-primary: var(--fs-forest);
	--gf-ctrl-btn-bg-color-hover-primary: var(--fs-forest-ink);
	--gf-ctrl-btn-radius: 999px;
	--gf-ctrl-btn-font-weight: 600;
	--gf-ctrl-btn-padding-x: 28px;
	--gf-ctrl-btn-size: 46px;
	--gf-field-gap-y: 18px;
	--gf-color-in-error-contrast: #fff;
}
.fs-site .gform_wrapper.gform-theme .gform_button:focus-visible,
.fs-site .gform_wrapper.gform-theme input:focus-visible,
.fs-site .gform_wrapper.gform-theme textarea:focus-visible { outline: 3px solid var(--fs-forest); outline-offset: 2px; }

.fs-footer__staff a { color: #aec4e6 !important; font-weight: 500 !important; }

/* ==========================================================================
   The mark
   ========================================================================== */

.fs-logo { display: block; height: auto; }
.fs-logo--nav { width: clamp(220px, 28vw, 360px); }
.fs-logo--footer { width: 200px; margin-bottom: 8px; }
.fs-logo--text { font-family: var(--fs-display); font-size: 1.4rem; color: var(--fs-forest-ink); }
.fs-footer .fs-logo--text { color: #fff; }
@media (max-width: 900px) { .fs-logo--nav { width: min(240px, 58vw); } }

/* Pre-header: one quiet line. On a phone the tagline goes and the bar
   shrinks to a strip, so the mark below it is the first thing you see. */
.fs-topbar__inner { min-height: 36px; padding: 4px 0; }
.fs-topbar a { font-size: 13px; }
@media (max-width: 640px) {
	.fs-topbar__tag { display: none; }
	.fs-topbar__inner { min-height: 32px; justify-content: center; }
	.fs-topbar { border-bottom-width: 2px; }
}

/* Buttons are buttons, not links: no underline, in any state. */
.fs-site .button, .fs-site a.button, .fs-site .fs-btn, .fs-site .fs-nav__cart,
.fs-site .wp-block-button__link, .fs-site .wc-block-components-button,
.fs-site .single_add_to_cart_button, .fs-site .woocommerce-button,
.fs-site .fs-status .button, .fs-site .fs-lookup .button,
.fs-site .button:hover, .fs-site a.button:hover, .fs-site .fs-btn:hover, .fs-site .wp-block-button__link:hover,
.fs-site .button:focus, .fs-site a.button:focus { text-decoration: none !important; }

/* --- Product card alignment (shop grid + related products) ------------ */

/* Stamp sits on the image tile, never on the title */
.fs-site ul.products li.product { display: flex; flex-direction: column; }
.fs-soldout-overprint { inset: 0 0 auto 0; aspect-ratio: 4 / 3; }

/* Unit never splits mid-phrase */
.fs-site ul.products li.product .price .fs-unit { white-space: nowrap; }

/* Stock text, marks and bar share the card's inset */
.fs-site ul.products li.product .fs-stock { padding: var(--fs-s2) var(--fs-s3) 0; }

/* Button: one line, sits at the bottom of the card */
.fs-site ul.products li.product .button {
	white-space: nowrap;
	align-self: flex-start;
	margin-top: auto;
	padding-top: var(--fs-s2);
}
.fs-site ul.products li.product .button { margin: auto var(--fs-s3) 0; padding: 13px 22px; }

@media (max-width: 560px) {
	/* One card per row on phones — five items do not need a two-up grid */
	.fs-site ul.products { grid-template-columns: 1fr; }
	.fs-site ul.products li.product .woocommerce-loop-product__title { font-size: 1.2rem !important; }
	.fs-site ul.products li.product .button { align-self: stretch; text-align: center; margin: auto var(--fs-s3) 0; }
	.fs-site ul.products li.product img, .fs-site ul.products li.product .fs-ph { aspect-ratio: 16 / 9; }
	.fs-soldout-overprint { aspect-ratio: 16 / 9; }
	.fs-site ul.products li.product .fs-ph { height: 72px; }
	.fs-site ul.products li.product .fs-ph svg { height: 38px; }
	.fs-site ul.products li.product:has(.fs-ph) .fs-soldout-overprint { height: 72px; }
}

/* ==========================================================================
   Classic cart
   ========================================================================== */

.fs-site.woocommerce-cart .site-main { padding-top: var(--fs-s4); }
.fs-site .woocommerce table.shop_table td, .fs-site .woocommerce table.shop_table th { padding: 14px 12px; border-color: var(--fs-border); }
.fs-site .woocommerce table.shop_table .product-name a { color: var(--fs-forest-ink); font-weight: 600; text-decoration: none; }
.fs-site .woocommerce table.shop_table .product-thumbnail img, .fs-site .woocommerce table.shop_table .product-thumbnail .fs-ph { width: 64px; }
.fs-site .woocommerce .quantity .qty { min-height: 44px; width: 72px; border: 1px solid var(--fs-border); border-radius: var(--fs-radius-sm); text-align: center; font-size: 16px; }
.fs-site .woocommerce .cart-collaterals .cart_totals { width: 100%; max-width: 520px; float: none; margin: var(--fs-s3) 0 0 auto; }
.fs-site .woocommerce .cart_totals h2 { font-size: 1.3rem; margin: 0 0 var(--fs-s2); }
.fs-site .woocommerce .cart_totals table.shop_table { margin: 0; }
.fs-site .woocommerce .wc-proceed-to-checkout .checkout-button { display: block; text-align: center; font-size: 1.05rem; }
.fs-site .woocommerce .coupon { display: none; } /* coupons are off */
.fs-site .woocommerce button[name="update_cart"] { border: 1.5px solid var(--fs-border) !important; background: #fff !important; color: var(--fs-ink) !important; }
.fs-site .woocommerce button[name="update_cart"]:disabled { opacity: .45; }

/* Empty cart, classic template */
.fs-site .cart-empty.woocommerce-info {
	display: block; text-align: center; background: var(--fs-card); border: 1px solid var(--fs-border);
	border-top: 5px solid var(--fs-forest); border-radius: var(--fs-radius); padding: var(--fs-s4) var(--fs-s3) var(--fs-s2); margin: 0;
}
.fs-site .cart-empty.woocommerce-info::before { display: none; }
.fs-empty-cart__title { display: block; font-family: var(--fs-display); font-size: clamp(1.6rem, 1.3rem + 1vw, 2.2rem); color: var(--fs-forest-ink); margin-bottom: 10px; }
.fs-empty-cart__text { display: block; max-width: 52ch; margin: 0 auto; color: var(--fs-ink-soft); }
.fs-site .return-to-shop { text-align: center; margin: var(--fs-s3) 0 var(--fs-s5); }

@media (max-width: 768px) {
	/* Woo's small-screen cart stacks each cell with a label; keep it tidy */
	.fs-site .woocommerce table.shop_table_responsive tr td { padding: 10px 12px; }
	.fs-site .woocommerce table.shop_table_responsive tr td::before { font-weight: 600; color: var(--fs-ink-soft); }
	.fs-site .woocommerce table.shop_table_responsive tr.cart_item { background: var(--fs-card); border-radius: var(--fs-radius-sm); display: block; margin-bottom: var(--fs-s2); border: 1px solid var(--fs-border); }
	.fs-site .woocommerce table.shop_table_responsive tr td.product-remove { text-align: right !important; padding-bottom: 0; }
	.fs-site .woocommerce table.shop_table_responsive tr td.product-remove::before { display: none; }
}

/* ==========================================================================
   Footer — tight, left-aligned, one block
   ========================================================================== */

.fs-footer { margin-top: 0; padding: var(--fs-s4) 0 var(--fs-s3); line-height: 1.35; }
.fs-footer__row { display: grid; grid-template-columns: auto 1fr; gap: 10px var(--fs-s4); align-items: center; }
.fs-footer__brand { display: flex; flex-direction: column; gap: 6px; }
.fs-footer__brand .fs-logo--footer { width: 170px; margin: 0; }
.fs-footer__brand span { font-size: .84rem; line-height: 1.3; }
.fs-footer__links { gap: 6px 18px; justify-content: flex-end; }
.fs-footer__links a { font-size: .9rem; line-height: 1.3; }
.fs-footer__fine { grid-column: 1 / -1; margin: 6px 0 0; font-size: .78rem; line-height: 1.3; padding-top: 10px; border-top: 1px solid rgba(255,255,255,.18); }

/* The section before the footer already carries its own bottom padding */
.fs-site .fs-section:last-of-type { padding-bottom: var(--fs-s5); }

@media (max-width: 700px) {
	.fs-footer { padding: var(--fs-s3) 0 var(--fs-s2); }
	.fs-footer__row { grid-template-columns: 1fr; gap: 12px; }
	.fs-footer__brand .fs-logo--footer { width: 150px; }
	.fs-footer__links { justify-content: flex-start; gap: 4px 16px; }
	.fs-footer__fine { margin-top: 2px; }
}

/* Header ground: a soft white-to-grey wash gives the gold in the full-colour
   mark something to sit against, and a hairline shadow gives it an edge. */
.fs-nav {
	background: linear-gradient(180deg, #ffffff 0%, #f3f6fa 62%, #e9eef5 100%);
	border-bottom: 1px solid #d7dfe9;
}
.fs-logo--nav { filter: drop-shadow(0 1px 1px rgba(20, 45, 61, .22)) drop-shadow(0 0 .5px rgba(20, 45, 61, .18)); }

/* ==========================================================================
   Staff sign in
   ========================================================================== */

.fs-staff-login {
	max-width: 480px;
	margin: 0 auto;
	background: var(--fs-card);
	border: 1px solid var(--fs-border);
	border-top: 5px solid var(--sau-blue);
	border-radius: var(--fs-radius);
	padding: var(--fs-s4) var(--fs-s3) var(--fs-s3);
	text-align: center;
}
.fs-staff-login h1 { font-size: clamp(1.8rem, 1.4rem + 1.2vw, 2.4rem); margin: 6px 0 var(--fs-s2); }
.fs-staff-login p { color: var(--fs-ink-soft); }
.fs-staff-login .wpo365-mssignin-wrapper { padding: var(--fs-s2) 0 var(--fs-s3) !important; }
.fs-staff-login .wpo365-mssignin-button { min-height: 46px !important; height: 46px !important; max-height: 46px !important; padding: 0 20px !important; }
.fs-staff-login__note { font-size: .92rem; margin: 0; padding-top: var(--fs-s2); border-top: 1px solid var(--fs-border); }
.fs-site.page-staff-login .site-main { max-width: 1160px; width: min(1160px, 100% - 2rem); margin-inline: auto; padding: var(--fs-s5) 0; }

/* ==========================================================================
   Layout corrections: explicit columns, tighter rhythm
   ========================================================================== */

.fs-section { padding: var(--fs-s4) 0 56px; }
.fs-section + .fs-section { padding-top: 56px; }
.fs-section__head { margin-bottom: var(--fs-s3); }

.fs-steps { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.fs-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.fs-split { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--fs-s4) var(--fs-s5); align-items: center; }
.fs-split img { width: 100%; max-width: none; }
.fs-split__text p { margin: 0 0 var(--fs-s2); }
.fs-split__text p:last-child { margin: var(--fs-s3) 0 0; }
.fs-split__text .button { margin-top: 4px; }

@media (max-width: 900px) {
	.fs-steps, .fs-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.fs-split { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
	.fs-steps, .fs-cards { grid-template-columns: 1fr; }
	.fs-section { padding: var(--fs-s4) 0; }
	.fs-section + .fs-section { padding-top: var(--fs-s4); }
}

/* ==========================================================================
   Single product: a compact image, the words carry it
   ========================================================================== */

.fs-site.single-product div.product .woocommerce-product-gallery { width: 34% !important; float: left; margin-bottom: var(--fs-s3); }
.fs-site.single-product div.product .summary { width: 60% !important; float: right; }
.fs-site.single-product div.product .woocommerce-product-gallery .fs-ph--large,
.fs-site.single-product div.product .woocommerce-product-gallery img { aspect-ratio: 4 / 3; max-height: 260px; width: 100%; border-radius: var(--fs-radius); object-fit: cover; margin: 0; }
.fs-site.single-product div.product .woocommerce-product-gallery__wrapper { margin: 0; }
.fs-site.single-product .related.products { clear: both; padding-top: var(--fs-s3); }
.fs-site.single-product .fs-stock { padding-top: 6px; }
@media (max-width: 768px) {
	.fs-site.single-product div.product .woocommerce-product-gallery,
	.fs-site.single-product div.product .summary { width: 100% !important; float: none; }
	.fs-site.single-product div.product .woocommerce-product-gallery .fs-ph--large { max-height: 180px; }
}

/* Header: more room around the mark */
.fs-nav__inner { padding: 22px 0; }
@media (max-width: 900px) { .fs-nav__inner { padding: 16px 0; } }

/* Split sections: image left, text right, centred at a reading width */
.fs-split {
	grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
	gap: var(--fs-s4) var(--fs-s5);
	max-width: 980px;
	margin: 0 auto;
	align-items: center;
}
.fs-split img, .fs-split .fs-ph { order: 0; aspect-ratio: 4 / 3; }
.fs-split__text { order: 1; }
.fs-split--flip img { order: 0; } /* every split reads image → text now */
.fs-split__text h2 { font-size: clamp(1.6rem, 1.3rem + 1vw, 2.2rem); }
@media (max-width: 900px) {
	.fs-split { grid-template-columns: 1fr; max-width: 560px; }
}

/* ==========================================================================
   Split sections, pinned
   WP Rocket lazy-load adds a <noscript> twin after each image; inside a grid
   that twin takes a cell and shoves the text into the wrong column. Hide it
   and place the two real children explicitly.
   ========================================================================== */

.fs-split > noscript, .fs-split > script { display: none !important; }
.fs-split { grid-template-rows: auto; align-items: center; }
.fs-split > img, .fs-split > .fs-ph, .fs-split > picture { grid-column: 1; grid-row: 1; }
.fs-split > .fs-split__text { grid-column: 2; grid-row: 1; }
.fs-split__text > :first-child { margin-top: 0; }
.fs-split__text > :last-child { margin-bottom: 0; }

/* Head → block rhythm on About */
.fs-section__head { margin-bottom: var(--fs-s3); max-width: 62ch; }
.fs-section__head + .fs-split { margin-top: 0; }
.fs-pull { margin: var(--fs-s4) auto 0; max-width: 980px; }
.fs-factlist { max-width: 980px; margin-inline: auto; }
.fs-section .fs-split + .fs-split { margin-top: var(--fs-s5); }

@media (max-width: 900px) {
	.fs-split > img, .fs-split > .fs-ph, .fs-split > picture { grid-column: 1; grid-row: 1; }
	.fs-split > .fs-split__text { grid-column: 1; grid-row: 2; }
}

/* Belt and braces: any empty paragraph that still sneaks into a grid takes no cell */
.fs-split > p:empty, .fs-steps > p:empty, .fs-cards > p:empty, .fs-section > p:empty { display: none !important; }

/* ==========================================================================
   SAU marks in the bars; no gold rules
   ========================================================================== */

.fs-topbar { border-bottom: 0 !important; }
.fs-topbar__inner { min-height: 44px; padding: 8px 0; }
.fs-topbar__sau { display: block; line-height: 0; }
.fs-topbar__sau img { height: 26px; width: auto; display: block; }
@media (max-width: 640px) {
	.fs-topbar__inner { min-height: 40px; justify-content: center; }
	.fs-topbar__sau img { height: 22px; }
}

.fs-footer { border-top: 0; }
.fs-footer__row { grid-template-columns: auto 1fr auto; align-items: center; }
.fs-footer__sau { display: block; line-height: 0; justify-self: end; }
.fs-footer__sau img { height: 34px; width: auto; display: block; }
.fs-footer__links { justify-content: center; }
@media (max-width: 700px) {
	.fs-footer__row { grid-template-columns: 1fr; }
	.fs-footer__sau { justify-self: start; }
	.fs-footer__links { justify-content: flex-start; }
}

/* ==========================================================================
   Elementor-built pages and Theme Builder chrome
   ========================================================================== */

/* Farmstead pages use the header_footer template: no theme title, full width */
.fs-site.elementor-page .site-main { max-width: none; width: 100%; padding: 0; }
.fs-site .elementor-location-header, .fs-site .elementor-location-footer { width: 100%; }

/* Nav menu widget: pills like the old nav; burger on small screens */
.fs-site .elementor-nav-menu--main .elementor-item { font-family: var(--fs-body); }
.fs-site .elementor-menu-toggle { border-radius: 999px; border: 1.5px solid var(--fs-border); min-height: 44px; padding: 8px 14px; }

/* Shortcode widgets inherit the storefront styles they already had */
.fs-site .elementor-widget-shortcode .fs-status { box-shadow: var(--fs-shadow-lg); }
.fs-site .elementor-widget-shortcode .dirswitch, .fs-site .elementor-widget-shortcode .dirswitch-card {
	background: var(--fs-card); border: 1px solid var(--fs-border); border-radius: var(--fs-radius); padding: var(--fs-s3);
}
.fs-site .elementor-widget-shortcode .fs-lookup { max-width: none; }
.fs-site .elementor-widget-shortcode .wpo365-mssignin-wrapper { padding: 8px 0 12px !important; }

/* icon-box: the gold badge sits centred over the card text */
.fs-site .elementor-widget-icon-box .elementor-icon { background-color: var(--fs-sun) !important; color: var(--fs-ink) !important; }

/* "Where on campus?" row under the delivery choice at checkout (plugin SF_Campus, Oct 2026) */
.fs-site .fs-campus-row td { text-align: left; }
.fs-site .fs-campus-row label { display: block; font-weight: 700; margin-bottom: 6px; }
.fs-site .fs-campus-row input.input-text { width: 100%; max-width: 420px; box-sizing: border-box; }
.fs-site .fs-campus-help { display: block; margin-top: 4px; color: var(--fs-ink-soft); font-size: .85em; }

/* Two or more sales at once (Oct 2026): header cards + one section per sale */
.fs-sales { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--fs-s3); margin: var(--fs-s3) 0 var(--fs-s2); }
.fs-sale-card { display: flex; flex-direction: column; gap: 4px; padding: var(--fs-s3); background: #fff; border: 1px solid var(--fs-border); border-radius: var(--fs-radius); box-shadow: var(--fs-shadow); color: var(--fs-ink); text-decoration: none !important; }
.fs-sale-card:hover, .fs-sale-card:focus-visible { box-shadow: var(--fs-shadow-lg); border-color: var(--fs-forest); }
.fs-sale-card__name { font-family: var(--fs-display); font-weight: 400; font-size: 1.45rem; color: var(--fs-forest-ink, #14532d); }
.fs-sale-card__line { font-size: .95rem; color: var(--fs-ink-soft); }
.fs-sale-card__go { margin-top: 8px; font-weight: 600; color: var(--fs-forest); }
.fs-hero__pay { margin: 0; }
.fs-hero__pay .fs-label { margin-right: 6px; }
.fs-sale { padding: var(--fs-s4) 0 0; scroll-margin-top: 90px; }
.fs-sale + .fs-sale { margin-top: var(--fs-s3); border-top: 1px solid var(--fs-border); }
.fs-sale__head { margin: 0 0 var(--fs-s3); }
.fs-sale__head h2 { margin: 0 0 4px; }
.fs-sale__head p { margin: 0; }
@media (max-width: 720px) {
	.fs-sales { grid-template-columns: 1fr; }
}
.fs-which-sale { margin: 0 0 var(--fs-s3); padding: 12px 16px; border-left: 4px solid var(--sau-gold, #fad200); background: var(--fs-card, #fff); border-radius: 8px; font-weight: 500; }

/* Shop: the board's bottom padding is trimmed and an "Available now" heading
   marks the start of the grid (the global .site-main padding-top:0 had put the
   cards flush against the hero; 96px + 40px then read as an empty gap). */
.fs-site.woocommerce-shop .fs-hero { padding-bottom: var(--fs-s4); }
.fs-site.woocommerce-shop .site-main { padding-top: var(--fs-s3); }
.fs-site.woocommerce-shop .fs-sale:first-child { padding-top: 0; }
.fs-available { margin: 0 0 var(--fs-s2); }
.fs-available h2 { margin: 0 0 2px; font-size: 1.6rem; }
.fs-available p { margin: 0; font-size: .95rem; }

/* Sold-out items as one line under each sale's grid (Oct 2026) */
.fs-soldout-line { margin: var(--fs-s3) 0 0; padding: 12px 16px; background: var(--fs-card, #fff); border: 1px dashed var(--fs-border); border-radius: 12px; color: var(--fs-ink-soft); font-size: .95rem; line-height: 1.5; }
.fs-soldout-line .fs-label { margin-right: 8px; color: #b42318; }
.fs-allsold { margin: 0; font-weight: 600; color: var(--fs-ink); }
