/* =============================================================================
   JustOrder — Custom Single Product Page
   Semantic colour variables (set dynamically from ACF fields via inline <style>):
     --color-primary    → ACF: primary_colour
     --color-secondary  → ACF: secondary_colour
     --color-accent     → ACF: accent_colour
   All other tokens are static design-system values.
   ============================================================================= */

/* ── Fallback tokens (used if ACF fields are empty or plugin not loaded) ─── */
:root {
	--color-primary:   #911618;
	--color-secondary: #F27633;
	--color-accent:    #111118;
	--warm-amber:      #f0c060;
	--ink-50:       rgba(17,17,24,.50);
	--ink-25:       rgba(17,17,24,.25);
	--ink-10:       rgba(17,17,24,.10);
	--ink-05:       rgba(17,17,24,.05);
	--surface:      #ffffff;
	--surface-cool: #f6f7f9;
	--border:       rgba(17,17,24,.09);
	--r-xs:   6px;
	--r-sm:   10px;
	--r-md:   16px;
	--r-lg:   24px;
	--r-xl:   32px;
	--r-pill: 999px;
	--ease:   cubic-bezier(.4,0,.2,1);
	--spring: cubic-bezier(.34,1.56,.64,1);
	--sh-xs: 0 1px 3px rgba(17,17,24,.06);
	--sh-sm: 0 2px 8px rgba(17,17,24,.08);
	--sh-md: 0 4px 20px rgba(17,17,24,.10);
	--sh-lg: 0 12px 40px rgba(17,17,24,.14);
}

/* ── Entrance animation ──────────────────────────────────────────────────── */
@keyframes riseIn {
	from { opacity: 0; transform: translateY(18px); }
	to   { opacity: 1; transform: translateY(0);    }
}

/* ── Warm cream gradient page background ─────────────────────────────────── */
body.single-product {
	background: linear-gradient(160deg, #fdf8f0 0%, #fffaf4 60%, #fdf5e8 100%);
	min-height: 100vh;
}

/* ── Breadcrumb (sticky frosted glass bar) ───────────────────────────────── */
.spp-breadcrumb {
	position: sticky;
	top: 0;
	z-index: 100;
	display: flex;
	align-items: center;
	gap: 6px;
	padding: 13px clamp(16px, 4vw, 48px);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 1.2px;
	text-transform: uppercase;
	color: var(--ink-50);
	backdrop-filter: blur(14px);
	-webkit-backdrop-filter: blur(14px);
	background: rgba(255, 255, 255, 0.78);
	border-bottom: 1px solid rgba(240, 192, 96, 0.20);
	box-shadow: 0 2px 12px rgba(17,17,24,.05);
}
.spp-breadcrumb a {
	color: var(--ink-50);
	text-decoration: none;
	transition: color .2s var(--ease);
}
.spp-breadcrumb a:hover      { color: var(--color-primary); }
.spp-breadcrumb__chevron     { width: 12px; height: 12px; color: var(--ink-25); flex-shrink: 0; }
.spp-breadcrumb__current     { color: var(--color-accent); font-weight: 800; }

/* Mini cart toggle — fixed top-right, just below the sticky breadcrumb */
body.single-product .cmc-toggle-btn {
	position: fixed !important;
	top: 56px !important;
	right: 24px !important;
	z-index: 99 !important;
}

/* ── Page wrapper ────────────────────────────────────────────────────────── */
.spp-page {
	max-width: 1280px;
	margin: 0 auto;
	padding: 32px clamp(16px, 4vw, 48px) 80px;
	animation: riseIn .45s var(--ease) both;
}

/* ── Two-column layout ───────────────────────────────────────────────────── */
.spp-layout {
	display: grid;
	grid-template-columns: 58fr 42fr;
	gap: clamp(24px, 4vw, 56px);
	align-items: start;
}

/* ── Gallery ─────────────────────────────────────────────────────────────── */
.spp-gallery {
	position: sticky;
	top: 64px; /* clears the frosted breadcrumb */
}
.spp-gallery__main {
	position: relative;
	border-radius: var(--r-lg);
	overflow: hidden;
	background: var(--surface);
	width: 100%;
	padding-top: 100%; /* padding-top trick: gives the container a concrete 1:1 height */
	box-shadow: var(--sh-lg);
}
.spp-gallery__img {
	position: absolute !important;
	inset: 0 !important;       /* top/right/bottom/left all 0 */
	width: 100% !important;
	height: 100% !important;
	max-width: none !important;
	max-height: none !important;
	object-fit: cover !important;
	display: block !important;
	transition: opacity .3s var(--ease);
}
.spp-gallery__img.is-switching { opacity: 0; }

/* Bestseller badge (top-left overlay) */
.spp-badge-featured {
	position: absolute;
	top: 16px;
	left: 16px;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 6px 12px 6px 10px;
	border-radius: var(--r-pill);
	background: rgba(17, 17, 24, 0.82);
	color: #fff;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .6px;
	text-transform: uppercase;
	backdrop-filter: blur(6px);
	-webkit-backdrop-filter: blur(6px);
}

/* Thumbnail strip */
.spp-gallery__thumbs {
	display: flex;
	gap: 10px;
	margin-top: 14px;
	overflow-x: auto;
	padding-bottom: 4px;
	scrollbar-width: thin;
	scrollbar-color: var(--ink-10) transparent;
}
.spp-thumb {
	flex-shrink: 0;
	width: 68px;
	height: 68px;
	border-radius: var(--r-sm);
	overflow: hidden;
	border: 2px solid transparent;
	background: var(--surface-cool);
	cursor: pointer;
	padding: 0;
	transition: border-color .2s var(--ease), box-shadow .2s var(--ease);
}
.spp-thumb img     { width: 100%; height: 100%; object-fit: cover; display: block; }
.spp-thumb:hover   { border-color: var(--ink-25); }
.spp-thumb--active { border-color: var(--color-primary); box-shadow: var(--sh-sm); }

/* ── Summary panel ───────────────────────────────────────────────────────── */
.spp-summary {
	background: var(--surface);
	border-radius: var(--r-xl);
	box-shadow: var(--sh-md);
	padding: clamp(22px, 3.5vw, 36px);
	border: 1px solid var(--border);
}

/* Category badge */
.spp-categories { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.spp-cat-badge {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 5px 13px;
	border-radius: var(--r-pill);
	background: linear-gradient(135deg, var(--color-secondary), var(--color-primary));
	color: #fff;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 1.1px;
	text-transform: uppercase;
	text-decoration: none;
	transition: opacity .2s var(--ease), transform .2s var(--spring);
}
.spp-cat-badge:hover { opacity: .88; transform: translateY(-1px); }

/* Product title */
.spp-title {
	font-size: clamp(1.5rem, 3vw, 2.1rem);
	font-weight: 900;
	line-height: 1.15;
	color: var(--color-accent);
	margin: 0 0 12px;
	letter-spacing: -.5px;
}

/* Rating row */
.spp-rating-row {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 16px;
	flex-wrap: wrap;
}
.spp-rating-row .woocommerce-product-rating {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 13px;
	color: var(--ink-50);
}
.spp-rating-row .star-rating { font-size: 14px; color: var(--color-secondary); }

/* "Top Rated" green pill badge */
.spp-top-rated-badge {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	padding: 4px 10px;
	border-radius: var(--r-pill);
	background: linear-gradient(135deg, #2d8a52, #4caf74);
	color: #fff;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: .5px;
}

/* Price card (warm amber-bordered card) */
.spp-price-card {
	background: linear-gradient(135deg, #fff9ed 0%, #fdf5e2 100%);
	border: 1.5px solid #f0c060;
	border-radius: var(--r-md);
	padding: 16px 20px;
	margin: 0 0 20px;
}
.spp-price-card .price {
	font-size: clamp(1.6rem, 2.5vw, 2.1rem) !important;
	font-weight: 800 !important;
	color: var(--color-primary) !important;
	line-height: 1 !important;
}
.spp-price-card .price del  { color: var(--ink-25) !important; font-size: 1rem !important; font-weight: 400 !important; }

/* Hide WooCommerce's built-in variation price — we show our own in spp-price-card */
.spp-cart-form .woocommerce-variation-price,
.spp-cart-form .woocommerce-variation-full-price { display: none !important; }
.spp-price-card .price ins  { text-decoration: none !important; }

/* ── Size selector ───────────────────────────────────────────────────────── */
.spp-size-selector { margin-bottom: 24px; }

.spp-size-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 12px;
}

button.spp-size-card {
	border-radius: var(--r-md) !important;
	border: 2px solid var(--ink-10) !important;
	font-size: 15px !important;
	font-weight: 700 !important;
	padding: 18px 12px !important;
	background: var(--surface) !important;
	color: var(--color-accent) !important;
}
button.spp-size-card.spp-size-card--active {
	border-color: var(--color-secondary) !important;
	background: linear-gradient(135deg, #fffbeb 0%, #fff7ed 100%) !important;
}
.spp-size-card:hover:not(.spp-size-card--active) {
	border-color: var(--color-secondary);
	opacity: 0.7;
}
.spp-size-card:hover {
	transform: scale(1.03);
	color: white;
	border-color: var(--color-secondary) !important;
}
.spp-size-card:active {
	transform: scale(0.97);
}
.spp-size-card--active {
	border-color: var(--color-secondary);
	background: linear-gradient(135deg, #fffbeb 0%, #fff7ed 100%);
	box-shadow: 0 4px 6px -1px rgba(0,0,0,.08);
}

.spp-size-card__name {
	font-size: 15px;
	font-weight: 700;
	color: var(--color-accent);
	line-height: 1.3;
}
.spp-size-card--active .spp-size-card__name {
	color: var(--color-secondary);
}

.spp-size-card__weight {
	font-size: 12px;
	font-weight: 400;
	color: var(--ink-50);
	line-height: 1.3;
}

.spp-size-card__price {
	font-size: 15px;
	font-weight: 700;
	color: var(--color-accent);
	line-height: 1.3;
	margin-top: 2px;
}
.spp-size-card--active .spp-size-card__price,
.spp-size-card--active .spp-size-card__price .woocommerce-Price-amount {
	color: var(--color-secondary);
}
/* Quantity label */
.spp-qty-label {
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 1px;
	color: var(--ink-50);
	margin: 0 0 8px;
}

/* Cart form wrapper */
.spp-cart-form { margin-bottom: 20px; }

/* Qty row: JS wraps .quantity + subtotal in this div, sits above the button */
.spp-qty-row {
	display: flex;
	align-items: center;
	gap: 16px;
	margin-bottom: 16px;
}
/* Remove the bottom margin the .quantity has in isolation — row gap handles it */
.spp-qty-row .quantity { margin-bottom: 0; }

/* Running subtotal ("Total: $X.XX") */
.spp-subtotal {
	font-size: 14px;
	font-weight: 700;
	color: var(--color-accent);
	flex-shrink: 0;
}

/* ── Variation selectors ──────────────────────────────────────────────────── */
/* table.variations is removed from DOM by JS — these rules are a safety net */
.spp-cart-form table.variations       { display: none !important; }
.spp-cart-form .reset_variations      { display: none !important; }

/* ── Quantity stepper ─────────────────────────────────────────────────────── */
/* The .quantity wrapper itself */
.spp-cart-form .quantity {
	display: flex;
	align-items: center;
	width: fit-content;
	margin-bottom: 16px;
	border: 1.5px solid var(--border);
	border-radius: 16px;
	overflow: hidden;
	background: var(--surface);
}
/* Number input inside the stepper */
.spp-cart-form .quantity input[type="number"] {
	width: 52px;
	height: 48px;
	border: none;
	border-left: 1.5px solid var(--border);
	border-right: 1.5px solid var(--border);
	text-align: center;
	font-size: 16px;
	font-weight: 700;
	color: var(--color-accent);
	background: transparent;
	-moz-appearance: textfield;
}
.spp-cart-form .quantity input[type="number"]::-webkit-inner-spin-button,
.spp-cart-form .quantity input[type="number"]::-webkit-outer-spin-button { -webkit-appearance: none; }

/* +/− buttons injected by JS */
.spp-stepper__btn {
	width: 48px;
	height: 48px;
	border: none !important;
	outline: none;
	background: transparent !important;
	box-shadow: none !important;
	font-size: 22px;
	font-weight: 300;
	color: var(--color-primary) !important;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	padding: 0;
	line-height: 1;
}
.spp-stepper__btn:hover:not(:disabled),
.spp-stepper__btn:active:not(:disabled),
.spp-stepper__btn:focus:not(:disabled) {
	background: transparent !important;
	color: var(--color-primary) !important;
}
.spp-stepper__btn:disabled { opacity: .3; cursor: not-allowed; }

/* WooCommerce form.cart — column layout so button always spans full width */
/* Overrides theme (espresso-medium) .single-product .cart { align-items: flex-end } */
.spp-cart-form form.cart {
	display: flex !important;
	flex-direction: column !important;
	align-items: stretch !important;
	width: 100% !important;
	gap: 0 !important;
}

/* ── Add to Cart button ───────────────────────────────────────────────────── */
/* Target all WooCommerce class combos + button[type="submit"] to beat theme specificity */
.spp-cart-form .single_add_to_cart_button,
.spp-cart-form .single_add_to_cart_button.button,
.spp-cart-form .single_add_to_cart_button.button.alt,
.spp-cart-form button[type="submit"] {
	width: 100% !important;
	height: 52px !important;
	border-radius: 8px!important;
	background: linear-gradient(135deg, var(--color-secondary), var(--color-primary)) !important;
	background-color: var(--color-primary) !important; /* IE fallback */
	color: #fff !important;
	font-size: 14px !important;
	font-weight: 700 !important;
	letter-spacing: .8px !important;
	text-transform: uppercase !important;
	border: none !important;
	cursor: pointer;
	position: relative;
	overflow: hidden;
	transition: transform .2s var(--spring), box-shadow .2s var(--ease);
}
/* Shine sweep on hover */
.spp-cart-form .single_add_to_cart_button::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(105deg, transparent 40%, rgba(255,255,255,.25) 50%, transparent 60%);
	transform: translateX(-100%);
	transition: transform .4s var(--ease);
}
.spp-cart-form .single_add_to_cart_button:hover,
.spp-cart-form .single_add_to_cart_button.button:hover {
	transform: translateY(-2px);
	box-shadow: 0 8px 24px rgba(145,22,24,.30) !important;
}
.spp-cart-form .single_add_to_cart_button:hover::after { transform: translateX(100%); }
.spp-cart-form .single_add_to_cart_button:active       { transform: scale(.97); }

/* ── Trust badges ─────────────────────────────────────────────────────────── */
.spp-trust {
	display: grid;
	grid-template-columns: 1fr;
	gap: 10px;
	margin: 4px 0 24px;
}
.spp-trust-item {
	background: var(--surface);
	border-radius: var(--r-md);
	padding: 12px 10px;
	display: flex;
	align-items: center;
	gap: 10px;
	border: 1px solid var(--border);
	box-shadow: var(--sh-xs);
}
.spp-trust-icon {
	width: 38px;
	height: 38px;
	border-radius: var(--r-sm);
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
}
.spp-trust-icon--blue   { background: linear-gradient(135deg, #5b9bd5, #2672c0); }
.spp-trust-icon--green  { background: linear-gradient(135deg, #5cc488, #2d8a52); }
.spp-trust-icon--purple { background: linear-gradient(135deg, #b57ed1, #7c3fa5); }
.spp-trust-text {
	display: flex;
	flex-direction: column;
	gap: 2px;
}
.spp-trust-text span  { font-size: 11px; font-weight: 700; color: var(--color-accent); line-height: 1.2; }
.spp-trust-text small { font-size: 10px; color: var(--ink-50); line-height: 1.2; }

/* ── Meta table ──────────────────────────────────────────────────────────── */
.spp-meta-table {
	border-top: 2px solid var(--color-secondary);
	padding-top: 14px;
}
.spp-meta-row {
	display: grid;
	grid-template-columns: 90px 1fr;
	align-items: center;
	padding: 7px 0;
	border-bottom: 1px solid var(--border);
}
.spp-meta-row:last-child { border-bottom: none; }
.spp-meta-label {
	font-size: 10px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .8px;
	color: var(--ink-50);
}
.spp-meta-value       { font-size: 13px; font-weight: 500; color: var(--color-accent); }
.spp-in-stock         { color: #2d8a52; font-weight: 700; }
.spp-out-of-stock     { color: var(--color-primary); font-weight: 700; }

/* ── Tabs ────────────────────────────────────────────────────────────────── */
.spp-tabs-wrap { margin-top: 64px; }

.spp-tabs-wrap .woocommerce-tabs ul.tabs {
	display: flex;
	gap: 0;
	list-style: none;
	margin: 0;
	padding: 0;
	border-bottom: 2px solid #f0c060; /* amber separator */
}
.spp-tabs-wrap .woocommerce-tabs ul.tabs li {
	flex: 1;
	margin: 0;
	border: none;
	background: none;
	text-align: center;
}
.spp-tabs-wrap .woocommerce-tabs ul.tabs li a {
	display: block;
	padding: 14px 20px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .8px;
	text-transform: uppercase;
	color: var(--ink-50);
	text-decoration: none;
	border-bottom: 3px solid transparent;
	margin-bottom: -2px;
	transition: color .2s var(--ease), border-color .2s var(--ease);
}
.spp-tabs-wrap .woocommerce-tabs ul.tabs li.active a,
.spp-tabs-wrap .woocommerce-tabs ul.tabs li a:hover {
	color: var(--color-primary);
	border-bottom-color: var(--color-primary);
}
.spp-tabs-wrap .woocommerce-tabs .panel {
	padding: 36px 0;
	font-size: 15px;
	line-height: 1.75;
	color: var(--color-accent);
	animation: riseIn .3s var(--ease) both;
}

/* ── Related products ────────────────────────────────────────────────────── */
.spp-related-wrap {
	margin-top: 72px;
	width: 100% !important;
	float: none !important;
	clear: both !important;
}
.spp-related-wrap .related.products {
	width: 100% !important;
	float: none !important;
	clear: both !important;
}
.spp-related-wrap .related.products > h2 {
	font-size: clamp(1.2rem, 2.5vw, 1.6rem);
	font-weight: 900;
	color: var(--color-accent);
	margin-bottom: 28px;
}
/* body.single-product prefix gives specificity (0,2,N) — beats themes that use
   ul.products.columns-4 (0,2,1). Combined with enqueue priority 99, this wins. */

/* Suppress theme clearfix pseudo-elements — they become ghost grid items in display:grid */
body.single-product .spp-related-wrap ul.products::before,
body.single-product .spp-related-wrap ul.products::after {
	display: none !important;
	content: none !important;
}

body.single-product .spp-related-wrap ul.products {
	display: grid !important;
	grid-template-columns: repeat(4, 1fr) !important;
	gap: 20px !important;
	list-style: none !important;
	padding: 0 !important;
	margin: 0 !important;
}
body.single-product .spp-related-wrap ul.products li.product {
	background: var(--surface);
	border-radius: var(--r-lg);
	border: 1px solid var(--border);
	overflow: hidden;
	float: none !important;
	width: 100% !important;
	min-width: 0;
	max-width: 100%;
	/* flex column: equal card height + pins button to bottom */
	display: flex !important;
	flex-direction: column !important;
	transition: transform .25s var(--spring), box-shadow .25s var(--ease);
	animation: riseIn .45s var(--ease) both;
}
body.single-product .spp-related-wrap ul.products li.product:hover {
	transform: translateY(-5px);
	box-shadow: var(--sh-lg);
}
body.single-product .spp-related-wrap ul.products li.product a img {
	width: 100%;
	aspect-ratio: 1/1;
	object-fit: cover;
	display: block;
	transition: transform .35s var(--ease);
}
body.single-product .spp-related-wrap ul.products li.product:hover a img { transform: scale(1.04); }
body.single-product .spp-related-wrap ul.products li.product .woocommerce-loop-product__title {
	font-size: 13px;
	font-weight: 700;
	color: var(--color-accent);
	text-transform: uppercase;
	letter-spacing: .5px;
	padding: 14px 16px 4px;
	margin: 0;
}
body.single-product .spp-related-wrap ul.products li.product .price {
	display: block;
	font-size: 15px;
	font-weight: 800;
	color: var(--color-primary);
	padding: 0 16px 14px;
}
body.single-product .spp-related-wrap ul.products li.product .button,
body.single-product .spp-related-wrap ul.products li.product .add_to_cart_button {
	display: block !important;
	width: 100% !important;
	padding: 13px !important;
	background: var(--color-primary) !important;
	color: #fff !important;
	text-align: center !important;
	font-size: 13px !important;
	font-weight: 700 !important;
	text-decoration: none !important;
	letter-spacing: .5px !important;
	border: none !important;
	border-radius: 0 !important;
	cursor: pointer;
	transition: opacity .2s var(--ease);
	margin-top: auto !important; /* pushes button to bottom of every card */
	box-sizing: border-box;
}
body.single-product .spp-related-wrap ul.products li.product .button:hover,
body.single-product .spp-related-wrap ul.products li.product .add_to_cart_button:hover { opacity: .88; }

/* Hide the "View Cart" link WooCommerce appends after AJAX add-to-cart */
body.single-product .spp-related-wrap ul.products li.product .added_to_cart {
	display: none !important;
}

/* ── Responsive ──────────────────────────────────────────────────────────── */
@media (max-width: 1024px) {
	body.single-product .spp-related-wrap ul.products { grid-template-columns: repeat(2, 1fr) !important; }
}

@media (max-width: 768px) {
	.spp-layout {
		grid-template-columns: 1fr;
	}
	.spp-gallery {
		position: static;
		padding-bottom: 3em;
	}
	.spp-gallery__main {
		aspect-ratio: 1/1;
	}
	.spp-summary {
		border-radius: var(--r-lg);
	}
}

@media (max-width: 480px) {
	.spp-breadcrumb {
		padding: 10px clamp(12px, 4vw, 24px);
		font-size: 10px;
	}
	body.single-product .spp-related-wrap ul.products {
		grid-template-columns: repeat(2, 1fr) !important;
		gap: 12px !important;
	}
}
