/**
 * GothamPeps :: WooCommerce
 *
 * Loaded only when WooCommerce is active. Styles core markup by its own
 * class names wherever possible so third-party extensions (variation
 * swatches, wishlists, quick view, brands) inherit the look for free.
 */

/* ==========================================================================
   Shop shell & notices
   ========================================================================== */

.woocommerce-breadcrumb { margin-bottom: 1.5rem; }

.gp-shop-toolbar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	margin-bottom: 1.75rem;
	padding-bottom: 1rem;
	border-bottom: 1px solid var(--gp-border);
}

.woocommerce-result-count {
	margin: 0;
	color: var(--gp-muted);
	font-size: .8125rem;
	letter-spacing: .04em;
}

.woocommerce-ordering { margin: 0; }
.woocommerce-ordering select { min-width: 220px; font-size: .8125rem; }

/* Filter toggle for the mobile sidebar. */
.gp-filter-toggle { display: inline-flex; }

@media (min-width: 1024px) { .gp-filter-toggle { display: none; } }

/* Notices ------------------------------------------------------------------ */

.woocommerce-message,
.woocommerce-info,
.woocommerce-error,
.woocommerce-noreviews,
p.no-comments {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .75rem 1rem;
	margin: 0 0 1.5rem;
	padding: 1rem 1.25rem;
	background: var(--gp-card);
	border: 1px solid var(--gp-border);
	border-left: 3px solid var(--gp-primary);
	border-radius: var(--gp-radius);
	color: var(--gp-body-color);
	font-size: .875rem;
	list-style: none;
}

.woocommerce-message { border-left-color: var(--gp-success); }
.woocommerce-error { border-left-color: var(--gp-error); flex-direction: column; align-items: flex-start; }
.woocommerce-error li { width: 100%; }

.woocommerce-message .button,
.woocommerce-info .button { margin-inline-start: auto; }

.woocommerce-NoticeGroup { margin-bottom: 1.5rem; }

/* WooCommerce buttons map onto the theme button. ---------------------------- */

.woocommerce #respond input#submit,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce .button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .5rem;
	padding: .8125rem 1.75rem;
	background: var(--gp-primary);
	border: 1px solid var(--gp-primary);
	border-radius: var(--gp-radius);
	color: var(--gp-btn-text);
	font-family: var(--gp-font-body);
	font-size: .75rem;
	font-weight: 600;
	letter-spacing: .08em;
	line-height: 1.2;
	text-transform: uppercase;
	text-decoration: none;
	cursor: pointer;
	transition: background-color var(--gp-speed) var(--gp-ease), color var(--gp-speed) var(--gp-ease), border-color var(--gp-speed) var(--gp-ease);
}

.woocommerce #respond input#submit:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce .button:hover {
	background: var(--gp-primary-hover);
	border-color: var(--gp-primary-hover);
	color: var(--gp-btn-text);
}

.woocommerce .button.alt,
.woocommerce #respond input#submit.alt,
.woocommerce button.button.alt {
	background: var(--gp-black);
	border-color: var(--gp-white);
	color: var(--gp-white);
}

.woocommerce .button.alt:hover,
.woocommerce #respond input#submit.alt:hover,
.woocommerce button.button.alt:hover {
	background: var(--gp-ink);
	border-color: var(--gp-ink);
	color: var(--gp-white);
}

.woocommerce .button:disabled,
.woocommerce .button.disabled { opacity: .5; cursor: not-allowed; }

.woocommerce .button.loading { opacity: .75; pointer-events: none; }

.woocommerce .button.loading::after {
	content: "";
	width: 1em;
	height: 1em;
	border: 2px solid currentColor;
	border-right-color: transparent;
	border-radius: 50%;
	animation: gp-spin .6s linear infinite;
}

/* Woo's own tick/spinner glyphs -- we supply our own. */
.woocommerce a.button.added::after,
.woocommerce button.button.added::after { content: "\2713"; margin-left: .25rem; }

/* ==========================================================================
   Product loop
   ========================================================================== */

.woocommerce ul.products,
ul.products {
	display: grid;
	gap: 1rem;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	margin: 0 0 2rem;
	padding: 0;
	list-style: none;
}

@media (min-width: 640px) { ul.products { gap: 1.5rem; } }

@media (min-width: 768px) {
	ul.products.columns-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	ul.products.columns-4,
	ul.products.columns-5,
	ul.products.columns-6 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (min-width: 1024px) {
	ul.products.columns-1 { grid-template-columns: minmax(0, 1fr); }
	ul.products.columns-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	ul.products.columns-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	ul.products.columns-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
	ul.products.columns-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}

/*
 * WooCommerce clears its old float layout with
 *   ul.products::before/::after { content:" "; display:table }
 * On a grid container a pseudo-element is a grid ITEM, so that clearfix
 * silently occupies the first cell and pushes every product along by one.
 * Removing the generated content is what puts the first product back in
 * column one.
 */
.woocommerce ul.products::before,
.woocommerce ul.products::after,
.woocommerce-page ul.products::before,
.woocommerce-page ul.products::after,
ul.products::before,
ul.products::after {
	content: none;
	display: none;
}

/* Woo ships float/width rules on li.product -- neutralise them for grid. */
.woocommerce ul.products li.product,
ul.products li.product {
	float: none !important;
	width: auto !important;
	margin: 0 !important;
	clear: none !important;
}

.woocommerce ul.products li.product,
ul.products li.product {
	position: relative;
	display: flex;
	flex-direction: column;
	padding: .75rem;
	background: var(--gp-card);
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	text-align: center;
	transition: box-shadow var(--gp-speed) var(--gp-ease), border-color var(--gp-speed) var(--gp-ease);
}

@media (min-width: 640px) { ul.products li.product { padding: 1rem; } }

ul.products li.product:hover { box-shadow: var(--gp-shadow); border-color: var(--gp-surface-2); }

.gp-product__media {
	position: relative;
	overflow: hidden;
	margin-bottom: 1rem;
	aspect-ratio: 1 / 1;
	background: #000000;
}

.gp-product__media img,
ul.products li.product img {
	width: 100%;
	height: 100%;
	margin: 0;
	object-fit: cover;
	transition: transform .5s var(--gp-ease), opacity var(--gp-speed) var(--gp-ease);
}

ul.products li.product:hover .gp-product__media img { transform: scale(1.06); }

/* Second gallery image crossfades in on hover. */
.gp-product__media-hover {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity var(--gp-speed) var(--gp-ease);
}

ul.products li.product:hover .gp-product__media-hover { opacity: 1; }

.woocommerce ul.products li.product .woocommerce-loop-product__title,
ul.products li.product h2,
ul.products li.product h3 {
	margin: 0 0 .5rem;
	padding: 0;
	color: var(--gp-heading-color);
	font-family: var(--gp-font-heading);
	font-size: 1rem;
	line-height: 1.35;
}

/*
 * Card links inherit the card's text colour, but not the add-to-cart button:
 * `ul.products li.product a` is (0,2,3) and would beat the button rule at
 * (0,2,1), leaving "Add to cart" with body text on a gold background.
 */
ul.products li.product a:not(.button) { color: inherit; }
ul.products li.product a:hover .woocommerce-loop-product__title { color: var(--gp-primary); }

.woocommerce ul.products li.product .price,
ul.products li.product .price {
	display: block;
	margin-bottom: .875rem;
	color: var(--gp-heading-color);
	font-size: 1rem;
	font-weight: 600;
}

ul.products li.product .price del { color: var(--gp-muted-light); font-weight: 400; margin-right: .375rem; }
ul.products li.product .price ins { text-decoration: none; color: var(--gp-primary); }

.woocommerce ul.products li.product .button { margin-top: auto; width: 100%; }

.gp-product__cat {
	display: block;
	margin-bottom: .375rem;
	color: var(--gp-muted-light);
	font-size: .625rem;
	letter-spacing: .12em;
	text-transform: uppercase;
}

.gp-product__excerpt { margin-bottom: .75rem; color: var(--gp-muted); font-size: .8125rem; }

/* Badges ------------------------------------------------------------------- */

.woocommerce span.onsale,
.gp-badge {
	position: absolute;
	top: .75rem;
	inset-inline-start: .75rem;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	min-height: 0;
	min-width: 0;
	margin: 0;
	padding: .25rem .625rem;
	background: var(--gp-primary);
	border-radius: var(--gp-radius);
	color: var(--gp-white);
	font-size: .625rem;
	font-weight: 700;
	letter-spacing: .08em;
	line-height: 1.4;
	text-transform: uppercase;
}

.gp-badge--out { background: var(--gp-muted); color: var(--gp-white); }
.gp-badge--new { background: var(--gp-ink); color: var(--gp-white); }

.gp-badge-stack {
	position: absolute;
	top: .75rem;
	inset-inline-start: .75rem;
	z-index: 2;
	display: flex;
	flex-direction: column;
	gap: .25rem;
	align-items: flex-start;
}

.gp-badge-stack .gp-badge,
.gp-badge-stack .onsale { position: static; }

/* Hover actions (wishlist / compare / quick view) --------------------------- */

.gp-product__actions {
	position: absolute;
	top: .75rem;
	inset-inline-end: .75rem;
	z-index: 2;
	display: flex;
	flex-direction: column;
	gap: .375rem;
	opacity: 0;
	transform: translateX(8px);
	transition: opacity var(--gp-speed) var(--gp-ease), transform var(--gp-speed) var(--gp-ease);
}

li.product:hover .gp-product__actions,
li.product:focus-within .gp-product__actions { opacity: 1; transform: none; }

/* Touch devices never get :hover -- show the actions permanently. */
@media (hover: none) {
	.gp-product__actions { opacity: 1; transform: none; }
}

.gp-product__action {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.125rem;
	height: 2.125rem;
	background: var(--gp-card);
	border: 1px solid var(--gp-border);
	border-radius: 50%;
	color: var(--gp-heading-color);
	cursor: pointer;
}

.gp-product__action:hover { background: var(--gp-primary); border-color: var(--gp-primary); color: var(--gp-white); }
.gp-product__action svg { width: 1rem; height: 1rem; }

/* Star rating -------------------------------------------------------------- */

.woocommerce .star-rating,
.woocommerce p.stars a {
	color: var(--gp-primary);
	font-family: star;
}

.woocommerce ul.products li.product .star-rating { margin: 0 auto .5rem; font-size: .8em; }

.gp-rating { display: inline-flex; align-items: center; gap: .25rem; margin-bottom: .5rem; }
.gp-rating__count { color: var(--gp-muted-light); font-size: .6875rem; }

/* ==========================================================================
   Single product
   ========================================================================== */

.woocommerce div.product { margin-bottom: 0; }

.gp-single-product { display: grid; gap: 2rem; }

@media (min-width: 900px) {
	.gp-single-product { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 3.5rem; }
}

.woocommerce div.product div.images,
.woocommerce div.product div.summary { float: none; width: auto; margin: 0; }

.woocommerce div.product div.images img { border-radius: var(--gp-radius); }

.woocommerce div.product div.images .flex-control-thumbs {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: .625rem;
	margin: .75rem 0 0;
	padding: 0;
	list-style: none;
}

.woocommerce div.product div.images .flex-control-thumbs li { float: none; width: auto; margin: 0; }

.woocommerce div.product div.images .flex-control-thumbs img {
	opacity: .6;
	border: 1px solid transparent;
	transition: opacity var(--gp-speed) var(--gp-ease), border-color var(--gp-speed) var(--gp-ease);
}

.woocommerce div.product div.images .flex-control-thumbs img:hover,
.woocommerce div.product div.images .flex-control-thumbs img.flex-active { opacity: 1; border-color: var(--gp-primary); }

.woocommerce div.product .product_title {
	margin-bottom: .75rem;
	font-size: clamp(1.75rem, 1.3rem + 1.6vw, 2.5rem);
}

.woocommerce div.product p.price,
.woocommerce div.product span.price {
	margin-bottom: 1.25rem;
	color: var(--gp-heading-color);
	font-family: var(--gp-font-heading);
	font-size: 1.75rem;
	font-weight: 500;
}

.woocommerce div.product p.price del { color: var(--gp-muted-light); font-size: 1.125rem; }
.woocommerce div.product p.price ins { text-decoration: none; color: var(--gp-primary); }

.woocommerce div.product .woocommerce-product-rating { display: flex; align-items: center; gap: .75rem; margin-bottom: 1rem; }
.woocommerce div.product .woocommerce-product-rating .woocommerce-review-link { color: var(--gp-muted); font-size: .8125rem; }

.woocommerce-product-details__short-description {
	margin-bottom: 1.5rem;
	padding-bottom: 1.5rem;
	border-bottom: 1px solid var(--gp-border);
	color: var(--gp-muted);
	font-size: .9375rem;
}

/* Quantity ----------------------------------------------------------------- */

.woocommerce div.product form.cart { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; margin-bottom: 1.5rem; }
.woocommerce div.product form.cart .variations { width: 100%; margin-bottom: .5rem; }
.woocommerce div.product form.cart div.quantity { float: none; margin: 0; }

.quantity {
	display: inline-flex;
	align-items: center;
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	background: var(--gp-card);
	overflow: hidden;
}

.quantity .gp-qty-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.5rem;
	height: 2.875rem;
	border: 0;
	background: none;
	color: var(--gp-heading-color);
	font-size: 1.125rem;
	line-height: 1;
	cursor: pointer;
}

.quantity .gp-qty-btn:hover { color: var(--gp-primary); }

.woocommerce .quantity .qty,
.quantity input.qty {
	width: 3rem;
	height: 2.875rem;
	padding: 0;
	border: 0;
	border-inline: 1px solid var(--gp-border);
	border-radius: 0;
	background: transparent;
	text-align: center;
	font-size: .9375rem;
	-moz-appearance: textfield;
}

.quantity input.qty::-webkit-outer-spin-button,
.quantity input.qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

.woocommerce div.product form.cart .button { flex: 1; min-width: 12rem; height: 2.875rem; }

/* Variations --------------------------------------------------------------- */

.woocommerce div.product form.cart .variations { border-collapse: separate; }
.woocommerce div.product form.cart .variations td,
.woocommerce div.product form.cart .variations th { padding: .375rem 0; border: 0; display: block; width: 100%; }
.woocommerce div.product form.cart .variations label { font-weight: 600; font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; }
.woocommerce div.product form.cart .reset_variations { font-size: .75rem; color: var(--gp-muted); }
.woocommerce div.product .woocommerce-variation-price { margin-bottom: 1rem; }

/* Meta & extras ------------------------------------------------------------ */

.product_meta {
	padding-top: 1.25rem;
	border-top: 1px solid var(--gp-border);
	color: var(--gp-muted);
	font-size: .8125rem;
}

.product_meta > span { display: block; margin-bottom: .375rem; }
.product_meta a { color: var(--gp-body-color); }
.product_meta a:hover { color: var(--gp-primary); }

.gp-product-usp { display: grid; gap: .875rem; margin: 1.5rem 0; }

.gp-product-usp__item { display: flex; align-items: center; gap: .75rem; font-size: .8125rem; color: var(--gp-muted); }
.gp-product-usp__item svg { width: 1.125rem; height: 1.125rem; color: var(--gp-primary); flex: none; }

/* Tabs --------------------------------------------------------------------- */

.woocommerce div.product .woocommerce-tabs { margin-top: 3rem; }

.woocommerce div.product .woocommerce-tabs ul.tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 0;
	margin: 0 0 1.75rem;
	padding: 0;
	border-bottom: 1px solid var(--gp-border);
	list-style: none;
}

.woocommerce div.product .woocommerce-tabs ul.tabs::before,
.woocommerce div.product .woocommerce-tabs ul.tabs::after,
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after { display: none; }

.woocommerce div.product .woocommerce-tabs ul.tabs li {
	margin: 0;
	padding: 0;
	background: none;
	border: 0;
	border-radius: 0;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li a {
	display: block;
	padding: .875rem 1.25rem;
	border-bottom: 2px solid transparent;
	color: var(--gp-muted);
	font-family: var(--gp-font-body);
	font-size: .75rem;
	font-weight: 600;
	letter-spacing: .1em;
	text-transform: uppercase;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li.active a,
.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover {
	border-bottom-color: var(--gp-primary);
	color: var(--gp-heading-color);
}

.woocommerce div.product .woocommerce-tabs .panel { margin: 0; padding: 0; max-width: 68rem; }
.woocommerce div.product .woocommerce-tabs .panel > h2:first-child { display: none; }

/* Reviews ------------------------------------------------------------------ */

.woocommerce #reviews #comments ol.commentlist { margin: 0 0 2rem; padding: 0; list-style: none; }
.woocommerce #reviews #comments ol.commentlist li { margin-bottom: 1.5rem; padding: 0; }

.woocommerce #reviews #comments ol.commentlist li .comment_container {
	display: flex;
	gap: 1rem;
	padding: 1.25rem;
	background: var(--gp-card);
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
}

.woocommerce #reviews #comments ol.commentlist li img.avatar {
	position: static;
	width: 3rem;
	height: 3rem;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: none;
	flex: none;
}

.woocommerce #reviews #comments ol.commentlist li .comment-text { margin: 0; padding: 0; border: 0; border-radius: 0; }
.woocommerce #review_form #respond { max-width: 44rem; }
.woocommerce p.stars a::before { color: var(--gp-primary); }

/* Related / upsells -------------------------------------------------------- */

.woocommerce .related,
.woocommerce .upsells,
.woocommerce .cross-sells {
	margin-top: 3.5rem;
	padding-top: 2.5rem;
	border-top: 1px solid var(--gp-border);
}

.woocommerce .related > h2,
.woocommerce .upsells > h2,
.woocommerce .cross-sells > h2 {
	margin-bottom: 1.75rem;
	font-size: 1.75rem;
}

/* Sticky add-to-cart bar (mobile) ------------------------------------------ */

.gp-sticky-atc {
	position: fixed;
	inset-inline: 0;
	bottom: 0;
	z-index: calc(var(--gp-z-mobilenav) + 1);
	display: flex;
	align-items: center;
	gap: .75rem;
	padding: .75rem var(--gp-gutter);
	padding-bottom: calc(.75rem + env(safe-area-inset-bottom, 0px));
	background: var(--gp-card);
	border-top: 1px solid var(--gp-border);
	box-shadow: var(--gp-shadow-nav);
	transform: translateY(100%);
	transition: transform var(--gp-speed) var(--gp-ease);
}

.gp-sticky-atc.gp-is-visible { transform: none; }
.gp-sticky-atc__img { width: 2.75rem; height: 2.75rem; object-fit: cover; flex: none; }
.gp-sticky-atc__info { min-width: 0; flex: 1; }
.gp-sticky-atc__title { display: block; font-size: .8125rem; font-weight: 600; color: var(--gp-heading-color); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gp-sticky-atc__price { font-size: .8125rem; color: var(--gp-primary); }
.gp-sticky-atc .gp-btn { flex: none; }

/* ==========================================================================
   Cart
   ========================================================================== */

.woocommerce table.shop_table {
	margin-bottom: 1.5rem;
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	border-collapse: separate;
	border-spacing: 0;
	background: var(--gp-card);
}

.woocommerce table.shop_table th { background: var(--gp-surface); font-size: .6875rem; }
.woocommerce table.shop_table td { padding: 1rem; vertical-align: middle; }
.woocommerce table.shop_table img { width: 64px; border-radius: var(--gp-radius); }

.woocommerce a.remove {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.5rem;
	height: 1.5rem;
	border-radius: 50%;
	background: var(--gp-surface-2);
	color: var(--gp-body-color) !important;
	font-size: 1rem;
	line-height: 1;
}

.woocommerce a.remove:hover { background: var(--gp-error); color: #fff !important; }

.woocommerce .cart-collaterals { display: grid; gap: 2rem; }

@media (min-width: 900px) {
	.gp-cart-layout { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 2.5rem; align-items: start; }
	.woocommerce .cart-collaterals { width: auto; }
}

.woocommerce .cart_totals,
.woocommerce-cart .cart-collaterals .cart_totals {
	width: auto;
	float: none;
	padding: 1.5rem;
	background: var(--gp-card);
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
}

.woocommerce .cart_totals h2 { font-size: 1.25rem; margin-bottom: 1rem; }
.woocommerce .cart_totals table { border: 0; background: none; }
.woocommerce .cart_totals table th { background: none; padding-inline: 0; }
.woocommerce .cart_totals table td { padding-inline: 0; text-align: right; }
.woocommerce .cart_totals .order-total .amount { color: var(--gp-heading-color); font-family: var(--gp-font-heading); font-size: 1.375rem; }
.woocommerce .wc-proceed-to-checkout { padding: 1rem 0 0; }
.woocommerce .wc-proceed-to-checkout a.checkout-button { display: flex; width: 100%; }

.woocommerce .coupon { display: flex; gap: .5rem; flex-wrap: wrap; }
.woocommerce .coupon input.input-text { flex: 1; min-width: 10rem; width: auto; }
.woocommerce table.cart td.actions { padding: 1rem; background: var(--gp-surface); }

.gp-cart-empty { padding: 3rem 1rem; text-align: center; }
.gp-cart-empty svg { width: 4rem; height: 4rem; margin: 0 auto 1.5rem; color: var(--gp-surface-2); }

/* Cross-sells live under the table, not beside the totals. */
.woocommerce .cross-sells { grid-column: 1 / -1; }

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

.woocommerce-checkout .gp-checkout-layout { display: grid; gap: 2.5rem; }

@media (min-width: 900px) {
	.woocommerce-checkout .gp-checkout-layout { grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); align-items: start; }
}

.woocommerce form .form-row { display: flex; flex-direction: column; margin: 0 0 1rem; padding: 0; }
.woocommerce form .form-row label { margin-bottom: .375rem; }
.woocommerce form .form-row-first,
.woocommerce form .form-row-last { width: 100%; float: none; }

@media (min-width: 640px) {
	.woocommerce form .form-row-first,
	.woocommerce form .form-row-last { display: inline-flex; width: calc(50% - .5rem); }
	.woocommerce form .form-row-first { margin-inline-end: 1rem; }
}

.woocommerce form.checkout_coupon,
.woocommerce form.login,
.woocommerce form.register {
	padding: 1.5rem;
	background: var(--gp-card);
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
}

.woocommerce-checkout h3,
.woocommerce-billing-fields h3 { font-size: 1.375rem; margin-bottom: 1.25rem; }

#order_review,
.woocommerce-checkout-review-order {
	padding: 1.5rem;
	background: var(--gp-card);
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
}

@media (min-width: 900px) {
	.woocommerce-checkout-review-order { position: sticky; top: calc(var(--gp-header-h) + var(--gp-admin-bar) + 1rem); }
}

.woocommerce-checkout #payment { background: transparent; border-radius: 0; }

.woocommerce-checkout #payment ul.payment_methods {
	padding: 0;
	border: 0;
	border-top: 1px solid var(--gp-border);
	padding-top: 1rem;
	list-style: none;
}

.woocommerce-checkout #payment ul.payment_methods li { margin-bottom: .75rem; }
.woocommerce-checkout #payment div.payment_box {
	margin-top: .625rem;
	padding: 1rem;
	background: var(--gp-surface);
	border-radius: var(--gp-radius);
	font-size: .8125rem;
	color: var(--gp-muted);
}

.woocommerce-checkout #payment div.payment_box::before { display: none; }
.woocommerce-checkout #payment div.form-row { padding: 1rem 0 0; }
.woocommerce-checkout #place_order { width: 100%; }

.woocommerce ul.order_details {
	display: grid;
	gap: 1rem;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
	margin: 0 0 2rem;
	padding: 1.5rem;
	background: var(--gp-card);
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	list-style: none;
}

.woocommerce ul.order_details li { float: none; margin: 0; padding: 0; border: 0; font-size: .6875rem; letter-spacing: .08em; text-transform: uppercase; color: var(--gp-muted); }
.woocommerce ul.order_details li strong { display: block; margin-top: .25rem; color: var(--gp-heading-color); font-family: var(--gp-font-heading); font-size: 1.0625rem; letter-spacing: 0; text-transform: none; }

/* ==========================================================================
   My account
   ========================================================================== */

.woocommerce-account .woocommerce-MyAccount-navigation { margin-bottom: 2rem; }

@media (min-width: 900px) {
	.woocommerce-account .woocommerce-MyAccount-navigation { float: none; width: auto; margin-bottom: 0; }
	.woocommerce-account .woocommerce-MyAccount-content { float: none; width: auto; }
	.gp-account-layout { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: 2.5rem; align-items: start; }
}

.woocommerce-MyAccount-navigation ul {
	margin: 0;
	padding: 0;
	list-style: none;
	background: var(--gp-card);
	border: 1px solid var(--gp-border);
	border-radius: var(--gp-radius);
	overflow: hidden;
}

.woocommerce-MyAccount-navigation li { border-bottom: 1px solid var(--gp-border); }
.woocommerce-MyAccount-navigation li:last-child { border-bottom: 0; }

.woocommerce-MyAccount-navigation a {
	display: block;
	padding: .875rem 1.25rem;
	color: var(--gp-body-color);
	font-size: .8125rem;
	font-weight: 500;
	letter-spacing: .05em;
	text-transform: uppercase;
}

.woocommerce-MyAccount-navigation li.is-active a,
.woocommerce-MyAccount-navigation a:hover { background: var(--gp-surface); color: var(--gp-primary); }

.woocommerce-MyAccount-content { font-size: .9375rem; }

/* ==========================================================================
   Widgets, filters, mini cart
   ========================================================================== */

.widget_price_filter .price_slider_wrapper .ui-widget-content { background: var(--gp-surface-2); border-radius: var(--gp-radius-pill); height: 4px; }
.widget_price_filter .ui-slider .ui-slider-range { background: var(--gp-primary); }
.widget_price_filter .ui-slider .ui-slider-handle { width: 14px; height: 14px; top: -5px; background: var(--gp-black); border-radius: 50%; }
.widget_price_filter .price_slider_amount .button { float: left; }
.widget_price_filter .price_slider_amount .price_label { padding-top: .5rem; font-size: .8125rem; }

.woocommerce ul.cart_list li,
.woocommerce ul.product_list_widget li {
	display: flex;
	gap: .875rem;
	padding: .875rem 0;
	border-bottom: 1px solid var(--gp-border);
	font-size: .875rem;
}

.woocommerce ul.cart_list li img,
.woocommerce ul.product_list_widget li img {
	float: none;
	width: 64px;
	height: 64px;
	margin: 0;
	object-fit: cover;
	flex: none;
	border-radius: var(--gp-radius);
}

.woocommerce ul.cart_list li a,
.woocommerce ul.product_list_widget li a { display: block; font-weight: 500; color: var(--gp-heading-color); }
.woocommerce ul.cart_list li a:hover { color: var(--gp-primary); }
.woocommerce ul.cart_list li .quantity { display: block; border: 0; background: none; color: var(--gp-muted); font-size: .8125rem; }

.woocommerce ul.cart_list li a.remove,
.woocommerce ul.product_list_widget li a.remove { position: absolute; inset-inline-end: 0; top: .875rem; }

.woocommerce .widget_shopping_cart .cart_list li { position: relative; padding-inline-end: 2rem; }
.woocommerce .widget_shopping_cart .total { padding: 1rem 0; border-top: 1px solid var(--gp-border); }
.woocommerce .widget_shopping_cart .buttons { display: grid; gap: .5rem; }
.woocommerce .widget_shopping_cart .buttons a { width: 100%; }

/* Layered nav / attribute filters */
.woocommerce .widget_layered_nav ul li { display: flex; justify-content: space-between; }
.woocommerce .widget_layered_nav ul li.chosen a { color: var(--gp-primary); font-weight: 600; }

/* ==========================================================================
   Third-party compatibility
   ========================================================================== */

/* Wishlist hover action ------------------------------------------------------
 *
 * The wishlist plugins render their own labelled button ("Add to Wishlist"),
 * which does not fit a 34px circle and left the second hover action looking
 * empty. The theme draws its own heart and lays the plugin's anchor over it,
 * invisible but still clickable, so the icon always renders and the click
 * still reaches the plugin.
 */
.gp-product__action--wishlist { position: relative; overflow: hidden; }

.gp-product__action--wishlist > svg { pointer-events: none; }

.gp-product__action--wishlist .yith-wcwl-add-to-wishlist,
.gp-product__action--wishlist .tinv-wraper,
.gp-product__action--wishlist .tinvwl-shortcode-add-to-cart {
	position: absolute;
	inset: 0;
	margin: 0;
	padding: 0;
}

.gp-product__action--wishlist a,
.gp-product__action--wishlist button {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	/* Hides the plugin's own label and glyph without hiding the hit area. */
	font-size: 0;
	color: transparent;
	text-indent: -9999px;
	overflow: hidden;
}

/* Filled heart once the product is on the list. */
.gp-product__action--wishlist:has(.tinvwl-product-in-list) > svg,
.gp-product__action--wishlist:has(.added-to-wishlist) > svg,
.gp-product__action--wishlist:has(.yith-wcwl-wishlistexistsbrowse) > svg {
	fill: currentColor;
}

/* YITH / TI wishlist buttons elsewhere in the loop */
.yith-wcwl-add-to-wishlist,
.tinvwl-shortcode-add-to-cart { margin: 0; }
.yith-wcwl-add-button a, .tinv-wishlist a { font-size: .75rem; }

/* Variation swatches (Woo core + common plugins) */
.woo-variation-swatches .variable-items-wrapper .variable-item:not(.radio-variable-item) { border-radius: var(--gp-radius); box-shadow: none; border: 1px solid var(--gp-border); }
.woo-variation-swatches .variable-items-wrapper .variable-item.selected { border-color: var(--gp-primary); box-shadow: 0 0 0 1px var(--gp-primary); }

/* WooCommerce Blocks */
.wc-block-components-product-name { font-family: var(--gp-font-heading); }
.wc-block-components-button,
.wp-block-woocommerce-cart .wc-block-cart__submit-button {
	background: var(--gp-primary) !important;
	color: var(--gp-btn-text) !important;
	border-radius: var(--gp-radius) !important;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .08em;
}

.wc-block-grid__product-title { font-family: var(--gp-font-heading); }

/* Store notice (Woo's demo bar) */
.woocommerce-store-notice {
	background: var(--gp-primary);
	color: var(--gp-white);
	font-size: .8125rem;
	padding: .75rem 1.25rem;
}

/* Keep the sticky add-to-cart bar clear of the mobile nav. */
@media (max-width: 767.98px) {
	body.gp-has-mobile-nav .gp-sticky-atc { bottom: calc(var(--gp-mobilenav-h) + env(safe-area-inset-bottom, 0px)); padding-bottom: .75rem; }
}
