/*
 * Shop: category listing (archive) + product cards. Light retail surface.
 */

.tg-shop { padding-block: var(--tg-sp-5) var(--tg-sp-8); }
.tg-shop__head { margin-bottom: var(--tg-sp-4); }
.tg-shop__title { font-size: clamp(var(--tg-fs-2xl), 4vw, var(--tg-fs-3xl)); text-transform: uppercase; margin: 0 0 var(--tg-sp-2); }
.tg-shop__desc { color: var(--tg-text-muted); max-width: 70ch; }

/* Club shop context note: intro + "set one up" CTA above the product grid. */
.tg-clubshop-note {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--tg-sp-4);
	margin-bottom: var(--tg-sp-5);
	padding: var(--tg-sp-4) var(--tg-sp-5);
	background: var(--tg-green-soft);
	border: var(--tg-bw) solid var(--tg-green-line);
	border-radius: var(--tg-radius-lg);
}
.tg-clubshop-note p { margin: 0; max-width: 62ch; color: var(--tg-ink); }
.tg-clubshop-note .tg-btn { flex: 0 0 auto; }
.tg-shop__tabs { margin-bottom: var(--tg-sp-4); border-bottom: var(--tg-bw) solid var(--tg-border); }

/* Bar: filter toggle + count + sort */
.tg-shop__bar { display: flex; align-items: center; gap: var(--tg-sp-4); flex-wrap: wrap; padding-block: var(--tg-sp-3); border-block: var(--tg-bw) solid var(--tg-border); margin-bottom: var(--tg-sp-5); }
.tg-shop__count { margin: 0; color: var(--tg-text-muted); font-size: var(--tg-fs-sm); }
.tg-shop__sort { margin-left: auto; }
.tg-shop__sort select { min-height: 44px; } /* shell + chevron come from components.css */
.tg-shop__filter-toggle { display: inline-flex; }
@media (min-width: 900px) { .tg-shop__filter-toggle { display: none; } }

/* Layout: filter rail + product grid. minmax(0,1fr) lets the main column shrink
   below wide content (large product images) instead of blowing out the page. */
.tg-shop__layout { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--tg-sp-6); }
.tg-shop__main { min-width: 0; }
@media (min-width: 900px) { .tg-shop__layout { grid-template-columns: 240px minmax(0, 1fr); } }

/* Filters (desktop rail; mobile drawer) */
.tg-shop__filters-head { display: none; }
.tg-filter { padding-bottom: var(--tg-sp-4); margin-bottom: var(--tg-sp-4); border-bottom: var(--tg-bw) solid var(--tg-border); }
.tg-filter__head { font-size: var(--tg-fs-sm); text-transform: uppercase; letter-spacing: .04em; margin: 0 0 var(--tg-sp-3); }
.tg-filter__list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--tg-sp-1); }
.tg-filter__list a { display: flex; justify-content: space-between; gap: var(--tg-sp-2); padding: 6px 0; color: var(--tg-text); font-size: var(--tg-fs-sm); }
.tg-filter__list a:hover { color: var(--tg-link); text-decoration: none; }
.tg-filter__list span { color: var(--tg-text-muted); }

/* Faceted controls: checkboxes with counts, price range, in-stock. */
.tg-filters-clear { margin: 0 0 var(--tg-sp-3); }
.tg-filters-clear a { font-size: var(--tg-fs-sm); font-weight: 600; color: var(--tg-link); }
.tg-filter__checks { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; max-height: 240px; overflow-y: auto; }
.tg-filter__checks label { display: flex; align-items: center; gap: var(--tg-sp-2); padding: 6px 0; font-size: var(--tg-fs-sm); cursor: pointer; }
.tg-filter__checks input { width: 18px; height: 18px; accent-color: var(--tg-green); flex: none; }
.tg-filter__checks label > span:first-of-type { flex: 1 1 auto; min-width: 0; }
.tg-filter__count { color: var(--tg-text-muted); flex: none; }
.tg-filter__price { display: flex; align-items: center; gap: var(--tg-sp-2); }
.tg-filter__price input { width: 100%; min-width: 0; padding: 8px 10px; border: var(--tg-bw) solid var(--tg-border); border-radius: var(--tg-radius-sm); font-size: var(--tg-fs-sm); }
.tg-filter__price span { color: var(--tg-text-muted); font-size: var(--tg-fs-sm); }
.tg-filter__stock { display: flex; align-items: center; gap: var(--tg-sp-2); font-size: var(--tg-fs-sm); font-weight: 600; cursor: pointer; }
.tg-filter__stock input { width: 18px; height: 18px; accent-color: var(--tg-green); }

@media (max-width: 899px) {
	.tg-shop__filters {
		position: fixed; top: 0; left: 0; bottom: 0; z-index: var(--tg-z-drawer);
		width: min(86vw, 340px); background: var(--tg-bg); padding: var(--tg-sp-4) var(--tg-sp-5);
		transform: translateX(-100%); transition: transform var(--tg-dur-slow) var(--tg-ease); overflow-y: auto;
	}
	.tg-shop__filters.is-open { transform: translateX(0); box-shadow: var(--tg-shadow-lg); }
	.tg-shop__filters-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--tg-sp-4); }
	.tg-shop__filters-head .tg-iconbtn { color: var(--tg-ink); }
}

/* Product grid. minmax(0,1fr) columns so an oversized product image can't blow
   the track out (some source images are 3000px wide). */
.tg-product-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--tg-sp-5); }
@media (min-width: 700px) { .tg-product-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1200px) { .tg-product-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* Product card */
.tg-pcard { display: flex; flex-direction: column; }
.tg-pcard__media { position: relative; display: block; aspect-ratio: 1; border-radius: var(--tg-radius); overflow: hidden; background: var(--tg-paper); }
.tg-pcard__media img { width: 100%; height: 100%; object-fit: contain; mix-blend-mode: multiply; }
.tg-pcard__wish { position: absolute; top: 8px; right: 8px; width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; background: rgba(255,255,255,.9); border: 0; border-radius: var(--tg-radius-pill); color: var(--tg-n-500); }
.tg-pcard__wish.is-active, .tg-pcard__wish:hover { color: var(--tg-error); }
.tg-badge--sale { background: var(--tg-error); }
.tg-pcard__body { display: flex; flex-direction: column; gap: 4px; padding-top: var(--tg-sp-3); }
.tg-pcard__brand { font-size: var(--tg-fs-xs); color: var(--tg-text-muted); text-transform: uppercase; letter-spacing: .04em; margin: 0; }
.tg-pcard__title { font-size: var(--tg-fs-sm); font-weight: var(--tg-fw-semi); line-height: 1.3; margin: 0; }
.tg-pcard__title a { color: inherit; }
.tg-pcard__price { font-weight: var(--tg-fw-bold); margin: 2px 0; }
.tg-pcard__price del { color: var(--tg-text-muted); font-weight: var(--tg-fw-normal); margin-right: 4px; }

/* Rating stars */
.tg-rating { display: flex; align-items: center; gap: var(--tg-sp-2); font-size: var(--tg-fs-xs); color: var(--tg-text-muted); }
.tg-rating__stars { position: relative; display: inline-block; width: 5.2em; font-size: 13px; line-height: 1; }
.tg-rating__stars::before { content: "\2605\2605\2605\2605\2605"; letter-spacing: 2px; color: var(--tg-n-300); }
.tg-rating__stars::after { content: "\2605\2605\2605\2605\2605"; letter-spacing: 2px; color: #f4c531; position: absolute; inset: 0; width: var(--tg-rating, 0%); overflow: hidden; white-space: nowrap; }

/* Colour swatches */
.tg-swatches { display: flex; align-items: center; gap: 6px; margin: 4px 0; }
.tg-swatch { width: 16px; height: 16px; border-radius: 50%; border: var(--tg-bw) solid var(--tg-border-strong); }
.tg-swatches__more { font-size: var(--tg-fs-xs); color: var(--tg-text-muted); }

/* Add-to-cart button (WooCommerce loop button) */
.tg-pcard .button, .tg-pcard .add_to_cart_button, .tg-pcard .added_to_cart {
	display: inline-flex; align-items: center; justify-content: center;
	min-height: 44px; margin-top: var(--tg-sp-2); padding: 0 var(--tg-sp-4);
	background: var(--tg-black); color: #fff; border: 0; border-radius: var(--tg-radius);
	font-weight: var(--tg-fw-semi); font-size: var(--tg-fs-sm); text-decoration: none;
}
.tg-pcard .button:hover { background: var(--tg-green); }
.tg-pcard .added_to_cart { margin-left: var(--tg-sp-2); }

/* ===================== Single product (PDP) ===================== */
.tg-pdp { padding-bottom: var(--tg-sp-8); }
.tg-pdp__grid { display: grid; grid-template-columns: 1fr; gap: var(--tg-sp-6); padding-top: var(--tg-sp-4); }
@media (min-width: 900px) { .tg-pdp__grid { grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: var(--tg-sp-8); align-items: start; } }

/* Gallery: vertical thumbnail rail + white stage */
.tg-pdp__gallery { position: relative; }
/* Beat WooCommerce's default `.woocommerce div.product .woocommerce-product-gallery { width:48% }`. */
.woocommerce div.product .tg-pdp__gallery .woocommerce-product-gallery { width: 100%; float: none; margin: 0; }
.tg-pdp__gallery .woocommerce-product-gallery { display: flex; gap: var(--tg-sp-4); }
.tg-pdp__gallery .woocommerce-product-gallery__wrapper, .tg-pdp__gallery .flex-viewport { flex: 1; min-width: 0; background: var(--tg-paper); border-radius: var(--tg-radius-lg); overflow: hidden; }
.tg-pdp__gallery img { mix-blend-mode: multiply; }
.tg-pdp__gallery .flex-control-thumbs { order: -1; display: flex; flex-direction: column; gap: 10px; width: 76px; margin: 0; padding: 0; list-style: none; }
.tg-pdp__gallery .flex-control-thumbs li { width: 76px; }
.tg-pdp__gallery .flex-control-thumbs img { border: var(--tg-bw) solid var(--tg-border); border-radius: var(--tg-radius-sm); cursor: pointer; opacity: .65; background: var(--tg-paper); }
.tg-pdp__gallery .flex-control-thumbs img.flex-active, .tg-pdp__gallery .flex-control-thumbs img:hover { opacity: 1; border-color: var(--tg-green); }
@media (max-width: 899px) {
	.tg-pdp__gallery .woocommerce-product-gallery { flex-direction: column; }
	.tg-pdp__gallery .flex-control-thumbs { flex-direction: row; width: auto; overflow-x: auto; }
	.tg-pdp__gallery .flex-control-thumbs li { width: 64px; flex: 0 0 64px; }
}

/* Summary */
.tg-pdp__title { font-size: clamp(var(--tg-fs-xl), 3vw, var(--tg-fs-2xl)); text-transform: uppercase; margin: 0 0 var(--tg-sp-3); }
.tg-pdp__topmeta { display: flex; align-items: center; gap: var(--tg-sp-4); flex-wrap: wrap; margin-bottom: var(--tg-sp-4); }
.tg-pdp__price { font-size: var(--tg-fs-xl); font-weight: var(--tg-fw-bold); }
.tg-pdp__price del { color: var(--tg-text-muted); font-weight: var(--tg-fw-normal); margin-right: 6px; }
.tg-pdp__rating { color: var(--tg-text-muted); }
.tg-pdp__excerpt { color: var(--tg-text-muted); margin-bottom: var(--tg-sp-4); }
.tg-pdp__stock { display: inline-flex; align-items: center; gap: 6px; font-weight: var(--tg-fw-semi); margin: 0 0 var(--tg-sp-3); }
.tg-pdp__stock--in { color: var(--tg-green-strong); }
.tg-pdp__stock--out { color: var(--tg-error); }
.tg-pdp__sizeguide { display: inline-flex; align-items: center; gap: 6px; font-size: var(--tg-fs-sm); font-weight: var(--tg-fw-semi); margin-bottom: var(--tg-sp-4); }

/* Variation table -> swatches + size buttons */
.tg-pdp .variations { width: 100%; border-collapse: collapse; margin-bottom: var(--tg-sp-4); }
.tg-pdp .variations th, .tg-pdp .variations td { display: block; text-align: left; padding: 0; }
.tg-pdp .variations th { text-transform: uppercase; letter-spacing: .04em; font-size: var(--tg-fs-sm); margin: var(--tg-sp-3) 0 var(--tg-sp-2); }
.tg-pdp .reset_variations { display: inline-block; font-size: var(--tg-fs-sm); margin-top: var(--tg-sp-2); }
.tg-variation { display: flex; flex-wrap: wrap; gap: var(--tg-sp-2); }
.tg-vopt {
	min-width: 48px; min-height: 44px; padding: 0 var(--tg-sp-3);
	border: var(--tg-bw-thick) solid var(--tg-border-strong); border-radius: var(--tg-radius);
	background: var(--tg-bg); font: inherit; font-weight: var(--tg-fw-semi); cursor: pointer;
}
.tg-vopt.is-selected { border-color: var(--tg-ink); }
.tg-vopt.is-disabled { opacity: .4; text-decoration: line-through; cursor: not-allowed; }
.tg-variation--swatch .tg-vopt { width: 34px; height: 34px; min-width: 0; min-height: 0; padding: 0; border-radius: 50%; box-shadow: inset 0 0 0 2px #fff; }
.tg-variation--swatch .tg-vopt.is-selected { box-shadow: inset 0 0 0 2px #fff, 0 0 0 2px var(--tg-ink); }

/* Add to cart + qty */
.tg-pdp form.cart { margin: var(--tg-sp-4) 0; }
.tg-pdp .quantity { display: inline-flex; align-items: center; border: var(--tg-bw) solid var(--tg-border-strong); border-radius: var(--tg-radius); overflow: hidden; margin-right: var(--tg-sp-3); }
.tg-pdp .quantity input.qty { width: 56px; height: 52px; border: 0; text-align: center; font: inherit; -moz-appearance: textfield; }
.tg-pdp .single_add_to_cart_button, .tg-pdp form.cart .button {
	min-height: 52px; padding: 0 var(--tg-sp-6); border: 0; border-radius: var(--tg-radius);
	background: var(--tg-green); color: #fff; font-weight: var(--tg-fw-bold); font-size: var(--tg-fs-md);
	text-transform: uppercase; letter-spacing: .02em; cursor: pointer;
}
.tg-pdp .single_add_to_cart_button:hover { background: var(--tg-green-strong); }
.tg-pdp form.cart:not(.variations_form) { display: flex; align-items: center; gap: var(--tg-sp-3); flex-wrap: wrap; }
.tg-pdp .woocommerce-variation-add-to-cart { display: flex; align-items: center; gap: var(--tg-sp-3); flex-wrap: wrap; margin-top: var(--tg-sp-3); }
.tg-pdp .woocommerce-variation-price { margin-bottom: var(--tg-sp-3); font-size: var(--tg-fs-lg); font-weight: var(--tg-fw-bold); }

/* Trust */
.tg-pdp__trust { display: flex; flex-wrap: wrap; gap: var(--tg-sp-4); margin-top: var(--tg-sp-5); padding-top: var(--tg-sp-4); border-top: var(--tg-bw) solid var(--tg-border); }
.tg-pdp__trust span { display: inline-flex; align-items: center; gap: 8px; font-size: var(--tg-fs-sm); color: var(--tg-text-muted); }
.tg-pdp__trust svg { color: var(--tg-green); }

/* Tabs */
.tg-pdp__tabs { margin-top: var(--tg-sp-8); }
.tg-pdp .wc-tabs { display: flex; flex-wrap: wrap; gap: var(--tg-sp-2); list-style: none; margin: 0 0 var(--tg-sp-5); padding: 0; border-bottom: var(--tg-bw) solid var(--tg-border); }
.tg-pdp .wc-tabs li { margin: 0; }
.tg-pdp .wc-tabs li a { display: inline-block; padding: var(--tg-sp-3) var(--tg-sp-4); font-weight: var(--tg-fw-semi); color: var(--tg-text-muted); border-bottom: 3px solid transparent; }
.tg-pdp .wc-tabs li.active a { color: var(--tg-text); border-bottom-color: var(--tg-green); }
.tg-pdp .woocommerce-Tabs-panel h2 { font-size: var(--tg-fs-lg); }

/* Secondary CTA: Add bundle (outlined, per brief CTA hierarchy) */
.tg-pdp__bundle { margin-top: var(--tg-sp-3); display: inline-flex; align-items: center; gap: 8px; }

/* Context-led recommendation modules */
.tg-recsec, .tg-fbt, .tg-ballguide { margin-top: var(--tg-sp-8); }
.tg-recsec__title { font-size: var(--tg-fs-xl); text-transform: uppercase; letter-spacing: .01em; margin: 0 0 var(--tg-sp-5); }
.tg-recsec ul.products { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--tg-sp-5); }
@media (min-width: 700px) { .tg-recsec ul.products { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
/* WooCommerce's default `li.product { float:left; width:22.05% }` isn't dequeued on
   single-product pages; neutralise it so the cards fill their grid cells. */
.tg-recsec ul.products li.product { width: 100%; float: none; margin: 0; clear: none; }
/* WC's clearfix ::before/::after become stray grid cells; remove them. */
.tg-recsec ul.products::before, .tg-recsec ul.products::after { display: none; }

/* Frequently bought together */
.tg-fbt__inner { display: grid; gap: var(--tg-sp-5); align-items: start; }
@media (min-width: 900px) { .tg-fbt__inner { grid-template-columns: minmax(0, 1fr) 280px; } }
.tg-fbt__items { display: flex; flex-wrap: wrap; align-items: center; gap: var(--tg-sp-3); }
.tg-fbt__plus { font-size: var(--tg-fs-xl); color: var(--tg-text-muted); font-weight: var(--tg-fw-bold); }
.tg-fbt__item { display: flex; gap: var(--tg-sp-3); align-items: center; padding: var(--tg-sp-3); border: var(--tg-bw) solid var(--tg-border); border-radius: var(--tg-radius); cursor: pointer; max-width: 260px; }
.tg-fbt__item.is-main { border-color: var(--tg-ink); }
.tg-fbt__item input { width: 18px; height: 18px; accent-color: var(--tg-green); flex: none; }
.tg-fbt__thumb img { width: 64px; height: 64px; object-fit: cover; border-radius: var(--tg-radius-sm); display: block; }
.tg-fbt__meta { display: grid; gap: 4px; min-width: 0; }
.tg-fbt__name { font-size: var(--tg-fs-sm); font-weight: var(--tg-fw-semi); }
.tg-fbt__price { font-size: var(--tg-fs-sm); color: var(--tg-text-muted); }
.tg-fbt__cta { padding: var(--tg-sp-5); background: var(--tg-surface, #f6f6f4); border-radius: var(--tg-radius); display: grid; gap: var(--tg-sp-3); align-content: start; }
.tg-fbt__total { margin: 0; font-size: var(--tg-fs-md); }
.tg-fbt__total strong { font-size: var(--tg-fs-lg); }

/* Which ball is right for me */
.tg-ballguide__inner { display: grid; gap: var(--tg-sp-4); padding: var(--tg-sp-6); border: var(--tg-bw) solid var(--tg-border); border-radius: var(--tg-radius); background: var(--tg-surface, #f6f6f4); }
@media (min-width: 800px) { .tg-ballguide__inner { grid-template-columns: minmax(0,1fr) auto auto; align-items: center; } }
.tg-ballguide__lead { display: flex; gap: var(--tg-sp-3); align-items: flex-start; }
.tg-ballguide__lead svg { color: var(--tg-green); flex: none; }
.tg-ballguide__lead h2 { margin-bottom: 4px; }
.tg-ballguide__lead p { margin: 0; color: var(--tg-text-muted); font-size: var(--tg-fs-sm); }
.tg-ballguide__sizes { list-style: none; margin: 0; padding: 0; display: flex; gap: var(--tg-sp-4); flex-wrap: wrap; }
.tg-ballguide__sizes li { display: flex; align-items: center; gap: 8px; font-size: var(--tg-fs-sm); font-weight: var(--tg-fw-semi); }
.tg-ballguide__num { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 50%; background: var(--tg-ink); color: #fff; font-weight: var(--tg-fw-bold); }

/* Sticky mobile basket bar */
.tg-pdp__sticky {
	position: fixed; left: 0; right: 0; bottom: var(--tg-bottombar-h); z-index: var(--tg-z-bottombar);
	display: none; align-items: center; justify-content: space-between; gap: var(--tg-sp-3);
	padding: var(--tg-sp-3) var(--tg-gutter); background: var(--tg-white);
	border-top: var(--tg-bw) solid var(--tg-border); box-shadow: 0 -2px 12px rgba(0,0,0,.08);
}
.tg-pdp__sticky.is-shown { display: flex; }
.tg-pdp__sticky-price { font-weight: var(--tg-fw-bold); }
.tg-pdp__sticky .tg-btn { flex: 1; max-width: 240px; }
@media (min-width: 900px) { .tg-pdp__sticky { display: none !important; } }

/* ===================== Cart ===================== */
.woocommerce-cart .tg-container, .woocommerce-checkout .tg-container { max-width: var(--tg-maxw); }
/* Focus the checkout to a sensible width so the coupon bar, billing form and order
   summary all align and the single-line fields stay readable (~630px) instead of
   filling a ~930px column. */
.woocommerce-checkout .woocommerce { max-width: 1060px; }
/* Two-column cart: line items left, totals right (notice spans the top). */
@media (min-width: 900px) {
	.woocommerce-cart .woocommerce { display: grid; grid-template-columns: minmax(0,1fr) 340px; gap: var(--tg-sp-6) var(--tg-sp-7); align-items: start; }
	.woocommerce-cart .woocommerce-notices-wrapper { grid-column: 1 / -1; }
	.woocommerce-cart form.woocommerce-cart-form { grid-column: 1; margin: 0; min-width: 0; }
	.woocommerce-cart .cart-collaterals { grid-column: 2; margin-top: 0; min-width: 0; }
}
.woocommerce-cart-form table.shop_table { width: 100%; border-collapse: collapse; }
/* Fixed table layout so the product-name column expands and remove + thumbnail
   sit tight on the left; auto-layout was dumping ~295px into the remove column,
   leaving a big empty gap before the product. */
@media (min-width: 900px) {
	.woocommerce-cart-form table.shop_table { table-layout: fixed; }
	.woocommerce-cart-form .product-remove { width: 56px; }
	.woocommerce-cart-form .product-thumbnail { width: 96px; }
	.woocommerce-cart-form .product-price { width: 100px; }
	.woocommerce-cart-form .product-quantity { width: 108px; }
	.woocommerce-cart-form .product-subtotal { width: 108px; }
}
/* Keep the coupon/update buttons on one line (the actions cell is a flex box). */
.woocommerce-cart-form td.actions button { white-space: nowrap; }
.woocommerce-cart-form table.shop_table th { text-align: left; text-transform: uppercase; font-size: var(--tg-fs-xs); letter-spacing: .04em; color: var(--tg-text-muted); padding: var(--tg-sp-3); border-bottom: var(--tg-bw) solid var(--tg-border); }
.woocommerce-cart-form table.shop_table td { padding: var(--tg-sp-4) var(--tg-sp-3); border-bottom: var(--tg-bw) solid var(--tg-border); vertical-align: middle; }
.woocommerce-cart-form .product-thumbnail img { width: 72px; height: 72px; object-fit: contain; background: var(--tg-paper); border-radius: var(--tg-radius-sm); }
.woocommerce-cart-form .product-name a { font-weight: var(--tg-fw-semi); color: var(--tg-text); }
.woocommerce-cart-form .product-remove a { display: inline-flex; width: 28px; height: 28px; align-items: center; justify-content: center; border-radius: 50%; background: var(--tg-paper); color: var(--tg-error); text-decoration: none; font-weight: 700; }
.woocommerce-cart-form .quantity input.qty { width: 64px; height: 44px; text-align: center; border: var(--tg-bw) solid var(--tg-border-strong); border-radius: var(--tg-radius); }
/* Actions row: coupon left, update basket right (both clearly visible). */
.woocommerce-cart-form td.actions { padding: var(--tg-sp-4) var(--tg-sp-3); border-bottom: 0; }
.woocommerce-cart-form td.actions { display: flex; flex-wrap: wrap; gap: var(--tg-sp-3); align-items: center; justify-content: space-between; }
.woocommerce-cart-form td.actions .coupon { display: flex; gap: var(--tg-sp-2); align-items: center; }
.woocommerce-cart-form td.actions .coupon input.input-text { height: 44px; padding: 0 var(--tg-sp-3); border: var(--tg-bw) solid var(--tg-border-strong); border-radius: var(--tg-radius); min-width: 160px; }
.woocommerce-cart-form td.actions button[name="update_cart"] { background: transparent; color: var(--tg-ink); border: var(--tg-bw) solid var(--tg-border-strong); min-height: 44px; padding: 0 var(--tg-sp-4); border-radius: var(--tg-radius); font-weight: var(--tg-fw-semi); }
.woocommerce-cart-form td.actions button[name="update_cart"]:disabled { opacity: .45; cursor: not-allowed; }
.woocommerce-cart-form td.actions button[name="update_cart"]:not(:disabled):hover { border-color: var(--tg-ink); background: var(--tg-paper); }
.woocommerce-cart .cart-collaterals { display: block; margin-top: var(--tg-sp-6); width: 100%; }
.woocommerce-cart .cart-collaterals .cross-sells { display: none; } /* keep the totals column clean */
/* Beat WooCommerce's default `.woocommerce .cart-collaterals .cart_totals { float:right; width:48% }`. */
.woocommerce-cart .woocommerce .cart-collaterals .cart_totals { float: none; width: 100%; background: var(--tg-paper); border: var(--tg-bw) solid var(--tg-border); border-radius: var(--tg-radius-lg); padding: var(--tg-sp-5); }
.woocommerce-cart .cart_totals h2 { font-size: var(--tg-fs-lg); margin-top: 0; }
.woocommerce-cart .cart_totals table { width: 100%; }
.woocommerce-cart .cart_totals th, .woocommerce-cart .cart_totals td { padding: var(--tg-sp-2) 0; text-align: left; vertical-align: top; }
.woocommerce-cart .cart_totals td { text-align: right; }
.woocommerce-cart .cart_totals .woocommerce-shipping-methods, .woocommerce-cart .cart_totals .shipping-calculator-button { font-size: var(--tg-fs-sm); }
.woocommerce-cart .wc-proceed-to-checkout { margin-top: var(--tg-sp-4); }
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button { display: block; width: 100%; white-space: nowrap; }

/* ===================== Checkout ===================== */
.woocommerce-checkout form.checkout { display: grid; gap: var(--tg-sp-6) var(--tg-sp-7); }
@media (min-width: 900px) {
	.woocommerce-checkout form.checkout { grid-template-columns: minmax(0,1fr) 380px; align-items: start; }
	.woocommerce-checkout form.checkout > .woocommerce-form-coupon-toggle,
	.woocommerce-checkout form.checkout > .checkout_coupon { grid-column: 1 / -1; }
	.woocommerce-checkout form.checkout #customer_details { grid-column: 1; }
	.woocommerce-checkout form.checkout #order_review { grid-column: 2; }
}
.woocommerce-checkout .col2-set { display: grid; gap: var(--tg-sp-5); }
.woocommerce-checkout .col2-set .col-1, .woocommerce-checkout .col2-set .col-2 { width: auto; float: none; }
.woocommerce-checkout h3 { font-size: var(--tg-fs-lg); }
/* The separate "Your order" heading floats away from its card in a spanning grid;
   hide it and render the label inside the review card so they can never gap. */
.woocommerce-checkout #order_review_heading { display: none; }
.woocommerce-checkout #order_review {
	background: var(--tg-paper); border: var(--tg-bw) solid var(--tg-border); border-radius: var(--tg-radius-lg);
	padding: var(--tg-sp-5); margin: 0;
}
.woocommerce-checkout #order_review::before { content: "Your order"; display: block; font-family: var(--tg-font-head); font-size: var(--tg-fs-lg); font-weight: var(--tg-fw-bold); margin-bottom: var(--tg-sp-4); }
.woocommerce-checkout #order_review table.shop_table { width: 100%; }
.woocommerce-checkout #order_review th, .woocommerce-checkout #order_review td { padding: var(--tg-sp-2) 0; text-align: left; }
.woocommerce-checkout #order_review td { text-align: right; }

/* ===================== My Account ===================== */
.woocommerce-account .tg-container { max-width: var(--tg-maxw); }
/* Use WooCommerce's own float layout (nav left, content right) but tighten it so
   it spans the full container instead of leaving a dead column: a slim fixed nav
   and a content column that takes the rest. (An earlier CSS grid on .woocommerce
   reserved an empty 240px track because nav+content are nested a level deeper.) */
@media (min-width: 820px) {
	.woocommerce-account.logged-in .woocommerce-MyAccount-navigation { width: 240px; margin-right: var(--tg-sp-7); }
	.woocommerce-account.logged-in .woocommerce-MyAccount-content { width: calc(100% - 240px - var(--tg-sp-7)); }
}
/* Lost-password: a single email field shouldn't span the full width. */
.woocommerce-account .woocommerce-ResetPassword.lost_reset_password { max-width: 460px; }
/* Address cards: WooCommerce squishes them to 47%-floated columns inside the
   content; lay them out as a clean two-column grid that fills the content width. */
.woocommerce-account.logged-in .woocommerce-Addresses { display: grid; gap: var(--tg-sp-5); margin-top: var(--tg-sp-4); }
@media (min-width: 480px) { .woocommerce-account.logged-in .woocommerce-Addresses { grid-template-columns: 1fr 1fr; } }
.woocommerce-account.logged-in .woocommerce-Addresses .col-1,
.woocommerce-account.logged-in .woocommerce-Addresses .col-2,
.woocommerce-account.logged-in .woocommerce-Address { float: none; width: auto; }
@media (min-width: 480px) {
	.woocommerce-account.logged-in .woocommerce-Addresses .col-1 { grid-column: 1; grid-row: 1; }
	.woocommerce-account.logged-in .woocommerce-Addresses .col-2 { grid-column: 2; grid-row: 1; }
}
.woocommerce-account .woocommerce-Address { border: var(--tg-bw) solid var(--tg-border); border-radius: var(--tg-radius-lg); padding: var(--tg-sp-5); }
.woocommerce-account .woocommerce-Address-title { display: flex; justify-content: space-between; align-items: baseline; gap: var(--tg-sp-3); margin-bottom: var(--tg-sp-3); }
.woocommerce-account .woocommerce-Address-title h2, .woocommerce-account .woocommerce-Address-title h3 { margin: 0; font-size: var(--tg-fs-lg); }

/* Logged-out login / register: a left-aligned card under the page title (the
   title and every logged-in account page are left-aligned, so centring the form
   left a big empty gutter and read as misaligned on wide screens). */
.woocommerce-account:not(.logged-in) .woocommerce { max-width: 900px; margin-inline: 0; }
.woocommerce-account .u-columns { display: grid; gap: var(--tg-sp-6); }
@media (min-width: 720px) { .woocommerce-account .u-columns { grid-template-columns: 1fr 1fr; } }
.woocommerce-account .u-column1, .woocommerce-account .u-column2, .woocommerce-account .col-1, .woocommerce-account .col-2 { width: auto; float: none; }
.woocommerce-account form.login, .woocommerce-account form.register { border: var(--tg-bw) solid var(--tg-border); border-radius: var(--tg-radius-lg); padding: var(--tg-sp-6); margin: 0; }
.woocommerce-account:not(.logged-in) form.login { max-width: 460px; margin-inline: 0; }
.woocommerce-account form.login .woocommerce-form-login__rememberme { display: inline-flex; align-items: center; gap: var(--tg-sp-2); }

/* Account edit forms: keep single-line fields to a readable width instead of
   stretching the full content column (postcode/phone/email were ~1160px wide). */
.woocommerce-account .woocommerce-EditAccountForm,
.woocommerce-account .woocommerce-address-fields { max-width: 600px; }
.woocommerce-account form.login button, .woocommerce-account form.register button { margin-top: var(--tg-sp-2); }
.woocommerce-account .woocommerce-MyAccount-navigation { margin-bottom: var(--tg-sp-5); }
.woocommerce-account .woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; border: var(--tg-bw) solid var(--tg-border); border-radius: var(--tg-radius-lg); overflow: hidden; }
.woocommerce-account .woocommerce-MyAccount-navigation li { margin: 0; }
.woocommerce-account .woocommerce-MyAccount-navigation li a { display: block; padding: var(--tg-sp-3) var(--tg-sp-4); font-weight: var(--tg-fw-semi); font-size: var(--tg-fs-sm); color: var(--tg-text); border-left: 3px solid transparent; }
.woocommerce-account .woocommerce-MyAccount-navigation li a:hover { background: var(--tg-paper); text-decoration: none; }
.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a { background: var(--tg-paper); border-left-color: var(--tg-green); color: var(--tg-ink); }
.woocommerce-account .woocommerce-MyAccount-content { min-width: 0; }
.woocommerce-account .woocommerce-MyAccount-content a { color: var(--tg-link); }
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-Address { border: var(--tg-bw) solid var(--tg-border); border-radius: var(--tg-radius-lg); padding: var(--tg-sp-5); }
.woocommerce-account table.shop_table, .woocommerce-account table.woocommerce-orders-table { width: 100%; border-collapse: collapse; }
.woocommerce-account table.shop_table th, .woocommerce-account table.shop_table td { padding: var(--tg-sp-3); text-align: left; border-bottom: var(--tg-bw) solid var(--tg-border); font-size: var(--tg-fs-sm); }
.woocommerce-account table.shop_table th { text-transform: uppercase; font-size: var(--tg-fs-xs); letter-spacing: .04em; color: var(--tg-text-muted); }
.woocommerce-account .woocommerce-MyAccount-content h2, .woocommerce-account .woocommerce-MyAccount-content h3 { font-size: var(--tg-fs-lg); margin: 0 0 var(--tg-sp-4); }

/* WooCommerce form fields -> theme look (cart, checkout, account) */
.woocommerce form .form-row { display: block; margin-bottom: var(--tg-sp-4); }
.woocommerce form .form-row label { display: block; font-weight: var(--tg-fw-semi); font-size: var(--tg-fs-sm); margin-bottom: var(--tg-sp-2); }
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.woocommerce .select2-container .select2-selection {
	width: 100%; min-height: var(--tg-tap); padding: var(--tg-sp-3) var(--tg-sp-4);
	border: var(--tg-bw) solid var(--tg-border-strong); border-radius: var(--tg-radius);
	background-color: var(--tg-bg); color: var(--tg-text); font: inherit;
}
/* ...but a select keeps room for its chevron (see components.css). */
.woocommerce form .form-row select { padding-right: calc(var(--tg-sp-4) + 20px); }
.woocommerce form .form-row input.input-text:focus, .woocommerce form .form-row textarea:focus { border-color: var(--tg-green); outline: none; box-shadow: 0 0 0 3px rgba(95,175,45,.2); }

/* Primary WooCommerce buttons -> brand green; secondary -> dark */
.woocommerce a.button, .woocommerce button.button, .woocommerce input.button, .woocommerce .button {
	display: inline-flex; align-items: center; justify-content: center;
	min-height: var(--tg-tap); padding: 0 var(--tg-sp-5); border: 0; border-radius: var(--tg-radius);
	background: var(--tg-black); color: #fff; font-weight: var(--tg-fw-semi); font-size: var(--tg-fs-sm); cursor: pointer;
}
.woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce input.button:hover { background: var(--tg-n-800); color: #fff; }
.woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt,
.woocommerce .button.checkout-button, .woocommerce #place_order,
.woocommerce div.product form.cart button.single_add_to_cart_button,
.tg-pdp .single_add_to_cart_button {
	background: var(--tg-green) !important; color: #fff !important; font-weight: var(--tg-fw-bold);
}
.woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover, .woocommerce input.button.alt:hover,
.woocommerce .button.checkout-button:hover, .woocommerce #place_order:hover,
.tg-pdp .single_add_to_cart_button:hover { background: var(--tg-green-strong) !important; }
.woocommerce button.button.alt.disabled, .tg-pdp .single_add_to_cart_button.disabled { opacity: .5; }
.woocommerce #place_order, .woocommerce .checkout-button { width: 100%; min-height: 52px; font-size: var(--tg-fs-md); text-transform: uppercase; letter-spacing: .02em; }

/* Notices */
.woocommerce-message, .woocommerce-info, .woocommerce-error { border-radius: var(--tg-radius); padding: var(--tg-sp-4); border: var(--tg-bw) solid var(--tg-border); background: var(--tg-paper); list-style: none; }
.woocommerce-message { border-left: 4px solid var(--tg-green); }
.woocommerce-error { border-left: 4px solid var(--tg-error); }
