/* ==========================================================================
   Laraib Organic — shop.css
   The commerce surface: product archives, filter rail, toolbar, product card,
   cart, checkout and my-account.

   RULES OBEYED
   • Colours only from --lo-* tokens (tokens.css). Translucency via color-mix.
   • Rhythm from --lo-s1…--lo-s11 / --lo-section-y.
   • .lo-btn, .lo-badge, .lo-card, .lo-widget, .lo-chip, .lo-notice,
     .lo-media-frame and the pagination live in tokens.css / components.css —
     they are consumed here, never redefined.
   • WooCommerce's own stylesheets stay enqueued (removing them breaks the
     blocks, the cart and the checkout). Everything below simply outranks them
     on specificity, which is why archive rules are prefixed with
     `.woocommerce ul.products.lo-products` and the money pages with their
     WooCommerce body class.

   CONTENTS
     01  Shop shell + two-column layout
     02  Toolbar: result count, ordering, view switch
     03  Active filter chips
     04  Filter rail: categories, price, rating, offers, promo card
     05  Fractional star rating (.lo-rate)
     06  Product grid
     07  Product card
     08  List view
     09  Empty state + pagination
     10  Closing help band
     11  WooCommerce notices, store notice, misc resets
     12  Cart — blocks + classic shortcode
     13  Checkout — blocks + classic shortcode
     14  My account + order received
     15  Responsive
   ========================================================================== */


/* ==========================================================================
   01  Shop shell + two-column layout
   ========================================================================== */

.lo-woo { position: relative; }

/* Single product: single-product.css owns the interior — this only stops the
   gallery colliding with the sticky header. */
.lo-woo--single { padding-block: clamp(24px, 3vw, 48px) 0; }

.lo-shop {
	--lo-rail-w: 288px;
	overflow: clip;
}

.lo-shop__inner {
	display: grid;
	grid-template-columns: var(--lo-rail-w) minmax(0, 1fr);
	gap: clamp(28px, 3.2vw, 56px);
	align-items: start;
}

.lo-shop__main { min-width: 0; }

.lo-shop__sidebar {
	min-width: 0;
	scroll-margin-top: calc(var(--lo-header-h) + var(--lo-s5));
}

.lo-shop__sidebar-head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--lo-s3);
	margin-bottom: var(--lo-s5);
	padding-bottom: var(--lo-s3);
	border-bottom: 1px solid var(--lo-line);
}

.lo-shop__sidebar-title {
	display: inline-flex;
	align-items: center;
	gap: var(--lo-s2);
	margin: 0;
	font-family: var(--lo-font-display);
	font-size: var(--lo-fs-lg);
	font-weight: 600;
	color: var(--lo-text);
}
.lo-shop__sidebar-title svg { color: var(--lo-gold-600); }

.lo-shop__sidebar-reset {
	font-size: var(--lo-fs-xs);
	font-weight: 800;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--lo-muted);
	transition: color .22s var(--lo-ease);
}
.lo-shop__sidebar-reset:hover { color: var(--lo-ruby); }


/* ==========================================================================
   02  Toolbar
   Sticky under the condensed header on desktop.
   ========================================================================== */

.lo-toolbar {
	position: sticky;
	top: calc(var(--lo-header-h-stuck, 66px) + 10px);
	z-index: 6;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--lo-s4);
	margin-bottom: var(--lo-s6);
	padding: 10px 12px 10px 22px;
	border: 1px solid var(--lo-line-soft);
	border-radius: var(--lo-r-pill);
	background: color-mix(in srgb, var(--lo-paper) 86%, transparent);
	-webkit-backdrop-filter: saturate(1.6) blur(14px);
	backdrop-filter: saturate(1.6) blur(14px);
	box-shadow: 0 10px 26px -20px rgba(11, 59, 46, .55);
}

.admin-bar .lo-toolbar { top: calc(var(--lo-header-h-stuck, 66px) + 42px); }

.lo-toolbar__count { min-width: 0; }

.lo-toolbar__tools {
	display: flex;
	align-items: center;
	gap: var(--lo-s3);
	margin-left: auto;
}

/* --- "Showing 1–12 of 120 results" -------------------------------------- */
body.woocommerce .lo-toolbar .woocommerce-result-count,
.lo-toolbar .woocommerce-result-count {
	float: none;
	margin: 0;
	font-size: var(--lo-fs-sm);
	font-weight: 600;
	letter-spacing: .01em;
	color: var(--lo-muted);
}
.lo-toolbar .woocommerce-result-count::first-letter { text-transform: uppercase; }

/* --- jump-to-filters link (mobile mostly) -------------------------------- */
.lo-toolbar__refine {
	display: none;
	align-items: center;
	gap: 7px;
	padding: 9px 16px;
	border: 1px solid var(--lo-line);
	border-radius: var(--lo-r-pill);
	background: var(--lo-paper);
	color: var(--lo-green-900);
	font-size: var(--lo-fs-sm);
	font-weight: 700;
	transition: background-color .22s var(--lo-ease), color .22s var(--lo-ease), border-color .22s var(--lo-ease);
}
.lo-toolbar__refine:hover {
	background: var(--lo-green-900);
	border-color: var(--lo-green-900);
	color: var(--lo-paper);
}

/* --- ordering select ----------------------------------------------------- */
.lo-orderby,
body.woocommerce .lo-toolbar .lo-orderby {
	display: inline-flex;
	align-items: center;
	gap: var(--lo-s2);
	float: none;
	margin: 0;
}

.lo-orderby__label {
	font-size: var(--lo-fs-xs);
	font-weight: 800;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--lo-muted);
	white-space: nowrap;
}

.lo-orderby__select,
body.woocommerce .lo-toolbar .lo-orderby .lo-orderby__select {
	width: auto;
	min-width: 186px;
	max-width: 240px;
	padding: 10px 40px 10px 16px;
	border-radius: var(--lo-r-pill);
	font-size: var(--lo-fs-sm);
	font-weight: 700;
	color: var(--lo-green-900);
	box-shadow: none;
	background-position: calc(100% - 21px) calc(50% + 1px), calc(100% - 15px) calc(50% + 1px);
}
.lo-orderby__select:hover { border-color: var(--lo-green-300); }

/* WooCommerce's own script submits this form on change; the button is only a
   no-JS safety net. */
.lo-orderby__go {
	padding: 9px 16px;
	border: 1px solid var(--lo-line);
	border-radius: var(--lo-r-pill);
	background: var(--lo-green-900);
	color: var(--lo-paper);
	font-size: var(--lo-fs-sm);
	font-weight: 700;
	cursor: pointer;
}
.js .lo-orderby__go { display: none; }

/* --- grid / list switch --------------------------------------------------- */
.lo-viewswitch {
	display: inline-flex;
	align-items: center;
	gap: 3px;
	padding: 3px;
	border: 1px solid var(--lo-line);
	border-radius: var(--lo-r-pill);
	background: var(--lo-green-50);
}

.lo-viewswitch__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 34px;
	border-radius: var(--lo-r-pill);
	color: var(--lo-muted);
	transition: background-color .24s var(--lo-ease), color .24s var(--lo-ease), box-shadow .24s var(--lo-ease-out);
}
.lo-viewswitch__btn:hover { color: var(--lo-green-800); }
.lo-viewswitch__btn.is-active {
	background: var(--lo-paper);
	color: var(--lo-green-900);
	box-shadow: var(--lo-shadow-xs);
}


/* ==========================================================================
   03  Active filter chips
   ========================================================================== */

.lo-activefilters {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--lo-s2);
	margin: calc(var(--lo-s5) * -1) 0 var(--lo-s6);
	padding-top: var(--lo-s2);
}

.lo-activefilters__label {
	font-size: var(--lo-fs-xs);
	font-weight: 800;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--lo-muted);
	margin-right: var(--lo-s1);
}

.lo-activefilters__chip {
	background: var(--lo-green-50);
	border-color: var(--lo-green-100);
	color: var(--lo-green-800);
}
.lo-activefilters__chip:hover {
	background: var(--lo-green-900);
	border-color: var(--lo-green-900);
	color: var(--lo-paper);
}
.lo-activefilters__chip .lo-chip__x svg { width: 11px; height: 11px; }

.lo-activefilters__clear {
	margin-left: var(--lo-s2);
	font-size: var(--lo-fs-sm);
	font-weight: 700;
	color: var(--lo-ruby);
	text-decoration: underline;
	text-underline-offset: 3px;
}
.lo-activefilters__clear:hover { color: var(--lo-berry); }


/* ==========================================================================
   04  Filter rail
   The rail reuses .lo-widget from components.css; these rules add the
   filter-specific furniture only.
   ========================================================================== */

.lo-filter { margin-bottom: var(--lo-s5); }

.lo-filter__note {
	margin: var(--lo-s4) 0 0;
	font-size: var(--lo-fs-xs);
	line-height: 1.6;
	color: var(--lo-muted);
}

/* --- category list -------------------------------------------------------- */
.lo-filter--cats li a > span:first-child {
	position: relative;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.lo-filter--cats li.is-current > a {
	color: var(--lo-green-900);
	font-weight: 800;
	padding-left: 14px;
}
.lo-filter--cats li.is-current > a::before {
	content: "";
	position: absolute;
	left: 0;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--lo-gold-500);
}
.lo-filter--cats li { position: relative; }
.lo-filter--cats li.is-current > a .lo-widget__count {
	background: var(--lo-green-900);
	color: var(--lo-paper);
}

/* --- price ---------------------------------------------------------------- */
.lo-pricefilter__row {
	display: flex;
	align-items: center;
	gap: var(--lo-s2);
	margin-bottom: var(--lo-s4);
}

.lo-pricefilter__field {
	position: relative;
	flex: 1 1 0;
	min-width: 0;
	display: block;
}

.lo-pricefilter__field i {
	position: absolute;
	top: 50%;
	left: 13px;
	transform: translateY(-50%);
	font-style: normal;
	font-size: var(--lo-fs-xs);
	font-weight: 800;
	letter-spacing: .04em;
	color: var(--lo-muted);
	pointer-events: none;
}

.lo-pricefilter__field input {
	width: 100%;
	padding: 11px 12px 11px 38px;
	border-radius: var(--lo-r-sm);
	font-size: var(--lo-fs-sm);
	font-weight: 700;
	box-shadow: none;
	-moz-appearance: textfield;
	appearance: textfield;
}
.lo-pricefilter__field input::-webkit-outer-spin-button,
.lo-pricefilter__field input::-webkit-inner-spin-button {
	-webkit-appearance: none;
	appearance: none;
	margin: 0;
}

.lo-pricefilter__dash {
	flex: 0 0 auto;
	color: var(--lo-muted);
	font-weight: 700;
}

.lo-pricefilter__bands { margin-top: var(--lo-s4); }
.lo-pricefilter__bands .lo-chip {
	padding: 7px 13px;
	font-size: var(--lo-fs-xs);
	letter-spacing: .01em;
}

/* --- rating --------------------------------------------------------------- */
.lo-ratingfilter li a {
	gap: var(--lo-s3);
	justify-content: flex-start;
}
.lo-ratingfilter li a:hover { padding-left: 5px; }

.lo-ratingfilter__text {
	font-size: var(--lo-fs-sm);
	font-weight: 700;
	color: var(--lo-muted);
}
.lo-ratingfilter li.is-current > a {
	color: var(--lo-green-900);
	font-weight: 800;
}
.lo-ratingfilter li.is-current .lo-ratingfilter__text { color: var(--lo-green-800); }

/* --- offers --------------------------------------------------------------- */
.lo-saletoggle {
	display: flex;
	align-items: center;
	gap: var(--lo-s3);
	padding: 12px 14px;
	margin-bottom: var(--lo-s4);
	border: 1px solid var(--lo-line);
	border-radius: var(--lo-r);
	background: var(--lo-cream);
	color: var(--lo-text-soft);
	font-size: var(--lo-fs-base);
	font-weight: 700;
	transition: border-color .24s var(--lo-ease), background-color .24s var(--lo-ease), color .24s var(--lo-ease);
}
.lo-saletoggle:hover { border-color: var(--lo-green-300); background: var(--lo-green-50); color: var(--lo-green-800); }

.lo-saletoggle__box {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 21px;
	height: 21px;
	border: 1.5px solid var(--lo-line);
	border-radius: 6px;
	background: var(--lo-paper);
	color: transparent;
	transition: background-color .2s var(--lo-ease), border-color .2s var(--lo-ease), color .2s var(--lo-ease);
}
.lo-saletoggle__text { flex: 1 1 auto; min-width: 0; }

.lo-saletoggle.is-on {
	border-color: var(--lo-green-600);
	background: var(--lo-green-50);
	color: var(--lo-green-900);
}
.lo-saletoggle.is-on .lo-saletoggle__box {
	background: var(--lo-green-700);
	border-color: var(--lo-green-700);
	color: var(--lo-paper);
}

.lo-salepicks { display: grid; }
.lo-salepicks .lo-widget__media { text-decoration: none; }
.lo-salepicks .lo-widget__media-meta .price { color: var(--lo-green-800); font-weight: 800; }
.lo-salepicks .lo-widget__media-meta del { color: var(--lo-muted); margin-right: 5px; }
.lo-salepicks .lo-widget__media-meta ins { background: none; text-decoration: none; color: var(--lo-ruby); }

/* --- promo card ------------------------------------------------------------ */
.lo-railcard {
	position: relative;
	overflow: hidden;
	border-radius: var(--lo-r-lg);
	background: var(--lo-green-950);
	color: color-mix(in srgb, var(--lo-paper) 78%, transparent);
	box-shadow: var(--lo-shadow);
	isolation: isolate;
}

.lo-railcard__bg {
	position: absolute;
	inset: 0;
	z-index: -2;
	background-size: cover;
	background-position: center;
	opacity: .3;
	filter: saturate(.75);
}
.lo-railcard::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(160deg,
		color-mix(in srgb, var(--lo-green-950) 88%, transparent),
		color-mix(in srgb, var(--lo-green-900) 96%, transparent));
}

.lo-railcard__inner { padding: var(--lo-s5); }

.lo-railcard__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 46px;
	height: 46px;
	margin-bottom: var(--lo-s4);
	border-radius: 50%;
	background: color-mix(in srgb, var(--lo-gold-500) 22%, transparent);
	color: var(--lo-gold-300);
	border: 1px solid color-mix(in srgb, var(--lo-gold-400) 40%, transparent);
}

.lo-railcard__title {
	margin: 0 0 var(--lo-s3);
	font-size: var(--lo-fs-md);
	color: var(--lo-paper);
	line-height: 1.3;
	text-wrap: balance;
}

.lo-railcard__text {
	margin: 0 0 var(--lo-s5);
	font-size: var(--lo-fs-sm);
	line-height: 1.7;
	color: color-mix(in srgb, var(--lo-paper) 88%, transparent);
}

.lo-railcard__facts {
	margin: var(--lo-s5) 0 0;
	padding: var(--lo-s4) 0 0;
	list-style: none;
	border-top: 1px solid color-mix(in srgb, var(--lo-paper) 16%, transparent);
	display: grid;
	gap: var(--lo-s3);
}
.lo-railcard__facts li {
	display: flex;
	align-items: flex-start;
	gap: var(--lo-s3);
	margin: 0;
	font-size: var(--lo-fs-xs);
	line-height: 1.55;
	color: color-mix(in srgb, var(--lo-paper) 82%, transparent);
}
.lo-railcard__facts svg { color: var(--lo-gold-400); margin-top: 2px; }


/* ==========================================================================
   05  Fractional star rating
   Two identical star rows; the gold one is clipped to --lo-rate.
   ========================================================================== */

.lo-rate {
	position: relative;
	display: inline-block;
	line-height: 0;
	flex: 0 0 auto;
}

.lo-rate__bg,
.lo-rate__fg {
	display: flex;
	align-items: center;
	gap: 2px;
}

.lo-rate__bg { color: var(--lo-line); }
.lo-rate__bg svg { fill: none; stroke: currentColor; stroke-width: 1.5; }

.lo-rate__fg {
	position: absolute;
	inset: 0 auto 0 0;
	width: var(--lo-rate, 0%);
	overflow: hidden;
	color: var(--lo-gold-500);
}
.lo-rate__fg svg { fill: currentColor; stroke: currentColor; stroke-width: 1.2; }

/* WooCommerce's own font-icon rating, wherever it still surfaces. */
.woocommerce .star-rating { color: var(--lo-gold-500); }
.woocommerce .star-rating::before { color: var(--lo-line); }


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

.woocommerce ul.products.lo-products,
ul.products.lo-products {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: clamp(18px, 1.9vw, 30px);
	margin: 0;
	padding: 0;
	list-style: none;
}
.woocommerce ul.products.lo-products::before,
.woocommerce ul.products.lo-products::after { content: none; display: none; }

.woocommerce ul.products.lo-products.columns-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.woocommerce ul.products.lo-products.columns-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.woocommerce ul.products.lo-products > li.product,
ul.products.lo-products > li.product {
	float: none !important;
	clear: none !important;
	width: auto !important;
	margin: 0 !important;
	padding: 0;
	display: flex;
	min-width: 0;
	list-style: none;
	text-align: left;
}

/* WooCommerce's own sale flash is unhooked; this catches any plugin that
   re-adds it, since the card draws its own badge stack. */
.woocommerce ul.products.lo-products > li.product .onsale { display: none; }

/* Reveal-on-scroll stagger, four across. */
.lo-products > .lo-pcard:nth-child(4n + 2) { --lo-reveal-delay: 70ms; }
.lo-products > .lo-pcard:nth-child(4n + 3) { --lo-reveal-delay: 140ms; }
.lo-products > .lo-pcard:nth-child(4n + 4) { --lo-reveal-delay: 210ms; }


/* ==========================================================================
   07  Product card
   ========================================================================== */

.lo-pcard {
	position: relative;
	/* Height of the strip the add-to-cart button slides up into, and the
	   card's own inner gutter. Both step down on small screens. */
	--lo-pcard-strip: 66px;
	--lo-pcard-pad: var(--lo-s5);
}

.lo-pcard__inner {
	position: relative;
	display: flex;
	flex-direction: column;
	width: 100%;
	padding-bottom: var(--lo-pcard-strip);
	background: var(--lo-surface);
	border: 1px solid var(--lo-line-soft);
	border-radius: var(--lo-r-lg);
	overflow: hidden;
	isolation: isolate;
	transition:
		transform var(--lo-dur) var(--lo-ease-out),
		box-shadow var(--lo-dur) var(--lo-ease-out),
		border-color var(--lo-dur) var(--lo-ease);
}

.lo-pcard:hover .lo-pcard__inner,
.lo-pcard:focus-within .lo-pcard__inner {
	transform: translateY(-6px);
	box-shadow: var(--lo-shadow-lg);
	border-color: transparent;
}

/* --- media ---------------------------------------------------------------- */
.lo-pcard__media {
	position: relative;
	aspect-ratio: 4 / 5;
	overflow: hidden;
	background:
		radial-gradient(120% 90% at 50% 8%, color-mix(in srgb, var(--lo-paper) 92%, transparent), transparent 62%),
		linear-gradient(165deg, var(--lo-cream) 0%, var(--lo-green-50) 58%, var(--lo-sand) 100%);
	border-bottom: 1px solid var(--lo-line-soft);
}

.lo-pcard__thumb {
	position: absolute;
	inset: 0;
	display: block;
	z-index: 1;
}

.lo-pcard__img {
	position: absolute;
	inset: 0;
	display: block;
	padding: clamp(14px, 8%, 34px);
	transition:
		opacity .5s var(--lo-ease),
		transform 1s var(--lo-ease-out);
}
/* WooCommerce's loop stylesheet hard-sets width/height/margin on loop images;
   these five declarations are the only place this file needs to insist. */
.lo-pcard__img img {
	width: 100% !important;
	height: 100% !important;
	margin: 0 !important;
	box-shadow: none !important;
	display: block;
	object-fit: contain;
	object-position: center;
}

/* The catalogue shots are cut-outs on a cream field — `contain` keeps every
   bottle whole and lets the frame's own tint do the work. */
.lo-pcard__img--alt {
	opacity: 0;
	transform: scale(1.04);
	background:
		radial-gradient(120% 90% at 50% 8%, color-mix(in srgb, var(--lo-paper) 92%, transparent), transparent 62%),
		linear-gradient(165deg, var(--lo-cream) 0%, var(--lo-green-50) 58%, var(--lo-sand) 100%);
}

.lo-pcard:hover .lo-pcard__img--main { transform: scale(1.055); }
.lo-pcard:hover .lo-pcard__img--alt { opacity: 1; transform: scale(1); }

/* --- badges --------------------------------------------------------------- */
.lo-pcard__badges {
	position: absolute;
	top: 14px;
	left: 14px;
	z-index: 3;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 6px;
	pointer-events: none;
}

.lo-pcard__badge {
	padding: 5px 11px;
	font-size: 10px;
	letter-spacing: .09em;
	box-shadow: var(--lo-shadow-xs);
}
.lo-pcard__badge.lo-badge--ruby { background: var(--lo-ruby); color: var(--lo-paper); }
.lo-pcard__badge.lo-badge--gold { background: var(--lo-gold-500); color: var(--lo-green-950); }

/* --- enquiry button (top right) -------------------------------------------- */
.lo-pcard__ask {
	position: absolute;
	top: 12px;
	right: 12px;
	z-index: 3;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	border: 1px solid var(--lo-line-soft);
	border-radius: 50%;
	background: color-mix(in srgb, var(--lo-paper) 88%, transparent);
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
	color: var(--lo-green-800);
	opacity: 0;
	transform: translateY(-8px) scale(.86);
	transition:
		opacity .3s var(--lo-ease),
		transform .34s var(--lo-ease-out),
		background-color .24s var(--lo-ease),
		color .24s var(--lo-ease);
}
.lo-pcard:hover .lo-pcard__ask,
.lo-pcard__ask:focus-visible {
	opacity: 1;
	transform: none;
}
.lo-pcard__ask:hover {
	background: var(--lo-green-900);
	color: var(--lo-paper);
	border-color: var(--lo-green-900);
}

/* --- body ------------------------------------------------------------------ */
.lo-pcard__body {
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	gap: 6px;
	padding: var(--lo-pcard-pad) var(--lo-pcard-pad) 0;
	min-width: 0;
}

.lo-pcard__cat {
	display: block;
	font-size: 10px;
	font-weight: 800;
	letter-spacing: .11em;
	text-transform: uppercase;
	color: var(--lo-gold-600);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

/* `padding` and `font-size` are set by woocommerce.css on
   .woocommerce-loop-product__title, which our element also carries. */
.lo-pcard__title {
	margin: 0 !important;
	padding: 0 !important;
	font-size: var(--lo-fs-md) !important;
	font-family: var(--lo-font-display);
	font-weight: 600;
	line-height: 1.32;
	letter-spacing: -.01em;
	color: var(--lo-text);
	display: -webkit-box;
	-webkit-line-clamp: 2;
	line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	min-height: calc(2 * 1.32em);
}

.lo-pcard__link {
	color: inherit;
	transition: color .22s var(--lo-ease);
}
.lo-pcard__link:hover { color: var(--lo-green-700); }
/* Give the title link the whole card as its hit area without nesting anchors. */
.lo-pcard__link::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 2;
}

.lo-pcard__rating {
	display: flex;
	align-items: center;
	gap: var(--lo-s2);
	min-height: 18px;
}

.lo-pcard__reviews {
	font-size: var(--lo-fs-xs);
	font-weight: 700;
	color: var(--lo-muted);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.lo-pcard__reviews-n { color: var(--lo-muted); font-weight: 600; }
.lo-pcard__reviews--none { font-weight: 600; opacity: .8; }

.lo-pcard__excerpt {
	margin: 2px 0 0;
	font-size: var(--lo-fs-sm);
	line-height: 1.62;
	color: var(--lo-text-soft);
	display: -webkit-box;
	-webkit-line-clamp: 2;
	line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.lo-pcard__foot {
	display: flex;
	align-items: baseline;
	gap: var(--lo-s3);
	margin-top: auto;
	padding-top: var(--lo-s4);
}

.lo-pcard .price {
	display: flex !important;
	margin: 0 !important;
	font-size: var(--lo-fs-lg) !important;
	font-weight: 600 !important;
	color: var(--lo-green-900) !important;
	flex-wrap: wrap;
	align-items: baseline;
	column-gap: 9px;
	row-gap: 0;
	font-family: var(--lo-font-display);
	line-height: 1.2;
	letter-spacing: -.01em;
}
.lo-pcard .price del {
	display: inline !important;
	color: var(--lo-muted) !important;
	opacity: 1 !important;
	font-family: var(--lo-font-body);
	font-size: var(--lo-fs-sm);
	font-weight: 600;
	text-decoration-thickness: 1px;
	text-underline-offset: 2px;
}
.lo-pcard .price ins {
	display: inline !important;
	background: none !important;
	font-weight: 600 !important;
	text-decoration: none;
	color: var(--lo-ruby);
}
.lo-pcard .price .woocommerce-Price-currencySymbol {
	font-family: var(--lo-font-body);
	font-size: .74em;
	font-weight: 700;
	margin-right: 1px;
	vertical-align: 1px;
}

/* Pack size sits on the image so the price row can hold a strike-through. */
.lo-pcard__pack {
	position: absolute;
	left: 14px;
	bottom: 14px;
	z-index: 3;
	padding: 4px 11px;
	border: 1px solid var(--lo-line-soft);
	border-radius: var(--lo-r-pill);
	background: color-mix(in srgb, var(--lo-paper) 84%, transparent);
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
	color: var(--lo-green-800);
	font-size: 10px;
	font-weight: 800;
	letter-spacing: .07em;
	text-transform: uppercase;
	white-space: nowrap;
	pointer-events: none;
}

/* --- action strip ---------------------------------------------------------- */
.lo-pcard__actions {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 3;
	display: grid;
	padding: 0 var(--lo-pcard-pad) var(--lo-pcard-pad);
}
.lo-pcard__actions > * {
	grid-area: 1 / 1;
	width: 100%;
}

.lo-pcard__add {
	display: inline-flex !important;
	margin: 0 !important;
	z-index: 2;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 42px;
	padding: 0 18px;
	border-radius: var(--lo-r-pill);
	background: var(--lo-green-900);
	color: var(--lo-paper);
	font-family: var(--lo-font-body);
	font-size: var(--lo-fs-sm);
	font-weight: 700;
	line-height: 1;
	white-space: nowrap;
	opacity: 0;
	transform: translateY(16px);
	pointer-events: none;
	box-shadow: 0 10px 24px -14px rgba(11, 59, 46, .9);
	transition:
		opacity .32s var(--lo-ease),
		transform .42s var(--lo-ease-out),
		background-color .22s var(--lo-ease);
}
.lo-pcard__add:hover { background: var(--lo-green-800); color: var(--lo-paper); }
.lo-pcard__add.lo-pcard__add--out { background: var(--lo-muted); }

.lo-pcard__view {
	z-index: 1;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 7px;
	height: 42px;
	font-size: var(--lo-fs-sm);
	font-weight: 700;
	letter-spacing: .01em;
	color: var(--lo-green-800);
	transition: opacity .3s var(--lo-ease), transform .34s var(--lo-ease-out), color .22s var(--lo-ease);
}
.lo-pcard__view svg { transition: transform .3s var(--lo-ease-out); }
.lo-pcard__view:hover { color: var(--lo-gold-600); }
.lo-pcard__view:hover svg { transform: translateX(4px); }

.lo-pcard:hover .lo-pcard__add,
.lo-pcard:focus-within .lo-pcard__add {
	opacity: 1;
	transform: none;
	pointer-events: auto;
}
.lo-pcard:hover .lo-pcard__view,
.lo-pcard:focus-within .lo-pcard__view {
	opacity: 0;
	transform: translateY(-10px);
	pointer-events: none;
}
/* …unless the secondary link is the thing being focused. */
.lo-pcard .lo-pcard__view:focus-visible {
	z-index: 4;
	opacity: 1;
	transform: none;
	pointer-events: auto;
}

/* WooCommerce's "View cart" link after an AJAX add. */
.woocommerce ul.products.lo-products > li.product a.added_to_cart {
	position: absolute;
	left: var(--lo-pcard-pad);
	right: var(--lo-pcard-pad);
	bottom: calc(var(--lo-pcard-pad) + 46px);
	z-index: 4;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 34px;
	border-radius: var(--lo-r-pill);
	background: var(--lo-gold-500);
	color: var(--lo-green-950);
	font-size: var(--lo-fs-xs);
	font-weight: 800;
	letter-spacing: .04em;
	text-transform: uppercase;
}
.woocommerce ul.products.lo-products > li.product a.add_to_cart_button.loading { opacity: .7; }

/* Out of stock cards read a shade quieter. */
.lo-pcard.outofstock .lo-pcard__img { filter: saturate(.55) opacity(.82); }


/* ==========================================================================
   08  List view
   ========================================================================== */

.lo-shop.lo-shop--list ul.products.lo-products {
	grid-template-columns: minmax(0, 1fr);
	gap: var(--lo-s4);
}

.lo-shop--list .lo-pcard__inner {
	flex-direction: row;
	align-items: stretch;
	padding-bottom: 0;
	border-radius: var(--lo-r-lg);
}

.lo-shop--list .lo-pcard__media {
	flex: 0 0 clamp(170px, 20%, 230px);
	aspect-ratio: auto;
	border-bottom: 0;
	border-right: 1px solid var(--lo-line-soft);
}

.lo-shop--list .lo-pcard__body {
	padding: var(--lo-s5) var(--lo-s6);
	gap: 8px;
	justify-content: center;
}

.lo-shop--list .lo-pcard__title {
	font-size: var(--lo-fs-xl) !important;
	-webkit-line-clamp: 2;
	line-clamp: 2;
	min-height: 0;
}

.lo-shop--list .lo-pcard__excerpt {
	-webkit-line-clamp: 3;
	line-clamp: 3;
	font-size: var(--lo-fs-base);
	max-width: 62ch;
}

.lo-shop--list .lo-pcard__foot {
	margin-top: var(--lo-s3);
	justify-content: flex-start;
	gap: var(--lo-s4);
}

.lo-shop--list .lo-pcard__actions {
	position: static;
	flex: 0 0 210px;
	align-self: center;
	display: flex;
	flex-direction: column;
	gap: var(--lo-s2);
	padding: var(--lo-s5) var(--lo-s5) var(--lo-s5) 0;
}
.lo-shop--list .lo-pcard__add,
.lo-shop--list .lo-pcard__view {
	opacity: 1;
	transform: none;
	pointer-events: auto;
	width: 100%;
}
.lo-shop--list .lo-pcard__ask { opacity: 1; transform: none; }
.lo-shop.lo-shop--list ul.products.lo-products > li.product a.added_to_cart {
	position: static;
	width: 100%;
	margin-top: var(--lo-s1);
}


/* ==========================================================================
   09  Empty state + pagination
   ========================================================================== */

.lo-empty {
	position: relative;
	padding: clamp(40px, 6vw, 80px) var(--lo-s6);
	text-align: center;
	border: 1px dashed var(--lo-line);
	border-radius: var(--lo-r-xl);
	background: var(--lo-paper);
}

.lo-empty__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 84px;
	height: 84px;
	margin-bottom: var(--lo-s5);
	border-radius: 50%;
	background: var(--lo-green-50);
	color: var(--lo-green-500);
}

.lo-empty__title { margin-bottom: var(--lo-s3); font-size: var(--lo-fs-2xl); }

.lo-empty__text {
	max-width: 54ch;
	margin: 0 auto var(--lo-s6);
	color: var(--lo-text-soft);
	font-size: var(--lo-fs-base);
	line-height: 1.75;
}

.lo-empty__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: var(--lo-s3);
}

.woocommerce-no-products-found { padding: 0; }

/* Pagination lives in components.css; this only aligns it in the results
   column and gives the prev/next pills their icons room. */
.woocommerce nav.woocommerce-pagination { margin-top: var(--lo-s8); }
.woocommerce nav.woocommerce-pagination ul { border: 0; }
.woocommerce nav.woocommerce-pagination ul li { border-right: 0; }
.woocommerce nav.woocommerce-pagination ul li a.prev,
.woocommerce nav.woocommerce-pagination ul li a.next { gap: 8px; }


/* ==========================================================================
   10  Closing help band
   ========================================================================== */

.lo-shophelp__inner {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
	gap: clamp(28px, 4vw, 64px);
	align-items: center;
}

.lo-shophelp__copy h2 { margin-bottom: var(--lo-s4); font-size: var(--lo-fs-2xl); }
.lo-shophelp__copy p { margin: 0; color: var(--lo-text-soft); line-height: 1.8; }

.lo-shophelp__facts {
	display: grid;
	gap: var(--lo-s3);
	margin: 0;
	padding: 0;
	list-style: none;
}
.lo-shophelp__facts li {
	display: grid;
	grid-template-columns: 46px minmax(0, 1fr);
	grid-template-rows: auto auto;
	align-items: center;
	column-gap: var(--lo-s4);
	margin: 0;
	padding: var(--lo-s4) var(--lo-s5);
	background: var(--lo-paper);
	border: 1px solid var(--lo-line-soft);
	border-radius: var(--lo-r);
	transition: transform var(--lo-dur) var(--lo-ease-out), box-shadow var(--lo-dur) var(--lo-ease-out);
}
.lo-shophelp__facts li:hover { transform: translateY(-3px); box-shadow: var(--lo-shadow); }

.lo-shophelp__facts li > span {
	grid-row: 1 / 3;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 46px;
	height: 46px;
	border-radius: 50%;
	background: var(--lo-green-50);
	color: var(--lo-green-700);
}
.lo-shophelp__facts li strong {
	font-family: var(--lo-font-body);
	font-size: var(--lo-fs-base);
	font-weight: 800;
	color: var(--lo-text);
}
.lo-shophelp__facts li em {
	font-style: normal;
	font-size: var(--lo-fs-sm);
	line-height: 1.5;
	color: var(--lo-muted);
}


/* ==========================================================================
   11  Notices, store notice and general WooCommerce resets
   The .lo-notice skin is applied in components.css; these are the extras
   WooCommerce adds around it.
   ========================================================================== */

.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
	align-items: center;
}

.woocommerce-message .button,
.woocommerce-info .button,
.woocommerce-error .button,
.woocommerce .woocommerce-message a.button {
	order: 2;
	margin-left: auto;
	padding: 11px 22px;
	font-size: var(--lo-fs-sm);
}

.woocommerce-notices-wrapper:empty { display: none; }
.woocommerce-notices-wrapper > *:last-child { margin-bottom: var(--lo-s5); }

/* WooCommerce's store notice bar. */
.woocommerce-store-notice,
p.demo_store {
	background: var(--lo-green-950);
	color: var(--lo-gold-300);
	font-size: var(--lo-fs-sm);
	padding: 12px var(--lo-s5);
}
.woocommerce-store-notice a { color: var(--lo-gold-400); text-decoration: underline; }

/* Kill the layout floats WooCommerce still ships. */
body.woocommerce .col2-set,
body.woocommerce-page .col2-set { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--lo-s6); width: 100%; }
body.woocommerce .col2-set .col-1,
body.woocommerce .col2-set .col-2,
body.woocommerce-page .col2-set .col-1,
body.woocommerce-page .col2-set .col-2 { float: none; width: auto; }

.woocommerce form .form-row { margin: 0 0 var(--lo-s4); padding: 0; }
.woocommerce form .form-row label { display: block; margin-bottom: var(--lo-s2); font-size: var(--lo-fs-sm); font-weight: 700; letter-spacing: .04em; color: var(--lo-green-900); }
.woocommerce form .form-row .required { color: var(--lo-ruby); text-decoration: none; border: 0; }
.woocommerce form .form-row-first,
.woocommerce form .form-row-last { width: 100%; float: none; }
.woocommerce form .form-row.woocommerce-validated input.input-text { border-color: var(--lo-green-400); }

.woocommerce .woocommerce-breadcrumb { display: none; }

/* WooCommerce ships bare native checkboxes (remember-me, ship-to-different,
   terms). Give them the same mark as .lo-checkbox in components.css. */
body.woocommerce .woocommerce-form__label-for-checkbox,
body.woocommerce-page .woocommerce-form__label-for-checkbox,
body.woocommerce label.checkbox {
	display: flex;
	align-items: center;
	gap: var(--lo-s3);
	margin: 0;
	font-size: var(--lo-fs-base);
	font-weight: 600;
	text-transform: none;
	letter-spacing: 0;
	color: var(--lo-text-soft);
	cursor: pointer;
}

body.woocommerce form input[type="checkbox"],
body.woocommerce-page form input[type="checkbox"] {
	appearance: none;
	-webkit-appearance: none;
	position: relative;
	flex: 0 0 auto;
	width: 21px;
	height: 21px;
	margin: 0;
	padding: 0;
	border: 1.5px solid var(--lo-line);
	border-radius: 6px;
	background: var(--lo-paper);
	box-shadow: var(--lo-shadow-xs);
	cursor: pointer;
	transition: background-color .2s var(--lo-ease), border-color .2s var(--lo-ease);
}
body.woocommerce form input[type="checkbox"]:hover { border-color: var(--lo-green-400); }
body.woocommerce form input[type="checkbox"]:checked {
	background: var(--lo-green-700);
	border-color: var(--lo-green-700);
}
body.woocommerce form input[type="checkbox"]::after {
	content: "";
	position: absolute;
	left: 6.5px;
	top: 2.5px;
	width: 5px;
	height: 10px;
	border: solid var(--lo-paper);
	border-width: 0 2px 2px 0;
	transform: rotate(42deg) scale(0);
	transition: transform .22s var(--lo-ease-out);
}
body.woocommerce form input[type="checkbox"]:checked::after { transform: rotate(42deg) scale(1); }

/* "Ship to a different address?" reads as a heading with a control. */
body.woocommerce-checkout #ship-to-different-address {
	display: flex;
	align-items: center;
	gap: var(--lo-s3);
	margin: 0;
	font-family: var(--lo-font-display);
	font-size: var(--lo-fs-lg);
	font-weight: 600;
	color: var(--lo-text);
}
body.woocommerce-checkout #ship-to-different-address label { margin: 0; font: inherit; color: inherit; text-transform: none; letter-spacing: 0; }

/* select2 (country / state pickers) */
.woocommerce .select2-container .select2-selection--single {
	height: auto;
	min-height: 52px;
	padding: 7px 10px;
	border: 1px solid var(--lo-line);
	border-radius: var(--lo-r);
	background: var(--lo-paper);
}
.woocommerce .select2-container .select2-selection--single .select2-selection__rendered {
	line-height: 36px;
	color: var(--lo-text);
	font-weight: 500;
	padding-left: 8px;
}
.woocommerce .select2-container .select2-selection--single .select2-selection__arrow { top: 13px; right: 10px; }
.select2-dropdown {
	border-color: var(--lo-line);
	border-radius: var(--lo-r);
	overflow: hidden;
	box-shadow: var(--lo-shadow);
}
.select2-container--default .select2-results__option--highlighted[aria-selected] {
	background: var(--lo-green-700);
	color: var(--lo-paper);
}


/* ==========================================================================
   12  Cart
   This store runs the WooCommerce Cart block; the classic shortcode markup is
   styled too so switching back cannot break the page.
   ========================================================================== */

body.woocommerce-cart .lo-shipbar { margin-bottom: var(--lo-s5); }

/* --- 12a. Block cart ------------------------------------------------------- */

body.woocommerce-cart .wp-block-woocommerce-cart { margin-block: 0; }

body.lo-money-page .wc-block-components-sidebar-layout {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: clamp(24px, 3vw, 48px);
}

body.lo-money-page .wc-block-components-main {
	flex: 1 1 min(100%, 560px);
	min-width: 0;
	padding-right: 0;
}

body.lo-money-page .wc-block-components-sidebar {
	position: sticky;
	top: calc(var(--lo-header-h-stuck, 66px) + 18px);
	flex: 0 1 386px;
	min-width: 0;
	padding: var(--lo-s6);
	background: var(--lo-paper);
	border: 1px solid var(--lo-line-soft);
	border-radius: var(--lo-r-lg);
	box-shadow: var(--lo-shadow);
}
body.lo-money-page.admin-bar .wc-block-components-sidebar { top: calc(var(--lo-header-h-stuck, 66px) + 50px); }

body.woocommerce-cart .wc-block-cart__totals-title,
body.woocommerce-checkout .wc-block-components-checkout-order-summary__title {
	margin: 0 0 var(--lo-s5);
	padding-bottom: var(--lo-s3);
	border-bottom: 1px solid var(--lo-line);
	font-family: var(--lo-font-display);
	font-size: var(--lo-fs-lg);
	font-weight: 600;
	letter-spacing: -.01em;
	text-transform: none;
	color: var(--lo-text);
}

/* Items table → cards */
body.woocommerce-cart .wc-block-cart-items {
	border: 1px solid var(--lo-line-soft);
	border-radius: var(--lo-r-lg);
	background: var(--lo-paper);
	overflow: hidden;
}
body.woocommerce-cart .wc-block-cart-items__header {
	background: var(--lo-green-50);
	border-bottom: 1px solid var(--lo-line);
	font-size: var(--lo-fs-xs);
	font-weight: 800;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--lo-green-900);
}
body.woocommerce-cart .wc-block-cart-items__header th { padding: 14px var(--lo-s5); border: 0; }

body.woocommerce-cart .wc-block-cart-items__row td { border-top: 1px solid var(--lo-line-soft); padding: var(--lo-s5); }
body.woocommerce-cart .wc-block-cart-items__row:first-child td { border-top: 0; }

body.woocommerce-cart .wc-block-cart-item__image img {
	width: 100%;
	max-width: 92px;
	border-radius: var(--lo-r);
	background: var(--lo-cream);
	border: 1px solid var(--lo-line-soft);
}

body.woocommerce-cart .wc-block-components-product-name {
	font-family: var(--lo-font-display);
	font-size: var(--lo-fs-md);
	font-weight: 600;
	line-height: 1.35;
	color: var(--lo-text);
}
body.woocommerce-cart .wc-block-components-product-name:hover { color: var(--lo-green-700); }

body.woocommerce-cart .wc-block-components-product-metadata,
body.woocommerce-cart .wc-block-components-product-metadata__description {
	font-size: var(--lo-fs-sm);
	line-height: 1.6;
	color: var(--lo-muted);
}

body.woocommerce-cart .wc-block-cart-item__remove-link,
body.woocommerce-cart .wc-block-cart-item__save-for-later-link {
	font-size: var(--lo-fs-xs);
	font-weight: 700;
	letter-spacing: .04em;
	color: var(--lo-muted);
	text-decoration: underline;
	text-underline-offset: 3px;
}
body.woocommerce-cart .wc-block-cart-item__remove-link:hover { color: var(--lo-ruby); }

/* Quantity stepper */
body.woocommerce-cart .wc-block-components-quantity-selector,
body.woocommerce-checkout .wc-block-components-quantity-selector {
	border: 1px solid var(--lo-line);
	border-radius: var(--lo-r-pill);
	background: var(--lo-paper);
	box-shadow: var(--lo-shadow-xs);
	overflow: hidden;
	max-width: 132px;
}
body.woocommerce-cart .wc-block-components-quantity-selector::after { display: none; }
body.woocommerce-cart .wc-block-components-quantity-selector__button {
	color: var(--lo-green-800);
	font-weight: 700;
	opacity: 1;
	min-width: 40px;
	transition: background-color .2s var(--lo-ease), color .2s var(--lo-ease);
}
body.woocommerce-cart .wc-block-components-quantity-selector__button:hover { background: var(--lo-green-50); color: var(--lo-green-900); }
body.woocommerce-cart .wc-block-components-quantity-selector__input {
	font-weight: 800;
	color: var(--lo-text);
	background: none;
	border: 0;
	box-shadow: none;
}

/* Prices in the items table */
body.woocommerce-cart .wc-block-components-product-price__value,
body.woocommerce-cart .wc-block-cart-item__total .wc-block-components-product-price {
	font-family: var(--lo-font-display);
	font-size: var(--lo-fs-md);
	font-weight: 600;
	color: var(--lo-green-900);
}
body.woocommerce-cart .wc-block-components-product-price del,
body.woocommerce-checkout .wc-block-components-product-price del { color: var(--lo-muted); font-size: .85em; }
body.woocommerce-cart .wc-block-components-product-badge,
body.woocommerce-checkout .wc-block-components-product-badge {
	border: 0;
	border-radius: var(--lo-r-pill);
	background: var(--lo-ruby-soft);
	color: var(--lo-ruby);
	font-size: 10px;
	font-weight: 800;
	letter-spacing: .07em;
	text-transform: uppercase;
	padding: 3px 9px;
}

/* Totals list */
body.woocommerce-cart .wc-block-components-totals-item,
body.woocommerce-checkout .wc-block-components-totals-item {
	font-size: var(--lo-fs-base);
	color: var(--lo-text-soft);
}
body.woocommerce-cart .wc-block-components-totals-item__label,
body.woocommerce-checkout .wc-block-components-totals-item__label { font-weight: 600; }
body.woocommerce-cart .wc-block-components-totals-item__value,
body.woocommerce-checkout .wc-block-components-totals-item__value { font-weight: 800; color: var(--lo-text); }

body.woocommerce-cart .wc-block-components-totals-wrapper,
body.woocommerce-checkout .wc-block-components-totals-wrapper { border-top-color: var(--lo-line-soft); }

body.woocommerce-cart .wc-block-components-totals-footer-item,
body.woocommerce-checkout .wc-block-components-totals-footer-item {
	padding-top: var(--lo-s4);
	border-top: 1px solid var(--lo-line);
}
body.woocommerce-cart .wc-block-components-totals-footer-item .wc-block-components-totals-item__label,
body.woocommerce-checkout .wc-block-components-totals-footer-item .wc-block-components-totals-item__label {
	font-family: var(--lo-font-display);
	font-size: var(--lo-fs-lg);
	font-weight: 600;
	color: var(--lo-text);
}
body.woocommerce-cart .wc-block-components-totals-footer-item .wc-block-components-totals-item__value,
body.woocommerce-checkout .wc-block-components-totals-footer-item .wc-block-components-totals-item__value {
	font-family: var(--lo-font-display);
	font-size: var(--lo-fs-xl);
	font-weight: 600;
	color: var(--lo-green-900);
}

/* Coupon row */
body.woocommerce-cart .wc-block-components-totals-coupon .wc-block-components-panel__button,
body.woocommerce-checkout .wc-block-components-totals-coupon .wc-block-components-panel__button {
	font-size: var(--lo-fs-sm);
	font-weight: 700;
	color: var(--lo-green-800);
}
body.woocommerce-cart .wc-block-components-totals-coupon__form,
body.woocommerce-checkout .wc-block-components-totals-coupon__form {
	display: flex;
	align-items: flex-start;
	gap: var(--lo-s2);
	margin-top: var(--lo-s3);
}
body.woocommerce-cart .wc-block-components-totals-coupon__input,
body.woocommerce-checkout .wc-block-components-totals-coupon__input { flex: 1 1 auto; margin: 0; }
body.woocommerce-cart .wc-block-components-totals-coupon__button,
body.woocommerce-checkout .wc-block-components-totals-coupon__button {
	flex: 0 0 auto;
	height: 52px;
	padding: 0 20px;
	border-radius: var(--lo-r);
	background: var(--lo-green-900);
	color: var(--lo-paper);
	font-weight: 700;
}
body.woocommerce-cart .wc-block-components-totals-discount__coupon-list .wc-block-components-chip,
body.woocommerce-checkout .wc-block-components-totals-discount__coupon-list .wc-block-components-chip {
	background: var(--lo-green-100);
	color: var(--lo-green-800);
	border-radius: var(--lo-r-pill);
}

/* Proceed to checkout */
body.woocommerce-cart .wc-block-cart__submit-container { padding: 0; background: none; }
body.woocommerce-cart .wc-block-cart__submit-button,
body.woocommerce-cart .wc-block-components-button:not(.is-link) {
	width: 100%;
	min-height: 56px;
	border-radius: var(--lo-r-pill);
	background: linear-gradient(135deg, var(--lo-gold-500), var(--lo-gold-600));
	color: var(--lo-green-950);
	font-family: var(--lo-font-body);
	font-size: var(--lo-fs-base);
	font-weight: 800;
	letter-spacing: .01em;
	box-shadow: var(--lo-shadow-gold);
	transition: transform .26s var(--lo-ease-out), box-shadow .26s var(--lo-ease-out), filter .22s var(--lo-ease);
}
body.woocommerce-cart .wc-block-cart__submit-button:hover { transform: translateY(-2px); filter: brightness(1.04); }

body.woocommerce-cart .wc-block-cart__payment-options,
body.woocommerce-cart .wp-block-woocommerce-cart-accepted-payment-methods-block {
	margin-top: var(--lo-s4);
	padding-top: var(--lo-s4);
	border-top: 1px solid var(--lo-line-soft);
	text-align: center;
}

/* Cross-sells */
body.woocommerce-cart .wp-block-woocommerce-product-collection {
	margin-top: var(--lo-s8);
	padding-top: var(--lo-s7);
	border-top: 1px solid var(--lo-line);
}
body.woocommerce-cart .wp-block-woocommerce-product-collection > .wp-block-heading {
	font-family: var(--lo-font-display);
	font-size: var(--lo-fs-2xl);
	font-weight: 600;
	color: var(--lo-text);
	margin-bottom: var(--lo-s5) !important;
}
body.woocommerce-cart .wc-block-product-template {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--lo-s5);
}
body.woocommerce-cart .wc-block-product-template__responsive { display: grid; }
body.woocommerce-cart .wc-block-product-template li {
	margin: 0;
	padding: var(--lo-s4);
	border: 1px solid var(--lo-line-soft);
	border-radius: var(--lo-r);
	background: var(--lo-paper);
	transition: transform var(--lo-dur) var(--lo-ease-out), box-shadow var(--lo-dur) var(--lo-ease-out);
}
body.woocommerce-cart .wc-block-product-template li:hover { transform: translateY(-4px); box-shadow: var(--lo-shadow); }
body.woocommerce-cart .wc-block-product-template li img { border-radius: var(--lo-r-sm); background: var(--lo-cream); }
body.woocommerce-cart .wc-block-product-template .wp-block-post-title {
	font-family: var(--lo-font-display);
	font-size: var(--lo-fs-base);
	font-weight: 600;
}
body.woocommerce-cart .wc-block-product-template .wc-block-components-product-button__button {
	width: 100%;
	border-radius: var(--lo-r-pill);
	background: var(--lo-green-900);
	color: var(--lo-paper);
	font-weight: 700;
	min-height: 40px;
}

/* Empty cart */
body.woocommerce-cart .wc-block-cart__empty-cart__title {
	font-family: var(--lo-font-display);
	font-size: var(--lo-fs-3xl);
	color: var(--lo-text);
}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block { padding-block: var(--lo-s7); }
body.woocommerce-cart .wp-block-separator.is-style-dots { color: var(--lo-gold-500); }

/* --- 12b. Classic shortcode cart -------------------------------------------- */

body.woocommerce .cart-collaterals,
body.woocommerce-page .cart-collaterals { width: auto; float: none; }
body.woocommerce .cart-collaterals .cross-sells,
body.woocommerce .cart-collaterals .shipping_calculator { width: auto; float: none; }

/* Two columns only when the classic shortcode markup is actually present, so
   the block cart above is never affected. */
body.woocommerce-cart .woocommerce:has(> form.woocommerce-cart-form):has(> .cart-collaterals) {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(300px, 356px);
	gap: clamp(24px, 3vw, 48px);
	align-items: start;
}
body.woocommerce-cart .woocommerce > .woocommerce-notices-wrapper { grid-column: 1 / -1; }

body.woocommerce-cart form.woocommerce-cart-form { width: auto; float: none; margin: 0; }

body.woocommerce-cart table.shop_table.cart {
	table-layout: fixed;
	border: 1px solid var(--lo-line-soft);
	border-radius: var(--lo-r-lg);
	border-collapse: separate;
	border-spacing: 0;
	overflow: hidden;
	background: var(--lo-paper);
	margin: 0 0 var(--lo-s5);
}
body.woocommerce-cart table.shop_table.cart thead th {
	padding: 14px var(--lo-s5);
	background: var(--lo-green-50);
	border: 0;
	border-bottom: 1px solid var(--lo-line);
	font-size: var(--lo-fs-xs);
	font-weight: 800;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--lo-green-900);
}
body.woocommerce-cart table.shop_table.cart td {
	padding: var(--lo-s5);
	border-top: 1px solid var(--lo-line-soft);
	vertical-align: middle;
}
/* Auto table layout collapses the image column to nothing (the thumbnail is
   max-width:100%, so it contributes no minimum). Size the columns explicitly. */
body.woocommerce-cart table.shop_table.cart th.product-remove,
body.woocommerce-cart table.shop_table.cart td.product-remove { width: 56px; padding-inline: var(--lo-s4); }
body.woocommerce-cart table.shop_table.cart th.product-thumbnail,
body.woocommerce-cart table.shop_table.cart td.product-thumbnail { width: 116px; padding-inline: 0; }
body.woocommerce-cart table.shop_table.cart th.product-name,
body.woocommerce-cart table.shop_table.cart td.product-name { width: auto; padding-inline: var(--lo-s4); }
body.woocommerce-cart table.shop_table.cart th.product-price,
body.woocommerce-cart table.shop_table.cart td.product-price { width: 88px; padding-inline: var(--lo-s2); }
body.woocommerce-cart table.shop_table.cart th.product-quantity,
body.woocommerce-cart table.shop_table.cart td.product-quantity { width: 178px; padding-inline: var(--lo-s3); }
body.woocommerce-cart table.shop_table.cart th.product-subtotal,
body.woocommerce-cart table.shop_table.cart td.product-subtotal { width: 108px; padding-inline: var(--lo-s4); text-align: right; }
body.woocommerce-cart table.shop_table.cart td.product-subtotal { font-weight: 800; color: var(--lo-text); }

body.woocommerce-cart table.shop_table.cart .product-thumbnail img {
	width: 92px;
	min-width: 92px;
	max-width: none;
	aspect-ratio: 1 / 1;
	object-fit: contain;
	padding: 6px;
	border-radius: var(--lo-r);
	background: var(--lo-cream);
	border: 1px solid var(--lo-line-soft);
}
body.woocommerce-cart table.shop_table.cart .product-name a {
	font-family: var(--lo-font-display);
	font-size: var(--lo-fs-md);
	font-weight: 600;
	color: var(--lo-text);
}
body.woocommerce-cart table.shop_table.cart td.product-remove a.remove {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	border-radius: 50%;
	background: var(--lo-cream);
	color: var(--lo-muted);
	font-size: 18px;
	line-height: 1;
}
body.woocommerce-cart table.shop_table.cart td.product-remove a.remove:hover { background: var(--lo-ruby); color: var(--lo-paper); }

body.woocommerce-cart .cart .actions { padding: var(--lo-s5) !important; background: var(--lo-cream); }
body.woocommerce-cart .cart .actions .coupon {
	display: flex;
	gap: var(--lo-s2);
	float: none;
	max-width: 420px;
}
body.woocommerce-cart .cart .actions .coupon input.input-text { width: auto; flex: 1 1 auto; }
body.woocommerce-cart .cart .actions > button[name="update_cart"] { float: right; }

body.woocommerce-cart .cart_totals {
	width: auto !important;
	float: none !important;
	padding: var(--lo-s6);
	background: var(--lo-paper);
	border: 1px solid var(--lo-line-soft);
	border-radius: var(--lo-r-lg);
	box-shadow: var(--lo-shadow);
	position: sticky;
	top: calc(var(--lo-header-h-stuck, 66px) + 18px);
}
body.woocommerce-cart .cart_totals h2 {
	margin: 0 0 var(--lo-s5);
	padding-bottom: var(--lo-s3);
	border-bottom: 1px solid var(--lo-line);
	font-size: var(--lo-fs-lg);
}
body.woocommerce-cart .cart_totals table.shop_table { border: 0; margin: 0; }
body.woocommerce-cart .cart_totals table.shop_table th,
body.woocommerce-cart .cart_totals table.shop_table td {
	padding: 12px 0;
	border: 0;
	border-bottom: 1px solid var(--lo-line-soft);
}
body.woocommerce-cart .cart_totals .order-total th,
body.woocommerce-cart .cart_totals .order-total td { border-bottom: 0; padding-top: var(--lo-s4); }
body.woocommerce-cart .cart_totals .order-total .amount {
	font-family: var(--lo-font-display);
	font-size: var(--lo-fs-xl);
	color: var(--lo-green-900);
}
body.woocommerce-cart .wc-proceed-to-checkout { padding: var(--lo-s5) 0 0; }
body.woocommerce-cart .wc-proceed-to-checkout a.checkout-button {
	display: flex;
	width: 100%;
	background: linear-gradient(135deg, var(--lo-gold-500), var(--lo-gold-600));
	color: var(--lo-green-950);
	box-shadow: var(--lo-shadow-gold);
	font-size: var(--lo-fs-base);
	padding: 17px 26px;
}


/* ==========================================================================
   13  Checkout
   ========================================================================== */

body.woocommerce-checkout .wp-block-woocommerce-checkout { margin-block: 0; }

body.woocommerce-checkout .wc-block-checkout__main { padding-right: 0; }

body.woocommerce-checkout .wc-block-components-checkout-step {
	position: relative;
	margin-bottom: var(--lo-s5);
	padding: var(--lo-s6);
	background: var(--lo-paper);
	border: 1px solid var(--lo-line-soft);
	border-radius: var(--lo-r-lg);
	box-shadow: var(--lo-shadow-xs);
}
body.woocommerce-checkout .wc-block-components-checkout-step__container::after { display: none; }

body.woocommerce-checkout .wc-block-components-checkout-step__title,
body.woocommerce-checkout .wc-block-components-title {
	font-family: var(--lo-font-display);
	font-size: var(--lo-fs-lg);
	font-weight: 600;
	letter-spacing: -.01em;
	color: var(--lo-text);
}
body.woocommerce-checkout .wc-block-components-checkout-step__description {
	font-size: var(--lo-fs-sm);
	line-height: 1.65;
	color: var(--lo-muted);
}
body.woocommerce-checkout .wc-block-components-checkout-step__heading { margin-bottom: var(--lo-s4); }

/* Fields */
body.woocommerce-checkout .wc-block-components-text-input input[type="text"],
body.woocommerce-checkout .wc-block-components-text-input input[type="email"],
body.woocommerce-checkout .wc-block-components-text-input input[type="tel"],
body.woocommerce-checkout .wc-block-components-text-input input[type="number"],
body.woocommerce-checkout .wc-block-components-textarea,
body.woocommerce-checkout .wc-block-components-select__container,
body.woocommerce-checkout .wc-block-components-combobox-control input {
	border: 1px solid var(--lo-line);
	border-radius: var(--lo-r);
	background: var(--lo-paper);
	color: var(--lo-text);
	font-family: var(--lo-font-body);
	font-size: var(--lo-fs-base);
	box-shadow: var(--lo-shadow-xs);
}
body.woocommerce-checkout .wc-block-components-text-input input:focus,
body.woocommerce-checkout .wc-block-components-textarea:focus {
	outline: 0;
	border-color: var(--lo-green-600);
	box-shadow: 0 0 0 3px var(--lo-green-100);
}
body.woocommerce-checkout .wc-block-components-text-input label,
body.woocommerce-checkout .wc-block-components-select label {
	color: var(--lo-muted);
	font-weight: 600;
}
body.woocommerce-checkout .wc-block-components-text-input.is-active label { color: var(--lo-green-800); }
body.woocommerce-checkout .wc-block-components-validation-error { color: var(--lo-ruby); font-size: var(--lo-fs-sm); }

/* Radio cards: shipping methods, payment methods, pickup */
body.woocommerce-checkout .wc-block-components-radio-control__option,
body.woocommerce-checkout .wc-block-checkout__shipping-method-option {
	padding: 16px 18px 16px 46px;
	border: 1px solid var(--lo-line);
	border-radius: var(--lo-r);
	background: var(--lo-paper);
	transition: border-color .24s var(--lo-ease), background-color .24s var(--lo-ease), box-shadow .24s var(--lo-ease-out);
}
body.woocommerce-checkout .wc-block-components-radio-control__option:hover { border-color: var(--lo-green-300); box-shadow: var(--lo-shadow-sm); }
body.woocommerce-checkout .wc-block-components-radio-control__option-checked,
body.woocommerce-checkout .wc-block-checkout__shipping-method-option--selected {
	border-color: var(--lo-green-600);
	background: var(--lo-green-50);
	box-shadow: 0 0 0 1px var(--lo-green-200);
}
body.woocommerce-checkout .wc-block-components-radio-control__label {
	font-size: var(--lo-fs-base);
	font-weight: 700;
	color: var(--lo-text);
}
body.woocommerce-checkout .wc-block-components-radio-control__secondary-label,
body.woocommerce-checkout .wc-block-components-radio-control__description { color: var(--lo-muted); font-size: var(--lo-fs-sm); }
body.woocommerce-checkout .wc-block-components-radio-control__input:checked { border-color: var(--lo-green-700); }

body.woocommerce-checkout .wc-block-checkout__payment-method .wc-block-components-radio-control-accordion-content {
	padding: var(--lo-s4) 18px var(--lo-s2);
	border-top: 1px dashed var(--lo-line);
}

/* Terms + place order */
body.woocommerce-checkout .wc-block-checkout__terms {
	font-size: var(--lo-fs-sm);
	line-height: 1.6;
	color: var(--lo-text-soft);
}
body.woocommerce-checkout .wc-block-components-checkbox__mark { color: var(--lo-paper); }
body.woocommerce-checkout .wc-block-components-checkbox__input:checked { background: var(--lo-green-700); border-color: var(--lo-green-700); }

body.woocommerce-checkout .wc-block-checkout__actions_row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--lo-s4);
}
body.woocommerce-checkout .wc-block-components-checkout-return-to-cart-button {
	color: var(--lo-green-800);
	font-weight: 700;
	font-size: var(--lo-fs-sm);
}
body.woocommerce-checkout .wc-block-components-checkout-place-order-button {
	min-height: 58px;
	padding-inline: var(--lo-s7);
	border-radius: var(--lo-r-pill);
	background: linear-gradient(135deg, var(--lo-gold-500), var(--lo-gold-600));
	color: var(--lo-green-950);
	font-family: var(--lo-font-body);
	font-size: var(--lo-fs-md);
	font-weight: 800;
	letter-spacing: .01em;
	box-shadow: var(--lo-shadow-gold);
	transition: transform .26s var(--lo-ease-out), filter .22s var(--lo-ease);
}
body.woocommerce-checkout .wc-block-components-checkout-place-order-button:hover { transform: translateY(-2px); filter: brightness(1.05); }

/* Order summary items in the sidebar */
body.woocommerce-checkout .wc-block-components-order-summary-item {
	padding: var(--lo-s4) 0;
	border-bottom: 1px solid var(--lo-line-soft);
}
body.woocommerce-checkout .wc-block-components-order-summary-item__image img {
	border-radius: var(--lo-r-sm);
	background: var(--lo-cream);
	border: 1px solid var(--lo-line-soft);
}
body.woocommerce-checkout .wc-block-components-order-summary-item__quantity {
	background: var(--lo-green-900);
	color: var(--lo-paper);
	border: 0;
	font-weight: 800;
}
body.woocommerce-checkout .wc-block-components-order-summary-item__description .wc-block-components-product-name {
	font-family: var(--lo-font-display);
	font-size: var(--lo-fs-base);
	font-weight: 600;
	color: var(--lo-text);
}

/* --- 13b. Classic shortcode checkout ---------------------------------------- */

body.woocommerce-checkout form.checkout.woocommerce-checkout {
	display: grid;
	grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
	/* The flexible second row absorbs the address column's extra height, so the
	   "Your order" heading row stays exactly as tall as the heading. */
	grid-template-rows: min-content 1fr;
	column-gap: clamp(24px, 3vw, 48px);
	align-items: start;
}
/* Explicit placement: without it the order review is auto-placed into row 2
   and drops to the bottom of the (much taller) address column. */
body.woocommerce-checkout form.checkout #customer_details {
	grid-column: 1;
	grid-row: 1 / span 2;
}
body.woocommerce-checkout form.checkout #order_review_heading {
	grid-column: 2;
	grid-row: 1;
	margin: 0 0 var(--lo-s4);
	font-size: var(--lo-fs-lg);
}
body.woocommerce-checkout form.checkout #order_review {
	grid-column: 2;
	grid-row: 2;
}
/* The review column is narrow — never split billing and shipping across it. */
body.woocommerce-checkout #customer_details.col2-set { grid-template-columns: minmax(0, 1fr); }

body.woocommerce-checkout form.checkout #customer_details .col-1,
body.woocommerce-checkout form.checkout #customer_details .col-2 {
	padding: var(--lo-s6);
	background: var(--lo-paper);
	border: 1px solid var(--lo-line-soft);
	border-radius: var(--lo-r-lg);
	box-shadow: var(--lo-shadow-xs);
}
body.woocommerce-checkout form.checkout h3 { font-size: var(--lo-fs-lg); margin-bottom: var(--lo-s5); }

body.woocommerce-checkout #order_review {
	padding: var(--lo-s6);
	background: var(--lo-paper);
	border: 1px solid var(--lo-line-soft);
	border-radius: var(--lo-r-lg);
	box-shadow: var(--lo-shadow);
	position: sticky;
	top: calc(var(--lo-header-h-stuck, 66px) + 18px);
}
body.woocommerce-checkout #order_review table.shop_table { border: 0; margin: 0 0 var(--lo-s5); }
body.woocommerce-checkout #order_review table.shop_table th,
body.woocommerce-checkout #order_review table.shop_table td {
	padding: 12px 0;
	border: 0;
	border-bottom: 1px solid var(--lo-line-soft);
}
body.woocommerce-checkout #order_review .order-total .amount {
	font-family: var(--lo-font-display);
	font-size: var(--lo-fs-xl);
	color: var(--lo-green-900);
}
body.woocommerce-checkout #payment {
	background: var(--lo-cream);
	border: 1px solid var(--lo-line-soft);
	border-radius: var(--lo-r);
	padding: var(--lo-s5);
}
body.woocommerce-checkout #payment ul.payment_methods { padding: 0; border: 0; }
body.woocommerce-checkout #payment ul.payment_methods li {
	list-style: none;
	margin-bottom: var(--lo-s3);
	padding: 14px 16px;
	background: var(--lo-paper);
	border: 1px solid var(--lo-line);
	border-radius: var(--lo-r-sm);
}
body.woocommerce-checkout #payment div.payment_box {
	background: var(--lo-green-50);
	color: var(--lo-text-soft);
	font-size: var(--lo-fs-sm);
	border-radius: var(--lo-r-sm);
}
body.woocommerce-checkout #payment div.payment_box::before { border-bottom-color: var(--lo-green-50); }
body.woocommerce-checkout #place_order {
	width: 100%;
	margin-top: var(--lo-s4);
	padding: 17px 26px;
	background: linear-gradient(135deg, var(--lo-gold-500), var(--lo-gold-600));
	color: var(--lo-green-950);
	box-shadow: var(--lo-shadow-gold);
	font-size: var(--lo-fs-md);
}

body.woocommerce-checkout .woocommerce-form-coupon-toggle { margin-bottom: var(--lo-s4); }


/* ==========================================================================
   14  My account + order received
   ========================================================================== */

body.woocommerce-account .lo-woo,
body.woocommerce-account .woocommerce { position: relative; }

body.woocommerce-account.logged-in .woocommerce {
	display: grid;
	grid-template-columns: 264px minmax(0, 1fr);
	gap: clamp(24px, 3vw, 48px);
	align-items: start;
}

body.woocommerce-account .woocommerce-MyAccount-navigation {
	width: auto;
	float: none;
	padding: var(--lo-s4);
	background: var(--lo-paper);
	border: 1px solid var(--lo-line-soft);
	border-radius: var(--lo-r-lg);
	box-shadow: var(--lo-shadow-xs);
	position: sticky;
	top: calc(var(--lo-header-h-stuck, 66px) + 18px);
}
body.woocommerce-account .woocommerce-MyAccount-navigation ul { margin: 0; padding: 0; list-style: none; }
body.woocommerce-account .woocommerce-MyAccount-navigation li { margin: 0; border: 0; }
body.woocommerce-account .woocommerce-MyAccount-navigation li a {
	display: block;
	padding: 12px 16px;
	border-radius: var(--lo-r-sm);
	color: var(--lo-text-soft);
	font-size: var(--lo-fs-base);
	font-weight: 700;
	transition: background-color .22s var(--lo-ease), color .22s var(--lo-ease), padding-left .26s var(--lo-ease-out);
}
body.woocommerce-account .woocommerce-MyAccount-navigation li a:hover {
	background: var(--lo-green-50);
	color: var(--lo-green-800);
	padding-left: 22px;
}
body.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a {
	background: var(--lo-green-900);
	color: var(--lo-paper);
	box-shadow: 0 10px 22px -16px rgba(11, 59, 46, .9);
}

body.woocommerce-account .woocommerce-MyAccount-content {
	width: auto;
	float: none;
	padding: clamp(22px, 3vw, 40px);
	background: var(--lo-paper);
	border: 1px solid var(--lo-line-soft);
	border-radius: var(--lo-r-lg);
	box-shadow: var(--lo-shadow-xs);
}
body.woocommerce-account .woocommerce-MyAccount-content > p:first-child { margin-top: 0; }

/* Login / register screen */
body.woocommerce-account:not(.logged-in) .woocommerce { max-width: 940px; margin-inline: auto; }
body.woocommerce-account .woocommerce-form-login,
body.woocommerce-account .woocommerce-form-register,
body.woocommerce-account .woocommerce-ResetPassword {
	padding: clamp(22px, 3vw, 40px);
	background: var(--lo-paper);
	border: 1px solid var(--lo-line-soft);
	border-radius: var(--lo-r-lg);
	box-shadow: var(--lo-shadow-xs);
}
body.woocommerce-account .woocommerce-form-login__submit,
body.woocommerce-account .woocommerce-form-register__submit { width: 100%; margin-top: var(--lo-s3); }
body.woocommerce-account .woocommerce-form-login .woocommerce-form-login__rememberme { display: block; margin-bottom: var(--lo-s3); }

/* Order tables inside the account + on the thank-you page */
.woocommerce table.shop_table.woocommerce-orders-table,
.woocommerce table.shop_table.order_details,
.woocommerce table.shop_table.customer_details {
	border: 1px solid var(--lo-line-soft);
	border-radius: var(--lo-r);
	border-collapse: separate;
	border-spacing: 0;
	overflow: hidden;
}
.woocommerce table.shop_table thead th {
	background: var(--lo-green-50);
	border: 0;
	border-bottom: 1px solid var(--lo-line);
	font-size: var(--lo-fs-xs);
	font-weight: 800;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--lo-green-900);
}
.woocommerce table.shop_table tbody td { border-top: 1px solid var(--lo-line-soft); }

.woocommerce ul.order_details {
	display: flex;
	flex-wrap: wrap;
	gap: var(--lo-s3);
	margin: 0 0 var(--lo-s6);
	padding: 0;
	list-style: none;
}
.woocommerce ul.order_details li {
	flex: 1 1 170px;
	margin: 0;
	padding: var(--lo-s4) var(--lo-s5);
	border: 1px solid var(--lo-line-soft);
	border-right: 1px solid var(--lo-line-soft);
	border-radius: var(--lo-r);
	background: var(--lo-paper);
	font-size: var(--lo-fs-xs);
	font-weight: 800;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--lo-muted);
}
.woocommerce ul.order_details li strong {
	display: block;
	margin-top: 6px;
	font-family: var(--lo-font-display);
	font-size: var(--lo-fs-lg);
	font-weight: 600;
	letter-spacing: -.01em;
	text-transform: none;
	color: var(--lo-green-900);
}

.woocommerce-order .woocommerce-notice--success {
	font-family: var(--lo-font-display);
	font-size: var(--lo-fs-xl);
	color: var(--lo-green-900);
}


/* ==========================================================================
   15  Responsive
   ========================================================================== */

@media (max-width: 1200px) {
	.lo-shop { --lo-rail-w: 270px; }
	.lo-orderby__select,
	.woocommerce .lo-orderby .lo-orderby__select { min-width: 168px; }
}

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

	.lo-shop__inner { grid-template-columns: minmax(0, 1fr); gap: var(--lo-s7); }
	.lo-shop__sidebar { order: 2; }
	.lo-shop__main { order: 1; }

	/* The rail becomes a two-up card deck under the results. */
	.lo-shop__sidebar-head { grid-column: 1 / -1; }
	.lo-shop__sidebar {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: var(--lo-s4);
		align-content: start;
		align-items: start;
		padding-top: var(--lo-s7);
		border-top: 1px solid var(--lo-line);
	}
	.lo-shop__sidebar > .lo-filter,
	.lo-shop__sidebar > .lo-widget { margin-bottom: 0; }
	.lo-railcard { grid-column: 1 / -1; }

	.lo-toolbar__refine { display: inline-flex; }

	body.woocommerce-cart .wc-block-product-template { grid-template-columns: repeat(2, minmax(0, 1fr)); }

	body.woocommerce-checkout form.checkout.woocommerce-checkout { grid-template-columns: minmax(0, 1fr); }
	body.woocommerce-checkout form.checkout #customer_details { grid-column: 1; grid-row: auto; }
	body.woocommerce-checkout form.checkout #order_review_heading,
	body.woocommerce-checkout form.checkout #order_review { grid-column: 1; grid-row: auto; }
	body.woocommerce-checkout #order_review { position: static; }

	body.woocommerce-account.logged-in .woocommerce { grid-template-columns: minmax(0, 1fr); }
	body.woocommerce-account .woocommerce-MyAccount-navigation { position: static; }
	body.woocommerce-account .woocommerce-MyAccount-navigation ul {
		display: flex;
		flex-wrap: wrap;
		gap: var(--lo-s2);
	}
	body.woocommerce-account .woocommerce-MyAccount-navigation li a { border-radius: var(--lo-r-pill); padding: 10px 18px; }
	body.woocommerce-account .woocommerce-MyAccount-navigation li a:hover { padding-left: 18px; }
}

@media (max-width: 900px) {
	body.lo-money-page .wc-block-components-sidebar {
		position: static;
		flex: 1 1 100%;
	}
	body.woocommerce-cart .cart_totals { position: static; }
	body.woocommerce-cart .woocommerce:has(> form.woocommerce-cart-form):has(> .cart-collaterals) { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 860px) {
	.lo-toolbar {
		position: static;
		flex-direction: column;
		align-items: stretch;
		gap: var(--lo-s3);
		padding: var(--lo-s4);
		border-radius: var(--lo-r-lg);
	}
	.lo-toolbar__tools { margin-left: 0; flex-wrap: wrap; justify-content: space-between; }
	.lo-toolbar__count { text-align: center; }
	.lo-orderby { flex: 1 1 auto; }
	.lo-orderby__label { display: none; }
	.lo-orderby__select,
	.woocommerce .lo-orderby .lo-orderby__select { flex: 1 1 auto; width: 100%; min-width: 0; max-width: none; }

	.lo-shophelp__inner { grid-template-columns: minmax(0, 1fr); }

	/* List view folds into the card layout on small screens. */
	.lo-shop--list .lo-pcard__inner { flex-direction: column; padding-bottom: 0; }
	.lo-shop--list .lo-pcard__media { flex: none; aspect-ratio: 4 / 5; border-right: 0; border-bottom: 1px solid var(--lo-line-soft); }
	.lo-shop--list .lo-pcard__body { padding: var(--lo-s5); }
	.lo-shop--list .lo-pcard__title { font-size: var(--lo-fs-md) !important; }
	.lo-shop--list .lo-pcard__actions { flex: none; padding: 0 var(--lo-s5) var(--lo-s5); }
}

@media (max-width: 620px) {
	.woocommerce ul.products.lo-products,
	ul.products.lo-products {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: var(--lo-s3);
	}

	.lo-pcard { --lo-pcard-pad: var(--lo-s4); }
	.lo-pcard__body { gap: 5px; }
	.lo-pcard__title { font-size: var(--lo-fs-base) !important; }
	.lo-pcard__excerpt { display: none; }
	.lo-pcard__foot { padding-top: var(--lo-s3); }
	.lo-pcard .price { font-size: var(--lo-fs-md) !important; }
	.lo-pcard__badge { padding: 4px 9px; font-size: 9px; }
	.lo-pcard__ask { width: 34px; height: 34px; top: 10px; right: 10px; }

	.lo-shop__sidebar { grid-template-columns: minmax(0, 1fr); }

	.lo-activefilters { margin-top: 0; }

	body.woocommerce-cart .wc-block-product-template { grid-template-columns: minmax(0, 1fr); }
	body.lo-money-page .wc-block-components-sidebar { padding: var(--lo-s5); }
	body.woocommerce-checkout .wc-block-components-checkout-step { padding: var(--lo-s5); }

	/* Classic cart table → stacked cards: thumbnail pinned left, name across
	   the top, then label/value rows. */
	body.woocommerce-cart table.shop_table.cart { table-layout: auto; border: 0; background: none; overflow: visible; }
	body.woocommerce-cart table.shop_table.cart thead { display: none; }
	body.woocommerce-cart table.shop_table.cart,
	body.woocommerce-cart table.shop_table.cart tbody,
	body.woocommerce-cart table.shop_table.cart tr,
	body.woocommerce-cart table.shop_table.cart td { display: block; width: 100% !important; }

	body.woocommerce-cart table.shop_table.cart tr.cart_item {
		position: relative;
		min-height: 116px;
		margin-bottom: var(--lo-s3);
		padding: var(--lo-s4) var(--lo-s4) var(--lo-s3) 108px;
		border: 1px solid var(--lo-line-soft);
		border-radius: var(--lo-r);
		background: var(--lo-paper);
	}
	body.woocommerce-cart table.shop_table.cart tr.cart_item td {
		border: 0;
		padding: 5px 0;
		text-align: right !important;
	}
	body.woocommerce-cart table.shop_table.cart tr.cart_item td::before {
		content: attr(data-title);
		float: left;
		font-size: var(--lo-fs-xs);
		font-weight: 800;
		letter-spacing: .08em;
		text-transform: uppercase;
		color: var(--lo-muted);
		line-height: 2.1;
	}

	body.woocommerce-cart table.shop_table.cart tr.cart_item td.product-thumbnail {
		position: absolute;
		left: var(--lo-s4);
		top: var(--lo-s4);
		width: 76px !important;
		padding: 0;
	}
	body.woocommerce-cart table.shop_table.cart .product-thumbnail img { width: 76px; min-width: 76px; }
	body.woocommerce-cart table.shop_table.cart tr.cart_item td.product-name {
		text-align: left !important;
		padding-bottom: var(--lo-s2);
	}
	body.woocommerce-cart table.shop_table.cart tr.cart_item td.product-name::before,
	body.woocommerce-cart table.shop_table.cart tr.cart_item td.product-thumbnail::before,
	body.woocommerce-cart table.shop_table.cart tr.cart_item td.product-remove::before { content: none; }
	body.woocommerce-cart table.shop_table.cart tr.cart_item td.product-remove {
		position: absolute;
		top: 8px;
		right: 8px;
		width: auto !important;
		padding: 0;
	}
	body.woocommerce-cart .cart .actions {
		border: 1px solid var(--lo-line-soft);
		border-radius: var(--lo-r);
		background: var(--lo-paper);
	}
	body.woocommerce-cart .cart .actions .coupon { flex-direction: column; max-width: none; }
	body.woocommerce-cart .cart .actions > button[name="update_cart"] { float: none; width: 100%; margin-top: var(--lo-s3); }

	body.woocommerce .col2-set,
	body.woocommerce-page .col2-set { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 430px) {
	.woocommerce ul.products.lo-products,
	ul.products.lo-products { gap: var(--lo-s3); }

	.lo-pcard__inner { border-radius: var(--lo-r); }
	.lo-pcard__img { padding: 10px; }
	.lo-pcard__cat { font-size: 9px; letter-spacing: .12em; }
	.lo-pcard__add { height: 38px; font-size: var(--lo-fs-xs); }
	.lo-pcard__view { height: 34px; font-size: var(--lo-fs-xs); }
	.lo-pcard__rating { min-height: 0; }
	.lo-pcard__reviews { display: none; }
	.lo-pcard__pack { left: 10px; bottom: 10px; padding: 3px 9px; font-size: 9px; }

	.lo-empty { padding-inline: var(--lo-s4); }
	.lo-empty__actions .lo-btn { width: 100%; }

	.lo-viewswitch { display: none; }
	.lo-toolbar__tools { gap: var(--lo-s2); }

	.lo-railcard__inner { padding: var(--lo-s5); }
	.woocommerce ul.order_details li { flex-basis: 100%; }
}

/* Touch devices and narrow cards: the add-to-cart button is always visible and
   the strip becomes part of the flow, so nothing can overlap the price row. */
@media (hover: none), (max-width: 620px) {
	.lo-pcard { --lo-pcard-strip: 0px; }
	.lo-pcard__actions {
		position: static;
		display: flex;
		flex-direction: column;
		gap: var(--lo-s2);
		padding: var(--lo-s3) var(--lo-pcard-pad) var(--lo-pcard-pad);
	}
	.lo-pcard__actions > * { width: 100%; }
	.lo-pcard__add {
		order: 1;
		opacity: 1;
		transform: none;
		pointer-events: auto;
	}
	.lo-pcard__view {
		order: 2;
		height: 34px;
		opacity: 1;
		transform: none;
		pointer-events: auto;
	}
	.lo-pcard:hover .lo-pcard__view,
	.lo-pcard:focus-within .lo-pcard__view { opacity: 1; transform: none; pointer-events: auto; }
	.lo-pcard__ask { opacity: 1; transform: none; }
	.lo-pcard:hover .lo-pcard__img--main { transform: none; }
	.woocommerce ul.products.lo-products > li.product a.added_to_cart { position: static; width: 100%; margin-top: var(--lo-s2); }
}

@media (prefers-reduced-motion: reduce) {
	.lo-pcard__img,
	.lo-pcard__add,
	.lo-pcard__view,
	.lo-pcard__ask,
	.lo-pcard__inner { transition: none; }
}
