/* ============================================================
   GP Site Kit — global styles
   All colors/sizes read from :root tokens (see Style Manager).
   ============================================================ */

:root {
	--gp-accent: #111111;
	--gp-accent-alt: #2e7d32;
	--gp-dark: #111111;
	--gp-light: #ffffff;
	--gp-muted: #6b7280;
	--gp-surface: #f6f6f4;
	--gp-border: #e5e7eb;
	--gp-radius: 10px;
	--gp-btn-radius: 999px;
	--gp-font: 'Jost', sans-serif;
	--gp-maxw: 1200px;
}

/* ---------- Buttons ---------- */
.gp-btn {
	display: inline-block;
	font-family: var(--gp-font);
	font-weight: 600;
	font-size: 15px;
	line-height: 1;
	padding: 14px 30px;
	border-radius: var(--gp-btn-radius);
	text-decoration: none;
	border: 2px solid transparent;
	cursor: pointer;
	transition: all .2s ease;
}
.gp-btn--primary { background: var(--gp-accent); color: var(--gp-light); }
.gp-btn--primary:hover { opacity: .85; color: var(--gp-light); }
.gp-btn--alt { background: var(--gp-accent-alt); color: var(--gp-light); }
.gp-btn--alt:hover { opacity: .85; color: var(--gp-light); }
.gp-btn--outline { background: transparent; color: var(--gp-dark); border-color: var(--gp-dark); }
.gp-btn--outline:hover { background: var(--gp-dark); color: var(--gp-light); }
.gp-btn--light { background: var(--gp-light); color: var(--gp-dark); }
.gp-btn--light:hover { opacity: .9; }

/* ---------- Notices ---------- */
.gp-notice {
	background: var(--gp-surface);
	border: 1px dashed var(--gp-border);
	border-radius: var(--gp-radius);
	padding: 24px;
	font-family: var(--gp-font);
	color: var(--gp-muted);
	text-align: center;
}

/* ---------- Hero ---------- */
.gp-hero {
	position: relative;
	display: flex;
	align-items: center;
	background-color: var(--gp-surface);
	background-size: cover;
	background-position: center;
	border-radius: 0;
	overflow: hidden;
}
.gp-hero__overlay { position: absolute; inset: 0; opacity: .8; }
.gp-hero__inner {
	position: relative;
	max-width: var(--gp-maxw);
	margin: 0 auto;
	padding: 60px 24px;
	width: 100%;
	font-family: var(--gp-font);
	color: var(--gp-dark);
}
.gp-hero--center .gp-hero__inner { text-align: center; }
.gp-hero--left .gp-hero__inner { text-align: left; }
.gp-hero__title {
	font-size: clamp(32px, 5vw, 56px);
	font-weight: 600;
	line-height: 1.1;
	margin: 0 0 18px;
	max-width: 640px;
}
.gp-hero--center .gp-hero__title { margin-left: auto; margin-right: auto; }
.gp-hero__sub {
	font-size: 18px;
	color: inherit;
	opacity: .85;
	max-width: 560px;
	margin: 0 0 28px;
}
.gp-hero--center .gp-hero__sub { margin-left: auto; margin-right: auto; }

/* ---------- Trust icons ---------- */
.gp-trust {
	display: grid;
	grid-template-columns: repeat(var(--gp-trust-cols, 4), 1fr);
	gap: 28px;
	max-width: var(--gp-maxw);
	margin: 0 auto;
	font-family: var(--gp-font);
}
.gp-trust__item {
	background: var(--gp-light);
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	padding: 28px 22px;
	text-align: center;
	transition: box-shadow .2s ease, transform .2s ease;
}
.gp-trust__item:hover { box-shadow: 0 12px 30px rgba(0,0,0,.08); transform: translateY(-3px); }
.gp-trust__icon { width: 56px; height: 56px; object-fit: contain; margin: 0 auto 14px; display: block; }
.gp-trust__icon--dot { background: var(--gp-surface); border-radius: 50%; }
.gp-trust__title { font-size: 18px; font-weight: 600; margin: 0 0 8px; color: var(--gp-dark); }
.gp-trust__text { font-size: 14px; color: var(--gp-muted); margin: 0; }

/* ---------- Section heading ---------- */
.gp-heading { font-family: var(--gp-font); max-width: 760px; }
.gp-heading--center { margin: 0 auto; text-align: center; }
.gp-heading--left { text-align: left; }
.gp-heading__title { font-size: clamp(26px, 3.4vw, 38px); font-weight: 600; margin: 0 0 10px; color: var(--gp-dark); }
.gp-heading__sub { font-size: 16px; color: var(--gp-muted); margin: 0; }

/* ---------- Product grid ---------- */
.gp-products {
	display: grid;
	grid-template-columns: repeat(var(--gp-prod-cols, 4), 1fr);
	gap: 26px;
	max-width: var(--gp-maxw);
	margin: 0 auto;
	font-family: var(--gp-font);
}
.gp-product-card {
	background: var(--gp-light);
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	padding: 18px;
	display: flex;
	flex-direction: column;
	text-align: center;
	transition: box-shadow .2s ease, transform .2s ease;
}
.gp-product-card:hover { box-shadow: 0 14px 34px rgba(0,0,0,.09); transform: translateY(-3px); }
.gp-product-card__imgwrap { display: block; border-radius: calc(var(--gp-radius) - 4px); overflow: hidden; background: var(--gp-surface); margin-bottom: 14px; }
.gp-product-card__imgwrap img { width: 100%; height: auto; aspect-ratio: 1/1; object-fit: cover; display: block; transition: transform .3s ease; }
.gp-product-card:hover .gp-product-card__imgwrap img { transform: scale(1.04); }
.gp-product-card__title { font-size: 17px; font-weight: 600; margin: 0 0 6px; line-height: 1.35; }
.gp-product-card__title a { color: var(--gp-dark); text-decoration: none; }
.gp-product-card__title a:hover { color: var(--gp-accent-alt); }
.gp-product-card__price { font-size: 17px; font-weight: 600; color: var(--gp-dark); margin-bottom: 14px; }
.gp-product-card__price del { color: var(--gp-muted); font-weight: 400; margin-right: 6px; }
.gp-product-card__actions { margin-top: auto; display: flex; flex-direction: column; gap: 8px; }
.gp-product-card__actions .gp-btn { padding: 11px 18px; font-size: 14px; }

/* ---------- Category showcase ---------- */
.gp-cats {
	display: grid;
	grid-template-columns: repeat(var(--gp-cat-cols, 4), 1fr);
	gap: 24px;
	max-width: var(--gp-maxw);
	margin: 0 auto;
	font-family: var(--gp-font);
}
.gp-cat-card { display: block; text-decoration: none; text-align: center; }
.gp-cat-card__imgwrap { display: block; border-radius: var(--gp-radius); overflow: hidden; margin-bottom: 12px; }
.gp-cat-card__imgwrap img { width: 100%; aspect-ratio: 4/3; object-fit: cover; display: block; transition: transform .3s ease; }
.gp-cat-card:hover .gp-cat-card__imgwrap img { transform: scale(1.05); }
.gp-cat-card__title { font-size: 16px; font-weight: 600; color: var(--gp-dark); }
.gp-cat-card:hover .gp-cat-card__title { color: var(--gp-accent-alt); }

/* ---------- Offer banner ---------- */
.gp-offer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 32px;
	flex-wrap: wrap;
	background-color: var(--gp-dark);
	background-size: cover;
	background-position: center;
	border-radius: var(--gp-radius);
	padding: 48px 44px;
	max-width: var(--gp-maxw);
	margin: 0 auto;
	font-family: var(--gp-font);
	color: var(--gp-light);
}
.gp-offer__eyebrow { display: block; font-size: 13px; letter-spacing: 2px; text-transform: uppercase; opacity: .75; margin-bottom: 8px; }
.gp-offer__title { font-size: clamp(28px, 4vw, 44px); font-weight: 700; margin: 0 0 20px; color: inherit; }
.gp-offer__chips { display: flex; flex-direction: column; gap: 10px; }
.gp-offer__chip {
	background: rgba(255,255,255,.1);
	border: 1px solid rgba(255,255,255,.25);
	border-radius: var(--gp-btn-radius);
	padding: 10px 22px;
	font-size: 14px;
	font-weight: 500;
	text-align: center;
}

/* ---------- Newsletter ---------- */
.gp-newsletter { font-family: var(--gp-font); max-width: 520px; }
.gp-newsletter__title { font-size: 18px; font-weight: 600; margin: 0 0 12px; color: var(--gp-dark); }
.gp-newsletter__form { display: flex; gap: 10px; flex-wrap: wrap; }
.gp-newsletter__input {
	flex: 1 1 240px;
	padding: 13px 18px;
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-btn-radius);
	font-family: var(--gp-font);
	font-size: 15px;
}
.gp-newsletter__ok { color: var(--gp-accent-alt); font-size: 14px; margin-top: 10px; }

/* ============================================================
   WooCommerce skin — shop / product / cart / checkout
   Scoped to .woocommerce so it only affects Woo templates.
   ============================================================ */

.woocommerce, .woocommerce-page { font-family: var(--gp-font); }

/* Buttons */
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.woocommerce button.button.alt,
.woocommerce a.button.alt,
.woocommerce-page a.button {
	background: var(--gp-accent);
	color: var(--gp-light);
	border-radius: var(--gp-btn-radius);
	padding: 13px 26px;
	font-weight: 600;
	transition: opacity .2s ease;
}
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce button.button.alt:hover,
.woocommerce a.button.alt:hover { background: var(--gp-accent); opacity: .85; color: var(--gp-light); }

.woocommerce .single_add_to_cart_button { background: var(--gp-accent-alt) !important; }

/* Shop loop cards */
.woocommerce ul.products li.product {
	background: var(--gp-light);
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	padding: 16px;
	text-align: center;
	transition: box-shadow .2s ease, transform .2s ease;
}
.woocommerce ul.products li.product:hover { box-shadow: 0 14px 34px rgba(0,0,0,.09); transform: translateY(-3px); }
.woocommerce ul.products li.product img { border-radius: calc(var(--gp-radius) - 4px); }
.woocommerce ul.products li.product .woocommerce-loop-product__title { font-size: 16px; font-weight: 600; color: var(--gp-dark); }
.woocommerce ul.products li.product .price { color: var(--gp-dark); font-weight: 600; font-size: 16px; }
.woocommerce ul.products li.product .price del { color: var(--gp-muted); }
.woocommerce ul.products li.product .button { margin-top: 10px; }
.woocommerce span.onsale {
	background: var(--gp-accent-alt);
	border-radius: var(--gp-btn-radius);
	min-height: auto; min-width: auto; line-height: 1;
	padding: 8px 14px; font-weight: 600;
}

/* Single product */
.woocommerce div.product .product_title { font-weight: 600; }
.woocommerce div.product p.price { color: var(--gp-dark); font-size: 26px; font-weight: 600; }
.woocommerce div.product .woocommerce-product-details__short-description { color: var(--gp-muted); }
.woocommerce div.product form.cart .quantity .qty {
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-btn-radius);
	padding: 10px;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li {
	background: var(--gp-surface);
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius) var(--gp-radius) 0 0;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active { background: var(--gp-light); }

/* Cart */
.woocommerce table.shop_table {
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	border-collapse: separate;
	overflow: hidden;
}
.woocommerce table.shop_table th { background: var(--gp-surface); }
.woocommerce .cart_totals { border: 1px solid var(--gp-border); border-radius: var(--gp-radius); padding: 20px; }
.woocommerce .cart_totals h2 { font-size: 20px; font-weight: 600; }
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button {
	background: var(--gp-dark);
	border-radius: var(--gp-btn-radius);
	font-size: 16px;
}

/* Checkout */
.woocommerce-checkout #payment {
	background: var(--gp-surface);
	border-radius: var(--gp-radius);
	border: 1px solid var(--gp-border);
}
.woocommerce-checkout #payment div.payment_box { background: var(--gp-light); border-radius: calc(var(--gp-radius) - 4px); }
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select {
	border: 1px solid var(--gp-border);
	border-radius: calc(var(--gp-radius) - 2px);
	padding: 12px 14px;
	font-family: var(--gp-font);
}
.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus { border-color: var(--gp-dark); outline: none; }
.woocommerce-checkout #place_order {
	width: 100%;
	background: var(--gp-accent-alt);
	font-size: 16px;
	border-radius: var(--gp-btn-radius);
}
.woocommerce-checkout h3 { font-weight: 600; }

/* Notices */
.woocommerce-message, .woocommerce-info, .woocommerce-error {
	border-radius: var(--gp-radius);
	font-family: var(--gp-font);
}
.woocommerce-message { border-top-color: var(--gp-accent-alt); }

/* ---------- Responsive ---------- */
@media (max-width: 1024px) {
	.gp-trust, .gp-products, .gp-cats { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
	.gp-trust, .gp-products, .gp-cats { grid-template-columns: 1fr; }
	.gp-offer { padding: 36px 24px; }
	.gp-offer__chips { width: 100%; flex-direction: row; flex-wrap: wrap; }
	.gp-hero__inner { padding: 48px 20px; }
}

/* ============================================================
   Header & Footer (plugin-rendered, no Pro needed)
   ============================================================ */

/* Hide theme default header/footer when kit versions are on */
body.gp-has-header .site-header,
body.gp-has-header header#masthead { display: none; }
body.gp-has-footer .site-footer,
body.gp-has-footer footer#colophon { display: none; }

.gp-header {
	position: sticky;
	top: 0;
	z-index: 999;
	background: var(--gp-light);
	border-bottom: 1px solid var(--gp-border);
	font-family: var(--gp-font);
}
.gp-header__inner {
	max-width: var(--gp-maxw);
	margin: 0 auto;
	padding: 14px 24px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
}
.gp-header__logo { display: flex; align-items: center; text-decoration: none; }
.gp-header__logo img { max-height: 52px; width: auto; display: block; }
.gp-header__logotext { font-size: 22px; font-weight: 700; letter-spacing: 3px; color: var(--gp-dark); }

.gp-header__nav { flex: 1; display: flex; justify-content: center; }
.gp-header__menu { list-style: none; display: flex; gap: 30px; margin: 0; padding: 0; }
.gp-header__menu li { position: relative; }
.gp-header__menu a {
	color: var(--gp-dark);
	text-decoration: none;
	font-size: 15px;
	font-weight: 500;
	padding: 8px 0;
	display: inline-block;
}
.gp-header__menu a:hover { color: var(--gp-accent-alt); }
.gp-header__menu .sub-menu {
	display: none;
	position: absolute;
	top: 100%;
	left: 0;
	background: var(--gp-light);
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	padding: 8px 0;
	min-width: 200px;
	list-style: none;
	box-shadow: 0 12px 30px rgba(0,0,0,.1);
}
.gp-header__menu li:hover > .sub-menu { display: block; }
.gp-header__menu .sub-menu a { padding: 8px 18px; display: block; }
.gp-header__menu-hint { font-size: 11px; color: var(--gp-muted); }

.gp-header__actions { display: flex; align-items: center; gap: 16px; }
.gp-header__cart { position: relative; color: var(--gp-dark); display: inline-flex; }
.gp-header__cart:hover { color: var(--gp-accent-alt); }
.gp-header__cart-count {
	position: absolute;
	top: -8px;
	right: -10px;
	background: var(--gp-accent-alt);
	color: var(--gp-light);
	font-size: 11px;
	font-weight: 600;
	min-width: 18px;
	height: 18px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0 4px;
}
.gp-header__burger { display: none; background: none; border: 0; cursor: pointer; padding: 6px; }
.gp-header__burger span {
	display: block;
	width: 22px;
	height: 2px;
	background: var(--gp-dark);
	margin: 5px 0;
	transition: transform .2s ease, opacity .2s ease;
}

/* Footer */
.gp-footer {
	background: var(--gp-dark);
	color: rgba(255,255,255,.8);
	font-family: var(--gp-font);
	margin-top: 60px;
}
.gp-footer__inner {
	max-width: var(--gp-maxw);
	margin: 0 auto;
	padding: 60px 24px 40px;
	display: grid;
	grid-template-columns: 1.4fr 1fr 1fr 1.4fr;
	gap: 40px;
}
.gp-footer__logo { max-height: 46px; width: auto; margin-bottom: 14px; filter: brightness(0) invert(1); }
.gp-footer__logotext { font-size: 20px; font-weight: 700; letter-spacing: 3px; color: var(--gp-light); display: block; margin-bottom: 14px; }
.gp-footer h5 { color: var(--gp-light); font-size: 16px; font-weight: 600; margin: 0 0 16px; }
.gp-footer p { font-size: 14px; line-height: 1.7; margin: 0; }
.gp-footer__menu { list-style: none; margin: 0; padding: 0; }
.gp-footer__menu li { margin-bottom: 10px; }
.gp-footer__menu a, .gp-footer__contact a { color: rgba(255,255,255,.8); text-decoration: none; font-size: 14px; }
.gp-footer__menu a:hover, .gp-footer__contact a:hover { color: var(--gp-light); }
.gp-footer .gp-newsletter__input { border: 0; }
.gp-footer__bottom {
	border-top: 1px solid rgba(255,255,255,.12);
	max-width: var(--gp-maxw);
	margin: 0 auto;
	padding: 20px 24px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	flex-wrap: wrap;
	font-size: 13px;
}
.gp-footer__payments { display: flex; gap: 8px; }
.gp-payicon {
	background: rgba(255,255,255,.12);
	border-radius: 4px;
	padding: 4px 10px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 1px;
	color: var(--gp-light);
}

@media (max-width: 900px) {
	.gp-header__nav {
		display: none;
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		background: var(--gp-light);
		border-bottom: 1px solid var(--gp-border);
		padding: 16px 24px;
	}
	.gp-header { position: sticky; }
	.gp-header__nav.gp-open { display: block; }
	.gp-header__menu { flex-direction: column; gap: 4px; }
	.gp-header__menu .sub-menu { position: static; box-shadow: none; border: 0; display: block; padding-left: 16px; }
	.gp-header__burger { display: block; }
	.gp-footer__inner { grid-template-columns: 1fr; gap: 32px; padding: 44px 20px 30px; }
}

/* ============================================================
   Announcement bar + Header Bar widgets (for use inside your
   own header template)
   ============================================================ */
.gp-announce {
	background: var(--gp-dark);
	color: var(--gp-light);
	text-align: center;
	padding: 10px 16px;
	font-family: var(--gp-font);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .3px;
}
.gp-announce__code {
	background: var(--gp-accent-alt);
	color: var(--gp-dark);
	border-radius: 5px;
	padding: 3px 10px;
	margin-left: 8px;
	font-weight: 700;
}
.gp-announce__icon { margin-right: 6px; }

.gp-headerbar {
	font-family: var(--gp-font);
	max-width: var(--gp-maxw);
	margin: 0 auto;
	padding: 16px 24px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	background: var(--gp-light);
}
.gp-headerbar__logo { text-decoration: none; }
.gp-headerbar__logo img { max-height: 40px; display: block; }
.gp-headerbar__logotext { font-size: 20px; font-weight: 700; letter-spacing: 3px; color: var(--gp-dark); }
.gp-headerbar__nav ul { list-style: none; display: flex; gap: 28px; margin: 0; padding: 0; }
.gp-headerbar__nav a { color: var(--gp-dark); text-decoration: none; font-size: 15px; font-weight: 500; }
.gp-headerbar__nav a:hover { color: var(--gp-accent-alt); }
.gp-headerbar__icons { display: flex; align-items: center; gap: 18px; }
.gp-headerbar__icon { position: relative; color: var(--gp-dark); background: none; border: 0; cursor: pointer; display: inline-flex; padding: 0; }
.gp-headerbar__icon:hover { color: var(--gp-accent-alt); }
.gp-headerbar__badge {
	position: absolute; top: -8px; right: -9px;
	background: var(--gp-accent-alt); color: var(--gp-dark);
	font-size: 10px; font-weight: 700; min-width: 16px; height: 16px;
	border-radius: 50%; display: flex; align-items: center; justify-content: center;
}
.gp-headerbar__burger { display: none; background: none; border: 0; cursor: pointer; }
.gp-headerbar__burger span { display: block; width: 20px; height: 2px; background: var(--gp-dark); margin: 5px 0; }

@media (max-width: 900px) {
	.gp-headerbar__nav { display: none; position: absolute; top: 100%; left: 0; right: 0; background: var(--gp-light); border-bottom: 1px solid var(--gp-border); padding: 14px 24px; }
	.gp-headerbar { position: relative; }
	.gp-headerbar__nav.gp-open { display: block; }
	.gp-headerbar__nav ul { flex-direction: column; gap: 6px; }
	.gp-headerbar__burger { display: block; }
}

/* ============================================================
   USP Strip
   ============================================================ */
.gp-usp {
	max-width: var(--gp-maxw);
	margin: 0 auto;
	padding: 18px 24px;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-wrap: wrap;
	gap: 14px;
	font-family: var(--gp-font);
	border-bottom: 1px solid var(--gp-border);
}
.gp-usp__item { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; letter-spacing: .3px; color: var(--gp-dark); }
.gp-usp__icon { color: var(--gp-accent-alt); }
.gp-usp__dot { color: var(--gp-border); font-size: 6px; }

/* ============================================================
   Dark Feature Block
   ============================================================ */
.gp-feature {
	background: var(--gp-dark);
	color: var(--gp-light);
	font-family: var(--gp-font);
	padding: 60px 24px;
	text-align: center;
}
.gp-feature__head { max-width: 640px; margin: 0 auto 40px; }
.gp-feature__eyebrow { display: block; color: var(--gp-accent-alt); font-size: 13px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; margin-bottom: 12px; }
.gp-feature__title { font-size: clamp(26px, 3.4vw, 38px); font-weight: 600; margin: 0 0 14px; }
.gp-feature__sub { color: rgba(255,255,255,.65); font-size: 15px; margin: 0; }
.gp-feature__cols { max-width: var(--gp-maxw); margin: 0 auto 36px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; text-align: left; }
.gp-feature__col { border: 1px solid rgba(255,255,255,.14); border-radius: var(--gp-radius); padding: 26px; }
.gp-feature__icon { font-size: 26px; display: block; margin-bottom: 14px; }
.gp-feature__col h4 { font-size: 17px; font-weight: 600; margin: 0 0 8px; }
.gp-feature__col p { font-size: 14px; color: rgba(255,255,255,.65); margin: 0; }
.gp-btn--outline-light { background: transparent; color: var(--gp-accent-alt); border: 2px solid var(--gp-accent-alt); }
.gp-btn--outline-light:hover { background: var(--gp-accent-alt); color: var(--gp-dark); }

/* ============================================================
   Testimonial strip
   ============================================================ */
.gp-testi { background: var(--gp-dark); color: var(--gp-light); font-family: var(--gp-font); padding: 60px 24px; }
.gp-testi__head { text-align: center; max-width: 640px; margin: 0 auto 40px; }
.gp-testi__head h2 { font-size: clamp(24px, 3vw, 32px); font-weight: 600; margin: 0 0 12px; }
.gp-testi__rating { display: flex; align-items: center; justify-content: center; gap: 10px; font-size: 14px; color: rgba(255,255,255,.7); }
.gp-testi__stars { color: var(--gp-accent-alt); letter-spacing: 2px; }
.gp-testi__grid { max-width: var(--gp-maxw); margin: 0 auto; display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.gp-testi__card { background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.12); border-radius: var(--gp-radius); padding: 26px; }
.gp-testi__card-stars { color: var(--gp-accent-alt); letter-spacing: 2px; display: block; margin-bottom: 12px; }
.gp-testi__card p { font-size: 14px; color: rgba(255,255,255,.8); line-height: 1.6; margin: 0 0 14px; }
.gp-testi__author { font-size: 13px; color: rgba(255,255,255,.55); }

/* ============================================================
   How It Works
   ============================================================ */
.gp-how { font-family: var(--gp-font); padding: 60px 24px; text-align: center; }
.gp-how__title { font-size: clamp(24px, 3vw, 32px); font-weight: 600; margin: 0 0 40px; }
.gp-how__grid { max-width: var(--gp-maxw); margin: 0 auto; display: grid; grid-template-columns: repeat(4, 1fr); gap: 28px; text-align: left; }
.gp-how__step { position: relative; padding-top: 10px; }
.gp-how__num { color: var(--gp-accent-alt); font-weight: 700; font-size: 13px; letter-spacing: 1px; }
.gp-how__icon { display: block; font-size: 24px; margin: 10px 0 12px; }
.gp-how__step h4 { font-size: 17px; font-weight: 600; margin: 0 0 8px; color: var(--gp-dark); }
.gp-how__step p { font-size: 14px; color: var(--gp-muted); margin: 0; }

/* ============================================================
   FAQ
   ============================================================ */
.gp-faq { font-family: var(--gp-font); max-width: var(--gp-maxw); margin: 0 auto; padding: 60px 24px; display: grid; grid-template-columns: 1fr 1.3fr; gap: 50px; align-items: start; }
.gp-faq__image img { width: 100%; border-radius: var(--gp-radius); display: block; }
.gp-faq__content h2 { font-size: clamp(24px, 3vw, 32px); font-weight: 600; margin: 0 0 24px; color: var(--gp-dark); }
.gp-faq__item { border-bottom: 1px solid var(--gp-border); }
.gp-faq__q {
	width: 100%; text-align: left; background: none; border: 0; cursor: pointer;
	padding: 18px 0; font-family: var(--gp-font); font-size: 15px; font-weight: 500;
	color: var(--gp-dark); display: flex; justify-content: space-between; align-items: center;
}
.gp-faq__plus { transition: transform .2s ease; color: var(--gp-muted); font-size: 18px; }
.gp-faq__item.gp-open .gp-faq__plus { transform: rotate(45deg); }
.gp-faq__a { max-height: 0; overflow: hidden; transition: max-height .25s ease; }
.gp-faq__a p { font-size: 14px; color: var(--gp-muted); margin: 0 0 18px; line-height: 1.6; }

/* ============================================================
   Light footer (matches Align layout)
   ============================================================ */
.gp-footerlight { font-family: var(--gp-font); background: var(--gp-light); border-top: 1px solid var(--gp-border); margin-top: 40px; }
.gp-footerlight__disclaimer { max-width: var(--gp-maxw); margin: 0 auto; padding: 24px 24px 0; font-size: 12px; color: var(--gp-muted); text-align: center; line-height: 1.6; }
.gp-footerlight__inner { max-width: var(--gp-maxw); margin: 0 auto; padding: 40px 24px; display: grid; grid-template-columns: 1.6fr 1fr 1fr 1.4fr; gap: 36px; }
.gp-footerlight__logo { max-height: 40px; margin-bottom: 14px; }
.gp-footerlight__logotext { display: block; font-size: 18px; font-weight: 700; letter-spacing: 3px; color: var(--gp-dark); margin-bottom: 14px; }
.gp-footerlight__col p { font-size: 14px; color: var(--gp-muted); line-height: 1.7; margin: 0 0 10px; }
.gp-footerlight__col h5 { font-size: 15px; font-weight: 600; margin: 0 0 16px; color: var(--gp-dark); }
.gp-footerlight__col ul { list-style: none; margin: 0; padding: 0; }
.gp-footerlight__col li { margin-bottom: 10px; }
.gp-footerlight__col a { color: var(--gp-muted); text-decoration: none; font-size: 14px; }
.gp-footerlight__col a:hover { color: var(--gp-dark); }
.gp-footerlight__nlsub { font-size: 12px; margin-top: 8px; }
.gp-footerlight__bottom { border-top: 1px solid var(--gp-border); max-width: var(--gp-maxw); margin: 0 auto; padding: 18px 24px; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 12px; font-size: 12px; color: var(--gp-muted); }
.gp-footerlight__pay { display: flex; gap: 8px; }
.gp-payicon--light { background: var(--gp-surface); color: var(--gp-dark); border: 1px solid var(--gp-border); }

@media (max-width: 900px) {
	.gp-feature__cols, .gp-testi__grid, .gp-how__grid { grid-template-columns: 1fr; }
	.gp-faq { grid-template-columns: 1fr; }
	.gp-footerlight__inner { grid-template-columns: 1fr; }
}

/* Hero: text + side media layout, dual buttons */
.gp-hero__inner { display: flex; align-items: center; justify-content: space-between; gap: 40px; }
.gp-hero__text { flex: 1 1 55%; }
.gp-hero__media { flex: 1 1 40%; }
.gp-hero__media img { width: 100%; height: auto; display: block; border-radius: var(--gp-radius); }
.gp-hero__btns { display: flex; gap: 14px; flex-wrap: wrap; }
.gp-hero--center .gp-hero__btns { justify-content: center; }
@media (max-width: 900px) {
	.gp-hero__inner { flex-direction: column; text-align: center; }
	.gp-hero__btns { justify-content: center; }
}

/* ============================================================
   v1.3 refinements — badges, eyebrows, plain trust, FAQ reset
   ============================================================ */

/* Card badges (top-left corner, like reference layout) */
.gp-product-card { position: relative; }
.gp-card-badge {
	position: absolute;
	top: 12px;
	left: 12px;
	z-index: 2;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .6px;
	text-transform: uppercase;
	padding: 5px 10px;
	border-radius: 4px;
	color: #fff;
}
.gp-card-badge--red { background: var(--gp-badge); }
.gp-card-badge--green { background: var(--gp-accent-alt); color: var(--gp-dark); }
.gp-card-badge--dark { background: var(--gp-dark); }

/* Section heading eyebrow */
.gp-heading__eyebrow {
	display: block;
	color: var(--gp-accent-alt);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 2px;
	text-transform: uppercase;
	margin-bottom: 8px;
}

/* Plain trust icons (no cards) — used for "Why Choose Us" */
.gp-trust--plain .gp-trust__item { border: 0; background: transparent; padding: 10px; }
.gp-trust--plain .gp-trust__item:hover { box-shadow: none; transform: none; }

/* Offer banner subtext */
.gp-offer__sub { color: rgba(255,255,255,.75); font-size: 15px; max-width: 480px; margin: -8px 0 22px; }

/* FAQ hard reset — beat theme button/link styles that bleed in */
.gp-faq .gp-faq__q,
.gp-faq .gp-faq__q:hover,
.gp-faq .gp-faq__q:focus,
.gp-faq .gp-faq__q:active {
	background: transparent !important;
	border: 0 !important;
	border-bottom: 0 !important;
	box-shadow: none !important;
	outline: none !important;
	color: var(--gp-dark) !important;
	text-transform: none !important;
	letter-spacing: normal !important;
	width: 100% !important;
	border-radius: 0 !important;
}
.gp-faq .gp-faq__item { border-bottom: 1px solid var(--gp-border) !important; }
.gp-faq .gp-faq__q:hover { color: var(--gp-accent-alt) !important; }

/* Product card link color guard against theme link colors */
.gp-product-card__title a,
.gp-cat-card__title,
.gp-headerbar__nav a,
.gp-footerlight__col a { color: var(--gp-dark); }

/* ============================================================
   Cart page layout — two-column with sidebar card
   ============================================================ */
body.gp-cart-layout .woocommerce {
	max-width: var(--gp-maxw);
	margin: 0 auto;
	padding: 0 24px 60px;
	display: grid;
	grid-template-columns: 1.6fr 1fr;
	gap: 36px;
	align-items: start;
	font-family: var(--gp-font);
}
.gp-cart-head { grid-column: 1 / -1; text-align: center; padding: 30px 0 6px; }
.gp-cart-head h1 { font-size: clamp(28px, 4vw, 40px); font-weight: 600; margin: 0 0 8px; color: var(--gp-dark); }
.gp-cart-head p { color: var(--gp-muted); font-size: 15px; margin: 0; }

body.gp-cart-layout .woocommerce-cart-form { grid-column: 1; }
body.gp-cart-layout .cart-collaterals {
	grid-column: 2;
	grid-row: 2 / span 3;
	background: var(--gp-surface);
	border-radius: var(--gp-radius);
	padding: 26px;
}
body.gp-cart-layout .woocommerce-notices-wrapper { grid-column: 1 / -1; }
body.gp-cart-layout .cross-sells { grid-column: 1; }

/* Cart table — clean borderless rows */
body.gp-cart-layout table.shop_table.cart { border: 0; }
body.gp-cart-layout table.shop_table.cart th {
	background: transparent;
	border-bottom: 1px solid var(--gp-border);
	font-size: 14px;
	font-weight: 600;
	color: var(--gp-dark);
	padding: 12px 8px;
}
body.gp-cart-layout table.shop_table.cart td {
	border: 0;
	border-bottom: 1px dashed var(--gp-border);
	padding: 18px 8px;
	vertical-align: middle;
}
body.gp-cart-layout table.shop_table.cart td.product-thumbnail img {
	width: 72px; height: 72px; object-fit: cover;
	border-radius: calc(var(--gp-radius) - 4px);
	background: var(--gp-surface);
}
body.gp-cart-layout td.product-name a { color: var(--gp-dark); font-weight: 600; text-decoration: none; }
body.gp-cart-layout td.product-remove a.remove {
	color: var(--gp-muted) !important;
	font-size: 14px;
	width: auto; height: auto;
	text-decoration: underline;
	border-radius: 0;
	background: none !important;
}
body.gp-cart-layout td.product-remove a.remove:hover { color: var(--gp-badge) !important; }

/* Quantity steppers */
body.gp-cart-layout .quantity {
	display: inline-flex;
	align-items: center;
	background: var(--gp-surface);
	border-radius: var(--gp-btn-radius);
	padding: 4px;
}
.gp-qty-btn {
	width: 30px; height: 30px;
	border: 0; background: transparent;
	font-size: 16px; cursor: pointer;
	color: var(--gp-dark);
	border-radius: 50%;
	line-height: 1;
}
.gp-qty-btn:hover { background: var(--gp-light); }
body.gp-cart-layout .quantity .qty {
	border: 0 !important;
	background: transparent;
	width: 40px;
	text-align: center;
	font-family: var(--gp-font);
	font-size: 15px;
	padding: 0 !important;
}
body.gp-cart-layout button[name="update_cart"] { display: none !important; }

/* Coupon row */
body.gp-cart-layout .coupon { display: flex; gap: 10px; align-items: center; }
body.gp-cart-layout .coupon .input-text {
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-btn-radius);
	padding: 12px 18px !important;
	width: 200px !important;
	font-family: var(--gp-font);
}
body.gp-cart-layout .coupon button {
	background: var(--gp-dark) !important;
	border-radius: var(--gp-btn-radius) !important;
}

/* Free shipping progress */
.gp-ship-progress { margin-bottom: 22px; }
.gp-ship-progress__track {
	position: relative;
	height: 8px;
	background: var(--gp-border);
	border-radius: 999px;
}
.gp-ship-progress__fill {
	height: 100%;
	background: repeating-linear-gradient(45deg, var(--gp-accent-alt), var(--gp-accent-alt) 8px, color-mix(in srgb, var(--gp-accent-alt) 70%, #000) 8px, color-mix(in srgb, var(--gp-accent-alt) 70%, #000) 16px);
	border-radius: 999px;
	transition: width .3s ease;
}
.gp-ship-progress__truck {
	position: absolute;
	top: 50%;
	transform: translate(-50%, -50%);
	background: var(--gp-light);
	border: 1px solid var(--gp-border);
	border-radius: 50%;
	width: 30px; height: 30px;
	display: flex; align-items: center; justify-content: center;
	font-size: 14px;
}
.gp-ship-progress__label { font-size: 14px; margin: 12px 0 0; color: var(--gp-dark); }

/* Order note */
.gp-cart-note { margin-bottom: 22px; }
.gp-cart-note h4 { font-size: 16px; font-weight: 600; margin: 0 0 10px; color: var(--gp-dark); }
.gp-cart-note textarea {
	width: 100%;
	border: 1px solid var(--gp-border);
	border-radius: calc(var(--gp-radius) - 2px);
	padding: 12px 14px;
	font-family: var(--gp-font);
	font-size: 14px;
	resize: vertical;
	background: var(--gp-light);
}

/* Totals card */
body.gp-cart-layout .cart_totals { border: 0 !important; padding: 0 !important; float: none !important; width: 100% !important; }
body.gp-cart-layout .cart_totals h2 { font-size: 20px; font-weight: 600; margin: 0 0 14px; }
body.gp-cart-layout .cart_totals table.shop_table { border: 0; }
body.gp-cart-layout .cart_totals th, body.gp-cart-layout .cart_totals td { border: 0; background: transparent; padding: 8px 0; font-size: 15px; }
body.gp-cart-layout .cart_totals .order-total th, body.gp-cart-layout .cart_totals .order-total td { border-top: 1px solid var(--gp-border); padding-top: 14px; font-size: 17px; }
body.gp-cart-layout .wc-proceed-to-checkout { padding: 12px 0 0 !important; }
body.gp-cart-layout .wc-proceed-to-checkout a.checkout-button {
	background: var(--gp-dark) !important;
	border-radius: var(--gp-btn-radius) !important;
	width: 100%;
	text-align: center;
	font-size: 15px !important;
	padding: 16px !important;
}

/* Delivery info card */
.gp-cart-info { margin-top: 26px; background: var(--gp-light); border-radius: var(--gp-radius); padding: 22px; }
.gp-cart-info h4 { font-size: 15px; font-weight: 600; margin: 0 0 8px; color: var(--gp-dark); }
.gp-cart-info p { font-size: 13px; color: var(--gp-muted); line-height: 1.6; margin: 0 0 16px; }
.gp-cart-info__pay { display: flex; gap: 6px; flex-wrap: wrap; }

/* Cross-sells as horizontal cards */
body.gp-cart-layout .cross-sells > h2 { font-size: 20px; font-weight: 600; margin: 28px 0 16px; }
body.gp-cart-layout .cross-sells ul.products { display: grid !important; grid-template-columns: repeat(2, 1fr); gap: 18px; }
body.gp-cart-layout .cross-sells ul.products li.product {
	display: grid;
	grid-template-columns: 84px 1fr;
	gap: 14px;
	align-items: center;
	text-align: left;
	width: 100% !important;
	margin: 0 !important;
	padding: 14px;
}
body.gp-cart-layout .cross-sells li.product img { width: 84px !important; height: 84px; object-fit: cover; margin: 0 !important; grid-row: span 3; }
body.gp-cart-layout .cross-sells li.product .woocommerce-loop-product__title { padding: 0; font-size: 15px; }
body.gp-cart-layout .cross-sells li.product .price { font-size: 15px; margin: 2px 0; }
body.gp-cart-layout .cross-sells li.product .button {
	margin: 4px 0 0;
	background: var(--gp-accent-alt) !important;
	color: var(--gp-dark) !important;
	padding: 8px 16px !important;
	font-size: 13px !important;
	justify-self: start;
}
body.gp-cart-layout .cross-sells li.product .onsale { display: none; }

/* ============================================================
   Checkout page layout — form left, summary card right
   ============================================================ */
body.gp-checkout-layout form.checkout {
	max-width: var(--gp-maxw);
	margin: 0 auto;
	display: grid;
	grid-template-columns: 1.4fr 1fr;
	gap: 40px;
	align-items: start;
	font-family: var(--gp-font);
}
body.gp-checkout-layout #customer_details { grid-column: 1; width: 100% !important; float: none !important; }
body.gp-checkout-layout #customer_details .col-1,
body.gp-checkout-layout #customer_details .col-2 { width: 100% !important; float: none !important; }
body.gp-checkout-layout #order_review_heading,
body.gp-checkout-layout #order_review {
	grid-column: 2;
	width: 100% !important;
	float: none !important;
}
body.gp-checkout-layout #order_review {
	background: var(--gp-surface);
	border-radius: var(--gp-radius);
	padding: 26px;
	position: sticky;
	top: 90px;
}
body.gp-checkout-layout #order_review_heading { font-size: 20px; font-weight: 600; margin: 0; align-self: end; }
body.gp-checkout-layout h3 { font-size: 18px; font-weight: 600; }
body.gp-checkout-layout table.shop_table { border: 0; }
body.gp-checkout-layout table.shop_table th,
body.gp-checkout-layout table.shop_table td { border: 0; background: transparent; padding: 8px 0; font-size: 14px; }
body.gp-checkout-layout table.shop_table tr.order-total th,
body.gp-checkout-layout table.shop_table tr.order-total td { border-top: 1px solid var(--gp-border); padding-top: 14px; font-size: 16px; }
body.gp-checkout-layout #payment { background: var(--gp-light); border: 1px solid var(--gp-border); }
body.gp-checkout-layout #place_order {
	background: var(--gp-dark) !important;
	border-radius: var(--gp-btn-radius) !important;
	padding: 16px !important;
	font-size: 15px !important;
}

@media (max-width: 900px) {
	body.gp-cart-layout .woocommerce,
	body.gp-checkout-layout form.checkout { grid-template-columns: 1fr; }
	body.gp-cart-layout .cart-collaterals { grid-column: 1; grid-row: auto; }
	body.gp-cart-layout .cross-sells ul.products { grid-template-columns: 1fr; }
	body.gp-checkout-layout #order_review_heading,
	body.gp-checkout-layout #order_review { grid-column: 1; position: static; }
}

/* ============================================================
   v1.5 — homepage polish + single product page
   ============================================================ */

/* Trust icon emoji */
.gp-trust__emoji { display: block; font-size: 34px; margin: 0 auto 14px; line-height: 1; }

/* How It Works: green top rule with dot marker */
.gp-how__step { border-top: 2px solid var(--gp-border); padding-top: 18px; }
.gp-how__step::before {
	content: '';
	display: block;
	width: 10px; height: 10px;
	background: var(--gp-accent-alt);
	border-radius: 50%;
	margin-top: -24px;
	margin-bottom: 14px;
}

/* FAQ: force left alignment against theme centering */
.gp-faq__content { text-align: left; }
.gp-faq .gp-faq__q { text-align: left !important; justify-content: space-between !important; }
.gp-faq__content h2 { text-align: left; }
.gp-faq__a p { text-align: left; }

/* Offer banner: keep chips right, stop wrap collapse */
.gp-offer__main { flex: 1 1 380px; min-width: 0; }
.gp-offer__chips { flex: 0 0 auto; align-self: center; }

/* ============================================================
   Single product page (gp-product-layout)
   ============================================================ */
body.gp-product-layout div.product { font-family: var(--gp-font); }

/* Gallery + summary balance */
body.gp-product-layout div.product div.images { width: 46% !important; }
body.gp-product-layout div.product div.summary { width: 50% !important; }
body.gp-product-layout div.product div.images img { border-radius: var(--gp-radius); background: var(--gp-surface); }

/* Top labels */
.gp-pp-toplabels { display: flex; gap: 10px; align-items: center; margin-bottom: 12px; flex-wrap: wrap; }
.gp-card-badge--inline { position: static; }
.gp-pp-catchip {
	background: var(--gp-accent-alt);
	color: var(--gp-dark);
	font-size: 11px; font-weight: 700;
	letter-spacing: .6px; text-transform: uppercase;
	padding: 5px 10px; border-radius: 4px;
}

body.gp-product-layout .product_title { font-size: clamp(26px, 3vw, 36px); font-weight: 600; margin-bottom: 6px; }
body.gp-product-layout div.product p.price { font-size: 26px; font-weight: 600; color: var(--gp-dark); }

/* Promo strip */
.gp-pp-promo {
	background: #fff7e6;
	border: 1px solid #f0dbb0;
	color: #7a5b13;
	border-radius: var(--gp-btn-radius);
	display: inline-block;
	padding: 9px 18px;
	font-size: 13px; font-weight: 600;
	margin: 6px 0 14px;
}
.gp-pp-promo__code { background: var(--gp-dark); color: #fff; border-radius: 4px; padding: 2px 8px; margin-left: 4px; }

/* Spec rows */
.gp-pp-specs { border-top: 1px solid var(--gp-border); margin: 14px 0 18px; }
.gp-pp-specs__row { display: flex; align-items: center; gap: 16px; padding: 11px 0; border-bottom: 1px solid var(--gp-border); }
.gp-pp-specs__pill {
	background: var(--gp-dark); color: #fff;
	font-size: 10px; font-weight: 700; letter-spacing: .8px;
	padding: 5px 12px; border-radius: var(--gp-btn-radius);
	min-width: 84px; text-align: center;
}
.gp-pp-specs__val { font-size: 14px; color: var(--gp-dark); }

/* COA buttons */
.gp-pp-coas { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; margin: 6px 0 14px; }
.gp-pp-coa {
	display: flex;
	flex-direction: column;
	gap: 3px;
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	padding: 13px 16px;
	color: var(--gp-dark);
	text-decoration: none !important;
	background: var(--gp-light);
	transition: border-color .2s ease, background .2s ease;
}
.gp-pp-coa:hover { border-color: var(--gp-dark); color: var(--gp-dark); background: var(--gp-surface); }
.gp-pp-coa__label { font-size: 14px; font-weight: 600; color: var(--gp-dark); }
.gp-pp-coa__sub { font-size: 12px; font-weight: 400; color: var(--gp-muted); }

/* Notice box */
.gp-pp-notice {
	background: #fffbea;
	border: 1px solid #f2e2ad;
	border-radius: var(--gp-radius);
	padding: 16px 18px;
	display: flex; gap: 12px;
	margin: 0 0 18px;
}
.gp-pp-notice__ico {
	background: var(--gp-accent-alt);
	color: var(--gp-dark);
	width: 24px; height: 24px; border-radius: 50%;
	display: flex; align-items: center; justify-content: center;
	font-weight: 700; flex: 0 0 24px; font-size: 13px;
}
.gp-pp-notice strong { display: block; font-size: 14px; margin-bottom: 4px; color: var(--gp-dark); }
.gp-pp-notice p { font-size: 13px; color: #6b5d2a; margin: 0; line-height: 1.6; }

/* Add to cart: green, full width, pill */
body.gp-product-layout form.cart { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
body.gp-product-layout form.cart .quantity { background: var(--gp-surface); border-radius: var(--gp-btn-radius); padding: 4px 8px; }
body.gp-product-layout form.cart .quantity .qty { border: 0 !important; background: transparent; width: 52px; text-align: center; }
body.gp-product-layout .single_add_to_cart_button {
	flex: 1 1 auto;
	background: var(--gp-accent-alt) !important;
	color: var(--gp-dark) !important;
	border-radius: var(--gp-btn-radius) !important;
	padding: 16px 24px !important;
	font-size: 16px !important;
	font-weight: 700 !important;
	text-align: center;
}
body.gp-product-layout .single_add_to_cart_button:hover { opacity: .88; }

/* Trust chips */
.gp-pp-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0 0; }
.gp-pp-chip {
	background: var(--gp-dark); color: #fff;
	font-size: 12px; font-weight: 600;
	padding: 7px 14px; border-radius: var(--gp-btn-radius);
}

/* Delivery box */
.gp-pp-delivery {
	background: var(--gp-dark); color: #fff;
	border-radius: var(--gp-radius);
	padding: 14px 18px;
	margin: 16px 0 0;
	border-left: 4px solid var(--gp-accent-alt);
}
.gp-pp-delivery p { margin: 4px 0; font-size: 13px; color: rgba(255,255,255,.9); }

/* Payment badges */
.gp-pp-pay {
	background: var(--gp-surface);
	border-radius: var(--gp-radius);
	padding: 16px 18px;
	margin: 16px 0 0;
	text-align: center;
}
.gp-pp-pay__title { display: block; font-size: 13px; font-weight: 600; color: var(--gp-dark); margin-bottom: 10px; }
.gp-pp-pay__icons { display: flex; gap: 6px; justify-content: center; flex-wrap: wrap; }

/* Tabs cleanup */
body.gp-product-layout .woocommerce-tabs { margin-top: 40px; }

@media (max-width: 768px) {
	body.gp-product-layout div.product div.images,
	body.gp-product-layout div.product div.summary { width: 100% !important; float: none !important; }
	.gp-pp-coas { grid-template-columns: 1fr; }
}

/* ============================================================
   v1.6 — Cart drawer + checkout bump/upsells
   ============================================================ */

/* Overlay + panel */
.gp-drawer-overlay {
	position: fixed; inset: 0;
	background: rgba(0,0,0,.45);
	opacity: 0; visibility: hidden;
	transition: opacity .25s ease;
	z-index: 9998;
}
.gp-drawer-overlay.gp-open { opacity: 1; visibility: visible; }
.gp-drawer {
	position: fixed; top: 0; right: 0; bottom: 0;
	width: 420px; max-width: 92vw;
	background: var(--gp-light);
	z-index: 9999;
	transform: translateX(100%);
	transition: transform .3s ease;
	display: flex; flex-direction: column;
	font-family: var(--gp-font);
	box-shadow: -18px 0 44px rgba(0,0,0,.14);
}
.gp-drawer.gp-open { transform: translateX(0); }
.gp-drawer.gp-busy { opacity: .6; pointer-events: none; }

.gp-drawer__head {
	display: flex; align-items: center; justify-content: space-between;
	padding: 18px 22px;
	border-bottom: 1px solid var(--gp-border);
}
.gp-drawer__head h3 { font-size: 20px; font-weight: 600; margin: 0; color: var(--gp-dark); }
.gp-drawer__close {
	background: none; border: 0; cursor: pointer;
	font-size: 26px; line-height: 1; color: var(--gp-dark); padding: 4px;
}

#gp-drawer-body { flex: 1; overflow-y: auto; padding: 18px 22px; }
#gp-drawer-body .gp-ship-progress { background: var(--gp-surface); border-radius: var(--gp-radius); padding: 14px; }
.gp-drawer__empty { color: var(--gp-muted); text-align: center; padding: 40px 0; }

.gp-drawer__item {
	display: grid;
	grid-template-columns: 72px 1fr auto;
	gap: 14px;
	align-items: start;
	padding: 16px 0;
	border-bottom: 1px solid var(--gp-border);
}
.gp-drawer__thumb img { width: 72px; height: 72px; object-fit: cover; border-radius: 8px; background: var(--gp-surface); }
.gp-drawer__name { font-weight: 600; color: var(--gp-dark); text-decoration: none; font-size: 15px; display: block; }
.gp-drawer__price { color: var(--gp-dark); font-size: 14px; display: block; margin: 4px 0 8px; }
.gp-drawer__qty {
	display: inline-flex; align-items: center; gap: 2px;
	background: var(--gp-surface); border-radius: 8px; padding: 2px;
}
.gp-drawer__qtybtn {
	width: 30px; height: 30px; border: 0; background: transparent;
	cursor: pointer; font-size: 15px; color: var(--gp-dark); border-radius: 6px;
}
.gp-drawer__qtybtn:hover { background: var(--gp-light); }
.gp-drawer__qtyval { min-width: 26px; text-align: center; font-size: 14px; }
.gp-drawer__remove { background: none; border: 0; cursor: pointer; font-size: 15px; color: var(--gp-muted); padding: 2px; }
.gp-drawer__remove:hover { color: var(--gp-badge); }

.gp-drawer__upsells { margin-top: 22px; }
.gp-drawer__upsells h4 { font-size: 16px; font-weight: 600; margin: 0 0 14px; color: var(--gp-dark); }
.gp-drawer__upsell-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.gp-drawer__upsell { text-align: center; }
.gp-drawer__upsell img { width: 100%; aspect-ratio: 1/1; object-fit: cover; border-radius: 8px; background: var(--gp-surface); }
.gp-drawer__upsell-name { display: block; font-size: 12px; font-weight: 600; color: var(--gp-dark); margin: 8px 0 2px; }
.gp-drawer__upsell-price { display: block; font-size: 12px; color: var(--gp-muted); margin-bottom: 8px; }
.gp-drawer__upsell-price del { margin-right: 4px; }
.gp-drawer__upsell-btn { padding: 8px 0 !important; width: 100%; font-size: 12px !important; }

#gp-drawer-foot {
	border-top: 1px solid var(--gp-border);
	padding: 18px 22px;
	background: var(--gp-surface);
}
.gp-drawer__subtotal {
	display: flex; justify-content: space-between; align-items: center;
	font-size: 17px; margin-bottom: 14px; color: var(--gp-dark);
}
.gp-drawer__btn { display: block; width: 100%; text-align: center; margin-bottom: 10px; box-sizing: border-box; }
#gp-drawer-foot .gp-drawer__btn:last-child { margin-bottom: 0; }

/* ---------- Checkout summary items ---------- */
.gp-co-item { display: inline-flex; align-items: center; gap: 12px; }
.gp-co-item img.gp-co-thumb, .gp-co-item img {
	width: 54px; height: 54px; object-fit: cover;
	border-radius: 8px; background: var(--gp-surface);
	border: 1px solid var(--gp-border);
}
.gp-co-item__name { font-size: 14px; font-weight: 500; color: var(--gp-dark); }

/* ---------- Order bump ---------- */
.gp-bump {
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	background: var(--gp-light);
	margin-bottom: 20px;
	overflow: hidden;
}
.gp-bump__head {
	display: flex; align-items: center; gap: 10px;
	padding: 14px 18px;
	border-bottom: 1px solid var(--gp-border);
	cursor: pointer;
	font-size: 15px;
	color: var(--gp-dark);
}
.gp-bump__head input { width: 18px; height: 18px; accent-color: var(--gp-accent-alt); }
.gp-bump__body { display: flex; gap: 14px; padding: 16px 18px; align-items: center; }
.gp-bump__body img { width: 76px; height: 76px; object-fit: cover; border-radius: 8px; background: var(--gp-surface); }
.gp-bump__body p { margin: 0 0 6px; font-size: 14px; color: var(--gp-muted); }
.gp-bump__price del { color: var(--gp-muted); margin-right: 8px; }
.gp-bump__price strong { color: var(--gp-dark); font-size: 16px; }

/* ---------- Checkout upsells ---------- */
.gp-co-upsells { margin-top: 22px; }
.gp-co-upsells__title {
	font-size: 12px; font-weight: 700; letter-spacing: 1.4px;
	color: var(--gp-dark);
	border-left: 3px solid var(--gp-accent-alt);
	padding-left: 10px;
	margin: 0 0 14px;
}
.gp-co-upsell {
	display: grid;
	grid-template-columns: 64px 1fr auto;
	gap: 14px; align-items: center;
	background: var(--gp-light);
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	padding: 12px 14px;
	margin-bottom: 12px;
}
.gp-co-upsell img { width: 64px; height: 64px; object-fit: cover; border-radius: 8px; background: var(--gp-surface); }
.gp-co-upsell__info strong { display: block; font-size: 14px; color: var(--gp-dark); margin-bottom: 4px; }
.gp-co-upsell__price del { color: var(--gp-muted); font-size: 13px; margin-right: 6px; }
.gp-co-upsell__price em { font-style: normal; color: var(--gp-accent-alt); font-weight: 700; font-size: 15px; filter: brightness(.8); }
.gp-co-upsell__add {
	background: var(--gp-accent-alt);
	color: var(--gp-dark);
	border: 0; cursor: pointer;
	font-size: 12px; font-weight: 700; letter-spacing: .4px;
	padding: 12px 16px;
	border-radius: 8px;
	transition: opacity .2s ease;
	font-family: var(--gp-font);
}
.gp-co-upsell__add:hover { opacity: .85; }
.gp-co-upsell__add:disabled { opacity: .6; cursor: default; }

@media (max-width: 520px) {
	.gp-drawer { width: 100vw; max-width: 100vw; }
	.gp-drawer__upsell-grid { grid-template-columns: repeat(3, 1fr); gap: 8px; }
}

/* ============================================================
   v1.6.2 — layout placement fixes, button hardening, mobile
   (appended last so these override earlier rules)
   ============================================================ */

/* ---------- Hide duplicate theme page titles on cart/checkout ---------- */
body.gp-cart-layout h1.entry-title,
body.gp-cart-layout .page-title,
body.gp-cart-layout .entry-header,
body.gp-checkout-layout h1.entry-title,
body.gp-checkout-layout .page-title,
body.gp-checkout-layout .entry-header { display: none !important; }

/* ---------- CART: corrected explicit grid placement ---------- */
body.gp-cart-layout .woocommerce {
	display: grid !important;
	grid-template-columns: 1.6fr 1fr;
	grid-auto-rows: auto;
	gap: 0 36px;
	align-items: start;
}
body.gp-cart-layout .gp-cart-head { grid-column: 1 / -1; grid-row: 1; }
body.gp-cart-layout .woocommerce-notices-wrapper { grid-column: 1 / -1; grid-row: 2; }
body.gp-cart-layout form.woocommerce-cart-form { grid-column: 1; grid-row: 3; }
body.gp-cart-layout .cart-collaterals {
	grid-column: 2;
	grid-row: 3 / span 2;
	margin-top: 0;
}
body.gp-cart-layout .cross-sells { grid-column: 1; grid-row: 4; margin-top: 10px; }
body.gp-cart-layout .woocommerce > *:not(.gp-cart-head):not(.woocommerce-notices-wrapper):not(.woocommerce-cart-form):not(.cart-collaterals):not(.cross-sells) {
	grid-column: 1 / -1;
}

/* ---------- CHECKOUT: corrected explicit grid placement ---------- */
body.gp-checkout-layout form.checkout {
	display: grid !important;
	grid-template-columns: 1.4fr 1fr;
	gap: 0 40px;
	align-items: start;
}
body.gp-checkout-layout #customer_details { grid-column: 1; grid-row: 1 / span 6; }
body.gp-checkout-layout #order_review_heading {
	grid-column: 2; grid-row: 1;
	align-self: start !important;
	margin: 0 0 14px;
}
body.gp-checkout-layout .gp-bump { grid-column: 2; grid-row: 2; }
body.gp-checkout-layout #order_review { grid-column: 2; grid-row: 3; position: static !important; }
body.gp-checkout-layout .gp-co-upsells { grid-column: 2; grid-row: 4; }

/* ---------- Buttons: hard reset against theme styles ---------- */
.gp-qty-btn,
.gp-drawer__qtybtn,
.gp-drawer__remove,
.gp-drawer__close,
.gp-headerbar__icon,
.gp-headerbar__burger {
	background: transparent !important;
	border: 0 !important;
	box-shadow: none !important;
	outline: none !important;
	color: var(--gp-dark) !important;
	padding: 0 !important;
	text-transform: none !important;
	letter-spacing: normal !important;
	font-family: var(--gp-font) !important;
}
.gp-qty-btn { width: 32px !important; height: 32px !important; font-size: 16px !important; border-radius: 50% !important; }
.gp-qty-btn:hover { background: var(--gp-light) !important; }
.gp-drawer__qtybtn { width: 32px !important; height: 32px !important; font-size: 15px !important; border-radius: 8px !important; }
.gp-drawer__qtybtn:hover { background: var(--gp-light) !important; }
.gp-drawer__remove { font-size: 16px !important; color: var(--gp-muted) !important; }
.gp-drawer__remove:hover { color: var(--gp-badge) !important; }
.gp-drawer__close { font-size: 26px !important; line-height: 1 !important; }

body.gp-cart-layout td.product-remove a.remove {
	border: 0 !important;
	background: none !important;
	box-shadow: none !important;
	font-size: 14px !important;
	width: auto !important; height: auto !important;
}

/* GP buttons: enforce palette over theme button/link styles */
.gp-btn { text-decoration: none !important; box-shadow: none !important; text-transform: none !important; }
.gp-btn--primary, button.gp-btn--primary { background: var(--gp-accent) !important; color: var(--gp-light) !important; border: 2px solid transparent !important; }
.gp-btn--alt, button.gp-btn--alt { background: var(--gp-accent-alt) !important; color: var(--gp-dark) !important; border: 2px solid transparent !important; }
.gp-btn--outline, button.gp-btn--outline { background: transparent !important; color: var(--gp-dark) !important; border: 2px solid var(--gp-dark) !important; }
.gp-btn--outline:hover { background: var(--gp-dark) !important; color: var(--gp-light) !important; }
.gp-btn--light, button.gp-btn--light { background: var(--gp-light) !important; color: var(--gp-dark) !important; border: 2px solid transparent !important; }
.gp-btn--outline-light, button.gp-btn--outline-light { background: transparent !important; color: var(--gp-accent-alt) !important; border: 2px solid var(--gp-accent-alt) !important; }

/* Cart page quantity pill: keep buttons flush inside */
body.gp-cart-layout .quantity { border: 1px solid var(--gp-border); }
body.gp-cart-layout .quantity .qty { color: var(--gp-dark) !important; }

/* Drawer upsell links: neutralize theme link color */
.gp-drawer a, .gp-drawer a:hover { text-decoration: none; }
.gp-drawer__name, .gp-drawer__upsell-name { color: var(--gp-dark) !important; }

/* ---------- Mobile: 100% responsive pass ---------- */
@media (max-width: 900px) {
	/* Cart: single column, natural order */
	body.gp-cart-layout .woocommerce { display: block !important; padding: 0 16px 40px; }
	body.gp-cart-layout .cart-collaterals { margin-top: 24px; padding: 20px; }
	body.gp-cart-layout .cross-sells { margin-top: 24px; }

	/* Checkout: single column, summary after form */
	body.gp-checkout-layout form.checkout { display: block !important; }
	body.gp-checkout-layout #order_review_heading { margin-top: 26px; }
	body.gp-checkout-layout .gp-bump { margin-top: 14px; }
}

@media (max-width: 768px) {
	/* Stacked cart table rows */
	body.gp-cart-layout table.shop_table.cart thead { display: none; }
	body.gp-cart-layout table.shop_table.cart tr {
		display: block;
		border-bottom: 1px solid var(--gp-border);
		padding: 14px 0;
	}
	body.gp-cart-layout table.shop_table.cart td {
		display: flex;
		justify-content: space-between;
		align-items: center;
		border: 0 !important;
		padding: 6px 0;
		text-align: right;
	}
	body.gp-cart-layout table.shop_table.cart td::before {
		content: attr(data-title);
		font-weight: 600;
		color: var(--gp-dark);
		text-align: left;
		margin-right: auto;
	}
	body.gp-cart-layout table.shop_table.cart td.product-thumbnail { justify-content: center; }
	body.gp-cart-layout table.shop_table.cart td.product-thumbnail::before,
	body.gp-cart-layout table.shop_table.cart td.product-remove::before { content: none; }
	body.gp-cart-layout table.shop_table.cart td.actions { display: block; }
	body.gp-cart-layout .coupon { flex-direction: column; align-items: stretch; }
	body.gp-cart-layout .coupon .input-text { width: 100% !important; box-sizing: border-box; }

	/* Checkout summary items wrap nicely */
	.gp-co-item { gap: 8px; }
	.gp-co-item img { width: 44px; height: 44px; }

	/* Product page chips/boxes breathing room */
	.gp-pp-chips { gap: 6px; }
	.gp-pp-chip { font-size: 11px; padding: 6px 10px; }
}

@media (max-width: 480px) {
	.gp-cart-head h1 { font-size: 26px; }
	.gp-drawer__upsell-grid { grid-template-columns: repeat(2, 1fr); }
	.gp-hero__title { font-size: 30px; }
	.gp-offer { padding: 28px 18px; }
	body.gp-checkout-layout #order_review { padding: 18px; }
}

/* ============================================================
   v1.6.3 — coupon text fix + deeper mobile polish
   ============================================================ */

/* Apply coupon / Woo buttons: enforce readable text over theme colors */
body.gp-cart-layout .coupon button,
body.gp-cart-layout .coupon button.button,
body.gp-cart-layout button[name="apply_coupon"] {
	color: #ffffff !important;
	background: var(--gp-dark) !important;
	border: 0 !important;
	opacity: 1 !important;
	font-weight: 600 !important;
}
.woocommerce a.button, .woocommerce button.button, .woocommerce input.button,
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button,
.woocommerce-checkout #place_order {
	color: #ffffff !important;
}
body.gp-product-layout .single_add_to_cart_button { color: var(--gp-dark) !important; }
body.gp-cart-layout .cross-sells li.product .button { color: var(--gp-dark) !important; }
.gp-co-upsell__add { color: var(--gp-dark) !important; }

/* ---------- Mobile: deeper pass ---------- */
@media (max-width: 768px) {
	/* Prevent iOS zoom on focus */
	input[type="text"], input[type="email"], input[type="tel"],
	input[type="number"], textarea, select, .qty { font-size: 16px !important; }

	/* Single product: stack qty + full-width add to cart */
	body.gp-product-layout form.cart { flex-direction: row; }
	body.gp-product-layout .single_add_to_cart_button { flex: 1 1 100%; order: 2; }
	body.gp-product-layout form.cart .quantity { order: 1; }
	.gp-pp-toplabels { gap: 6px; }
	.gp-pp-specs__row { gap: 10px; }
	.gp-pp-coas { grid-template-columns: 1fr; }
	.gp-pp-delivery, .gp-pp-pay, .gp-pp-notice { padding: 12px 14px; }

	/* Announcement + USP strips */
	.gp-announce { font-size: 11px; padding: 8px 12px; }
	.gp-usp { gap: 10px; padding: 12px 16px; }
	.gp-usp__item { font-size: 11px; }
	.gp-usp__dot { display: none; }

	/* Checkout fields and summary full width */
	body.gp-checkout-layout form .form-row { width: 100% !important; float: none !important; }
	body.gp-checkout-layout #order_review { padding: 18px 14px; }
	.gp-bump__body { flex-direction: row; }
	.gp-co-upsell { grid-template-columns: 52px 1fr auto; gap: 10px; padding: 10px; }
	.gp-co-upsell img { width: 52px; height: 52px; }
	.gp-co-upsell__add { padding: 10px 12px; font-size: 11px; }

	/* Footer bottom bar stacks */
	.gp-footerlight__bottom { flex-direction: column; text-align: center; }
	.gp-footerlight__pay { justify-content: center; }

	/* Testimonials / features / steps spacing */
	.gp-feature, .gp-testi, .gp-how { padding: 40px 18px; }
	.gp-faq { padding: 40px 18px; gap: 26px; }
}

@media (max-width: 380px) {
	.gp-drawer__item { grid-template-columns: 60px 1fr auto; gap: 10px; }
	.gp-drawer__thumb img { width: 60px; height: 60px; }
	#gp-drawer-body, #gp-drawer-foot, .gp-drawer__head { padding-left: 14px; padding-right: 14px; }
}

/* ============================================================
   v1.7 — category link, Show More, accordion, brand badges
   ============================================================ */

/* Category link above title */
.gp-pp-toplabels { flex-wrap: wrap; }
.gp-pp-catlink {
	display: block;
	width: 100%;
	order: 2;
	font-size: 15px;
	color: var(--gp-dark) !important;
	text-decoration: none !important;
	margin: 2px 0;
}
.gp-pp-catlink:hover { color: var(--gp-accent-alt) !important; }
.gp-card-badge--inline { order: 1; }
.gp-pp-catchip { order: 3; }

/* Short description clamp + toggle */
.woocommerce-product-details__short-description.gp-clamped {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.gp-showmore {
	display: inline-block;
	margin: 4px 0 14px;
	font-family: var(--gp-font);
	font-size: 14px;
	font-weight: 600;
	color: var(--gp-dark) !important;
	text-decoration: underline !important;
}

/* Accordion tabs */
body.gp-product-layout .woocommerce-tabs { max-width: 100%; }
body.gp-product-layout .woocommerce-tabs .panel { margin: 0 !important; padding: 0 0 22px !important; box-shadow: none !important; border: 0 !important; }
.gp-acc__head {
	display: flex !important;
	justify-content: space-between;
	align-items: center;
	width: 100%;
	background: transparent !important;
	border: 0 !important;
	border-top: 1px solid var(--gp-border) !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	padding: 20px 4px !important;
	cursor: pointer;
	font-family: var(--gp-font) !important;
	font-size: 20px !important;
	font-weight: 600 !important;
	color: var(--gp-dark) !important;
	text-align: left !important;
	text-transform: none !important;
	letter-spacing: normal !important;
}
.gp-acc__head:hover { color: var(--gp-accent-alt) !important; background: transparent !important; }
.gp-acc__icon { font-size: 22px; font-weight: 400; color: var(--gp-muted); }
.gp-acc__head.gp-open .gp-acc__icon { color: var(--gp-dark); }
.gp-acc__panel { font-family: var(--gp-font); color: var(--gp-muted); font-size: 15px; line-height: 1.7; }
body.gp-product-layout .woocommerce-tabs::after { content: ''; display: block; border-top: 1px solid var(--gp-border); }

/* Brand payment badges: text chips in brand-inspired colors */
.gp-paybadge {
	display: inline-block;
	font-family: var(--gp-font);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .3px;
	padding: 6px 12px;
	border-radius: 5px;
	margin: 2px;
	line-height: 1;
}
.gp-paybadge--amex   { background: #2e77bc; color: #fff; }
.gp-paybadge--klarna { background: #ffb3c7; color: #17120f; }
.gp-paybadge--mc     { background: #1a1a1a; color: #ff9f00; }
.gp-paybadge--visa   { background: #1a1f71; color: #fff; font-style: italic; }
.gp-paybadge--paypal { background: #253b80; color: #fff; }

.gp-pp-pay__icons, .gp-cart-info__pay { display: flex; flex-wrap: wrap; gap: 4px; justify-content: center; }
.gp-cart-info__pay { justify-content: flex-start; }

@media (max-width: 768px) {
	.gp-acc__head { font-size: 17px !important; padding: 16px 2px !important; }
}

/* Payment badges image (replaces text chips when configured) */
.gp-pay-image {
	max-width: 100%;
	height: auto;
	max-height: 42px;
	width: auto;
	display: inline-block;
}
.gp-pp-pay .gp-pay-image { margin: 0 auto; }

/* ============================================================
   v1.7.2 — meta line removed, tabs relocated into summary column
   ============================================================ */

/* Tabs now render inside div.summary (right column) — constrain width,
   remove any leftover full-width assumptions. */
body.gp-product-layout div.summary .woocommerce-tabs {
	width: 100%;
	margin-top: 8px;
}
body.gp-product-layout div.product div.images + div.summary { overflow: visible; }

@media (max-width: 768px) {
	body.gp-product-layout div.summary .woocommerce-tabs { margin-top: 4px; }
}

/* ============================================================
   v1.7.3 — accordion closed-state hardening, layout clearfix,
   Related/Upsells restyled to match homepage product cards
   ============================================================ */

/* Force-closed by default, immune to theme !important panel rules.
   Opened only via the .gp-panel-open class the JS toggles. */
body.gp-product-layout .woocommerce-tabs .panel.gp-acc__panel {
	display: none !important;
}
body.gp-product-layout .woocommerce-tabs .panel.gp-acc__panel.gp-panel-open {
	display: block !important;
}

/* ---------- Clearfix: stop floated image/summary columns from ---------- */
/* swallowing "Related products" / "You may also like" into the gap    */
body.gp-product-layout div.product::after {
	content: '';
	display: table;
	clear: both;
}
body.gp-product-layout .related.products,
body.gp-product-layout .upsells.products,
body.gp-product-layout .woocommerce-tabs {
	clear: both !important;
	float: none !important;
	width: 100% !important;
}
body.gp-product-layout .related.products,
body.gp-product-layout .upsells.products {
	margin-top: 50px;
}

/* ---------- Related / Upsells: match homepage product-card scheme ---------- */
body.gp-product-layout .related.products > h2,
body.gp-product-layout .upsells.products > h2 {
	font-family: var(--gp-font);
	font-size: clamp(24px, 3vw, 32px);
	font-weight: 600;
	color: var(--gp-dark);
	text-align: center;
	margin: 0 0 30px;
}
body.gp-product-layout .related.products ul.products,
body.gp-product-layout .upsells.products ul.products {
	display: grid !important;
	grid-template-columns: repeat(4, 1fr);
	gap: 24px;
	margin: 0 !important;
	padding: 0 !important;
}
body.gp-product-layout .related.products ul.products li.product,
body.gp-product-layout .upsells.products ul.products li.product {
	width: 100% !important;
	margin: 0 !important;
	padding: 16px !important;
	background: var(--gp-light);
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	text-align: center;
	transition: box-shadow .2s ease, transform .2s ease;
	font-family: var(--gp-font);
}
body.gp-product-layout .related.products ul.products li.product:hover,
body.gp-product-layout .upsells.products ul.products li.product:hover {
	box-shadow: 0 14px 34px rgba(0,0,0,.09);
	transform: translateY(-3px);
}
body.gp-product-layout .related.products ul.products li.product img,
body.gp-product-layout .upsells.products ul.products li.product img {
	width: 100% !important;
	height: auto;
	aspect-ratio: 1/1;
	object-fit: cover;
	border-radius: calc(var(--gp-radius) - 4px);
	margin: 0 0 14px !important;
}
body.gp-product-layout .related.products ul.products li.product .woocommerce-loop-product__title,
body.gp-product-layout .upsells.products ul.products li.product .woocommerce-loop-product__title {
	font-size: 16px;
	font-weight: 600;
	color: var(--gp-dark);
	padding: 0;
	margin: 0 0 6px;
}
body.gp-product-layout .related.products ul.products li.product .price,
body.gp-product-layout .upsells.products ul.products li.product .price {
	font-size: 16px;
	font-weight: 600;
	color: var(--gp-dark);
	margin-bottom: 14px;
	display: block;
}
body.gp-product-layout .related.products ul.products li.product .button,
body.gp-product-layout .upsells.products ul.products li.product .button {
	background: var(--gp-accent) !important;
	color: #ffffff !important;
	border-radius: var(--gp-btn-radius) !important;
	padding: 11px 18px !important;
	font-size: 14px !important;
	font-weight: 600 !important;
	width: 100%;
	opacity: 1 !important;
	border: 0 !important;
}
body.gp-product-layout .related.products ul.products li.product .button:hover,
body.gp-product-layout .upsells.products ul.products li.product .button:hover {
	opacity: .85 !important;
}
body.gp-product-layout .related.products ul.products li.product .onsale,
body.gp-product-layout .upsells.products ul.products li.product .onsale {
	background: var(--gp-badge);
	border-radius: var(--gp-btn-radius);
	min-height: auto; min-width: auto;
	padding: 6px 12px;
	font-weight: 600;
	top: 12px; left: 12px; right: auto;
}

@media (max-width: 1024px) {
	body.gp-product-layout .related.products ul.products,
	body.gp-product-layout .upsells.products ul.products { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
	body.gp-product-layout .related.products ul.products,
	body.gp-product-layout .upsells.products ul.products { grid-template-columns: 1fr; }
}

/* ============================================================
   v1.7.4 — kill sticky product gallery, harden related/upsell grid
   ============================================================ */

/* (v1.7.5) sticky handling moved to controlled flex layout below */

/* Neutralize any leftover carousel wrapper sizing so the grid renders
   as a normal static layout rather than a slide track. */
body.gp-product-layout .related.products .owl-stage,
body.gp-product-layout .related.products .owl-stage-outer,
body.gp-product-layout .related.products .slick-track,
body.gp-product-layout .related.products .slick-list,
body.gp-product-layout .related.products .swiper-wrapper,
body.gp-product-layout .upsells.products .owl-stage,
body.gp-product-layout .upsells.products .owl-stage-outer,
body.gp-product-layout .upsells.products .slick-track,
body.gp-product-layout .upsells.products .slick-list,
body.gp-product-layout .upsells.products .swiper-wrapper {
	display: block !important;
	width: 100% !important;
	transform: none !important;
}
body.gp-product-layout .related.products .owl-nav,
body.gp-product-layout .related.products .owl-dots,
body.gp-product-layout .related.products .slick-arrow,
body.gp-product-layout .related.products .slick-dots,
body.gp-product-layout .upsells.products .owl-nav,
body.gp-product-layout .upsells.products .owl-dots,
body.gp-product-layout .upsells.products .slick-arrow,
body.gp-product-layout .upsells.products .slick-dots {
	display: none !important;
}

/* Hide clone/duplicate slides outright as an extra safety net */
body.gp-product-layout .related.products li.product.cloned,
body.gp-product-layout .related.products li.product[aria-hidden="true"],
body.gp-product-layout .upsells.products li.product.cloned,
body.gp-product-layout .upsells.products li.product[aria-hidden="true"] {
	display: none !important;
}

/* Force every real card back to normal static flow inside the grid */
body.gp-product-layout .related.products ul.products li.product,
body.gp-product-layout .upsells.products ul.products li.product {
	position: static !important;
	left: auto !important;
	transform: none !important;
	opacity: 1 !important;
	visibility: visible !important;
}

/* ============================================================
   v1.7.5 — flex product layout with controlled sticky gallery,
   pseudo-element grid-cell fix for product grids
   ============================================================ */

/* WooCommerce puts clearfix ::before/::after on ul.products —
   under CSS grid those pseudo-elements become invisible grid items
   that eat the first cell. Remove them wherever we use grid. */
body.gp-product-layout .related.products ul.products::before,
body.gp-product-layout .related.products ul.products::after,
body.gp-product-layout .upsells.products ul.products::before,
body.gp-product-layout .upsells.products ul.products::after,
body.gp-cart-layout .cross-sells ul.products::before,
body.gp-cart-layout .cross-sells ul.products::after {
	content: none !important;
	display: none !important;
}

/* Product columns: JS wraps gallery + summary in .gp-product-cols.
   Sticky is bounded by that wrapper, so the image pins ONLY while the
   summary scrolls and can never slide over Related Products below
   (Woo renders Related inside the same div.product, which is why a
   sticky bounded by div.product itself was overlapping it). */
body.gp-product-layout div.product {
	display: block !important;
	overflow: visible !important;
}
@media (min-width: 901px) {
	body.gp-product-layout .gp-product-cols {
		display: flex;
		flex-wrap: nowrap;
		align-items: flex-start;
		gap: 4%;
	}
	body.gp-product-layout .gp-product-cols > div.images {
		float: none !important;
		width: 46% !important;
		margin: 0 !important;
		position: -webkit-sticky !important;
		position: sticky !important;
		top: 110px;
		align-self: flex-start;
	}
	body.gp-product-layout .gp-product-cols > div.summary {
		float: none !important;
		width: 50% !important;
		margin: 0 !important;
	}
}

/* Gallery can never exceed its column, whatever the slider script set */
body.gp-product-layout div.images,
body.gp-product-layout .woocommerce-product-gallery {
	max-width: 100% !important;
	box-sizing: border-box;
}
body.gp-product-layout div.images img {
	max-width: 100% !important;
	height: auto !important;
}
body.gp-product-layout .flex-viewport { overflow: hidden !important; }
body.gp-product-layout .flex-control-thumbs { margin: 10px 0 0 !important; overflow: hidden; }
body.gp-product-layout .flex-control-thumbs img { max-width: 100%; }

@media (max-width: 900px) {
	body.gp-product-layout .gp-product-cols { display: block; }
	body.gp-product-layout .gp-product-cols > div.images,
	body.gp-product-layout .gp-product-cols > div.summary {
		width: 100% !important;
		position: static !important;
	}
}

/* Sticky needs no overflow-clipping ancestors */
body.gp-product-layout { overflow: visible !important; }

/* Gallery internals restored to Woo defaults (absolute layers work again);
   just keep the container tidy. */
body.gp-product-layout .woocommerce-product-gallery { margin-bottom: 0 !important; }

@media (max-width: 900px) {
	body.gp-product-layout div.product div.images {
		position: static !important;
		width: 100% !important;
	}
}

/* ============================================================
   v1.8 — Shop/category archive: hardened card + button styling
   (same washed-out button bug as Related Products — theme colors
   were beating our base rules, so these carry !important + higher
   specificity, same treatment we gave Related/Upsells.)
   ============================================================ */

.woocommerce ul.products {
	display: grid !important;
	grid-template-columns: repeat(4, 1fr);
	gap: 24px;
	list-style: none;
	margin: 0 !important;
	padding: 0 !important;
}
.woocommerce ul.products::before,
.woocommerce ul.products::after {
	content: none !important;
	display: none !important;
}
.woocommerce ul.products li.product {
	width: 100% !important;
	margin: 0 !important;
	padding: 16px !important;
	background: var(--gp-light);
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	text-align: center;
	font-family: var(--gp-font);
	position: relative;
	transition: box-shadow .2s ease, transform .2s ease;
}
.woocommerce ul.products li.product:hover {
	box-shadow: 0 14px 34px rgba(0,0,0,.09);
	transform: translateY(-3px);
}
.woocommerce ul.products li.product a img {
	width: 100% !important;
	height: auto;
	aspect-ratio: 1/1;
	object-fit: cover;
	border-radius: calc(var(--gp-radius) - 4px) !important;
	margin: 0 0 14px !important;
}
.woocommerce ul.products li.product .woocommerce-loop-product__title {
	font-size: 16px;
	font-weight: 600;
	color: var(--gp-dark);
	padding: 0 !important;
	margin: 0 0 6px !important;
}
.woocommerce ul.products li.product .price {
	font-size: 16px;
	font-weight: 600;
	color: var(--gp-dark) !important;
	margin: 0 0 14px !important;
	display: block;
}
.woocommerce ul.products li.product .price del { color: var(--gp-muted) !important; opacity: .7; }
.woocommerce ul.products li.product .price ins { text-decoration: none; }

/* The actual bug: theme was setting a washed-out/disabled-looking button
   color that beat our earlier non-!important rule. Force it here. */
.woocommerce ul.products li.product a.button,
.woocommerce ul.products li.product a.add_to_cart_button,
.woocommerce ul.products li.product a.ajax_add_to_cart {
	background: var(--gp-accent) !important;
	color: #ffffff !important;
	border: 0 !important;
	border-radius: var(--gp-btn-radius) !important;
	padding: 11px 18px !important;
	font-size: 14px !important;
	font-weight: 600 !important;
	width: 100%;
	opacity: 1 !important;
	box-shadow: none !important;
	margin: 0 !important;
	text-transform: none !important;
	letter-spacing: normal !important;
}
.woocommerce ul.products li.product a.button:hover,
.woocommerce ul.products li.product a.add_to_cart_button:hover {
	opacity: .85 !important;
}
.woocommerce ul.products li.product a.button.loading::after {
	border-top-color: #ffffff !important;
}

/* Sale/on-sale badge, positioned like the homepage grid badges */
.woocommerce ul.products li.product .onsale,
.woocommerce span.onsale {
	background: var(--gp-badge) !important;
	color: #fff !important;
	border-radius: var(--gp-btn-radius) !important;
	min-height: auto !important;
	min-width: auto !important;
	padding: 6px 12px !important;
	font-weight: 600 !important;
	font-size: 11px !important;
	top: 12px !important;
	left: 12px !important;
	right: auto !important;
	position: absolute !important;
}

/* Shop page heading + result count + sorting bar */
.woocommerce-products-header,
.woocommerce-result-count,
.woocommerce-ordering {
	font-family: var(--gp-font);
}
.woocommerce-products-header__title.page-title {
	font-size: clamp(28px, 4vw, 40px);
	font-weight: 600;
	color: var(--gp-dark);
	margin: 30px 0 6px;
}
.woocommerce-result-count { color: var(--gp-muted); font-size: 14px; }
.woocommerce-ordering select {
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	padding: 12px 16px;
	font-family: var(--gp-font);
	background: var(--gp-light);
	color: var(--gp-dark);
}
nav.woocommerce-pagination ul { border: 0 !important; }
nav.woocommerce-pagination ul li { border: 0 !important; }
nav.woocommerce-pagination ul li a,
nav.woocommerce-pagination ul li span {
	border-radius: 8px !important;
	border: 1px solid var(--gp-border) !important;
	margin: 0 4px;
	color: var(--gp-dark) !important;
}
nav.woocommerce-pagination ul li span.current {
	background: var(--gp-dark) !important;
	color: #fff !important;
	border-color: var(--gp-dark) !important;
}

/* ---------- Responsive columns ---------- */
@media (max-width: 1024px) {
	.woocommerce ul.products { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 768px) {
	.woocommerce ul.products { grid-template-columns: repeat(2, 1fr); gap: 14px; }
	.woocommerce ul.products li.product { padding: 12px !important; }
	.woocommerce ul.products li.product .woocommerce-loop-product__title { font-size: 14px; }
	.woocommerce ul.products li.product .price { font-size: 14px; }
	.woocommerce ul.products li.product a.button { font-size: 13px !important; padding: 10px 14px !important; }
	.woocommerce-ordering, .woocommerce-result-count { display: inline-block; }
}
@media (max-width: 480px) {
	.woocommerce ul.products { grid-template-columns: 1fr; }
}

/* ============================================================
   About / Story widget
   ============================================================ */
.gp-story {
	display: flex;
	align-items: center;
	gap: 60px;
	max-width: var(--gp-maxw);
	margin: 0 auto;
	padding: 60px 24px;
	font-family: var(--gp-font);
}
.gp-story--reverse { flex-direction: row-reverse; }
.gp-story__media { flex: 1 1 42%; }
.gp-story__media img {
	width: 100%;
	height: auto;
	border-radius: var(--gp-radius);
	display: block;
	object-fit: cover;
}
.gp-story__content { flex: 1 1 54%; }
.gp-story__eyebrow {
	display: block;
	color: var(--gp-accent-alt);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 1.6px;
	text-transform: uppercase;
	margin-bottom: 14px;
}
.gp-story__title {
	font-size: clamp(24px, 3.2vw, 34px);
	font-weight: 600;
	color: var(--gp-dark);
	margin: 0 0 16px;
}
.gp-story__text { color: var(--gp-muted); font-size: 15px; line-height: 1.8; }
.gp-story__text p { margin: 0 0 16px; }
.gp-story__text p:last-child { margin-bottom: 0; }
.gp-story__tagline {
	margin: 18px 0 0;
	font-weight: 600;
	color: var(--gp-dark);
	font-size: 15px;
	border-left: 3px solid var(--gp-accent-alt);
	padding-left: 14px;
}

@media (max-width: 900px) {
	.gp-story, .gp-story--reverse {
		flex-direction: column;
		gap: 28px;
		padding: 40px 20px;
		text-align: left;
	}
	.gp-story__media, .gp-story__content { flex: 1 1 100%; width: 100%; }
}

/* ============================================================
   Page hero + stats band (About page)
   ============================================================ */
.gp-pagehero {
	background: var(--gp-surface);
	text-align: center;
	padding: 70px 24px;
	font-family: var(--gp-font);
}
.gp-pagehero__eyebrow { display: block; color: var(--gp-accent-alt); font-size: 13px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; margin-bottom: 14px; }
.gp-pagehero__title { font-size: clamp(30px, 4.5vw, 48px); font-weight: 600; color: var(--gp-dark); margin: 0 auto 16px; max-width: 760px; line-height: 1.15; }
.gp-pagehero__sub { color: var(--gp-muted); font-size: 17px; max-width: 620px; margin: 0 auto; line-height: 1.7; }

.gp-stats {
	display: grid;
	grid-template-columns: repeat(var(--gp-stats-cols, 4), 1fr);
	gap: 20px;
	max-width: var(--gp-maxw);
	margin: 0 auto;
	padding: 50px 24px;
	font-family: var(--gp-font);
}
.gp-stats__item { text-align: center; padding: 24px 16px; border: 1px solid var(--gp-border); border-radius: var(--gp-radius); }
.gp-stats__num { display: block; font-size: clamp(24px, 3vw, 34px); font-weight: 700; color: var(--gp-dark); margin-bottom: 8px; }
.gp-stats__label { font-size: 13px; color: var(--gp-muted); line-height: 1.5; }

@media (max-width: 900px) {
	.gp-stats { grid-template-columns: repeat(2, 1fr); }
	.gp-pagehero { padding: 50px 20px; }
}
@media (max-width: 480px) {
	.gp-stats { grid-template-columns: 1fr; }
}

/* ============================================================
   v1.9.1 — My Account page
   ============================================================ */

body.gp-account-layout .woocommerce {
	max-width: var(--gp-maxw) !important;
	width: 100% !important;
	margin: 0 auto !important;
	padding: 40px 24px 60px !important;
	font-family: var(--gp-font);
	display: grid !important;
	grid-template-columns: 260px 1fr !important;
	gap: 40px !important;
	align-items: start !important;
	box-sizing: border-box;
}
body.gp-account-layout .woocommerce-MyAccount-navigation {
	grid-column: 1 !important;
	width: 100% !important;
}
body.gp-account-layout .woocommerce-MyAccount-content {
	grid-column: 2 !important;
	width: 100% !important;
}
/* Some themes wrap page content in a narrower container — make sure that
   ancestor doesn't clip our grid down to its own max-width. */
body.gp-account-layout .content-area,
body.gp-account-layout #primary,
body.gp-account-layout .site-content,
body.gp-account-layout .entry-content {
	max-width: none !important;
	width: 100% !important;
}
body.gp-account-layout h1.entry-title,
body.gp-account-layout .page-title {
	max-width: var(--gp-maxw);
	margin: 30px auto 0;
	padding: 0 24px;
	font-size: clamp(28px, 4vw, 40px);
	font-weight: 600;
	color: var(--gp-dark);
}

/* Sidebar nav card */
body.gp-account-layout .woocommerce-MyAccount-navigation {
	background: var(--gp-light);
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	padding: 10px;
}
body.gp-account-layout .woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; padding: 0; }
body.gp-account-layout .woocommerce-MyAccount-navigation li { margin: 0; }
body.gp-account-layout .woocommerce-MyAccount-navigation li a {
	display: block;
	padding: 12px 16px;
	border-radius: calc(var(--gp-radius) - 4px);
	color: var(--gp-dark) !important;
	text-decoration: none !important;
	font-size: 15px;
	font-weight: 500;
	transition: background .15s ease;
}
body.gp-account-layout .woocommerce-MyAccount-navigation li a:hover { background: var(--gp-surface); }
body.gp-account-layout .woocommerce-MyAccount-navigation li.is-active a {
	background: var(--gp-dark);
	color: #ffffff !important;
	font-weight: 600;
}

/* Content column */
body.gp-account-layout .woocommerce-MyAccount-content {
	background: var(--gp-light);
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	padding: 30px;
}
body.gp-account-layout .woocommerce-MyAccount-content p { color: var(--gp-muted); line-height: 1.8; font-size: 15px; }
body.gp-account-layout .woocommerce-MyAccount-content a { color: var(--gp-dark); font-weight: 600; text-decoration: underline; }
body.gp-account-layout .woocommerce-MyAccount-content a:hover { color: var(--gp-accent-alt); }
.gp-account__hint { font-size: 15px; color: var(--gp-muted); margin-bottom: 20px !important; }

/* Dashboard greeting */
body.gp-account-layout .woocommerce-MyAccount-content > p:first-of-type {
	background: var(--gp-surface);
	border-radius: calc(var(--gp-radius) - 4px);
	padding: 14px 18px;
	font-size: 14px;
}

/* Orders table */
body.gp-account-layout table.woocommerce-orders-table {
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	border-collapse: separate;
	overflow: hidden;
	width: 100%;
}
body.gp-account-layout table.woocommerce-orders-table th {
	background: var(--gp-surface);
	font-size: 13px;
	text-transform: uppercase;
	letter-spacing: .4px;
	color: var(--gp-muted);
	padding: 14px 16px;
}
body.gp-account-layout table.woocommerce-orders-table td { padding: 14px 16px; border-top: 1px solid var(--gp-border); font-size: 14px; }
body.gp-account-layout .woocommerce-orders-table__cell-order-status {
	display: inline-block;
	background: var(--gp-surface);
	border-radius: var(--gp-btn-radius);
	padding: 5px 12px;
	font-size: 12px;
	font-weight: 600;
	color: var(--gp-dark);
}
body.gp-account-layout .woocommerce-button {
	background: var(--gp-dark) !important;
	color: #fff !important;
	border-radius: var(--gp-btn-radius) !important;
	padding: 9px 16px !important;
	font-size: 13px !important;
	text-decoration: none !important;
}

/* Address cards — Woo's default markup floats .u-columns/.col-1/.col-2,
   which was beating an unguarded grid rule (same class of bug as the
   sidebar layout). Hardened with !important + explicit float reset. */
body.gp-account-layout .woocommerce-Addresses,
body.gp-account-layout .woocommerce-Addresses.addresses,
body.gp-account-layout .u-columns {
	display: grid !important;
	grid-template-columns: 1fr 1fr !important;
	gap: 20px !important;
	width: 100% !important;
}
body.gp-account-layout .woocommerce-Addresses::before,
body.gp-account-layout .woocommerce-Addresses::after,
body.gp-account-layout .u-columns::before,
body.gp-account-layout .u-columns::after {
	content: none !important;
	display: none !important;
}
body.gp-account-layout .woocommerce-Address,
body.gp-account-layout .u-column1,
body.gp-account-layout .u-column2,
body.gp-account-layout .col-1,
body.gp-account-layout .col-2 {
	float: none !important;
	width: 100% !important;
	margin: 0 !important;
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	padding: 22px;
	box-sizing: border-box;
}
body.gp-account-layout .woocommerce-Address-title {
	display: flex !important;
	align-items: center !important;
	justify-content: space-between !important;
	gap: 12px;
	margin-bottom: 14px;
}
body.gp-account-layout .woocommerce-Address-title h2,
body.gp-account-layout .woocommerce-Address-title h3 {
	font-size: 17px !important;
	font-weight: 600 !important;
	margin: 0 !important;
	color: var(--gp-dark) !important;
	line-height: 1.3;
}
body.gp-account-layout .woocommerce-Address-title .edit,
body.gp-account-layout .woocommerce-Address-title a {
	background: var(--gp-dark) !important;
	color: #fff !important;
	border-radius: var(--gp-btn-radius) !important;
	padding: 8px 16px !important;
	font-size: 13px !important;
	white-space: nowrap;
	text-decoration: none !important;
	flex-shrink: 0;
}
body.gp-account-layout address { font-style: normal; color: var(--gp-muted); font-size: 14px; line-height: 1.7; margin: 0; }

@media (max-width: 700px) {
	body.gp-account-layout .woocommerce-Addresses,
	body.gp-account-layout .u-columns {
		grid-template-columns: 1fr !important;
	}
	body.gp-account-layout .woocommerce-Address-title { flex-direction: column; align-items: flex-start !important; }
}

/* Form fields (edit account / address / login) */
body.gp-account-layout .woocommerce-form-row label { font-size: 14px; font-weight: 600; color: var(--gp-dark); margin-bottom: 6px; display: block; }
body.gp-account-layout input.input-text,
body.gp-account-layout select {
	border: 1px solid var(--gp-border) !important;
	border-radius: calc(var(--gp-radius) - 2px) !important;
	padding: 12px 14px !important;
	font-family: var(--gp-font) !important;
	width: 100%;
}
body.gp-account-layout button[type="submit"] {
	background: var(--gp-dark) !important;
	color: #fff !important;
	border-radius: var(--gp-btn-radius) !important;
	padding: 13px 26px !important;
	font-weight: 600 !important;
	border: 0 !important;
}
body.gp-account-layout fieldset {
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	padding: 20px;
	margin-top: 20px;
}
body.gp-account-layout fieldset legend { font-weight: 600; color: var(--gp-dark); padding: 0 8px; }

/* Login/register form (logged-out My Account view) */
body.gp-account-layout .woocommerce-form-login,
body.gp-account-layout .woocommerce-form-register {
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	padding: 26px;
	max-width: 420px;
}
body.gp-account-layout .woocommerce-LostPassword a { color: var(--gp-dark); }

@media (max-width: 900px) {
	body.gp-account-layout .woocommerce { grid-template-columns: 1fr; padding: 24px 16px 40px; }
	body.gp-account-layout .woocommerce-MyAccount-navigation ul { display: flex; overflow-x: auto; gap: 6px; }
	body.gp-account-layout .woocommerce-MyAccount-navigation li a { white-space: nowrap; }
	body.gp-account-layout table.woocommerce-orders-table,
	body.gp-account-layout table.woocommerce-orders-table thead { display: none; }
	body.gp-account-layout table.woocommerce-orders-table tbody,
	body.gp-account-layout table.woocommerce-orders-table tr,
	body.gp-account-layout table.woocommerce-orders-table td { display: block; width: 100%; }
	body.gp-account-layout table.woocommerce-orders-table tr {
		border: 1px solid var(--gp-border);
		border-radius: var(--gp-radius);
		margin-bottom: 14px;
		padding: 10px 14px;
	}
	body.gp-account-layout table.woocommerce-orders-table td {
		border: 0 !important;
		display: flex;
		justify-content: space-between;
		padding: 8px 0 !important;
	}
	body.gp-account-layout table.woocommerce-orders-table td::before {
		content: attr(data-title);
		font-weight: 600;
		color: var(--gp-dark);
	}
}

/* ============================================================
   Contact Info widget + WPForms shortcode wrapper
   ============================================================ */
.gp-contact { font-family: var(--gp-font); }
.gp-contact__title { font-size: clamp(24px, 3vw, 32px); font-weight: 600; color: var(--gp-dark); margin: 0 0 12px; }
.gp-contact__sub { color: var(--gp-muted); font-size: 15px; line-height: 1.7; margin: 0 0 30px; max-width: 460px; }
.gp-contact__rows { display: flex; flex-direction: column; gap: 14px; }
.gp-contact__row {
	display: flex;
	align-items: center;
	gap: 16px;
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	padding: 16px 18px;
	text-decoration: none !important;
	color: inherit;
	transition: border-color .2s ease, background .2s ease;
}
a.gp-contact__row:hover { border-color: var(--gp-dark); background: var(--gp-surface); }
.gp-contact__icon {
	width: 42px; height: 42px;
	background: var(--gp-surface);
	border-radius: 50%;
	display: flex; align-items: center; justify-content: center;
	font-size: 18px;
	flex-shrink: 0;
}
.gp-contact__text { display: flex; flex-direction: column; }
.gp-contact__label { font-size: 12px; color: var(--gp-muted); text-transform: uppercase; letter-spacing: .5px; margin-bottom: 2px; }
.gp-contact__value { font-size: 15px; font-weight: 600; color: var(--gp-dark) !important; }

/* Wrapper card for the WPForms shortcode so it visually matches the site */
.gp-form-card {
	background: var(--gp-light);
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	padding: 30px;
	font-family: var(--gp-font);
}
.gp-form-card .wpforms-container { margin: 0 !important; }
.gp-form-card .wpforms-field label {
	font-weight: 600 !important;
	color: var(--gp-dark) !important;
	font-family: var(--gp-font) !important;
}
.gp-form-card .wpforms-field input:not([type=checkbox]):not([type=radio]),
.gp-form-card .wpforms-field textarea,
.gp-form-card .wpforms-field select {
	border: 1px solid var(--gp-border) !important;
	border-radius: calc(var(--gp-radius) - 2px) !important;
	padding: 12px 14px !important;
	font-family: var(--gp-font) !important;
}
.gp-form-card .wpforms-submit-container button,
.gp-form-card button[type="submit"] {
	background: var(--gp-dark) !important;
	color: #fff !important;
	border-radius: var(--gp-btn-radius) !important;
	padding: 13px 28px !important;
	font-weight: 600 !important;
	border: 0 !important;
	font-family: var(--gp-font) !important;
}

@media (max-width: 900px) {
	.gp-form-card { padding: 20px; }
}

/* Form card wrapper — applied via a custom Element ID on the shortcode
   widget (the "CSS classes" control key varies across Elementor versions,
   but Element ID has been stable since 2.0, so this targets reliably). */
#gp-contact-form-wrap.elementor-widget-shortcode,
#gp-contact-form-wrap {
	background: var(--gp-light) !important;
	border: 1px solid var(--gp-border) !important;
	border-radius: var(--gp-radius) !important;
	padding: 32px !important;
	box-sizing: border-box;
}

/* ---------- WPForms: full polish pass ---------- */
#gp-contact-form-wrap .wpforms-container { margin: 0 !important; }
#gp-contact-form-wrap .wpforms-form { font-family: var(--gp-font) !important; }
#gp-contact-form-wrap .wpforms-field { padding: 0 0 20px !important; }
#gp-contact-form-wrap .wpforms-field label.wpforms-field-label {
	font-family: var(--gp-font) !important;
	font-weight: 600 !important;
	font-size: 14px !important;
	color: var(--gp-dark) !important;
	margin-bottom: 8px !important;
}
#gp-contact-form-wrap .wpforms-field-required {
	color: var(--gp-badge) !important;
}
#gp-contact-form-wrap .wpforms-field input[type="text"],
#gp-contact-form-wrap .wpforms-field input[type="email"],
#gp-contact-form-wrap .wpforms-field input[type="tel"],
#gp-contact-form-wrap .wpforms-field input[type="number"],
#gp-contact-form-wrap .wpforms-field input[type="url"],
#gp-contact-form-wrap .wpforms-field textarea,
#gp-contact-form-wrap .wpforms-field select {
	border: 1px solid var(--gp-border) !important;
	border-radius: calc(var(--gp-radius) - 2px) !important;
	padding: 13px 16px !important;
	font-family: var(--gp-font) !important;
	font-size: 15px !important;
	width: 100% !important;
	box-sizing: border-box !important;
	background: var(--gp-surface) !important;
	transition: border-color .2s ease, background .2s ease;
}
#gp-contact-form-wrap .wpforms-field input:focus,
#gp-contact-form-wrap .wpforms-field textarea:focus,
#gp-contact-form-wrap .wpforms-field select:focus {
	border-color: var(--gp-dark) !important;
	background: var(--gp-light) !important;
	outline: none !important;
	box-shadow: none !important;
}
#gp-contact-form-wrap .wpforms-field textarea { min-height: 140px !important; resize: vertical; }

/* Submit button — WPForms' actual class is .wpforms-submit, not .button */
#gp-contact-form-wrap button.wpforms-submit,
#gp-contact-form-wrap input.wpforms-submit,
#gp-contact-form-wrap .wpforms-submit-container button {
	background: var(--gp-dark) !important;
	color: #ffffff !important;
	border: 0 !important;
	border-radius: var(--gp-btn-radius) !important;
	padding: 15px 34px !important;
	font-family: var(--gp-font) !important;
	font-weight: 600 !important;
	font-size: 15px !important;
	cursor: pointer;
	box-shadow: none !important;
	text-transform: none !important;
	letter-spacing: normal !important;
	transition: opacity .2s ease;
}
#gp-contact-form-wrap button.wpforms-submit:hover,
#gp-contact-form-wrap input.wpforms-submit:hover {
	opacity: .85 !important;
}
#gp-contact-form-wrap .wpforms-submit-container { margin-top: 6px !important; }

/* Error/success messaging */
#gp-contact-form-wrap .wpforms-error {
	color: var(--gp-badge) !important;
	font-size: 13px !important;
	margin-top: 6px !important;
}
#gp-contact-form-wrap .wpforms-field-input-error,
#gp-contact-form-wrap input.wpforms-error,
#gp-contact-form-wrap textarea.wpforms-error {
	border-color: var(--gp-badge) !important;
}
#gp-contact-form-wrap .wpforms-confirmation-container {
	background: var(--gp-surface) !important;
	border: 1px solid var(--gp-border) !important;
	border-radius: var(--gp-radius) !important;
	padding: 20px !important;
	color: var(--gp-dark) !important;
	font-family: var(--gp-font) !important;
}

@media (max-width: 700px) {
	#gp-contact-form-wrap { padding: 22px !important; }
}

/* ============================================================
   v2.0.3 — simplified 3-column footer
   ============================================================ */
.gp-footerlight__inner--simple {
	grid-template-columns: 1.8fr 1fr 1fr !important;
}
.gp-footerlight__social {
	display: flex;
	gap: 12px;
	margin-top: 18px;
}
.gp-footerlight__social-icon {
	width: 38px; height: 38px;
	display: flex; align-items: center; justify-content: center;
	border: 1px solid var(--gp-border);
	border-radius: 50%;
	color: var(--gp-muted);
	transition: color .2s ease, border-color .2s ease;
}
.gp-footerlight__social-icon:hover { color: var(--gp-dark); border-color: var(--gp-dark); }

@media (max-width: 900px) {
	.gp-footerlight__inner--simple { grid-template-columns: 1fr !important; }
}

/* Footer brand tagline */
.gp-footerlight__tagline {
	margin: 14px 0 0;
	color: var(--gp-muted);
	font-size: 14px;
	line-height: 1.7;
	max-width: 320px;
}

/* Real stock count display (product page) */
.gp-pp-stock {
	display: inline-block;
	font-family: var(--gp-font);
	font-size: 14px;
	font-weight: 600;
	color: var(--gp-dark);
	background: var(--gp-surface);
	border-radius: var(--gp-btn-radius);
	padding: 8px 16px;
	margin: 6px 0 14px;
}
.gp-pp-stock--low { color: var(--gp-badge); background: color-mix(in srgb, var(--gp-badge) 10%, #fff); }
.gp-pp-stock--out { color: var(--gp-muted); }

/* ============================================================
   Header search panel
   ============================================================ */
.gp-search-panel {
	border-top: 1px solid var(--gp-border);
	background: var(--gp-light);
	max-height: 0;
	overflow: hidden;
	transition: max-height .22s ease;
}
.gp-search-panel[hidden] { display: none; }
.gp-search-panel--open { max-height: 120px; }
.gp-search-form {
	display: flex;
	align-items: center;
	gap: 10px;
	max-width: var(--gp-maxw);
	margin: 0 auto;
	padding: 16px 24px;
	font-family: var(--gp-font);
}
.gp-search-input {
	flex: 1;
	border: 1px solid var(--gp-border) !important;
	border-radius: var(--gp-btn-radius) !important;
	padding: 13px 20px !important;
	font-size: 15px !important;
	font-family: var(--gp-font) !important;
	background: var(--gp-surface) !important;
	outline: none;
}
.gp-search-input:focus { border-color: var(--gp-dark) !important; background: var(--gp-light) !important; }
.gp-search-submit {
	background: var(--gp-dark) !important;
	color: #fff !important;
	border: 0 !important;
	border-radius: 50% !important;
	width: 46px; height: 46px;
	display: flex; align-items: center; justify-content: center;
	cursor: pointer;
	flex-shrink: 0;
}
.gp-search-submit:hover { opacity: .85; }
.gp-search-close {
	background: transparent !important;
	border: 0 !important;
	font-size: 28px !important;
	line-height: 1;
	color: var(--gp-muted) !important;
	cursor: pointer;
	padding: 0 6px !important;
	flex-shrink: 0;
}
.gp-search-close:hover { color: var(--gp-dark) !important; }

@media (max-width: 600px) {
	.gp-search-form { padding: 12px 16px; }
	.gp-search-input { padding: 11px 16px !important; font-size: 16px !important; }
	.gp-search-submit { width: 42px; height: 42px; }
}

/* ============================================================
   Header search — live AJAX results dropdown
   ============================================================ */
.gp-search-panel { position: relative; overflow: visible; }
.gp-search-results {
	position: absolute;
	left: 50%;
	transform: translateX(-50%);
	top: 100%;
	width: 100%;
	max-width: calc(var(--gp-maxw) - 48px);
	background: var(--gp-light);
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	box-shadow: 0 18px 44px rgba(0,0,0,.12);
	margin-top: -4px;
	overflow: hidden;
	z-index: 50;
	font-family: var(--gp-font);
}
.gp-search-results[hidden] { display: none; }
.gp-search-result {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 12px 18px;
	text-decoration: none !important;
	color: var(--gp-dark) !important;
	border-bottom: 1px solid var(--gp-border);
	transition: background .15s ease;
	width: 100%;
	background: transparent;
	border-left: 0; border-right: 0; border-top: 0;
	cursor: pointer;
	text-align: left;
	font-family: var(--gp-font);
}
.gp-search-result:hover { background: var(--gp-surface); }
.gp-search-result__thumb {
	width: 46px; height: 46px;
	object-fit: cover;
	border-radius: 8px;
	flex-shrink: 0;
	background: var(--gp-surface);
}
.gp-search-result__info { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.gp-search-result__title { font-size: 14px; font-weight: 600; color: var(--gp-dark); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gp-search-result__price { font-size: 13px; color: var(--gp-muted); }
.gp-search-result__price del { opacity: .6; }
.gp-search-result--all {
	justify-content: center;
	font-size: 13px;
	font-weight: 600;
	color: var(--gp-dark) !important;
	border-bottom: 0;
}
.gp-search-loading, .gp-search-empty {
	padding: 18px;
	text-align: center;
	color: var(--gp-muted);
	font-size: 14px;
	font-family: var(--gp-font);
}

@media (max-width: 600px) {
	.gp-search-results { max-width: calc(100% - 32px); }
	.gp-search-result { padding: 10px 14px; }
}

/* ============================================================
   v2.6.1 — search "See all" button hardening + full mobile
   ============================================================ */

/* "See all results" — kill theme border/pink, make it a proper full-width row */
.gp-search-results .gp-search-result--all {
	display: flex !important;
	align-items: center;
	justify-content: center;
	width: 100% !important;
	background: var(--gp-surface) !important;
	color: var(--gp-dark) !important;
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	padding: 14px 18px !important;
	font-family: var(--gp-font) !important;
	font-size: 13px !important;
	font-weight: 600 !important;
	text-transform: none !important;
	letter-spacing: normal !important;
	margin: 0 !important;
	cursor: pointer;
}
.gp-search-results .gp-search-result--all:hover {
	background: var(--gp-border) !important;
	color: var(--gp-dark) !important;
	opacity: 1 !important;
}

/* Hard reset the product result links/buttons against theme button styles too */
.gp-search-results .gp-search-result {
	border-left: 0 !important;
	border-right: 0 !important;
	border-top: 0 !important;
	box-shadow: none !important;
	text-transform: none !important;
	letter-spacing: normal !important;
}

/* ---------- Full mobile responsiveness for the search bar ---------- */
@media (max-width: 768px) {
	.gp-search-form {
		flex-wrap: nowrap;
		gap: 8px;
		padding: 12px 16px;
	}
	.gp-search-input {
		min-width: 0;      /* allow the flex item to shrink instead of overflowing */
		flex: 1 1 auto;
		padding: 12px 16px !important;
		font-size: 16px !important; /* prevents iOS zoom */
	}
	.gp-search-submit { width: 44px; height: 44px; }
	/* The native browser clear (×) inside the input + our close × are enough;
	   keep the close button compact */
	.gp-search-close { font-size: 26px !important; padding: 0 4px !important; }

	/* Results dropdown flush to the viewport width, aligned under the field */
	.gp-search-results {
		left: 50% !important;
		transform: translateX(-50%) !important;
		width: calc(100% - 24px) !important;
		max-width: calc(100% - 24px) !important;
	}
	.gp-search-result { padding: 10px 14px; gap: 12px; }
	.gp-search-result__thumb { width: 42px; height: 42px; }
	.gp-search-result__title { font-size: 13px; white-space: normal; }
}

@media (max-width: 420px) {
	.gp-search-form { padding: 10px 12px; gap: 6px; }
	.gp-search-input { padding: 11px 14px !important; }
	.gp-search-submit { width: 42px; height: 42px; flex-shrink: 0; }
	.gp-search-results { width: calc(100% - 16px) !important; max-width: calc(100% - 16px) !important; }
	.gp-search-result__title { font-size: 12.5px; }
	.gp-search-result__price { font-size: 12px; }
}

/* ============================================================
   v2.8 credibility refresh — less template-like, documentation-led
   ============================================================ */
.gp-hero__eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 16px;
	padding: 7px 11px;
	border: 1px solid rgba(255,255,255,.22);
	border-radius: 999px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 1.5px;
	line-height: 1;
	text-transform: uppercase;
	color: rgba(255,255,255,.82);
	background: rgba(255,255,255,.05);
}
.gp-feature__col {
	position: relative;
	padding-top: 30px;
	background: linear-gradient(180deg, rgba(255,255,255,.035), rgba(255,255,255,.015));
}
.gp-feature__index {
	display: inline-block;
	margin-bottom: 18px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 1.6px;
	color: var(--gp-accent-alt);
}
.gp-how__step {
	border-top: 2px solid var(--gp-dark);
	padding-top: 18px;
}
.gp-how__num {
	display: block;
	margin-bottom: 14px;
	font-size: 12px;
	letter-spacing: 1.8px;
}
.gp-usp__item {
	gap: 0;
}
.gp-trust--plain .gp-trust__emoji,
.gp-trust--plain .gp-trust__icon {
	display: none;
}
.gp-trust--plain .gp-trust__item {
	position: relative;
	padding: 18px 10px 10px;
}
.gp-trust--plain .gp-trust__item::before {
	content: '';
	position: absolute;
	top: 0;
	left: 10px;
	width: 36px;
	height: 2px;
	background: var(--gp-accent-alt);
}
@media (max-width: 900px) {
	.gp-hero__eyebrow { margin-left: auto; margin-right: auto; }
	.gp-how__step { padding-bottom: 8px; }
}

/* ============================================================
   Lab Results / Batch Documentation page
   ============================================================ */
.gp-labresults { font-family: var(--gp-font); max-width: var(--gp-maxw); margin: 0 auto; padding: 10px 0 40px; }
.gp-labresults__intro { color: var(--gp-muted); font-size: 15px; line-height: 1.7; margin: 0 0 26px; max-width: 680px; }
.gp-labresults__empty { color: var(--gp-muted); font-size: 15px; padding: 24px; border: 1px solid var(--gp-border); border-radius: var(--gp-radius); }
.gp-labresult {
	display: flex;
	gap: 18px;
	align-items: flex-start;
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	padding: 18px;
	margin-bottom: 14px;
	background: var(--gp-light);
}
.gp-labresult__thumb img { width: 68px; height: 68px; object-fit: cover; border-radius: 8px; display: block; }
.gp-labresult__body { flex: 1; min-width: 0; }
.gp-labresult__title {
	display: block;
	font-size: 16px; font-weight: 600;
	color: var(--gp-dark) !important;
	text-decoration: none !important;
	margin-bottom: 10px;
}
.gp-labresult__title:hover { color: var(--gp-accent-alt) !important; }
.gp-labresult__docs { display: flex; flex-wrap: wrap; gap: 10px; }
.gp-labresult__doc {
	display: flex; flex-direction: column; gap: 2px;
	border: 1px solid var(--gp-border);
	border-radius: 8px;
	padding: 9px 14px;
	text-decoration: none !important;
	background: var(--gp-surface);
	transition: border-color .2s ease;
}
.gp-labresult__doc:hover { border-color: var(--gp-dark); }
.gp-labresult__doc-label { font-size: 13px; font-weight: 600; color: var(--gp-dark); }
.gp-labresult__doc-sub { font-size: 11px; color: var(--gp-muted); }

@media (max-width: 600px) {
	.gp-labresult { flex-direction: column; gap: 12px; padding: 14px; }
	.gp-labresult__docs { flex-direction: column; }
	.gp-labresult__doc { width: 100%; }
}

/* ============================================================
   v2.12 — Conversion-focused catalogue / product / lab results
   ============================================================ */

/* Header CTA */
.gp-header__catalogue {
	display:inline-flex; align-items:center; justify-content:center;
	padding:10px 16px; border-radius:8px; background:var(--gp-dark); color:#fff !important;
	font-size:13px; font-weight:700; text-decoration:none !important; white-space:nowrap;
}
.gp-header__catalogue:hover { opacity:.88; }

/* Homepage featured area */
.gp-products__fullcta { display:flex; justify-content:center; margin:24px 0 10px; }
.gp-products__research-notice { text-align:center; color:var(--gp-muted); font-size:12px; margin:10px auto 0; }

/* Product page: remove the older duplicated GP blocks while preserving their data. */
body.gp-product-conversion-v2 .gp-pp-promo,
body.gp-product-conversion-v2 .gp-pp-specs,
body.gp-product-conversion-v2 .gp-pp-coas,
body.gp-product-conversion-v2 .gp-pp-notice,
body.gp-product-conversion-v2 .gp-pp-chips,
body.gp-product-conversion-v2 .gp-pp-delivery,
body.gp-product-conversion-v2 .gp-pp-pay { display:none !important; }

body.gp-product-conversion-v2 .woocommerce-breadcrumb { display:none !important; }
body.gp-product-conversion-v2 .gp-pp-breadcrumb {
	display:flex !important; align-items:center; flex-wrap:wrap; gap:8px;
	max-width:var(--gp-maxw,1200px); margin:0 auto 22px; padding:0 18px;
	font-family:var(--gp-font); color:var(--gp-muted); font-size:12px;
}
body.gp-product-conversion-v2 .gp-pp-breadcrumb a { color:var(--gp-muted) !important; text-decoration:none !important; }
body.gp-product-conversion-v2 .gp-pp-breadcrumb a:hover { color:var(--gp-dark) !important; }

.gp-pp-research-badge {
	display:inline-flex; align-items:center; gap:8px; margin:4px 0 12px;
	padding:8px 12px; border:1px solid #bed8ff; border-radius:6px;
	background:#eef6ff; color:#174c8f; font-size:12px; font-weight:700;
}

.gp-pp-actionrow { display:grid; grid-template-columns:minmax(0,1.25fr) minmax(180px,.75fr); gap:10px; align-items:stretch; margin:14px 0; }
.gp-pp-actionrow form.cart { margin:0 !important; width:100%; }
body.gp-product-conversion-v2 .gp-pp-actionrow form.cart .single_add_to_cart_button {
	background:var(--gp-dark) !important; color:#fff !important; border-radius:6px !important;
	min-height:50px; padding:14px 20px !important;
}
.gp-pp-primary-doc {
	display:flex; align-items:center; justify-content:center; gap:9px; min-height:50px;
	padding:12px 16px; border:1px solid var(--gp-dark); border-radius:6px;
	background:#fff; color:var(--gp-dark) !important; text-decoration:none !important;
	font-size:14px; font-weight:700; text-align:center;
}
.gp-pp-primary-doc:hover { background:var(--gp-surface); }

.gp-pp-spec-cards { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin:16px 0 14px; }
.gp-pp-spec-card {
	min-height:104px; display:flex; flex-direction:column; align-items:center; justify-content:center;
	gap:5px; padding:14px 10px; border:1px solid var(--gp-border); border-radius:8px;
	background:var(--gp-surface); text-align:center;
}
.gp-pp-spec-card__ico { font-size:20px; line-height:1; }
.gp-pp-spec-card strong { font-size:12px; color:var(--gp-dark); }
.gp-pp-spec-card span:last-child { font-size:11px; line-height:1.35; color:var(--gp-muted); }

.gp-pp-research-notice {
	display:flex; gap:8px; align-items:center; margin:14px 0 18px; padding:11px 13px;
	border:1px solid #cfe0f7; border-radius:6px; background:#f1f7ff; color:#24496f;
	font-size:12px; line-height:1.45;
}

.gp-pp-trustgrid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); border:1px solid var(--gp-border); border-radius:8px; overflow:hidden; margin:18px 0 6px; }
.gp-pp-trustgrid > div { padding:15px 14px; display:grid; grid-template-columns:26px 1fr; column-gap:8px; border-right:1px solid var(--gp-border); }
.gp-pp-trustgrid > div:last-child { border-right:0; }
.gp-pp-trustgrid > div > span { grid-row:1/3; font-size:19px; }
.gp-pp-trustgrid strong { font-size:12px; color:var(--gp-dark); }
.gp-pp-trustgrid small { font-size:10px; color:var(--gp-muted); line-height:1.35; }

/* Full-width Woo tabs instead of the old accordion. */
body.gp-product-conversion-v2 div.product > .woocommerce-tabs { width:100% !important; max-width:100% !important; clear:both; margin:34px 0 28px !important; }
body.gp-product-conversion-v2 .woocommerce-tabs ul.tabs { display:flex !important; gap:28px; flex-wrap:wrap; border-bottom:1px solid var(--gp-border); padding:0 !important; margin:0 0 22px !important; }
body.gp-product-conversion-v2 .woocommerce-tabs ul.tabs::before { display:none !important; }
body.gp-product-conversion-v2 .woocommerce-tabs ul.tabs li {
	border:0 !important; background:transparent !important; margin:0 !important; padding:0 !important;
}
body.gp-product-conversion-v2 .woocommerce-tabs ul.tabs li::before,
body.gp-product-conversion-v2 .woocommerce-tabs ul.tabs li::after { display:none !important; }
body.gp-product-conversion-v2 .woocommerce-tabs ul.tabs li a {
	display:block; padding:11px 0 !important; color:var(--gp-muted) !important; font-size:13px; font-weight:600;
	border-bottom:2px solid transparent; text-decoration:none !important;
}
body.gp-product-conversion-v2 .woocommerce-tabs ul.tabs li.active a { color:var(--gp-dark) !important; border-bottom-color:var(--gp-dark); }
body.gp-product-conversion-v2 .woocommerce-tabs .panel { padding:0 0 18px !important; }
body.gp-product-conversion-v2 .woocommerce-tabs .panel > h2:first-child { display:none; }

.gp-pp-tabdocs { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:10px; }
.gp-pp-tabdocs a { display:flex; flex-direction:column; gap:4px; border:1px solid var(--gp-border); border-radius:8px; padding:14px; text-decoration:none !important; background:var(--gp-surface); }
.gp-pp-tabdocs strong { color:var(--gp-dark); font-size:13px; }
.gp-pp-tabdocs span { color:var(--gp-muted); font-size:11px; }
.gp-pp-faq details { border-bottom:1px solid var(--gp-border); padding:12px 0; }
.gp-pp-faq summary { cursor:pointer; font-weight:600; color:var(--gp-dark); }
.gp-pp-faq p { margin:8px 0 0; color:var(--gp-muted); }

/* Shop cards: conversion wording */
.woocommerce ul.products li.product .gp-view-details { width:100%; text-align:center; }

/* Documentation / Lab Results v2.12 */
.gp-labresults--v212 { max-width:var(--gp-maxw,1200px); margin:0 auto; padding:24px 18px 50px; }
.gp-labresults__crumb { display:flex; gap:8px; flex-wrap:wrap; color:var(--gp-muted); font-size:12px; margin-bottom:14px; }
.gp-labresults__crumb a { color:var(--gp-muted) !important; text-decoration:none !important; }
.gp-labresults__head h1 { font-size:clamp(30px,4vw,46px); margin:0 0 6px; color:var(--gp-dark); }
.gp-labresults__head p { color:var(--gp-muted); margin:0 0 20px; }
.gp-labresults__trust { display:grid; grid-template-columns:repeat(3,1fr); gap:0; background:#f3f8ff; border:1px solid #dbe8f8; border-radius:8px; margin-bottom:18px; }
.gp-labresults__trust > div { padding:14px 16px; display:grid; grid-template-columns:30px 1fr; column-gap:8px; border-right:1px solid #dbe8f8; }
.gp-labresults__trust > div:last-child { border-right:0; }
.gp-labresults__trust > div > span { grid-row:1/3; font-size:20px; }
.gp-labresults__trust strong { font-size:12px; color:var(--gp-dark); }
.gp-labresults__trust small { font-size:10px; color:var(--gp-muted); }
.gp-labresults__search { display:flex; align-items:center; gap:8px; border:1px solid var(--gp-border); border-radius:8px; padding:0 12px; margin:0 0 14px; background:#fff; max-width:520px; }
.gp-labresults__search input { width:100%; border:0 !important; outline:0; box-shadow:none !important; padding:12px 0; font:inherit; }
.gp-labresults--v212 .gp-labresult { align-items:center; padding:13px 14px; margin-bottom:9px; }
.gp-labresult__meta { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:8px; }
.gp-labresult__available { display:inline-flex; padding:4px 8px; border-radius:999px; background:#e7f7eb; color:#246b35; font-size:10px; font-weight:700; }
.gp-labresults--v212 .gp-labresult__doc { background:#f7fbff; border-color:#d9e7f7; }
.gp-labresults__note { padding:11px 13px; border-radius:6px; background:#f1f7ff; color:#365875; font-size:12px; }
.gp-labresults__back { display:flex; justify-content:center; margin-top:22px; }

@media (max-width:900px) {
	.gp-header__catalogue { display:none; }
	.gp-pp-actionrow { grid-template-columns:1fr; }
	.gp-pp-spec-cards { grid-template-columns:repeat(2,minmax(0,1fr)); }
	.gp-pp-trustgrid { grid-template-columns:1fr; }
	.gp-pp-trustgrid > div { border-right:0; border-bottom:1px solid var(--gp-border); }
	.gp-pp-trustgrid > div:last-child { border-bottom:0; }
	.gp-labresults__trust { grid-template-columns:1fr; }
	.gp-labresults__trust > div { border-right:0; border-bottom:1px solid #dbe8f8; }
	.gp-labresults__trust > div:last-child { border-bottom:0; }
}
@media (max-width:600px) {
	.gp-pp-spec-cards { grid-template-columns:1fr 1fr; gap:8px; }
	.gp-pp-spec-card { min-height:94px; padding:11px 8px; }
	body.gp-product-conversion-v2 .woocommerce-tabs ul.tabs { gap:16px; }
	.gp-labresults--v212 .gp-labresult__docs { width:100%; }
}
.gp-headerbar__catalogue { display:inline-flex; align-items:center; justify-content:center; padding:9px 14px; border-radius:7px; background:var(--gp-dark); color:#fff !important; text-decoration:none !important; font-size:12px; font-weight:700; white-space:nowrap; }
@media (max-width:900px){ .gp-headerbar__catalogue { display:none; } }

/* ============================================================
   v2.13 — Approved product-detail reference layout
   ============================================================ */
body.gp-product-reference-v213 {
	font-family: var(--gp-pd-body-font, var(--gp-font));
	color: var(--gp-pd-text, #263238);
}
body.gp-product-reference-v213 .woocommerce-breadcrumb,
body.gp-product-reference-v213 .gp-pp-toplabels,
body.gp-product-reference-v213 .gp-pp-stock,
body.gp-product-reference-v213 .gp-pp-promo,
body.gp-product-reference-v213 .gp-pp-specs,
body.gp-product-reference-v213 .gp-pp-coas,
body.gp-product-reference-v213 .gp-pp-notice,
body.gp-product-reference-v213 .gp-pp-chips,
body.gp-product-reference-v213 .gp-pp-delivery,
body.gp-product-reference-v213 .gp-pp-pay {
	display: none !important;
}

body.gp-product-reference-v213 .gp-v213-icon {
	display: block;
	width: 22px;
	height: 22px;
	flex: 0 0 auto;
}

/* Breadcrumb like the approved reference. */
body.gp-product-reference-v213 .gp-pp-breadcrumb {
	display: flex !important;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px;
	max-width: var(--gp-maxw, 1200px);
	margin: 0 auto 22px;
	padding: 0 18px;
	font-family: var(--gp-pd-body-font, var(--gp-font));
	font-size: 12px;
	color: var(--gp-pd-muted, #667085);
}
body.gp-product-reference-v213 .gp-pp-breadcrumb a {
	color: var(--gp-pd-muted, #667085) !important;
	text-decoration: none !important;
}
body.gp-product-reference-v213 .gp-pp-breadcrumb a:hover {
	color: var(--gp-pd-title, #101820) !important;
}

/* Desktop product split. */
@media (min-width: 901px) {
	body.gp-product-reference-v213 .woocommerce div.product div.images,
	body.gp-product-reference-v213 .woocommerce-page div.product div.images {
		width: 43% !important;
	}
	body.gp-product-reference-v213 .woocommerce div.product div.summary,
	body.gp-product-reference-v213 .woocommerce-page div.product div.summary {
		width: 53% !important;
	}
}

body.gp-product-reference-v213 div.product .summary .product_title {
	font-family: var(--gp-pd-heading-font, Georgia, 'Times New Roman', serif) !important;
	font-size: clamp(32px, 3vw, 46px) !important;
	font-weight: 700 !important;
	line-height: 1.08 !important;
	letter-spacing: -0.025em;
	color: var(--gp-pd-title, #101820) !important;
	margin: 0 0 5px !important;
}
body.gp-product-reference-v213 div.product .summary .price {
	font-family: var(--gp-pd-body-font, var(--gp-font));
	font-size: clamp(24px, 2.1vw, 31px) !important;
	font-weight: 700 !important;
	line-height: 1.2;
	color: var(--gp-pd-title, #101820) !important;
	margin: 0 0 12px !important;
}
body.gp-product-reference-v213 div.product .summary .price ins,
body.gp-product-reference-v213 div.product .summary .price del {
	color: inherit !important;
}

body.gp-product-reference-v213 .gp-pp-research-badge {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin: 2px 0 14px;
	padding: 8px 12px;
	border: 1px solid color-mix(in srgb, var(--gp-pd-badge-text, #174c8f) 26%, transparent);
	border-radius: 6px;
	background: var(--gp-pd-badge-bg, #eef6ff);
	color: var(--gp-pd-badge-text, #174c8f);
	font-size: 12px;
	font-weight: 700;
	line-height: 1.2;
}
body.gp-product-reference-v213 .gp-pp-research-badge .gp-v213-icon {
	width: 18px;
	height: 18px;
}

body.gp-product-reference-v213 .gp-pp-intro {
	margin: 0 0 16px;
	max-width: 720px;
	font-size: 15px;
	line-height: 1.55;
	color: var(--gp-pd-text, #263238);
}
body.gp-product-reference-v213 .gp-pp-intro p { margin: 0; }

/* Both buttons, always in one reference row on desktop. */
body.gp-product-reference-v213 .gp-pp-actionrow {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, .95fr);
	gap: 12px;
	align-items: stretch;
	margin: 4px 0 18px;
}
body.gp-product-reference-v213 .gp-pp-actionrow form.cart {
	display: flex !important;
	align-items: stretch;
	gap: 8px;
	width: 100%;
	margin: 0 !important;
}
body.gp-product-reference-v213 .gp-pp-actionrow form.cart .single_add_to_cart_button {
	flex: 1 1 auto;
	width: 100%;
	min-height: 50px;
	margin: 0 !important;
	padding: 13px 18px !important;
	border: 1px solid var(--gp-pd-primary-bg, #101820) !important;
	border-radius: 6px !important;
	background: var(--gp-pd-primary-bg, #101820) !important;
	color: var(--gp-pd-primary-text, #fff) !important;
	box-shadow: none !important;
	font-family: var(--gp-pd-body-font, var(--gp-font));
	font-size: 14px !important;
	font-weight: 700 !important;
	line-height: 1.2 !important;
	text-transform: none !important;
}
body.gp-product-reference-v213 .gp-pp-actionrow form.cart .single_add_to_cart_button:hover {
	filter: brightness(.92);
}
body.gp-product-reference-v213 .gp-pp-actionrow form.cart .quantity input.qty {
	min-height: 50px;
	border: 1px solid var(--gp-pd-card-border, #e3e7ec) !important;
	border-radius: 6px !important;
	box-shadow: none !important;
}
body.gp-product-reference-v213 .gp-pp-primary-doc {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 9px;
	min-height: 50px;
	padding: 12px 16px;
	border: 1px solid var(--gp-pd-secondary-text, #101820);
	border-radius: 6px;
	background: var(--gp-pd-secondary-bg, #fff);
	color: var(--gp-pd-secondary-text, #101820) !important;
	text-decoration: none !important;
	font-family: var(--gp-pd-body-font, var(--gp-font));
	font-size: 14px;
	font-weight: 700;
	text-align: center;
}
body.gp-product-reference-v213 .gp-pp-primary-doc .gp-v213-icon {
	width: 19px;
	height: 19px;
}
body.gp-product-reference-v213 .gp-pp-primary-doc:hover {
	filter: brightness(.97);
}

/* Four scan cards with label-matched icons. */
body.gp-product-reference-v213 .gp-pp-spec-cards {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 10px;
	margin: 0 0 16px;
}
body.gp-product-reference-v213 .gp-pp-spec-card {
	min-height: 108px;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 5px;
	padding: 13px 9px;
	border: 1px solid var(--gp-pd-card-border, #e3e7ec);
	border-radius: var(--gp-pd-radius, 8px);
	background: var(--gp-pd-card-bg, #fafafa);
	text-align: center;
	box-shadow: none;
}
body.gp-product-reference-v213 .gp-pp-spec-card__ico {
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--gp-pd-title, #101820);
}
body.gp-product-reference-v213 .gp-pp-spec-card__ico .gp-v213-icon {
	width: 25px;
	height: 25px;
}
body.gp-product-reference-v213 .gp-pp-spec-card strong {
	font-size: 12px;
	font-weight: 700;
	color: var(--gp-pd-title, #101820);
}
body.gp-product-reference-v213 .gp-pp-spec-card > span:last-child {
	font-size: 11px;
	line-height: 1.35;
	color: var(--gp-pd-muted, #667085);
}

body.gp-product-reference-v213 .gp-pp-research-notice {
	display: flex;
	align-items: center;
	gap: 9px;
	margin: 0 0 6px;
	padding: 11px 13px;
	border: 1px solid color-mix(in srgb, var(--gp-pd-notice-text, #24496f) 18%, transparent);
	border-radius: 6px;
	background: var(--gp-pd-notice-bg, #eef6ff);
	color: var(--gp-pd-notice-text, #24496f);
	font-size: 12px;
	line-height: 1.45;
}
body.gp-product-reference-v213 .gp-pp-research-notice .gp-v213-icon {
	width: 18px;
	height: 18px;
}

/* Full-width reference tabs under the top two-column area. */
body.gp-product-reference-v213 div.product > .woocommerce-tabs {
	width: 100% !important;
	max-width: 100% !important;
	clear: both;
	margin: 30px 0 0 !important;
	font-family: var(--gp-pd-body-font, var(--gp-font));
}
body.gp-product-reference-v213 .woocommerce-tabs ul.tabs {
	display: flex !important;
	gap: 34px;
	align-items: flex-end;
	flex-wrap: wrap;
	border-bottom: 1px solid var(--gp-pd-card-border, #e3e7ec);
	padding: 0 !important;
	margin: 0 0 22px !important;
}
body.gp-product-reference-v213 .woocommerce-tabs ul.tabs::before { display: none !important; }
body.gp-product-reference-v213 .woocommerce-tabs ul.tabs li {
	border: 0 !important;
	background: transparent !important;
	margin: 0 !important;
	padding: 0 !important;
}
body.gp-product-reference-v213 .woocommerce-tabs ul.tabs li::before,
body.gp-product-reference-v213 .woocommerce-tabs ul.tabs li::after { display: none !important; }
body.gp-product-reference-v213 .woocommerce-tabs ul.tabs li a {
	display: block;
	padding: 11px 0 10px !important;
	border-bottom: 2px solid transparent;
	color: var(--gp-pd-muted, #667085) !important;
	font-size: 13px;
	font-weight: 700;
	text-decoration: none !important;
}
body.gp-product-reference-v213 .woocommerce-tabs ul.tabs li.active a {
	border-bottom-color: var(--gp-pd-title, #101820);
	color: var(--gp-pd-title, #101820) !important;
}
body.gp-product-reference-v213 .woocommerce-tabs .panel {
	padding: 0 0 10px !important;
	color: var(--gp-pd-text, #263238);
	font-size: 14px;
	line-height: 1.65;
}
body.gp-product-reference-v213 .woocommerce-tabs .panel > h2:first-child {
	display: block !important;
	font-family: var(--gp-pd-heading-font, Georgia, 'Times New Roman', serif) !important;
	font-size: 24px !important;
	line-height: 1.2;
	color: var(--gp-pd-title, #101820) !important;
	margin: 0 0 9px !important;
}
body.gp-product-reference-v213 .gp-pp-tabdocs {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 10px;
}
body.gp-product-reference-v213 .gp-pp-tabdocs a {
	display: grid;
	grid-template-columns: 28px 1fr;
	column-gap: 8px;
	align-items: center;
	border: 1px solid var(--gp-pd-card-border, #e3e7ec);
	border-radius: var(--gp-pd-radius, 8px);
	padding: 14px;
	background: var(--gp-pd-card-bg, #fafafa);
	text-decoration: none !important;
}
body.gp-product-reference-v213 .gp-pp-tabdocs a .gp-v213-icon { grid-row: 1 / 3; }
body.gp-product-reference-v213 .gp-pp-tabdocs strong { color: var(--gp-pd-title, #101820); font-size: 13px; }
body.gp-product-reference-v213 .gp-pp-tabdocs span { color: var(--gp-pd-muted, #667085); font-size: 11px; }
body.gp-product-reference-v213 .gp-pp-tab-doc-fallback {
	background: var(--gp-pd-secondary-bg, #fff) !important;
	border: 1px solid var(--gp-pd-secondary-text, #101820) !important;
	color: var(--gp-pd-secondary-text, #101820) !important;
	border-radius: 6px !important;
}
body.gp-product-reference-v213 .gp-pp-faq details {
	border-bottom: 1px solid var(--gp-pd-card-border, #e3e7ec);
	padding: 12px 0;
}
body.gp-product-reference-v213 .gp-pp-faq summary {
	cursor: pointer;
	font-weight: 700;
	color: var(--gp-pd-title, #101820);
}
body.gp-product-reference-v213 .gp-pp-faq p {
	margin: 8px 0 0;
	color: var(--gp-pd-text, #263238);
}

/* Exact three-item strip shown beneath Product Overview in the reference. */
body.gp-product-reference-v213 .gp-pp-trustgrid--reference {
	width: 100%;
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	border: 1px solid var(--gp-pd-card-border, #e3e7ec);
	border-radius: var(--gp-pd-radius, 8px);
	overflow: hidden;
	margin: 8px 0 26px;
	background: var(--gp-pd-card-bg, #fafafa);
}
body.gp-product-reference-v213 .gp-pp-trustgrid--reference > div {
	min-height: 88px;
	padding: 15px 18px;
	display: grid;
	grid-template-columns: 34px 1fr;
	align-content: center;
	column-gap: 10px;
	border-right: 1px solid var(--gp-pd-card-border, #e3e7ec);
}
body.gp-product-reference-v213 .gp-pp-trustgrid--reference > div:last-child { border-right: 0; }
body.gp-product-reference-v213 .gp-pp-trustgrid--reference > div > span {
	grid-row: 1 / 3;
	align-self: center;
	color: var(--gp-pd-title, #101820);
}
body.gp-product-reference-v213 .gp-pp-trustgrid--reference .gp-v213-icon {
	width: 28px;
	height: 28px;
}
body.gp-product-reference-v213 .gp-pp-trustgrid--reference strong {
	font-size: 13px;
	color: var(--gp-pd-title, #101820);
}
body.gp-product-reference-v213 .gp-pp-trustgrid--reference small {
	font-size: 11px;
	line-height: 1.35;
	color: var(--gp-pd-muted, #667085);
}

@media (max-width: 900px) {
	body.gp-product-reference-v213 .gp-pp-actionrow { grid-template-columns: 1fr; }
	body.gp-product-reference-v213 .gp-pp-spec-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	body.gp-product-reference-v213 .gp-pp-trustgrid--reference { grid-template-columns: 1fr; }
	body.gp-product-reference-v213 .gp-pp-trustgrid--reference > div {
		border-right: 0;
		border-bottom: 1px solid var(--gp-pd-card-border, #e3e7ec);
	}
	body.gp-product-reference-v213 .gp-pp-trustgrid--reference > div:last-child { border-bottom: 0; }
}
@media (max-width: 600px) {
	body.gp-product-reference-v213 div.product .summary .product_title { font-size: 34px !important; }
	body.gp-product-reference-v213 .gp-pp-spec-cards { grid-template-columns: 1fr 1fr; gap: 8px; }
	body.gp-product-reference-v213 .gp-pp-spec-card { min-height: 96px; padding: 11px 8px; }
	body.gp-product-reference-v213 .woocommerce-tabs ul.tabs { gap: 18px; }
}
body.gp-product-reference-v213 .gp-pp-research-notice--full {
	width: 100%;
	clear: both;
	margin: 18px 0 0;
}

/* ============================================================
   v2.14.0 — product title sizing/font, trust icons, hero,
   button alignment
   ============================================================ */

/* ---- 1. Product title: smaller, and in Jost like the rest of the site.
   v2.13 set it to a serif face at up to 46px, which is why it reads as
   oversized and off-brand next to every other heading. ---- */
body.gp-product-reference-v213 div.product .summary .product_title,
body.gp-product-layout div.product .summary .product_title,
.woocommerce div.product .product_title {
	font-family: var(--gp-font) !important;
	font-size: clamp(22px, 2.1vw, 30px) !important;
	font-weight: 600 !important;
	line-height: 1.2 !important;
	letter-spacing: -0.01em !important;
}
body.gp-product-reference-v213 div.product .summary .price,
body.gp-product-layout div.product .summary .price {
	font-family: var(--gp-font) !important;
	font-size: clamp(20px, 1.7vw, 26px) !important;
}
@media (max-width: 600px) {
	body.gp-product-reference-v213 div.product .summary .product_title,
	body.gp-product-layout div.product .summary .product_title {
		font-size: 22px !important;
	}
}

/* ---- 2. Product page action buttons: equal height + aligned ---- */
body.gp-product-reference-v213 div.product .summary form.cart,
body.gp-product-layout div.product .summary form.cart {
	display: flex !important;
	align-items: stretch !important;
	gap: 12px;
	flex-wrap: wrap;
}
body.gp-product-reference-v213 div.product .summary .single_add_to_cart_button,
body.gp-product-layout div.product .summary .single_add_to_cart_button,
body.gp-product-reference-v213 .gp-pp-coa,
body.gp-product-layout .gp-pp-coa {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	min-height: 56px !important;
	box-sizing: border-box !important;
	font-family: var(--gp-font) !important;
	font-size: 15px !important;
	font-weight: 600 !important;
	line-height: 1.2 !important;
	margin: 0 !important;
}

/* ---- 3. Trust / Research Standards icons.
   The blank circles are the "--dot" fallback: it renders whenever both
   the icon image and the icon text are empty, which happened when the
   emojis were stripped. Give the fallback a real mark instead of an
   empty grey circle. ---- */
.gp-trust__icon--dot {
	position: relative;
	background: var(--gp-surface) !important;
	border: 1px solid var(--gp-border);
	border-radius: 50%;
	width: 46px;
	height: 46px;
	display: inline-block;
}
.gp-trust__icon--dot::after {
	content: '';
	position: absolute;
	left: 50%;
	top: 52%;
	width: 13px;
	height: 7px;
	border-left: 2.5px solid var(--gp-dark);
	border-bottom: 2.5px solid var(--gp-dark);
	transform: translate(-50%, -50%) rotate(-45deg);
	opacity: .8;
}
.gp-trust__emoji {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 46px;
	height: 46px;
	background: var(--gp-surface);
	border: 1px solid var(--gp-border);
	border-radius: 50%;
	font-size: 20px;
	line-height: 1;
}

/* ---- 4. Hero: guarantee the two-column layout with the image on the
   right whenever a side image is set, and keep the buttons aligned. ---- */
.gp-hero__inner {
	display: flex;
	align-items: center;
	gap: 40px;
}
.gp-hero__media { flex: 0 0 44%; max-width: 44%; }
.gp-hero__media img {
	width: 100%;
	height: auto;
	display: block;
	border-radius: var(--gp-radius);
}
.gp-hero__content { flex: 1 1 auto; min-width: 0; }
.gp-hero__btns {
	display: flex !important;
	align-items: stretch !important;
	gap: 14px;
	flex-wrap: wrap;
}
.gp-hero__btns .gp-btn {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	min-height: 54px !important;
	box-sizing: border-box !important;
	padding: 0 30px !important;
	font-size: 15px !important;
	line-height: 1.2 !important;
	margin: 0 !important;
}
@media (max-width: 900px) {
	.gp-hero__inner { flex-direction: column; gap: 26px; }
	.gp-hero__media { flex: 1 1 100%; max-width: 100%; order: 2; }
	.gp-hero__content { order: 1; }
	.gp-hero__btns .gp-btn { flex: 1 1 auto; }
}

/* ============================================================
   v2.14.1 — smaller product action buttons; hero without image
   ============================================================ */

/* ---- Hero with no side image: text should use a comfortable measure
   rather than stretching the full width of the screen. ---- */
.gp-hero__inner:not(:has(.gp-hero__media)) .gp-hero__content { max-width: 780px; }
.gp-hero__media:empty { display: none !important; }
.gp-hero__media img[src=""],
.gp-hero__media img:not([src]) { display: none !important; }

/* ============================================================
   v2.14.2 — product action buttons: sized to content, sat together
   The v2.13 .gp-pp-actionrow is a 2-column grid spanning the full
   summary width, so both buttons stretched and ended up far apart.
   Switch it to an inline flex row so each button is only as wide as
   its label and they sit next to each other.
   ============================================================ */
body.gp-product-reference-v213 .gp-pp-actionrow {
	display: flex !important;
	grid-template-columns: none !important;
	flex-wrap: wrap;
	align-items: center !important;
	justify-content: flex-start;
	gap: 10px !important;
	width: auto !important;
	max-width: 100%;
}
body.gp-product-reference-v213 .gp-pp-actionrow form.cart {
	flex: 0 0 auto !important;
	width: auto !important;
	gap: 8px;
}
body.gp-product-reference-v213 .gp-pp-actionrow form.cart .single_add_to_cart_button {
	flex: 0 0 auto !important;
	width: auto !important;
	min-width: 0 !important;
	min-height: 46px !important;
	padding: 0 26px !important;
	font-size: 14px !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
}
body.gp-product-reference-v213 .gp-pp-actionrow form.cart .quantity input.qty {
	min-height: 46px !important;
}
body.gp-product-reference-v213 .gp-pp-primary-doc {
	flex: 0 0 auto !important;
	width: auto !important;
	min-height: 46px !important;
	padding: 0 22px !important;
	font-size: 14px !important;
	white-space: nowrap;
}

@media (max-width: 600px) {
	body.gp-product-reference-v213 .gp-pp-actionrow { width: 100% !important; }
	body.gp-product-reference-v213 .gp-pp-actionrow form.cart,
	body.gp-product-reference-v213 .gp-pp-actionrow form.cart .single_add_to_cart_button,
	body.gp-product-reference-v213 .gp-pp-primary-doc {
		flex: 1 1 100% !important;
		width: 100% !important;
	}
}

/* ============================================================
   v2.15.0 — audit compliance UI
   ============================================================ */

/* Specifications table (replaces the dosage chart) */
.gp-v215-specs { margin: 18px 0; font-family: var(--gp-font); }
.gp-v215-specs__title { font-size: 17px; font-weight: 600; color: var(--gp-dark); margin: 0 0 10px; }
.gp-v215-specs__table { width: 100%; border-collapse: collapse; border: 1px solid var(--gp-border); border-radius: var(--gp-radius); overflow: hidden; }
.gp-v215-specs__table th,
.gp-v215-specs__table td { padding: 11px 14px; font-size: 14px; text-align: left; border-bottom: 1px solid var(--gp-border); vertical-align: top; }
.gp-v215-specs__table th { width: 40%; background: var(--gp-surface); color: var(--gp-muted); font-weight: 600; }
.gp-v215-specs__table td { color: var(--gp-dark); word-break: break-word; }
.gp-v215-specs__table tr:last-child th,
.gp-v215-specs__table tr:last-child td { border-bottom: 0; }

/* Checkout research acknowledgement */
.gp-research-ack { margin: 14px 0 18px !important; }
.gp-research-ack label {
	display: flex !important; align-items: flex-start; gap: 10px;
	font-size: 13px; line-height: 1.6; color: var(--gp-dark);
	font-family: var(--gp-font);
}
.gp-research-ack input[type="checkbox"] { margin-top: 3px; flex-shrink: 0; }

/* Shop search */
.gp-shop-search { display: flex; gap: 8px; margin: 0 0 22px; max-width: 460px; font-family: var(--gp-font); }
.gp-shop-search input[type="search"] {
	flex: 1; min-width: 0;
	border: 1px solid var(--gp-border) !important;
	border-radius: var(--gp-btn-radius) !important;
	padding: 11px 18px !important;
	font-family: var(--gp-font) !important;
	font-size: 15px !important;
}
.gp-shop-search button {
	background: var(--gp-dark) !important; color: #fff !important;
	border: 0 !important; border-radius: var(--gp-btn-radius) !important;
	padding: 11px 22px !important; font-size: 14px !important; font-weight: 600 !important;
	cursor: pointer; font-family: var(--gp-font) !important;
}

/* Mobile overflow guard (audit: 429px content on a 390px screen) */
@media (max-width: 768px) {
	html, body { max-width: 100%; overflow-x: hidden; }
	body.gp-product-layout table,
	body.gp-product-reference-v213 table,
	.gp-v215-specs__table { display: block; width: 100% !important; overflow-x: auto; }
	body.gp-product-layout img,
	body.gp-product-reference-v213 img { max-width: 100% !important; height: auto; }
	body.gp-product-layout pre,
	body.gp-product-reference-v213 pre { overflow-x: auto; max-width: 100%; }
}

/* Footer policy bar (v2.18) */
.gp-policy-bar { border-top: 1px solid var(--gp-border); background: var(--gp-surface); font-family: var(--gp-font); }
.gp-policy-bar__inner {
	max-width: var(--gp-maxw); margin: 0 auto; padding: 16px 24px;
	display: flex; flex-wrap: wrap; align-items: center; gap: 8px 20px;
	font-size: 13px;
}
.gp-policy-bar__inner a { color: var(--gp-dark) !important; text-decoration: none !important; }
.gp-policy-bar__inner a:hover { text-decoration: underline !important; }
.gp-policy-bar__note { color: var(--gp-muted); margin-left: auto; }
@media (max-width: 768px) {
	.gp-policy-bar__inner { padding: 14px 16px; gap: 6px 14px; font-size: 12px; }
	.gp-policy-bar__note { margin-left: 0; width: 100%; }
}

/* ============================================================
   v2.18.1 — Legal / policy page typography and layout
   These pages were inheriting the theme's raw defaults (~60px
   headings, full-viewport width, no hierarchy). Give them a proper
   readable document layout.
   ============================================================ */

body.gp-policy-page .gp-policy-doc {
	max-width: 820px;
	margin: 0 auto;
	padding: 48px 24px 80px;
	font-family: var(--gp-font);
	color: var(--gp-dark);
}

/* Neutralise wide theme containers on these pages */
body.gp-policy-page .content-area,
body.gp-policy-page #primary,
body.gp-policy-page .site-content,
body.gp-policy-page .entry-content {
	max-width: none !important;
	width: 100% !important;
	padding: 0 !important;
	margin: 0 !important;
}

/* ---- Header ---- */
.gp-policy-doc__head { border-bottom: 1px solid var(--gp-border); padding-bottom: 22px; margin-bottom: 4px; }
.gp-policy-doc__eyebrow {
	display: inline-block; font-size: 12px; font-weight: 700; letter-spacing: 1.6px;
	text-transform: uppercase; color: var(--gp-accent-alt); margin-bottom: 10px;
}
.gp-policy-doc__title {
	font-family: var(--gp-font) !important;
	font-size: clamp(28px, 3.4vw, 38px) !important;
	font-weight: 600 !important;
	line-height: 1.15 !important;
	letter-spacing: -0.01em;
	margin: 0 0 8px !important;
	color: var(--gp-dark) !important;
}
.gp-policy-doc__meta { font-size: 13px; color: var(--gp-muted); margin: 0 !important; }

/* ---- Cross-links between policies ---- */
.gp-policy-nav {
	display: flex; flex-wrap: wrap; gap: 8px;
	margin: 22px 0 34px;
}
.gp-policy-nav__link {
	font-size: 13px; font-weight: 500;
	padding: 8px 14px;
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-btn-radius);
	color: var(--gp-muted) !important;
	text-decoration: none !important;
	transition: border-color .15s ease, color .15s ease;
}
.gp-policy-nav__link:hover { border-color: var(--gp-dark); color: var(--gp-dark) !important; }
.gp-policy-nav__link.is-current {
	background: var(--gp-dark); border-color: var(--gp-dark); color: #fff !important;
}

/* ---- Body copy ---- */
.gp-policy-doc__body { font-size: 16px; line-height: 1.75; color: #3d4450; }
.gp-policy-doc__body > p:first-child {
	background: var(--gp-surface);
	border-left: 3px solid var(--gp-accent-alt);
	padding: 14px 18px;
	border-radius: 0 var(--gp-radius) var(--gp-radius) 0;
	font-size: 15px;
	color: var(--gp-dark);
	margin: 0 0 32px;
}
.gp-policy-doc__body h2 {
	font-family: var(--gp-font) !important;
	font-size: 19px !important;
	font-weight: 600 !important;
	line-height: 1.3 !important;
	color: var(--gp-dark) !important;
	margin: 38px 0 12px !important;
	padding-top: 22px;
	border-top: 1px solid var(--gp-border);
}
.gp-policy-doc__body h2:first-of-type { border-top: 0; padding-top: 0; margin-top: 0 !important; }
.gp-policy-doc__body h3 {
	font-size: 16px !important; font-weight: 600 !important;
	margin: 24px 0 8px !important; color: var(--gp-dark) !important;
}
.gp-policy-doc__body p { margin: 0 0 16px; }
.gp-policy-doc__body ul,
.gp-policy-doc__body ol { margin: 0 0 18px; padding-left: 22px; }
.gp-policy-doc__body li { margin-bottom: 8px; }
.gp-policy-doc__body a { color: var(--gp-dark) !important; text-decoration: underline !important; }
.gp-policy-doc__body a:hover { color: var(--gp-accent-alt) !important; }
.gp-policy-doc__body strong { color: var(--gp-dark); font-weight: 600; }

/* ---- Footer ---- */
.gp-policy-doc__foot {
	margin-top: 44px; padding-top: 22px;
	border-top: 1px solid var(--gp-border);
	font-size: 14px; color: var(--gp-muted);
}
.gp-policy-doc__foot p { margin: 0; }
.gp-policy-doc__foot a { color: var(--gp-dark) !important; text-decoration: underline !important; }

/* ---- Mobile ---- */
@media (max-width: 768px) {
	body.gp-policy-page .gp-policy-doc { padding: 32px 18px 60px; }
	.gp-policy-doc__body { font-size: 15px; }
	.gp-policy-doc__body h2 { font-size: 17px !important; margin-top: 30px !important; }
	.gp-policy-nav { gap: 6px; }
	.gp-policy-nav__link { font-size: 12px; padding: 7px 11px; }
}

/* ============================================================
   v2.19.0 — full-screen research-use gate
   ============================================================ */
.gp-agegate {
	position: fixed; inset: 0; z-index: 999999;
	background: var(--gp-surface, #f5f4f0);
	display: flex; align-items: center; justify-content: center;
	padding: 40px 24px;
	overflow-y: auto;
	font-family: var(--gp-font);
}
.gp-agegate__inner { max-width: 680px; width: 100%; text-align: center; }
.gp-agegate__brand {
	display: block; font-size: 22px; font-weight: 600;
	color: var(--gp-dark); margin-bottom: 26px; letter-spacing: -0.01em;
}
.gp-agegate__title {
	font-family: var(--gp-font) !important;
	font-size: clamp(38px, 6vw, 68px) !important;
	font-weight: 600 !important;
	line-height: 1.05 !important;
	letter-spacing: -0.02em;
	color: var(--gp-dark) !important;
	margin: 0 0 22px !important;
}
.gp-agegate__lede {
	font-size: 16px; line-height: 1.65; color: var(--gp-muted);
	max-width: 520px; margin: 0 auto 36px;
}

.gp-agegate__checks {
	display: flex; flex-direction: column; gap: 16px;
	max-width: 500px; margin: 0 auto 26px; text-align: left;
}
.gp-agegate__check {
	display: flex; align-items: flex-start; gap: 13px;
	font-size: 15px; line-height: 1.55; color: var(--gp-dark);
	cursor: pointer;
}
.gp-agegate__check input[type="checkbox"] {
	width: 20px; height: 20px; margin: 1px 0 0; flex-shrink: 0;
	accent-color: var(--gp-dark); cursor: pointer;
}

.gp-agegate__select { max-width: 500px; margin: 0 auto 30px; }
.gp-agegate__select select {
	width: 100%;
	border: 1px solid var(--gp-border) !important;
	border-radius: var(--gp-radius) !important;
	padding: 15px 18px !important;
	font-family: var(--gp-font) !important;
	font-size: 15px !important;
	background: #fff !important;
	color: var(--gp-dark) !important;
	cursor: pointer;
}

.gp-agegate__actions {
	display: flex; gap: 14px; justify-content: center;
	max-width: 500px; margin: 0 auto 26px;
}
.gp-agegate__btn {
	flex: 1 1 0;
	min-height: 54px;
	border-radius: var(--gp-btn-radius) !important;
	font-family: var(--gp-font) !important;
	font-size: 15px !important;
	font-weight: 600 !important;
	cursor: pointer;
	transition: opacity .15s ease, background .15s ease;
}
.gp-agegate__btn--decline {
	background: transparent !important;
	border: 1px solid var(--gp-dark) !important;
	color: var(--gp-dark) !important;
}
.gp-agegate__btn--decline:hover { background: rgba(0,0,0,.05) !important; }
.gp-agegate__btn--enter {
	background: var(--gp-dark) !important;
	border: 1px solid var(--gp-dark) !important;
	color: #fff !important;
}
.gp-agegate__btn--enter:disabled {
	opacity: .35; cursor: not-allowed;
}
.gp-agegate__btn--enter:not(:disabled):hover { opacity: .88; }

.gp-agegate__fine { font-size: 13px; color: var(--gp-muted); margin: 0; }
.gp-agegate__fine a { color: var(--gp-dark) !important; text-decoration: underline !important; }

@media (max-width: 600px) {
	.gp-agegate { padding: 28px 18px; align-items: flex-start; }
	.gp-agegate__title { font-size: 34px !important; }
	.gp-agegate__lede { font-size: 15px; margin-bottom: 28px; }
	.gp-agegate__actions { flex-direction: column-reverse; }
	.gp-agegate__btn { width: 100%; }
}

/* ============================================================
   v2.19.0 — product action buttons: equal width, full row
   Previously auto-width and sized to their labels, which left a gap
   to the right of "View COA / Testing". They now split the summary
   width 50/50 and line up with the spec cards below.
   ============================================================ */
body.gp-product-reference-v213 .gp-pp-actionrow {
	display: grid !important;
	grid-template-columns: 1fr 1fr !important;
	gap: 12px !important;
	width: 100% !important;
	max-width: none !important;
	align-items: stretch !important;
	margin: 4px 0 16px !important;
}
body.gp-product-reference-v213 .gp-pp-actionrow form.cart {
	display: flex !important;
	width: 100% !important;
	margin: 0 !important;
	flex: 1 1 auto !important;
}
body.gp-product-reference-v213 .gp-pp-actionrow form.cart .single_add_to_cart_button {
	flex: 1 1 auto !important;
	width: 100% !important;
	min-height: 52px !important;
	height: auto !important;
	padding: 14px 20px !important;
	font-size: 14px !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
}
body.gp-product-reference-v213 .gp-pp-primary-doc {
	width: 100% !important;
	min-height: 52px !important;
	height: auto !important;
	padding: 14px 20px !important;
	font-size: 14px !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	white-space: normal;
}
@media (max-width: 600px) {
	body.gp-product-reference-v213 .gp-pp-actionrow {
		grid-template-columns: 1fr !important;
	}
}


/* ============================================================
   v2.19.2 — product action buttons: compact, equal, aligned
   v2.19.1 used height:100% with a stretched grid, which let the row
   drive the height and produced ~150px buttons. Fixed height instead,
   centred rather than stretched, so the pair stays compact whatever
   the row contains.
   ============================================================ */
body.gp-product-reference-v213 .gp-pp-actionrow {
	display: grid !important;
	grid-template-columns: 1fr 1fr !important;
	gap: 12px !important;
	width: 100% !important;
	max-width: none !important;
	align-items: center !important;   /* not stretch */
	margin: 6px 0 18px !important;
}
body.gp-product-reference-v213 .gp-pp-actionrow form.cart {
	display: flex !important;
	width: 100% !important;
	height: auto !important;
	margin: 0 !important;
	padding: 0 !important;
	gap: 8px;
	align-items: center !important;
}
body.gp-product-reference-v213 .gp-pp-actionrow form.cart .single_add_to_cart_button,
body.gp-product-reference-v213 .gp-pp-primary-doc {
	box-sizing: border-box !important;
	height: 50px !important;
	min-height: 50px !important;
	max-height: 50px !important;
	width: 100% !important;
	flex: 1 1 auto !important;
	margin: 0 !important;
	padding: 0 18px !important;
	border-width: 1px !important;
	border-style: solid !important;
	border-radius: 8px !important;
	font-family: var(--gp-font) !important;
	font-size: 14px !important;
	font-weight: 600 !important;
	line-height: 1 !important;
	letter-spacing: normal !important;
	text-transform: none !important;
	white-space: nowrap;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 8px;
}
body.gp-product-reference-v213 .gp-pp-actionrow form.cart .single_add_to_cart_button {
	background: var(--gp-pd-primary-bg, #101820) !important;
	border-color: var(--gp-pd-primary-bg, #101820) !important;
	color: #fff !important;
}
body.gp-product-reference-v213 .gp-pp-actionrow form.cart .single_add_to_cart_button:hover {
	filter: brightness(.9);
}
body.gp-product-reference-v213 .gp-pp-primary-doc {
	background: #fff !important;
	border-color: var(--gp-border, #e3e7ec) !important;
	color: var(--gp-dark, #101820) !important;
	text-decoration: none !important;
}
body.gp-product-reference-v213 .gp-pp-primary-doc:hover {
	border-color: var(--gp-dark, #101820) !important;
	background: var(--gp-surface, #f6f6f4) !important;
}
body.gp-product-reference-v213 .gp-pp-primary-doc .gp-v213-icon {
	width: 16px !important; height: 16px !important; flex-shrink: 0;
}
body.gp-product-reference-v213 .gp-pp-actionrow form.cart .quantity {
	flex: 0 0 auto !important;
	height: 50px !important;
	display: flex !important;
	align-items: center !important;
}
body.gp-product-reference-v213 .gp-pp-actionrow form.cart .quantity input.qty {
	height: 50px !important;
	min-height: 50px !important;
	box-sizing: border-box !important;
	border-radius: 8px !important;
}

@media (max-width: 600px) {
	body.gp-product-reference-v213 .gp-pp-actionrow {
		grid-template-columns: 1fr !important;
		gap: 10px !important;
	}
	body.gp-product-reference-v213 .gp-pp-actionrow form.cart .single_add_to_cart_button,
	body.gp-product-reference-v213 .gp-pp-primary-doc {
		height: 48px !important;
		min-height: 48px !important;
		max-height: 48px !important;
		font-size: 14px !important;
	}
}

/* ============================================================
   v2.19.3 — button sizing, made selector-independent
   The earlier rules were all scoped to body.gp-product-reference-v213.
   If that class is absent the whole block does nothing, which is why
   the buttons stayed tall. These rules target the elements directly so
   they apply either way.
   ============================================================ */
.gp-pp-actionrow {
	display: grid !important;
	grid-template-columns: 1fr 1fr !important;
	gap: 12px !important;
	width: 100% !important;
	max-width: none !important;
	align-items: center !important;
	margin: 6px 0 18px !important;
}
.gp-pp-actionrow form.cart,
form.cart.gp-in-actionrow {
	display: flex !important;
	align-items: center !important;
	width: 100% !important;
	height: auto !important;
	min-height: 0 !important;
	margin: 0 !important;
	padding: 0 !important;
	gap: 8px;
}
/* Both buttons: identical fixed box, whatever wraps them */
.gp-pp-actionrow .single_add_to_cart_button,
.gp-pp-actionrow a.gp-pp-primary-doc,
a.gp-pp-primary-doc,
.gp-pp-actionrow button.single_add_to_cart_button {
	box-sizing: border-box !important;
	height: 50px !important;
	min-height: 50px !important;
	max-height: 50px !important;
	line-height: 1 !important;
	width: 100% !important;
	flex: 1 1 auto !important;
	margin: 0 !important;
	padding: 0 18px !important;
	border-width: 1px !important;
	border-style: solid !important;
	border-radius: 8px !important;
	font-family: var(--gp-font) !important;
	font-size: 14px !important;
	font-weight: 600 !important;
	letter-spacing: normal !important;
	text-transform: none !important;
	white-space: nowrap !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 8px !important;
	overflow: hidden;
}
.gp-pp-actionrow .single_add_to_cart_button {
	background: #101820 !important;
	border-color: #101820 !important;
	color: #fff !important;
}
.gp-pp-actionrow .single_add_to_cart_button:hover { filter: brightness(.9); }
a.gp-pp-primary-doc {
	background: #fff !important;
	border-color: var(--gp-border, #e3e7ec) !important;
	color: #101820 !important;
	text-decoration: none !important;
}
a.gp-pp-primary-doc:hover {
	border-color: #101820 !important;
	background: var(--gp-surface, #f6f6f4) !important;
}
a.gp-pp-primary-doc .gp-v213-icon { width: 16px !important; height: 16px !important; flex-shrink: 0; }
.gp-pp-actionrow .quantity { flex: 0 0 auto !important; height: 50px !important; display: flex !important; align-items: center !important; }
.gp-pp-actionrow .quantity input.qty {
	height: 50px !important; min-height: 50px !important;
	box-sizing: border-box !important; border-radius: 8px !important;
}

@media (max-width: 600px) {
	.gp-pp-actionrow { grid-template-columns: 1fr !important; gap: 10px !important; }
	.gp-pp-actionrow .single_add_to_cart_button,
	a.gp-pp-primary-doc {
		height: 48px !important; min-height: 48px !important; max-height: 48px !important;
	}
}

/* ---- Age gate: compact, equal-size buttons ---- */
.gp-agegate__actions {
	display: grid !important;
	grid-template-columns: 1fr 1fr !important;
	gap: 12px !important;
	max-width: 440px; margin: 0 auto 24px !important;
	align-items: center !important;
}
.gp-agegate__btn {
	box-sizing: border-box !important;
	height: 48px !important;
	min-height: 48px !important;
	max-height: 48px !important;
	width: 100% !important;
	padding: 0 18px !important;
	border-width: 1px !important;
	border-style: solid !important;
	border-radius: var(--gp-btn-radius) !important;
	font-size: 14px !important;
	font-weight: 600 !important;
	line-height: 1 !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	white-space: nowrap;
}
.gp-agegate__select select {
	height: 48px !important;
	padding: 0 16px !important;
	line-height: 1 !important;
	border-radius: var(--gp-btn-radius) !important;
}
.gp-agegate__select { max-width: 440px !important; margin: 0 auto 22px !important; }
.gp-agegate__checks { max-width: 440px !important; margin: 0 auto 22px !important; }
@media (max-width: 600px) {
	.gp-agegate__actions { grid-template-columns: 1fr !important; }
}

/* ============================================================
   v2.22 — MOBILE OPTIMISATION PASS
   ------------------------------------------------------------
   Everything below is additive and scoped. No existing rule is
   deleted, because several older blocks are only partially
   superseded (e.g. the checkout block at ~line 939 still carries
   the only max-width/centering for form.checkout).

   Breakpoint policy going forward — three tiers, nothing else:
     --gp-bp-lg  1024px  tablet landscape and below
     --gp-bp-md   900px  tablet portrait / mobile layout switch
     --gp-bp-sm   600px  phone
   New code uses only 1024 / 900 / 600. The 21 legacy widths
   elsewhere in this file are left alone for now; consolidating
   them is a separate, visually-verified pass.
   ============================================================ */

/* ---------- Global mobile hardening ---------- */
@media (max-width: 900px) {
	/* Nothing may cause horizontal scroll. */
	html, body { overflow-x: hidden !important; max-width: 100% !important; }
	img, video, iframe, table { max-width: 100% !important; }

	/* iOS zooms the viewport on focus for any input under 16px.
	   This is the single most common cause of a checkout feeling
	   broken on an iPhone. */
	input[type="text"], input[type="email"], input[type="tel"],
	input[type="number"], input[type="password"], input[type="search"],
	select, textarea {
		font-size: 16px !important;
	}

	/* Tap targets: 44px minimum. */
	.woocommerce button.button,
	.woocommerce a.button,
	.woocommerce input.button,
	button[type="submit"] {
		min-height: 44px !important;
	}
}

/* ============================================================
   Sticky add-to-cart bar (mobile, single product)
   ============================================================ */
.gp-satc {
	position: fixed;
	left: 0; right: 0; bottom: 0;
	z-index: 9990;
	background: var(--gp-light);
	border-top: 1px solid var(--gp-border);
	box-shadow: 0 -6px 24px rgba(0, 0, 0, .10);
	transform: translateY(110%);
	transition: transform .22s ease;
	padding-bottom: env(safe-area-inset-bottom, 0px);
	display: none;
}
.gp-satc.is-visible { transform: translateY(0); }
.gp-satc__inner {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 10px 14px;
}
.gp-satc__media { flex: 0 0 auto; }
.gp-satc__media img,
img.gp-satc__img {
	width: 44px !important;
	height: 44px !important;
	object-fit: cover;
	border-radius: 8px;
	display: block;
	margin: 0 !important;
}
.gp-satc__meta {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 2px;
	line-height: 1.25;
}
.gp-satc__name {
	font-family: var(--gp-font);
	font-size: 13px;
	font-weight: 600;
	color: var(--gp-dark);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.gp-satc__price,
.gp-satc__price .amount,
.gp-satc__price bdi {
	font-family: var(--gp-font);
	font-size: 14px;
	font-weight: 700;
	color: var(--gp-dark);
}
.gp-satc__price del { display: none; }
.gp-satc__btn {
	flex: 0 0 auto;
	background: var(--gp-dark) !important;
	color: var(--gp-light) !important;
	border: 0 !important;
	border-radius: var(--gp-btn-radius) !important;
	font-family: var(--gp-font) !important;
	font-size: 14px !important;
	font-weight: 600 !important;
	text-transform: none !important;
	letter-spacing: normal !important;
	padding: 0 22px !important;
	min-height: 46px !important;
	line-height: 46px !important;
	cursor: pointer;
	white-space: nowrap;
}
.gp-satc__btn:active { opacity: .85; }

@media (max-width: 900px) {
	body.gp-has-sticky-atc .gp-satc { display: block; }
	body:not(.gp-has-sticky-atc) .gp-satc { display: none !important; }
	/* Keep the bar from covering the last of the page content. */
	body.gp-satc-open { padding-bottom: 68px; }
}

/* ============================================================
   Mobile checkout — summary at top, sticky place-order at bottom
   ============================================================ */
.gp-mco-summary { display: none; }

/* Both mobile checkout elements are printed unconditionally in the
   footer/markup, so they MUST be display:none at base level. Without
   this the bar renders as unstyled inline content at the bottom of
   every desktop checkout — it was doing exactly that in 2.22.0. */
.gp-mco-bar {
	display: none;
	position: fixed;
	left: 0; right: 0; bottom: 0;
	z-index: 9990;
	background: var(--gp-light);
	border-top: 1px solid var(--gp-border);
	box-shadow: 0 -6px 24px rgba(0, 0, 0, .10);
	transform: translateY(110%);
	transition: transform .22s ease;
	padding-bottom: env(safe-area-inset-bottom, 0px);
}
.gp-mco-bar.is-visible { transform: translateY(0); }
.gp-mco-bar__inner {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 10px 14px;
}
.gp-mco-bar__meta { display: flex; flex-direction: column; line-height: 1.2; }
.gp-mco-bar__label { font-family: var(--gp-font); font-size: 11px; color: var(--gp-muted); text-transform: uppercase; letter-spacing: .06em; }
.gp-mco-bar__total { font-family: var(--gp-font); font-size: 17px; font-weight: 700; color: var(--gp-dark); }
.gp-mco-bar__btn {
	flex: 1 1 auto;
	background: var(--gp-dark) !important;
	color: var(--gp-light) !important;
	border: 0 !important;
	border-radius: var(--gp-btn-radius) !important;
	font-family: var(--gp-font) !important;
	font-size: 15px !important;
	font-weight: 600 !important;
	text-transform: none !important;
	letter-spacing: normal !important;
	min-height: 48px !important;
	cursor: pointer;
}

@media (max-width: 900px) {
	body.gp-mobile-checkout .gp-mco-summary[hidden] { display: none; }
	body.gp-mobile-checkout .gp-mco-summary {
		display: block;
		margin: 0 0 20px;
		border: 1px solid var(--gp-border);
		border-radius: var(--gp-radius);
		background: var(--gp-surface);
		overflow: hidden;
	}
	.gp-mco-summary__toggle {
		width: 100%;
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 12px;
		background: transparent !important;
		border: 0 !important;
		box-shadow: none !important;
		padding: 14px 16px !important;
		min-height: 52px;
		cursor: pointer;
		font-family: var(--gp-font) !important;
		text-transform: none !important;
		letter-spacing: normal !important;
		color: var(--gp-dark) !important;
	}
	.gp-mco-summary__label {
		display: inline-flex;
		align-items: center;
		gap: 8px;
		font-size: 15px;
		font-weight: 600;
	}
	.gp-mco-summary__count { color: var(--gp-muted); font-weight: 500; }
	.gp-mco-summary__chev { transition: transform .2s ease; }
	.gp-mco-summary.is-open .gp-mco-summary__chev { transform: rotate(180deg); }
	.gp-mco-summary__total { font-size: 16px; font-weight: 700; white-space: nowrap; }
	.gp-mco-summary__body {
		padding: 0 16px 14px;
		border-top: 1px solid var(--gp-border);
	}
	.gp-mco-summary__body[hidden] { display: none; }
	table.gp-mco-table { width: 100%; border: 0 !important; margin: 0 !important; }
	table.gp-mco-table th,
	table.gp-mco-table td {
		border: 0 !important;
		background: transparent !important;
		padding: 9px 0 !important;
		font-size: 14px !important;
		font-family: var(--gp-font);
	}
	table.gp-mco-table thead { display: none; }
	table.gp-mco-table tr.order-total th,
	table.gp-mco-table tr.order-total td {
		border-top: 1px solid var(--gp-border) !important;
		padding-top: 12px !important;
		font-size: 16px !important;
		font-weight: 700;
	}
	/* The cloned table must never carry interactive controls. */
	table.gp-mco-table input,
	table.gp-mco-table button,
	table.gp-mco-table a.remove { display: none !important; }

	/* Sticky place-order bar — visual styles live at base level
	   (see the .gp-mco-bar block above). Mobile only flips display. */
	body.gp-mobile-checkout .gp-mco-bar { display: block; }
	body.gp-mco-active { padding-bottom: 72px; }

	/* ---------- Checkout field layout ---------- */
	body.gp-checkout-layout .woocommerce { padding: 0 16px 40px !important; }
	body.gp-checkout-layout .form-row {
		width: 100% !important;
		float: none !important;
		margin: 0 0 14px !important;
		padding: 0 !important;
	}
	body.gp-checkout-layout .form-row-first,
	body.gp-checkout-layout .form-row-last { width: 100% !important; }
	body.gp-checkout-layout label {
		display: block;
		font-family: var(--gp-font);
		font-size: 13px;
		font-weight: 600;
		margin: 0 0 6px;
	}
	body.gp-checkout-layout .input-text,
	body.gp-checkout-layout select,
	body.gp-checkout-layout .select2-container .select2-selection--single {
		width: 100% !important;
		min-height: 48px !important;
		border: 1px solid var(--gp-border) !important;
		border-radius: 10px !important;
		padding: 12px 14px !important;
		box-sizing: border-box !important;
		font-family: var(--gp-font) !important;
	}
	body.gp-checkout-layout textarea.input-text { min-height: 90px !important; }
	body.gp-checkout-layout #order_review { padding: 18px 16px !important; }

	/* ---------- Payment methods ----------
	   The Authorize.net label and its card-logo images sit in the
	   same line box, so on a narrow viewport the logos wrap up and
	   overlap the label text. Force the label to a flex row that is
	   allowed to wrap, with the images on their own line. */
	body.gp-checkout-layout #payment ul.payment_methods li {
		padding: 14px 0 !important;
		list-style: none !important;
	}
	body.gp-checkout-layout #payment ul.payment_methods li label {
		display: flex !important;
		flex-wrap: wrap !important;
		align-items: center !important;
		gap: 8px !important;
		width: 100% !important;
		margin: 0 !important;
		font-size: 15px !important;
		line-height: 1.35 !important;
	}
	body.gp-checkout-layout #payment ul.payment_methods li label img {
		max-height: 22px !important;
		width: auto !important;
		margin: 0 !important;
		padding: 0 !important;
		vertical-align: middle !important;
		display: inline-block !important;
		float: none !important;
	}
	body.gp-checkout-layout #payment ul.payment_methods li input[type="radio"] {
		width: 20px !important;
		height: 20px !important;
		margin: 0 4px 0 0 !important;
		flex: 0 0 auto !important;
	}
	body.gp-checkout-layout #payment div.payment_box {
		margin: 12px 0 0 !important;
		padding: 16px !important;
		width: 100% !important;
		box-sizing: border-box !important;
	}
	body.gp-checkout-layout #payment div.payment_box::before { display: none !important; }

	/* Consent checkboxes: the research-use and terms rows are
	   required, so the tap target has to be unmissable. */
	body.gp-checkout-layout .woocommerce-terms-and-conditions-wrapper .form-row,
	body.gp-checkout-layout .validate-required label.checkbox {
		display: flex !important;
		align-items: flex-start !important;
		gap: 10px !important;
		font-size: 14px !important;
		line-height: 1.45 !important;
	}
	body.gp-checkout-layout input[type="checkbox"] {
		width: 22px !important;
		height: 22px !important;
		flex: 0 0 auto !important;
		margin-top: 1px !important;
	}

	/* The real place-order button is redundant once the sticky bar
	   is live, but it must stay in the DOM for validation and for
	   the proxy click to target. Keep it visible but de-emphasised
	   so there are not two competing primary buttons. */
	body.gp-mco-active #place_order { width: 100% !important; }
}

@media (max-width: 600px) {
	.gp-satc__name { font-size: 12px; }
	.gp-satc__btn { padding: 0 16px !important; font-size: 13px !important; }
	.gp-mco-summary__total { font-size: 15px; }
	.gp-mco-bar__btn { font-size: 14px !important; }
}

/* ============================================================
   v2.24 — email capture + shop grid lab badge
   ============================================================ */

/* ---------- Shop grid lab badge ---------- */
.gp-labbadge {
	display: inline-block;
	margin: 6px 0 2px;
	padding: 4px 9px;
	border: 1px solid var(--gp-border);
	border-radius: 999px;
	background: var(--gp-surface);
	font-family: var(--gp-font);
	font-size: 11px;
	font-weight: 500;
	line-height: 1.4;
	letter-spacing: .01em;
	color: var(--gp-muted);
	white-space: nowrap;
	max-width: 100%;
	overflow: hidden;
	text-overflow: ellipsis;
}
/* A real measured figure earns stronger treatment than
   "report available" — the number is the trust asset. */
.gp-labbadge--figure {
	color: var(--gp-dark);
	font-weight: 600;
	border-color: var(--gp-dark);
	background: transparent;
}

/* ---------- Footer signup block ---------- */
.gp-signup--footer { margin: 18px 0 0; max-width: 340px; }
.gp-signup__title {
	font-family: var(--gp-font);
	font-size: 14px;
	font-weight: 600;
	margin: 0 0 6px;
	color: inherit;
}
.gp-signup__body {
	font-family: var(--gp-font);
	font-size: 13px;
	line-height: 1.55;
	margin: 0 0 10px;
	opacity: .85;
}
.gp-signup__fine {
	font-family: var(--gp-font);
	font-size: 11px;
	line-height: 1.5;
	margin: 8px 0 0;
	opacity: .6;
}
/* WPForms ships its own layout; contain it rather than restyle it. */
.gp-signup__form .wpforms-container,
.gp-signup__form .wpforms-form { margin: 0 !important; }
.gp-signup__form .wpforms-field { padding: 0 0 8px !important; }
.gp-signup__form .wpforms-field-label { display: none !important; }
.gp-signup__form input[type="email"],
.gp-signup__form input[type="text"] {
	width: 100% !important;
	max-width: 100% !important;
	box-sizing: border-box !important;
	min-height: 44px !important;
	border: 1px solid var(--gp-border) !important;
	border-radius: 10px !important;
	padding: 10px 12px !important;
	font-family: var(--gp-font) !important;
	font-size: 14px !important;
}
.gp-signup__form button[type="submit"],
.gp-signup__form .wpforms-submit {
	text-align: center !important;
	width: 100% !important;
	min-height: 44px !important;
	border: 0 !important;
	border-radius: var(--gp-btn-radius) !important;
	background: var(--gp-dark) !important;
	color: var(--gp-light) !important;
	font-family: var(--gp-font) !important;
	font-size: 14px !important;
	font-weight: 600 !important;
	text-transform: none !important;
	letter-spacing: normal !important;
	cursor: pointer;
}

/* ---------- Signup popup ---------- */
.gp-signup-modal { display: block; }
.gp-signup-modal[hidden] { display: none !important; }
.gp-signup-modal__backdrop {
	position: fixed; inset: 0;
	background: rgba(0, 0, 0, .45);
	opacity: 0;
	transition: opacity .2s ease;
	/* Below the cart drawer (9998/9999) and far below the age
	   gate (999999) — a marketing modal must never cover either. */
	z-index: 9980;
}
.gp-signup-modal__panel {
	position: fixed;
	z-index: 9981;
	background: var(--gp-light);
	border-radius: var(--gp-radius);
	box-shadow: 0 24px 60px rgba(0, 0, 0, .28);
	padding: 30px 28px 24px;
	font-family: var(--gp-font);
	opacity: 0;
	transition: opacity .22s ease, transform .22s ease;
}
.gp-signup-modal.is-open .gp-signup-modal__backdrop { opacity: 1; }
.gp-signup-modal.is-open .gp-signup-modal__panel { opacity: 1; }

/* Desktop: centred card, deliberately not full-bleed. */
@media (min-width: 901px) {
	.gp-signup-modal__panel {
		top: 50%; left: 50%;
		width: min(440px, calc(100vw - 40px));
		transform: translate(-50%, -46%);
	}
	.gp-signup-modal.is-open .gp-signup-modal__panel { transform: translate(-50%, -50%); }
}

/* Mobile: bottom sheet. The audit flags the main site's
   full-screen instant takeover as a defect; this is the
   opposite of that — it slides up from the bottom, leaves the
   page visible above it, and never covers the whole viewport. */
@media (max-width: 900px) {
	.gp-signup-modal__panel {
		left: 0; right: 0; bottom: 0;
		width: 100%;
		max-height: 82vh;
		overflow-y: auto;
		border-radius: var(--gp-radius) var(--gp-radius) 0 0;
		padding: 24px 20px calc(20px + env(safe-area-inset-bottom, 0px));
		transform: translateY(100%);
	}
	.gp-signup-modal.is-open .gp-signup-modal__panel { transform: translateY(0); }
}

.gp-signup-modal__close {
	position: absolute;
	top: 10px; right: 12px;
	background: transparent !important;
	border: 0 !important;
	box-shadow: none !important;
	font-size: 26px !important;
	line-height: 1 !important;
	color: var(--gp-muted) !important;
	cursor: pointer;
	padding: 6px !important;
	min-width: 44px;
	min-height: 44px;
}
.gp-signup-modal__title {
	font-size: 20px;
	font-weight: 600;
	margin: 0 0 8px;
	padding-right: 32px;
	color: var(--gp-dark);
}
.gp-signup-modal__body {
	font-size: 14px;
	line-height: 1.6;
	margin: 0 0 16px;
	color: var(--gp-muted);
}
.gp-signup-modal__fine {
	font-size: 11px;
	line-height: 1.5;
	margin: 10px 0 0;
	color: var(--gp-muted);
	opacity: .8;
}
/* Plain text, not a guilt-trip. The audit calls out
   "No thanks, I want to pay full price" on the other site. */
.gp-signup-modal__decline {
	display: block;
	width: 100%;
	margin: 12px 0 0;
	background: transparent !important;
	border: 0 !important;
	box-shadow: none !important;
	font-family: var(--gp-font) !important;
	font-size: 13px !important;
	color: var(--gp-muted) !important;
	text-decoration: underline;
	cursor: pointer;
	min-height: 44px;
	/* A full-width <button> inherits the theme's left-aligned button
	   text rule, which left-hangs the label. Same fix as
	   .gp-drawer__btn above. */
	text-align: center !important;
	padding: 0 !important;
}
.gp-signup-modal__form .wpforms-container,
.gp-signup-modal__form .wpforms-form { margin: 0 !important; }
.gp-signup-modal__form .wpforms-field { padding: 0 0 10px !important; }
.gp-signup-modal__form .wpforms-field-label { display: none !important; }
.gp-signup-modal__form input[type="email"],
.gp-signup-modal__form input[type="text"] {
	width: 100% !important;
	box-sizing: border-box !important;
	min-height: 48px !important;
	border: 1px solid var(--gp-border) !important;
	border-radius: 10px !important;
	padding: 12px 14px !important;
	font-family: var(--gp-font) !important;
	/* 16px: anything smaller makes iOS zoom the viewport on focus. */
	font-size: 16px !important;
}
.gp-signup-modal__form button[type="submit"],
.gp-signup-modal__form .wpforms-submit {
	text-align: center !important;
	width: 100% !important;
	min-height: 48px !important;
	border: 0 !important;
	border-radius: var(--gp-btn-radius) !important;
	background: var(--gp-dark) !important;
	color: var(--gp-light) !important;
	font-family: var(--gp-font) !important;
	font-size: 15px !important;
	font-weight: 600 !important;
	text-transform: none !important;
	letter-spacing: normal !important;
	cursor: pointer;
}
