/* Gencore Global — WooCommerce visual layer.
   Product (single) and Cart are full template overrides that consume the
   --gc-woo-* Customizer variables (see style.css / GC Shop section). Archive,
   notices, my-account and mini-cart continue to restyle WooCommerce's own
   markup. Nothing the GC Shop controls owns is hardcoded below — it reads vars. */

.woocommerce-page-wrap {
	max-width: var(--gc-woo-max, var(--gc-container, 1312px));
	margin-inline: auto;
	background: var(--gc-woo-bg);
	/* Top padding clears the sticky, overlaying site header. */
	padding: var(--gc-woo-top-pad, 145px) var(--gc-woo-x-pad, 64px) 80px;
}
@media (max-width: 640px) {
	.woocommerce-page-wrap { padding: calc(var(--gc-woo-top-pad, 145px) - 24px) 20px 64px; }
}

/* Shop / archive grid ---------------------------------------------------- */
.woocommerce ul.products {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 24px;
	list-style: none;
	margin: 0 0 40px;
	padding: 0;
}
/* WooCommerce's clearfix pseudo-elements would otherwise become grid items,
   eating the first and last cells (empty leading gap). Remove them. */
.woocommerce ul.products::before,
.woocommerce ul.products::after {
	content: none;
	display: none;
}
.woocommerce ul.products li.product {
	position: relative;
	display: flex;
	flex-direction: column;
	background: var(--gc-white);
	border-radius: var(--gc-radius-md);
	box-shadow: var(--gc-shadow-card);
	overflow: hidden;
	padding: 0;
	transition: transform 0.25s ease, box-shadow 0.25s ease;
	/* Neutralise WooCommerce's float/column-width math so cards fill the
	   CSS grid track (its .columns-N rules outrank ours on specificity). */
	width: auto !important;
	margin: 0 !important;
	float: none !important;
	clear: none !important;
}
.woocommerce ul.products li.product:hover {
	transform: translateY(-6px);
	box-shadow: 0 18px 40px -18px rgba(20, 33, 43, 0.35);
}
/* Image sits in a fixed-ratio frame so cards stay uniform and images fill it. */
.woocommerce ul.products li.product > a:first-child { overflow: hidden; }
.woocommerce ul.products li.product img {
	width: 100%;
	height: var(--gc-woo-card-img-height, 280px);
	object-fit: cover;
	background: linear-gradient(-128deg, var(--gc-blue-light) 15%, var(--gc-bg) 85%);
	border-radius: 0;
	transition: transform 0.5s ease;
}
.woocommerce ul.products li.product:hover img { transform: scale(1.06); }
.woocommerce ul.products li.product .woocommerce-loop-product__title {
	font-family: var(--gc-font-heading);
	font-size: 17px;
	font-weight: 700;
	padding: 20px 20px 0;
	color: var(--gc-ink);
}
.woocommerce ul.products li.product .price {
	padding: 4px 20px 0;
	font-family: var(--gc-font-heading);
	font-weight: 800;
	color: var(--gc-ink);
}
.woocommerce ul.products li.product .price ins { text-decoration: none; }
.woocommerce ul.products li.product .price del { color: var(--gc-muted); font-weight: 400; margin-right: 6px; }
.woocommerce ul.products li.product .star-rating { margin: 8px 20px 0; }
.woocommerce ul.products li.product .button {
	margin: 16px 20px 20px;
	margin-top: auto;    /* anchor every card's button to the bottom edge */
	width: calc(100% - 40px);
	background: var(--gc-woo-primary);
	color: var(--gc-woo-primary-text);
	border: none;
	border-radius: var(--gc-radius-pill);
	padding: 12px 20px;
	font-family: var(--gc-woo-font-body);
	font-weight: 600;
	text-align: center;
	text-decoration: none;
}
/* "Learn More" link styled as the primary card button. */
.woocommerce ul.products li.product .gc-learn-more:hover {
	filter: brightness(0.94);
	color: var(--gc-woo-primary-text);
}
.woocommerce ul.products li.product .button:hover { filter: brightness(0.94); color: var(--gc-woo-primary-text); }
.woocommerce ul.products li.product .added_to_cart {
	margin: 0 20px 20px;
	color: var(--gc-woo-primary);
	font-weight: 600;
}
.woocommerce ul.products li.product .onsale {
	position: absolute;
	top: 16px;
	left: 16px;
	right: auto;    /* WooCommerce core pins right:0; unset it so the pill hugs its content */
	bottom: auto;
	width: auto;
	margin: 0;
	padding: 6px 14px;
	border-radius: var(--gc-radius-pill);
	background: var(--gc-accent);
	color: var(--gc-white);
	font-size: 12px;
	font-weight: 700;
	line-height: normal;
	min-height: 0;
	min-width: 0;
	box-shadow: 0 6px 16px -6px rgba(242, 153, 74, 0.7);
	z-index: 3;
}
.woocommerce ul.products li.product a { position: static; display: block; color: inherit; }

.star-rating { color: var(--gc-accent); }
.star-rating::before { color: var(--gc-blue-light); }
.star-rating span::before { color: var(--gc-accent); }

.gc-woo-icon { width: 1em; height: 1em; display: inline-block; vertical-align: middle; }

/* ==========================================================================
   Single product (Pencil Product Page Template)
   ========================================================================== */
.gc-product { display: flex; flex-direction: column; }
.gc-product-breadcrumb { margin-bottom: 8px; }
.gc-product-breadcrumb .woocommerce-breadcrumb {
	font-family: var(--gc-woo-font-body);
	font-size: 13px;
	color: var(--gc-woo-text);
	margin: 0;
}
.gc-product-breadcrumb .woocommerce-breadcrumb a { color: var(--gc-woo-text); }
.gc-product-breadcrumb .woocommerce-breadcrumb a:hover { color: var(--gc-woo-primary); }

.gc-product-main {
	position: relative;
	display: flex;
	align-items: flex-start;
	gap: var(--gc-woo-col-gap, 48px);
	padding: var(--gc-woo-y-pad, 32px) 0;
}
@media (max-width: 900px) {
	.gc-product-main { flex-direction: column; }
}

/* Floating reviews ------------------------------------------------------- */
/* Cards parked in the margins beside the product. Waiting for the viewport to
   be wide enough on its own would mean showing them on ultrawide only, so where
   there is room to spare the product column pulls in and makes the margin
   instead. :has() keeps that narrowing tied to a product that actually has
   reviews, so a product with none is not left oddly narrow for no reason. */
@media (min-width: 1360px) {
	.gc-product:has(.gc-floatrev) { --gc-pcol: 880px; }
	.gc-product:has(.gc-floatrev) .gc-product-main {
		max-width: var(--gc-pcol);
		margin-inline: auto;
	}
	/* The tabs run wider than the product column: the reviews grid needs the
	   room, and nothing floats beside them. The explicit width matters: auto
	   inline margins on a flex item cancel the stretch, so without it the tabs
	   size to whichever panel is open and the page jumps on every tab change. */
	.gc-product:has(.gc-floatrev) .woocommerce-tabs {
		width: 100%;
		max-width: min(100%, calc(var(--gc-pcol) + 240px));
		margin-inline: auto;
	}
}
@media (min-width: 1600px) { .gc-product:has(.gc-floatrev) { --gc-pcol: 940px; } }
@media (min-width: 1900px) { .gc-product:has(.gc-floatrev) { --gc-pcol: 1020px; } }

.gc-floatrev { display: none; }
@media (min-width: 1360px) {
	.gc-floatrev {
		display: block;
		position: absolute;
		inset: 0;
		pointer-events: none;
	}
	.gc-floatrev__card {
		position: absolute;
		/* Centred in its margin: the leftover space each side of the column is
		   (viewport - column) / 2, so sitting the card half that distance out,
		   less half its own width, puts its middle on the middle of the gap. */
		--gc-fr-w: clamp(190px, 14vw, 230px);
		--gc-fr-inset: calc(((100vw - 100%) / 2 - var(--gc-fr-w)) / 2);
		width: var(--gc-fr-w);
		margin: 0;
		padding: 14px 16px 15px;
		border: 1px solid var(--gc-woo-border);
		border-radius: var(--gc-radius-md, 16px);
		background: var(--gc-white, #fff);
		/* Two shadows: a wide soft one for the lift off the page, and a tight one
		   under the card so the edge still reads against a white background. */
		box-shadow: 0 30px 56px -22px rgba(20, 33, 43, .5), 0 4px 12px -6px rgba(20, 33, 43, .18);
		opacity: 1;
		/* Travel and tilt are tokens, so the float can be dialled in one place. */
		--gc-fr-float: 15px;
		--gc-fr-tilt: 0deg;
		animation: gc-floatrev-drift 7s ease-in-out infinite alternate;
	}
	/* Two a side, offset vertically so they read as scattered notes rather than
	   a column, and staggered so the drift never moves in lockstep. */
	.gc-floatrev__card--1 { top: 4%;  right: calc(100% + var(--gc-fr-inset)); animation-delay: 0s;    --gc-fr-tilt: -1.4deg; }
	.gc-floatrev__card--2 { top: 52%; right: calc(100% + var(--gc-fr-inset)); animation-delay: -2.4s; --gc-fr-tilt: 1.1deg; }
	.gc-floatrev__card--3 { top: 16%; left: calc(100% + var(--gc-fr-inset));  animation-delay: -1.2s; --gc-fr-tilt: 1.5deg; }
	.gc-floatrev__card--4 { top: 64%; left: calc(100% + var(--gc-fr-inset));  animation-delay: -3.6s; --gc-fr-tilt: -1deg; }

	.gc-floatrev__stars { display: inline-flex; gap: 2px; margin-bottom: 8px; }
	.gc-floatrev__pip { display: flex; width: 12px; height: 12px; }
	.gc-floatrev__pip svg { width: 100%; height: 100%; }
	.gc-floatrev__pip.is-on { color: var(--gc-woo-accent); }
	.gc-floatrev__pip.is-off { color: var(--gc-woo-border); }
	.gc-floatrev__text {
		margin: 0;
		font-family: var(--gc-woo-font-body);
		font-size: 12.5px;
		line-height: 1.5;
		color: var(--gc-ink, #14212B);
	}
	.gc-floatrev__by {
		display: flex;
		align-items: center;
		flex-wrap: wrap;
		gap: 6px;
		margin-top: 10px;
		font-family: var(--gc-woo-font-body);
		font-size: 11px;
		color: var(--gc-muted, #5A6B75);
	}
	.gc-floatrev__name { font-weight: 700; color: var(--gc-ink, #14212B); }
	.gc-floatrev__tick {
		padding: 2px 7px;
		border-radius: var(--gc-radius-pill, 999px);
		background: var(--gc-blue-light, #EAF3FA);
		color: var(--gc-blue-dark, #3D82B3);
		font-size: 10px;
		font-weight: 700;
		letter-spacing: .03em;
	}
}
@keyframes gc-floatrev-drift {
	from { transform: translateY(calc(var(--gc-fr-float, 15px) * -1)) rotate(var(--gc-fr-tilt, 0deg)); }
	to { transform: translateY(var(--gc-fr-float, 15px)) rotate(var(--gc-fr-tilt, 0deg)); }
}
@media (prefers-reduced-motion: reduce) {
	/* No drift, but keep the tilt so the cards still read as pinned notes. */
	.gc-floatrev__card { animation: none; transform: rotate(var(--gc-fr-tilt, 0deg)); }
}

/* Gallery ---------------------------------------------------------------- */
.gc-gallery {
	position: relative;
	flex: 0 0 var(--gc-woo-gallery-size, 520px);
	max-width: var(--gc-woo-gallery-size, 520px);
	width: 100%;
}
@media (max-width: 900px) { .gc-gallery { flex-basis: auto; max-width: 100%; } }

/* Override WooCommerce core's `.woocommerce div.product .woocommerce-product-gallery
   { width:48% }` (higher specificity than a single class) so the gallery fills
   the full 520px stage instead of collapsing to ~250px. */
.woocommerce div.product .gc-gallery .woocommerce-product-gallery,
.gc-gallery .woocommerce-product-gallery { position: relative; margin: 0; float: none; width: 100%; }
.gc-gallery .woocommerce-product-gallery__wrapper { margin: 0; width: 100%; }
/* Square stage that the image always fills, so galleries look full even when a
   product only has the WooCommerce placeholder. */
.gc-gallery .woocommerce-product-gallery__image {
	border-radius: var(--gc-radius-md);
	overflow: hidden;
	aspect-ratio: 1 / 1;
	width: 100%;
	background: var(--gc-woo-surface);
}
/* Filled by absolute inset, not by height: 100%. The stage's height comes from its
   aspect-ratio, and a percentage height does not resolve against a ratio-derived
   height: it falls back to auto. That made a portrait product photo render at its
   own ratio (518x692 in a 520px square), overflow the stage and get its base clipped
   by the overflow: hidden above, which read as the product sitting wrong in the
   frame. Absolute inset resolves against the stage's used size, so it always fits. */
.gc-gallery .woocommerce-product-gallery__image { position: relative; }
.gc-gallery .woocommerce-product-gallery__image a {
	position: absolute;
	inset: 0;
	display: block;
}
/* `contain` by default, not `cover`. The stage is forced square, so cover slices
   the top and bottom off a portrait product shot: a tall pouch or bottle loses its
   base and reads as sitting wrong in the frame rather than as cropped. Contain fits
   the whole product inside the square and centres it, with the stage surface showing
   around it. Switchable per site under Customizer > GC Product > Gallery image fit. */
/* :not(.zoomImg) matters. WooCommerce's zoom injects a second, larger <img>
   (.zoomImg) sized in inline pixels and panned on hover. Forcing every image in
   here to 100% with !important shrank that copy to the stage size, so there was
   nothing left to magnify and hover-zoom did nothing. */
.gc-gallery .woocommerce-product-gallery__image img:not(.zoomImg) {
	border-radius: var(--gc-radius-md);
	display: block;
	position: absolute;
	inset: 0;
	width: 100% !important;    /* WC gallery JS sets an inline pixel width */
	height: 100% !important;   /* and an inline height attribute */
	object-fit: var(--gc-woo-gallery-fit, contain);
	object-position: center;
}
/* The zoom copy keeps the size and offsets the plugin gives it; only the
   corners are clipped so it stays inside the rounded stage. */
.gc-gallery .woocommerce-product-gallery__image .zoomImg {
	border-radius: var(--gc-radius-md);
	object-fit: cover;
}
.gc-gallery .flex-viewport { border-radius: var(--gc-radius-md); width: 100%; }

/* Gradient frame on the stage (togglable via body.gc-woo-gradient). */
body.gc-woo-gradient .gc-gallery .woocommerce-product-gallery__image:first-of-type,
body.gc-woo-gradient .gc-gallery .flex-viewport {
	border: 1.5px solid transparent;
	border-radius: var(--gc-radius-md);
	background-image: linear-gradient(var(--gc-woo-bg), var(--gc-woo-bg)), linear-gradient(-135deg, var(--gc-woo-primary), var(--gc-woo-accent));
	background-origin: border-box;
	background-clip: padding-box, border-box;
}

/* WooCommerce's own zoom trigger stays hidden. The rating chip sits in the corner the
   badge used to occupy, so the badge is gone rather than stacked underneath it. */
.gc-gallery .woocommerce-product-gallery__trigger { display: none; }
.gc-gallery__counter {
	position: absolute;
	bottom: 16px;
	left: 16px;
	padding: 6px 12px;
	background: rgba(14, 42, 59, 0.7);
	color: #fff;
	border-radius: var(--gc-radius-pill);
	font-family: var(--gc-woo-font-body);
	font-size: 12px;
	font-weight: 600;
	pointer-events: none;
	z-index: 2;
}
/* Thumbnails. WooCommerce ships `.woocommerce div.product div.images
   .flex-control-thumbs li { width: 25%; float: left }`, which out-specifies a
   plain .gc-gallery rule: the 25% resolved against the rail and left 22px
   squares. Every rule here is doubled at that specificity so the theme wins. */
.gc-gallery .flex-control-thumbs,
.woocommerce div.product .gc-gallery .flex-control-thumbs {
	display: flex;
	flex-wrap: wrap;
	gap: var(--gc-woo-thumb-gap, 12px);
	margin: var(--gc-woo-thumb-gap, 12px) 0 0;
	padding: 0;
	list-style: none;
}
/* !important because WooCommerce's own rule carries one more element selector
   and so wins the specificity tiebreak outright: its 25% width resolved against
   the rail and left 22px squares. */
.gc-gallery .flex-control-thumbs li,
.woocommerce div.product .gc-gallery .flex-control-thumbs li {
	width: var(--gc-woo-thumb-size, 88px) !important;
	height: var(--gc-woo-thumb-size, 88px) !important;
	margin: 0 !important;
	padding: 0;
	float: none !important;
	list-style: none;
}
.gc-gallery .flex-control-thumbs img,
.woocommerce div.product .gc-gallery .flex-control-thumbs img {
	display: block;
	width: 100% !important;
	height: 100% !important;
	object-fit: cover;
	border-radius: var(--gc-radius-sm);
	border: 2px solid transparent;
	background: var(--gc-woo-surface);
	opacity: 1;
	cursor: pointer;
	transition: border-color .2s ease, transform .2s ease, opacity .2s ease;
}
/* Resting thumbnails sit back so the selected one reads as selected. */
.gc-gallery .flex-control-thumbs img,
.woocommerce div.product .gc-gallery .flex-control-thumbs img { opacity: .62; }
.gc-gallery .flex-control-thumbs img.flex-active,
.gc-gallery .flex-control-thumbs img:hover,
.woocommerce div.product .gc-gallery .flex-control-thumbs img.flex-active,
.woocommerce div.product .gc-gallery .flex-control-thumbs img:hover {
	border-color: var(--gc-woo-primary);
	opacity: 1;
}
.gc-gallery .flex-control-thumbs img:hover,
.woocommerce div.product .gc-gallery .flex-control-thumbs img:hover { transform: translateY(-2px); }
.gc-gallery .flex-control-thumbs img:hover { transform: translateY(-2px); }

/* Thumbnail rail to the left of the stage. The rail's width is added to the
   gallery column so the main image keeps the size set in the Customizer. */
.gc-gallery--thumbs-left {
	flex-basis: calc(var(--gc-woo-gallery-size, 520px) + var(--gc-woo-thumb-size, 88px) + var(--gc-woo-thumb-gap, 12px));
	max-width: calc(var(--gc-woo-gallery-size, 520px) + var(--gc-woo-thumb-size, 88px) + var(--gc-woo-thumb-gap, 12px));
}
.woocommerce div.product .gc-gallery--thumbs-left .woocommerce-product-gallery,
.gc-gallery--thumbs-left .woocommerce-product-gallery {
	display: flex;
	align-items: flex-start;
	gap: var(--gc-woo-thumb-gap, 12px);
}
.gc-gallery--thumbs-left .flex-control-thumbs {
	order: -1;
	flex: 0 0 var(--gc-woo-thumb-size, 88px);
	flex-direction: column;
	flex-wrap: nowrap;
	margin: 0;
	max-height: var(--gc-woo-gallery-size, 520px);
	overflow-y: auto;
	scrollbar-width: none;
}
.gc-gallery--thumbs-left .flex-control-thumbs::-webkit-scrollbar { display: none; }
.gc-gallery--thumbs-left .flex-viewport,
.gc-gallery--thumbs-left .woocommerce-product-gallery__wrapper { flex: 1 1 auto; min-width: 0; }
/* The counter is pinned to the gallery column, so shift it past the rail to stay
   on the image. */
.gc-gallery--thumbs-left .gc-gallery__counter { left: calc(var(--gc-woo-thumb-size, 88px) + var(--gc-woo-thumb-gap, 12px) + 16px); }
/* Same for the badge layer. It fills the gallery column, which here includes the
   rail, so a left-anchored badge (the tab) lands on the first thumbnail instead
   of the image. Pulling its left edge in to the stage puts every badge back over
   the main image; the right-anchored ribbon is unaffected either way. */
.gc-gallery--thumbs-left .gc-badges { left: calc(var(--gc-woo-thumb-size, 88px) + var(--gc-woo-thumb-gap, 12px)); }

@media (max-width: 900px) {
	.gc-gallery--thumbs-left { flex-basis: auto; max-width: 100%; }
}
@media (max-width: 640px) {
	.woocommerce div.product .gc-gallery--thumbs-left .woocommerce-product-gallery,
	.gc-gallery--thumbs-left .woocommerce-product-gallery { display: block; }
	.gc-gallery--thumbs-left .flex-control-thumbs {
		flex-direction: row;
		flex-wrap: wrap;
		max-height: none;
		margin-top: var(--gc-woo-thumb-gap, 12px);
	}
	.gc-gallery--thumbs-left .gc-gallery__counter { left: 16px; }
}

/* Info column ------------------------------------------------------------ */
.gc-product-info {
	flex: 1 1 0;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 12px;
}
.gc-product-info::before,
.gc-product-info::after { display: none; }

.gc-product-eyebrow {
	text-transform: uppercase;
	letter-spacing: 0.05em;
	font-family: var(--gc-woo-font-body);
	font-size: 12px;
	font-weight: 600;
	color: var(--gc-woo-primary);
}
.gc-product-title {
	font-family: var(--gc-woo-font-heading);
	font-size: var(--gc-woo-title-size, 32px);
	font-weight: 800;
	line-height: 1.18;
	color: var(--gc-woo-heading);
	margin: 0;
}
.gc-rating-row { display: flex; align-items: center; gap: 8px; }
.gc-stars { display: inline-flex; gap: 2px; }
.gc-star { display: inline-flex; }
.gc-star svg { width: 15px; height: 15px; }
.gc-star.is-on { color: var(--gc-woo-accent); }
.gc-star.is-off { color: var(--gc-woo-border); }
.gc-review-link { font-family: var(--gc-woo-font-body); font-size: 13px; color: var(--gc-woo-primary); }

.gc-price-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.gc-price-current {
	font-family: var(--gc-woo-font-heading);
	font-size: var(--gc-woo-price-size, 26px);
	font-weight: 800;
	color: var(--gc-woo-price);
}
.gc-price-current del { color: var(--gc-woo-text); font-weight: 400; font-size: 0.62em; margin-right: 6px; }
.gc-price-current ins { text-decoration: none; }
.gc-price-original { color: var(--gc-woo-text); font-size: 15px; text-decoration: line-through; }
.gc-sale-pill {
	background: var(--gc-woo-sale-bg);
	color: var(--gc-woo-sale-text);
	border-radius: var(--gc-radius-pill);
	padding: 6px 14px;
	font-family: var(--gc-woo-font-body);
	font-size: 12px;
	font-weight: 700;
}
.gc-product-excerpt {
	font-family: var(--gc-woo-font-body);
	font-size: 14px;
	line-height: 1.57;
	color: var(--gc-woo-text);
}
.gc-product-excerpt p { margin: 0 0 8px; }
.gc-product-divider { height: 1px; background: var(--gc-woo-border); margin: 8px 0; }

/* Size / variation pills (progressive enhancement of the variations form) */
.gc-size-block { display: flex; flex-direction: column; gap: 10px; margin-bottom: 4px; }
.gc-size-block__label { font-family: var(--gc-woo-font-body); font-size: 13px; font-weight: 600; color: var(--gc-woo-heading); }
.gc-size-options { display: flex; flex-wrap: wrap; gap: 8px; }
.gc-size-pill {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	background: var(--gc-woo-surface);
	color: var(--gc-woo-heading);
	border: none;
	border-radius: var(--gc-radius-pill);
	padding: 10px 16px;
	font-family: var(--gc-woo-font-body);
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
}
.gc-size-pill .gc-woo-icon { width: 14px; height: 14px; }
.gc-size-pill.is-active { background: var(--gc-woo-pill-active); color: #fff; }

/* Add-to-cart form as the actions row */
.woocommerce div.product form.cart {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	margin: 4px 0 8px;
}
.woocommerce div.product form.cart .variations { margin: 0; border: none; }
/* Native variations hidden once JS renders pills. */
.woocommerce div.product form.cart.gc-pills-ready .variations,
.woocommerce div.product form.cart.gc-pills-ready .reset_variations { display: none; }
.woocommerce div.product form.cart .single_variation_wrap { flex-basis: 100%; }
.woocommerce div.product form.cart .woocommerce-variation-add-to-cart {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
}
.woocommerce div.product form.cart .single_variation .price {
	font-family: var(--gc-woo-font-heading);
	font-weight: 800;
	color: var(--gc-woo-price);
	margin-bottom: 8px;
}
.woocommerce div.product form.cart .single_add_to_cart_button,
.woocommerce div.product form.cart .button {
	flex: 1 1 auto;
	background: var(--gc-woo-primary);
	color: var(--gc-woo-primary-text);
	border: none;
	border-radius: var(--gc-radius-pill);
	box-shadow: var(--gc-shadow-button);
	padding: 12px 24px;
	font-family: var(--gc-woo-font-body);
	font-size: 14px;
	font-weight: 600;
	cursor: pointer;
}
.woocommerce div.product form.cart .single_add_to_cart_button:hover,
.woocommerce div.product form.cart .button:hover { filter: brightness(0.94); color: var(--gc-woo-primary-text); }

/* Meta rows */
.gc-product-meta { display: flex; flex-direction: column; gap: 4px; }
.gc-meta-row { font-family: var(--gc-woo-font-body); font-size: 12px; color: var(--gc-woo-text); display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.gc-meta-key { font-weight: 600; }
.gc-meta-row a { color: var(--gc-woo-text); }
.gc-meta-tags .gc-tag {
	background: var(--gc-woo-surface);
	border-radius: var(--gc-radius-pill);
	padding: 3px 10px;
	font-size: 11px;
	font-weight: 500;
	color: var(--gc-woo-text);
}

/* Trust row */
.gc-trust-row { display: flex; flex-wrap: wrap; gap: 24px; padding-top: 12px; }
.gc-trust-item { display: flex; align-items: center; gap: 6px; font-family: var(--gc-woo-font-body); font-size: 12px; font-weight: 500; color: var(--gc-woo-text); }
.gc-trust-item .gc-woo-icon { width: 16px; height: 16px; color: var(--gc-woo-primary); }

/* Tabs (blue underline indicator) */
.gc-product .woocommerce-tabs { margin-top: 16px; }
.woocommerce-tabs ul.wc-tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 48px;
	border-bottom: 1px solid var(--gc-woo-border);
	margin: 0 0 24px;
	padding: 0;
}
.woocommerce-tabs ul.wc-tabs::before { display: none; }
/* Kill WooCommerce core's grey pill chrome on tab items (higher specificity). */
.woocommerce div.product .woocommerce-tabs ul.tabs li,
.woocommerce-tabs ul.wc-tabs li {
	background: none;
	border: none;
	border-radius: 0;
	margin: 0;
	padding: 0;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after,
.woocommerce-tabs ul.wc-tabs li::before,
.woocommerce-tabs ul.wc-tabs li::after { display: none; content: none; }
.woocommerce div.product .woocommerce-tabs ul.tabs li a,
.woocommerce-tabs ul.wc-tabs li a {
	display: block;
	padding: 0 0 12px;
	color: var(--gc-woo-text);
	font-family: var(--gc-woo-font-body);
	font-weight: 500;
	font-size: 14px;
	border-bottom: 2px solid transparent;
	margin-bottom: -1px;
	transition: color 0.15s ease, border-color 0.15s ease;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover { color: var(--gc-woo-heading); }
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a,
.woocommerce-tabs ul.wc-tabs li.active a { color: var(--gc-woo-heading); font-weight: 700; border-bottom-color: var(--gc-woo-primary); }
/* Phones: one scrolling row rather than a wrapped block. Wrapped, the list's own hairline
   sat below the second line while the active underline stayed up on the first, so the two
   read as unrelated rules across the page instead of as a tab strip. */
@media (max-width: 700px) {
	.woocommerce div.product .woocommerce-tabs ul.tabs,
	.woocommerce-tabs ul.wc-tabs {
		flex-wrap: nowrap;
		gap: 22px;
		overflow-x: auto;
		overflow-y: hidden;
		scroll-snap-type: x proximity;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
		margin-bottom: 20px;
	}
	.woocommerce div.product .woocommerce-tabs ul.tabs::-webkit-scrollbar,
	.woocommerce-tabs ul.wc-tabs::-webkit-scrollbar { display: none; }
	.woocommerce div.product .woocommerce-tabs ul.tabs li,
	.woocommerce-tabs ul.wc-tabs li { flex: 0 0 auto; scroll-snap-align: start; }
	.woocommerce div.product .woocommerce-tabs ul.tabs li a,
	.woocommerce-tabs ul.wc-tabs li a { white-space: nowrap; font-size: 13.5px; padding-bottom: 11px; }
}

/* Every panel occupies the same box, so switching tabs never reflows the page.
   The min-height holds the shortest panel (a two row spec list) open to roughly
   the height of a typical description, and any table fills the width rather than
   shrink-wrapping, which is what made Additional information look narrow next to
   Ingredients. */
.woocommerce-tabs .panel {
	width: 100%;
	min-height: var(--gc-woo-tab-min, 320px);
	color: var(--gc-woo-text);
	line-height: 1.7;
	font-family: var(--gc-woo-font-body);
}
.woocommerce-tabs .panel > table,
.woocommerce-tabs .panel .woocommerce-product-attributes,
.woocommerce-tabs .panel .shop_attributes { width: 100%; }
.woocommerce-tabs .panel .woocommerce-product-attributes th,
.woocommerce-tabs .panel .shop_attributes th { width: 220px; text-align: left; }
.woocommerce-tabs .panel h2 { font-size: 1.25rem; font-family: var(--gc-woo-font-heading); font-weight: 800; color: var(--gc-woo-heading); margin: 0 0 12px; }
.woocommerce-tabs .panel p { margin: 0 0 12px; }

@media (max-width: 700px) {
	.woocommerce-tabs .panel h2 { font-size: 1.15rem; }
	.gc-ptab > h2 { font-size: 1.15rem; }
	.woocommerce-tabs .panel { min-height: var(--gc-woo-tab-min-sm, 220px); }
	.woocommerce-tabs .panel .woocommerce-product-attributes th,
	.woocommerce-tabs .panel .shop_attributes th { width: auto; }
}

/* Reviews tab — align with the brand system. */
.woocommerce #reviews #comments { margin-bottom: 24px; }
.woocommerce #reviews h2.woocommerce-Reviews-title { font-family: var(--gc-woo-font-heading); font-weight: 800; font-size: 1.25rem; color: var(--gc-woo-heading); margin: 0 0 16px; }
/* Two up rather than one long column: a review is short, so a single stack
   wastes the width and pushes the form far down the page.

   Every rule below carries .gc-product on top of WooCommerce's own
   `.woocommerce #reviews #comments ol.commentlist` prefix. WooCommerce styles
   these at two IDs deep, which outranks anything shorter no matter what order
   the stylesheets load in, so matching its depth and adding one class is what
   makes these win outright rather than by luck. */
.woocommerce .gc-product #reviews #comments ol.commentlist {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: 1fr;
	gap: 16px;
}
/* WooCommerce clears floats with generated content on this list. On a grid
   container those pseudo-elements become grid items and eat the first and last
   cell, which is what knocked every card one place out of step. */
.woocommerce .gc-product #reviews #comments ol.commentlist::before,
.woocommerce .gc-product #reviews #comments ol.commentlist::after {
	content: none;
	display: none;
}
@media (min-width: 900px) {
	.woocommerce .gc-product #reviews #comments ol.commentlist {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 18px;
	}
}
.woocommerce .gc-product #reviews #comments ol.commentlist li.review,
.woocommerce .gc-product #reviews #comments ol.commentlist li.comment {
	margin: 0;
	background: var(--gc-woo-card);
	border: 1px solid var(--gc-woo-border);
	border-radius: var(--gc-woo-card-radius, 16px);
	padding: 18px 20px 20px;
	box-shadow: 0 18px 38px -30px rgba(20, 33, 43, .5);
	transition: border-color .25s ease, box-shadow .25s ease, transform .25s ease;
}
.woocommerce .gc-product #reviews #comments ol.commentlist li.review:hover {
	border-color: rgba(91, 167, 219, .45);
	box-shadow: 0 22px 42px -26px rgba(91, 167, 219, .45);
	transform: translateY(-2px);
}
/* Avatar in flow beside the copy rather than absolutely placed against the row,
   and the score pinned to the top corner so every card reads the same way down
   the grid however long the quote runs. */
.woocommerce .gc-product #reviews #comments ol.commentlist li .comment_container {
	display: flex;
	align-items: flex-start;
	gap: 13px;
	background: none;
	border: 0;
	padding: 0;
}
.woocommerce .gc-product #reviews #comments ol.commentlist li img.avatar {
	position: static;
	float: none;
	width: 38px;
	height: 38px;
	flex: none;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--gc-blue-light, #EAF3FA);
	box-shadow: none;
}
.woocommerce .gc-product #reviews #comments ol.commentlist li .comment-text {
	position: relative;
	flex: 1;
	min-width: 0;
	margin: 0;
	border: 0;
	border-radius: 0;
	padding: 0;
}
.woocommerce .gc-product #reviews #comments ol.commentlist li .comment-text .star-rating {
	position: absolute;
	top: 3px;
	right: 0;
	margin: 0;
	font-size: 13px;
}
.woocommerce .gc-product #reviews #comments ol.commentlist li .comment-text p.meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 7px;
	margin: 0 0 8px;
	padding-right: 86px;
	font-size: 12.5px;
	color: var(--gc-muted, #5A6B75);
}
.woocommerce .gc-product #reviews #comments ol.commentlist li .woocommerce-review__author {
	font-family: var(--gc-woo-font-heading);
	font-weight: 700;
	font-size: 13.5px;
	color: var(--gc-woo-heading);
}
/* A pill, matching the floating cards, instead of parenthesised italics. */
.woocommerce .gc-product #reviews #comments ol.commentlist li .woocommerce-review__verified {
	padding: 2px 8px;
	border-radius: var(--gc-radius-pill, 999px);
	background: var(--gc-blue-light, #EAF3FA);
	color: var(--gc-blue-dark, #3D82B3);
	font-size: 10px;
	font-style: normal;
	font-weight: 700;
	letter-spacing: .03em;
	text-transform: uppercase;
}
.woocommerce .gc-product #reviews #comments ol.commentlist li .woocommerce-review__dash { display: none; }
.woocommerce .gc-product #reviews #comments ol.commentlist li .woocommerce-review__published-date { font-size: 11.5px; }
.woocommerce .gc-product #reviews #comments ol.commentlist li .description {
	font-size: 13.5px;
	line-height: 1.6;
	color: var(--gc-ink, #14212B);
}
.woocommerce .gc-product #reviews #comments ol.commentlist li .description p:last-child { margin-bottom: 0; }
@media (prefers-reduced-motion: reduce) {
	.woocommerce .gc-product #reviews #comments ol.commentlist li.review { transition: none; }
	.woocommerce .gc-product #reviews #comments ol.commentlist li.review:hover { transform: none; }
}
.woocommerce #reviews .woocommerce-noreviews {
	background: var(--gc-woo-surface);
	color: var(--gc-woo-text);
	border-radius: var(--gc-radius-sm);
	padding: 14px 18px;
	margin: 0 0 20px;
}
.woocommerce #review_form #respond .comment-reply-title { font-family: var(--gc-woo-font-heading); font-weight: 700; font-size: 1rem; color: var(--gc-woo-heading); display: block; margin-bottom: 12px; }
.woocommerce #review_form .comment-form-rating .stars a { color: var(--gc-woo-accent); }
.woocommerce #review_form .comment-form label { font-family: var(--gc-woo-font-body); font-size: 13px; font-weight: 600; color: var(--gc-woo-heading); }
.woocommerce #review_form .comment-form input:not([type="submit"]),
.woocommerce #review_form .comment-form textarea {
	width: 100%;
	background: var(--gc-woo-card);
	border: 1px solid var(--gc-woo-border);
	border-radius: var(--gc-radius-sm);
	padding: 12px;
	font-family: var(--gc-woo-font-body);
	font-size: 14px;
	color: var(--gc-woo-heading);
	margin-top: 6px;
}
.woocommerce #review_form .comment-form input:focus,
.woocommerce #review_form .comment-form textarea:focus { outline: none; box-shadow: 0 0 0 2px var(--gc-blue-light); border-color: var(--gc-woo-primary); }
.woocommerce #review_form .comment-form .form-submit input#submit,
.woocommerce #review_form .comment-form input.submit {
	background: var(--gc-woo-primary);
	color: var(--gc-woo-primary-text);
	border: none;
	border-radius: var(--gc-radius-pill);
	box-shadow: var(--gc-shadow-button);
	padding: 12px 28px;
	font-family: var(--gc-woo-font-body);
	font-weight: 600;
	cursor: pointer;
	transition: filter 0.15s ease;
}
.woocommerce #review_form .comment-form .form-submit input#submit:hover { filter: brightness(0.94); }

/* ==========================================================================
   Quantity stepper pill (shared: product + cart)
   ========================================================================== */
.gc-cart-item__qty .quantity,
.woocommerce div.product form.cart .quantity {
	display: inline-flex;
	align-items: center;
	background: var(--gc-woo-surface);
	border-radius: var(--gc-radius-pill);
	padding: 0;
	margin: 0;
}
.gc-cart-item__qty .quantity input.qty,
.woocommerce div.product form.cart .quantity input.qty {
	width: 40px;
	padding: 0;
	border: none;
	background: transparent;
	text-align: center;
	font-family: var(--gc-woo-font-body);
	font-size: 13px;
	font-weight: 600;
	color: var(--gc-woo-heading);
	-moz-appearance: textfield;
	appearance: textfield;
}
.gc-cart-item__qty .quantity input.qty::-webkit-outer-spin-button,
.gc-cart-item__qty .quantity input.qty::-webkit-inner-spin-button,
.woocommerce div.product form.cart .quantity input.qty::-webkit-outer-spin-button,
.woocommerce div.product form.cart .quantity input.qty::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}
.gc-qty-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: transparent;
	color: var(--gc-woo-heading);
	cursor: pointer;
	transition: background 0.15s ease;
}
.gc-cart-item__qty .gc-qty-btn { width: 32px; height: 32px; }
.gc-qty-btn:hover { background: var(--gc-woo-card); }
.gc-qty-btn svg { width: 12px; height: 12px; }

/* ==========================================================================
   Cart (Pencil Cart Page Template)
   ========================================================================== */
.woocommerce-cart .gc-container,
.woocommerce-cart .woocommerce-page-wrap,
.woocommerce-cart .elementor-widget-container > .woocommerce {
	padding-inline: var(--gc-cart-x-pad, 72px);
}
@media (max-width: 640px) {
	.woocommerce-cart .gc-container,
	.woocommerce-cart .woocommerce-page-wrap,
	.woocommerce-cart .elementor-widget-container > .woocommerce {
		padding-inline: var(--gc-cart-x-pad-m, 24px);
	}
}

.gc-cart-head { margin-bottom: 8px; }
.gc-cart-head__title { font-family: var(--gc-woo-font-heading); font-size: var(--gc-woo-cart-title-size, 30px); font-weight: 800; color: var(--gc-woo-heading); margin: 0 0 4px; }
.gc-cart-head__sub { color: var(--gc-woo-text); font-family: var(--gc-woo-font-body); font-size: 14px; margin: 0; }

.gc-cart-body {
	display: flex;
	align-items: flex-start;
	gap: var(--gc-woo-col-gap, 48px);
	padding-top: 16px;
}
.gc-cart-body .gc-cart-form { flex: 1 1 0; min-width: 0; margin: 0; }
.gc-cart-body .cart-collaterals { flex: 0 0 var(--gc-woo-summary-width, 360px); width: var(--gc-woo-summary-width, 360px); float: none; margin: 0; }
.gc-cart-body .cart-collaterals .cart_totals { width: 100%; float: none; }

.gc-cart-items { display: flex; flex-direction: column; gap: 12px; }
.gc-cart-item {
	display: flex;
	align-items: center;
	gap: 24px;
	padding: var(--gc-woo-card-pad, 12px);
	background: var(--gc-woo-card);
	border-radius: var(--gc-woo-card-radius, 16px);
	box-shadow: 0 6px 18px -10px rgba(20, 33, 43, 0.12);
}
.gc-cart-items--alt .gc-cart-item.is-alt { background: var(--gc-woo-card-alt); }
.gc-cart-item__thumb { flex: none; width: var(--gc-woo-cart-thumb, 88px); height: var(--gc-woo-cart-thumb, 88px); }
.gc-cart-item__thumb img {
	width: var(--gc-woo-cart-thumb, 88px);
	height: var(--gc-woo-cart-thumb, 88px);
	object-fit: cover;
	border-radius: var(--gc-radius-sm);
	display: block;
}
body.gc-woo-gradient .gc-cart-item__thumb img {
	border: 1.5px solid transparent;
	background-image: linear-gradient(var(--gc-woo-card), var(--gc-woo-card)), linear-gradient(-135deg, var(--gc-woo-primary), var(--gc-woo-accent));
	background-origin: border-box;
	background-clip: padding-box, border-box;
}
.gc-cart-item__info { flex: 1 1 auto; display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.gc-cart-item__name { font-family: var(--gc-woo-font-heading); font-size: 15px; font-weight: 700; line-height: 1.3; }
.gc-cart-item__name a { color: var(--gc-woo-heading); text-decoration: none; }
.gc-cart-item__name a:hover { color: var(--gc-woo-primary); }
.gc-cart-item__meta { color: var(--gc-woo-text); font-family: var(--gc-woo-font-body); font-size: 12px; }
.gc-cart-item__remove a.remove {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	color: var(--gc-woo-sale-text);
	font-family: var(--gc-woo-font-body);
	font-size: 12px;
	text-decoration: none;
	margin-top: 2px;
}
/* Beat WooCommerce core's `.woocommerce a.remove:hover { color:#fff !important }`. */
.woocommerce .gc-cart-item__remove a.remove:hover,
.gc-cart-item__remove a.remove:hover { color: #000 !important; background: none !important; opacity: 1; }
.gc-cart-item__remove a.remove .gc-woo-icon { width: 13px; height: 13px; }
.gc-cart-item__qty { flex: none; }
.gc-cart-item__price {
	flex: none;
	width: 80px;
	text-align: right;
	font-family: var(--gc-woo-font-heading);
	font-size: 16px;
	font-weight: 800;
	color: var(--gc-woo-price);
}
.gc-cart-item__price .amount { font-weight: 800; }
.gc-cart-actions { display: none; }

/* Order Summary card ----------------------------------------------------- */
.gc-order-summary {
	background: var(--gc-woo-summary-bg);
	border-radius: var(--gc-woo-card-radius, 16px);
	padding: 24px;
	display: flex;
	flex-direction: column;
	gap: 20px;
}
.gc-summary-title { font-family: var(--gc-woo-font-heading); font-size: 17px; font-weight: 800; color: var(--gc-woo-heading); margin: 0; }
.gc-summary-line { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.gc-summary-label { color: var(--gc-woo-text); font-family: var(--gc-woo-font-body); font-size: 14px; }
.gc-summary-value { color: var(--gc-woo-heading); font-family: var(--gc-woo-font-body); font-size: 14px; font-weight: 600; }
.gc-summary-value .amount { font-weight: 600; }
.cart-discount .gc-summary-value { color: var(--gc-woo-primary); }

/* Free-shipping progress bar */
.gc-ship-bar { display: flex; flex-direction: column; gap: 6px; }
.gc-ship-bar__label { display: flex; align-items: center; gap: 6px; font-family: var(--gc-woo-font-body); font-size: 12px; font-weight: 600; color: var(--gc-woo-primary); }
.gc-ship-bar__label .gc-woo-icon { width: 13px; height: 13px; color: var(--gc-woo-accent); }
.gc-ship-bar__track { height: 5px; background: var(--gc-woo-border); border-radius: var(--gc-radius-pill); overflow: hidden; }
.gc-ship-bar__fill { height: 100%; border-radius: var(--gc-radius-pill); background: linear-gradient(90deg, var(--gc-woo-accent), var(--gc-woo-primary)); transition: width 0.3s ease; }

.gc-promo-row { display: flex; gap: 8px; align-items: stretch; margin: 0; }
.gc-promo-input {
	flex: 1 1 auto;
	background: var(--gc-woo-card);
	border: 1px solid var(--gc-woo-border);
	border-radius: var(--gc-radius-sm);
	padding: 12px;
	font-family: var(--gc-woo-font-body);
	font-size: 13px;
	color: var(--gc-woo-heading);
	min-width: 0;
}
.gc-promo-input::placeholder { color: var(--gc-woo-text); }
.gc-promo-apply {
	flex: none;
	border: none;
	cursor: pointer;
	background: var(--gc-blue-light);
	color: var(--gc-woo-primary);
	border-radius: var(--gc-radius-pill);
	padding: 10px 20px;
	font-family: var(--gc-woo-font-body);
	font-size: 14px;
	font-weight: 600;
}
.gc-promo-apply:hover { filter: brightness(0.96); }

.gc-summary-divider { height: 1px; background: var(--gc-woo-border); }
.gc-summary-total { align-items: center; }
.gc-summary-total-label { font-family: var(--gc-woo-font-heading); font-size: 16px; font-weight: 800; color: var(--gc-woo-heading); }
.gc-summary-total-value { font-family: var(--gc-woo-font-heading); font-size: var(--gc-woo-total-size, 22px); font-weight: 800; color: var(--gc-woo-price); }
.gc-summary-total-value .amount { font-weight: 800; }

.gc-order-summary .wc-proceed-to-checkout { padding: 0; margin: 0; }
.woocommerce .gc-order-summary .wc-proceed-to-checkout a.checkout-button {
	display: block;
	width: 100%;
	text-align: center;
	background: var(--gc-woo-primary);
	color: var(--gc-woo-primary-text);
	border-radius: var(--gc-radius-pill);
	box-shadow: var(--gc-shadow-button);
	padding: 12px 20px;
	font-family: var(--gc-woo-font-body);
	font-size: 14px;
	font-weight: 600;
	margin: 0;
}
.woocommerce .gc-order-summary .wc-proceed-to-checkout a.checkout-button:hover { filter: brightness(0.94); color: var(--gc-woo-primary-text); }
.gc-secure-row { display: flex; align-items: center; justify-content: center; gap: 6px; color: var(--gc-woo-text); font-family: var(--gc-woo-font-body); font-size: 12px; }
.gc-secure-row .gc-woo-icon { width: 14px; height: 14px; }

/* ==========================================================================
   Notices, checkout, my-account, mini-cart (restyle WC markup)
   ========================================================================== */
.woocommerce-checkout #payment,
.woocommerce-checkout-review-order {
	background: var(--gc-bg);
	border-radius: var(--gc-radius-md);
	padding: 24px;
}
.woocommerce-checkout #payment div.payment_box { background: var(--gc-white); border-radius: var(--gc-radius-sm); }

.woocommerce-message, .woocommerce-info, .woocommerce-error, .woocommerce-noreviews {
	display: flex;
	align-items: center;
	gap: 12px;
	list-style: none;
	padding: 16px 20px;
	margin: 0 0 24px;
	border: 0;
	outline: 0;
	border-radius: var(--gc-radius-sm);
	background: var(--gc-blue-light);
	color: var(--gc-blue-dark);
}
.woocommerce-message::before, .woocommerce-info::before, .woocommerce-error::before, .woocommerce-noreviews::before { display: none; }
.woocommerce-message .button,
.woocommerce-info .button,
.woocommerce-info .woocommerce-Button {
	margin-left: auto;
	background: var(--gc-blue);
	color: var(--gc-white);
	border-radius: var(--gc-radius-pill);
	padding: 8px 18px;
	font-size: 13px;
	font-weight: 600;
}
.woocommerce-info .button:hover,
.woocommerce-info .woocommerce-Button:hover { filter: brightness(0.94); color: var(--gc-white); }
.woocommerce-error { background: var(--gc-warm-bg); color: var(--gc-warm-text); }
.woocommerce-error li, .woocommerce-message li, .woocommerce-info li { list-style: none; }

/* My Account — centered login card + top tab-bar dashboard --------------- */

/* The overlaying sticky header pulls the content up under it, so the account
   view needs its own breathing room.
   Scoped on the body class as well as .entry-content: assigning the account
   page an Elementor full-width template renders the shortcode with no page.php
   wrapper at all, so an .entry-content-only selector misses entirely. When that
   happened the whole block sat 140px under the header, hiding the account
   navigation behind it completely. */
.woocommerce-account .entry-content > .woocommerce,
.woocommerce-account .elementor-widget-container > .woocommerce,
body.woocommerce-account > .woocommerce {
	margin-top: 56px;
	max-width: 960px;
	margin-inline: auto;
}

/* Logged-out: login/register form as a small centered card, not full width.
   `.woocommerce-account` is a class ON body, not an ancestor of it — a
   `body:not(.logged-in) .woocommerce-account` descendant selector can never
   match, so both classes must land on the same compound body selector. */
body.woocommerce-account:not(.logged-in) .entry-content > .woocommerce,
body.woocommerce-account:not(.logged-in) .elementor-widget-container > .woocommerce,
body.woocommerce-account:not(.logged-in) > .woocommerce {
	max-width: 400px;
	background: var(--gc-white);
	border: 1px solid var(--gc-woo-border, #E1E9EE);
	border-radius: var(--gc-radius-md);
	box-shadow: var(--gc-shadow-card);
	padding: 32px;
}
body.woocommerce-account:not(.logged-in) .entry-content > .woocommerce h2,
body.woocommerce-account:not(.logged-in) .elementor-widget-container > .woocommerce h2,
body.woocommerce-account:not(.logged-in) > .woocommerce h2 {
	font-family: var(--gc-font-heading);
	font-size: 22px;
	font-weight: 800;
	color: var(--gc-ink);
	margin: 0 0 20px;
}
@media (max-width: 480px) {
	body.woocommerce-account:not(.logged-in) .entry-content > .woocommerce,
	body.woocommerce-account:not(.logged-in) .elementor-widget-container > .woocommerce,
	body.woocommerce-account:not(.logged-in) > .woocommerce { padding: 24px 20px; }
}

/* Shared form styling (login + register share these classes). WC core puts
   its own border/padding/margin on form.login and form.register — strip
   that so it doesn't create a second box nested inside our card. */
.woocommerce-account form.login,
.woocommerce-account form.register {
	border: 0;
	padding: 0;
	margin: 0;
	border-radius: 0;
}
.woocommerce-account .woocommerce-form-row { margin: 0 0 18px; }
.woocommerce-account .woocommerce-form-row--first { float: left; width: calc(50% - 10px); clear: left; }
.woocommerce-account .woocommerce-form-row--last { float: right; width: calc(50% - 10px); }
.woocommerce-account .clear { clear: both; }
@media (max-width: 480px) {
	.woocommerce-account .woocommerce-form-row--first,
	.woocommerce-account .woocommerce-form-row--last { float: none; width: 100%; }
}
.woocommerce-account .woocommerce-form-row em { font-style: normal; display: block; margin-top: 6px; font-size: 12px; color: var(--gc-muted); }
.woocommerce-account .woocommerce-form-row label,
.woocommerce-account .woocommerce-form-login__rememberme {
	font-family: var(--gc-font-body);
	font-size: 14px;
	color: var(--gc-ink);
}
.woocommerce-account .woocommerce-form-row label {
	display: block;
	font-weight: 600;
	margin: 0 0 6px;
}
.woocommerce-account .woocommerce-form-row .required { color: var(--gc-accent); text-decoration: none; }
.woocommerce-account input.woocommerce-Input {
	width: 100%;
	padding: 12px 14px;
	border: 1px solid var(--gc-woo-border, #E1E9EE);
	border-radius: var(--gc-radius-sm);
	font-family: var(--gc-font-body);
	font-size: 15px;
	color: var(--gc-ink);
	background: var(--gc-white);
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.woocommerce-account input.woocommerce-Input:focus {
	outline: none;
	border-color: var(--gc-blue);
	box-shadow: 0 0 0 3px var(--gc-blue-light);
}
.woocommerce-account p.form-row:has(.woocommerce-form-login__rememberme) {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 12px;
	margin: 0 0 20px;
}
.woocommerce-account .woocommerce-form-login__rememberme {
	display: flex;
	align-items: center;
	gap: 8px;
	color: var(--gc-muted);
}
.woocommerce-account button.woocommerce-Button {
	display: inline-block;
	padding: 12px 28px;
	background: linear-gradient(135deg, var(--gc-glider-start, #5BA7DB), var(--gc-glider-end, #6EC1E4));
	color: var(--gc-white);
	border: 0;
	border-radius: var(--gc-radius-pill);
	box-shadow: var(--gc-shadow-button);
	font-family: var(--gc-font-body);
	font-size: 14px;
	font-weight: 700;
	cursor: pointer;
	transition: filter 0.15s ease, transform 0.12s ease;
}
.woocommerce-account button.woocommerce-Button:hover { filter: brightness(0.94); }
.woocommerce-account button.woocommerce-Button:active { transform: scale(0.99); }
.woocommerce-account button.woocommerce-form-login__submit { text-align: center; }
.woocommerce-account .woocommerce-LostPassword {
	margin: 16px 0 0;
	text-align: center;
	font-family: var(--gc-font-body);
	font-size: 14px;
}
.woocommerce-account .entry-content a { color: var(--gc-blue-dark); }
.woocommerce-account .woocommerce-LostPassword a:hover { text-decoration: underline; }

/* Logged-in dashboard: top centered tab bar instead of the side menu. */
.woocommerce-account .woocommerce-MyAccount-navigation {
	float: none;
	width: 100%;
	margin: 0 0 32px;
}
.woocommerce-account .woocommerce-MyAccount-navigation ul {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 6px;
	margin: 0 auto;
	padding: 6px;
	width: fit-content;
	max-width: 100%;
	background: var(--gc-white);
	border-radius: var(--gc-radius-pill);
	box-shadow: var(--gc-shadow-pill);
}
.woocommerce-account .woocommerce-MyAccount-navigation a {
	display: block;
	padding: 10px 20px;
	border-radius: var(--gc-radius-pill);
	font-family: var(--gc-font-body);
	font-size: 14px;
	font-weight: 600;
	color: var(--gc-muted);
	white-space: nowrap;
	transition: color 0.2s ease, background 0.2s ease;
}
.woocommerce-account .woocommerce-MyAccount-navigation a:hover { color: var(--gc-blue-dark); background: var(--gc-blue-light); }
.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a {
	background: linear-gradient(135deg, var(--gc-glider-start, #5BA7DB), var(--gc-glider-end, #6EC1E4));
	color: var(--gc-white);
	box-shadow: var(--gc-shadow-button);
}
.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a:hover { color: var(--gc-white); }
.woocommerce-account .woocommerce-MyAccount-navigation-link--customer-logout a { color: var(--gc-warm-text); }
.woocommerce-account .woocommerce-MyAccount-navigation-link--customer-logout a:hover { background: var(--gc-warm-bg); color: var(--gc-warm-text); }

.woocommerce-account .woocommerce-MyAccount-content {
	float: none;
	width: 100%;
	margin: 0;
	background: var(--gc-white);
	border-radius: var(--gc-radius-md);
	box-shadow: var(--gc-shadow-card);
	padding: 40px;
}
@media (max-width: 640px) {
	.woocommerce-account .woocommerce-MyAccount-content { padding: 24px 20px; }
}
.woocommerce-account .woocommerce-MyAccount-content p { color: var(--gc-muted); line-height: 1.6; }
.woocommerce-account .woocommerce-MyAccount-content a { font-weight: 600; }

/* Orders / downloads tables. */
.woocommerce-account table.shop_table {
	width: 100%;
	border-collapse: collapse;
	margin: 0 0 24px;
	font-family: var(--gc-font-body);
	font-size: 14px;
}
.woocommerce-account table.shop_table th,
.woocommerce-account table.shop_table td { padding: 12px 16px; border-bottom: 1px solid var(--gc-woo-border, #E1E9EE); text-align: left; }
.woocommerce-account table.shop_table th { font-weight: 700; color: var(--gc-ink); }
.woocommerce-account table.shop_table td { color: var(--gc-muted); }
.woocommerce-account table.shop_table .button {
	display: inline-block;
	padding: 8px 16px;
	border-radius: var(--gc-radius-pill);
	background: var(--gc-blue);
	color: var(--gc-white);
	font-size: 13px;
	font-weight: 600;
}

/* Addresses. */
.woocommerce-account .woocommerce-Addresses { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 24px; }
/* WooCommerce core's .col2-set::before/::after clearfix (content:" ";
   display:table) becomes a real, invisible grid item once this is display:grid
   — eating the first track and shoving both cards right. Same failure mode
   already handled below for ul.products; kill it here too. */
.woocommerce-account .woocommerce-Addresses::before,
.woocommerce-account .woocommerce-Addresses::after { content: none; display: none; }
/* WooCommerce core's woocommerce-layout.css floats .col-1/.col-2 at width:48%
   (from the .col2-set system these elements also carry); grid ignores the
   float but not the explicit width, so it must be reset here. */
.woocommerce-account .woocommerce-Addresses .col-1,
.woocommerce-account .woocommerce-Addresses .col-2 { float: none; width: auto; }
.woocommerce-account .woocommerce-Address { background: var(--gc-bg); border-radius: var(--gc-radius-sm); padding: 24px; }
.woocommerce-account .woocommerce-Address-title { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; margin: 0 0 12px; }
.woocommerce-account .woocommerce-Address-title h2,
.woocommerce-account .woocommerce-Address-title h3 { font-family: var(--gc-font-heading); font-size: 16px; font-weight: 700; color: var(--gc-ink); margin: 0; }
.woocommerce-account .woocommerce-Address-title .edit {
	flex: none;
	padding: 6px 14px;
	border-radius: var(--gc-radius-pill);
	background: var(--gc-blue-light);
	color: var(--gc-blue-dark);
	font-size: 12px;
	font-weight: 600;
	white-space: nowrap;
}
.woocommerce-account .woocommerce-Address-title .edit:hover { background: var(--gc-blue); color: var(--gc-white); }
.woocommerce-account .woocommerce-Address address { font-style: normal; color: var(--gc-muted); line-height: 1.7; }

/* Edit-account fieldsets. */
.woocommerce-account fieldset { border: 1px solid var(--gc-woo-border, #E1E9EE); border-radius: var(--gc-radius-sm); padding: 20px; margin: 0 0 24px; }
.woocommerce-account fieldset legend { font-family: var(--gc-font-heading); font-weight: 700; color: var(--gc-ink); padding: 0 8px; }

.widget_shopping_cart_content ul.cart_list li { display: flex; gap: 12px; align-items: center; }
.widget_shopping_cart_content ul.cart_list img { width: 48px; height: 48px; object-fit: cover; border-radius: var(--gc-radius-sm); }

/* ==========================================================================
   Interactivity — add-to-cart feedback, toast, micro-motion
   ========================================================================== */

/* Loop add-to-cart button: press feedback + AJAX loading + added states. */
.woocommerce ul.products li.product .button {
	transition: filter 0.15s ease, transform 0.12s ease, background 0.2s ease;
}
.woocommerce ul.products li.product .button:active { transform: scale(0.97); }
.woocommerce ul.products li.product .button.loading {
	position: relative;
	color: transparent !important;
	pointer-events: none;
}
.woocommerce ul.products li.product .button.loading::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 16px;
	height: 16px;
	margin: -8px 0 0 -8px;
	border: 2px solid rgba(255, 255, 255, 0.5);
	border-top-color: #fff;
	border-radius: 50%;
	animation: gc-spin 0.6s linear infinite;
}
.woocommerce ul.products li.product .button.added {
	background: var(--gc-woo-accent);
}
@keyframes gc-spin { to { transform: rotate(360deg); } }

/* Add-to-cart toast (slides in from the bottom-right). */
.gc-toast-stack {
	position: fixed;
	right: 24px;
	bottom: 24px;
	z-index: 9999;
	display: flex;
	flex-direction: column;
	gap: 10px;
	pointer-events: none;
}
.gc-toast {
	display: flex;
	align-items: center;
	gap: 12px;
	min-width: 240px;
	max-width: 340px;
	padding: 14px 18px;
	background: var(--gc-woo-heading);
	color: #fff;
	border-radius: var(--gc-radius-md);
	box-shadow: 0 16px 40px -12px rgba(20, 33, 43, 0.5);
	font-family: var(--gc-woo-font-body);
	font-size: 14px;
	font-weight: 600;
	transform: translateY(20px);
	opacity: 0;
	transition: transform 0.3s cubic-bezier(0.2, 0.8, 0.2, 1), opacity 0.3s ease;
	pointer-events: auto;
}
.gc-toast.is-in { transform: translateY(0); opacity: 1; }
.gc-toast__icon {
	flex: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: var(--gc-woo-primary);
}
.gc-toast__icon .gc-woo-icon { width: 15px; height: 15px; color: #fff; }
.gc-toast a { color: var(--gc-woo-accent); margin-left: auto; font-size: 13px; }

/* Header cart-count bump when an item is added. */
.gc-cart-bump { animation: gc-bump 0.4s ease; }
@keyframes gc-bump { 0%,100% { transform: scale(1); } 40% { transform: scale(1.35); } }

/* Cart item removal fade-out. */
.gc-cart-item { transition: opacity 0.25s ease, transform 0.25s ease; }
.gc-cart-item.is-removing { opacity: 0; transform: translateX(12px); }

/* Product page add-to-cart button motion. */
.woocommerce div.product form.cart .single_add_to_cart_button {
	transition: filter 0.15s ease, transform 0.12s ease;
}
.woocommerce div.product form.cart .single_add_to_cart_button:active { transform: scale(0.98); }

/* Size pill motion. */
.gc-size-pill { transition: background 0.18s ease, color 0.18s ease, transform 0.12s ease; }
.gc-size-pill:hover { background: var(--gc-woo-border); }
.gc-size-pill:active { transform: scale(0.96); }

/* ==========================================================================
   Checkout (WooCommerce Blocks) — brand-pill button + tidy summary
   ========================================================================== */
.wc-block-components-checkout-place-order-button,
.wc-block-cart__submit-button,
.wp-block-woocommerce-checkout-order-summary-block ~ * .wc-block-components-button {
	border-radius: var(--gc-radius-pill) !important;
	background: var(--gc-woo-primary) !important;
	box-shadow: var(--gc-shadow-button);
	font-family: var(--gc-woo-font-body) !important;
	font-weight: 600 !important;
	transition: filter 0.15s ease, transform 0.12s ease;
}
.wc-block-components-checkout-place-order-button:hover,
.wc-block-cart__submit-button:hover { filter: brightness(0.94); }
.wc-block-components-checkout-place-order-button:active { transform: scale(0.99); }
/* Billing / contact fields — mirror the summary's promo-input style:
   light --gc-woo-border, soft --gc-radius-sm corners, card background. */
.woocommerce-checkout .wc-block-components-text-input input,
.woocommerce-checkout .wc-block-components-text-input textarea,
.woocommerce-checkout .wc-block-components-textarea,
.woocommerce-checkout .wc-block-components-select__container,
.woocommerce-checkout .wc-block-components-combobox .components-form-token-field__input-container,
.woocommerce-checkout .wc-block-components-combobox-control__input {
	border: 1px solid var(--gc-woo-border) !important;
	border-radius: var(--gc-radius-sm) !important;
	background: var(--gc-woo-card) !important;
	color: var(--gc-woo-heading) !important;
}
/* Consistent focus ring in brand blue. */
.woocommerce-checkout .wc-block-components-text-input input:focus,
.woocommerce-checkout .wc-block-components-text-input.is-active input,
.woocommerce-checkout .wc-block-components-select__container:focus-within,
.woocommerce-checkout .wc-block-components-combobox .components-form-token-field__input-container:focus-within {
	box-shadow: 0 0 0 2px var(--gc-blue-light) !important;
	border-color: var(--gc-woo-primary) !important;
	outline: none !important;
}
/* Floating labels: muted like the summary's labels. */
.woocommerce-checkout .wc-block-components-text-input label,
.woocommerce-checkout .wc-block-components-checkout-step__heading-content {
	color: var(--gc-woo-text);
	font-family: var(--gc-woo-font-body);
}
/* Section headings match the summary title. */
.woocommerce-checkout .wc-block-components-title,
.woocommerce-checkout .wc-block-components-checkout-step__title {
	font-family: var(--gc-woo-font-heading) !important;
	font-weight: 800 !important;
	color: var(--gc-woo-heading) !important;
}
.wc-block-checkout__sidebar .wc-block-components-totals-item__value { font-weight: 700; }
/* Centre the blocks checkout within the page instead of left-aligning it. */
.woocommerce-checkout .wp-block-woocommerce-checkout,
.woocommerce-checkout .wc-block-checkout {
	margin-left: auto;
	margin-right: auto;
}
/* Hide the long product description in the order-summary line items (checkout
   + cart blocks); keep name, variation and quantity. */
.wc-block-components-order-summary-item__description p,
.wc-block-components-order-summary-item__description .wc-block-components-product-metadata__description,
.wc-block-components-product-metadata__description {
	display: none !important;
}
/* Order-summary thumbnail size (Customizer: GC Checkout). */
.wc-block-components-order-summary-item__image,
.wc-block-components-order-summary-item__image img,
.wc-block-components-order-summary-item__image .wc-block-components-product-image {
	width: var(--gc-woo-checkout-thumb, 64px) !important;
	height: var(--gc-woo-checkout-thumb, 64px) !important;
}
.wc-block-components-order-summary-item__image img { object-fit: cover; border-radius: var(--gc-radius-sm); }

/* Responsive ------------------------------------------------------------- */
@media (max-width: 900px) {
	.gc-cart-body { flex-direction: column; }
	.gc-cart-body .cart-collaterals { flex-basis: auto; width: 100%; }
}
@media (max-width: 560px) {
	.gc-cart-item { flex-wrap: wrap; }
	.gc-cart-item__price { width: auto; }
	.gc-toast-stack { left: 16px; right: 16px; bottom: 16px; }
	.gc-toast { max-width: none; }
}
@media (prefers-reduced-motion: reduce) {
	.woocommerce ul.products li.product,
	.woocommerce ul.products li.product img,
	.gc-toast { transition: none; }
	.woocommerce ul.products li.product:hover { transform: none; }
	.woocommerce ul.products li.product:hover img { transform: none; }
}

/* Custom per-product tabs ------------------------------------------------
   Layouts built in Product data > Gencore > Custom product tabs. The table
   layout reuses .gc-ingredients__table above rather than restyling a second
   table, so every table on a product page matches. */
.gc-ptab > h2 {
	font-family: var(--gc-woo-font-heading, var(--gc-font-heading, "Manrope", sans-serif));
	color: var(--gc-woo-heading, #14212B);
	margin: 0 0 .6em;
}
.gc-ptab__text {
	color: var(--gc-woo-text, #5A6B75);
	font-family: var(--gc-woo-font-body, var(--gc-font-body, "Inter", sans-serif));
	line-height: 1.7;
}
.gc-ptab__text > :first-child { margin-top: 0; }
.gc-ptab__text > :last-child { margin-bottom: 0; }
.gc-ptab__text a { color: var(--gc-woo-primary, #5BA7DB); }

/* Columns: auto-fit rather than a fixed count, so 2, 3 or 4 columns all read
   evenly and collapse without a breakpoint per count. */
.gc-ptab__cols {
	display: grid;
	grid-template-columns: repeat(var(--gc-ptab-cols, 2), minmax(0, 1fr));
	gap: clamp(20px, 3vw, 44px);
}
.gc-ptab__col h3 {
	font-family: var(--gc-woo-font-heading, var(--gc-font-heading, "Manrope", sans-serif));
	font-size: 1.05rem;
	color: var(--gc-woo-heading, #14212B);
	margin: 0 0 .5em;
}

/* Spec list: label and value on one row with a hairline between, which reads
   better than a two-column table at this width. */
.gc-ptab__spec { margin: 0; }
.gc-ptab__spec-row {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 24px;
	padding: 12px 0;
	border-bottom: 1px solid var(--gc-woo-border, #E1E9EE);
}
.gc-ptab__spec-row:last-child { border-bottom: 0; }
.gc-ptab__spec dt {
	flex: 0 0 220px;
	max-width: 100%;
	margin: 0;
	font-family: var(--gc-woo-font-body, var(--gc-font-body, "Inter", sans-serif));
	font-weight: 600;
	color: var(--gc-woo-heading, #14212B);
}
.gc-ptab__spec dd {
	flex: 1 1 240px;
	margin: 0;
	color: var(--gc-woo-text, #5A6B75);
}

@media (max-width: 700px) {
	.gc-ptab__cols { grid-template-columns: minmax(0, 1fr); }
	.gc-ptab__spec dt { flex-basis: 100%; }
}

@media (max-width: 640px) {
	.woocommerce-account input.woocommerce-Input,
	.woocommerce #review_form .comment-form input:not([type="submit"]),
	.woocommerce #review_form .comment-form textarea,
	.woocommerce-checkout .wc-block-components-text-input input,
	.woocommerce-checkout .wc-block-components-text-input textarea,
	.woocommerce-checkout .wc-block-components-textarea { font-size: 16px; }
	.woocommerce form .show-password-input { width: 32px; height: 32px; background-position: center; }
}
