/* ==========================================================================
   Grandt Defense – webshop (white theme). Loaded on shop pages only.
   Header and footer stay black; the content area switches to white.
   ========================================================================== */

.is-shop .site-header,
.is-shop .site-header.is-scrolled { background: #000; }

.is-shop .site-main {
	--c-bg: #fff;
	--c-surface: #f4f4f4;
	--c-surface-2: #ececec;
	--c-line: #e2e2e2;
	--c-text: #111;
	--c-muted: #6b6b6b;
	--c-accent-text: #b4530c; /* darker orange for text on white (contrast) */
	background: var(--c-bg);
	color: var(--c-text);
	padding-bottom: var(--section-space);
}
.is-shop .site-main a:hover { color: var(--c-accent-text); }
.is-shop .site-main :focus-visible { outline-color: var(--c-text); }

.btn--dark { background: #111; color: #fff; }
.btn--dark:hover { background: var(--c-accent); color: #000; }

/* Breadcrumb */
.breadcrumb { padding-top: 1.5rem; font-size: .9375rem; color: var(--c-muted); }
.breadcrumb ol { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0; padding: 0; list-style: none; }
.breadcrumb a { text-decoration: none; }
.breadcrumb__sep { margin-left: .5rem; color: #bbb; }

/* Title */
.shop-head { padding-bottom: clamp(1.5rem, 4vw, 2.5rem); }
.shop-head__title { margin: 1.25rem 0 0; font-size: clamp(2.25rem, 5vw, 4rem); }
.shop-head__intro { max-width: 70ch; margin-top: 1rem; color: var(--c-muted); font-size: 1.125rem; }

/* ---------------------------------------------------------------------------
   Layout: filters + products
   ------------------------------------------------------------------------ */
.shop-layout { display: block; }
@media (min-width: 1024px) {
	.shop-layout { display: grid; grid-template-columns: 250px 1fr; gap: 3rem; align-items: start; }
}

/* Filters: slide-in panel on mobile, sidebar on desktop */
.shop-filters {
	position: fixed;
	inset: 0 auto 0 0;
	z-index: 160;
	width: min(360px, 88vw);
	overflow-y: auto;
	padding: 1.5rem;
	background: #fff;
	color: #111;
	transform: translateX(-100%);
	transition: transform .3s var(--ease);
}
.shop-filters.is-open { transform: none; box-shadow: 0 0 40px rgba(0,0,0,.25); }
.shop-filters-backdrop { position: fixed; inset: 0; z-index: 150; background: rgba(0,0,0,.5); }
.shop-filters-backdrop[hidden] { display: none; }

.shop-filters__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1rem; }
.shop-filters__title { margin: 0; font-size: 1.5rem; }
.shop-filters__close { width: 2.5rem; height: 2.5rem; padding: .4rem; border: 0; background: none; color: inherit; cursor: pointer; }

@media (min-width: 1024px) {
	.shop-filters {
		position: sticky;
		top: calc(var(--header-h) + 1rem);
		z-index: auto;
		width: auto;
		max-height: calc(100vh - var(--header-h) - 2rem);
		padding: 0;
		transform: none;
		transition: none;
	}
	.shop-filters__close { display: none; }
	.shop-filters__title { font-size: 1.25rem; letter-spacing: .1em; }
}

.filter-group { border-top: 1px solid var(--c-line, #e2e2e2); }
.filter-group__title {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 1rem 0;
	font-size: 1.0625rem;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	cursor: pointer;
	list-style: none;
}
.filter-group__title::-webkit-details-marker { display: none; }
.filter-group__title::after { content: "+"; font-size: 1.5rem; font-weight: 400; line-height: 1; }
.filter-group[open] > .filter-group__title::after { content: "–"; }
.filter-group__count { margin-right: auto; margin-left: .35rem; color: var(--c-accent-text, #b4530c); }

.filter-group__list { margin: 0 0 1rem; padding: 0; list-style: none; }
.filter-group__list li + li { margin-top: .15rem; }

.filter-option {
	display: flex;
	align-items: center;
	gap: .65rem;
	padding: .3rem 0;
	cursor: pointer;
	font-size: 1.0625rem;
}
.filter-option input { width: 1.15rem; height: 1.15rem; margin: 0; accent-color: #111; }
.filter-option__count { margin-left: auto; color: var(--c-muted, #6b6b6b); font-size: .9375rem; }

/* Sizes as chips */
.filter-group__list--chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.filter-group__list--chips li + li { margin-top: 0; }
.filter-group__list--chips .filter-option { position: relative; padding: 0; }
.filter-group__list--chips input { position: absolute; opacity: 0; }
.filter-group__list--chips .filter-option span {
	display: grid;
	place-items: center;
	min-width: 3rem;
	height: 2.75rem;
	padding: 0 .75rem;
	border: 1px solid #cfcfcf;
	font-weight: 600;
}
.filter-group__list--chips input:checked + span { border-color: #111; background: #111; color: #fff; }
.filter-group__list--chips input:focus-visible + span { outline: 2px solid var(--c-accent); outline-offset: 2px; }

.filter-link { display: block; padding: .3rem 0; text-decoration: none; }
.filter-link.is-current { font-weight: 700; color: var(--c-accent-text, #b4530c); }

.price-filter { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; padding-bottom: 1rem; }
.price-filter span { display: block; margin-bottom: .25rem; color: var(--c-muted, #6b6b6b); font-size: .9375rem; }

.shop input[type="number"],
.shop input[type="search"],
.shop select,
.shop .quantity input {
	width: 100%;
	min-height: 2.875rem;
	padding: .5rem .75rem;
	border: 1px solid #cfcfcf;
	border-radius: 0;
	background: #fff;
	color: #111;
	font: inherit;
	font-size: 1.0625rem;
}
.shop input:focus,
.shop select:focus { outline: none; border-color: #111; }

.shop-filters__actions { display: flex; align-items: center; gap: 1.25rem; padding-top: 1.25rem; border-top: 1px solid var(--c-line, #e2e2e2); }
/* With JavaScript the filters apply instantly; the button is only needed on mobile. */
.js .shop-filters__actions .btn { display: none; }
@media (max-width: 1023px) { .js .shop-filters__actions .btn { display: inline-flex; } }

/* ---------------------------------------------------------------------------
   Toolbar
   ------------------------------------------------------------------------ */
.shop-toolbar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .75rem 1rem;
	padding-bottom: 1.5rem;
	margin-bottom: 1.5rem;
	border-bottom: 1px solid var(--c-line);
}
.shop-toolbar__filter-btn {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	min-height: 2.875rem;
	padding: 0 1rem;
	border: 1px solid #111;
	background: #fff;
	color: #111;
	font: inherit;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	cursor: pointer;
}
.shop-toolbar__filter-btn svg { width: 1.25rem; height: 1.25rem; }
@media (min-width: 1024px) { .shop-toolbar__filter-btn { display: none; } }

.shop-search { position: relative; flex: 1 1 220px; max-width: 420px; }
.shop-search input { padding-right: 3rem; }
.shop-search button {
	position: absolute;
	top: 0;
	right: 0;
	width: 2.875rem;
	height: 100%;
	padding: .65rem;
	border: 0;
	background: none;
	color: #111;
	cursor: pointer;
}

.shop-toolbar__right { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.25rem; margin-left: auto; }
.shop-toolbar .woocommerce-result-count { margin: 0; color: var(--c-muted); font-size: .9375rem; }
.shop-toolbar .woocommerce-ordering { margin: 0; }
.shop-toolbar .woocommerce-ordering select { width: auto; min-width: 12rem; }

.cart-link {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	text-decoration: none;
}
.cart-link svg { width: 1.5rem; height: 1.5rem; }
.cart-link__count {
	display: grid;
	place-items: center;
	min-width: 1.4rem;
	height: 1.4rem;
	padding: 0 .3rem;
	border-radius: 999px;
	background: var(--c-accent);
	color: #000;
	font-size: .8125rem;
	letter-spacing: 0;
}
.cart-link--inline { margin-top: 1.25rem; }

/* ---------------------------------------------------------------------------
   Product grid + cards on white
   ------------------------------------------------------------------------ */
.product-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 2rem .75rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
@media (max-width: 479px) {
	/* Two narrow columns on phones: smaller text, no description. */
	.product-grid .product-card__title { font-size: 1.0625rem; }
	.product-grid .product-card__text { display: none; }
	.product-grid .product-card__price { font-size: 1.0625rem; }
	.product-grid .product-card__body { padding-top: .75rem; }
}
@media (min-width: 480px) { .product-grid { gap: 2.5rem 1.25rem; } }
@media (min-width: 1200px) { .product-grid { grid-template-columns: repeat(3, 1fr); gap: 3rem 1.5rem; } }

.is-shop .product-card__media { background: #fff; position: relative; }
.product-card__media { position: relative; }
.product-card__badge {
	position: absolute;
	top: .75rem;
	left: .75rem;
	padding: .2rem .6rem;
	background: var(--c-accent);
	color: #000;
	font-size: .8125rem;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
}
.product-card__badge--muted { background: #111; color: #fff; }
.product-card__brand { margin: 0 0 .25rem; color: var(--c-muted); font-size: .875rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; }
.is-shop .product-card__price ins { color: var(--c-accent-text); }

.shop-empty { padding: 4rem 0; text-align: center; font-size: 1.25rem; }

/* Pagination */
.woocommerce-pagination { margin-top: 4rem; }
.woocommerce-pagination ul { display: flex; justify-content: center; gap: .5rem; margin: 0; padding: 0; list-style: none; }
.woocommerce-pagination .page-numbers {
	display: grid;
	place-items: center;
	min-width: 3rem;
	height: 3rem;
	padding: 0 .75rem;
	border: 1px solid var(--c-line);
	text-decoration: none;
	font-weight: 600;
}
.woocommerce-pagination .page-numbers.current { border-color: #111; background: #111; color: #fff; }

/* ---------------------------------------------------------------------------
   Notices ("added to cart" etc.)
   ------------------------------------------------------------------------ */
.woocommerce-notices-wrapper:empty { display: none; }
.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	margin: 1rem 0 1.5rem;
	padding: 1rem 1.25rem;
	border-left: 4px solid var(--c-accent);
	background: var(--c-surface, #f4f4f4);
	color: #111;
	list-style: none;
}
.woocommerce-error { border-color: #c62828; }
.woocommerce-message .button,
.woocommerce-info .button {
	order: 2;
	padding: .5rem 1rem;
	background: #111;
	color: #fff;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	text-decoration: none;
}
.woocommerce-message .button:hover { background: var(--c-accent); color: #000; }

/* ---------------------------------------------------------------------------
   Product page
   ------------------------------------------------------------------------ */
.product-layout { display: grid; gap: 2rem; padding-top: 1.5rem; }
@media (min-width: 1024px) {
	.product-layout { grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 4rem; align-items: start; }
	.product-summary { position: sticky; top: calc(var(--header-h) + 1.5rem); }
}

.product-gallery__main { position: relative; aspect-ratio: 1; background: #fff; border: 1px solid var(--c-line); overflow: hidden; }
.product-gallery__image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; opacity: 0; transition: opacity .3s var(--ease); }
.product-gallery__image.is-active { opacity: 1; }
.product-gallery__thumbs { display: flex; gap: .75rem; margin: .75rem 0 0; padding: 0; overflow-x: auto; list-style: none; }
.product-gallery__thumb {
	display: block;
	width: 5.5rem;
	aspect-ratio: 1;
	padding: 0;
	border: 2px solid transparent;
	background: var(--c-surface);
	cursor: pointer;
}
.product-gallery__thumb img { width: 100%; height: 100%; object-fit: contain; }
.product-gallery__thumb.is-active { border-color: #111; }

.product-summary__brand {
	display: inline-block;
	margin-bottom: .5rem;
	color: var(--c-muted);
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	text-decoration: none;
}
.product-summary__title { margin-bottom: 1rem; font-size: clamp(2rem, 4vw, 3rem); text-transform: none; }
.product-summary__price { margin: 0; font-size: 1.75rem; font-weight: 700; }
.product-summary__price del { color: var(--c-muted); font-weight: 500; margin-right: .5rem; }
.product-summary__price ins { color: var(--c-accent-text); text-decoration: none; }
.product-summary__vat { margin: .25rem 0 1.5rem; color: var(--c-muted); font-size: .9375rem; }
.product-summary__short { color: #333; font-size: 1.125rem; }
.product-summary__buy { margin-top: 2rem; padding-top: 2rem; border-top: 1px solid var(--c-line); }

/* Variation selects (size, colour) */
.variations { width: 100%; margin-bottom: 1rem; border-collapse: collapse; }
.variations tr { display: block; margin-bottom: 1rem; }
.variations th,
.variations td { display: block; padding: 0; text-align: left; }
.variations th label { display: block; margin-bottom: .4rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.variations td.value { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; }
.variations select { max-width: 24rem; }
.reset_variations { color: var(--c-muted); font-size: .9375rem; }
.woocommerce-variation-price { margin-bottom: .75rem; font-size: 1.375rem; font-weight: 700; }
.woocommerce-variation-availability .stock,
.product-summary .stock { margin: 0 0 1rem; font-weight: 600; }
.stock.in-stock { color: #2e7d32; }
.stock.out-of-stock { color: #c62828; }

/* Swatches (built by shop.js; the dropdowns stay hidden underneath) */
.has-swatches .variations { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.swatches { margin-bottom: 1.5rem; }
.swatches__label { margin: 0 0 .65rem; font-size: 1.125rem; color: #333; }
.swatches__label strong { font-weight: 600; text-transform: uppercase; letter-spacing: .02em; color: #111; }
.swatches__list { display: flex; flex-wrap: wrap; gap: .6rem; }
.swatch {
	position: relative;
	display: grid;
	place-items: center;
	min-width: 4.25rem;
	height: 4.25rem;
	padding: 0 1rem;
	border: 1px solid #cfcfcf;
	background: #fff;
	color: #111;
	font: inherit;
	font-size: 1.125rem;
	font-weight: 600;
	cursor: pointer;
	transition: border-color .15s var(--ease);
}
.swatch:hover { border-color: #111; }
.swatch.is-selected { border: 2px solid #111; }
.swatch.is-unavailable { color: #aaa; background: linear-gradient(to top left, transparent calc(50% - 1px), #cfcfcf, transparent calc(50% + 1px)); cursor: not-allowed; }
.swatch.is-unavailable:hover { border-color: #cfcfcf; }
.swatches--images .swatch { width: 5.5rem; height: 7rem; min-width: 0; padding: 2px; background: var(--c-surface); }
.swatches--images .swatch img { width: 100%; height: 100%; object-fit: cover; }
.swatches--images .swatch.is-selected::after {
	content: "";
	position: absolute;
	top: -.55rem;
	right: -.55rem;
	width: 1.6rem;
	height: 1.6rem;
	border-radius: 50%;
	background: #111 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 12.5l4 4 8-9' fill='none' stroke='%23fff' stroke-width='2.5'/%3E%3C/svg%3E") center / 70% no-repeat;
	border: 2px solid #fff;
}
.has-swatches .reset_variations { display: none !important; }

/* Bag icon on the add-to-cart button */
.single_add_to_cart_button { display: inline-flex; align-items: center; justify-content: center; gap: .75rem; }
.single_add_to_cart_button::before {
	content: "";
	width: 1.4rem;
	height: 1.4rem;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 7h12l-1 13H7L6 7zm3 0V5a3 3 0 0 1 6 0v2' fill='none' stroke='black' stroke-width='1.8'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 7h12l-1 13H7L6 7zm3 0V5a3 3 0 0 1 6 0v2' fill='none' stroke='black' stroke-width='1.8'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* Delivery line under the button */
.product-delivery { display: flex; gap: 1rem; align-items: flex-start; margin-top: 1.75rem; }
.product-delivery svg { flex: none; width: 2rem; height: 2rem; color: #111; }
.product-delivery p { margin: 0; line-height: 1.4; }
.product-delivery strong { display: block; font-weight: 600; font-size: 1.125rem; }
.product-delivery span { display: block; color: var(--c-muted); }

form.cart:not(.variations_form),
.woocommerce-variation-add-to-cart { display: flex; flex-wrap: wrap; gap: .75rem; }
.quantity { width: 5.5rem; }
.quantity input { text-align: center; min-height: 3.75rem !important; }

.single_add_to_cart_button {
	flex: 1 1 14rem;
	min-height: 3.75rem;
	padding: .75rem 2rem;
	border: 0;
	background: #111;
	color: #fff;
	font: inherit;
	font-size: 1.125rem;
	font-weight: 700;
	letter-spacing: .15em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background-color .2s var(--ease), color .2s var(--ease);
}
.single_add_to_cart_button:hover { background: var(--c-accent); color: #000; }
.single_add_to_cart_button.disabled,
.single_add_to_cart_button:disabled { opacity: .35; cursor: not-allowed; }
.single_add_to_cart_button.disabled:hover { background: #111; color: #fff; }

.product-summary__meta { display: grid; gap: .35rem; margin: 2rem 0 0; color: var(--c-muted); font-size: .9375rem; }
.product-summary__meta div { display: flex; gap: .5rem; }
.product-summary__meta dt { font-weight: 700; }
.product-summary__meta dd { margin: 0; }
.product-summary__meta a { text-decoration: none; }

/* "Request a quote" (products that cannot be bought online) */
.price-on-request { font-weight: 700; }
.product-card__price .price-on-request { color: var(--c-muted); font-size: .9375rem; letter-spacing: .08em; text-transform: uppercase; }
.quote__label { margin: 0 0 .5rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.quote__text { color: #444; }
.quote__details > summary { list-style: none; width: 100%; }
.quote__details > summary::-webkit-details-marker { display: none; }
.quote__details[open] > summary { display: none; }
.quote__form { margin-top: 1rem; }
.quote__contact { margin-top: 1.25rem; color: var(--c-muted); }
.quote__contact a { color: var(--c-text); font-weight: 700; }

.form--light label { display: block; margin-bottom: .35rem; font-weight: 600; font-size: 1rem; }
.form--light .form__grid { gap: 1rem; }
@media (min-width: 768px) { .form--light .form__grid { grid-template-columns: 1fr 1fr; } }
.form--light input,
.form--light textarea {
	min-height: 3rem;
	padding: .65rem .85rem;
	border: 1px solid #cfcfcf;
	background: #fff;
	color: #111;
	font-size: 1.0625rem;
}
.form--light textarea { min-height: 8rem; }
.form--light input:focus,
.form--light textarea:focus { border-color: #111; }
.form--light ::placeholder { color: #8a8a8a; }
.form--light .form__note { margin: 1rem 0; }
.form--light .form__error { color: #c62828; }
.form--light .form__field.has-error input,
.form--light .form__field.has-error textarea { border-color: #c62828; }
.is-shop .form-message--success { background: #f1f8f1; border-color: #2e7d32; color: #111; }
.is-shop .form-message--error { background: #fdf0f0; color: #111; }
.quote__submit { width: 100%; }

/* Description / specifications */
.product-details { margin-top: clamp(3rem, 6vw, 5rem); max-width: 960px; }
.product-details__section { border-top: 1px solid var(--c-line); }
.product-details__section:last-child { border-bottom: 1px solid var(--c-line); }
.product-details__section > summary {
	display: flex;
	justify-content: space-between;
	padding: 1.25rem 0;
	font-size: 1.375rem;
	font-weight: 700;
	text-transform: uppercase;
	cursor: pointer;
	list-style: none;
}
.product-details__section > summary::-webkit-details-marker { display: none; }
.product-details__section > summary::after { content: "+"; font-weight: 400; }
.product-details__section[open] > summary::after { content: "–"; }
.product-details__body { padding-bottom: 1.5rem; color: #333; font-size: 1.125rem; }
.is-shop .entry-content { color: #333; padding-bottom: 0; }
.woocommerce-product-attributes { width: 100%; border-collapse: collapse; }
.woocommerce-product-attributes th,
.woocommerce-product-attributes td { padding: .6rem 0; border-bottom: 1px solid var(--c-line); text-align: left; vertical-align: top; }
.woocommerce-product-attributes th { width: 35%; font-weight: 700; }
.woocommerce-product-attributes p { margin: 0; }

.product-related { margin-top: var(--section-space); padding-bottom: 0; border-top: 1px solid var(--c-line); }

/* ---------------------------------------------------------------------------
   Cart & checkout (WooCommerce blocks) on white
   ------------------------------------------------------------------------ */
.is-shop .page-head { padding-block: 2.5rem 1.5rem; }
.is-shop .page-blocks > .alignwide,
.is-shop .page-blocks > .wp-block-woocommerce-cart,
.is-shop .page-blocks > .wp-block-woocommerce-checkout {
	max-width: var(--container);
	margin-inline: auto;
	padding-inline: var(--gutter);
}
.is-shop .wc-block-components-button:not(.is-link),
.is-shop .wc-block-cart__submit-button,
.is-shop .wc-block-components-checkout-place-order-button {
	border-radius: 0;
	background: #111;
	color: #fff;
	font-family: var(--font);
	font-size: 1.125rem;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
}
.is-shop .wc-block-components-button:not(.is-link):hover { background: var(--c-accent); color: #000; }
.is-shop .wc-block-components-text-input input,
.is-shop .wc-block-components-combobox input,
.is-shop .wc-blocks-components-select__select { border-radius: 0 !important; }
.is-shop .wc-block-components-title,
.is-shop .wc-block-cart__totals-title { font-family: var(--font); }
